xedoc-cli 0.1.13 → 0.1.14
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 -0
- package/build/client/assets/api.chats._chatId.messages-lfOVkPe8.js +0 -0
- package/build/client/assets/api.chats._chatId.queued._queueId.steer-Dob8lziy.js +0 -0
- package/build/client/assets/api.chats._chatId.server-requests._requestId.respond-CtGOWFXz.js +0 -0
- package/build/client/assets/api.workspaces.directories-_nGjLu4v.js +0 -0
- package/build/client/assets/app-layout-lHxV3BNh.js +1 -0
- package/build/client/assets/app-shell-Bo8pv11U.js +2 -0
- package/build/client/assets/chat-C2zq74m2.js +1 -0
- package/build/client/assets/{connect-CHSWDRRR.js → connect-tAEbMlde.js} +1 -1
- package/build/client/assets/document-title-CHO2Odju.js +1 -0
- package/build/client/assets/{entry.client-CYz-BGHO.js → entry.client-D7Yyv89q.js} +1 -1
- package/build/client/assets/{ghostty-web-Bf0rFR1u.js → ghostty-web-D7W7ut0G.js} +1 -1
- package/build/client/assets/home-wk_AHvg3.js +1 -0
- package/build/client/assets/label-DCuf6YnR.js +1 -0
- package/build/client/assets/manifest-ed43c94b.js +1 -0
- package/build/client/assets/{react-dom-CRV9fQsS.js → react-dom-Cmetac4J.js} +1 -1
- package/build/client/assets/root-BRJo5KR5.css +2 -0
- package/build/client/assets/{root-BlJIezBz.js → root-CEanGH3t.js} +1 -1
- package/build/client/assets/{session-provider-DZhkiIfn.js → session-provider-Bm2PmtNc.js} +1 -1
- package/build/server/index.js +1 -1
- package/package.json +1 -1
- package/build/client/assets/app-layout-CN81j437.js +0 -1
- package/build/client/assets/app-shell-bZjdLund.js +0 -2
- package/build/client/assets/chat-B7RLVuco.js +0 -1
- package/build/client/assets/document-title-nRpNLh53.js +0 -1
- package/build/client/assets/home-DtJ52lyi.js +0 -1
- package/build/client/assets/label-DBag4yRW.js +0 -1
- package/build/client/assets/manifest-3f1dd8c7.js +0 -1
- package/build/client/assets/root-C6ZJNFQd.css +0 -2
- /package/build/client/assets/{__vite-browser-external-2447137e-BK6zEOTY.js → __vite-browser-external-2447137e-Bol1bTns.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId-BixDYyx8.js → api.accounts._accountId-DbJR7wIK.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.authenticate-Cgza4mTm.js → api.accounts._accountId.authenticate-zJk1OPH-.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.authenticate.callback-jKtCcEgm.js → api.accounts._accountId.authenticate.callback-C3q2njBk.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.models-C3bayFCR.js → api.accounts._accountId.local-active-Lj56Skb8.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.personalization-Bd_x2nBr.js → api.accounts._accountId.models-BbNPhoBD.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.rate-limits-BrKCZxhm.js → api.accounts._accountId.personalization-DQAPMa-w.js} +0 -0
- /package/build/client/assets/{api.accounts._accountId.runtime-settings-6XNKTx--.js → api.accounts._accountId.rate-limits-C6Rs4m-7.js} +0 -0
- /package/build/client/assets/{api.accounts.login-callback-port-TLptuOkA.js → api.accounts._accountId.runtime-settings-DTZTQ21Z.js} +0 -0
- /package/build/client/assets/{api.chats-BUn9r-0x.js → api.accounts.import-local-active-D9cdi-v4.js} +0 -0
- /package/build/client/assets/{api.chats._chatId-BTgyeBLZ.js → api.accounts.login-callback-port-DQNbFsFb.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.context-BgV2drn2.js → api.accounts.personalization-DH1AzvNF.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.files-DGXv9z2x.js → api.chats-s886wBuI.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.git._operation-DggKbqHL.js → api.chats._chatId-BdQ0D5mb.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.interrupt-DkImed4M.js → api.chats._chatId.context-h_lwoA2q.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.messages-kk2to-gt.js → api.chats._chatId.files-Cx0zOZBK.js} +0 -0
- /package/build/client/assets/{api.chats._chatId.server-requests._requestId.respond-BCMnFuvx.js → api.chats._chatId.git._operation-DogyaTuw.js} +0 -0
- /package/build/client/assets/{api.workspaces.directories-Bz0K1WZo.js → api.chats._chatId.interrupt-DFwcHue_.js} +0 -0
- /package/build/client/assets/{jsx-runtime-DhlB8LRe.js → jsx-runtime-BD6xVgfN.js} +0 -0
package/build/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useLocation as h,useNavigate as f,useOutletContext as p,useParams as g}from"react-router";import{isbot as v}from"isbot";import{renderToPipeableStream as w}from"react-dom/server";import{Fragment as b,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as N,QueryClientProvider as I,useMutation as k,useQueries as A,useQuery as C,useQueryClient as E}from"@tanstack/react-query";import{ThemeProvider as T,useTheme as M}from"next-themes";import*as S from"react";import{createContext as P,useCallback as R,useContext as D,useEffect as L,useMemo as $,useRef as q,useState as _,useSyncExternalStore as U}from"react";import{Toaster as z,toast as O}from"sonner";import{AlertTriangle as j,Archive as F,ArrowLeft as B,ArrowRight as G,ArrowUp as H,Brain as K,Check as W,CheckCircle2 as Q,CheckIcon as V,ChevronDown as J,ChevronRight as X,ChevronRightIcon as Y,CircleAlert as Z,CircleCheckIcon as ee,Clock as te,Code2 as ne,Copy as ae,Cpu as re,Download as ie,ExternalLink as se,Eye as oe,File as de,FileCode as ce,FileDiff as le,Folder as ue,FolderOpen as me,FolderPlus as he,Gauge as fe,GitBranch as pe,GitCommitHorizontal as ge,Home as ve,Image as we,Info as be,InfoIcon as xe,KeyRound as ye,Laptop as Ne,ListChecks as Ie,Loader2 as ke,Loader2Icon as Ae,LockKeyhole as Ce,Mail as Ee,Menu as Te,MessageSquare as Me,Moon as Se,MoreHorizontal as Pe,MoreVertical as Re,OctagonXIcon as De,PanelLeftIcon as Le,Paperclip as $e,Pencil as qe,PencilLine as _e,PlugZap as Ue,Plus as ze,PowerOff as Oe,RefreshCw as je,RotateCcw as Fe,RotateCw as Be,Save as Ge,Search as He,Settings as Ke,Shield as We,ShieldCheck as Qe,Square as Ve,SquarePen as Je,Sun as Xe,Terminal as Ye,Trash2 as Ze,TriangleAlertIcon as et,Upload as tt,UserRound as nt,X as at,XIcon as rt,Zap as it}from"lucide-react";import{Tooltip as st}from"@base-ui/react/tooltip";import{clsx as ot}from"clsx";import{twMerge as dt}from"tailwind-merge";import{Button as ct}from"@base-ui/react/button";import{cva as lt}from"class-variance-authority";import{Input as ut}from"@base-ui/react/input";import{AlertDialog as mt}from"@base-ui/react/alert-dialog";import{Dialog as ht}from"@base-ui/react/dialog";import{Menu as ft}from"@base-ui/react/menu";import{mergeProps as pt}from"@base-ui/react/merge-props";import{useRender as gt}from"@base-ui/react/use-render";import{ScrollArea as vt}from"@base-ui/react/scroll-area";import{Separator as wt}from"@base-ui/react/separator";import{io as bt}from"socket.io-client";import xt from"react-markdown";import yt from"remark-gfm";import Nt from"highlight.js/lib/core";import It from"highlight.js/lib/languages/bash";import kt from"highlight.js/lib/languages/css";import At from"highlight.js/lib/languages/go";import Ct from"highlight.js/lib/languages/json";import Et from"highlight.js/lib/languages/javascript";import Tt from"highlight.js/lib/languages/markdown";import Mt from"highlight.js/lib/languages/python";import St from"highlight.js/lib/languages/rust";import Pt from"highlight.js/lib/languages/shell";import Rt from"highlight.js/lib/languages/sql";import Dt from"highlight.js/lib/languages/typescript";import Lt from"highlight.js/lib/languages/xml";import $t from"highlight.js/lib/languages/yaml";import{Popover as qt}from"@base-ui/react/popover";import{Switch as _t}from"@base-ui/react/switch";import"dotenv/config";import{createHash as Ut,createHmac as zt,randomBytes as Ot,randomUUID as jt,scryptSync as Ft,timingSafeEqual as Bt}from"node:crypto";import{Prisma as Gt,PrismaClient as Ht}from"@prisma/client";import{appendFileSync as Kt,chmodSync as Wt,closeSync as Qt,constants as Vt,copyFileSync as Jt,existsSync as Xt,lstatSync as Yt,mkdirSync as Zt,openSync as en,readFileSync as tn,readdirSync as nn,readlinkSync as an,realpathSync as rn,renameSync as sn,rmSync as on,statSync as dn,symlinkSync as cn,writeFileSync as ln}from"node:fs";import{homedir as un}from"node:os";import{basename as mn,dirname as hn,extname as fn,isAbsolute as pn,join as gn,relative as vn,resolve as wn,sep as bn}from"node:path";import{execFile as xn,spawn as yn}from"node:child_process";import{createServer as Nn}from"node:net";import{promisify as In}from"node:util";import{access as kn,appendFile as An,copyFile as Cn,mkdir as En,open as Tn,readFile as Mn,readdir as Sn,realpath as Pn,stat as Rn}from"node:fs/promises";var Dn=Object.defineProperty,Ln=(e,t)=>{let n={};for(var a in e)Dn(n,a,{get:e[a],enumerable:!0});return t||Dn(n,Symbol.toStringTag,{value:"Module"}),n},$n=Ln({default:()=>_n,streamTimeout:()=>qn}),qn=5e3;function _n(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&v(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),qn+1e3);const{pipe:h,abort:f}=w(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var Un=({...e})=>{const{theme:t="system"}=M();return x(z,{theme:t,className:"toaster group",icons:{success:x(ee,{className:"size-4"}),info:x(xe,{className:"size-4"}),warning:x(et,{className:"size-4"}),error:x(De,{className:"size-4"}),loading:x(Ae,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function zn(...e){return dt(ot(e))}function On({delay:e=0,...t}){return x(st.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function jn({...e}){return x(st.Root,{"data-slot":"tooltip",...e})}function Fn({...e}){return x(st.Trigger,{"data-slot":"tooltip-trigger",...e})}function Bn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(st.Portal,{children:x(st.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(st.Popup,{"data-slot":"tooltip-content",className:zn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(st.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 Gn="xedoc";function Hn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Gn}`:Gn}(e);L(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Gn}},[t])}var Kn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Wn=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 Qn(e){return aa(e.serverUrl,"/api/auth/session",{token:e.token})}async function Vn(e,t,n){return aa(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Jn(e,t,n={}){return aa(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Xn(e,t){return aa(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function Yn(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return aa(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function Zn(e,t){return aa(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function ea(e,t,n){return aa(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function ta(e,t,n=0){return aa(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function na(e,t,n){return aa(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function aa(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 Wn({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,ra(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Kn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,ia(o)??ra(s)].filter(Boolean).join("\n"),i.status,a);return o}function ra(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function ia(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 sa(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 oa={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function da(){const e=ca();e&&(ma(e,"serverUrl"),ma(e,"token"))}function ca(){return"undefined"==typeof window?null:window.localStorage}function la(e,t){return e.getItem(oa[t])}function ua(e,t,n){e.setItem(oa[t],n)}function ma(e,t){e.removeItem(oa[t])}function ha(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 fa=P(void 0);function pa({children:e}){const[t,n]=_(null),[a,r]=_(!1),i=U(va,wa,ba),s=t,o=!i||!a;L(()=>{if(!i)return;const e=function(){const e=ca();if(!e)return null;const t=la(e,"serverUrl"),n=la(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Qn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{da(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=R(async e=>{const t=ha(window.location.origin),{token:a}=await async function(e,t){return aa(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=ca();t&&(ua(t,"serverUrl",e.serverUrl),ua(t,"token",e.token))}(i),n(i),r(!0)},[]),c=R(async()=>{s&&await Qn(s)},[s]),l=R(()=>{da(),n(null),r(!0)},[]),u=$(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(fa.Provider,{value:u,children:e})}function ga(){const e=D(fa);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function va(){return()=>{}}function wa(){return!0}function ba(){return!1}var xa=Ln({ErrorBoundary:()=>Aa,Layout:()=>Ia,default:()=>ka,links:()=>Na,meta:()=>ya});function ya(){return[{title:Gn}]}function Na(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function Ia({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 ka=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(T,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:x(I,{client:e,children:y(On,{children:[x(pa,{children:x(i,{})}),x(Un,{richColors:!0})]})})})}),Aa=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})]})})}),Ca=lt("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 Ea({className:e,variant:t="default",size:n="default",...a}){return x(ct,{"data-slot":"button",className:zn(Ca({variant:t,size:n,className:e})),...a})}function Ta({className:e,type:t,...n}){return x(ut,{type:t,"data-slot":"input",className:zn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function Ma({className:e,...t}){return x("label",{"data-slot":"label",className:zn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Sa(){const[e,t]=_(""),[n,a]=_(""),[i,s]=_(null),[o,d]=_(null),[c,l]=_(!1),{loading:u,session:m,setup:h}=ga(),p=f(),g=!1===i;if(L(()=>{let e=!0;return d(null),async function(e){return aa(e,"/api/auth/status",{token:null})}(ha(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(ke,{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(ke,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await h(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?ye:Ue,{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(Ma,{htmlFor:"server-password",children:"Server password"}),x(Ta,{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&&Pa(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(Ta,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&Pa(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(Ea,{disabled:!Pa(e,n,g)||c,onClick:()=>{v()},children:[c?x(ke,{className:"animate-spin"}):x(g?ye:Ue,{}),g?"Set Password":"Connect"]})]})]})})}function Pa(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ra=Ln({default:()=>Da}),Da=c(function(){return x(Sa,{})}),La=Ln({loader:()=>$a});function $a(){return m("/favicon.svg",301)}function qa({...e}){return x(mt.Root,{"data-slot":"alert-dialog",...e})}function _a({...e}){return x(mt.Portal,{"data-slot":"alert-dialog-portal",...e})}function Ua({className:e,...t}){return x(mt.Backdrop,{"data-slot":"alert-dialog-overlay",className:zn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function za({className:e,size:t="default",...n}){return y(_a,{children:[x(Ua,{}),x(mt.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:zn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Oa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:zn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function ja({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:zn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Fa({className:e,...t}){return x(mt.Title,{"data-slot":"alert-dialog-title",className:zn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Ba({className:e,...t}){return x(mt.Description,{"data-slot":"alert-dialog-description",className:zn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Ga({className:e,...t}){return x(Ea,{"data-slot":"alert-dialog-action",className:zn(e),...t})}function Ha({className:e,variant:t="outline",size:n="default",...a}){return x(mt.Close,{"data-slot":"alert-dialog-cancel",className:zn(e),render:x(Ea,{variant:t,size:n}),...a})}function Ka({...e}){return x(ht.Root,{"data-slot":"dialog",...e})}function Wa({...e}){return x(ht.Trigger,{"data-slot":"dialog-trigger",...e})}function Qa({...e}){return x(ht.Portal,{"data-slot":"dialog-portal",...e})}function Va({className:e,...t}){return x(ht.Backdrop,{"data-slot":"dialog-overlay",className:zn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ja({className:e,children:t,showCloseButton:n=!0,...a}){return y(Qa,{children:[x(Va,{}),y(ht.Popup,{"data-slot":"dialog-content",className:zn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(ht.Close,{"data-slot":"dialog-close",render:x(Ea,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(rt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:zn("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:zn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(ht.Close,{render:x(Ea,{variant:"outline"}),children:"Close"})]})}function Za({className:e,...t}){return x(ht.Title,{"data-slot":"dialog-title",className:zn("font-heading text-base leading-none font-medium",e),...t})}function er({className:e,...t}){return x(ht.Description,{"data-slot":"dialog-description",className:zn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function tr({...e}){return x(ft.Root,{"data-slot":"dropdown-menu",...e})}function nr({...e}){return x(ft.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function ar({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(ft.Portal,{children:x(ft.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(ft.Popup,{"data-slot":"dropdown-menu-content",className:zn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function rr({className:e,inset:t,variant:n="default",...a}){return x(ft.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:zn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function ir({...e}){return x(ft.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function sr({className:e,inset:t,children:n,...a}){return y(ft.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:zn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function or({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(ar,{"data-slot":"dropdown-menu-sub-content",className:zn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function dr({...e}){return x(ft.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function cr({className:e,children:t,inset:n,...a}){return y(ft.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:zn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(ft.RadioItemIndicator,{children:x(V,{})})}),t]})}function lr({className:e,...t}){return x(ft.Separator,{"data-slot":"dropdown-menu-separator",className:zn("-mx-1 my-1 h-px bg-border",e),...t})}function ur({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:zn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}var mr=lt("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 hr({className:e,variant:t="default",render:n,...a}){return gt({defaultTagName:"span",props:pt({className:zn(mr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function fr({className:e,status:t}){return x(hr,{className:e,variant:pr(t),children:t.toLowerCase()})}function pr(e){switch(e){case"ERROR":case"FAILED":case"INVALIDATED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}function gr(e){const t=Ar(e);return function(e){const t=Ar(e);if(!t)return;return{credits:Ir(t.credits),limitId:Cr(t.limitId)??Cr(t.limit_id),limitName:Cr(t.limitName)??Cr(t.limit_name),planType:Cr(t.planType)??Cr(t.plan_type),primary:Nr(t.primary),rateLimitReachedType:Cr(t.rateLimitReachedType)??Cr(t.rate_limit_reached_type),secondary:Nr(t.secondary)}}(kr(e)?.codex??Object.values(kr(e)??{}).find(Boolean)??t?.rateLimits??t?.rate_limits??((n=t)&&("primary"in n||"secondary"in n||"limitId"in n||"limit_id"in n)?t:void 0));var n}function vr(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[yr(e.primary,"5h"),yr(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function wr(e){return e?br(e.secondary)?"weekly":br(e.primary)?"fiveHour":null:null}function br(e){return xr(e?.usedPercent??0)>=100}function xr(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function yr(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-xr(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 Nr(e){if(null===e)return null;const t=Ar(e);return t?{resetsAt:Er(t.resetsAt)??Er(t.resets_at),usedPercent:Er(t.usedPercent)??Er(t.used_percent)??0,windowDurationMins:Er(t.windowDurationMins)??Er(t.window_duration_mins)??Er(t.window_minutes)}:void 0}function Ir(e){if(null===e)return null;const t=Ar(e);return t?{balance:Cr(t.balance)??null,hasCredits:Tr(t.hasCredits)??Tr(t.has_credits)??!1,unlimited:Tr(t.unlimited)??!1}:void 0}function kr(e){const t=Ar(e);return Ar(t?.rateLimitsByLimitId)??Ar(t?.rate_limits_by_limit_id)}function Ar(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Cr(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Er(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Tr(e){return"boolean"==typeof e?e:void 0}var Mr={args:"",command:"",displayName:"",environment:""};function Sr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:r=0,session:i}){const[s,o]=_(!1),[d,c]=_(null),[l,u]=_(""),[m,h]=_(""),[f,p]=_(null),[g,v]=_(Mr),[w,N]=_(null),I=q(null),A=q(null),T=E(),M=$(()=>["login-callback-port",i.serverUrl],[i.serverUrl]),S=C({queryKey:M,queryFn:()=>async function(e){return aa(e.serverUrl,"/api/accounts/login-callback-port",{token:e.token})}(i),refetchInterval:e=>e.state.data?.inUse?5e3:15e3,retry:1,staleTime:3e3});L(()=>{if(r<=0)return;const e=window.setTimeout(()=>{o(!0)},80);return()=>window.clearTimeout(e)},[r]),L(()=>{c(t=>{if(!t?.accountId)return t;const n=e.find(e=>e.id===t.accountId);if(!n)return t;const a=Or(n.lastAuthMode)??t.mode,r="AUTHENTICATING"===n.status?n.lastAuthUrl??t.authUrl:n.lastAuthUrl,i="AUTHENTICATING"===n.status?n.lastAuthUserCode??t.userCode:n.lastAuthUserCode,s={...t,accountName:n.displayName,authUrl:r??null,mode:a,status:n.status,userCode:i??null};return d=s,(o=t).accountId===d.accountId&&o.accountName===d.accountName&&o.authUrl===d.authUrl&&o.message===d.message&&o.mode===d.mode&&o.status===d.status&&o.userCode===d.userCode?t:s;var o,d})},[e]),L(()=>{d?.accountId&&"CONNECTED"!==d.status&&"CONNECTED"===e.find(e=>e.id===d.accountId)?.status&&(Y(),c(null),u(""),O.success("Account connected."))},[e,d?.accountId,d?.status]);const P=()=>T.invalidateQueries({queryKey:["accounts"]}),R=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.displayName,e.status,e.command,e.args.join(" "),e.defaultModel,e.defaultPermissionMode,e.defaultReasoningEffort,e.defaultServiceTier,e.lastError,e.environment?JSON.stringify(e.environment):null].filter(Boolean).some(e=>String(e).toLocaleLowerCase().includes(n))):e}(e,m),[e,m]),D=$(()=>e.some(e=>"AUTHENTICATING"===e.status&&"device"!==Or(e.lastAuthMode)),[e]),U=k({mutationFn:async e=>{const t=await async function(e,t){return aa(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(i,{});return{account:t,auth:await Jn(i,t.id,{mode:e.authMode}),popup:e.popup}},onError:(e,t)=>{Y(t?.popup??null),c(t=>t?{...t,message:Fr(e),status:"ERROR"}:t),O.error(Fr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),X(t,n,e)}}),z=k({mutationFn:()=>{if(!f)throw new Error("Select an account to edit.");return async function(e,t,n){return aa(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(i,f.id,{..._r(g),displayName:g.displayName.trim()})},onError:e=>O.error(Fr(e)),onSuccess:()=>{p(null),v(Mr),O.success("Account updated."),P()}}),j=k({mutationFn:({accountId:e,mode:t})=>Jn(i,e,{mode:t}),onError:(e,t)=>{Y(t?.popup??null),c(t=>t?{...t,message:Fr(e),status:"ERROR"}:t),O.error(Fr(e))},onSuccess:(t,n)=>{P();const a=e.find(e=>e.id===n.accountId);X(t,n.popup,a)}}),F=k({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return aa(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(i,e,{redirectUrl:t.trim()}),onError:e=>{c(t=>t?{...t,message:Fr(e),status:"ERROR"}:t),O.error(Fr(e))},onSuccess:e=>{u(""),P(),X(e)}}),B=k({mutationFn:e=>async function(e,t){return aa(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Fr(e)),onSuccess:()=>{N(null),O.success("Account deleted."),P(),T.invalidateQueries({queryKey:["chats"]})}}),G=k({mutationFn:()=>async function(e){return aa(e.serverUrl,"/api/accounts/export",{token:e.token})}(i),onError:e=>O.error(Fr(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),O.success(`Exported ${e.accounts.length} ${zr(e.accounts.length)}. Keep the file private; it may include Codex auth tokens.`)}}),H=k({mutationFn:()=>async function(e){return aa(e.serverUrl,"/api/accounts/login-callback-port",{body:{},token:e.token})}(i),onError:e=>O.error(Fr(e)),onSuccess:e=>{T.setQueryData(M,e),e.inUse?O.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):O.success(function(e){const t=e.killedProcessIds??[];return t.length?`Killed ${1===t.length?"process":"processes"} ${t.join(", ")}.`:"Login callback port is available."}(e))}}),K=k({mutationFn:e=>async function(e,t){return aa(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(i,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),O.error(Fr(e))},onSuccess:(e,t)=>{O.success(`Imported ${e.imported} ${zr(e.imported)}.`),P(),T.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){X(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&O.info(`${a} more ${zr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&O.success(`Connected ${a} imported ${zr(a)}.`)}(e.authentications,t.popup)}});async function W(){const e=S.data?.inUse?S.data:(await S.refetch()).data;return!e?.inUse||(O.error(`${e.host}:${e.port} is already in use. Kill the process or use Device Auth.`),!1)}async function V(e){if("browser"===e&&!(await W()))return void o(!1);const t=Br();I.current=t,o(!1),u(""),c({accountId:"",accountName:"Codex account",authUrl:null,message:"Creating account and starting Codex authentication.",mode:e,status:"AUTHENTICATING",userCode:null}),U.mutate({authMode:e,popup:t})}function X(e,t,n){if(c(function(e,t){return{accountId:e.accountId,accountName:t?.displayName??"Codex account",authUrl:e.authUrl??t?.lastAuthUrl??null,message:e.message??null,mode:e.authMode??Or(t?.lastAuthMode)??"browser",status:e.status,userCode:e.userCode??t?.lastAuthUserCode??null}}(e,n)),e.authUrl)return I.current=t??I.current,Gr(e.authUrl,t),void O.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");Y(t),"AUTHENTICATING"!==e.status?O.success(e.message??"Account is connected."):O.info(e.message??"Authentication is still in progress.")}function Y(e=I.current){e&&!e.closed&&e.close(),e&&e!==I.current||(I.current=null)}return y(b,{children:[x("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[x("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),x(Dr,{browserAuthenticationInProgress:D,checking:S.isFetching,killing:H.isPending,status:S.data,onKill:()=>H.mutate(),onRefresh:()=>{S.refetch()}}),y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[y("div",{className:"relative min-w-64 flex-1",children:[x(He,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),x(Ta,{className:"pl-8",placeholder:"Search accounts",value:m,onChange:e=>h(e.target.value)})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:A,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Br();try{const e=JSON.parse(await t.text());K.mutate({accounts:Ur(e),popup:n})}catch(a){n?.close(),O.error(Fr(a))}}}),y(Ea,{disabled:K.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[K.isPending?x(ke,{className:"animate-spin"}):x(tt,{}),"Import"]}),y(Ea,{disabled:G.isPending,variant:"outline",onClick:()=>G.mutate(),children:[G.isPending?x(ke,{className:"animate-spin"}):x(ie,{}),"Export"]}),y(tr,{open:s,onOpenChange:o,children:[y(nr,{render:x(Ea,{}),children:[U.isPending?x(ke,{className:"animate-spin"}):x(ze,{}),"Add",x(J,{"data-icon":"inline-end"})]}),y(ar,{align:"end",className:"w-56",children:[y(rr,{disabled:U.isPending,onClick:()=>V("browser"),children:[x(se,{}),"Normal Auth"]}),y(rr,{disabled:U.isPending,onClick:()=>V("device"),children:[x(ye,{}),"Device Auth"]})]})]})]})]}),x("div",{className:"overflow-x-auto rounded-md border bg-background",children:y("table",{className:"w-full min-w-[720px] text-sm",children:[x("thead",{className:"border-b bg-muted/40 text-xs text-muted-foreground",children:y("tr",{children:[x("th",{className:"px-3 py-2 text-left font-medium",children:"Account"}),x("th",{className:"px-3 py-2 text-left font-medium",children:"Quota"}),x("th",{className:"w-12 px-3 py-2 text-right font-medium",children:x("span",{className:"sr-only",children:"Actions"})})]})}),x("tbody",{children:R.length?R.map(r=>x(Lr,{account:r,authPending:j.isPending&&j.variables?.accountId===r.id,authPendingMode:j.variables?.mode??"browser",quotaLabel:a[r.id],quotaPending:!!t[r.id],quotaSnapshot:n[r.id],onDelete:()=>N(r),onEdit:()=>function(e){var t;p(e),v({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(r),onAuthenticate:t=>async function(t,n="browser"){if("browser"===n&&!(await W()))return;const a=e.find(e=>e.id===t),r=Br();I.current=r,u(""),c(jr(a,n)),j.mutate({accountId:t,mode:n,popup:r})}(r.id,t),onShowAuthentication:()=>function(e){u(""),c(jr(e,Or(e.lastAuthMode)??"browser"))}(r)},r.id)):x("tr",{children:x("td",{className:"px-3 py-8 text-center text-sm text-muted-foreground",colSpan:3,children:e.length?"No accounts match the current search.":"No accounts yet. Add an account or import account records."})})})]})})]})}),x(Rr,{callbackUrl:l,completePending:F.isPending,state:d,onCallbackUrlChange:u,onClose:()=>{c(null),u("")},onComplete:()=>{d?.accountId&&F.mutate({accountId:d.accountId,redirectUrl:l})},onCopyDeviceCode:()=>{!async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),O.success("Device code copied.")}catch{O.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Gr(d?.authUrl)}),x(Ka,{open:!!f,onOpenChange:e=>{e||z.isPending||(p(null),v(Mr))},children:y(Ja,{className:"max-w-2xl",children:[y(Xa,{children:[y(Za,{children:["Edit ",f?.displayName??"account"]}),x(er,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),x(Pr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(Ya,{children:[y(Ea,{variant:"outline",onClick:()=>{p(null),v(Mr)},children:[x(at,{}),"Cancel"]}),y(Ea,{disabled:!g.displayName.trim()||z.isPending,onClick:()=>z.mutate(),children:[z.isPending?x(ke,{className:"animate-spin"}):x(Q,{}),"Save account"]})]})]})}),x(qa,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(za,{children:[y(Oa,{children:[x(Fa,{children:"Delete account?"}),y(Ba,{children:["This removes ",w?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(ja,{children:[x(Ha,{children:"Cancel"}),y(Ga,{disabled:B.isPending,variant:"destructive",onClick:()=>{w&&B.mutate(w.id)},children:[B.isPending?x(ke,{className:"animate-spin"}):x(Ze,{}),"Delete"]})]})]})})]})}function Pr({form:e,onChange:t,prefix:n}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:`${n}-name`,children:"Display name"}),x(Ta,{id:`${n}-name`,placeholder:"Work Codex",value:e.displayName,onChange:n=>t({...e,displayName:n.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:`${n}-command`,children:"Command"}),x(Ta,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:`${n}-args`,children:"Arguments"}),x(Ta,{id:`${n}-args`,placeholder:"app-server",value:e.args,onChange:n=>t({...e,args:n.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:`${n}-environment`,children:"Environment JSON"}),x(ur,{className:"min-h-20 font-mono text-xs",id:`${n}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:e.environment,onChange:n=>t({...e,environment:n.target.value})})]})]})}function Rr({callbackUrl:e,completePending:t,state:n,onCallbackUrlChange:a,onClose:r,onComplete:i,onCopyDeviceCode:s,onReopen:o}){const d="device"===n?.mode,c="CONNECTED"===n?.status;return x(Ka,{open:!!n,onOpenChange:e=>{e||r()},children:y(Ja,{className:"max-w-2xl",children:[y(Xa,{children:[x(Za,{children:d?"Device authentication":"Normal authentication"}),x(er,{children:n?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[x("div",{className:zn("rounded-md border px-3 py-2 text-sm",c?"border-emerald-300 bg-emerald-50 text-emerald-800 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-200":"bg-muted/35 text-muted-foreground"),children:c?"Codex reported this account as connected. xedoc will use the email from the authenticated account as its name.":d?"Open the verification link, enter the device code, then use the response URL field if Codex does not finish automatically.":"Complete the browser login. If the browser lands on a localhost callback page, paste that full URL below."}),n?.authUrl?y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:"account-auth-url",children:d?"Verification link":"Authentication link"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Ta,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:n.authUrl}),y(Ea,{variant:"outline",onClick:o,children:[x(se,{}),"Reopen"]})]})]}):null,d&&n?.userCode?y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Ta,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:n.userCode}),y(Ea,{variant:"outline",onClick:s,children:[x(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:"account-callback-url",children:"Response URL"}),x(ur,{className:"min-h-24 font-mono text-xs",id:"account-callback-url",placeholder:"http://localhost:1455/auth/callback?code=...",value:e,onChange:e=>a(e.target.value)}),x("p",{className:"text-xs text-muted-foreground",children:"Paste the complete localhost callback URL from the Codex browser tab when automatic completion is blocked."})]}),n?.message?x("p",{className:"rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground",children:n.message}):null]}),y(Ya,{children:[y(Ea,{variant:"outline",onClick:r,children:[x(at,{}),"Close"]}),y(Ea,{disabled:!n?.authUrl,variant:"secondary",onClick:o,children:[x(se,{}),"Reopen Link"]}),y(Ea,{disabled:!n?.accountId||!e.trim()||t,onClick:i,children:[t?x(ke,{className:"animate-spin"}):x(Q,{}),"Submit Response URL"]})]})]})})}function Dr({browserAuthenticationInProgress:e,checking:t,killing:n,status:a,onKill:r,onRefresh:i}){if(!a?.inUse)return null;const s=function(e){return e.processes.length?e.processes.map(e=>[e.command??"process",`PID ${e.pid}`,e.user?`user ${e.user}`:null].filter(Boolean).join(" ")).join(", "):null}(a),o=1===a.processes.length?"Kill Process":"Kill Processes";return y("div",{className:"flex flex-col gap-3 rounded-md border border-amber-300 bg-amber-50 px-3 py-3 text-amber-950 dark:border-amber-900/70 dark:bg-amber-950/35 dark:text-amber-100 sm:flex-row sm:items-start sm:justify-between",children:[y("div",{className:"flex min-w-0 gap-2",children:[x(Z,{className:"mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-300"}),y("div",{className:"grid min-w-0 gap-1",children:[x("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),x("p",{className:"text-sm leading-relaxed",children:e?`${a.host}:${a.port} is already listening for a browser login. Starting another Normal Auth can fail while this listener is active.`:`${a.host}:${a.port} is already listening. Normal Auth can fail until this process is stopped.`}),x("p",{className:"break-words text-xs text-amber-800 dark:text-amber-200/80",children:s??"Process details are unavailable."})]})]}),y("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[y(Ea,{disabled:t||n,size:"sm",variant:"outline",onClick:i,children:[t?x(ke,{className:"animate-spin"}):x(Be,{}),"Refresh"]}),y(Ea,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?x(ke,{className:"animate-spin"}):x(Oe,{}),o]})]})]})}function Lr({account:e,authPending:t,authPendingMode:n,quotaLabel:a,quotaPending:r,quotaSnapshot:i,onAuthenticate:s,onDelete:o,onEdit:d,onShowAuthentication:c}){const l=Or(e.lastAuthMode)??"browser",u=t&&"browser"===n,m=t&&"device"===n,h="AUTHENTICATING"===e.status?l:"browser",f="AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate";return y("tr",{className:"border-b last:border-b-0",children:[x("td",{className:"px-3 py-3 align-top",children:y("div",{className:"grid gap-1.5",children:[x("div",{className:"font-medium",children:e.displayName}),y("div",{className:"flex flex-wrap items-center gap-2",children:[x($r,{account:e}),"AUTHENTICATING"===e.status?x("span",{className:"text-xs text-muted-foreground",children:"device"===l?"Device login pending":"Browser login pending"}):null]})]})}),x("td",{className:"px-3 py-3 align-top",children:x(qr,{accountStatus:e.status,label:a,pending:r,snapshot:i})}),x("td",{className:"px-3 py-3 text-right align-top",children:y(tr,{children:[y(nr,{render:x(Ea,{size:"icon-sm",variant:"ghost"}),children:[t?x(ke,{className:"animate-spin"}):x(Re,{}),x("span",{className:"sr-only",children:"Account actions"})]}),y(ar,{align:"end",className:"w-48",children:[y(rr,{disabled:t,onClick:()=>s(h),children:[u?x(ke,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(Be,{}):x(se,{}),"AUTHENTICATING"===e.status?f:"Normal Auth"]}),y(rr,{disabled:t,onClick:()=>s("device"),children:[m?x(ke,{className:"animate-spin"}):x(ye,{}),"Device Auth"]}),"AUTHENTICATING"===e.status||e.lastAuthUrl?y(rr,{onClick:c,children:[x(se,{}),"Authentication Details"]}):null,x(lr,{}),y(rr,{onClick:d,children:[x(qe,{}),"Edit"]}),y(rr,{variant:"destructive",onClick:o,children:[x(Ze,{}),"Delete"]})]})]})})]})}function $r({account:e}){const t=e.lastError?.trim();return t?y(jn,{children:[x(Fn,{render:x("span",{className:"inline-flex cursor-help"}),children:x(fr,{status:e.status})}),x(Bn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):x(fr,{status:e.status})}function qr({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return x("div",{className:"text-xs text-muted-foreground",children:"INVALIDATED"===e?"Re-authenticate account to load quota.":"Connect account to load quota."});const r=t??vr(a),i=wr(a);return y("div",{className:"grid gap-1.5",children:[y("div",{className:zn("inline-flex w-fit items-center gap-1.5 rounded-md border px-2 py-1 text-xs","fiveHour"===i&&"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300","weekly"===i&&"border-red-300 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"),children:[n?x(ke,{className:"size-3 animate-spin"}):null,x("span",{children:r})]}),a?.planType?x("div",{className:"text-xs text-muted-foreground",children:(s=a.planType,s.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" "))}):null]});var s}function _r(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 Ur(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 zr(e){return 1===e?"account":"accounts"}function Or(e){return"browser"===e||"device"===e?e:null}function jr(e,t){return{accountId:e?.id??"",accountName:e?.displayName??"Codex account",authUrl:e?.lastAuthUrl??null,message:"AUTHENTICATING"===e?.status?"Authentication is in progress.":"Starting Codex authentication.",mode:t,status:e?.status??"AUTHENTICATING",userCode:e?.lastAuthUserCode??null}}function Fr(e){return e instanceof Error?e.message:"Request failed."}function Br(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Gr(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Hr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(vt.Root,{"data-slot":"scroll-area",className:zn("relative",e),...r,children:[x(vt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:zn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(Kr,{}),x(vt.Corner,{})]})}function Kr({className:e,orientation:t="vertical",...n}){return x(vt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:zn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(vt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Wr({className:e,orientation:t="horizontal",...n}){return x(wt,{"data-slot":"separator",orientation:t,className:zn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function Qr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,activeTab:r,createFocusKey:i,onOpenChange:s,onTabChange:o,open:d,session:c}){return x(Ka,{open:d,onOpenChange:s,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 accounts, personalization, and project details."})]}),x(Wr,{}),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(Vr,{active:"accounts"===r,icon:x(nt,{}),label:"Accounts",onClick:()=>o("accounts")}),x(Vr,{active:"personalization"===r,icon:x(K,{}),label:"Personalization",onClick:()=>o("personalization")}),x(Vr,{active:"info"===r,icon:x(be,{}),label:"Info",onClick:()=>o("info")})]}),x(Hr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?x(Jr,{accounts:e,session:c}):null,"accounts"===r?x(Sr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?x(Xr,{}):null]})})]})]})})}function Vr({active:e,icon:t,label:n,onClick:a}){return y(Ea,{"aria-pressed":e,className:zn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function Jr({accounts:e,session:t}){const[n,a]=_(()=>e[0]?.id??""),[r,i]=_(""),s=E();L(()=>{e.length?n&&e.some(e=>e.id===n)||a(e[0].id):a("")},[e,n]);const o=$(()=>e.find(e=>e.id===n),[e,n]),d=C({enabled:!!n,queryKey:["account-personalization",n],queryFn:()=>{if(!n)throw new Error("Select an account.");return async function(e,t){return aa(e.serverUrl,`/api/accounts/${t}/personalization`,{token:e.token})}(t,n)}});L(()=>{d.data&&i(d.data.instructions)},[d.data]);const c=k({mutationFn:()=>{if(!n)throw new Error("Select an account.");return async function(e,t,n){return aa(e.serverUrl,`/api/accounts/${t}/personalization`,{body:n,method:"PATCH",token:e.token})}(t,n,{instructions:r})},onError:e=>O.error(Yr(e)),onSuccess:e=>{s.setQueryData(["account-personalization",e.accountId],e),s.invalidateQueries({queryKey:["account-personalization"]}),O.success("Personalization saved.")}}),l=$(()=>(new TextEncoder).encode(r).length,[r]),u=d.data?.maxBytes??32768,m=!!d.data&&r!==d.data.instructions,h=l>u;return e.length?y("div",{className:"grid gap-5",children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[x("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:zn("text-xs text-muted-foreground",h&&"text-destructive"),children:[l.toLocaleString()," / ",u.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[x(Ma,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),x(ur,{className:"min-h-72 font-mono text-xs leading-relaxed",disabled:d.isLoading||c.isPending,id:"personalization-instructions",placeholder:"## Working agreements\n\n- Prefer concise answers.\n- Run relevant tests after code changes.",value:r,onChange:e=>i(e.target.value)})]}),d.error?x("p",{className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:Yr(d.error)}):null,y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[x("div",{className:"min-w-0",children:x("div",{className:"truncate font-mono text-xs text-muted-foreground",children:d.data?.instructionsPath??o?.displayName??"Personalization file"})}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(Ea,{disabled:d.isFetching,variant:"outline",onClick:()=>{d.refetch()},children:[d.isFetching?x(ke,{className:"animate-spin"}):x(je,{}),"Reload"]}),y(Ea,{disabled:!m||c.isPending,variant:"secondary",onClick:()=>i(d.data?.instructions??""),children:[x(je,{}),"Reset"]}),y(Ea,{disabled:!m||h||d.isLoading||c.isPending,onClick:()=>c.mutate(),children:[c.isPending?x(ke,{className:"animate-spin"}):x(Ge,{}),"Save"]})]})]})]}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h3",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account before configuring personalization."})]})}function Xr(){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(be,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(se,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Ee,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function Yr(e){return e instanceof Error?e.message:"Request failed."}function Zr(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 ei="xedoc.web.terminal-height",ti=null;function ni({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=_(null),[o,d]=_(null),[c,l]=_(ri),[u,m]=_(!1),[h,f]=_(null),[p,g]=_([]),v=q(c),w=function(){const[e,t]=_(()=>oi());return L(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=R((e,t)=>Zr(a,e,t),[a]),N=R(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=R(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(di(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&Zr(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(()=>{ii(c)},150);return()=>window.clearTimeout(e)},[c]),L(()=>{const e=()=>{l(e=>{const t=si(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const k=R(async e=>{try{N((await b("terminal:close",{terminalId:e})).terminals)}catch(t){O.error(di(t))}},[N,b]),A=R(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),C=R(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=si(n+t-e.clientY);v.current=a,l(a)},r=()=>{ii(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:zn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:C,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:zn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(Ye,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:zn("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(at,{className:"size-3"})})]},e.id))}),x(Ea,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{I().catch(e=>O.error(di(e)))},children:u?x(ke,{className:"animate-spin"}):x(ze,{})}),t?x(Ea,{"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(at,{})}):null]}),x("div",{className:"relative min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>x(ai,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function ai({active:e,compactLayout:t,onTerminalUpdated:n,resizeSignal:a,socket:r,terminal:i}){const s=q(null),o=q(null),d=q(null),c=q(null),[l,u]=_(!1),m=R(()=>{null===d.current&&(d.current=window.requestAnimationFrame(()=>{d.current=null,o.current?.fit()}))},[]);return L(()=>(m(),()=>{null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null)}),[m,a]),L(()=>{e&&(m(),requestAnimationFrame(()=>{o.current?.fit(),c.current?.focus()}))},[e,m]),L(()=>{const a=s.current;if(!r||!a)return;let l=!1,h=!1;const f=[];u(!1),a.replaceChildren();const p=e=>{r.emit("terminal:input",{data:e,terminalId:i.id})},g=e=>{h&&e.terminalId===i.id&&c.current?.write(e.data)};return r.on("terminal:output",g),async function(){return ti??=import("ghostty-web").then(async e=>(await e.init(),e)),ti}().then(async({FitAddon:a,Terminal:d})=>{if(l||!s.current)return;s.current.replaceChildren();const g=new d({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:t?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),v=new a;o.current=v,c.current=g,g.loadAddon(v),g.open(s.current),v.fit(),v.observeResize(),g.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(p("\r"),!0)),f.push(v),f.push(g.onData(e=>{p(e)})),f.push(g.onResize(e=>{r.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:i.id})})),f.push(g.onTitleChange(e=>{r.emit("terminal:title",{terminalId:i.id,title:e})}));const w=await Zr(r,"terminal:attach",{terminalId:i.id});l||(n(w.terminal),w.replay&&g.write(w.replay),h=!0,requestAnimationFrame(()=>{v.fit(),l||(u(!0),e&&g.focus())}),m())}).catch(e=>{l||O.error(di(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),Zr(r,"terminal:detach",{terminalId:i.id}).catch(()=>{});for(const e of f)e.dispose();c.current?.dispose(),a.replaceChildren(),c.current=null,o.current=null,u(!1)}},[e,t,n,m,r,i.id]),y("div",{className:zn("absolute inset-0 h-full min-h-0 overflow-hidden bg-zinc-950 p-1 outline-none sm:p-2",e?"z-10 opacity-100":"z-0 opacity-0 pointer-events-none"),"aria-hidden":!e,style:{caretColor:"transparent"},children:[!l&&e?x("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,x("div",{className:zn("h-full min-h-0 transition-opacity [&_canvas]:block",l?"opacity-100":"opacity-0"),ref:s})]})}function ri(){return"undefined"==typeof window?360:si(Number.parseInt(window.localStorage.getItem(ei)??"",10)||(oi()?300:360))}function ii(e){"undefined"!=typeof window&&window.localStorage.setItem(ei,String(e))}function si(e){const t="undefined"!=typeof window&&oi()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(oi()?96:140),760));return Math.max(t,Math.min(n,e))}function oi(){return"undefined"!=typeof window&&window.innerWidth<640}function di(e){return e instanceof Error?e.message:"Terminal request failed."}function ci(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(tr,{children:[y(nr,{render:x(Ea,{size:"icon",variant:"ghost"}),children:[x(Xe,{className:"size-4 dark:hidden"}),x(Se,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(ar,{align:"end",className:"w-40",children:[y(rr,{onClick:()=>e("light"),children:[x(Xe,{}),"Light","light"===n?x(W,{className:"ml-auto"}):null]}),y(rr,{onClick:()=>e("dark"),children:[x(Se,{}),"Dark","dark"===n?x(W,{className:"ml-auto"}):null]}),y(rr,{onClick:()=>e("system"),children:[x(Ne,{}),"System","system"===n?x(W,{className:"ml-auto"}):null]})]})]})}function li(e,t){return t&&Nt.getLanguage(t)?Nt.highlight(e,{language:t}).value:Nt.highlightAuto(e).value}Nt.registerLanguage("bash",It),Nt.registerLanguage("css",kt),Nt.registerLanguage("go",At),Nt.registerLanguage("html",Lt),Nt.registerLanguage("javascript",Et),Nt.registerLanguage("json",Ct),Nt.registerLanguage("markdown",Tt),Nt.registerLanguage("python",Mt),Nt.registerLanguage("rust",St),Nt.registerLanguage("sh",Pt),Nt.registerLanguage("sql",Rt),Nt.registerLanguage("tsx",Dt),Nt.registerLanguage("typescript",Dt),Nt.registerLanguage("xml",Lt),Nt.registerLanguage("yaml",$t);var ui=P(null);function mi({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=$(()=>new Set(t??[]),[t]),h=$(()=>function(e){const t=ps([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Ps(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=$(()=>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=xs(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&bs(a.messages.at(-1),n)?a.messages.push(n):t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Li(n))return n.id}return null}(h),[h]),[g,v]=_(null);return y(ui.Provider,{value:v,children:[f.map(t=>x(fi,{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(Ii,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function hi({chatId:e,messages:t,session:n}){const a=$(()=>Is(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(wi,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function fi({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(vi,{message:t.message}):x(pi,{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 pi({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=$(()=>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(Cs(r.message)){const e=n.at(-1);if(!e||Es(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&&Ts(e)!==Ts(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)As(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:ys(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Ns(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(fr,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(gi,{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 gi({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(qi,{messages:a.messages}):"previousActions"===a.type?x(_i,{messages:a.messages}):"fileChanges"===a.type?x(zi,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(wi,{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 vi({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),n=$(()=>yi(e.content),[e.content]),a=n.map(e=>"text"===e.type?e.text:"").join("").trim();const r=$(()=>function(e,t){const n=[],a=new Set,r=e=>{a.has(e.src)||(a.add(e.src),n.push(e))};return e.forEach((e,t)=>{"image"===e.type&&r({id:`inline-image:${t}:${e.src}`,name:"Attached image",src:e.src})}),t.forEach(e=>{"image"===e.kind&&r({id:e.id,name:e.name,src:e.url})}),n}(n,t),[t,n]),i=t.filter(e=>"file"===e.kind),[s,o]=_(null),d=a||i.length;return y("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:[y("div",{className:"flex min-w-0 max-w-[84%] flex-col items-end gap-2 overflow-hidden",children:[r.length?x("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:r.map(e=>x("button",{className:"size-16 overflow-hidden rounded-lg border bg-muted outline-none ring-offset-background transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",title:e.name,type:"button",onClick:()=>o(e),children:x("img",{alt:e.name,className:"size-full object-cover",loading:"lazy",src:e.src})},e.id))}):null,d?y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card px-3 py-2 text-sm leading-6 text-card-foreground",children:[y("div",{className:"mb-1 flex items-center gap-2 text-muted-foreground",children:[x(nt,{className:"size-3.5 opacity-80"}),x("span",{className:"text-xs font-medium",children:"You"})]}),a?x("div",{className:"whitespace-pre-wrap break-words",children:a}):null,i.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:i.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border bg-muted/35 px-2 py-1 text-xs text-muted-foreground",children:[x(ce,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null]}):null]}),x(Ka,{open:!!s,onOpenChange:e=>{e||o(null)},children:y(Ja,{className:"flex h-[min(90vh,900px)] w-[min(92vw,1000px)] max-w-none flex-col overflow-hidden p-0",children:[y(Xa,{className:"sr-only",children:[x(Za,{children:s?.name??"Image preview"}),x(er,{children:"Full size image preview."})]}),s?x("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:x("img",{alt:s.name,className:"max-h-full max-w-full object-contain",src:s.src})}):null]})})]})}function wi({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(Mi,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Ei,{}):null;case"THINKING":return x(Ti,{message:i});case"PLAN":return x(Si,{metadata:Ps(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x($i,{metadata:Ps(i.metadata)});case"FILE_CHANGE":return x(zi,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(ns,{chatId:e,compact:t,message:i,metadata:Ps(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(as,{chatId:e,compact:t,message:i,metadata:Ps(i.metadata),session:m});case"ERROR":return x(us,{metadata:Ps(i.metadata),text:i.content});default:return x(ms,{text:i.content})}}function bi({text:e}){const t=D(ui);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(xt,{remarkPlugins:[yt],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:zn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:zn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:zn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:zn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:zn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:zn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:zn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:zn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:zn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:zn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:zn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:zn("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:zn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:zn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:zn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:zn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:zn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:zn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:zn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:zn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:xi(e)})})}function xi(e){return yi(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function yi(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=Ni(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"});const s=/^\s*<\/image>/i.exec(e.slice(n.lastIndex));i&&s&&(n.lastIndex+=s[0].length),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function Ni(e){let t=e.trim();for(;/^<image>/i.test(t);)t=t.replace(/^<image>\s*/i,"").trim();for(;/<\/image>$/i.test(t);)t=t.replace(/\s*<\/image>$/i,"").trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function Ii({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)),aa(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(ce,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(er,{className:"truncate",children:Ai(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(ke,{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(ki,{file:r.data}):null})]})})}function ki({file:e}){const t=q({}),n=$(()=>(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(Hr,{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:zn("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:li(n||" ",e.language)}})]},r)})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function Ai(e){return e?[Ci(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Ci(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Ei(){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 Ti({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Mi({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Li(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(bi,{text:o}):null,s?x(Pi,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Si({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Li(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(Ie,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(bi,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(ms,{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(hr,{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(Ri,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Pi({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(Ie,{className:"size-4"}),"Proposed plan"]}),x(bi,{text:i}),s?x(Ri,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Ri({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=_(""),[d,c]=_(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(Ea,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(ke,{className:"animate-spin"}):x(G,{}),"Implement plan"]}),y(Ka,{open:d,onOpenChange:c,children:[y(Wa,{render:x(Ea,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(_e,{}),"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(ur,{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(Ea,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(Ea,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(ke,{className:"animate-spin"}):x(_e,{}),"Send changes"]})]})]})]})]})]})}var Di=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Li(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Di.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Di,"").trim()}:"PLAN"!==e.kind||"result"!==Ps(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function $i({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ye,{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(hr,{variant:ts(e),children:es(e)}),"number"==typeof e?.exitCode?x(hr,{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 qi({messages:e}){const[t,n]=_(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,fs),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Ns(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ye,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(hr,{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(Ui,{message:e},e.id)),i>0?y(Ea,{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 _i({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ye,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(hr,{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(Ui,{message:e},e.id))})]})}function Ui({message:e}){const t=Ps(e.metadata),n=Ps(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Ps(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Ps(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:[Ms(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(hr,{variant:"secondary",children:e.status.toLowerCase()})]})}function zi({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=$(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=Ps(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of Oi(e)){const e=n.get(t.path);e?n.set(t.path,{action:Yi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:Zi(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:Zi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(ui),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(le,{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?`${Bi(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(Ki,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(Ea,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:Hi(i)}),children:[r?x(ke,{className:"animate-spin"}):x(Fe,{}),"Undo"]}),y(Ea,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:Gi(i)}),children:[r?x(ke,{className:"animate-spin"}):x(oe,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(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(Ki,{additions:e.additions,deletions:e.deletions}),y(Wa,{render:x(Ea,{size:"icon-sm",variant:"ghost"}),children:[x(J,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(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(hr,{variant:"secondary",children:e},e))}):null]})}function Oi(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=Fi(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=Fi(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:ji(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=Wi(n.path,n.filePath,n.file,n.name);return a?(e.push({action:Vi(Wi(n.action,n.kind,n.type)??"Edited"),additions:Qi(n.additions),deletions:Qi(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>Ji(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=>Ji(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 ji(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 Fi(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function Bi(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function Gi(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 Hi(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 Ki({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 Wi(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function Qi(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 Vi(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function Ji(e,t){return Xi(e)===Xi(t)}function Xi(e){return Fi(e).replace(/\\/g,"/").replace(/^\.\//,"")}function Yi(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 Zi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function es(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function ts(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function ns({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=hs(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(rs,{icon:x(Ce,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:is(a)}):y("div",{className:zn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:zn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Ce,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:zn("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:zn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(hr,{variant:"secondary",children:[x(W,{className:"size-3"}),"resolved"]}):y(b,{children:[y(Ea,{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(ke,{className:"animate-spin"}):x(W,{}),"Accept"]}),x(Ea,{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(Ea,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function as({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=hs(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&&ls(h,i[h.id]).length>0,p=l.every(e=>ls(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(rs,{icon:x(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:ss(a)});return y("div",{className:zn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:zn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[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(Ea,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(B,{})}),y(hr,{variant:"secondary",children:[m+1," / ",l.length]}),x(Ea,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(G,{})}),u?x(hr,{variant:"secondary",children:"resolved"}):null]})]}),h?x(ds,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??os,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:zn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ea,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:cs(l,i)}):O.error("Answer every question before submitting.")},children:[c.isPending?x(ke,{className:"animate-spin"}):x(W,{}),"Submit"]})}):null]})}function rs({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(hr,{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 is(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 ss(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 os={other:"",values:[]};function ds({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:zn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:zn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(Ea,{"aria-pressed":r,className:zn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:zn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:zn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(Ta,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(ur,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(ur,{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 cs(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:ls(e,t[e.id])}]))}}function ls(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function us({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(j,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function ms({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function hs(e,t,n){const a=E();return k({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return aa(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>sa(e,t))}})}var fs=5;function ps(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=gs(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=vs(n[t],r):(a.set(e,n.length),n.push(r))}return n}function gs(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 vs(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:ws(t.status)>ws(e.status)?{...e,status:t.status}:e:ws(t.status)>ws(e.status)||t.sequence>=e.sequence?t:e}function ws(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function bs(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function xs(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function ys(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 Ns(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 Is(e){return{pendingRequest:ps(e).sort((e,t)=>t.sequence-e.sequence).find(ks)}}function ks(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Ps(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function As(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!ks(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 Cs(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Es(e,t){return Ts(e)===Ts(t)}function Ts(e){return e.runId??e.turnId??e.chatId}function Ms(e){return"COMMAND_EXECUTION"===e.kind?x(Ye,{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(Ss,{}):x(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Ss(){return x(Ie,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Ps(e){return e&&"object"==typeof e?e:void 0}function Rs({...e}){return x(qt.Root,{"data-slot":"popover",...e})}function Ds({...e}){return x(qt.Trigger,{"data-slot":"popover-trigger",...e})}function Ls({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(qt.Portal,{children:x(qt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(qt.Popup,{"data-slot":"popover-content",className:zn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function $s({className:e,...t}){return x("div",{"data-slot":"popover-header",className:zn("flex flex-col gap-0.5 text-sm",e),...t})}function qs({className:e,...t}){return x(qt.Title,{"data-slot":"popover-title",className:zn("font-medium",e),...t})}function _s({className:e,...t}){return x(qt.Description,{"data-slot":"popover-description",className:zn("text-muted-foreground",e),...t})}function Us({...e}){return x(ht.Root,{"data-slot":"sheet",...e})}function zs({...e}){return x(ht.Portal,{"data-slot":"sheet-portal",...e})}function Os({className:e,...t}){return x(ht.Backdrop,{"data-slot":"sheet-overlay",className:zn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function js({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(zs,{children:[x(Os,{}),y(ht.Popup,{"data-slot":"sheet-content","data-side":n,className:zn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(ht.Close,{"data-slot":"sheet-close",render:x(Ea,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(rt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Fs({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:zn("flex flex-col gap-0.5 p-4",e),...t})}function Bs({className:e,...t}){return x(ht.Title,{"data-slot":"sheet-title",className:zn("font-heading text-base font-medium text-foreground",e),...t})}function Gs({className:e,...t}){return x(ht.Description,{"data-slot":"sheet-description",className:zn("text-sm text-muted-foreground",e),...t})}var Hs=S.createContext(null);function Ks(){const e=S.useContext(Hs);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function Ws({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=S.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return S.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=S.useState(!1),[l,u]=S.useState(e),m=t??l,h=S.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=S.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);S.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=S.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(Hs.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:zn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function Qs({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}=Ks();return"none"===n?x("div",{"data-slot":"sidebar",className:zn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(Us,{open:c,onOpenChange:l,...s,children:y(js,{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(Fs,{className:"sr-only",children:[x(Bs,{children:"Sidebar"}),x(Gs,{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:zn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:zn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children: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 Vs({className:e,onClick:t,...n}){const{toggleSidebar:a}=Ks();return y(Ea,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:zn(e),onClick:e=>{t?.(e),a()},...n,children:[x(Le,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function Js({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:zn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function Xs({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:zn("flex flex-col gap-2 p-2",e),...t})}function Ys({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:zn("flex flex-col gap-2 p-2",e),...t})}function Zs({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:zn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function eo({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:zn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function to({className:e,render:t,...n}){return gt({defaultTagName:"div",props:pt({className:zn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function no({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:zn("w-full text-sm",e),...t})}function ao({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:zn("flex w-full min-w-0 flex-col gap-0",e),...t})}function ro({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:zn("group/menu-item relative",e),...t})}var io=lt("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 so({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=Ks(),c=gt({defaultTagName:"button",props:pt({className:zn(io({variant:n,size:a}),i)},s),render:r?x(Fn,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(jn,{children:[c,x(Bn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function oo({className:e,size:t="default",...n}){return x(_t.Root,{"data-slot":"switch","data-size":t,className:zn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(_t.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function co({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=E(),[o,d]=_(new Set),[c,l]=_(e??""),[u,m]=_("directory"),[h,f]=_(e??""),[p,g]=_(""),[v,w]=_(!0),[b,N]=_(!1),[I,A]=_(""),[T,M]=_(""),S=C({enabled:r,queryKey:po(i,void 0),queryFn:()=>Yn(i,void 0)}),P=S.data,R=P?.root??P?.path??"",D=c||P?.path||"",$=k({mutationFn:()=>{const e=I||D||P?.path,t=T.trim();if(!e)throw new Error("Select a folder first.");if(!t)throw new Error("Enter a folder name.");return async function(e,t){return aa(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),M(""),O.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),U(e.path)}});function q(e,t="directory"){l(e),m(t),f(e),R&&d(t=>{const n=new Set(t);for(const a of go(e,R))n.add(a);return n})}function U(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&q(e)}return L(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),A(""),M(""))},[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 go(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(fo,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:x(ve,{})}),x(fo,{disabled:!D||$.isPending,label:"New folder",onClick:function(){const e=D||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),A(e),M(""),d(t=>{const n=new Set(t);if(R)for(const a of go(e,R))n.add(a);return n.add(e),n}))},children:x(he,{})}),x(fo,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(je,{className:zn(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(He,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Ta,{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(Ea,{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(Ta,{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(fo,{label:"Open path",onClick:z,children:x(X,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(He,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Ta,{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(Hr,{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(lo,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:T,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:D,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),A(""),M("")},onCreateFolderNameChange:M,onCreateFolderSubmit:()=>$.mutate(),onOpen:U,onSelect:q,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(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":D||R||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(Ea,{disabled:!D||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!D||"file"===t&&"file"!==u||(a(D),n(!1))},children:[x(W,{}),"file"===t?"Attach":"OK"]}),x(Ea,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function lo({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=bo(f)===bo(r.path),N=v&&bo(t)===bo(r.path),I=C({enabled:w&&!a,queryKey:po(g,r.path),queryFn:()=>Yn(g,r.path)}),k=a??I.data,A=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),T=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(mo,{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(uo,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(lo,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),T.map(e=>x(ho,{entry:e,level:o+1,selected:"file"===p&&bo(f)===bo(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 uo({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(he,{className:"size-4 shrink-0 text-muted-foreground"}),x(Ta,{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(fo,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(W,{})}),x(fo,{disabled:i,label:"Cancel new folder",onClick:n,children:x(at,{})})]})}function mo({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:zn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(X,{className:zn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?me:ue,{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 ho({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:zn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(de,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function fo({children:e,disabled:t,label:n,onClick:a}){return y(Ea,{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 po(e,t){return["workspace-directory",e.serverUrl,t]}function go(e,t){const n=wo(t),a=wo(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=vo(s,o),r.push(s);return r}function vo(e,t){const n=e.includes("\\")?"\\":"/";return`${wo(e)}${n}${t}`}function wo(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function bo(e){return wo(e).toLocaleLowerCase()}function xo(){const{loading:e,session:t}=ga(),{chatId:n}=g(),a=function(e){const[t,n]=_(!1),[a,r]=_(0),[i,s]=_(null);return L(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=bt(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}}(t),[s,o]=_(""),[d,c]=_(null),[l,u]=_(0),[m,h]=_(!1),[p,v]=_("accounts"),[w,N]=_(!1),[I,k]=_(null),T=f(),M=E(),S=R(e=>{u(e?.focusCreate?e=>e+1:0),v("accounts"),h(!0)},[]),P=R(e=>{"accounts"===e&&u(0),v(e)},[]),D=R((e="accounts")=>{v(e),h(!0)},[]),q=C({enabled:!!t,queryKey:["accounts"],queryFn:()=>async function(e){return aa(e.serverUrl,"/api/accounts",{token:e.token})}(t),refetchInterval:e=>!!e.state.data?.some(e=>"AUTHENTICATING"===e.status)&&1500}),U=C({enabled:!!t,queryKey:["chats"],queryFn:()=>async function(e){return aa(e.serverUrl,"/api/chats",{token:e.token})}(t)}),z=$(()=>q.data??[],[q.data]),O=$(()=>U.data??[],[U.data]),j=$(()=>n?O.find(e=>e.id===n)??null:null,[n,O]),F=j?.title??null;L(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=O.find(e=>e.id===n);if(e)return e}if(d){const e=O.find(e=>e.id===d);if(e)return e}return O[0]??null},[n,O,d]),G=$(()=>z.filter(e=>"CONNECTED"===e.status),[z]);Hn(F);const H=A({queries:G.map(e=>({enabled:!!t,queryKey:["rate-limits",e.id],queryFn:()=>async function(e,t){return aa(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}(t,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),K=$(()=>Object.fromEntries(G.map((e,t)=>{const n=gr(H[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[H,G]),W=$(()=>Object.fromEntries(G.map(e=>{const t=K[e.id];return t?[e.id,vr(t)]:null}).filter(e=>!!e)),[K,G]),Q=$(()=>Object.fromEntries(G.map((e,t)=>[e.id,H[t]?.isFetching??!1])),[H,G]),V=H.some(e=>Cd(e.error));if(L(()=>{V&&M.invalidateQueries({queryKey:["accounts"]})},[V,M]),L(()=>{s.trim()||N(!1)},[s]),e)return x(Do,{});if(!t)return x(r,{replace:!0,to:"/connect"});const J={accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:O,connectedAccounts:G,lastOpenedChat:B,openAccountManagement:S,openWorkspacePicker:k,session:t,setActiveProjectPath:o,setTerminalOpen:N,terminalCount:a.count,terminalOpen:w,terminalSocket:a.socket,terminalSocketConnected:a.connected};return y(b,{children:[y(Ws,{className:"h-svh min-h-0 overflow-hidden",children:[y(Qs,{collapsible:"offcanvas",variant:"inset",children:[x(Xs,{children:y(Ea,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Je,{}),x("span",{children:"New chat"})]})}),x(Zs,{children:y(eo,{className:"p-0",children:[x(to,{children:"Chats"}),x(no,{children:x(ko,{chats:O,session:t})})]})}),x(Ys,{children:y(Ea,{className:"justify-start",variant:"ghost",onClick:()=>D(),children:[x(Ke,{}),x("span",{children:"Settings"})]})})]}),y(Js,{className:"min-h-0 min-w-0 overflow-hidden",children:[y("header",{className:"flex h-12 shrink-0 items-center justify-between gap-2 border-b px-2",children:[y("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[x(Vs,{variant:"ghost",children:x(Te,{})}),x("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold tracking-normal",children:F??(n?"Chat":"New chat")})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[j?y(b,{children:[x(yo,{active:w,className:zn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),x(qo,{chatId:j.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===j.status,session:t})]}):null,x(No,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(ci,{})]})]}),q.error||U.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:q.error?.message??U.error?.message??"Unable to load workspace data."}):null,x("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(i,{context:J})})]})]}),x(Qr,{accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?x(co,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function yo({active:e,className:t,compact:n=!1,count:a,disabled:r,onToggle:i}){const s=a??0;return y(Ea,{"aria-label":"Terminal","aria-pressed":e,className:zn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:r,size:n?"icon":"sm",title:r?"Choose a working directory":"Terminal",type:"button",variant:"ghost",onClick:i,children:[x(Ye,{className:"size-3.5"}),x("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?x("span",{className:zn("inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-sidebar-accent px-1 text-[0.65rem] leading-none text-sidebar-accent-foreground",n?"absolute -right-1 -top-1":"ml-0.5"),children:s}):null]})}function No({onAddAccount:e,onNewChat:t}){return y(tr,{children:[y(nr,{render:x(Ea,{size:"icon",variant:"ghost"}),children:[x(ze,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(ar,{align:"end",className:"w-44",children:[y(rr,{onClick:t,children:[x(Je,{}),"New chat"]}),y(rr,{onClick:e,children:[x(nt,{}),"Add account"]})]})]})}var Io=4;function ko({chats:e,session:t}){const n=f(),{chatId:a}=g(),r=E(),[i,s]=_(null),[o,d]=_(""),[c,l]=_(null),[u,m]=_(()=>new Set),[h,p]=_(()=>new Set),v=$(()=>e.map(e=>{return{chat:e,dateLabel:md(e.lastActivityAt),folderKey:(t=e.workingDirectory,fd(t)),folderName:hd(e.workingDirectory),folderPath:fd(e.workingDirectory)};var t}),[e]),w=$(()=>{const e=new Map;for(const t of v){const n=new Date(t.chat.lastActivityAt).getTime(),a=e.get(t.folderKey);a?(a.items.push(t),a.latestActivityAt=Math.max(a.latestActivityAt,n)):e.set(t.folderKey,{items:[t],key:t.folderKey,latestActivityAt:n,name:t.folderName,path:t.folderPath})}return Array.from(e.values()).map(e=>({...e,items:e.items.sort((e,t)=>new Date(t.chat.lastActivityAt).getTime()-new Date(e.chat.lastActivityAt).getTime()||e.chat.title.localeCompare(t.chat.title,void 0,{sensitivity:"base"}))})).sort((e,t)=>t.latestActivityAt-e.latestActivityAt||e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=k({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return ea(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>O.error(Ed(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),I=k({mutationFn:e=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>O.error(Ed(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(b,{children:[x(ao,{className:"gap-1",children:w.length?w.map(e=>{const t=u.has(e.key),r=h.has(e.key),i=r?e.items:e.items.slice(0,Io),o=e.items.length-i.length,c=!!(f=e.path).trim()&&"No folder"!==f;var f;return y(ro,{children:[y("div",{className:"flex min-w-0 items-center gap-1 pr-1",children:[y("button",{className:"flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left text-xs font-medium text-sidebar-foreground/75 outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",title:e.path,type:"button",onClick:()=>m(t=>{const n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),children:[x(ue,{className:"size-3.5 shrink-0 text-cyan-500"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),x(J,{className:zn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?x(Ea,{"aria-label":`New chat in ${e.name}`,className:"size-7 shrink-0",size:"icon-sm",title:`New chat in ${e.path}`,type:"button",variant:"ghost",onClick:()=>n("/",{state:{workingDirectory:e.path}}),children:x(ze,{className:"size-3.5"})}):null]}),t?null:y(ao,{className:"gap-0.5 pl-4",children:[i.map(({chat:e,dateLabel:t,folderName:r})=>y(ro,{className:"flex min-w-0 items-center",children:[y(so,{className:"h-7 min-w-0 flex-1 px-2 pr-2! text-xs",isActive:e.id===a,size:"sm",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Me,{className:"size-3.5 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(tr,{children:[y(nr,{render:x(Ea,{"aria-label":"Chat actions",className:"pointer-events-none h-7 w-0 shrink-0 overflow-hidden opacity-0 transition-[width,opacity] group-hover/menu-item:pointer-events-auto group-hover/menu-item:ml-1 group-hover/menu-item:w-7 group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:ml-1 group-focus-within/menu-item:w-7 group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:ml-1 aria-expanded:w-7 aria-expanded:opacity-100",size:"icon-sm",variant:"ghost"}),children:[x(Pe,{className:"size-4"}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(ar,{align:"end",className:"w-40",children:[y(rr,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(rr,{onClick:()=>l(e),children:[x(F,{}),"Archive"]})]})]})]},e.id)),o>0?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>new Set(t).add(e.key)),children:[x(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>Io?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>{const n=new Set(t);return n.delete(e.key),n}),children:[x(J,{className:"size-3.5 shrink-0 rotate-180"}),x("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):x("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),x(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(Ta,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),x(Ya,{children:x(Ea,{disabled:N.isPending,onClick:()=>N.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(Ea,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ea,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[x(F,{}),"Archive"]})]})]})})]})}function Ao(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 Co(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await To(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Eo(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 To(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 Mo(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:pd(t),path:t}}function So({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(b,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(de,{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(Ea,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(at,{className:"size-3"})})]},e.id))}):null]})}function Po(){const{accountRateLimitFetching:e,accountRateLimitSnapshots:t,accountUsageSummaries:n,connectedAccounts:a,lastOpenedChat:r,openAccountManagement:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=id(),p=h(),g=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"";const t=e.workingDirectory;return"string"==typeof t?t.trim():""}(p.state),v=g?`${p.key}:${g}`:"",[w,b]=_(""),[N,I]=_([]),[A,T]=_("default"),[M,S]=_(null),[P,D]=_(r?.autoRotateAccount??!1),[U,z]=_(r?.accountId??null),[j,F]=_("default"),[B,G]=_(null),[H,K]=_(null),[W,Q]=_(null),[V,J]=_(g||r?.workingDirectory?.trim()||""),X=E(),Y=f(),Z=q(null),ee=q(r?.id??null),te=q(v||null);L(()=>(d(V.trim()),()=>d("")),[d,V]),L(()=>{g&&te.current!==v&&(te.current=v,J(g))},[g,v]),L(()=>{if(!r||ee.current===r.id)return;ee.current=r.id;const e=r.workingDirectory?.trim()??"";e&&J(t=>t.trim()?t:e);const t=r.accountId;t&&z(e=>e??t)},[r]);const ne=$(()=>od(a,t),[t,a]),ae=a.find(e=>e.id===U),re=(P&&ae&&dd(t[ae.id])<0?void 0:ae)??ne??a[0];L(()=>{if(!re?.id)return K(null),S(null),F("default"),G(null),void Q(null);K(re.id),S(re.defaultModel??null),F(re.defaultPermissionMode??"default"),G(re.defaultReasoningEffort??null),Q(re.defaultServiceTier??null)},[re?.defaultModel,re?.defaultPermissionMode,re?.defaultReasoningEffort,re?.defaultServiceTier,re?.id]);const ie=C({enabled:!!re?.id,queryKey:["models",re?.id],queryFn:()=>Xn(o,re.id),staleTime:3e5});L(()=>{Cd(ie.error)&&X.invalidateQueries({queryKey:["accounts"]})},[ie.error,X]);const se=ie.data?.data??[],oe=H===re?.id,de=oe?M:null,ce=oe?B:null,le=oe?W:null,ue=sd(se,de),he=ue?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],fe=ce??ue?.defaultReasoningEffort??null,pe=ue?.additionalSpeedTiers??[],ge=re?t[re.id]:void 0,ve=!!re&&!!e[re.id],we=k({mutationFn:({accountId:e,settings:t})=>Vn(o,e,t),onError:e=>O.error(Ed(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>kd(t,e))}}),be=k({mutationFn:async()=>{if(!re)throw new Error("Connect an account before starting a chat.");if(!V.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return aa(e.serverUrl,"/api/chats",{body:t,token:e.token})}(o,{accountId:re.id,autoRotateAccount:P,collaborationMode:A,model:de,permissionMode:j,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await na(o,e.id,{attachments:Ao(N),content:w.trim()})}},onError:e=>O.error(Ed(e)),onSuccess:({chat:e,response:t})=>{b(""),I([]),D(!1),T("default"),F(re?.defaultPermissionMode??"default"),J(""),X.setQueryData(["messages",e.id],Nd(void 0,Id(t))),X.invalidateQueries({queryKey:["chats"]}),Y(`/chat/${e.id}`)}}),xe=R(e=>{e?.length&&Co(e).then(e=>{I(t=>[...t,...e])}).catch(e=>O.error(Ed(e)))},[]),ye=R(()=>{s({initialPath:V,mode:"file",onSelect:e=>{I(t=>[...t,Mo(e)])}})},[s,V]),Ne=V.trim(),Ie=l&&!!Ne;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(Hr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:zn("mx-auto flex min-h-full w-full flex-col px-4",Ie?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-[760px] justify-center py-8"),children:[a.length?null:y("div",{className:"mb-4 rounded-md border bg-muted/35 p-4 text-sm",children:[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(Ea,{className:"mt-3",size:"sm",onClick:i,children:[x(nt,{}),"Manage Accounts"]})]}),Ie?x(ni,{onClosePanel:()=>c(!1),projectPath:Ne,socket:u,socketConnected:m}):y("div",{className:"grid gap-3 rounded-2xl border bg-card/80 p-3 shadow-sm dark:border-border/90 dark:bg-card/55",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-xl border bg-transparent px-2 py-1.5 dark:bg-transparent",children:[x(Ta,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-sm shadow-none focus-visible:ring-0 dark:bg-transparent",placeholder:"Working directory",spellCheck:!1,value:V,onChange:e=>J(e.target.value)}),y(Ea,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>s({initialPath:V,onSelect:J}),children:[x(me,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[x(Yo,{visible:"plan"===A}),x(ur,{className:zn("min-h-32 resize-none border-0 bg-transparent px-1 shadow-none focus-visible:ring-0 dark:bg-transparent","plan"===A&&"pr-24"),placeholder:"Message Codex",value:w,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!be.isPending&&Ad(w,V,re,N)&&be.mutate())},onPaste:e=>{const t=Eo(e.clipboardData);t.length&&xe(t)}})]}),x(So,{attachments:N,imageInputRef:Z,onAttachImages:xe,onRemove:e=>I(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(Zo,{attachmentDisabled:be.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:T}),x(Lo,{account:re,autoRotate:P,autoRotateDisabled:be.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:D,onSelect:e=>{z(e)}}),x(nd,{activeReasoningEffort:fe,disabled:!re,modelOptions:se,modelValue:de??"",pending:ie.isFetching,reasoningOptions:he,reasoningValue:ce??"",selectedModel:ue,serviceTierOptions:pe,serviceTierValue:le??"",onSelectModel:e=>{const t=re?.id??null;K(t),S(e||null),G(null),Q(null),t&&we.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=re?.id??null,n=e||null;K(t),G(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:n,defaultServiceTier:le}})},onSelectServiceTier:e=>{const t=re?.id??null,n=e||null;K(t),Q(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:ce,defaultServiceTier:n}})}}),x(ed,{disabled:!re,mode:j,onSelectMode:e=>{F(e),re?.id&&we.mutate({accountId:re.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Xo,{pending:ve,snapshot:ge}),x(td,{loading:be.isPending,sendDisabled:!Ad(w,V,re,N),onSend:()=>be.mutate()})]})]})]})]})})})}function Ro(){const{chatId:e}=g(),{accounts:t,accountRateLimitFetching:n,accountRateLimitSnapshots:a,accountUsageSummaries:i,connectedAccounts:s,openWorkspacePicker:o,session:d,setActiveProjectPath:c,setTerminalOpen:l,terminalCount:u,terminalOpen:m,terminalSocket:h,terminalSocketConnected:f}=id(),[p,v]=_(""),[w,N]=_([]),[I,A]=_(null),T=q(null),M=q(null),S=q(!0),P=E(),D=$(()=>["chat",e],[e]),U=$(()=>["messages",e],[e]);L(()=>{A(null),N([])},[e]);const z=C({enabled:!!e,queryKey:D,queryFn:()=>Zn(d,e)}),j=C({enabled:!!e,queryKey:U,queryFn:()=>ta(d,e,0)}),F=C({enabled:!!e&&!I,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(d,e),retry:!1,staleTime:3e4});L(()=>{F.data?.usage&&!I&&A(F.data.usage)},[F.data?.usage,I]);const B=$(()=>j.data?.data??[],[j.data]),G=$(()=>Is(B),[B]),H=$(()=>G.pendingRequest?[G.pendingRequest.id]:[],[G.pendingRequest]),K=$(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]),W=z.data,Q=t.find(e=>e.id===W?.accountId);L(()=>(c(W?.workingDirectory?.trim()??""),()=>c("")),[W?.workingDirectory,c]);const V=R(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),J=R((e="auto")=>{const t=T.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),X=C({enabled:!!Q?.id&&"CONNECTED"===Q.status,queryKey:["models",Q?.id],queryFn:()=>Xn(d,Q.id),staleTime:3e5});L(()=>{Cd(X.error)&&P.invalidateQueries({queryKey:["accounts"]})},[X.error,P]);const Y=Q?.id?a[Q.id]:void 0,Z=!!Q?.id&&!!n[Q.id],ee=k({mutationFn:t=>ea(d,e,{accountId:t.accountId}),onError:e=>O.error(Ed(e)),onSuccess:(e,t)=>{P.setQueryData(D,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&O.success("Chat account updated.")}}),te=k({mutationFn:t=>ea(d,e,t),onError:e=>O.error(Ed(e)),onSuccess:e=>{P.setQueryData(D,e),P.invalidateQueries({queryKey:["chats"]})}}),ne=k({mutationFn:({accountId:e,settings:t})=>Vn(d,e,t),onError:e=>O.error(Ed(e)),onSuccess:e=>{P.setQueryData(["accounts"],t=>kd(t,e))}}),ae=k({mutationFn:t=>na(d,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??p).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>O.error(Ed(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(v(""),N([])),P.setQueryData(U,t=>Nd(t,Id(e))),P.invalidateQueries({queryKey:D}),P.invalidateQueries({queryKey:["chats"]})}}),re=k({mutationFn:()=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(d,e),onError:e=>O.error(Ed(e)),onSuccess:()=>{O.message("Stop requested.")}}),ie=$(()=>od(s,a),[a,s]),se=$(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?dd(a[n.id])<0?null:!t||"CONNECTED"!==t.status||dd(a[t.id])<0?n:null:null}(W,Q,ie,a),[a,ie,Q,W])?.id;L(()=>{!se||ee.isPending||ae.isPending||ee.mutate({accountId:se,notify:!1})},[se,ae.isPending,ee.isPending]);const oe=R(e=>{e?.length&&Co(e).then(e=>{N(t=>[...t,...e])}).catch(e=>O.error(Ed(e)))},[]),de=R(()=>{o({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,Mo(e)])}})},[z.data?.workingDirectory,o]),ce=R(e=>{ae.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"}})},[ae]),le=R(e=>{var t;ae.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"}})},[ae]),ue=R(e=>{ae.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ae]),me=R(e=>{ae.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ae]);if(L(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?(P.setQueryData(U,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return sa(e,n);if("message.failed"===t)return sa(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)),"message.completed"!==e&&"message.failed"!==e||(P.invalidateQueries({queryKey:U}),P.invalidateQueries({queryKey:D}),P.invalidateQueries({queryKey:["chats"]}))):A(t):n(t)};return function(e,t,n){let a=!1;const r=bt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(d,e,{onError:e=>O.error(Ed(e)),onEvent:t,onOpen:()=>{var a;ta(d,e,(a=P.getQueryData(U),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>O.error(Ed(e))),Zn(d,e).then(n).catch(e=>O.error(Ed(e)))}});function n(e){P.setQueryData(D,e),P.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,D,U,P,d]),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("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:x(ke,{className:"size-5 animate-spin text-muted-foreground"})});if(z.error)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const he=W,fe=Q,pe="RUNNING"===he?.status,ge=X.data?.data??[],ve=!!he&&!pe&&s.length>0,we=sd(ge,he?.model),be=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],xe=he?.reasoningEffort??we?.defaultReasoningEffort??null,ye=we?.additionalSpeedTiers??[];return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-sidebar",children:[y("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-b-xl bg-background",children:[x(Hr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:T,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=V(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(mi,{chatId:e,fileChangeActionDisabled:pe,fileChangeActionPending:ae.isPending,hiddenMessageIds:H,messages:B,onImplementPlan:ce,onRevisePlan:le,onReviewFileChanges:ue,onUndoFileChanges:me,planActionDisabled:pe,planActionPending:ae.isPending,session:d}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:zn("min-w-0 border-t bg-background",m&&he?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&he?.workingDirectory?x("div",{className:"p-2",children:x("div",{className:"mx-auto max-w-5xl",children:x(ni,{onClosePanel:()=>l(!1),projectPath:he.workingDirectory,socket:h,socketConnected:f})})}):y(b,{children:[x(hi,{chatId:e,messages:B,session:d}),x("div",{className:"p-2",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[y("div",{className:"relative min-w-0",children:[x(Yo,{visible:"plan"===(he?.collaborationMode??"default")}),x(ur,{className:zn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(he?.collaborationMode??"default")&&"pr-24"),placeholder:he?.workingDirectory?fe?"Message Codex":"Choose an account first":"Choose a directory first",value:p,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Ad(p,he?.workingDirectory??"",fe,w)&&ae.mutate({attachments:Ao(w),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=Eo(e.clipboardData);t.length&&oe(t)}})]}),x(So,{attachments:w,imageInputRef:M,onAttachImages:oe,onRemove:e=>N(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(Zo,{attachmentDisabled:ae.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:de,onAttachImage:()=>M.current?.click(),pending:te.isPending,steerDisabled:!pe||ae.isPending||!Ad(p,he?.workingDirectory??"",fe,w),onSteerActiveTurn:()=>ae.mutate({attachments:Ao(w),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>te.mutate({collaborationMode:e})}),x(Lo,{account:fe,autoRotate:he?.autoRotateAccount??!1,autoRotateDisabled:!he||te.isPending,connectedAccounts:s,disabled:!he||!s.length,pending:ee.isPending,selectedAccountId:he?.accountId??"",selectionDisabled:!ve,usageSummaries:i,onAutoRotateChange:e=>te.mutate({autoRotateAccount:e}),onSelect:e=>ee.mutate({accountId:e})}),x(nd,{activeReasoningEffort:xe,disabled:!he||pe||!fe,modelOptions:ge,modelValue:he?.model??"",pending:X.isFetching||te.isPending,reasoningOptions:be,reasoningValue:he?.reasoningEffort??"",selectedModel:we,serviceTierOptions:ye,serviceTierValue:he?.serviceTier??"",onSelectModel:e=>{he?.accountId&&ne.mutate({accountId:he.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),te.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;he?.accountId&&ne.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:t,defaultServiceTier:he.serviceTier??null}}),te.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;he?.accountId&&ne.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:he.reasoningEffort??null,defaultServiceTier:t}}),te.mutate({serviceTier:t})}}),x(ed,{disabled:!he,mode:he?.permissionMode??"default",pending:te.isPending,onSelectMode:e=>{he?.accountId&&ne.mutate({accountId:he.accountId,settings:{defaultPermissionMode:e}}),te.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x($o,{usage:I}),x(Xo,{pending:Z,snapshot:Y}),x(td,{loading:ae.isPending,running:pe,sendDisabled:!Ad(p,he?.workingDirectory??"",fe,w),stopPending:re.isPending,onSend:()=>ae.mutate({attachments:Ao(w),clearComposer:!0,delivery:pe?"queue":void 0}),onStop:()=>re.mutate()})]})]})]})})]})})]}),he?y("div",{className:"hidden min-h-9 shrink-0 items-center justify-end gap-1 bg-sidebar px-3 py-1 md:-mb-2 md:flex",children:[x(yo,{active:m,className:zn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!he.workingDirectory?.trim(),onToggle:()=>l(!m)}),x(qo,{chatId:he.id,className:"text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground aria-expanded:bg-sidebar-accent aria-expanded:text-sidebar-accent-foreground",disabled:pe,session:d})]}):null]})}function Do(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(ke,{className:"size-5 animate-spin text-muted-foreground"})})}function Lo({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(tr,{children:[y(nr,{render:x(Ea,{"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(ke,{className:"animate-spin"}):x(t?je:nt,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(ar,{align:"start",className:"w-64",children:[i?y(b,{children:[y(rr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(je,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(oo,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(lr,{})]}):null,a.map(e=>{const t=e.id===d;return y(rr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):x("span",{className:"ml-auto"}),t?x(W,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function $o({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=xr(e.usedPercent);return y(Rs,{children:[x(Ds,{render:x(Ea,{"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(Ls,{align:"end",className:"w-72",side:"top",children:[y($s,{children:[x(qs,{children:"Context window"}),x(_s,{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:[gd(e.tokensUsed)," /"," ",gd(e.tokenLimit)," tokens used"]})]})]})]})}function qo({chatId:e,className:t,compact:n=!1,disabled:a,session:r}){const[i,s]=_(!1),o=E(),d=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(r,e),refetchInterval:2e4,retry:!1}),c=d.data;if(c&&!c.isRepo)return null;const l=c?.branch??"Git",u=!!c&&!c.clean,m=c?Jo(c):"";return y(Ka,{open:i,onOpenChange:s,children:[y(Ea,{"aria-label":"Git"+(l?`: ${l}`:""),className:zn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:d.isLoading&&!c,size:n?"icon":"sm",title:l,type:"button",variant:"ghost",onClick:()=>s(!0),children:[x(pe,{className:"size-3.5"}),n&&c?x("span",{className:zn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(b,{children:[x("span",{className:"min-w-0 truncate",children:l}),m?x("span",{className:"shrink-0 text-muted-foreground",children:m}):null,x("span",{className:zn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?x(_o,{chatId:e,disabled:a,queryClient:o,session:r,status:c}):null]})}function _o({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=_(""),[o,d]=_(""),[c,l]=_(""),[u,m]=_(null),[h,f]=_(null),p=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),g=C({enabled:!!e,queryKey:["git-diff",e,h],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return aa(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e,h),retry:!1}),v=C({enabled:!!e,queryKey:["git-history",e],queryFn:()=>async function(e,t){return aa(e.serverUrl,`/api/chats/${t}/git/history`,{token:e.token})}(a,e),retry:!1}),w=k({mutationFn:function(t){return async function(e,t,n){return aa(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>O.error(Ed(e)),onSuccess:t=>{O.success(t.message),d(""),l(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})}}),b=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(p.data,i),N=w.data?.status??r,I=$(()=>N?.changedFiles??[],[N]),A=$(()=>v.data?.commits??[],[v.data]),E=A.find(e=>e.hash===u)??null,T=t||w.isPending||!N||!1===N.isRepo,M=g.data?.diff?.trim()||g.data?.stat?.trim()||"",S=h??"All changes";return L(()=>{f(e=>I.length?e&&I.some(t=>t.path===e)?e:I[0]?.path??null:null)},[I]),L(()=>{m(e=>A.length?e&&A.some(t=>t.hash===e)?e:A[0]?.hash??null:null)},[A]),y(Ja,{className:"flex h-[min(90vh,760px)] w-[min(1180px,calc(100vw-1rem))] max-w-none flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-2 px-4 pb-3 pr-12 pt-4",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(Za,{className:"flex min-w-0 items-center gap-2 text-base",children:[x(ge,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Git"})]}),x(Uo,{branches:b,branchFilter:i,currentBranch:N?.branch,loading:p.isFetching&&!p.data,locked:T,newBranchName:c,onBranchFilterChange:s,onCheckout:e=>{window.confirm(`Switch to ${e}?`)&&w.mutate({action:"checkout",branch:e})},onCreateBranch:()=>w.mutate({action:"createBranch",branch:c.trim()}),onNewBranchNameChange:l}),x("span",{className:zn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),x("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:w.isPending?"Running git...":N?Vo(N):"Loading..."}),y("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[y(Ea,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&w.mutate({action:"pull"})},children:[x(ie,{}),"Pull"]}),y(Ea,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[x(tt,{}),"Push"]}),x(Ea,{size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})},children:x(je,{className:zn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),x(er,{className:"sr-only",children:"Manage repository changes, branches, commits, pull, push, and history."})]}),y("div",{className:"grid min-h-0 flex-1 overflow-y-auto border-t lg:grid-cols-[18rem_minmax(0,1fr)_19rem] lg:overflow-hidden",children:[y("section",{className:"grid min-h-[20rem] grid-rows-[auto_minmax(0,1fr)_auto] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ie,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),x("span",{className:"text-xs text-muted-foreground",children:I.length})]}),x(Hr,{className:"min-h-0",children:x(zo,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(ur,{className:"min-h-20 resize-none text-sm",placeholder:"Commit message",value:o,onChange:e=>d(e.target.value)}),y(Ea,{className:"justify-center",disabled:T||!o.trim()||N?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&w.mutate({action:"commit",message:o.trim()})},children:[x(ge,{}),"Commit All"]})]})]}),y("section",{className:"grid min-h-[24rem] min-w-0 grid-rows-[auto_minmax(0,1fr)] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex min-w-0 items-center gap-2 border-b px-3 py-2",children:[x(le,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[x("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),x("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?x(Ea,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),x("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:x(Oo,{diff:g.data?.diff??"",error:g.error,fallback:g.data?.stat??"",loading:g.isFetching&&!M})})]}),y("section",{className:"grid min-h-[22rem] grid-rows-[auto_minmax(0,1fr)_auto] lg:min-h-0",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(te,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"History"})]}),x("span",{className:"text-xs text-muted-foreground",children:A.length})]}),x(Ko,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),x("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[x("div",{className:"line-clamp-2 font-medium",children:E.subject}),x("div",{className:"truncate font-mono text-muted-foreground",children:E.hash}),y("div",{className:"truncate text-muted-foreground",children:[E.authorName||"Unknown author"," ·"," ",Qo(E.authoredAt)]})]}):x("div",{className:"text-muted-foreground",children:"No commit selected."})})]})]})]})}function Uo({branches:e,branchFilter:t,currentBranch:n,loading:a,locked:r,newBranchName:i,onBranchFilterChange:s,onCheckout:o,onCreateBranch:d,onNewBranchNameChange:c}){return y(Rs,{children:[y(Ds,{render:x(Ea,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[x(pe,{}),x("span",{className:"min-w-0 truncate",children:n??"No branch"}),x(J,{className:"ml-1 size-3.5 text-muted-foreground"})]}),y(Ls,{align:"start",className:"w-80 gap-0 p-0",side:"bottom",children:[y($s,{className:"border-b p-3",children:[x(qs,{children:"Branches"}),y(_s,{children:["Current branch: ",n??"detached"]})]}),x("div",{className:"grid gap-2 p-3",children:x(Ta,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),x(Hr,{className:"max-h-72 border-y",children:y("div",{className:"grid gap-1 p-2",children:[e.map(e=>y(Ea,{className:"justify-start",disabled:r||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>o(e.name),children:[e.current?x(W,{}):x(pe,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:a?"Loading branches...":"No branches found."})]})}),y("div",{className:"grid gap-2 p-3",children:[x(Ta,{className:"h-8",placeholder:"New branch",value:i,onChange:e=>c(e.target.value)}),y(Ea,{disabled:r||!i.trim(),size:"sm",type:"button",variant:"outline",onClick:d,children:[x(ze,{}),"Create branch"]})]})]})]})}function zo({files:e,loading:t,selectedPath:n,onSelect:a}){return t?x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("grid min-w-0 grid-cols-[2.25rem_minmax(0,1fr)] items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs outline-none hover:bg-muted focus-visible:bg-muted",n===e.path&&"bg-muted"),type:"button",onClick:()=>a(e.path),children:[x("span",{className:zn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Wo(e.status)),children:e.status.trim()}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function Oo({diff:e,error:t,fallback:n,loading:a}){const r=$(()=>function(e){const t=e.trim();return t?function(e){const t=[];let n=[];for(const a of e.split("\n"))a.startsWith("diff --git ")&&n.length&&(t.push(n),n=[]),n.push(a);n.length&&t.push(n);return t}(t).map(Fo).filter(e=>!!e):[]}(e),[e]);return t?x("div",{className:"p-3 font-mono text-xs text-destructive",children:Ed(t)}):a?x("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?x("div",{className:"min-w-max divide-y",children:r.map(e=>y("section",{className:"bg-background",children:[y("div",{className:"sticky top-0 z-10 border-b bg-background/95 px-3 py-2 backdrop-blur",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(de,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?x("div",{className:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 font-mono text-[0.68rem] text-muted-foreground",children:e.meta.slice(0,3).map(e=>x("span",{className:"truncate",children:e},e))}):null]}),x("div",{className:"py-1 font-mono text-xs leading-5",children:e.hunks.map((t,n)=>y("div",{children:[y("div",{className:"grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-y bg-muted/70 text-[0.68rem] text-muted-foreground",children:[x("div",{className:"border-r px-2 py-1 text-right",children:"line"}),x("div",{}),x("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>x(jo,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):x("pre",{className:"min-h-full min-w-0 overflow-auto p-3 font-mono text-xs leading-5 text-muted-foreground",children:n.trim()||"No tracked diff."})}function jo({fileLanguage:e,line:t}){const n="add"===t.type?"+":"delete"===t.type?"-":"meta"===t.type?"\\":" ",a="delete"===t.type?t.oldNumber:t.newNumber??t.oldNumber,r="meta"===t.type?t.content.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):li(t.content||" ",e);return y("div",{className:zn("grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-l-2","add"===t.type&&"border-l-emerald-500 bg-emerald-500/10 text-emerald-950 dark:text-emerald-50","delete"===t.type&&"border-l-red-500 bg-red-500/10 text-red-950 dark:text-red-50","context"===t.type&&"border-l-transparent bg-background","meta"===t.type&&"border-l-transparent bg-muted/40 text-muted-foreground"),children:[x("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),x("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),x("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function Fo(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=Bo(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return Bo(t[3]??t[2]??"")}(e);if(!t)return null;const n={hunks:[],language:Ho(t),meta:[],path:t};let a=null,r=0,i=0;for(const s of e){if(s.startsWith("@@")){const e=Go(s);r=e.oldStart,i=e.newStart,a={header:s,lines:[]},n.hunks.push(a);continue}a?s.startsWith("+")&&!s.startsWith("+++")?(a.lines.push({content:s.slice(1),newNumber:i,oldNumber:null,type:"add"}),i+=1):s.startsWith("-")&&!s.startsWith("---")?(a.lines.push({content:s.slice(1),newNumber:null,oldNumber:r,type:"delete"}),r+=1):s.startsWith("\\")?a.lines.push({content:s,newNumber:null,oldNumber:null,type:"meta"}):(a.lines.push({content:s.startsWith(" ")?s.slice(1):s,newNumber:i,oldNumber:r,type:"context"}),r+=1,i+=1):s.startsWith("diff --git ")||s.startsWith("--- ")||s.startsWith("+++ ")||n.meta.push(s)}return n.hunks.length?n:null}function Bo(e){const t=e.trim().replace(/^"|"$/g,"");return t?t.replace(/^[ab]\//,""):null}function Go(e){const t=e.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);return{newStart:Number(t?.[2]??0),oldStart:Number(t?.[1]??0)}}function Ho(e){switch(e.split(".").pop()?.toLocaleLowerCase()){case"bash":case"sh":return"bash";case"css":return"css";case"go":return"go";case"htm":case"html":case"svg":case"xml":return"xml";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"json":return"json";case"md":case"mdx":return"markdown";case"py":return"python";case"rs":return"rust";case"sql":return"sql";case"ts":case"tsx":return"typescript";case"yaml":case"yml":return"yaml";default:return null}}function Ko({commits:e,error:t,fetching:n,selectedHash:a,onSelect:r}){return t?x("div",{className:"p-3 text-xs text-destructive",children:Ed(t)}):n&&!e.length?x("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?x(Hr,{className:"min-h-0",children:x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("grid gap-1 rounded-md px-2 py-2 text-left outline-none hover:bg-muted focus-visible:bg-muted",a===e.hash&&"bg-muted"),type:"button",onClick:()=>r(e.hash),children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),x("span",{className:"shrink-0 font-mono text-[0.68rem] text-muted-foreground",children:e.shortHash})]}),y("div",{className:"flex min-w-0 items-center gap-1.5 text-[0.68rem] text-muted-foreground",children:[x("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),x("span",{"aria-hidden":"true",children:"·"}),x("span",{className:"shrink-0",children:Qo(e.authoredAt)})]}),e.refs.length?x("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>x("span",{className:"max-w-full truncate rounded bg-secondary px-1.5 py-0.5 text-[0.65rem] text-secondary-foreground",children:e},e))}):null]},e.hash))})}):x("div",{className:"p-3 text-xs text-muted-foreground",children:"No commits found."})}function Wo(e){return e.includes("D")?"bg-red-500/10 text-red-700 dark:text-red-300":e.includes("A")||e.includes("?")?"bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":e.includes("R")||e.includes("C")?"bg-blue-500/10 text-blue-700 dark:text-blue-300":"bg-amber-500/10 text-amber-700 dark:text-amber-300"}function Qo(e){const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":t.toLocaleString(void 0,{day:"2-digit",hour:"2-digit",minute:"2-digit",month:"short",year:"numeric"})}function Vo(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Jo(e)].filter(Boolean).join(" · "):"Git unavailable"}function Jo(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Xo({pending:e,snapshot:t}){const n=vr(t),a=wr(t);return y(Rs,{children:[y(Ds,{render:x(Ea,{className:zn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(ke,{className:"size-3 animate-spin"}):x(it,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(Ls,{align:"start",className:"w-80",side:"top",children:[y($s,{children:[x(qs,{children:"Usage capacity"}),x(_s,{children:"Current Codex account limits refresh automatically."})]}),x(ad,{pending:e,snapshot:t})]})]})}function Yo({visible:e}){return e?y(hr,{className:"pointer-events-none absolute right-1.5 top-1.5 z-10 border-primary/25 bg-background/95 text-foreground shadow-sm backdrop-blur dark:border-primary/40",variant:"outline",children:[x(Ie,{}),x("span",{children:"Plan mode"})]}):null}function Zo({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(tr,{children:[x(nr,{render:x(Ea,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(ke,{className:"animate-spin"}):x(ze,{})}),y(ar,{align:"start",className:"w-56",children:[y(rr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(Ie,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(oo,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(rr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(we,{}),x("span",{children:"Attach image"})]}),y(rr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x($e,{}),x("span",{children:"Attach workspace file"})]}),o?y(rr,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(H,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function ed({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(tr,{children:[y(nr,{render:x(Ea,{"aria-label":yd(t),className:zn("max-w-40 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",r&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-100 aria-expanded:bg-orange-100 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/45 dark:aria-expanded:bg-orange-950/45"),disabled:e||a,size:"sm",title:yd(t),variant:"ghost"}),children:[a?x(ke,{className:"animate-spin"}):x(r?Qe:We,{}),x("span",{className:"truncate max-sm:sr-only",children:yd(t)})]}),x(ar,{align:"start",className:"w-48",children:y(dr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(cr,{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(cr,{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 td({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(Ea,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(ke,{className:"animate-spin"}):x(H,{})}),x(Ea,{"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(ke,{className:"animate-spin"}):x(Ve,{})})]}):x(Ea,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(ke,{className:"animate-spin"}):x(H,{})})}function nd({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?bd(e):null,a?xd(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(tr,{children:[y(nr,{render:x(Ea,{"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(ke,{className:"animate-spin"}):x(re,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(ar,{align:"start",className:"w-72",children:[y(ir,{children:[y(sr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(K,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:bd(e)})]}),x(or,{className:"w-52",children:y(dr,{value:c,onValueChange:i,children:[x(cr,{value:"",children:"Model default"}),d.map(e=>x(cr,{value:e,children:bd(e)},e))]})})]}),y(ir,{children:[y(sr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(re,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(or,{className:"w-64",children:y(dr,{value:a,onValueChange:r,children:[x(cr,{value:"",children:"Default model"}),n.map(e=>x(cr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(ir,{children:[y(sr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(fe,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:xd(m)})]}),x(or,{className:"w-52",children:y(dr,{value:m,onValueChange:s,children:[x(cr,{value:"",children:"Default speed"}),u.map(e=>x(cr,{value:e,children:xd(e)},e))]})})]})]})]})}function ad({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: ",wd(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,wd(n))}):null]}),x(rd,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(rd,{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 rd({fallbackLabel:e,severity:t,window:n}){const a=xr(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=br(n);return y("div",{className:zn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:cd(n,e)}),x("span",{className:zn("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:zn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:zn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:ld(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",ud(n.resetsAt)]}):null]})]})}function id(){return p()}function sd(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function od(e,t){return e.map((e,n)=>({account:e,index:n,score:dd(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function dd(e){if(!e)return 0;if(e.rateLimitReachedType||wr(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-xr(e.usedPercent));return t.length?Math.min(...t):0}function cd(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 ld(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function ud(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 md(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 hd(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 fd(e){const t=e?.trim();return t?t.replace(/[\\/]+$/,"")||t:"No folder"}function pd(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function gd(e){return e>=1e6?`${vd(e/1e6)}M`:e>=1e3?`${vd(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function vd(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function wd(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function bd(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function xd(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function yd(e){return"fullAccess"===e?"Full access":"Default"}function Nd(e,t){let n=e;for(const a of t)n=sa(n,a);return n??{data:[],nextCursor:null}}function Id(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function kd(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 Ad(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Cd(e){if(!e)return!1;const t=e instanceof Error?e.message:String(e);return e instanceof Kn&&401===e.status||/token_invalidated|authentication token .*invalidated|re-authenticate this account/i.test(t)}function Ed(e){return e instanceof Error?e.message:"Request failed."}var Td=Ln({default:()=>Md}),Md=c(function(){return x(xo,{})}),Sd=Ln({default:()=>Pd}),Pd=c(function(){return x(Po,{})}),Rd=Ln({default:()=>Dd}),Dd=c(function(){return x(Ro,{})}),Ld=class extends Error{status;constructor(e,t){super(t),this.status=e}};function $d(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function qd(e){throw new Ld(405,`${e} is not supported for this route.`)}function _d(e,t){t.includes(e.method)||qd(e.method)}async function Ud(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 Ld(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Ld)throw n;throw new Ld(400,"Request body must be valid JSON.")}}function zd(e,t,n={}){if(null==e){if(n.required)throw new Ld(400,`${t} is required.`);return}if("string"!=typeof e)throw new Ld(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Ld(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Ld(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Od(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Ld(400,`${t} must be an array of strings.`);return e}}function jd(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Ld(400,`${t} must be a boolean.`);return e}}function Fd(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Ld(400,`${t} must be an object.`);return e}}function Bd(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 Ld(400,`${t} must be an integer.`);return r}function Gd(e,t){const n=e[t];if(!n)throw new Ld(400,`${t} is required.`);return n}function Hd(e){return e instanceof Ld?$d({message:e.message},{status:e.status}):$d({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Kd=Ln({loader:()=>Wd});function Wd({request:e}){try{return _d(e,["GET"]),$d({status:"ok",service:"xedoc"})}catch(t){return Hd(t)}}var Qd,Vd=globalThis,Jd=gn("~"===(Qd=process.env.CODEX_WORKSPACE_ROOT?.trim()||un())?un():Qd.startsWith("~/")?gn(un(),Qd.slice(2)):wn(Qd),".xedoc","xedoc.db"),Xd=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Jd);process.env.DATABASE_URL=Xd,Zt(hn(Jd),{recursive:!0,mode:448});var Yd=Vd.prisma??new Ht({datasources:{db:{url:Xd}}});"production"!==process.env.NODE_ENV&&(Vd.prisma=Yd);var Zd="server",ec="scrypt";async function tc(e){!function(e){if(e.length<8)throw new Ld(400,"Server password must be at least 8 characters.")}(e);const t=await sc()??await async function(e){try{return await Yd.serverAuth.create({data:{id:Zd,passwordHash:oc(e),tokenSecret:dc(32)}})}catch(t){if(function(e){return e instanceof Gt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Ld(409,"Server password was already configured. Sign in with the configured password.");throw t}}(e);if(!function(e,t){const[n,a,r,i]=t.split(":");return!(n!==ec||!a||!r||void 0!==i)&&cc(Ft(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Ld(401,"Invalid server password.");return{token:ac({authHash:rc(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function nc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Ld(401,"Invalid auth token.");if(!cc(a,ic(n,t.tokenSecret)))throw new Ld(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 Ld(401,"Invalid auth token.")}}(n);if(i.authHash!==rc(t.passwordHash))throw new Ld(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Ld(401,"Missing auth token.");return n}(e),await async function(){const e=await sc();if(!e)throw new Ld(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function ac(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${ic(n,t)}`}function rc(e){return t=e,Ut("sha256").update(t).digest("hex");var t}function ic(e,t){return zt("sha256",t).update(e).digest("base64url")}async function sc(){return Yd.serverAuth.findUnique({where:{id:Zd}})}function oc(e){const t=dc(16);return`${ec}:${t}:${Ft(e,t,64).toString("base64url")}`}function dc(e){return Ot(e).toString("base64url")}function cc(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Bt(n,a)}var lc=Ln({loader:()=>uc});async function uc({request:e}){try{return _d(e,["GET"]),$d(await async function(){return{passwordConfigured:!!(await sc())}}())}catch(t){return Hd(t)}}var mc=Ln({action:()=>hc});async function hc({request:e}){try{return _d(e,["POST"]),$d(await tc(zd((await Ud(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Hd(t)}}var fc=Ln({loader:()=>pc});async function pc({request:e}){try{return _d(e,["GET"]),$d(await async function(e){return{authenticated:!0,issuedAt:(await nc(e)).issuedAt}}(e))}catch(t){return Hd(t)}}function gc(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function vc(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function wc(e){const t=gc(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var bc=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-${jt()}`,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=Ec(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);return Dc(e.codexHome),this.child=yn(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}`),kc(t)&&Nc(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(Pc(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(Pc(t.id)),t.error)return kc(t.error.message)&&Nc(this.config.accountId,t.error.message),void a.reject(new Error(t.error.message??"Codex request failed."));a.resolve(t)}}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},xc=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new bc(e);return this.runtimes.set(e.accountId,n),n}stopRuntime(e){this.runtimes.get(e)?.shutdown(),this.runtimes.delete(e)}shutdown(){for(const e of this.runtimes.values())e.shutdown();this.runtimes.clear()}},yc=new Set;async function Nc(e,t){yc.add(e),await Yd.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:Ac(t)}})}function Ic(e){yc.delete(e)}function kc(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return t.includes("token_invalidated")||t.includes("authentication token has been invalidated")||t.includes("401")&&t.includes("unauthorized")&&t.includes("invalidated")}function Ac(e){const t=(e instanceof Error?e.message:"string"==typeof e?e:"").trim();return t?["Codex authentication token was invalidated. Re-authenticate this account.",t.length>700?`${t.slice(0,700)}...`:t].join("\n"):"Codex authentication token was invalidated. Re-authenticate this account."}async function Cc(e){return(await xc.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function Ec(e){return gn(Rc(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function Tc(e){const t=Ec(e);return Dc(t),t}function Mc(){return Rc(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Sc(){const e=Mc();return gn(e,qc(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>_c(t)-_c(e)).at(0)??"state_5.sqlite")}function Pc(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function Rc(e){return"~"===e?un():e.startsWith("~/")?gn(un(),e.slice(2)):wn(e)}function Dc(e){Zt(e,{recursive:!0,mode:448}),Wt(e,448),function(e){const t=Mc();if(wn(e)===wn(t))return;Zt(t,{recursive:!0,mode:448}),Wt(t,448),function(e,t){const n=gn(t,"sessions"),a=gn(e,"sessions");if(Zt(n,{recursive:!0,mode:448}),jc(a,n))return;Bc(a)&&(Fc(a)?.isDirectory()&&zc(a,n),sn(a,Gc(a)));cn(n,a,"dir")}(e,t),function(e,t){const n=gn(t,"session_index.jsonl"),a=gn(e,"session_index.jsonl");if(Uc(n,384),jc(a,n))return;Bc(a)&&(Fc(a)?.isFile()&&function(e,t){const n=tn(e,"utf8");if(!n.trim())return;const a=tn(t,"utf8");Kt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),sn(a,Gc(a)));cn(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([mn(Sc())]);for(const a of[t,e])for(const e of qc(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))Lc(e,t,n)}(e,t),function(e,t){$c(e,t,"AGENTS.md",!0),$c(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function Lc(e,t,n){const a=gn(t,n),r=gn(e,n);jc(r,a)||(Fc(r)?.isFile()&&Oc(r,a),n.endsWith("-wal")||n.endsWith("-shm")||Uc(a,384),Bc(r)&&sn(r,Gc(r)),cn(a,r,"file"))}function $c(e,t,n,a){const r=gn(t,n),i=gn(e,n);(a||Bc(r)||Bc(i))&&(Uc(r,384),jc(i,r)||(Fc(i)?.isFile()&&function(e,t){const n=tn(e,"utf8");if(!n.trim())return;const a=tn(t,"utf8");if(!a.trim())return Jt(e,t),void Wt(t,384);if(a===n||a.includes(n))return;const r=a.endsWith("\n")?"":"\n",i=n.endsWith("\n")?n:`${n}\n`;Kt(t,`${r}\n\x3c!-- Imported from ${mn(hn(e))}/${mn(e)} during xedoc sharing. --\x3e\n${i}`)}(i,r),Bc(i)&&sn(i,Gc(i)),cn(r,i,"file")))}function qc(e){try{return nn(e)}catch{return[]}}function _c(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function Uc(e,t){Qt(en(e,"a",t)),Wt(e,t)}function zc(e,t){Zt(t,{recursive:!0,mode:448});for(const n of nn(e,{withFileTypes:!0})){const a=gn(e,n.name),r=gn(t,n.name);n.isDirectory()?zc(a,r):n.isFile()&&Oc(a,r)}}function Oc(e,t){Bc(t)||(Zt(hn(t),{recursive:!0,mode:448}),Jt(e,t))}function jc(e,t){try{return!!Yt(e).isSymbolicLink()&&wn(hn(e),an(e))===wn(t)}catch{return!1}}function Fc(e){try{return dn(e)}catch{return null}}function Bc(e){try{return Yt(e),!0}catch{return!1}}function Gc(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;Bc(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var Hc="AGENTS.md",Kc=32768,Wc="auth.json";async function Qc(){const e=await Yd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return function(e){for(const t of e)ll(t.id)}(e),e}async function Vc(e){const t=await Yd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Ld(404,"Codex account not found.");return ll(t.id),t}async function Jc(e,t){const n=function(e){if("string"!=typeof e)throw new Ld(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>Kc)throw new Ld(400,"instructions must be 32768 bytes or fewer.");return t}(t.instructions);await Vc(e);const a=Tc(e),r=gn(a,Hc);return ln(r,n,{encoding:"utf8",mode:384}),Wt(r,384),{accountId:e,codexHome:a,instructionsPath:r,instructions:n,maxBytes:Kc}}async function Xc(e,t="browser"){const n=await Vc(e),a="INVALIDATED"===n.status;if(rl(e)&&!a)return xc.stopRuntime(e),await Yd.codexAccount.update({where:{id:e},data:Zc(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(xc.stopRuntime(e),function(e){on(gn(Ec(e),Wc),{force:!0})}(e)),await Yd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=tl(n);if(!a){const t=await async function(e){try{return gc(gc((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await Yd.codexAccount.update({where:{id:e},data:Zc(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=gc((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===vc(i?.type)?"device":t,o=function(e,t){return"device"===t?vc(e?.verificationUrl)??vc(e?.verification_url)??vc(e?.authUrl)??vc(e?.auth_url)??vc(e?.url)??null:vc(e?.authUrl)??vc(e?.auth_url)??vc(e?.url)??null}(i,s),d=vc(i?.loginId)??null,c="device"===s?vc(i?.userCode)??vc(i?.user_code)??null:null;if(!("device"!==s||o&&c))throw new Error("Codex did not return device login instructions.");const l=o?"AUTHENTICATING":"CONNECTED";return await Yd.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Zc(e):{status:l,lastAuthUrl:o,lastAuthMode:s,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),Yd.codexAccount.update({where:{id:t},data:Zc(t)}))},s=e=>{a||(a=!0,c(),Yd.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{rl(t)?i():nl(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r()};r=e.onEvent(e=>{const t=gc(e.params);if("account/login/completed"===e.method){const e=vc(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(vc(t.error)??"Login failed."):void i()}"account/updated"===e.method&&vc(t?.authMode)&&i()})}(r,e,d),{accountId:e,status:l,authMode:"AUTHENTICATING"===l?s:null,authUrl:o,verificationUrl:"device"===s?o:null,userCode:c,loginId:d,message:"CONNECTED"===l?"Codex account is connected.":"device"===s?"Open the verification URL and enter the device code to finish Codex authentication.":"Complete Codex authentication in the opened browser. xedoc will connect automatically when the Codex callback is received."}}catch(r){const n=r instanceof Error?r.message:"Authentication failed.";return await Yd.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 Yc(e,t){const n=await Vc(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Ld(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Ld(400,"Callback URL must use http.");if(t.username||t.password)throw new Ld(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 Ld(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Ld(400,"Callback URL must include an OAuth code or error.");return t}(t),r=tl(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 Ld(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=gc((await i)?.params);if(!1===s?.success){const t=vc(s.error)??"Login failed.";return await Yd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:el(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await nl(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:rl(e)?(xc.stopRuntime(e),await Yd.codexAccount.update({where:{id:e},data:Zc(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await Yd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:el(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 Yd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:el(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function Zc(e,t){Ic(e);const n=((a=t)?cl(vc(a.email))??cl(vc(a.accountEmail))??cl(vc(a.chatgptEmail))??cl(vc(gc(a.profile)?.email))??cl(vc(gc(a.user)?.email)):null)??function(e){try{return cl(vc((t=il(e)).email))??cl(vc(gc(t.account)?.email))??cl(vc(gc(t.profile)?.email))??cl(vc(gc(t.user)?.email))??dl(vc(gc(t.tokens)?.id_token))??dl(vc(gc(t.tokens)?.idToken))??dl(vc(t.id_token))??dl(vc(t.idToken))}catch{return null}var t}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function el(e){return"browser"===e||"device"===e?e:null}function tl(e){return xc.getRuntime({accountId:e.id,command:e.command,args:fl(e.args),workingDirectory:null,environment:wc(e.environment)})}async function nl(e,t){const n=gc(gc((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await Yd.codexAccount.update({where:{id:e},data:Zc(e,n)}),!0)}function al(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function rl(e){try{const t=il(e);return!("chatgpt"!==vc(t.auth_mode)||!gc(t.tokens)&&!vc(t.OPENAI_API_KEY))}catch{return!1}}function il(e){const t=tn(gn(Ec(e),Wc),"utf8");return gc(JSON.parse(t))??{}}function sl(e){try{const t=il(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function ol(e,t){if(!t)return;const n=Tc(e),a=`${JSON.stringify(t.authJson)}\n`;ln(gn(n,Wc),a,{encoding:"utf8",mode:384}),Wt(gn(n,Wc),384)}function dl(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return cl(vc(gc(JSON.parse(function(e){const t=e.replaceAll("-","+").replaceAll("_","/"),n=t.padEnd(t.length+(4-t.length%4)%4,"=");return Buffer.from(n,"base64").toString("utf8")}(t)))?.email))}catch{return null}}function cl(e){const t=e?.trim();return t&&t.includes("@")?t:null}function ll(e){try{Tc(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function ul(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function ml(e){return{args:ul(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?Gt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function hl(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:fl(e.args),environment:wc(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:el(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function fl(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):al()}function pl(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Ld(400,`${n} must be an object.`);return{id:yl(e.id,`${n}.id`,128),displayName:xl(e.displayName,`${n}.displayName`,128),command:yl(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Nl(e.args,`${n}.args`)??al(),auth:Il(e.auth,`${n}.auth`),defaultModel:yl(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:bl(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:vl(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:wl(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:kl(e.environment,`${n}.environment`)}}function gl(e){return null==e?null:xl(e,"runtime option",128)}function vl(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 Ld(400,`${t} is invalid.`)}function wl(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Ld(400,`${t} is invalid.`)}function bl(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Ld(400,`${t} is invalid.`)}function xl(e,t,n){const a=yl(e,t,n);if(!a)throw new Ld(400,`${t} is required.`);return a}function yl(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Ld(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Ld(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Nl(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Ld(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function Il(e,t){if(null==e)return null;const n=gc(e);if(!n)throw new Ld(400,`${t} must be an object.`);const a=gc(n.authJson);if(!a)throw new Ld(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new Ld(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,262144),{authJson:a}}function kl(e,t){if(null==e)return null;const n=gc(e);if(!n)throw new Ld(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Al=Ln({action:()=>El,loader:()=>Cl});async function Cl({request:e}){try{return _d(e,["GET"]),await nc(e),$d(await Qc())}catch(t){return Hd(t)}}async function El({request:e}){try{_d(e,["POST"]),await nc(e);const t=await Ud(e);return $d(await async function(e){const t=await Yd.codexAccount.create({data:{displayName:(n=e.displayName,vc(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:ul(e.args??al()),defaultModel:gl(e.defaultModel),defaultPermissionMode:bl(e.defaultPermissionMode),defaultReasoningEffort:vl(e.defaultReasoningEffort),defaultServiceTier:wl(e.defaultServiceTier),environment:ul(e.environment)}});var n;return ll(t.id),t}({displayName:zd(t.displayName,"displayName",{maxLength:128}),command:zd(t.command,"command"),args:Od(t.args,"args"),defaultModel:Tl(t.defaultModel,"defaultModel"),defaultPermissionMode:Tl(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Tl(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Tl(t.defaultServiceTier,"defaultServiceTier"),environment:Fd(t.environment,"environment")}),{status:201})}catch(t){return Hd(t)}}function Tl(e,t){return null===e?null:zd(e,t,{maxLength:128})}var Ml=Ln({loader:()=>Sl});async function Sl({request:e}){try{return _d(e,["GET"]),await nc(e),$d(await async function(){const e=await Yd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:2,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:fl(e.args),auth:sl(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:wc(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return Hd(t)}}var Pl=Ln({action:()=>Rl});async function Rl({request:e}){try{_d(e,["POST"]),await nc(e);const t=await Ud(e);if(!Array.isArray(t.accounts))throw new Ld(400,"accounts must be an array.");return $d(await async function(e){const t=e.accounts.map(pl),n=[];for(const s of t){const e=s.id?await Yd.codexAccount.findUnique({where:{id:s.id}}):null;if(e){xc.stopRuntime(e.id);const t=await Yd.codexAccount.update({where:{id:e.id},data:ml(s)});ol(t.id,s.auth),n.push(t);continue}const t=await Yd.codexAccount.create({data:{...s.id?{id:s.id}:{},...ml(s)}});ol(t.id,s.auth),n.push(t)}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await Xc(s.id));const r=await Yd.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=>hl(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Hd(t)}}var Dl=In(xn),Ll="127.0.0.1",$l=function(e){const t=Number(e??1457);return!Number.isInteger(t)||t<=0||t>65535?1457:t}(process.env.CODEX_LOGIN_CALLBACK_PORT);async function ql(){const e=await new Promise((e,t)=>{const n=Nn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Ll,port:$l},()=>{n.close(n=>{n?t(n):e(!1)})})});return function(e,t,n){const a=t.some(e=>e.pid===process.pid);return{checkedAt:(new Date).toISOString(),host:Ll,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:$l,processes:t,message:e?a?"The current xedoc server owns the login callback port.":"The Codex login callback port is already in use.":"The Codex login callback port is available."}}(e,e?await async function(){if("win32"===process.platform)return async function(){try{const{stdout:e}=await Dl("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${$l}\\s`);for(const a of e.split(/\r?\n/)){const e=a.trim();if(!e.includes("LISTENING")||!n.test(e))continue;const r=e.split(/\s+/),i=Number(r.at(-1));Number.isFinite(i)&&t.push({pid:i,address:e})}return Ul(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Dl("lsof",["-nP",`-iTCP:${$l}`,"-sTCP:LISTEN","-F","pcLn"]);return function(e){const t=[];let n=null;for(const a of e.split(/\r?\n/)){if(!a)continue;const e=a.slice(0,1),r=a.slice(1);"p"!==e?n&&("c"===e?n.command=r:"L"===e?n.user=r:"n"===e&&(n.address=r)):(n&&t.push(n),n={pid:Number(r)})}n&&t.push(n);return Ul(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Dl("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${$l}\\b`);for(const a of e.split(/\r?\n/)){if(!n.test(a)||!a.includes("LISTEN"))continue;const e=/"([^"]+)",pid=(\d+)/g;let r;for(;r=e.exec(a);)t.push({command:r[1],pid:Number(r[2]),address:a.trim()})}return Ul(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function _l(){const e=await ql();if(!e.inUse)return e;const t=e.processes.map(e=>e.pid).filter(e=>e>0&&e!==process.pid);if(!t.length)throw new Ld(409,e.processes.some(e=>e.pid===process.pid)?"The current xedoc server owns the login callback port and cannot kill itself.":"No killable process was found for the login callback port.");const n=[];for(const i of Array.from(new Set(t)))try{process.kill(i,"SIGTERM"),n.push(i)}catch(r){if(!zl(r))throw new Ld(500,`Could not kill process ${i}: ${Ol(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await ql(),killedProcessIds:n}}function Ul(e){const t=new Map;for(const n of e)t.has(n.pid)||t.set(n.pid,n);return Array.from(t.values()).sort((e,t)=>e.pid-t.pid)}function zl(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function Ol(e){return e instanceof Error?e.message:"Unknown error"}var jl=Ln({action:()=>Bl,loader:()=>Fl});async function Fl({request:e}){try{return _d(e,["GET"]),await nc(e),$d(await ql())}catch(t){return Hd(t)}}async function Bl({request:e}){try{return _d(e,["POST"]),await nc(e),$d(await _l())}catch(t){return Hd(t)}}var Gl=Ln({action:()=>Kl,loader:()=>Hl});async function Hl({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await Vc(Gd(t,"accountId")))}catch(n){return Hd(n)}}async function Kl({request:e,params:t}){try{await nc(e);const n=Gd(t,"accountId");if("PATCH"===e.method){const t=await Ud(e);return $d(await async function(e,t){return await Vc(e),xc.stopRuntime(e),Yd.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:ul(t.args),environment:ul(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:zd(t.displayName,"displayName",{maxLength:128}),command:zd(t.command,"command"),args:Od(t.args,"args"),environment:Fd(t.environment,"environment")}))}if("DELETE"===e.method)return $d(await async function(e){const t=await Vc(e);return xc.stopRuntime(e),Ic(e),Yd.$transaction(async n=>{await n.chat.updateMany({where:{accountId:e},data:{accountId:null}}),await n.threadPreference.updateMany({where:{accountId:e},data:{accountId:null}});const a=(await n.chatRun.findMany({select:{id:!0},where:{accountId:e}})).map(e=>e.id);return a.length&&(await n.chatMessage.updateMany({where:{runId:{in:a}},data:{runId:null}}),await n.chatRun.deleteMany({where:{id:{in:a}}})),n.codexAccount.delete({where:{id:t.id}})})}(n));qd(e.method)}catch(n){return Hd(n)}}var Wl=Ln({action:()=>Ql});async function Ql({request:e,params:t}){try{_d(e,["PATCH"]),await nc(e);const n=await Ud(e),a={defaultModel:Vl(n.defaultModel,"defaultModel"),defaultPermissionMode:Vl(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Vl(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Vl(n.defaultServiceTier,"defaultServiceTier")};return $d(await async function(e,t){return await Vc(e),hl(await Yd.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:gl(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:bl(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:vl(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:wl(t.defaultServiceTier)}}))}(Gd(t,"accountId"),a))}catch(n){return Hd(n)}}function Vl(e,t){return null===e?null:zd(e,t,{maxLength:128})}var Jl=Ln({action:()=>Yl,loader:()=>Xl});async function Xl({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await async function(e){await Vc(e);const t=Tc(e),n=gn(t,Hc);let a="";try{a=tn(n,"utf8")}catch(r){if(!function(e){return!!e&&"object"==typeof e&&"code"in e&&"ENOENT"===e.code}(r))throw r}return{accountId:e,codexHome:t,instructionsPath:n,instructions:a,maxBytes:Kc}}(Gd(t,"accountId")))}catch(n){return Hd(n)}}async function Yl({request:e,params:t}){try{_d(e,["PATCH"]),await nc(e);const n=await Ud(e);if("string"!=typeof n.instructions)throw new Ld(400,"instructions is required.");return $d(await Jc(Gd(t,"accountId"),{instructions:n.instructions}))}catch(n){return Hd(n)}}async function Zl(e){const t=await eu(e);try{const n=await async function(e){return(await xc.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(au(t));return await tu(e),n}catch(n){return nu(e,n)}}async function eu(e){const t=await Yd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Ld(404,"Account not found.");if("CONNECTED"!==t.status)throw new Ld("INVALIDATED"===t.status?401:400,"INVALIDATED"===t.status?"Codex authentication token was invalidated. Re-authenticate this account.":"Authenticate the account before loading Codex account data.");return t}async function tu(e){if(function(e){return yc.has(e)}(e))throw new Ld(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await Yd.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new Ld(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function nu(e,t){if(t instanceof Ld)throw t;if(function(e){return kc(e instanceof Error?e.message:String(e??""))}(t))throw await Nc(e,t),xc.stopRuntime(e),new Ld(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function au(e){return{accountId:e.id,args:ru(e.args),command:e.command,environment:wc(e.environment),workingDirectory:null}}function ru(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var iu=Ln({loader:()=>su});async function su({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await Zl(Gd(t,"accountId")))}catch(n){return Hd(n)}}var ou=Ln({loader:()=>du});async function du({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await async function(e){const t=await eu(e);try{const n=await Cc(au(t));return await tu(e),n}catch(n){return nu(e,n)}}(Gd(t,"accountId")))}catch(n){return Hd(n)}}var cu=Ln({action:()=>lu});async function lu({request:e,params:t}){try{_d(e,["POST"]),await nc(e);const n=await Ud(e);return $d(await Xc(Gd(t,"accountId"),function(e){const t=zd(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Ld(400,"mode must be browser or device.")}(n.mode)))}catch(n){return Hd(n)}}var uu=Ln({action:()=>mu});async function mu({request:e,params:t}){try{_d(e,["POST"]),await nc(e);const n=zd((await Ud(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return $d(await Yc(Gd(t,"accountId"),n))}catch(n){return Hd(n)}}var hu=globalThis,fu=new Map,pu=new Map;async function gu(e,t){const n=await Fu(e);if(!n)return;const a=gn(Tc(t),"sessions",im(n));if(wn(n)!==wn(a)){await async function(e){const t=function(e){const t=`${bn}sessions${bn}`,n=wn(e),a=n.lastIndexOf(t);return-1===a?null:gn(n.slice(0,a),"session_index.jsonl")}(e),n=gn(Mc(),"session_index.jsonl");if(!t||wn(t)===wn(n))return;try{const e=await Mn(t,"utf8");if(!e.trim())return;const a=await Mn(n,"utf8").catch(()=>"");await An(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(n);try{return void(await kn(a,Vt.R_OK))}catch{}await En(hn(a),{recursive:!0,mode:448}),await Cn(n,a)}}async function vu(e){const t=await Fu(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>Bu())return null;const a=`${t}:${e}`,r=pu.get(a);if(r&&Gu(r,n))return r.value;const i=function(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=Zu(f);if(!e)continue;const u=em(e.timestamp)??n;o=tm(o,u),d=nm(d,u);const m=gc(e.payload);if("session_meta"===e.type&&m){a=vc(m.id)??a,r=vc(m.source)??r,i=vc(m.originator)??i,s=vc(m.cwd)??s,o=em(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=vc(m.cwd)??s;continue}const h=yu(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=Nu(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??am(t);if(!m||!u.length)return null;const h=rm(u.find(e=>"USER"===e.role)?.content??"")??rm(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}}(await Mn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return Hu(pu,a,n,s),s}catch{return null}}(t,e):null}async function wu(e){const t=await Fu(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>Bu())return null;const a=`${t}:${e}`,r=fu.get(a);if(r&&Gu(r,n))return r.value;let i,s=null;for(const t of(await Mn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Zu(t);if(!e)continue;"session_meta"===e.type&&(i=vc(gc(e.payload)?.id)??i);const n=Wu(e);n&&(s=n)}const o=(i??am(e))===t?s:null;return Hu(fu,a,n,o),o}catch{return null}}(t,e):null}async function bu(e){const t=await Pu(e);return t?Uu(t):null}async function xu(){return(await async function(e){const t=await _u();if(!t)return[];try{const n=await Ru(t);return await t.$queryRawUnsafe(`\n SELECT ${Du(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${qu(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(Ku("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(Uu).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function yu(e,t,n){if("response_item"!==e.type)return null;const a=gc(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?Cu(e.text,e):"string"==typeof e.message?Cu(e.message,e):"string"==typeof e.content?Cu(e.content,e):Array.isArray(e.content)?Cu(e.content.map(e=>{if("string"==typeof e)return e;const t=gc(e);return t?"string"==typeof t.text?t.text:Tu(t)??"":""}).join(""),e):Cu("",e)}(a);return!s.trim()||Iu(s)?null:{content:s,createdAt:t,metadata:ku(a,n),rawPayload:Au(e,a),role:r}}function Nu(e,t,n){if("event_msg"!==e.type)return null;const a=gc(e.payload);if(!a)return null;const r=vc(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?Cu(a.message,a):"";return!s.trim()||Iu(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...ku(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Au(e,a),role:i}}function Iu(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function ku(e,t){return{kind:"localCodexImport",originator:t.originator,phase:vc(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:vc(e.type)}}function Au(e,t){return{payload:{name:vc(t.name),phase:vc(t.phase),role:vc(t.role),type:vc(t.type)},timestamp:vc(e.timestamp),type:vc(e.type)}}function Cu(e,t){return[e,...Eu(t.images),...Eu(t.local_images),...Eu(t.localImages)].filter(Boolean).join("\n\n")}function Eu(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Mu(e):Tu(gc(e))).filter(e=>!!e):[]}function Tu(e){return e?Mu(vc(e.url)??vc(e.image_url)??vc(e.path)??vc(e.filePath)):null}function Mu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Su(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||Iu(n)||!t.allowGeneric&&function(e){const t=function(e){return e.replace(/\s+/g," ").trim().toLowerCase()}(e);return"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}(n)?null:n.slice(0,160)}async function Pu(e){const t=await _u();if(!t)return null;try{const n=await Ru(t);return(await t.$queryRawUnsafe(`\n SELECT ${Du(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function Ru(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function Du(e){return[Lu(e,"id"),Lu(e,"rollout_path","rolloutPath"),$u(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),$u(e,qu(e),"updatedAt"),Lu(e,"cwd"),Lu(e,"title"),Lu(e,"first_user_message","firstUserMessage"),Lu(e,"preview"),Lu(e,"archived"),Lu(e,"archived_at","archivedAt")].join(",\n ")}function Lu(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function $u(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function qu(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function _u(){const e=Sc();try{await kn(e,Vt.R_OK)}catch{return null}return hu.codexStatePrisma&&hu.codexStateDatabasePath===e||(await(hu.codexStatePrisma?.$disconnect().catch(()=>{})),hu.codexStateDatabasePath=e,hu.codexStatePrisma=new Ht({datasources:{db:{url:Ou(e)}}})),hu.codexStatePrisma}function Uu(e){const t=new Date(0),n=zu(e.updatedAt,t),a=zu(e.createdAt,n),r=ju(e.rolloutPath)[0]??"",i=Su(e.firstUserMessage,{allowGeneric:!0}),s=Su(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:s,title:Su(e.title,{allowGeneric:!1})??rm(i??"")??rm(s??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function zu(e,t){const n="bigint"==typeof e?Number(e):"number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return!Number.isFinite(n)||n<=0?t:new Date(n>1e10?n:1e3*n)}function Ou(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function ju(e){const t=e?.trim();if(!t)return[];const n=gn(Mc(),"sessions",im(t));return[...new Set([t,n])]}async function Fu(e){const t=await Pu(e);for(const n of ju(t?.rolloutPath))try{return await kn(n,Vt.R_OK),n}catch{}return null}function Bu(){return Ku("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Gu(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function Hu(e,t,n,a){if(e.size>=100){const t=e.keys().next().value;t&&e.delete(t)}e.set(t,{mtimeMs:n.mtimeMs,size:n.size,value:a})}function Ku(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Wu(e){const t=Qu(e);if(!t)return null;const n=gc(t.params),a=gc(t.info)??gc(n?.info)??n??t;return function(e,t=e){const n=Ju(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Ju(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Ju(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}([Ju(e,["input_tokens","inputTokens"]),Ju(e,["output_tokens","outputTokens"]),Ju(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}}(Vu(a,["last_token_usage","lastTokenUsage"])??Vu(a,["total_token_usage","totalTokenUsage"])??a,a)}function Qu(e,t=0){if(t>4)return;const n=gc(e);if(!n)return;const a=Yu(vc(n.type)??""),r=Yu(vc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Qu(n[i],t+1);if(e)return e}}function Vu(e,t){for(const n of t){const t=gc(e[n]);if(t)return t}}function Ju(e,t){for(const n of t){const t=Xu(e[n]);if(void 0!==t)return t}}function Xu(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 Yu(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Zu(e){try{return gc(JSON.parse(e))??null}catch{return null}}function em(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function tm(e,t){return!e||t<e?t:e}function nm(e,t){return!e||t>e?t:e}function am(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function rm(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 im(e){const t=`${bn}sessions${bn}`,n=e.lastIndexOf(t);return-1===n?mn(e):e.slice(n+t.length)}var sm="__xedocRealtimeState__";function om(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[sm]??={handlers:new Set},e[sm]}().handlers)r(a)}var dm=null;async function cm(){dm??=async function(){await Yd.$executeRawUnsafe('\n CREATE TABLE IF NOT EXISTS "ThreadPreference" (\n "threadId" TEXT NOT NULL PRIMARY KEY,\n "accountId" TEXT,\n "autoRotateAccount" BOOLEAN NOT NULL DEFAULT false,\n "title" TEXT,\n "workingDirectory" TEXT,\n "model" TEXT,\n "reasoningEffort" TEXT,\n "serviceTier" TEXT,\n "collaborationMode" TEXT NOT NULL DEFAULT \'default\',\n "permissionMode" TEXT NOT NULL DEFAULT \'default\',\n "archivedAt" DATETIME,\n "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n "updatedAt" DATETIME NOT NULL,\n CONSTRAINT "ThreadPreference_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "CodexAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE\n )\n '),await Yd.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await Yd.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>Yd.$executeRawUnsafe('\n INSERT OR IGNORE INTO "ThreadPreference" (\n "threadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n "archivedAt",\n "createdAt",\n "updatedAt"\n )\n SELECT\n "externalThreadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n CASE WHEN "status" = \'ARCHIVED\' THEN "updatedAt" ELSE NULL END,\n "createdAt",\n "updatedAt"\n FROM "Chat"\n WHERE "externalThreadId" IS NOT NULL AND TRIM("externalThreadId") != \'\'\n ')).then(()=>{},()=>{}),await dm}async function lm(){return await cm(),Yd.threadPreference.findMany()}async function um(e){return await cm(),Yd.threadPreference.findUnique({where:{threadId:e}})}async function mm(e,t){await cm();const n=function(e){return{accountId:e.accountId,archivedAt:e.archivedAt,autoRotateAccount:e.autoRotateAccount,collaborationMode:e.collaborationMode,model:e.model,permissionMode:e.permissionMode,reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier,title:e.title,workingDirectory:e.workingDirectory}}(t);return Yd.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function hm(e){const[t,n]=await Promise.all([bu(e),um(e)]);return t?.workingDirectory??n?.workingDirectory??null}function fm(e){return"fullAccess"===e?"fullAccess":"default"}async function pm(e){const t=wm(),n=bm(t,e),a=await Sn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:hn(n),entries:a.map(e=>function(e,t){return{name:t.name,path:gn(e,t.name),type:xm(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 gm(e,t){const n=wm(),a=wn(bm(n,e),function(e){const t=e.trim();if(!t)throw new Ld(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Ld(400,"Folder name must be a single folder name.");return t}(t)),r=vn(n,a);if(r.startsWith("..")||pn(r))throw new Ld(403,"Path is outside the workspace root.");try{await En(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new Ld(409,"Folder already exists.");throw i}return pm(a)}function vm(e){return bm(wm(),e)}function wm(){const e=function(e){return"~"===e?un():e.startsWith("~/")?gn(un(),e.slice(2)):wn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Xt(e)||Zt(e,{recursive:!0}),rn(e)}function bm(e,t){const n=t?.trim(),a=n?pn(n)?n:gn(e,n):e;let r;try{r=rn(wn(a))}catch{throw new Ld(400,"Workspace path does not exist.")}const i=vn(e,r);if(i.startsWith("..")||pn(i))throw new Ld(403,"Path is outside the workspace root.");if(!dn(r).isDirectory())throw new Ld(400,"Workspace path is not a directory.");return r}function xm(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var ym=1e6;async function Nm(e,t,n){const a=await hm(e);if(!a)throw new Ld(400,"Chat does not have a working directory.");const r=vm(a),i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()),n=/^(.*)#L(\d+)(?:-\d+)?$/i.exec(t);if(n)return{line:Number(n[2]),path:n[1]};const a=/^(.+):(\d+)(?::\d+)?$/.exec(t);return a&&!/^[A-Za-z]:\\/.test(t)?{line:Number(a[2]),path:a[1]}:{path:t}}(t),s=await Im(r,i.path),o=await km(s,r),d=n??i.line??null,c=Math.min(o.size,ym),l=c?await async function(e,t){const n=await Tn(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:Am(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>ym}}async function Im(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Ld(400,"File path is required.");const a=await Pn(e),r=pn(n)?n:wn(a,n);let i;try{i=await Pn(r)}catch{throw new Ld(404,"File does not exist.")}return function(e,t){const n=vn(e,t);if(n.startsWith("..")||pn(n))throw new Ld(403,"Path is outside the chat working directory.")}(a,i),i}async function km(e,t){const n=await Rn(e);if(!n.isFile())throw new Ld(400,"Workspace path is not a file.");const a=t?await Pn(t):null;return{name:mn(e),path:e,relativePath:a&&vn(a,e)||mn(e),size:n.size}}function Am(e){const t=fn(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 Cm=new Map,Em=new Map,Tm=new Map,Mm=new Map,Sm=new Map,Pm=new Map,Rm="New Thread";async function Dm(e){const t=await um(e),n=await Fm(e);if(!n&&!Em.has(e))throw new Ld(404,"Chat not found.");return Gm(e,t,n)}async function Lm(e,t){const n=await Dm(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new Ld(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&wf(t.collaborationMode)!==n.collaborationMode)throw new Ld(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new Ld(400,"Wait for the current run to finish before changing workspace.")}const a=await async function(e,t){if(void 0===t||t===e)return;return null===t?null:(await Om(t)).id}(n.accountId,t.accountId);if(Em.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new Ld(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:wf(t.collaborationMode),i=void 0===t.permissionMode?void 0:bf(t.permissionMode),s=void 0===t.title?void 0:Nf(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:vm(t.workingDirectory),d=await mm(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:pf(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:gf(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:vf(t.serviceTier),title:s,workingDirectory:o});if(a&&gu(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),s&&async function(e,t,n){if(!t.accountId)return;const a=await Yd.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await Pf(Ef(a),e,n)}(e,d,s).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),i){const t=Em.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...Cm.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=df(t);n.runtime.respondToServerRequest(n.rpcId,a),Cm.delete(cf(e,n.requestId));const r=Xm(e,n.messageId,{completedAt:new Date,metadataPatch:{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:a,status:"resolved"},status:"COMPLETED"});r&&Af(e,"message.updated",r)}}(e)}const c=await Gm(e,d);return Af(e,"chat.updated",c),c}async function $m(e){await Dm(e);const t=await Gm(e,await async function(e){return mm(e,{archivedAt:new Date})}(e));return Af(e,"chat.updated",t),t}async function qm(e,t=0,n=50){const a=await Dm(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await vu(e);return t?t.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,role:e.role,source:"session"}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:n.completedAt??n.createdAt??i,content:n.content,createdAt:i,id:Hm(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?hf(n.metadata):Km(n),rawPayload:hf(n.rawPayload??null),requestId:null,role:n.role,runId:null,sequence:r,status:"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=Em.get(e);return n?t.length?n.messages.filter(e=>function(e,t){return"PENDING"===e.status||"STREAMING"===e.status||"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||!t.some(t=>function(e,t){return e.kind===t.kind&&e.role===t.role&&(!(!e.turnId||!t.turnId||e.turnId!==t.turnId)||(!(!e.itemId||!t.itemId||e.itemId!==t.itemId)||"CHAT"===e.kind&&Ym(e.content)===Ym(t.content)))}(t,e))}(e,t)):n.messages:[]}(e,i),o=[...i,...s].sort((e,t)=>e.sequence-t.sequence).filter(e=>e.sequence>t).slice(0,r);return{data:o,nextCursor:o.length?o[o.length-1].sequence:null}}async function _m(e,t,n){await Dm(e);const a=cf(e,t),r=Cm.get(a);if(!r)throw new Ld(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Ld(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Ld(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Ld(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),Cm.delete(a);const s=Xm(e,r.messageId,{completedAt:new Date,metadataPatch:{decision:n.decision,resolvedAt:(new Date).toISOString(),result:n.result??i,status:"resolved"},status:"COMPLETED"});if(!s)throw new Ld(410,"Server request is no longer active.");return Af(e,"message.updated",s),s}async function Um(e,t){let n=await Dm(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Ld(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await th(n));const a=t.accountId??n.accountId;if(!a)throw new Ld(400,"Choose a Codex account before sending messages.");const r=await Om(a);if(!n.workingDirectory)throw new Ld(400,"Select a working directory before sending messages.");const i=vm(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Ld(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 Ld(400,"Attachment kind is invalid.");n.push(await sh(e,a))}else n.push(ih(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 Ld(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:wf(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await Qm(e);if("RUNNING"===m.status||"QUEUED"===m.status)return"steer"===t.delivery?async function({account:e,attachments:t,collaborationMode:n,content:a,messageContent:r,metadata:i,startedAt:s,threadId:o}){const d=Em.get(o);if(!d?.runtime)throw new Ld(409,"The active turn is not ready for steering yet.");const c=d.turnId??await fh(d.runtime,o);if(!c)throw new Ld(409,"The active turn has not published a turn id yet.");const l=await um(o),u=await Th(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=Lh(await async function(e,t,n,a){async function r(r){const i=yh(n,a),s=void 0===t.collaborationMode?[t]:[t,hh(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&&Ih(d))break;if(Nh(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 fh(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(d.runtime,{expectedTurnId:c,threadId:o,...Ch(n,u)},a,t))??c;const m=Jm(o,{completedAt:s,content:r,metadata:ch({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return Af(o,"chat.updated",await Dm(o)),Af(o,"message.created",m),{message:m,assistantMessage:null,runId:d.runId,status:"RUNNING",delivery:"steer",steered:!0}}({account:r,attachments:s,collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,startedAt:u,threadId:e,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,queuedAt:d,threadId:c,workingDirectory:l}){const u=jt(),m=Jm(c,{completedAt:d,content:i,metadata:ch({...s,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return Vm(c).queuedTurns.push({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,createdAt:d,id:u,messageId:m.id,metadata:s,permissionMode:o,workingDirectory:l}),Af(c,"chat.updated",await Dm(c)),Af(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await lh(n,dh(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=Jm(e,{completedAt:u,content:o,metadata:ch(t.metadata,s),role:"USER",status:"COMPLETED"});Af(e,"message.created",h);const f=await Zm({account:r,attachments:s,automaticTitleSeed:await lh(n,dh(t.content,s)),collaborationMode:c,content:t.content,metadata:t.metadata??{},permissionMode:l,requestedCollaborationMode:d,startedAt:u,threadId:e,workingDirectory:i});return{message:h,assistantMessage:f.assistantMessage,runId:f.runId,status:"QUEUED"}}function zm(e){const t=Em.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function Om(e){const t=await Yd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Ld(400,"Account not found.");if("CONNECTED"!==t.status)throw new Ld(400,"Authenticate the account before using this chat.");return t}async function jm(){const e=await xu(),t=new Map;for(const n of e)t.set(n.externalThreadId,Bm(n));return t}async function Fm(e){const t=await bu(e);return t?{createdAt:t.createdAt,firstUserMessage:t.firstUserMessage??null,preview:t.preview??null,threadId:e,title:t.title,updatedAt:t.updatedAt,workingDirectory:t.workingDirectory??null}:null}function Bm(e){return{createdAt:e.createdAt,firstUserMessage:e.firstUserMessage??null,preview:e.preview??null,threadId:e.externalThreadId,title:e.title,updatedAt:e.updatedAt,workingDirectory:e.workingDirectory??null}}async function Gm(e,t,n){const a=void 0===n?await Fm(e):n,r=Em.get(e),i=function(e){return{accountId:e?.accountId??null,autoRotateAccount:e?.autoRotateAccount??!1,collaborationMode:(t=e?.collaborationMode,"plan"===t?"plan":"default"),model:e?.model??null,permissionMode:fm(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),s=t?.createdAt??a?.createdAt??r?.updatedAt??new Date,o=r?.updatedAt??a?.updatedAt??t?.updatedAt??s,d=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=Nf(r??"");if(e&&!If(e))return e}return kf(n??"")??kf(t??"")??Rm}({preferenceTitle:t?.title,preview:a?.preview,seed:(c=r?.messages??[],[...c].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??a?.firstUserMessage??null),snapshotTitle:a?.title});var c;return{...i,id:e,externalThreadId:e,lastActivityAt:o,status:t?.archivedAt?"ARCHIVED":"RUNNING"===r?.status||"QUEUED"===r?.status?"RUNNING":"IDLE",title:d,workingDirectory:a?.workingDirectory??i.workingDirectory,createdAt:s,updatedAt:o}}function Hm(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function Km(e){return{kind:"codexTranscript",source:e.source}}function Wm(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=gc(e);return ff(t?.text)??ff(t?.content)??ff(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(vc(e.url)??vc(e.image_url)??vc(e.path)??vc(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function Qm(e){const t=Em.get(e);if(t)return t;const n=(await vu(e))?.messages.length??0,a={interruptRequested:!1,messageKeys:new Map,messages:[],nextSequence:n+1,permissionMode:"default",primed:!1,queuedTurns:[],status:"IDLE",threadId:e,updatedAt:new Date};return Em.set(e,a),a}function Vm(e){const t=Em.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function Jm(e,t){const n=Vm(e),a=new Date,r={chatId:e,completedAt:t.completedAt??null,content:t.content,createdAt:a,id:t.id??`runtime:${e}:${jt()}`,itemId:t.itemId??null,kind:t.kind??"CHAT",metadata:t.metadata?hf(t.metadata):null,rawPayload:t.rawPayload?hf(t.rawPayload):null,requestId:t.requestId??null,role:t.role,runId:t.runId??n.runId??null,sequence:n.nextSequence,status:t.status??"PENDING",turnId:t.turnId??null};return n.nextSequence+=1,n.updatedAt=a,n.messages.push(r),r}function Xm(e,t,n){const a=Em.get(e),r=a?.messages.findIndex(e=>e.id===t)??-1;if(!a||r<0)return null;const i=a.messages[r],s={...i,completedAt:n.completedAt??i.completedAt,content:n.content??i.content,metadata:void 0!==n.metadata?hf(n.metadata):n.metadataPatch?{...gc(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?hf(n.rawPayload):i.rawPayload,status:n.status??i.status,turnId:void 0===n.turnId?i.turnId:n.turnId};return a.messages[r]=s,a.updatedAt=new Date,s}function Ym(e){return e.replace(/\s+/g," ").trim()}async function Zm({account:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,metadata:i,permissionMode:s,requestedCollaborationMode:o,startedAt:d,threadId:c,workingDirectory:l}){const u=await Qm(c),m=`run:${c}:${jt()}`;u.accountId=e.id,u.interruptRequested=!1,u.permissionMode=s,u.runId=m,u.status="QUEUED",u.turnId=null,u.updatedAt=d,o&&await mm(c,{collaborationMode:o});const h=Jm(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return Af(c,"chat.updated",await Dm(c)),Af(c,"message.created",h),Af(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=Tm.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Tm.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),Tm.get(e)===i&&Tm.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=Vm(e),u=await um(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=Ef(a),f=l.primed&&l.accountId===a.id&&l.runtime===h;var p;l.permissionMode=m,l.runtime=h,l.status="RUNNING",l.updatedAt=new Date;const g=Xm(e,n,{status:"STREAMING"});g&&Af(e,"message.updated",g);Af(e,"chat.updated",await Dm(e)),Af(e,"run.status",{runId:t,status:"RUNNING"}),await gu(e,a.id);let v="";const w=new Map;let b,x=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=qh(e);if(t&&a&&a!==t)return!1;const r=_h(e);return!n||!r||r===n})(a,e,b)&&uh(t,()=>async function(e,t){const n=function(e){const t=ef(e);if(t){const e=gc(t.params),n=gc(t.info)??gc(e?.info)??e??t;return Zh(tf(n,["last_token_usage","lastTokenUsage"])??tf(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=gc(e.params),a=gc(n?.event),r=gc(n?.usage)??gc(a?.usage)??(Yh(e.method)?n:void 0);return r?Zh(r):null}(t);n&&Af(e.threadId,"context.updated",n);if(function(e){return!!ef(e)||Yh(e.method)}(t))return;if(function(e){const t=gc(e.params),n=gc(t?.payload)??gc(t?.event);return[e.method,vc(t?.type),vc(n?.type),vc(n?.event)].some(e=>Bh(e??"").includes("compact"))}(t))return void(await Mh({completedAt:new Date,content:Jh(t),itemId:`context-compaction:${_h(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Xh(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:_h(t)}));const a=t.method??"",r=gc(t.params),i=zh(t),s=Bh(vc(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=gc(e.params),n=gc(e.result),a=gc(t?.event);return Mf(t)??Mf(a)??Mf(n)}(t);return void(n&&await Rf(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=ff(r?.delta)??ff(gc(r?.event)?.delta);if(!n)return;const a=Uh(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Mh({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:vc(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:_h(t)});return void Af(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&Gh(s))return void(await Mh({content:"",fallbackMessageId:e.assistantMessageId,itemId:Uh(t),kind:"CHAT",metadata:{kind:"assistant",phase:vc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:_h(t)}));if("item/completed"===a&&Gh(s)){const n=function(e){if(!e)return"";const t=ff(e.text)??ff(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>ff(gc(e)?.text)??"").filter(Boolean).join("")}(i)||Dh(t);if(!n)return;const a=Uh(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Mh({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:vc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:_h(t)}))}if(a.startsWith("item/reasoning/")||Bh(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Uh(t)??`${n.toLowerCase()}:${_h(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 Mh({content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Hh(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:_h(t)})}(e,t,"THINKING",{content:jh(t,i),delta:Oh(t),metadata:{kind:"thinking",status:Wh(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=gc(t.params)??{},a="item/plan/delta"===t.method?Oh(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>gc(e)).filter(e=>!!e).map(e=>({status:vc(e.status)??"pending",step:vc(e.step)??""})).filter(e=>e.step),i=vc(n.explanation),s=_h(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Uh(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 Mh({content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=gc(t.params)??{},r=n??a,i=Uh(t)??`command:${_h(t)??"turn"}`,s=`COMMAND:${i}`,o=Oh(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:ff(r.output)??ff(r.aggregatedOutput)??ff(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=vc(r.command)??vc(a.command)??"command",l=Wh(r,t.method??"");await Mh({completedAt:Hh(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:uf(r.actions)??uf(r.commandActions),command:c,cwd:vc(r.cwd)??vc(a.cwd),durationMs:mf(r.durationMs)??mf(r.duration_ms),exitCode:mf(r.exitCode)??mf(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Hh(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:_h(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=gc(t.params)??{},r=n??a,i=Uh(t)??`file-change:${_h(t)??"turn"}`,s=Qh(r)??Qh(a),o=uf(r.changes)??uf(a.changes)??[],d=function(e,t){const n=[vc(e.path),vc(e.filePath),vc(e.file_path),...t.flatMap(e=>{const t=gc(e);return[vc(t?.path),vc(t?.filePath),vc(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Mh({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:mf(r.additions)??Vh(s,"+"),changes:o,deletions:mf(r.deletions)??Vh(s,"-"),diff:s,kind:"fileChange",paths:d,status:Wh(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Hh(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:_h(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=gc(t.params)??{},a=vc(n.requestId)??vc(n.id);if(!a)return;Cm.delete(cf(e,a));const r=Em.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=Xm(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:hf(n.result),status:"resolved"},status:"COMPLETED"});i&&Af(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=gc(t.params),a=vc(gc(n?.error)?.message)??vc(n?.message)??t.error?.message??"Codex runtime error.";await Mh({completedAt:new Date,content:a,itemId:`error:${_h(t)??Date.now()}`,kind:"ERROR",metadata:{details:hf(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:_h(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>Cf("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=gc(e.params),r=vc(a?.threadId);if(t&&r&&r!==t)return!1;const i=vc(a?.turnId);return!n||!i||i===n})(n,e,b)&&uh(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=gc(t.params)??{},r=Pc(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?Bh(e).includes("permissions")?"permissions":"approval":Bh(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:vc(n.message),method:e,mode:vc(n.mode),questions:rf(n.questions),raw:hf(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:uf(n.availableDecisions),changes:uf(n.changes),command:vc(n.command),cwd:vc(n.cwd),itemId:vc(n.itemId),kind:a,method:e,raw:hf(r),reason:vc(n.reason)??vc(n.message),requestId:t,requestKind:a,status:"pending",turnId:vc(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=df(i);return e.runtime.respondToServerRequest(t.id,n),void(await Mh({completedAt:new Date,content:of(s),itemId:vc(a.itemId),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:n,status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:vc(a.turnId)}))}const o=await Mh({content:of(s),itemId:vc(a.itemId),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",threadId:e.threadId,turnId:vc(a.turnId)});Cm.set(cf(e.threadId,r),{messageId:o.id,requestId:r,requestKind:i,rpcId:t.id,runtime:e.runtime,threadId:e.threadId})}({permissionMode:()=>l.permissionMode,runId:t,runtime:l.runtime,threadId:e},n)).catch(e=>Cf("Codex server request projection failed.",e))});try{if(!f&&await kh(l.runtime,e,o,d)!==e)throw new Error("Codex returned a different thread id while resuming.");!function({cwd:e,runtime:t,seed:n,threadId:a}){const r=n?.trim();if(!r)return;const i=kf(r);(async()=>{i&&await Sf(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=gc((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return Nf(vc(a?.name)??vc(a?.threadName)??vc(a?.thread_name)??vc(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await Sf(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await Th(l.runtime,u?.model??null,u?.reasoningEffort??null);y=new AbortController,N=l.runtime.waitForEvent(t=>function(e){const t=e.method??"";return"turn/completed"===t||"turn/failed"===t||"turn/interrupted"===t||"turn/cancelled"===t||"turn/canceled"===t||t.startsWith("turn/")&&(t.includes("completed")||t.includes("failed")||t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled"))}(t)&&qh(t)===e&&(!b||_h(t)===b),6e5,y.signal);const p=await async function(e,t,n,a){const r=yh(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,!Nh(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(l.runtime,{threadId:e,cwd:o,...u?.model?{model:u.model}:{},...u?.reasoningEffort?{effort:u.reasoningEffort}:{},...u?.serviceTier?{serviceTier:u.serviceTier}:{},...Ah(d,h,m),metadata:i},r,s);x=!0,b=Lh(p),l.primed=!1,l.turnId=b??null,b&&l.interruptRequested&&await mh(l.runtime,b,e);const g=await N;if(await async function(e){await(Sm.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new eh(Kh(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(Kh(g));const w=await async function(e,t,n){try{const a=gc((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return $h((Array.isArray(a?.data)?a.data:[]).map(e=>gc(e)).filter(e=>!!e).filter(e=>!n||vc(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,b)||Dh(g)||Dh(p)||v,I=new Date,k=Xm(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:b??null});Rh(e,t,"COMPLETED"),Ph(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return Em.get(e)?.messages.some(e=>{if(e.runId!==t)return!1;const n=e.content.trim();return!(!n||"Planning..."===n)&&("CHAT"===e.kind&&"ASSISTANT"===e.role?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(n):"PLAN"===e.kind&&"result"===gc(e.metadata)?.presentation)})??!1}(e,t)&&await mm(e,{collaborationMode:"default"}),Af(e,"chat.updated",await Dm(e)),k&&Af(e,"message.completed",k),Af(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=Mf((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=gc((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Mf((lf(n?.data)??lf(n?.items)??lf(n?.threads)??[]).find(e=>vc(e.id)===t))}catch{return null}}(e,t);n&&await Rf(t,n)}(Ef(a),e),await gu(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!x;Ph(e,t,a);const i=new Date;if(A instanceof eh){Rh(e,t,"COMPLETED");const s=Xm(e,n,{completedAt:i,content:v,metadataPatch:{interrupted:!0,kind:"assistant"},status:"COMPLETED"});return l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Af(e,"chat.updated",await Dm(e)),s&&Af(e,"message.completed",s),void Af(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}Rh(e,t,"FAILED");const s=Xm(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Af(e,"chat.updated",await Dm(e)),s&&Af(e,"message.failed",{...s,error:a}),Af(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),Sm.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(Mm.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=Em.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await Om((await th(await Dm(e))).accountId??n.accountId),a=new Date,r=await Zm({account:t,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:n.permissionMode,startedAt:a,threadId:e,workingDirectory:n.workingDirectory}),i=Xm(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&Af(e,"message.updated",i)}catch(A){const a=Xm(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&Af(e,"message.updated",a)}}(e)).catch(()=>{});Mm.set(e,t),t.finally(()=>{Mm.get(e)===t&&Mm.delete(e)})}(e):function(e){th(async function(e){try{return await Dm(e)}catch{return null}}(e)).catch(e=>{console.warn("Failed to auto rotate idle chat account.",e instanceof Error?e.message:e)})}(e)}}(e,t,n,a,r,i,s,o,d,c))}(c,m,h.id,e,r,i,t,l,a,n),{assistantMessage:h,runId:m}}var eh=class extends Error{};async function th(e){const t=await e;if(!t)throw new Ld(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||Em.get(t.id)?.primed)return t;const n=await Yd.codexAccount.findMany({orderBy:{createdAt:"asc"},where:{status:"CONNECTED"}});if(!n.length)return t;const a=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:gr(await Cc({accountId:e.id,args:Tf(e.args),command:e.command,environment:wc(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(n),r=n.find(e=>e.id===t.accountId),i=r?nh(a.get(r.id)):-1;if(r&&i>=0)return t;const s=function(e,t){return e.map((e,n)=>({account:e,index:n,score:nh(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(n,a);if(!s||s.id===t.accountId)return t;if(nh(a.get(s.id))<0)return t;const o=await mm(t.id,{accountId:s.id});gu(t.id,s.id).catch(()=>{});const d=await Gm(t.id,o);return Af(t.id,"chat.updated",d),d}function nh(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?ah(e.secondary)?"weekly":ah(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-rh(e.usedPercent));return t.length?Math.min(...t):0}function ah(e){return rh(e?.usedPercent??0)>=100}function rh(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function ih(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 Ld(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 Ld(400,"Image attachments must be 6 MB or smaller.");const s=oh(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:jt(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function sh(e,t){const n=await async function(e,t){return km(await Im(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:jt(),kind:"file",name:oh(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function oh(e,t){const n=e?.trim();return(n?mn(n):t).slice(0,160)||"attachment"}function dh(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}function ch(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function lh(e,t){if(!If(e.title))return null;const n=t.trim();return n||null}function uh(e,t){const n=(Sm.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return Sm.set(e,a),a.finally(()=>{Sm.get(e)===a&&Sm.delete(e)}),n}async function mh(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 hh(e,t){const n={...e};return delete n[t],n}async function fh(e,t){for(let n=0;n<3;n+=1){const a=await ph(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 ph(e,t){try{const n=gc((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return gh(lf(n?.data)??lf(n?.items)??lf(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 gh(lf(gc(gc(n.result)?.thread)?.turns)??[],!1)}function gh(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>wh(vh(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!xh(bh(i)))continue;const e=wh(vh(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function vh(e){return vc(e.id)??vc(e.turnId)??vc(e.turn_id)??null}function wh(e){const t=e?.trim();return t||null}function bh(e){return(vc(e.status)??vc(e.turnStatus)??vc(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function xh(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function yh(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={text:n,text_elements:[],type:"text"},s=(e,t)=>[i,...a.map(t=>({[e]:t.message.url,type:"image"})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function Nh(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 Ih(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}async function kh(e,t,n,a){const r=t?"thread/resume":"thread/start",i=gc((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=vc(gc(i?.thread)?.id)??vc(i?.threadId)??vc(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function Ah(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Eh(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Ch(e,t=null){return"plan"!==e?{}:{collaborationMode:Eh(e,t)}}function Eh(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Th(e,t,n){const a=xf(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=gc(gc((await e.request("config/read",{},3e4)).result)?.config),n=xf(vc(t?.model));if(r=r??yf(t?.model_reasoning_effort)??yf(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=gc((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=gc(e),n=xf(vc(t?.id))??xf(vc(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function Mh(e){return async function(e,t){if(!e)return t();const n=Pm.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Pm.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Pm.get(e)===i&&Pm.delete(e)}}(Sh(e),async()=>{const t=Vm(e.threadId),n=function(e,t){const n=Sh(t),a=n?e.messageKeys.get(n):null;return a?e.messages.find(e=>e.id===a)??null:t.requestId?e.messages.find(e=>e.requestId===t.requestId)??null:t.itemId?e.messages.find(e=>e.itemId===t.itemId&&e.kind===t.kind)??null:t.fallbackMessageId?e.messages.find(e=>e.id===t.fallbackMessageId)??null:null}(t,e),a=n?Xm(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):Jm(e.threadId,{completedAt:e.completedAt,content:e.content,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId}),r=Sh(e);return r&&t.messageKeys.set(r,a.id),Af(e.threadId,n?"message.updated":"message.created",a),a})}function Sh(e){return e.requestId?`${e.threadId}:request:${e.requestId}`:e.itemId?`${e.threadId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.threadId}:fallback:${e.fallbackMessageId}`:null}function Ph(e,t,n){const a=Em.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status||"APPROVAL"!==r.kind&&"USER_INPUT_PROMPT"!==r.kind)continue;if(r.requestId){const t=cf(e,r.requestId),a=Cm.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),Cm.delete(t)}const a=Xm(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&Af(e,"message.updated",a)}}function Rh(e,t,n){const a=Em.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status&&"STREAMING"!==r.status||!["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"].includes(r.kind))continue;const a=Xm(e,r.id,{completedAt:new Date,status:n});a&&Af(e,"message.updated",a)}}function Dh(e){const t=gc(e.result),n=gc(e.params),a=gc(n?.payload)??n??t;return $h(gc(n?.turn)??gc(t?.turn))??ff(t?.text)??ff(t?.content)??ff(a?.text)??ff(a?.content)??ff(a?.delta)??ff(a?.message)??""}function Lh(e){const t=gc(e.result),n=gc(e.params);return vc(t?.turnId)??vc(t?.turn_id)??vc(n?.turnId)??vc(n?.turn_id)??vc(gc(t?.turn)?.id)??vc(gc(n?.turn)?.id)}function $h(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=gc(e);return"agentMessage"!==t?.type?null:ff(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function qh(e){const t=gc(e.params),n=gc(e.result),a=gc(t?.event);return vc(t?.threadId)??vc(t?.thread_id)??vc(n?.threadId)??vc(n?.thread_id)??vc(a?.threadId)??vc(a?.thread_id)}function _h(e){const t=gc(e.params),n=gc(e.result),a=zh(e);return vc(t?.turnId)??vc(n?.turnId)??vc(a?.turnId)??Lh(e)}function Uh(e){const t=gc(e.params),n=gc(e.result),a=zh(e);return vc(t?.itemId)??vc(n?.itemId)??vc(a?.id)}function zh(e){const t=gc(e.params),n=gc(e.result),a=gc(t?.payload);return gc(t?.item)??gc(n?.item)??gc(a?.item)}function Oh(e){const t=gc(e.params),n=gc(t?.event);return ff(t?.delta)??ff(t?.text)??ff(t?.output)??ff(n?.delta)??ff(n?.text)}function jh(e,t){const n=gc(e.params),a=gc(e.result);return[t,n,gc(n?.event),gc(n?.payload),a].map(Fh).find(e=>!!e?.trim())}function Fh(e){if(e)return ff(e.reasoning)??ff(e.reasoningText)??ff(e.reasoning_text)??ff(e.summary)??Wm(e.summary)??Wm(e.content)??ff(e.text)??ff(e.output)}function Bh(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Gh(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Hh(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Kh(e){const t=gc(e.params);return vc(gc(t?.error)?.message)??vc(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Wh(e,t){const n=vc(e?.status);return n?Bh(n):t.includes("failed")||t.includes("error")?"failed":Hh({method:t})?"completed":"running"}function Qh(e){return ff(e.diff)??ff(e.unifiedDiff)??ff(e.unified_diff)??ff(e.patch)}function Vh(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Jh(e){const t=Bh(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Xh(e){return Bh(e.method??"").includes("start")}function Yh(e){const t=Bh(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Zh(e,t=e){const n=nf(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=nf(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=nf(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}([nf(e,["input_tokens","inputTokens"]),nf(e,["output_tokens","outputTokens"]),nf(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,i-d),l=Math.max(0,Math.min(100,Math.round(d/i*100)));return{remainingPercent:Math.max(0,100-l),tokenLimit:i,tokensRemaining:c,tokensUsed:d,usedPercent:l}}function ef(e,t=0){if(t>4)return;const n=gc(e);if(!n)return;const a=Bh(vc(n.type)??""),r=Bh(vc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=ef(n[i],t+1);if(e)return e}}function tf(e,t){for(const n of t){const t=gc(e[n]);if(t)return t}}function nf(e,t){for(const n of t){const t=af(e[n]);if(void 0!==t)return t}}function af(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 rf(e){return Array.isArray(e)?e.map(e=>gc(e)).filter(e=>!!e).map(e=>({header:vc(e.header),id:vc(e.id)??jt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:sf(e.options),question:vc(e.question)??vc(e.header)??"Answer",selectionLimit:mf(e.selectionLimit)??mf(e.selection_limit)})):[]}function sf(e){return Array.isArray(e)?e.map(e=>gc(e)).filter(e=>!!e).map(e=>({description:vc(e.description),label:vc(e.label)??vc(e.value)??""})).filter(e=>e.label):[]}function of(e){return"userInput"===e.kind?vc(e.message)??"Codex needs more information before it can continue.":vc(e.reason)??vc(e.command)??"Codex needs approval before it can continue."}function df(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function cf(e,t){return`${e}:${t}`}function lf(e){return Array.isArray(e)?e.map(e=>gc(e)).filter(e=>!!e):null}function uf(e){if(Array.isArray(e))return e.map(hf)}function mf(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function hf(e){return JSON.parse(JSON.stringify(e))}function ff(e){return"string"==typeof e&&e.length>0?e:void 0}function pf(e){if(null===e)return null;const t=e.trim();if(!t)throw new Ld(400,"Runtime option cannot be empty.");return t}function gf(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Ld(400,"reasoningEffort is invalid.");return e}function vf(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Ld(400,"serviceTier is invalid.")}function wf(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Ld(400,"collaborationMode is invalid.")}function bf(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Ld(400,"permissionMode is invalid.")}function xf(e){const t=e?.trim();return t||null}function yf(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function Nf(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function If(e){const t=function(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}function kf(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 Af(e,t,n){om(e,t,n)}function Cf(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function Ef(e){return xc.getRuntime({accountId:e.id,args:Tf(e.args),command:e.command,environment:wc(e.environment),workingDirectory:null})}function Tf(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Mf(e){const t=gc(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=Nf(vc(i)??"");if(e)return e}const a=Nf(vc(t.title)??"");if(a&&!If(a))return a;const r=gc(t.thread);return r?Mf(r):null}async function Sf(e,t,n){const a=Nf(n);if(!a||If(a))return!1;const r=await um(t);return!(r?.title&&!If(r.title))&&(await Rf(t,a),Pf(e,t,a),!0)}async function Pf(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function Rf(e,t){const n=Nf(t);n&&!If(n)&&Af(e,"chat.updated",await Gm(e,await mm(e,{title:n})))}var Df=Ln({action:()=>$f,loader:()=>Lf});async function Lf({request:e}){try{return _d(e,["GET"]),await nc(e),$d(await async function(){const[e,t]=await Promise.all([lm(),jm()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...Em.keys()]);return(await Promise.all([...a].map(e=>Gm(e,n.get(e)??null,t.get(e)??null)))).filter(e=>"ARCHIVED"!==e.status).sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()||new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}())}catch(t){return Hd(t)}}async function $f({request:e}){try{_d(e,["POST"]),await nc(e);const t=await Ud(e);return $d(await async function(e){const t=await Om(e.accountId),n=vm(e.workingDirectory),a=void 0===e.collaborationMode?"default":wf(e.collaborationMode),r=void 0===e.permissionMode?"default":bf(e.permissionMode),i=Ef(t),s=await kh(i,null,n),o=await mm(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:pf(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:gf(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:vf(e.serviceTier),title:Nf(e.title??"")??null,workingDirectory:n}),d=await Qm(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await Gm(s,o);return Af(s,"chat.updated",c),c}({accountId:zd(t.accountId,"accountId",{required:!0}),autoRotateAccount:jd(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:zd(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:zd(t.model,"model",{maxLength:160}),reasoningEffort:qf(t.reasoningEffort,"reasoningEffort"),serviceTier:qf(t.serviceTier,"serviceTier"),collaborationMode:qf(t.collaborationMode,"collaborationMode"),permissionMode:qf(t.permissionMode,"permissionMode"),title:zd(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Hd(t)}}function qf(e,t){return null===e?null:zd(e,t,{maxLength:80})}var _f=Ln({action:()=>zf,loader:()=>Uf});async function Uf({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await Dm(Gd(t,"chatId")))}catch(n){return Hd(n)}}async function zf({request:e,params:t}){try{await nc(e);const n=Gd(t,"chatId");if("PATCH"===e.method){const t=await Ud(e);return $d(await Lm(n,{accountId:zd(t.accountId,"accountId"),autoRotateAccount:jd(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:zd(t.model,"model",{maxLength:160}),reasoningEffort:Of(t.reasoningEffort,"reasoningEffort"),serviceTier:Of(t.serviceTier,"serviceTier"),collaborationMode:Of(t.collaborationMode,"collaborationMode"),permissionMode:Of(t.permissionMode,"permissionMode"),title:zd(t.title,"title",{maxLength:160}),workingDirectory:zd(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return $d(await $m(n));qd(e.method)}catch(n){return Hd(n)}}function Of(e,t){return null===e?null:zd(e,t,{maxLength:80})}var jf=Ln({loader:()=>Ff});async function Ff({request:e,params:t}){try{return _d(e,["GET"]),await nc(e),$d(await async function(e){return await Dm(e),{usage:await wu(e)}}(Gd(t,"chatId")))}catch(n){return Hd(n)}}var Bf=Ln({loader:()=>Gf});async function Gf({request:e,params:t}){try{_d(e,["GET"]),await nc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Ld(400,"path is required.");return $d(await Nm(Gd(t,"chatId"),a,Bd(n,"line",0)||null))}catch(n){return Hd(n)}}var Hf=In(xn);async function Kf(e){const t=await Qf(e),n=await Vf(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await Jf(t.cwd),r=await Xf(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 Xf(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Yf(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 Wf(e,t){const n=await Qf(e);if("RUNNING"===n.status)throw new Ld(409,"Git actions are disabled while Codex is running.");if(!(await Vf(n.cwd)))throw new Ld(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Zf(t.branch);a=await Yf(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Zf(t.branch);await Yf(n.cwd,["check-ref-format","--branch",e]),a=await Yf(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Ld(400,"Commit message is required.");await Yf(n.cwd,["add","-A"]),a=await Yf(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Yf(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Ld(400,"Unsupported git action.");a=await Xf(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Yf(n.cwd,["push"]):await async function(e){await Yf(e,["remote","get-url","origin"]);const t=await Jf(e);if(!t)throw new Ld(400,"Cannot push while detached from a branch.");return Yf(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:tp(t.action),output:a,status:await Kf(e)}}async function Qf(e){const t=await hm(e);if(!t)throw new Ld(400,"Chat does not have a working directory.");return{cwd:vm(t),status:zm(e)}}async function Vf(e){return Xf(e,["rev-parse","--show-toplevel"])}async function Jf(e){return await Xf(e,["symbolic-ref","--quiet","--short","HEAD"])??await Xf(e,["rev-parse","--short","HEAD"])}async function Xf(e,t){try{return await Yf(e,t)}catch{return null}}async function Yf(e,t){try{const n=await Hf("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return ep(n.stdout,n.stderr)}catch(n){throw new Ld(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return ep("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 Zf(e){const t=e?.trim();if(!t)throw new Ld(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Ld(400,"Branch name is invalid.");return t}function ep(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function tp(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 np({request:e,params:t}){try{_d(e,["GET"]),await nc(e);const n=Gd(t,"chatId"),a=Gd(t,"operation"),r=new URL(e.url);if("status"===a)return $d(await Kf(n));if("branches"===a)return $d(await async function(e){const t=await Qf(e);if(!(await Vf(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Jf(t.cwd);return{branches:(await Yf(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 Xf(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return $d(await async function(e,t){const n=await Qf(e);if(!(await Vf(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=ep(await Xf(n.cwd,["diff","--stat",...a]),await Xf(n.cwd,["diff","--cached","--stat",...a]));return{diff:ep(await Xf(n.cwd,["diff","--no-ext-diff",...a]),await Xf(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return $d(await async function(e){const t=await Qf(e);return await Vf(t.cwd)?{commits:(n=await Xf(t.cwd,["log","--max-count=80","--date=iso-strict","--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%aI%x1f%D%x1f%s%x1e","--decorate=short","--all"])??"",n.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t,n,a,r,i,s,...o]=e.split("");return t&&n?{authorEmail:r??"",authorName:a??"",authoredAt:i??"",hash:t,refs:(s??"").split(",").map(e=>e.trim()).filter(Boolean),shortHash:n,subject:o.join("")||"(no subject)"}:null}).filter(e=>!!e)),isRepo:!0}:{commits:[],isRepo:!1};var n}(n));throw new Ld(404,"Git operation not found.")}catch(n){return Hd(n)}}async function ap({request:e,params:t}){try{if(_d(e,["POST"]),await nc(e),"action"!==Gd(t,"operation"))throw new Ld(404,"Git operation not found.");const n=await Ud(e),a={action:rp(n.action),branch:zd(n.branch,"branch",{maxLength:240}),message:zd(n.message,"message",{maxLength:5e3})};return $d(await Wf(Gd(t,"chatId"),a))}catch(n){return Hd(n)}}function rp(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Ld(400,"action is invalid.")}async function ip({request:e,params:t}){try{_d(e,["GET"]),await nc(e);const n=new URL(e.url);return $d(await qm(Gd(t,"chatId"),Bd(n,"afterSequence",0),Bd(n,"limit",50)))}catch(n){return Hd(n)}}async function sp({request:e,params:t}){try{_d(e,["POST"]),await nc(e);const n=await Ud(e),a={content:dp(n.content),accountId:zd(n.accountId,"accountId"),attachments:cp(n.attachments),collaborationMode:hp(n.collaborationMode,"collaborationMode"),delivery:op(n.delivery),metadata:Fd(n.metadata,"metadata")};return $d(await Um(Gd(t,"chatId"),a),{status:201})}catch(n){return Hd(n)}}function op(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Ld(400,"delivery is invalid.")}}function dp(e){if(null==e)return"";if("string"!=typeof e)throw new Ld(400,"content must be a string.");if(e.length>4e4)throw new Ld(400,"content must be 40000 characters or fewer.");return e.trim()}function cp(e){if(void 0!==e){if(!Array.isArray(e))throw new Ld(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Ld(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:lp(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:up(n.mimeType,`attachments[${t}].mimeType`,80),name:up(n.name,`attachments[${t}].name`,160),size:mp(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:up(n.name,`attachments[${t}].name`,160),path:lp(n.path,`attachments[${t}].path`,4096),size:mp(n.size,`attachments[${t}].size`)};throw new Ld(400,`attachments[${t}].kind is invalid.`)})}}function lp(e,t,n){if("string"!=typeof e||!e.trim())throw new Ld(400,`${t} is required.`);if(e.length>n)throw new Ld(400,`${t} is too large.`);return e}function up(e,t,n){if(null!=e){if("string"!=typeof e)throw new Ld(400,`${t} must be a string.`);if(e.length>n)throw new Ld(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function mp(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Ld(400,`${t} must be a positive number.`);return e}}function hp(e,t){return null===e?null:zd(e,t,{maxLength:80})}async function fp({request:e,params:t}){try{return _d(e,["POST"]),await nc(e),$d(await async function(e){if("RUNNING"!==(await Dm(e)).status)throw new Ld(409,"There is no running task to stop.");const t=Em.get(e);if(!t?.runId)throw new Ld(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await mh(t.runtime,t.turnId,e),{chatId:e,runId:t.runId,status:"RUNNING"===t.status?"RUNNING":"QUEUED",message:t.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(Gd(t,"chatId")))}catch(n){return Hd(n)}}async function pp({request:e,params:t}){try{_d(e,["POST"]),await nc(e);const n=await Ud(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Ld(400,"kind must be approval, permissions, or userInput.")}(n.kind);return $d(await _m(Gd(t,"chatId"),Gd(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Hd(n)}}async function gp({request:e}){try{return _d(e,["GET"]),await nc(e),$d(await pm(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Hd(t)}}async function vp({request:e}){try{_d(e,["POST"]),await nc(e);const t=await Ud(e),n={parentPath:zd(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:zd(t.name,"name",{required:!0,maxLength:255})};return $d(await gm(n.parentPath,n.name),{status:201})}catch(t){return Hd(t)}}var wp={entry:{module:"/assets/entry.client-CYz-BGHO.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/react-dom-CRV9fQsS.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-BlJIezBz.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/react-dom-CRV9fQsS.js","/assets/document-title-nRpNLh53.js","/assets/session-provider-DZhkiIfn.js"],css:["/assets/root-C6ZJNFQd.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-CHSWDRRR.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/label-DBag4yRW.js","/assets/session-provider-DZhkiIfn.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-CN81j437.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/app-shell-bZjdLund.js","/assets/label-DBag4yRW.js","/assets/document-title-nRpNLh53.js","/assets/session-provider-DZhkiIfn.js","/assets/react-dom-CRV9fQsS.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-DtJ52lyi.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/app-shell-bZjdLund.js","/assets/label-DBag4yRW.js","/assets/document-title-nRpNLh53.js","/assets/session-provider-DZhkiIfn.js","/assets/react-dom-CRV9fQsS.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-B7RLVuco.js",imports:["/assets/jsx-runtime-DhlB8LRe.js","/assets/app-shell-bZjdLund.js","/assets/label-DBag4yRW.js","/assets/document-title-nRpNLh53.js","/assets/session-provider-DZhkiIfn.js","/assets/react-dom-CRV9fQsS.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.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.login-callback-port-TLptuOkA.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-BixDYyx8.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-6XNKTx--.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.personalization-Bd_x2nBr.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-C3bayFCR.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-BrKCZxhm.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-Cgza4mTm.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-jKtCcEgm.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-BUn9r-0x.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-BTgyeBLZ.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-BgV2drn2.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-DGXv9z2x.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-DggKbqHL.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-kk2to-gt.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-DkImed4M.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-BCMnFuvx.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-Bz0K1WZo.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-3f1dd8c7.js",version:"3f1dd8c7",sri:void 0},bp="build/client",xp="/",yp={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},Np=!0,Ip=!1,kp=[],Ap={mode:"lazy",manifestPath:"/__manifest"},Cp="/",Ep={module:$n},Tp={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:xa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ra},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:La},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:Td},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Sd},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Rd},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Kd},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:lc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:mc},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:fc},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:Al},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Ml},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Pl},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,module:jl},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Gl},"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:Wl},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,module:Jl},"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:iu},"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:ou},"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:cu},"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:uu},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Df},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:_f},"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:jf},"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:Bf},"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:Ln({action:()=>ap,loader:()=>np})},"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:Ln({action:()=>sp,loader:()=>ip})},"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:Ln({action:()=>fp})},"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:Ln({action:()=>pp})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:Ln({action:()=>vp,loader:()=>gp})}},Mp=!1;export{Mp as allowedActionOrigins,wp as assets,bp as assetsBuildDirectory,xp as basename,Ep as entry,yp as future,Ip as isSpaMode,kp as prerender,Cp as publicPath,Ap as routeDiscovery,Tp as routes,Np as ssr};
|
|
1
|
+
import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useLocation as h,useNavigate as f,useOutletContext as p,useParams as g}from"react-router";import{isbot as v}from"isbot";import{renderToPipeableStream as w}from"react-dom/server";import{Fragment as b,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as N,QueryClientProvider as I,useMutation as k,useQueries as A,useQuery as C,useQueryClient as E}from"@tanstack/react-query";import{ThemeProvider as M,useTheme as T}from"next-themes";import*as S from"react";import{createContext as P,useCallback as D,useContext as L,useEffect as R,useMemo as $,useRef as q,useState as _,useSyncExternalStore as U}from"react";import{Toaster as z,toast as O}from"sonner";import{AlertTriangle as j,Archive as F,ArrowLeft as B,ArrowRight as G,ArrowUp as H,Brain as K,Check as W,CheckCircle2 as Q,CheckIcon as V,ChevronDown as J,ChevronRight as X,ChevronRightIcon as Y,CircleAlert as Z,CircleCheckIcon as ee,Clock as te,Code2 as ne,Copy as ae,Cpu as re,Download as ie,ExternalLink as se,Eye as oe,EyeOff as de,File as ce,FileCode as le,FileDiff as ue,Folder as me,FolderOpen as he,FolderPlus as fe,Gauge as pe,GitBranch as ge,GitCommitHorizontal as ve,Home as we,Image as be,Import as xe,Info as ye,InfoIcon as Ne,KeyRound as Ie,Laptop as ke,ListChecks as Ae,Loader2 as Ce,Loader2Icon as Ee,LockKeyhole as Me,Mail as Te,Menu as Se,MessageSquare as Pe,Moon as De,MoreHorizontal as Le,MoreVertical as Re,OctagonXIcon as $e,PanelLeftIcon as qe,Paperclip as _e,Pencil as Ue,PencilLine as ze,PlugZap as Oe,Plus as je,PowerOff as Fe,RefreshCw as Be,RotateCcw as Ge,RotateCw as He,Save as Ke,Search as We,Settings as Qe,Shield as Ve,ShieldCheck as Je,Square as Xe,SquarePen as Ye,Sun as Ze,Terminal as et,Trash2 as tt,TriangleAlertIcon as nt,Upload as at,UserRound as rt,X as it,XIcon as st,Zap as ot}from"lucide-react";import{Tooltip as dt}from"@base-ui/react/tooltip";import{clsx as ct}from"clsx";import{twMerge as lt}from"tailwind-merge";import{Button as ut}from"@base-ui/react/button";import{cva as mt}from"class-variance-authority";import{Input as ht}from"@base-ui/react/input";import{AlertDialog as ft}from"@base-ui/react/alert-dialog";import{mergeProps as pt}from"@base-ui/react/merge-props";import{useRender as gt}from"@base-ui/react/use-render";import{Dialog as vt}from"@base-ui/react/dialog";import{Menu as wt}from"@base-ui/react/menu";import{ScrollArea as bt}from"@base-ui/react/scroll-area";import{Separator as xt}from"@base-ui/react/separator";import{io as yt}from"socket.io-client";import Nt from"react-markdown";import It from"remark-gfm";import kt from"highlight.js/lib/core";import At from"highlight.js/lib/languages/bash";import Ct from"highlight.js/lib/languages/css";import Et from"highlight.js/lib/languages/go";import Mt from"highlight.js/lib/languages/json";import Tt from"highlight.js/lib/languages/javascript";import St from"highlight.js/lib/languages/markdown";import Pt from"highlight.js/lib/languages/python";import Dt from"highlight.js/lib/languages/rust";import Lt from"highlight.js/lib/languages/shell";import Rt from"highlight.js/lib/languages/sql";import $t from"highlight.js/lib/languages/typescript";import qt from"highlight.js/lib/languages/xml";import _t from"highlight.js/lib/languages/yaml";import{Popover as Ut}from"@base-ui/react/popover";import{Switch as zt}from"@base-ui/react/switch";import"dotenv/config";import{createHash as Ot,createHmac as jt,randomBytes as Ft,randomUUID as Bt,scryptSync as Gt,timingSafeEqual as Ht}from"node:crypto";import{Prisma as Kt,PrismaClient as Wt}from"@prisma/client";import{appendFileSync as Qt,chmodSync as Vt,closeSync as Jt,constants as Xt,copyFileSync as Yt,existsSync as Zt,lstatSync as en,mkdirSync as tn,openSync as nn,readFileSync as an,readdirSync as rn,readlinkSync as sn,realpathSync as on,renameSync as dn,rmSync as cn,statSync as ln,symlinkSync as un,writeFileSync as mn}from"node:fs";import{homedir as hn}from"node:os";import{basename as fn,dirname as pn,extname as gn,isAbsolute as vn,join as wn,relative as bn,resolve as xn,sep as yn}from"node:path";import{execFile as Nn,spawn as In}from"node:child_process";import{createServer as kn}from"node:net";import{promisify as An}from"node:util";import{access as Cn,appendFile as En,copyFile as Mn,mkdir as Tn,open as Sn,readFile as Pn,readdir as Dn,realpath as Ln,stat as Rn}from"node:fs/promises";var $n=Object.defineProperty,qn=(e,t)=>{let n={};for(var a in e)$n(n,a,{get:e[a],enumerable:!0});return t||$n(n,Symbol.toStringTag,{value:"Module"}),n},_n=qn({default:()=>zn,streamTimeout:()=>Un}),Un=5e3;function zn(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&v(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Un+1e3);const{pipe:h,abort:f}=w(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var On=({...e})=>{const{theme:t="system"}=T();return x(z,{theme:t,className:"toaster group",icons:{success:x(ee,{className:"size-4"}),info:x(Ne,{className:"size-4"}),warning:x(nt,{className:"size-4"}),error:x($e,{className:"size-4"}),loading:x(Ee,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function jn(...e){return lt(ct(e))}function Fn({delay:e=0,...t}){return x(dt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Bn({...e}){return x(dt.Root,{"data-slot":"tooltip",...e})}function Gn({...e}){return x(dt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Hn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(dt.Portal,{children:x(dt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(dt.Popup,{"data-slot":"tooltip-content",className:jn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(dt.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var Kn="xedoc";function Wn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Kn}`:Kn}(e);R(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Kn}},[t])}var Qn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Vn=class extends Error{request;constructor(e,t){super(function(e,t){const n=t instanceof Error?t.message:String(t);return["No HTTP response received.",`${e.method} ${e.url}`,n,"Check the server URL, CORS settings, network reachability, and whether the API is running."].filter(Boolean).join("\n")}(e,t)),this.request=e}};async function Jn(e){return ia(e.serverUrl,"/api/auth/session",{token:e.token})}async function Xn(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Yn(e,t,n={}){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Zn(e,t){return ia(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function ea(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return ia(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function ta(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function na(e,t,n){return ia(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function aa(e,t,n=0){return ia(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function ra(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function ia(e,t,n){const a=`${e}${t}`,r=n.method??(void 0===n.body?"GET":"POST");let i;try{i=await fetch(a,{method:r,headers:{Accept:"application/json",...void 0===n.body?{}:{"Content-Type":"application/json"},...n.token?{Authorization:`Bearer ${n.token}`}:{}},body:void 0===n.body?void 0:JSON.stringify(n.body)})}catch(d){throw new Vn({method:r,url:a},d)}const s=await i.text(),o=function(e,t){if(!e)return null;try{return JSON.parse(e)}catch(d){throw new Error(["Server returned invalid JSON.",t,d instanceof Error?d.message:void 0,sa(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Qn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,oa(o)??sa(s)].filter(Boolean).join("\n"),i.status,a);return o}function sa(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function oa(e){if(!e||"object"!=typeof e)return;const t=e.message;return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:void 0}function da(e,t){return{data:[...(e?.data??[]).filter(e=>e.id!==t.id),t].sort((e,t)=>e.sequence-t.sequence),nextCursor:Math.max(t.sequence,e?.nextCursor??0)}}var ca={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function la(){const e=ua();e&&(fa(e,"serverUrl"),fa(e,"token"))}function ua(){return"undefined"==typeof window?null:window.localStorage}function ma(e,t){return e.getItem(ca[t])}function ha(e,t,n){e.setItem(ca[t],n)}function fa(e,t){e.removeItem(ca[t])}function pa(e){const t=e.trim();if(!t)throw new Error("Enter a server URL.");const n=/^[a-z][a-z\d+\-.]*:\/\//i.test(t)?t:`http://${t}`,a=new URL(n);return a.pathname=a.pathname.replace(/\/+$/,""),a.search="",a.hash="",a.toString().replace(/\/+$/,"")}var ga=P(void 0);function va({children:e}){const[t,n]=_(null),[a,r]=_(!1),i=U(ba,xa,ya),s=t,o=!i||!a;R(()=>{if(!i)return;const e=function(){const e=ua();if(!e)return null;const t=ma(e,"serverUrl"),n=ma(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Jn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{la(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=D(async e=>{const t=pa(window.location.origin),{token:a}=await async function(e,t){return ia(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=ua();t&&(ha(t,"serverUrl",e.serverUrl),ha(t,"token",e.token))}(i),n(i),r(!0)},[]),c=D(async()=>{s&&await Jn(s)},[s]),l=D(()=>{la(),n(null),r(!0)},[]),u=$(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ga.Provider,{value:u,children:e})}function wa(){const e=L(ga);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ba(){return()=>{}}function xa(){return!0}function ya(){return!1}var Na=qn({ErrorBoundary:()=>Ea,Layout:()=>Aa,default:()=>Ca,links:()=>ka,meta:()=>Ia});function Ia(){return[{title:Kn}]}function ka(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function Aa({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var Ca=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(M,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:x(I,{client:e,children:y(Fn,{children:[x(va,{children:x(i,{})}),x(On,{richColors:!0})]})})})}),Ea=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),Ma=mt("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function Ta({className:e,variant:t="default",size:n="default",...a}){return x(ut,{"data-slot":"button",className:jn(Ma({variant:t,size:n,className:e})),...a})}function Sa({className:e,type:t,...n}){return x(ht,{type:t,"data-slot":"input",className:jn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function Pa({className:e,...t}){return x("label",{"data-slot":"label",className:jn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Da(){const[e,t]=_(""),[n,a]=_(""),[i,s]=_(null),[o,d]=_(null),[c,l]=_(!1),{loading:u,session:m,setup:h}=wa(),p=f(),g=!1===i;if(R(()=>{let e=!0;return d(null),async function(e){return ia(e,"/api/auth/status",{token:null})}(pa(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await h(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?Ie:Oe,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password",children:"Server password"}),x(Sa,{id:"server-password",autoComplete:g?"new-password":"current-password",placeholder:"Password",type:"password",value:e,onChange:e=>t(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(Sa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(Ta,{disabled:!La(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ce,{className:"animate-spin"}):x(g?Ie:Oe,{}),g?"Set Password":"Connect"]})]})]})})}function La(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ra=qn({default:()=>$a}),$a=c(function(){return x(Da,{})}),qa=qn({loader:()=>_a});function _a(){return m("/favicon.svg",301)}function Ua({...e}){return x(ft.Root,{"data-slot":"alert-dialog",...e})}function za({...e}){return x(ft.Portal,{"data-slot":"alert-dialog-portal",...e})}function Oa({className:e,...t}){return x(ft.Backdrop,{"data-slot":"alert-dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function ja({className:e,size:t="default",...n}){return y(za,{children:[x(Oa,{}),x(ft.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:jn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Fa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:jn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function Ba({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Ga({className:e,...t}){return x(ft.Title,{"data-slot":"alert-dialog-title",className:jn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Ha({className:e,...t}){return x(ft.Description,{"data-slot":"alert-dialog-description",className:jn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Ka({className:e,...t}){return x(Ta,{"data-slot":"alert-dialog-action",className:jn(e),...t})}function Wa({className:e,variant:t="outline",size:n="default",...a}){return x(ft.Close,{"data-slot":"alert-dialog-cancel",className:jn(e),render:x(Ta,{variant:t,size:n}),...a})}var Qa=mt("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function Va({className:e,variant:t="default",render:n,...a}){return gt({defaultTagName:"span",props:pt({className:jn(Qa({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Ja({...e}){return x(vt.Root,{"data-slot":"dialog",...e})}function Xa({...e}){return x(vt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ya({...e}){return x(vt.Portal,{"data-slot":"dialog-portal",...e})}function Za({className:e,...t}){return x(vt.Backdrop,{"data-slot":"dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function er({className:e,children:t,showCloseButton:n=!0,...a}){return y(Ya,{children:[x(Za,{}),y(vt.Popup,{"data-slot":"dialog-content",className:jn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(vt.Close,{"data-slot":"dialog-close",render:x(Ta,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function tr({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:jn("flex flex-col gap-2",e),...t})}function nr({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(vt.Close,{render:x(Ta,{variant:"outline"}),children:"Close"})]})}function ar({className:e,...t}){return x(vt.Title,{"data-slot":"dialog-title",className:jn("font-heading text-base leading-none font-medium",e),...t})}function rr({className:e,...t}){return x(vt.Description,{"data-slot":"dialog-description",className:jn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ir({...e}){return x(wt.Root,{"data-slot":"dropdown-menu",...e})}function sr({...e}){return x(wt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function or({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(wt.Portal,{children:x(wt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(wt.Popup,{"data-slot":"dropdown-menu-content",className:jn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function dr({className:e,inset:t,variant:n="default",...a}){return x(wt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:jn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function cr({...e}){return x(wt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function lr({className:e,inset:t,children:n,...a}){return y(wt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:jn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function ur({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(or,{"data-slot":"dropdown-menu-sub-content",className:jn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function mr({...e}){return x(wt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function hr({className:e,children:t,inset:n,...a}){return y(wt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:jn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(wt.RadioItemIndicator,{children:x(V,{})})}),t]})}function fr({className:e,...t}){return x(wt.Separator,{"data-slot":"dropdown-menu-separator",className:jn("-mx-1 my-1 h-px bg-border",e),...t})}function pr({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:jn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}function gr({className:e,status:t}){return x(Va,{className:e,variant:vr(t),children:t.toLowerCase()})}function vr(e){switch(e){case"ERROR":case"FAILED":case"INVALIDATED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}function wr(e){const t=Er(e);return function(e){const t=Er(e);if(!t)return;return{credits:Ar(t.credits),limitId:Mr(t.limitId)??Mr(t.limit_id),limitName:Mr(t.limitName)??Mr(t.limit_name),planType:Mr(t.planType)??Mr(t.plan_type),primary:kr(t.primary),rateLimitReachedType:Mr(t.rateLimitReachedType)??Mr(t.rate_limit_reached_type),secondary:kr(t.secondary)}}(Cr(e)?.codex??Object.values(Cr(e)??{}).find(Boolean)??t?.rateLimits??t?.rate_limits??((n=t)&&("primary"in n||"secondary"in n||"limitId"in n||"limit_id"in n)?t:void 0));var n}function br(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[Ir(e.primary,"5h"),Ir(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function xr(e){return e?yr(e.secondary)?"weekly":yr(e.primary)?"fiveHour":null:null}function yr(e){return Nr(e?.usedPercent??0)>=100}function Nr(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Ir(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Nr(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 kr(e){if(null===e)return null;const t=Er(e);return t?{resetsAt:Tr(t.resetsAt)??Tr(t.resets_at),usedPercent:Tr(t.usedPercent)??Tr(t.used_percent)??0,windowDurationMins:Tr(t.windowDurationMins)??Tr(t.window_duration_mins)??Tr(t.window_minutes)}:void 0}function Ar(e){if(null===e)return null;const t=Er(e);return t?{balance:Mr(t.balance)??null,hasCredits:Sr(t.hasCredits)??Sr(t.has_credits)??!1,unlimited:Sr(t.unlimited)??!1}:void 0}function Cr(e){const t=Er(e);return Er(t?.rateLimitsByLimitId)??Er(t?.rate_limits_by_limit_id)}function Er(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Mr(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Tr(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Sr(e){return"boolean"==typeof e?e:void 0}var Pr={args:"",command:"",displayName:"",environment:""};function Dr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:r=0,session:i}){const[s,o]=_(!1),[d,c]=_(null),[l,u]=_(""),[m,h]=_(""),[f,p]=_(null),[g,v]=_(Pr),[w,N]=_(null),I=q(null),A=q(null),M=E(),T=$(()=>["login-callback-port",i.serverUrl],[i.serverUrl]),S=C({queryKey:T,queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{token:e.token})}(i),refetchInterval:e=>e.state.data?.inUse?5e3:15e3,retry:1,staleTime:3e3});R(()=>{if(r<=0)return;const e=window.setTimeout(()=>{o(!0)},80);return()=>window.clearTimeout(e)},[r]),R(()=>{c(t=>{if(!t?.accountId)return t;const n=e.find(e=>e.id===t.accountId);if(!n)return t;const a=Hr(n.lastAuthMode)??t.mode,r="AUTHENTICATING"===n.status?n.lastAuthUrl??t.authUrl:n.lastAuthUrl,i="AUTHENTICATING"===n.status?n.lastAuthUserCode??t.userCode:n.lastAuthUserCode,s={...t,accountName:n.displayName,authUrl:r??null,mode:a,status:n.status,userCode:i??null};return d=s,(o=t).accountId===d.accountId&&o.accountName===d.accountName&&o.authUrl===d.authUrl&&o.message===d.message&&o.mode===d.mode&&o.status===d.status&&o.userCode===d.userCode?t:s;var o,d})},[e]),R(()=>{d?.accountId&&"CONNECTED"!==d.status&&"CONNECTED"===e.find(e=>e.id===d.accountId)?.status&&(te(),c(null),u(""),O.success("Account connected."))},[e,d?.accountId,d?.status]);const P=()=>M.invalidateQueries({queryKey:["accounts"]}),D=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.displayName,e.status,e.command,e.args.join(" "),e.defaultModel,e.defaultPermissionMode,e.defaultReasoningEffort,e.defaultServiceTier,e.lastError,e.environment?JSON.stringify(e.environment):null].filter(Boolean).some(e=>String(e).toLocaleLowerCase().includes(n))):e}(e,m),[e,m]),L=$(()=>e.some(e=>"AUTHENTICATING"===e.status&&"device"!==Hr(e.lastAuthMode)),[e]),U=k({mutationFn:async e=>{const t=await async function(e,t){return ia(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(i,{});return{account:t,auth:await Yn(i,t.id,{mode:e.authMode}),popup:e.popup}},onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),ee(t,n,e)}}),z=k({mutationFn:()=>{if(!f)throw new Error("Select an account to edit.");return async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(i,f.id,{...jr(g),displayName:g.displayName.trim()})},onError:e=>O.error(Wr(e)),onSuccess:()=>{p(null),v(Pr),O.success("Account updated."),P()}}),j=k({mutationFn:({accountId:e,mode:t})=>Yn(i,e,{mode:t}),onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:(t,n)=>{P();const a=e.find(e=>e.id===n.accountId);ee(t,n.popup,a)}}),F=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{te(),c(null),u(""),O.success(`Canceled authentication for ${e.displayName}.`),P()}}),B=k({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(i,e,{redirectUrl:t.trim()}),onError:e=>{c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:e=>{u(""),P(),ee(e)}}),G=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:()=>{N(null),O.success("Account deleted."),P(),M.invalidateQueries({queryKey:["chats"]})}}),H=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/export",{token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),O.success(`Exported ${e.accounts.length} ${Gr(e.accounts.length)}. Keep the file private; it may include Codex auth tokens.`)}}),K=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{M.setQueryData(T,e),e.inUse?O.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):O.success(function(e){const t=e.killedProcessIds??[];return t.length?`Killed ${1===t.length?"process":"processes"} ${t.join(", ")}.`:"Login callback port is available."}(e))}}),W=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(i,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),O.error(Wr(e))},onSuccess:(e,t)=>{O.success(`Imported ${e.imported} ${Gr(e.imported)}.`),P(),M.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){ee(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&O.info(`${a} more ${Gr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&O.success(`Connected ${a} imported ${Gr(a)}.`)}(e.authentications,t.popup)}}),V=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/import-local-active",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`Imported ${e.imported} local ${Gr(e.imported)}.`),P(),M.invalidateQueries({queryKey:["chats"]})}}),X=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/local-active`,{body:{},token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`${e.displayName} is now active in local Codex.`),P()}});async function Y(){const e=S.data?.inUse?S.data:(await S.refetch()).data;return!e?.inUse||(O.error(`${e.host}:${e.port} is already in use. Kill the process or use Device Auth.`),!1)}async function Z(e){if("browser"===e&&!(await Y()))return void o(!1);const t=Qr();I.current=t,o(!1),u(""),c({accountId:"",accountName:"Codex account",authUrl:null,message:"Creating account and starting Codex authentication.",mode:e,status:"AUTHENTICATING",userCode:null}),U.mutate({authMode:e,popup:t})}function ee(e,t,n){if(c(function(e,t){return{accountId:e.accountId,accountName:t?.displayName??"Codex account",authUrl:e.authUrl??t?.lastAuthUrl??null,message:e.message??null,mode:e.authMode??Hr(t?.lastAuthMode)??"browser",status:e.status,userCode:e.userCode??t?.lastAuthUserCode??null}}(e,n)),e.authUrl)return I.current=t??I.current,Vr(e.authUrl,t),void O.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");te(t),"AUTHENTICATING"!==e.status?O.success(e.message??"Account is connected."):O.info(e.message??"Authentication is still in progress.")}function te(e=I.current){e&&!e.closed&&e.close(),e&&e!==I.current||(I.current=null)}return y(b,{children:[x("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[x("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),x($r,{browserAuthenticationInProgress:L,checking:S.isFetching,killing:K.isPending,status:S.data,onKill:()=>K.mutate(),onRefresh:()=>{S.refetch()}}),y("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[y("div",{className:"relative min-w-0 flex-1 sm:min-w-64",children:[x(We,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),x(Sa,{className:"pl-8",placeholder:"Search accounts",value:m,onChange:e=>h(e.target.value)})]}),y("div",{className:"grid w-full grid-cols-2 gap-2 sm:flex sm:w-auto sm:flex-wrap sm:justify-end",children:[x("input",{ref:A,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Qr();try{const e=JSON.parse(await t.text());W.mutate({accounts:Fr(e),popup:n})}catch(a){n?.close(),O.error(Wr(a))}}}),y(Ta,{className:"w-full sm:w-auto",disabled:W.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[W.isPending?x(Ce,{className:"animate-spin"}):x(at,{}),"Import"]}),y(Ta,{className:"w-full sm:w-auto",disabled:H.isPending,variant:"outline",onClick:()=>H.mutate(),children:[H.isPending?x(Ce,{className:"animate-spin"}):x(ie,{}),"Export"]}),y(ir,{open:s,onOpenChange:o,children:[y(sr,{render:x(Ta,{className:"w-full sm:w-auto"}),children:[U.isPending||V.isPending?x(Ce,{className:"animate-spin"}):x(je,{}),"Add",x(J,{"data-icon":"inline-end"})]}),y(or,{align:"end",className:"w-56",children:[y(dr,{disabled:U.isPending,onClick:()=>Z("browser"),children:[x(se,{}),"Normal Auth"]}),y(dr,{disabled:U.isPending,onClick:()=>Z("device"),children:[x(Ie,{}),"Device Auth"]}),x(fr,{}),y(dr,{disabled:V.isPending,onClick:()=>{o(!1),V.mutate()},children:[V.isPending?x(Ce,{className:"animate-spin"}):x(xe,{}),"Import Local"]})]})]})]})]}),x("div",{className:"grid gap-2",children:D.length?D.map(r=>x(qr,{account:r,authPending:j.isPending&&j.variables?.accountId===r.id,authPendingMode:j.variables?.mode??"browser",cancelPending:F.isPending&&F.variables===r.id,localActivePending:X.isPending&&X.variables===r.id,quotaLabel:a[r.id],quotaPending:!!t[r.id],quotaSnapshot:n[r.id],onDelete:()=>N(r),onEdit:()=>function(e){var t;p(e),v({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(r),onAuthenticate:t=>async function(t,n="browser"){if("browser"===n&&!(await Y()))return;const a=e.find(e=>e.id===t),r=Qr();I.current=r,u(""),c(Kr(a,n)),j.mutate({accountId:t,mode:n,popup:r})}(r.id,t),onCancelAuthentication:()=>F.mutate(r.id),onSetLocalActive:()=>X.mutate(r.id),onShowAuthentication:()=>function(e){u(""),c(Kr(e,Hr(e.lastAuthMode)??"browser"))}(r)},r.id)):x("div",{className:"rounded-md border bg-background px-3 py-8 text-center text-sm text-muted-foreground",children:e.length?"No accounts match the current search.":"No accounts yet. Add an account or import account records."})})]})}),x(Rr,{callbackUrl:l,cancelPending:F.isPending&&F.variables===d?.accountId,completePending:B.isPending,state:d,onCallbackUrlChange:u,onClose:()=>{c(null),u("")},onCancelAuthentication:()=>{d?.accountId&&F.mutate(d.accountId)},onComplete:()=>{d?.accountId&&B.mutate({accountId:d.accountId,redirectUrl:l})},onCopyDeviceCode:()=>{!async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),O.success("Device code copied.")}catch{O.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Vr(d?.authUrl)}),x(Ja,{open:!!f,onOpenChange:e=>{e||z.isPending||(p(null),v(Pr))},children:y(er,{className:"max-w-2xl",children:[y(tr,{children:[y(ar,{children:["Edit ",f?.displayName??"account"]}),x(rr,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),x(Lr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(nr,{children:[y(Ta,{variant:"outline",onClick:()=>{p(null),v(Pr)},children:[x(it,{}),"Cancel"]}),y(Ta,{disabled:!g.displayName.trim()||z.isPending,onClick:()=>z.mutate(),children:[z.isPending?x(Ce,{className:"animate-spin"}):x(Q,{}),"Save account"]})]})]})}),x(Ua,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(ja,{children:[y(Fa,{children:[x(Ga,{children:"Delete account?"}),y(Ha,{children:["This removes ",w?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ba,{children:[x(Wa,{children:"Cancel"}),y(Ka,{disabled:G.isPending,variant:"destructive",onClick:()=>{w&&G.mutate(w.id)},children:[G.isPending?x(Ce,{className:"animate-spin"}):x(tt,{}),"Delete"]})]})]})})]})}function Lr({form:e,onChange:t,prefix:n}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-name`,children:"Display name"}),x(Sa,{id:`${n}-name`,placeholder:"Work Codex",value:e.displayName,onChange:n=>t({...e,displayName:n.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-command`,children:"Command"}),x(Sa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-args`,children:"Arguments"}),x(Sa,{id:`${n}-args`,placeholder:"app-server",value:e.args,onChange:n=>t({...e,args:n.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-environment`,children:"Environment JSON"}),x(pr,{className:"min-h-20 font-mono text-xs",id:`${n}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:e.environment,onChange:n=>t({...e,environment:n.target.value})})]})]})}function Rr({callbackUrl:e,cancelPending:t,completePending:n,state:a,onCallbackUrlChange:r,onCancelAuthentication:i,onClose:s,onComplete:o,onCopyDeviceCode:d,onReopen:c}){const l="device"===a?.mode,u="CONNECTED"===a?.status;return x(Ja,{open:!!a,onOpenChange:e=>{e||s()},children:y(er,{className:"max-w-2xl",children:[y(tr,{children:[x(ar,{children:l?"Device authentication":"Normal authentication"}),x(rr,{children:a?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[x("div",{className:jn("rounded-md border px-3 py-2 text-sm",u?"border-emerald-300 bg-emerald-50 text-emerald-800 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-200":"bg-muted/35 text-muted-foreground"),children:u?"Codex reported this account as connected. xedoc will use the email from the authenticated account as its name.":l?"Open the verification link, enter the device code, then use the response URL field if Codex does not finish automatically.":"Complete the browser login. If the browser lands on a localhost callback page, paste that full URL below."}),a?.authUrl?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-auth-url",children:l?"Verification link":"Authentication link"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:a.authUrl}),y(Ta,{variant:"outline",onClick:c,children:[x(se,{}),"Reopen"]})]})]}):null,l&&a?.userCode?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:a.userCode}),y(Ta,{variant:"outline",onClick:d,children:[x(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-callback-url",children:"Response URL"}),x(pr,{className:"min-h-24 font-mono text-xs",id:"account-callback-url",placeholder:"http://localhost:1455/auth/callback?code=...",value:e,onChange:e=>r(e.target.value)}),x("p",{className:"text-xs text-muted-foreground",children:"Paste the complete localhost callback URL from the Codex browser tab when automatic completion is blocked."})]}),a?.message?x("p",{className:"rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground",children:a.message}):null]}),y(nr,{children:[y(Ta,{variant:"outline",onClick:s,children:[x(it,{}),"Close"]}),"AUTHENTICATING"===a?.status?y(Ta,{disabled:!a.accountId||t,variant:"destructive",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,y(Ta,{disabled:!a?.authUrl,variant:"secondary",onClick:c,children:[x(se,{}),"Reopen Link"]}),y(Ta,{disabled:!a?.accountId||!e.trim()||n,onClick:o,children:[n?x(Ce,{className:"animate-spin"}):x(Q,{}),"Submit Response URL"]})]})]})})}function $r({browserAuthenticationInProgress:e,checking:t,killing:n,status:a,onKill:r,onRefresh:i}){if(!a?.inUse)return null;const s=function(e){return e.processes.length?e.processes.map(e=>[e.command??"process",`PID ${e.pid}`,e.user?`user ${e.user}`:null].filter(Boolean).join(" ")).join(", "):null}(a),o=1===a.processes.length?"Kill Process":"Kill Processes";return y("div",{className:"flex flex-col gap-3 rounded-md border border-amber-300 bg-amber-50 px-3 py-3 text-amber-950 dark:border-amber-900/70 dark:bg-amber-950/35 dark:text-amber-100 sm:flex-row sm:items-start sm:justify-between",children:[y("div",{className:"flex min-w-0 gap-2",children:[x(Z,{className:"mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-300"}),y("div",{className:"grid min-w-0 gap-1",children:[x("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),x("p",{className:"text-sm leading-relaxed",children:e?`${a.host}:${a.port} is already listening for a browser login. Starting another Normal Auth can fail while this listener is active.`:`${a.host}:${a.port} is already listening. Normal Auth can fail until this process is stopped.`}),x("p",{className:"break-words text-xs text-amber-800 dark:text-amber-200/80",children:s??"Process details are unavailable."})]})]}),y("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[y(Ta,{disabled:t||n,size:"sm",variant:"outline",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(He,{}),"Refresh"]}),y(Ta,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?x(Ce,{className:"animate-spin"}):x(Fe,{}),o]})]})]})}function qr({account:e,authPending:t,authPendingMode:n,cancelPending:a,localActivePending:r,quotaLabel:i,quotaPending:s,quotaSnapshot:o,onAuthenticate:d,onCancelAuthentication:c,onDelete:l,onEdit:u,onSetLocalActive:m,onShowAuthentication:h}){const f=Hr(e.lastAuthMode)??"browser",p=t&&"browser"===n,g=t&&"device"===n,v="AUTHENTICATING"===e.status?f:"browser",w="AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate",b="CONNECTED"===e.status&&!e.isLocalCodexActive,N="device"===f?"Device login pending":"Browser login pending";return x("div",{className:jn("rounded-md border bg-background px-3 py-3 text-sm",e.isLocalCodexActive&&"border-primary/40 bg-primary/5 dark:bg-primary/10"),children:y("div",{className:"grid gap-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("div",{className:"min-w-0 max-w-full truncate font-medium",children:e.displayName}),x(_r,{planType:o?.planType}),e.isLocalCodexActive?x(Ur,{}):null]}),x("div",{className:"truncate text-xs text-muted-foreground",children:Br(e)})]}),y("div",{className:"flex shrink-0 items-center gap-2",children:[x(zr,{account:e}),y(ir,{children:[y(sr,{render:x(Ta,{size:"icon-sm",variant:"ghost"}),children:[t||a||r?x(Ce,{className:"animate-spin"}):x(Re,{}),x("span",{className:"sr-only",children:"Account actions"})]}),y(or,{align:"end",className:"w-48",children:[y(dr,{disabled:t,onClick:()=>d(v),children:[p?x(Ce,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(He,{}):x(se,{}),"AUTHENTICATING"===e.status?w:"Normal Auth"]}),y(dr,{disabled:t,onClick:()=>d("device"),children:[g?x(Ce,{className:"animate-spin"}):x(Ie,{}),"Device Auth"]}),y(dr,{disabled:!b||r,onClick:m,children:[r?x(Ce,{className:"animate-spin"}):x(ke,{}),e.isLocalCodexActive?"Local Active":"Make Local Active"]}),"AUTHENTICATING"===e.status?y(dr,{disabled:a,variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,"AUTHENTICATING"===e.status||e.lastAuthUrl?y(dr,{onClick:h,children:[x(se,{}),"Authentication Details"]}):null,x(fr,{}),y(dr,{onClick:u,children:[x(Ue,{}),"Edit"]}),y(dr,{variant:"destructive",onClick:l,children:[x(tt,{}),"Delete"]})]})]})]})]}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[x(Or,{accountStatus:e.status,label:i,pending:s,snapshot:o}),"AUTHENTICATING"===e.status?x("span",{className:"text-xs text-muted-foreground",children:N}):null]}),"AUTHENTICATING"===e.status?y(Ta,{className:"min-w-0 sm:w-auto",disabled:a,size:"sm",variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel"]}):null]})]})})}function _r({planType:e}){return e?x(Va,{className:"border-emerald-300 bg-emerald-50 text-emerald-700 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-300",variant:"outline",children:(t=e,t.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" "))}):null;var t}function Ur(){return y(Va,{className:"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-900/70 dark:bg-sky-950/35 dark:text-sky-300",variant:"outline",children:[x(ke,{}),"local active"]})}function zr({account:e}){const t=e.lastError?.trim();return t?y(Bn,{children:[x(Gn,{render:x("span",{className:"inline-flex cursor-help"}),children:x(gr,{status:e.status})}),x(Hn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):x(gr,{status:e.status})}function Or({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return x("div",{className:"text-xs text-muted-foreground",children:"INVALIDATED"===e?"Re-authenticate account to load quota.":"Connect account to load quota."});const r=t??br(a),i=xr(a);return x("div",{className:"grid gap-1.5",children:y("div",{className:jn("inline-flex w-fit items-center gap-1.5 rounded-md border px-2 py-1 text-xs","fiveHour"===i&&"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300","weekly"===i&&"border-red-300 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"),children:[n?x(Ce,{className:"size-3 animate-spin"}):null,x("span",{children:r})]})})}function jr(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 Fr(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 Br(e){return[e.command,...e.args].filter(Boolean).join(" ")}function Gr(e){return 1===e?"account":"accounts"}function Hr(e){return"browser"===e||"device"===e?e:null}function Kr(e,t){return{accountId:e?.id??"",accountName:e?.displayName??"Codex account",authUrl:e?.lastAuthUrl??null,message:"AUTHENTICATING"===e?.status?"Authentication is in progress.":"Starting Codex authentication.",mode:t,status:e?.status??"AUTHENTICATING",userCode:e?.lastAuthUserCode??null}}function Wr(e){return e instanceof Error?e.message:"Request failed."}function Qr(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Vr(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Jr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(bt.Root,{"data-slot":"scroll-area",className:jn("relative",e),...r,children:[x(bt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:jn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(Xr,{}),x(bt.Corner,{})]})}function Xr({className:e,orientation:t="vertical",...n}){return x(bt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:jn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(bt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Yr({className:e,orientation:t="horizontal",...n}){return x(xt,{"data-slot":"separator",orientation:t,className:jn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function Zr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,activeTab:r,createFocusKey:i,onOpenChange:s,onTabChange:o,open:d,session:c}){return x(Ja,{open:d,onOpenChange:s,children:y(er,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(tr,{className:"px-5 py-4",children:[x(ar,{children:"Settings"}),x(rr,{children:"Manage accounts, personalization, and project details."})]}),x(Yr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(ei,{active:"accounts"===r,icon:x(rt,{}),label:"Accounts",onClick:()=>o("accounts")}),x(ei,{active:"personalization"===r,icon:x(K,{}),label:"Personalization",onClick:()=>o("personalization")}),x(ei,{active:"info"===r,icon:x(ye,{}),label:"Info",onClick:()=>o("info")})]}),x(Jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?x(ti,{session:c}):null,"accounts"===r?x(Dr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?x(ni,{}):null]})})]})]})})}function ei({active:e,icon:t,label:n,onClick:a}){return y(Ta,{"aria-pressed":e,className:jn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function ti({session:e}){const[t,n]=_(""),a=E(),r=C({queryKey:["account-personalization"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/personalization",{token:e.token})}(e)});R(()=>{r.data&&n(r.data.instructions)},[r.data]);const i=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,"/api/accounts/personalization",{body:t,method:"PATCH",token:e.token})}(e,{instructions:t}),onError:e=>O.error(ai(e)),onSuccess:e=>{a.setQueryData(["account-personalization"],e),a.invalidateQueries({queryKey:["account-personalization"]}),O.success("Personalization saved.")}}),s=$(()=>(new TextEncoder).encode(t).length,[t]),o=r.data?.maxBytes??32768,d=!!r.data&&t!==r.data.instructions,c=s>o;return y("div",{className:"grid gap-5",children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[x("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:jn("text-xs text-muted-foreground",c&&"text-destructive"),children:[s.toLocaleString()," / ",o.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),x(pr,{className:"min-h-72 font-mono text-xs leading-relaxed",disabled:r.isLoading||i.isPending,id:"personalization-instructions",placeholder:"## Working agreements\n\n- Prefer concise answers.\n- Run relevant tests after code changes.",value:t,onChange:e=>n(e.target.value)})]}),r.error?x("p",{className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:ai(r.error)}):null,y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[x("div",{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(Ta,{disabled:r.isFetching,variant:"outline",onClick:()=>{r.refetch()},children:[r.isFetching?x(Ce,{className:"animate-spin"}):x(Be,{}),"Reload"]}),y(Ta,{disabled:!d||i.isPending,variant:"secondary",onClick:()=>n(r.data?.instructions??""),children:[x(Be,{}),"Reset"]}),y(Ta,{disabled:!d||c||r.isLoading||i.isPending,onClick:()=>i.mutate(),children:[i.isPending?x(Ce,{className:"animate-spin"}):x(Ke,{}),"Save"]})]})]})]})}function ni(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(ye,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(se,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Te,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function ai(e){return e instanceof Error?e.message:"Request failed."}function ri(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 ii="xedoc.web.terminal-height",si=null;function oi({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=_(null),[o,d]=_(null),[c,l]=_(ci),[u,m]=_(!1),[h,f]=_(null),[p,g]=_([]),v=q(c),w=function(){const[e,t]=_(()=>mi());return R(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=D((e,t)=>ri(a,e,t),[a]),N=D(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=D(async()=>{const e=await b("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,b,h]);R(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),b("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),N(n.terminals),!n.terminals.length)){const t=await b("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),N(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(hi(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&ri(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,b,a]),R(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&N(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[N,n,h,a]),R(()=>{v.current=c;const e=window.setTimeout(()=>{li(c)},150);return()=>window.clearTimeout(e)},[c]),R(()=>{const e=()=>{l(e=>{const t=ui(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const k=D(async e=>{try{N((await b("terminal:close",{terminalId:e})).terminals)}catch(t){O.error(hi(t))}},[N,b]),A=D(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),C=D(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=ui(n+t-e.clientY);v.current=a,l(a)},r=()=>{li(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:jn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:C,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:jn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:jn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{k(e.id)},children:x(it,{className:"size-3"})})]},e.id))}),x(Ta,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{I().catch(e=>O.error(hi(e)))},children:u?x(Ce,{className:"animate-spin"}):x(je,{})}),t?x(Ta,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(it,{})}):null]}),x("div",{className:"relative min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>x(di,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function di({active:e,compactLayout:t,onTerminalUpdated:n,resizeSignal:a,socket:r,terminal:i}){const s=q(null),o=q(null),d=q(null),c=q(null),[l,u]=_(!1),m=D(()=>{null===d.current&&(d.current=window.requestAnimationFrame(()=>{d.current=null,o.current?.fit()}))},[]);return R(()=>(m(),()=>{null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null)}),[m,a]),R(()=>{e&&(m(),requestAnimationFrame(()=>{o.current?.fit(),c.current?.focus()}))},[e,m]),R(()=>{const a=s.current;if(!r||!a)return;let l=!1,h=!1;const f=[];u(!1),a.replaceChildren();const p=e=>{r.emit("terminal:input",{data:e,terminalId:i.id})},g=e=>{h&&e.terminalId===i.id&&c.current?.write(e.data)};return r.on("terminal:output",g),async function(){return si??=import("ghostty-web").then(async e=>(await e.init(),e)),si}().then(async({FitAddon:a,Terminal:d})=>{if(l||!s.current)return;s.current.replaceChildren();const g=new d({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:t?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),v=new a;o.current=v,c.current=g,g.loadAddon(v),g.open(s.current),v.fit(),v.observeResize(),g.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(p("\r"),!0)),f.push(v),f.push(g.onData(e=>{p(e)})),f.push(g.onResize(e=>{r.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:i.id})})),f.push(g.onTitleChange(e=>{r.emit("terminal:title",{terminalId:i.id,title:e})}));const w=await ri(r,"terminal:attach",{terminalId:i.id});l||(n(w.terminal),w.replay&&g.write(w.replay),h=!0,requestAnimationFrame(()=>{v.fit(),l||(u(!0),e&&g.focus())}),m())}).catch(e=>{l||O.error(hi(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),ri(r,"terminal:detach",{terminalId:i.id}).catch(()=>{});for(const e of f)e.dispose();c.current?.dispose(),a.replaceChildren(),c.current=null,o.current=null,u(!1)}},[e,t,n,m,r,i.id]),y("div",{className:jn("absolute inset-0 h-full min-h-0 overflow-hidden bg-zinc-950 p-1 outline-none sm:p-2",e?"z-10 opacity-100":"z-0 opacity-0 pointer-events-none"),"aria-hidden":!e,style:{caretColor:"transparent"},children:[!l&&e?x("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,x("div",{className:jn("h-full min-h-0 transition-opacity [&_canvas]:block",l?"opacity-100":"opacity-0"),ref:s})]})}function ci(){return"undefined"==typeof window?360:ui(Number.parseInt(window.localStorage.getItem(ii)??"",10)||(mi()?300:360))}function li(e){"undefined"!=typeof window&&window.localStorage.setItem(ii,String(e))}function ui(e){const t="undefined"!=typeof window&&mi()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(mi()?96:140),760));return Math.max(t,Math.min(n,e))}function mi(){return"undefined"!=typeof window&&window.innerWidth<640}function hi(e){return e instanceof Error?e.message:"Terminal request failed."}function fi(){const{setTheme:e,theme:t}=T(),n=t??"system";return y(ir,{children:[y(sr,{render:x(Ta,{size:"icon",variant:"ghost"}),children:[x(Ze,{className:"size-4 dark:hidden"}),x(De,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(or,{align:"end",className:"w-40",children:[y(dr,{onClick:()=>e("light"),children:[x(Ze,{}),"Light","light"===n?x(W,{className:"ml-auto"}):null]}),y(dr,{onClick:()=>e("dark"),children:[x(De,{}),"Dark","dark"===n?x(W,{className:"ml-auto"}):null]}),y(dr,{onClick:()=>e("system"),children:[x(ke,{}),"System","system"===n?x(W,{className:"ml-auto"}):null]})]})]})}function pi(e,t){return t&&kt.getLanguage(t)?kt.highlight(e,{language:t}).value:kt.highlightAuto(e).value}kt.registerLanguage("bash",At),kt.registerLanguage("css",Ct),kt.registerLanguage("go",Et),kt.registerLanguage("html",qt),kt.registerLanguage("javascript",Tt),kt.registerLanguage("json",Mt),kt.registerLanguage("markdown",St),kt.registerLanguage("python",Pt),kt.registerLanguage("rust",Dt),kt.registerLanguage("sh",Lt),kt.registerLanguage("sql",Rt),kt.registerLanguage("tsx",$t),kt.registerLanguage("typescript",$t),kt.registerLanguage("xml",qt),kt.registerLanguage("yaml",_t);var gi=P(null);function vi({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,onSteerQueuedMessage:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,showProcessingTail:f,session:p}){const g=$(()=>new Set(t??[]),[t]),v=$(()=>$s(n).filter(e=>!g.has(e.id)),[g,n]),w=$(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=js(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&Os(a.messages.at(-1),n)?a.messages.push(n):t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(v),[v]),b=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&es(n))return n.id}return null}(v),[v]),[N,I]=_(null);return y(gi.Provider,{value:I,children:[w.map(t=>x(yi,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:b,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onSteerQueuedMessage:c,onUndoFileChanges:s,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:p},t.id)),f?x(Ai,{}):null,x(_i,{chatId:e,session:p,target:N,onClose:()=>I(null)})]})}function wi({chatId:e,messages:t,session:n}){const a=$(()=>Hs(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(Pi,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function bi({message:e}){if(!e)return null;const t=to(e.metadata),n=t?.steps??[],a=n.filter(e=>Wi(e.status)).length,r=function(e){const t=e.findIndex(e=>Qi(e.status));if(t>=0)return t;const n=e.findIndex(e=>!Wi(e.status));return n>=0?n:e.length?e.length-1:-1}(n),i=(r>=0?n[r]:void 0)?.step??Ji(t?.explanation)??Ji(e.content)??"Planning...",s=function(e,t){return t.some(e=>Qi(e.status))||Gs(e)?"in progress":t.length?"pending":"planning"}(e,n);return x("section",{"aria-label":"Active plan","aria-live":"polite",className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto w-full min-w-0 max-w-3xl",children:x("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:y("div",{className:"grid min-w-0 gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"flex min-w-0 items-start gap-2",children:[x("div",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-background text-muted-foreground",children:x(Ae,{className:"size-4"})}),y("div",{className:"min-w-0",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("span",{className:"text-sm font-medium",children:"Plan"}),x(Va,{variant:"secondary",children:s})]}),x("div",{className:"mt-0.5 min-w-0 truncate text-xs text-muted-foreground",children:i})]})]}),n.length?y(Va,{className:"shrink-0",variant:"outline",children:[a,"/",n.length]}):null]}),n.length?x("div",{className:"grid max-h-44 min-w-0 gap-1.5 overflow-y-auto pr-1",children:n.map((e,t)=>{const n=t===r;return y("div",{className:jn("grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 rounded-md px-2 py-1.5 text-xs",n?"border bg-background shadow-xs":"text-muted-foreground"),children:[x(Ki,{highlighted:n,status:e.status}),x("div",{className:"min-w-0 break-words leading-5 text-foreground",children:e.step}),x("span",{className:"shrink-0 rounded bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground",children:(a=e.status,a.trim().replace(/[_-]+/g," ").toLowerCase()||"pending")})]},`${e.step}-${t}`);var a})}):null]})})})})}function xi({disabled:e,messages:t,onSteerQueuedMessage:n,pendingQueueId:a}){return t.length?x("section",{className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5",children:y("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[x(te,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Queued messages"})]}),x(Va,{variant:"outline",children:t.length})]}),x("div",{className:"grid max-h-44 min-w-0 gap-1 overflow-y-auto p-2",children:t.map(t=>{const r=Ei(t)?.queueId,i=a===r;return y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md bg-background px-2 py-1.5 text-xs",children:[x(te,{className:"size-3.5 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-foreground",children:Ti(t)}),x("div",{className:"text-muted-foreground",children:"Queued after the current task"})]}),y(Ta,{className:"h-7 shrink-0 px-2 text-xs",disabled:e||i||!r||!n,size:"sm",type:"button",variant:"outline",onClick:()=>{r&&n?.({message:t,queueId:r})},children:[i?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]})]},t.id)})})]})})}):null}function yi({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onSteerQueuedMessage:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:f}){return"user"===t.type?x(ki,{message:t.message,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,onSteerQueuedMessage:d}):x(Ni,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:f})}function Ni({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=$(()=>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(Js(r.message)){if(Gs(r.message)){a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"});continue}const e=n.at(-1);if(!e||Xs(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&&Ys(e)!==Ys(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(Gs))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)Vs(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:Fs(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Bs(e)}}(n)),n=[])};for(const r of e)if("ASSISTANT"!==r.role||"CHAT"!==r.kind)a(),t.push(r);else{if(Gs(r)){a(),t.push(r);continue}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(gr,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(Ii,{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 Ii({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(ns,{messages:a.messages}):"previousActions"===a.type?x(as,{messages:a.messages}):"fileChanges"===a.type?x(is,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Pi,{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 ki({message:e,onSteerQueuedMessage:t,queuedMessageActionDisabled:n,queuedMessageActionPendingId:a}){const r=no(e),i=Ei(e),s=$(()=>$i(e.content),[e.content]),o=Li(s),d=$(()=>function(e,t){const n=[],a=new Set,r=e=>{a.has(e.src)||(a.add(e.src),n.push(e))};return e.forEach((e,t)=>{"image"===e.type&&r({id:`inline-image:${t}:${e.src}`,name:"Attached image",src:e.src})}),t.forEach(e=>{"image"===e.kind&&r({id:e.id,name:e.name,src:e.url})}),n}(s,r),[r,s]),c=r.filter(e=>"file"===e.kind),[l,u]=_(null),m=o||c.length;return y("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:[y("div",{className:"flex min-w-0 max-w-[84%] flex-col items-end gap-2 overflow-hidden",children:[d.length?x("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:d.map(e=>x("button",{className:"size-16 overflow-hidden rounded-lg border bg-muted outline-none ring-offset-background transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",title:e.name,type:"button",onClick:()=>u(e),children:x("img",{alt:e.name,className:"size-full object-cover",loading:"lazy",src:e.src})},e.id))}):null,m?y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card px-3 py-2 text-sm leading-6 text-card-foreground",children:[y("div",{className:"mb-1 flex min-w-0 items-center justify-between gap-2 text-muted-foreground",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(rt,{className:"size-3.5 opacity-80"}),x("span",{className:"text-xs font-medium",children:"You"})]}),i?x(Va,{className:"shrink-0",variant:i.badgeVariant,children:i.label}):null]}),o?x("div",{className:"whitespace-pre-wrap break-words",children:o}):null,c.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:c.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border bg-muted/35 px-2 py-1 text-xs text-muted-foreground",children:[x(le,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null,i?x(Ci,{delivery:i,disabled:n,pending:a===i.queueId,onSteerQueuedMessage:i.queueId?()=>t?.({message:e,queueId:i.queueId}):void 0}):null]}):null]}),x(Ja,{open:!!l,onOpenChange:e=>{e||u(null)},children:y(er,{className:"flex h-[min(90vh,900px)] w-[min(92vw,1000px)] max-w-none flex-col overflow-hidden p-0",children:[y(tr,{className:"sr-only",children:[x(ar,{children:l?.name??"Image preview"}),x(rr,{children:"Full size image preview."})]}),l?x("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:x("img",{alt:l.name,className:"max-h-full max-w-full object-contain",src:l.src})}):null]})})]})}function Ai(){return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"flex min-w-0 items-center gap-2 rounded-md px-1 py-2 text-xs text-muted-foreground",children:[x(Ce,{className:"size-3.5 animate-spin"}),x("span",{children:"Codex is processing"})]})})}function Ci({delivery:e,disabled:t,onSteerQueuedMessage:n,pending:a}){const r=e.canSteer&&!!n&&!t&&!a;return y("div",{className:"mt-2 flex min-w-0 flex-wrap items-center justify-between gap-2 border-t pt-2 text-xs text-muted-foreground",children:[x("span",{className:"min-w-0 break-words leading-5",children:e.detail}),e.canSteer?y(Ta,{className:"h-7 shrink-0 px-2 text-xs",disabled:!r,size:"sm",type:"button",variant:"outline",onClick:n,children:[a?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]}):null]})}function Ei(e){const t=to(e.metadata),n=Si(t?.delivery),a=Si(t?.queueStatus),r=Si(t?.queueId),i=Si(t?.error);if("queue"===n||r){const e=a??"queued";return"failed"===e?{badgeVariant:"destructive",canSteer:!1,detail:i?`Queue failed: ${i}`:"Queued message failed.",label:"failed",queueId:r}:"running"===e?{badgeVariant:"secondary",canSteer:!1,detail:"Queued message is now running.",label:"running",queueId:r}:"steered"===e||"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered",queueId:r}:{badgeVariant:"outline",canSteer:!!r,detail:"Queued after the current task.",label:"queued",queueId:r}}return"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered"}:null}function Mi(e){return"USER"===e.role&&!0===Ei(e)?.canSteer}function Ti(e){const t=Li($i(e.content)).trim();if(t)return t.length>160?`${t.slice(0,160)}...`:t;const n=no(e);return n.length?`${n.length} ${1===n.length?"attachment":"attachments"}`:"Queued message"}function Si(e){return"string"==typeof e?e:void 0}function Pi({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(Bi,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(ji,{}):null;case"THINKING":return x(Fi,{message:i});case"PLAN":return x(Gi,{metadata:to(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(ts,{metadata:to(i.metadata)});case"FILE_CHANGE":return x(is,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Ns,{chatId:e,compact:t,message:i,metadata:to(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Is,{chatId:e,compact:t,message:i,metadata:to(i.metadata),session:m});case"ERROR":return x(Ps,{metadata:to(i.metadata),text:i.content});default:return x(Ds,{text:i.content})}}function Di({text:e}){const t=L(gi);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(Nt,{remarkPlugins:[It],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:jn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:jn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:jn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:jn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:jn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:jn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:jn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:jn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:jn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:jn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:jn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:jn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:jn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:jn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:jn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:jn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:jn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:jn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:jn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:jn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:Ri(e)})})}function Li(e){return e.map(e=>"text"===e.type?e.text:"").join("").trim()}function Ri(e){return $i(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function $i(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=qi(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"});const s=/^\s*<\/image>/i.exec(e.slice(n.lastIndex));i&&s&&(n.lastIndex+=s[0].length),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function qi(e){let t=e.trim();for(;/^<image>/i.test(t);)t=t.replace(/^<image>\s*/i,"").trim();for(;/<\/image>$/i.test(t);)t=t.replace(/\s*<\/image>$/i,"").trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function _i({chatId:e,onClose:t,session:n,target:a}){const r=C({enabled:!!a,queryKey:["workspace-file",e,a?.path,a?.line??null],queryFn:()=>async function(e,t,n,a){const r=new URLSearchParams({path:n});return a&&a>0&&r.set("line",String(a)),ia(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Ja,{open:!!a,onOpenChange:e=>!e&&t(),children:y(er,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(tr,{className:"gap-1 px-4 pb-2 pt-4",children:[y(ar,{className:"flex min-w-0 items-center gap-2",children:[x(le,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(rr,{className:"truncate",children:zi(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ce,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(Ui,{file:r.data}):null})]})})}function Ui({file:e}){const t=q({}),n=$(()=>(e.content??"").split(/\r?\n/),[e.content]);return R(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(Jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:jn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:pi(n||" ",e.language)}})]},r)})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function zi(e){return e?[Oi(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Oi(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function ji(){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 Fi({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Bi({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=es(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(Di,{text:o}):null,s?x(Xi,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Gi({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=es(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(Di,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(Ds,{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(Va,{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(Yi,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Hi(e){if("SYSTEM"!==e.role||"PLAN"!==e.kind)return!1;if("FAILED"===e.status||Qs(e))return!1;const t=to(e.metadata);if("progress"!==t?.presentation)return!1;const n=t.steps??[];return(!n.length||!n.every(e=>Wi(e.status)))&&(n.length>0||Gs(e)||!!Ji(t.explanation)||!!Ji(e.content))}function Ki({highlighted:e,status:t}){return Wi(t)?x(W,{className:"mt-0.5 size-3.5 text-primary"}):Qi(t)?x(Ce,{className:"mt-0.5 size-3.5 animate-spin text-muted-foreground"}):x("span",{className:jn("mt-1.5 size-2 rounded-full",e?"bg-primary":"bg-muted-foreground/35")})}function Wi(e){return["complete","completed","done","success","succeeded"].includes(Vi(e))}function Qi(e){return["active","in_progress","running","started","streaming","working"].includes(Vi(e))}function Vi(e){return e.trim().toLowerCase().replace(/[\s-]+/g,"_")}function Ji(e){const t=e?.trim();return t?["...","planning..."].includes(t.toLowerCase())?null:t:null}function Xi({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),"Proposed plan"]}),x(Di,{text:i}),s?x(Yi,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Yi({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=_(""),[d,c]=_(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(Ta,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ce,{className:"animate-spin"}):x(G,{}),"Implement plan"]}),y(Ja,{open:d,onOpenChange:c,children:[y(Xa,{render:x(Ta,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(ze,{}),"Tell Codex what to change"]}),y(er,{children:[y(tr,{children:[x(ar,{children:"Tell Codex What To Change"}),x(rr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(pr,{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(Ta,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(Ta,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ce,{className:"animate-spin"}):x(ze,{}),"Send changes"]})]})]})]})]})]})}var Zi=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function es(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Zi.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Zi,"").trim()}:"PLAN"!==e.kind||"result"!==to(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function ts({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(Va,{variant:ys(e),children:xs(e)}),"number"==typeof e?.exitCode?x(Va,{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 ns({messages:e}){const[t,n]=_(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,Rs),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Bs(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(Va,{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(rs,{message:e},e.id)),i>0?y(Ta,{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 as({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(Va,{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(rs,{message:e},e.id))})]})}function rs({message:e}){const t=to(e.metadata),n=to(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(to(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===to(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:[Zs(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(Va,{variant:"secondary",children:e.status.toLowerCase()})]})}function is({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=$(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=to(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of ss(e)){const e=n.get(t.path);e?n.set(t.path,{action:ws(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:bs(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:bs(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=L(gi),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ue,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${cs(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(ms,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(Ta,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:us(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(Ge,{}),"Undo"]}),y(Ta,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:ls(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(oe,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Ja,{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(ms,{additions:e.additions,deletions:e.deletions}),y(Xa,{render:x(Ta,{size:"icon-sm",variant:"ghost"}),children:[x(J,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(er,{className:"max-w-5xl",children:[y(tr,{children:[x(ar,{children:e.path}),y(rr,{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(Va,{variant:"secondary",children:e},e))}):null]})}function ss(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=ds(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=ds(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:os(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=hs(n.path,n.filePath,n.file,n.name);return a?(e.push({action:ps(hs(n.action,n.kind,n.type)??"Edited"),additions:fs(n.additions),deletions:fs(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>gs(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=>gs(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 os(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 ds(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function cs(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function ls(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 us(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 ms({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 hs(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function fs(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 ps(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function gs(e,t){return vs(e)===vs(t)}function vs(e){return ds(e).replace(/\\/g,"/").replace(/^\.\//,"")}function ws(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 bs(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function xs(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function ys(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Ns({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=Ls(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(ks,{icon:x(Me,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:As(a)}):y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Me,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:jn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:jn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(Va,{variant:"secondary",children:[x(W,{className:"size-3"}),"resolved"]}):y(b,{children:[y(Ta,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Accept"]}),x(Ta,{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(Ta,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Is({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=Ls(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&&Ss(h,i[h.id]).length>0,p=l.every(e=>Ss(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(ks,{icon:x(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Cs(a)});return y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(Ta,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(B,{})}),y(Va,{variant:"secondary",children:[m+1," / ",l.length]}),x(Ta,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(G,{})}),u?x(Va,{variant:"secondary",children:"resolved"}):null]})]}),h?x(Ms,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Es,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:jn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ta,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Ts(l,i)}):O.error("Answer every question before submitting.")},children:[c.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Submit"]})}):null]})}function ks({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(Va,{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 As(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 Cs(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 Es={other:"",values:[]};function Ms({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:jn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:jn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(Ta,{"aria-pressed":r,className:jn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:jn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:jn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(Sa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(pr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(pr,{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 Ts(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Ss(e,t[e.id])}]))}}function Ss(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function Ps({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(j,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function Ds({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function Ls(e,t,n){const a=E();return k({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return ia(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>da(e,t))}})}var Rs=5;function $s(e){const t=qs([...e]).filter(e=>!Ws(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(Gs)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}function qs(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=_s(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Us(n[t],r):(a.set(e,n.length),n.push(r))}return n}function _s(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 Us(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:zs(t.status)>zs(e.status)?{...e,status:t.status}:e:zs(t.status)>zs(e.status)||t.sequence>=e.sequence?t:e}function zs(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Os(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function js(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Fs(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 Bs(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 Gs(e){return"STREAMING"===e.status||"PENDING"===e.status}function Hs(e){return{pendingRequest:qs(e).sort((e,t)=>t.sequence-e.sequence).find(Ks)}}function Ks(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=to(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Ws(e){return!!Qs(e)||(!!function(e){return"THINKING"===e.kind&&"thinking..."===e.content.trim().toLowerCase()}(e)||"CHAT"===e.kind&&"ASSISTANT"===e.role&&(0===e.content.trim().length&&"PENDING"!==e.status&&"STREAMING"!==e.status))}function Qs(e){if("PLAN"!==e.kind)return!1;const t=to(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}function Vs(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Ks(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 Js(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Xs(e,t){return Ys(e)===Ys(t)}function Ys(e){return e.runId??e.turnId??e.chatId}function Zs(e){return"COMMAND_EXECUTION"===e.kind?x(et,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Me,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(eo,{}):x(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function eo(){return x(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function to(e){return e&&"object"==typeof e?e:void 0}function no(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}function ao({...e}){return x(Ut.Root,{"data-slot":"popover",...e})}function ro({...e}){return x(Ut.Trigger,{"data-slot":"popover-trigger",...e})}function io({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Ut.Portal,{children:x(Ut.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Ut.Popup,{"data-slot":"popover-content",className:jn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function so({className:e,...t}){return x("div",{"data-slot":"popover-header",className:jn("flex flex-col gap-0.5 text-sm",e),...t})}function oo({className:e,...t}){return x(Ut.Title,{"data-slot":"popover-title",className:jn("font-medium",e),...t})}function co({className:e,...t}){return x(Ut.Description,{"data-slot":"popover-description",className:jn("text-muted-foreground",e),...t})}function lo({...e}){return x(vt.Root,{"data-slot":"sheet",...e})}function uo({...e}){return x(vt.Portal,{"data-slot":"sheet-portal",...e})}function mo({className:e,...t}){return x(vt.Backdrop,{"data-slot":"sheet-overlay",className:jn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function ho({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(uo,{children:[x(mo,{}),y(vt.Popup,{"data-slot":"sheet-content","data-side":n,className:jn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(vt.Close,{"data-slot":"sheet-close",render:x(Ta,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function fo({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:jn("flex flex-col gap-0.5 p-4",e),...t})}function po({className:e,...t}){return x(vt.Title,{"data-slot":"sheet-title",className:jn("font-heading text-base font-medium text-foreground",e),...t})}function go({className:e,...t}){return x(vt.Description,{"data-slot":"sheet-description",className:jn("text-sm text-muted-foreground",e),...t})}var vo=S.createContext(null);function wo(){const e=S.useContext(vo);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function bo({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=S.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return S.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=S.useState(!1),[l,u]=S.useState(e),m=t??l,h=S.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=S.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);S.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=S.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(vo.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:jn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function xo({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}=wo();return"none"===n?x("div",{"data-slot":"sidebar",className:jn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(lo,{open:c,onOpenChange:l,...s,children:y(ho,{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(fo,{className:"sr-only",children:[x(po,{children:"Sidebar"}),x(go,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:jn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:jn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function yo({className:e,onClick:t,...n}){const{toggleSidebar:a}=wo();return y(Ta,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:jn(e),onClick:e=>{t?.(e),a()},...n,children:[x(qe,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function No({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:jn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function Io({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:jn("flex flex-col gap-2 p-2",e),...t})}function ko({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:jn("flex flex-col gap-2 p-2",e),...t})}function Ao({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:jn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function Co({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:jn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function Eo({className:e,render:t,...n}){return gt({defaultTagName:"div",props:pt({className:jn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function Mo({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:jn("w-full text-sm",e),...t})}function To({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:jn("flex w-full min-w-0 flex-col gap-0",e),...t})}function So({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:jn("group/menu-item relative",e),...t})}var Po=mt("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function Do({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=wo(),c=gt({defaultTagName:"button",props:pt({className:jn(Po({variant:n,size:a}),i)},s),render:r?x(Gn,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Bn,{children:[c,x(Hn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function Lo({className:e,size:t="default",...n}){return x(zt.Root,{"data-slot":"switch","data-size":t,className:jn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(zt.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 Ro({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=E(),[o,d]=_(new Set),[c,l]=_(e??""),[u,m]=_("directory"),[h,f]=_(e??""),[p,g]=_(""),[v,w]=_(!0),[b,N]=_(!1),[I,A]=_(""),[M,T]=_(""),S=C({enabled:r,queryKey:jo(i,void 0),queryFn:()=>ea(i,void 0)}),P=S.data,D=P?.root??P?.path??"",L=c||P?.path||"",$=k({mutationFn:()=>{const e=I||L||P?.path,t=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 ia(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),T(""),O.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),U(e.path)}});function q(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of Fo(e,D))n.add(a);return n})}function U(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&q(e)}return R(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),A(""),T(""))},[e,r]),R(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of Fo(t,P.root))n.add(a);return n})},[e,P]),x(Ja,{open:r,onOpenChange:n,children:y(er,{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(tr,{className:"gap-1 px-4 pb-2 pt-3",children:[x(ar,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(rr,{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(Oo,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:x(we,{})}),x(Oo,{disabled:!L||$.isPending,label:"New folder",onClick:function(){const e=L||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),A(e),T(""),d(t=>{const n=new Set(t);if(D)for(const a of Fo(e,D))n.add(a);return n.add(e),n}))},children:x(fe,{})}),x(Oo,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Be,{className:jn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[x(zo,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative hidden min-w-0 sm:block",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 w-44 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(Oo,{label:"Open path",onClick:z,children:x(X,{})})]}):null,y("div",{className:"flex min-w-0 items-center gap-2 sm:hidden",children:[x(zo,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative min-w-0 flex-1",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(Jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x($o,{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:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),A(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>$.mutate(),onOpen:U,onSelect:q,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(nr,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":L||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(Ta,{disabled:!L||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!L||"file"===t&&"file"!==u||(a(L),n(!1))},children:[x(W,{}),"file"===t?"Attach":"OK"]}),x(Ta,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function $o({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=Ho(f)===Ho(r.path),N=v&&Ho(t)===Ho(r.path),I=C({enabled:w&&!a,queryKey:jo(g,r.path),queryFn:()=>ea(g,r.path)}),k=a??I.data,A=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),M=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(_o,{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(qo,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x($o,{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(Uo,{entry:e,level:o+1,selected:"file"===p&&Ho(f)===Ho(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 qo({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),x(Sa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(Oo,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(W,{})}),x(Oo,{disabled:i,label:"Cancel new folder",onClick:n,children:x(it,{})})]})}function _o({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:jn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(X,{className:jn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?he:me,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Uo({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:jn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(ce,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function zo({onClick:e,showPath:t}){return x(Oo,{label:t?"Hide path":"Show path",pressed:t,onClick:e,children:x(t?oe:de,{})})}function Oo({children:e,disabled:t,label:n,onClick:a,pressed:r}){return y(Ta,{"aria-pressed":r,className:jn("size-7 p-0",r&&"bg-muted text-foreground"),disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function jo(e,t){return["workspace-directory",e.serverUrl,t]}function Fo(e,t){const n=Go(t),a=Go(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=Bo(s,o),r.push(s);return r}function Bo(e,t){const n=e.includes("\\")?"\\":"/";return`${Go(e)}${n}${t}`}function Go(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function Ho(e){return Go(e).toLocaleLowerCase()}function Ko(){const{loading:e,session:t}=wa(),{chatId:n}=g(),a=function(e){const[t,n]=_(!1),[a,r]=_(0),[i,s]=_(null);return R(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return a.on("connect",()=>{n||t.onOpen?.()}),a.on("disconnect",()=>{n||t.onClose?.()}),a.on("connect_error",e=>{n||t.onError?.(e)}),a.on("terminal:count",e=>{n||t.onCount?.(e)}),a.on("terminal:project",e=>{n||t.onProject?.(e)}),a.on("terminal:output",e=>{n||t.onOutput?.(e)}),a.on("terminal:exit",e=>{n||t.onExit?.(e)}),{disconnect:()=>{n=!0,a.disconnect()},socket:a}}(e,{onClose:()=>n(!1),onCount:e=>r(Math.max(0,e.count)),onError:()=>n(!1),onOpen:()=>n(!0)});return s(t.socket),()=>{t.disconnect(),n(!1),s(null)}},[e?.serverUrl,e?.token]),{connected:t,count:a,socket:i}}(t),[s,o]=_(""),[d,c]=_(null),[l,u]=_(0),[m,h]=_(!1),[p,v]=_("accounts"),[w,N]=_(!1),[I,k]=_(null),M=f(),T=E(),S=D(e=>{u(e?.focusCreate?e=>e+1:0),v("accounts"),h(!0)},[]),P=D(e=>{"accounts"===e&&u(0),v(e)},[]),L=D((e="accounts")=>{v(e),h(!0)},[]),q=C({enabled:!!t,queryKey:["accounts"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts",{token:e.token})}(t),refetchInterval:e=>!!e.state.data?.some(e=>"AUTHENTICATING"===e.status)&&1500}),U=C({enabled:!!t,queryKey:["chats"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/chats",{token:e.token})}(t)}),z=$(()=>q.data??[],[q.data]),O=$(()=>U.data??[],[U.data]),j=$(()=>n?O.find(e=>e.id===n)??null:null,[n,O]),F=j?.title??null;R(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=O.find(e=>e.id===n);if(e)return e}if(d){const e=O.find(e=>e.id===d);if(e)return e}return O[0]??null},[n,O,d]),G=$(()=>z.filter(e=>"CONNECTED"===e.status),[z]);Wn(F);const H=A({queries:G.map(e=>({enabled:!!t,queryKey:["rate-limits",e.id],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}(t,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),K=$(()=>Object.fromEntries(G.map((e,t)=>{const n=wr(H[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[H,G]),W=$(()=>Object.fromEntries(G.map(e=>{const t=K[e.id];return t?[e.id,br(t)]:null}).filter(e=>!!e)),[K,G]),Q=$(()=>Object.fromEntries(G.map((e,t)=>[e.id,H[t]?.isFetching??!1])),[H,G]),V=H.some(e=>Yd(e.error));if(R(()=>{V&&T.invalidateQueries({queryKey:["accounts"]})},[V,T]),R(()=>{s.trim()||N(!1)},[s]),e)return x(id,{});if(!t)return x(r,{replace:!0,to:"/connect"});const J={accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:O,connectedAccounts:G,lastOpenedChat:B,openAccountManagement:S,openWorkspacePicker:k,session:t,setActiveProjectPath:o,setTerminalOpen:N,terminalCount:a.count,terminalOpen:w,terminalSocket:a.socket,terminalSocketConnected:a.connected};return y(b,{children:[y(bo,{className:"h-svh min-h-0 overflow-hidden",children:[y(xo,{collapsible:"offcanvas",variant:"inset",children:[x(Io,{children:y(Ta,{className:"w-full justify-start",variant:"ghost",onClick:()=>M("/"),children:[x(Ye,{}),x("span",{children:"New chat"})]})}),x(Ao,{children:y(Co,{className:"p-0",children:[x(Eo,{children:"Chats"}),x(Mo,{children:x(Jo,{chats:O,session:t})})]})}),x(ko,{children:y(Ta,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[x(Qe,{}),x("span",{children:"Settings"})]})})]}),y(No,{className:"min-h-0 min-w-0 overflow-hidden",children:[y("header",{className:"flex h-12 shrink-0 items-center justify-between gap-2 border-b px-2",children:[y("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[x(yo,{variant:"ghost",children:x(Se,{})}),x("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold tracking-normal",children:F??(n?"Chat":"New chat")})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[j?y(b,{children:[x(Wo,{active:w,className:jn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),x(dd,{chatId:j.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===j.status,session:t})]}):null,x(Qo,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>M("/")}),x(fi,{})]})]}),q.error||U.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:q.error?.message??U.error?.message??"Unable to load workspace data."}):null,x("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(i,{context:J})})]})]}),x(Zr,{accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?x(Ro,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function Wo({active:e,className:t,compact:n=!1,count:a,disabled:r,onToggle:i}){const s=a??0;return y(Ta,{"aria-label":"Terminal","aria-pressed":e,className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:r,size:n?"icon":"sm",title:r?"Choose a working directory":"Terminal",type:"button",variant:"ghost",onClick:i,children:[x(et,{className:"size-3.5"}),x("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?x("span",{className:jn("inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-sidebar-accent px-1 text-[0.65rem] leading-none text-sidebar-accent-foreground",n?"absolute -right-1 -top-1":"ml-0.5"),children:s}):null]})}function Qo({onAddAccount:e,onNewChat:t}){return y(ir,{children:[y(sr,{render:x(Ta,{size:"icon",variant:"ghost"}),children:[x(je,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(or,{align:"end",className:"w-44",children:[y(dr,{onClick:t,children:[x(Ye,{}),"New chat"]}),y(dr,{onClick:e,children:[x(rt,{}),"Add account"]})]})]})}var Vo=4;function Jo({chats:e,session:t}){const n=f(),{chatId:a}=g(),r=E(),[i,s]=_(null),[o,d]=_(""),[c,l]=_(null),[u,m]=_(()=>new Set),[h,p]=_(()=>new Set),v=$(()=>e.map(e=>{return{chat:e,dateLabel:Ud(e.lastActivityAt),folderKey:(t=e.workingDirectory,Od(t)),folderName:zd(e.workingDirectory),folderPath:Od(e.workingDirectory)};var t}),[e]),w=$(()=>{const e=new Map;for(const t of v){const n=new Date(t.chat.lastActivityAt).getTime(),a=e.get(t.folderKey);a?(a.items.push(t),a.latestActivityAt=Math.max(a.latestActivityAt,n)):e.set(t.folderKey,{items:[t],key:t.folderKey,latestActivityAt:n,name:t.folderName,path:t.folderPath})}return Array.from(e.values()).map(e=>({...e,items:e.items.sort((e,t)=>new Date(t.chat.lastActivityAt).getTime()-new Date(e.chat.lastActivityAt).getTime()||e.chat.title.localeCompare(t.chat.title,void 0,{sensitivity:"base"}))})).sort((e,t)=>t.latestActivityAt-e.latestActivityAt||e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=k({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return na(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>O.error(Zd(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),I=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>O.error(Zd(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(b,{children:[x(To,{className:"gap-1",children:w.length?w.map(e=>{const t=u.has(e.key),r=h.has(e.key),i=r?e.items:e.items.slice(0,Vo),o=e.items.length-i.length,c=!!(f=e.path).trim()&&"No folder"!==f;var f;return y(So,{children:[y("div",{className:"flex min-w-0 items-center gap-1 pr-1",children:[y("button",{className:"flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left text-xs font-medium text-sidebar-foreground/75 outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",title:e.path,type:"button",onClick:()=>m(t=>{const n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),children:[x(me,{className:"size-3.5 shrink-0 text-cyan-500"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),x(J,{className:jn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?x(Ta,{"aria-label":`New chat in ${e.name}`,className:"size-7 shrink-0",size:"icon-sm",title:`New chat in ${e.path}`,type:"button",variant:"ghost",onClick:()=>n("/",{state:{workingDirectory:e.path}}),children:x(je,{className:"size-3.5"})}):null]}),t?null:y(To,{className:"gap-0.5 pl-4",children:[i.map(({chat:e,dateLabel:t,folderName:r})=>y(So,{className:"flex min-w-0 items-center",children:[y(Do,{className:"h-7 min-w-0 flex-1 px-2 pr-2! text-xs",isActive:e.id===a,size:"sm",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Pe,{className:"size-3.5 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(ir,{children:[y(sr,{render:x(Ta,{"aria-label":"Chat actions",className:"pointer-events-none h-7 w-0 shrink-0 overflow-hidden opacity-0 transition-[width,opacity] group-hover/menu-item:pointer-events-auto group-hover/menu-item:ml-1 group-hover/menu-item:w-7 group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:ml-1 group-focus-within/menu-item:w-7 group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:ml-1 aria-expanded:w-7 aria-expanded:opacity-100",size:"icon-sm",variant:"ghost"}),children:[x(Le,{className:"size-4"}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(or,{align:"end",className:"w-40",children:[y(dr,{onClick:()=>{s(e),d(e.title)},children:[x(Ue,{}),"Rename"]}),y(dr,{onClick:()=>l(e),children:[x(F,{}),"Archive"]})]})]})]},e.id)),o>0?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>new Set(t).add(e.key)),children:[x(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>Vo?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>{const n=new Set(t);return n.delete(e.key),n}),children:[x(J,{className:"size-3.5 shrink-0 rotate-180"}),x("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):x("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),x(Ja,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(er,{children:[y(tr,{children:[x(ar,{children:"Rename chat"}),x(rr,{children:"Choose a short title for the sidebar."})]}),x(Sa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),x(nr,{children:x(Ta,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),x(Ja,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(er,{children:[y(tr,{children:[x(ar,{children:"Archive chat?"}),y(rr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(nr,{children:[x(Ta,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ta,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[x(F,{}),"Archive"]})]})]})})]})}function Xo(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 Yo(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await ed(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Zo(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 ed(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 td(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:jd(t),path:t}}function nd({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(b,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(Ta,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(it,{className:"size-3"})})]},e.id))}):null]})}function ad(){const{accountRateLimitFetching:e,accountRateLimitSnapshots:t,accountUsageSummaries:n,connectedAccounts:a,lastOpenedChat:r,openAccountManagement:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=Pd(),p=h(),g=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"";const t=e.workingDirectory;return"string"==typeof t?t.trim():""}(p.state),v=g?`${p.key}:${g}`:"",[w,b]=_(""),[N,I]=_([]),[A,M]=_("default"),[T,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,z]=_(r?.accountId??null),[j,F]=_("default"),[B,G]=_(null),[H,K]=_(null),[W,Q]=_(null),[V,J]=_(g||r?.workingDirectory?.trim()||""),X=E(),Y=f(),Z=q(null),ee=q(r?.id??null),te=q(v||null);R(()=>(d(V.trim()),()=>d("")),[d,V]),R(()=>{g&&te.current!==v&&(te.current=v,J(g))},[g,v]),R(()=>{if(!r||ee.current===r.id)return;ee.current=r.id;const e=r.workingDirectory?.trim()??"";e&&J(t=>t.trim()?t:e);const t=r.accountId;t&&z(e=>e??t)},[r]);const ne=$(()=>Ld(a,t),[t,a]),ae=a.find(e=>e.id===U),re=(P&&ae&&Rd(t[ae.id])<0?void 0:ae)??ne??a[0];R(()=>{if(!re?.id)return K(null),S(null),F("default"),G(null),void Q(null);K(re.id),S(re.defaultModel??null),F(re.defaultPermissionMode??"default"),G(re.defaultReasoningEffort??null),Q(re.defaultServiceTier??null)},[re?.defaultModel,re?.defaultPermissionMode,re?.defaultReasoningEffort,re?.defaultServiceTier,re?.id]);const ie=C({enabled:!!re?.id,queryKey:["models",re?.id],queryFn:()=>Zn(o,re.id),staleTime:3e5});R(()=>{Yd(ie.error)&&X.invalidateQueries({queryKey:["accounts"]})},[ie.error,X]);const se=ie.data?.data??[],oe=H===re?.id,de=oe?T:null,ce=oe?B:null,le=oe?W:null,ue=Dd(se,de),me=ue?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],fe=ce??ue?.defaultReasoningEffort??null,pe=ue?.additionalSpeedTiers??[],ge=re?t[re.id]:void 0,ve=!!re&&!!e[re.id],we=k({mutationFn:({accountId:e,settings:t})=>Xn(o,e,t),onError:e=>O.error(Zd(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>Jd(t,e))}}),be=k({mutationFn:async()=>{if(!re)throw new Error("Connect an account before starting a chat.");if(!V.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return ia(e.serverUrl,"/api/chats",{body:t,token:e.token})}(o,{accountId:re.id,autoRotateAccount:P,collaborationMode:A,model:de,permissionMode:j,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await ra(o,e.id,{attachments:Xo(N),content:w.trim()})}},onError:e=>O.error(Zd(e)),onSuccess:({chat:e,response:t})=>{b(""),I([]),L(!1),M("default"),F(re?.defaultPermissionMode??"default"),J(""),X.setQueryData(["messages",e.id],Qd(void 0,Vd(t))),X.invalidateQueries({queryKey:["chats"]}),Y(`/chat/${e.id}`)}}),xe=D(e=>{e?.length&&Yo(e).then(e=>{I(t=>[...t,...e])}).catch(e=>O.error(Zd(e)))},[]),ye=D(()=>{s({initialPath:V,mode:"file",onSelect:e=>{I(t=>[...t,td(e)])}})},[s,V]),Ne=V.trim(),Ie=l&&!!Ne;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(Jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:jn("mx-auto flex min-h-full w-full flex-col px-4",Ie?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-[760px] justify-center py-8"),children:[a.length?null:y("div",{className:"mb-4 rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(Ta,{className:"mt-3",size:"sm",onClick:i,children:[x(rt,{}),"Manage Accounts"]})]}),Ie?x(oi,{onClosePanel:()=>c(!1),projectPath:Ne,socket:u,socketConnected:m}):y("div",{className:"grid gap-3 rounded-2xl border bg-card/80 p-3 shadow-sm dark:border-border/90 dark:bg-card/55",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-xl border bg-transparent px-2 py-1.5 dark:bg-transparent",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-sm shadow-none focus-visible:ring-0 dark:bg-transparent",placeholder:"Working directory",spellCheck:!1,value:V,onChange:e=>J(e.target.value)}),y(Ta,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>s({initialPath:V,onSelect:J}),children:[x(he,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[x(kd,{visible:"plan"===A}),x(pr,{className:jn("min-h-32 resize-none border-0 bg-transparent px-1 shadow-none focus-visible:ring-0 dark:bg-transparent","plan"===A&&"pr-24"),placeholder:"Message Codex",value:w,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!be.isPending&&Xd(w,V,re,N)&&be.mutate())},onPaste:e=>{const t=Zo(e.clipboardData);t.length&&xe(t)}})]}),x(nd,{attachments:N,imageInputRef:Z,onAttachImages:xe,onRemove:e=>I(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(Ad,{attachmentDisabled:be.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:M}),x(sd,{account:re,autoRotate:P,autoRotateDisabled:be.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{z(e)}}),x(Md,{activeReasoningEffort:fe,disabled:!re,modelOptions:se,modelValue:de??"",pending:ie.isFetching,reasoningOptions:me,reasoningValue:ce??"",selectedModel:ue,serviceTierOptions:pe,serviceTierValue:le??"",onSelectModel:e=>{const t=re?.id??null;K(t),S(e||null),G(null),Q(null),t&&we.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=re?.id??null,n=e||null;K(t),G(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:n,defaultServiceTier:le}})},onSelectServiceTier:e=>{const t=re?.id??null,n=e||null;K(t),Q(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:ce,defaultServiceTier:n}})}}),x(Cd,{disabled:!re,mode:j,onSelectMode:e=>{F(e),re?.id&&we.mutate({accountId:re.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Id,{pending:ve,snapshot:ge}),x(Ed,{loading:be.isPending,sendDisabled:!Xd(w,V,re,N),onSend:()=>be.mutate()})]})]})]})]})})})}function rd(){const{chatId:e}=g(),{accounts:t,accountRateLimitFetching:n,accountRateLimitSnapshots:a,accountUsageSummaries:i,connectedAccounts:s,openWorkspacePicker:o,session:d,setActiveProjectPath:c,setTerminalOpen:l,terminalCount:u,terminalOpen:m,terminalSocket:h,terminalSocketConnected:f}=Pd(),[p,v]=_(""),[w,N]=_([]),[I,A]=_(null),M=q(null),T=q(null),S=q(!0),P=E(),L=$(()=>["chat",e],[e]),U=$(()=>["messages",e],[e]);R(()=>{A(null),N([])},[e]);const z=C({enabled:!!e,queryKey:L,queryFn:()=>ta(d,e)}),j=C({enabled:!!e,queryKey:U,queryFn:()=>aa(d,e,0)}),F=C({enabled:!!e&&!I,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(d,e),retry:!1,staleTime:3e4});R(()=>{F.data?.usage&&!I&&A(F.data.usage)},[F.data?.usage,I]);const B=$(()=>j.data?.data??[],[j.data]),G=z.data,H=t.find(e=>e.id===G?.accountId),K="RUNNING"===G?.status,W=$(()=>Hs(B),[B]),Q=$(()=>function(e,t){if(!t)return null;const n=qs(e).filter(e=>!Ws(e)).sort((e,t)=>e.sequence-t.sequence);for(let a=n.length-1;a>=0;a-=1){const e=n[a];if(Hi(e))return e}return null}(B,K),[K,B]),V=$(()=>function(e){return $s(e).filter(Mi)}(B),[B]),J=!(m&&G?.workingDirectory),X=$(()=>[W.pendingRequest?.id,J?Q?.id:void 0,...J?V.map(e=>e.id):[]].filter(e=>!!e),[J,V,Q?.id,W.pendingRequest?.id]),Y=$(()=>function(e){if(!e)return"";const t=to(e.metadata),n=(t?.steps??[]).map(e=>`${e.status}:${e.step}`).join("|");return[e.id,e.status,e.content.length,t?.explanation?.length??0,n].join(":")}(Q),[Q]),Z=$(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]);R(()=>(c(G?.workingDirectory?.trim()??""),()=>c("")),[G?.workingDirectory,c]);const ee=D(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),te=D((e="auto")=>{const t=M.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),ne=C({enabled:!!H?.id&&"CONNECTED"===H.status,queryKey:["models",H?.id],queryFn:()=>Zn(d,H.id),staleTime:3e5});R(()=>{Yd(ne.error)&&P.invalidateQueries({queryKey:["accounts"]})},[ne.error,P]);const ae=H?.id?a[H.id]:void 0,re=!!H?.id&&!!n[H.id],ie=k({mutationFn:t=>na(d,e,{accountId:t.accountId}),onError:e=>O.error(Zd(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&O.success("Chat account updated.")}}),se=k({mutationFn:t=>na(d,e,t),onError:e=>O.error(Zd(e)),onSuccess:e=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]})}}),oe=k({mutationFn:({accountId:e,settings:t})=>Xn(d,e,t),onError:e=>O.error(Zd(e)),onSuccess:e=>{P.setQueryData(["accounts"],t=>Jd(t,e))}}),de=k({mutationFn:t=>ra(d,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??p).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>O.error(Zd(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(v(""),N([])),P.setQueryData(U,t=>Qd(t,Vd(e))),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ce=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(d,e),onError:e=>O.error(Zd(e)),onSuccess:()=>{O.message("Stop requested.")}}),le=k({mutationFn:t=>async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/queued/${n}/steer`,{method:"POST",token:e.token})}(d,e,t.queueId),onError:e=>O.error(Zd(e)),onSuccess:e=>{P.setQueryData(U,t=>da(t,e)),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ue=$(()=>Ld(s,a),[a,s]),me=$(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?Rd(a[n.id])<0?null:!t||"CONNECTED"!==t.status||Rd(a[t.id])<0?n:null:null}(G,H,ue,a),[a,ue,H,G])?.id;R(()=>{!me||ie.isPending||de.isPending||ie.mutate({accountId:me,notify:!1})},[me,de.isPending,ie.isPending]);const he=D(e=>{e?.length&&Yo(e).then(e=>{N(t=>[...t,...e])}).catch(e=>O.error(Zd(e)))},[]),fe=D(()=>{o({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,td(e)])}})},[z.data?.workingDirectory,o]),pe=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:"Implement the latest approved plan from the most recent proposed plan in this thread.",metadata:{action:"implementPlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ge=D(e=>{var t;de.mutate({clearComposer:!1,collaborationMode:"plan",content:(t=e.feedback,["Revise the latest proposed plan from this thread using the following requested changes.","Do not implement yet. Return an updated proposed plan.","",t].join("\n")),metadata:{action:"revisePlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ve=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]),we=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]);if(R(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?(P.setQueryData(U,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return da(e,n);if("message.failed"===t)return da(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)),"message.completed"!==e&&"message.failed"!==e||(P.invalidateQueries({queryKey:U}),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]}))):A(t):n(t)};return function(e,t,n){let a=!1;const r=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(d,e,{onError:e=>O.error(Zd(e)),onEvent:t,onOpen:()=>{var a;aa(d,e,(a=P.getQueryData(U),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>O.error(Zd(e))),ta(d,e).then(n).catch(e=>O.error(Zd(e)))}});function n(e){P.setQueryData(L,e),P.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,L,U,P,d]),R(()=>{S.current=!0;const e=requestAnimationFrame(()=>te("auto"));return()=>cancelAnimationFrame(e)},[e,te]),R(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{te("auto"),e=requestAnimationFrame(()=>te("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[Y,Z,te]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(z.error)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const be=G,xe=H,ye=ne.data?.data??[],Ne=!!be&&!K&&s.length>0,Ie=Dd(ye,be?.model),ke=Ie?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Ae=be?.reasoningEffort??Ie?.defaultReasoningEffort??null,Ee=Ie?.additionalSpeedTiers??[],Me=p.trim().length>0||w.length>0,Te=Xd(p,be?.workingDirectory??"",xe,w);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-sidebar",children:[y("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-b-xl bg-background",children:[x(Jr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:M,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=ee(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(vi,{chatId:e,fileChangeActionDisabled:K,fileChangeActionPending:de.isPending,hiddenMessageIds:X,messages:B,onImplementPlan:pe,onRevisePlan:ge,onReviewFileChanges:ve,onSteerQueuedMessage:e=>le.mutate(e),onUndoFileChanges:we,planActionDisabled:K,planActionPending:de.isPending,queuedMessageActionDisabled:!K||le.isPending,queuedMessageActionPendingId:le.variables?.queueId??null,session:d,showProcessingTail:K&&!W.pendingRequest}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:jn("min-w-0 border-t bg-background",m&&be?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&be?.workingDirectory?x("div",{className:"p-2",children:x("div",{className:"mx-auto max-w-5xl",children:x(oi,{onClosePanel:()=>l(!1),projectPath:be.workingDirectory,socket:h,socketConnected:f})})}):y(b,{children:[x(bi,{message:Q}),x(xi,{disabled:!K||le.isPending,messages:V,pendingQueueId:le.variables?.queueId??null,onSteerQueuedMessage:e=>le.mutate(e)}),x(wi,{chatId:e,messages:B,session:d}),x("div",{className:"p-2",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[y("div",{className:"relative min-w-0",children:[x(kd,{visible:"plan"===(be?.collaborationMode??"default")}),x(pr,{className:jn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(be?.collaborationMode??"default")&&"pr-24"),placeholder:be?.workingDirectory?xe?"Message Codex":"Choose an account first":"Choose a directory first",value:p,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Te&&de.mutate({attachments:Xo(w),clearComposer:!0,delivery:K?"queue":void 0}))},onPaste:e=>{const t=Zo(e.clipboardData);t.length&&he(t)}})]}),x(nd,{attachments:w,imageInputRef:T,onAttachImages:he,onRemove:e=>N(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(Ad,{attachmentDisabled:de.isPending,disabled:!be,modeDisabled:K,mode:be?.collaborationMode??"default",onAttachFile:fe,onAttachImage:()=>T.current?.click(),pending:se.isPending,onSelectMode:e=>se.mutate({collaborationMode:e})}),x(sd,{account:xe,autoRotate:be?.autoRotateAccount??!1,autoRotateDisabled:!be||se.isPending,connectedAccounts:s,disabled:!be||!s.length,pending:ie.isPending,selectedAccountId:be?.accountId??"",selectionDisabled:!Ne,usageSummaries:i,onAutoRotateChange:e=>se.mutate({autoRotateAccount:e}),onSelect:e=>ie.mutate({accountId:e})}),x(Md,{activeReasoningEffort:Ae,disabled:!be||K||!xe,modelOptions:ye,modelValue:be?.model??"",pending:ne.isFetching||se.isPending,reasoningOptions:ke,reasoningValue:be?.reasoningEffort??"",selectedModel:Ie,serviceTierOptions:Ee,serviceTierValue:be?.serviceTier??"",onSelectModel:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),se.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:t,defaultServiceTier:be.serviceTier??null}}),se.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:be.reasoningEffort??null,defaultServiceTier:t}}),se.mutate({serviceTier:t})}}),x(Cd,{disabled:!be,mode:be?.permissionMode??"default",pending:se.isPending,onSelectMode:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultPermissionMode:e}}),se.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(od,{usage:I}),x(Id,{pending:re,snapshot:ae}),x(Ed,{loading:de.isPending,running:K,hasDraft:Me,sendDisabled:!Te,stopPending:ce.isPending,onSend:()=>de.mutate({attachments:Xo(w),clearComposer:!0,delivery:K?"queue":void 0}),steerDisabled:!K||de.isPending||!Te,onSteer:()=>de.mutate({attachments:Xo(w),clearComposer:!0,delivery:"steer"}),onStop:()=>ce.mutate()})]})]})]})})]})})]}),be?y("div",{className:"hidden min-h-9 shrink-0 items-center justify-end gap-1 bg-sidebar px-3 py-1 md:-mb-2 md:flex",children:[x(Wo,{active:m,className:jn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!be.workingDirectory?.trim(),onToggle:()=>l(!m)}),x(dd,{chatId:be.id,className:"text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground aria-expanded:bg-sidebar-accent aria-expanded:text-sidebar-accent-foreground",disabled:K,session:d})]}):null]})}function id(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})})}function sd({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(ir,{children:[y(sr,{render:x(Ta,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(t?Be:rt,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(or,{align:"start",className:"w-64",children:[i?y(b,{children:[y(dr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Be,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(Lo,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(fr,{})]}):null,a.map(e=>{const t=e.id===d;return y(dr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):x("span",{className:"ml-auto"}),t?x(W,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function od({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Nr(e.usedPercent);return y(ao,{children:[x(ro,{render:x(Ta,{"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(io,{align:"end",className:"w-72",side:"top",children:[y(so,{children:[x(oo,{children:"Context window"}),x(co,{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:[Fd(e.tokensUsed)," /"," ",Fd(e.tokenLimit)," tokens used"]})]})]})]})}function dd({chatId:e,className:t,compact:n=!1,disabled:a,session:r}){const[i,s]=_(!1),o=E(),d=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(r,e),refetchInterval:2e4,retry:!1}),c=d.data;if(c&&!c.isRepo)return null;const l=c?.branch??"Git",u=!!c&&!c.clean,m=c?Nd(c):"";return y(Ja,{open:i,onOpenChange:s,children:[y(Ta,{"aria-label":"Git"+(l?`: ${l}`:""),className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:d.isLoading&&!c,size:n?"icon":"sm",title:l,type:"button",variant:"ghost",onClick:()=>s(!0),children:[x(ge,{className:"size-3.5"}),n&&c?x("span",{className:jn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(b,{children:[x("span",{className:"min-w-0 truncate",children:l}),m?x("span",{className:"shrink-0 text-muted-foreground",children:m}):null,x("span",{className:jn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?x(cd,{chatId:e,disabled:a,queryClient:o,session:r,status:c}):null]})}function cd({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=_(""),[o,d]=_(""),[c,l]=_(""),[u,m]=_(null),[h,f]=_(null),p=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),g=C({enabled:!!e,queryKey:["git-diff",e,h],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return ia(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e,h),retry:!1}),v=C({enabled:!!e,queryKey:["git-history",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/history`,{token:e.token})}(a,e),retry:!1}),w=k({mutationFn:function(t){return async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>O.error(Zd(e)),onSuccess:t=>{O.success(t.message),d(""),l(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})}}),b=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(p.data,i),N=w.data?.status??r,I=$(()=>N?.changedFiles??[],[N]),A=$(()=>v.data?.commits??[],[v.data]),E=A.find(e=>e.hash===u)??null,M=t||w.isPending||!N||!1===N.isRepo,T=g.data?.diff?.trim()||g.data?.stat?.trim()||"",S=h??"All changes";return R(()=>{f(e=>I.length?e&&I.some(t=>t.path===e)?e:I[0]?.path??null:null)},[I]),R(()=>{m(e=>A.length?e&&A.some(t=>t.hash===e)?e:A[0]?.hash??null:null)},[A]),y(er,{className:"flex h-[min(90vh,760px)] w-[min(1180px,calc(100vw-1rem))] max-w-none flex-col overflow-hidden p-0",children:[y(tr,{className:"gap-2 px-4 pb-3 pr-12 pt-4",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(ar,{className:"flex min-w-0 items-center gap-2 text-base",children:[x(ve,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Git"})]}),x(ld,{branches:b,branchFilter:i,currentBranch:N?.branch,loading:p.isFetching&&!p.data,locked:M,newBranchName:c,onBranchFilterChange:s,onCheckout:e=>{window.confirm(`Switch to ${e}?`)&&w.mutate({action:"checkout",branch:e})},onCreateBranch:()=>w.mutate({action:"createBranch",branch:c.trim()}),onNewBranchNameChange:l}),x("span",{className:jn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),x("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:w.isPending?"Running git...":N?yd(N):"Loading..."}),y("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[y(Ta,{disabled:M,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&w.mutate({action:"pull"})},children:[x(ie,{}),"Pull"]}),y(Ta,{disabled:M,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[x(at,{}),"Push"]}),x(Ta,{size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})},children:x(Be,{className:jn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),x(rr,{className:"sr-only",children:"Manage repository changes, branches, commits, pull, push, and history."})]}),y("div",{className:"grid min-h-0 flex-1 overflow-y-auto border-t lg:grid-cols-[18rem_minmax(0,1fr)_19rem] lg:overflow-hidden",children:[y("section",{className:"grid min-h-[20rem] grid-rows-[auto_minmax(0,1fr)_auto] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ae,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),x("span",{className:"text-xs text-muted-foreground",children:I.length})]}),x(Jr,{className:"min-h-0",children:x(ud,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(pr,{className:"min-h-20 resize-none text-sm",placeholder:"Commit message",value:o,onChange:e=>d(e.target.value)}),y(Ta,{className:"justify-center",disabled:M||!o.trim()||N?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&w.mutate({action:"commit",message:o.trim()})},children:[x(ve,{}),"Commit All"]})]})]}),y("section",{className:"grid min-h-[24rem] min-w-0 grid-rows-[auto_minmax(0,1fr)] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex min-w-0 items-center gap-2 border-b px-3 py-2",children:[x(ue,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[x("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),x("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?x(Ta,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),x("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:x(md,{diff:g.data?.diff??"",error:g.error,fallback:g.data?.stat??"",loading:g.isFetching&&!T})})]}),y("section",{className:"grid min-h-[22rem] grid-rows-[auto_minmax(0,1fr)_auto] lg:min-h-0",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(te,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"History"})]}),x("span",{className:"text-xs text-muted-foreground",children:A.length})]}),x(wd,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),x("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[x("div",{className:"line-clamp-2 font-medium",children:E.subject}),x("div",{className:"truncate font-mono text-muted-foreground",children:E.hash}),y("div",{className:"truncate text-muted-foreground",children:[E.authorName||"Unknown author"," ·"," ",xd(E.authoredAt)]})]}):x("div",{className:"text-muted-foreground",children:"No commit selected."})})]})]})]})}function ld({branches:e,branchFilter:t,currentBranch:n,loading:a,locked:r,newBranchName:i,onBranchFilterChange:s,onCheckout:o,onCreateBranch:d,onNewBranchNameChange:c}){return y(ao,{children:[y(ro,{render:x(Ta,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[x(ge,{}),x("span",{className:"min-w-0 truncate",children:n??"No branch"}),x(J,{className:"ml-1 size-3.5 text-muted-foreground"})]}),y(io,{align:"start",className:"w-80 gap-0 p-0",side:"bottom",children:[y(so,{className:"border-b p-3",children:[x(oo,{children:"Branches"}),y(co,{children:["Current branch: ",n??"detached"]})]}),x("div",{className:"grid gap-2 p-3",children:x(Sa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),x(Jr,{className:"max-h-72 border-y",children:y("div",{className:"grid gap-1 p-2",children:[e.map(e=>y(Ta,{className:"justify-start",disabled:r||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>o(e.name),children:[e.current?x(W,{}):x(ge,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:a?"Loading branches...":"No branches found."})]})}),y("div",{className:"grid gap-2 p-3",children:[x(Sa,{className:"h-8",placeholder:"New branch",value:i,onChange:e=>c(e.target.value)}),y(Ta,{disabled:r||!i.trim(),size:"sm",type:"button",variant:"outline",onClick:d,children:[x(je,{}),"Create branch"]})]})]})]})}function ud({files:e,loading:t,selectedPath:n,onSelect:a}){return t?x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid min-w-0 grid-cols-[2.25rem_minmax(0,1fr)] items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs outline-none hover:bg-muted focus-visible:bg-muted",n===e.path&&"bg-muted"),type:"button",onClick:()=>a(e.path),children:[x("span",{className:jn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",bd(e.status)),children:e.status.trim()}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function md({diff:e,error:t,fallback:n,loading:a}){const r=$(()=>function(e){const t=e.trim();return t?function(e){const t=[];let n=[];for(const a of e.split("\n"))a.startsWith("diff --git ")&&n.length&&(t.push(n),n=[]),n.push(a);n.length&&t.push(n);return t}(t).map(fd).filter(e=>!!e):[]}(e),[e]);return t?x("div",{className:"p-3 font-mono text-xs text-destructive",children:Zd(t)}):a?x("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?x("div",{className:"min-w-max divide-y",children:r.map(e=>y("section",{className:"bg-background",children:[y("div",{className:"sticky top-0 z-10 border-b bg-background/95 px-3 py-2 backdrop-blur",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ce,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?x("div",{className:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 font-mono text-[0.68rem] text-muted-foreground",children:e.meta.slice(0,3).map(e=>x("span",{className:"truncate",children:e},e))}):null]}),x("div",{className:"py-1 font-mono text-xs leading-5",children:e.hunks.map((t,n)=>y("div",{children:[y("div",{className:"grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-y bg-muted/70 text-[0.68rem] text-muted-foreground",children:[x("div",{className:"border-r px-2 py-1 text-right",children:"line"}),x("div",{}),x("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>x(hd,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):x("pre",{className:"min-h-full min-w-0 overflow-auto p-3 font-mono text-xs leading-5 text-muted-foreground",children:n.trim()||"No tracked diff."})}function hd({fileLanguage:e,line:t}){const n="add"===t.type?"+":"delete"===t.type?"-":"meta"===t.type?"\\":" ",a="delete"===t.type?t.oldNumber:t.newNumber??t.oldNumber,r="meta"===t.type?t.content.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):pi(t.content||" ",e);return y("div",{className:jn("grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-l-2","add"===t.type&&"border-l-emerald-500 bg-emerald-500/10 text-emerald-950 dark:text-emerald-50","delete"===t.type&&"border-l-red-500 bg-red-500/10 text-red-950 dark:text-red-50","context"===t.type&&"border-l-transparent bg-background","meta"===t.type&&"border-l-transparent bg-muted/40 text-muted-foreground"),children:[x("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),x("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),x("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function fd(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=pd(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return pd(t[3]??t[2]??"")}(e);if(!t)return null;const n={hunks:[],language:vd(t),meta:[],path:t};let a=null,r=0,i=0;for(const s of e){if(s.startsWith("@@")){const e=gd(s);r=e.oldStart,i=e.newStart,a={header:s,lines:[]},n.hunks.push(a);continue}a?s.startsWith("+")&&!s.startsWith("+++")?(a.lines.push({content:s.slice(1),newNumber:i,oldNumber:null,type:"add"}),i+=1):s.startsWith("-")&&!s.startsWith("---")?(a.lines.push({content:s.slice(1),newNumber:null,oldNumber:r,type:"delete"}),r+=1):s.startsWith("\\")?a.lines.push({content:s,newNumber:null,oldNumber:null,type:"meta"}):(a.lines.push({content:s.startsWith(" ")?s.slice(1):s,newNumber:i,oldNumber:r,type:"context"}),r+=1,i+=1):s.startsWith("diff --git ")||s.startsWith("--- ")||s.startsWith("+++ ")||n.meta.push(s)}return n.hunks.length?n:null}function pd(e){const t=e.trim().replace(/^"|"$/g,"");return t?t.replace(/^[ab]\//,""):null}function gd(e){const t=e.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);return{newStart:Number(t?.[2]??0),oldStart:Number(t?.[1]??0)}}function vd(e){switch(e.split(".").pop()?.toLocaleLowerCase()){case"bash":case"sh":return"bash";case"css":return"css";case"go":return"go";case"htm":case"html":case"svg":case"xml":return"xml";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"json":return"json";case"md":case"mdx":return"markdown";case"py":return"python";case"rs":return"rust";case"sql":return"sql";case"ts":case"tsx":return"typescript";case"yaml":case"yml":return"yaml";default:return null}}function wd({commits:e,error:t,fetching:n,selectedHash:a,onSelect:r}){return t?x("div",{className:"p-3 text-xs text-destructive",children:Zd(t)}):n&&!e.length?x("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?x(Jr,{className:"min-h-0",children:x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid gap-1 rounded-md px-2 py-2 text-left outline-none hover:bg-muted focus-visible:bg-muted",a===e.hash&&"bg-muted"),type:"button",onClick:()=>r(e.hash),children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),x("span",{className:"shrink-0 font-mono text-[0.68rem] text-muted-foreground",children:e.shortHash})]}),y("div",{className:"flex min-w-0 items-center gap-1.5 text-[0.68rem] text-muted-foreground",children:[x("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),x("span",{"aria-hidden":"true",children:"·"}),x("span",{className:"shrink-0",children:xd(e.authoredAt)})]}),e.refs.length?x("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>x("span",{className:"max-w-full truncate rounded bg-secondary px-1.5 py-0.5 text-[0.65rem] text-secondary-foreground",children:e},e))}):null]},e.hash))})}):x("div",{className:"p-3 text-xs text-muted-foreground",children:"No commits found."})}function bd(e){return e.includes("D")?"bg-red-500/10 text-red-700 dark:text-red-300":e.includes("A")||e.includes("?")?"bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":e.includes("R")||e.includes("C")?"bg-blue-500/10 text-blue-700 dark:text-blue-300":"bg-amber-500/10 text-amber-700 dark:text-amber-300"}function xd(e){const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":t.toLocaleString(void 0,{day:"2-digit",hour:"2-digit",minute:"2-digit",month:"short",year:"numeric"})}function yd(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Nd(e)].filter(Boolean).join(" · "):"Git unavailable"}function Nd(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Id({pending:e,snapshot:t}){const n=br(t),a=xr(t);return y(ao,{children:[y(ro,{render:x(Ta,{className:jn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ce,{className:"size-3 animate-spin"}):x(ot,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(io,{align:"start",className:"w-80",side:"top",children:[y(so,{children:[x(oo,{children:"Usage capacity"}),x(co,{children:"Current Codex account limits refresh automatically."})]}),x(Td,{pending:e,snapshot:t})]})]})}function kd({visible:e}){return e?y(Va,{className:"pointer-events-none absolute right-1.5 top-1.5 z-10 border-primary/25 bg-background/95 text-foreground shadow-sm backdrop-blur dark:border-primary/40",variant:"outline",children:[x(Ae,{}),x("span",{children:"Plan mode"})]}):null}function Ad({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,pending:o}){const d="plan"===n,c=e||t;return y(ir,{children:[x(sr,{render:x(Ta,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:d?"secondary":"ghost"}),children:o?x(Ce,{className:"animate-spin"}):x(je,{})}),y(or,{align:"start",className:"w-56",children:[y(dr,{className:"gap-3 py-2",disabled:t||a||o,onClick:e=>{e.preventDefault(),s(d?"default":"plan")},children:[x(Ae,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(Lo,{checked:d,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(dr,{className:"gap-3 py-2",disabled:c||!i,onClick:i,children:[x(be,{}),x("span",{children:"Attach image"})]}),y(dr,{className:"gap-3 py-2",disabled:c||!r,onClick:r,children:[x(_e,{}),x("span",{children:"Attach workspace file"})]})]})]})}function Cd({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(ir,{children:[y(sr,{render:x(Ta,{"aria-label":Wd(t),className:jn("max-w-40 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",r&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-100 aria-expanded:bg-orange-100 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/45 dark:aria-expanded:bg-orange-950/45"),disabled:e||a,size:"sm",title:Wd(t),variant:"ghost"}),children:[a?x(Ce,{className:"animate-spin"}):x(r?Je:Ve,{}),x("span",{className:"truncate max-sm:sr-only",children:Wd(t)})]}),x(or,{align:"start",className:"w-48",children:y(mr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(hr,{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(hr,{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 Ed({hasDraft:e,loading:t,onSend:n,onSteer:a,onStop:r,running:i=!1,sendDisabled:s,steerDisabled:o,stopPending:d=!1}){return i&&!e?x(Ta,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:d||!r,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:r,children:d?x(Ce,{className:"animate-spin"}):x(Xe,{})}):i&&e?y("div",{className:"group relative flex shrink-0",children:[x("div",{className:"absolute right-0 bottom-full z-20 hidden min-w-48 pb-2 group-focus-within:block group-hover:block",children:y("div",{className:"grid gap-1 rounded-lg border bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10",children:[y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:o||t||!a,type:"button",onClick:a,children:[x(H,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Steer active task"})]}),y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:s||t,type:"button",onClick:n,children:[x(te,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Queue after current task"})]})]})}),x(Ta,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:s||t,size:"icon",title:"Queue message",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})]}):x(Ta,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:s||t,size:"icon",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})}function Md({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?Hd(e):null,a?Kd(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(ir,{children:[y(sr,{render:x(Ta,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(re,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(or,{align:"start",className:"w-72",children:[y(cr,{children:[y(lr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(K,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Hd(e)})]}),x(ur,{className:"w-52",children:y(mr,{value:c,onValueChange:i,children:[x(hr,{value:"",children:"Model default"}),d.map(e=>x(hr,{value:e,children:Hd(e)},e))]})})]}),y(cr,{children:[y(lr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(re,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(ur,{className:"w-64",children:y(mr,{value:a,onValueChange:r,children:[x(hr,{value:"",children:"Default model"}),n.map(e=>x(hr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(cr,{children:[y(lr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(pe,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Kd(m)})]}),x(ur,{className:"w-52",children:y(mr,{value:m,onValueChange:s,children:[x(hr,{value:"",children:"Default speed"}),u.map(e=>x(hr,{value:e,children:Kd(e)},e))]})})]})]})]})}function Td({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: ",Gd(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,Gd(n))}):null]}),x(Sd,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(Sd,{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 Sd({fallbackLabel:e,severity:t,window:n}){const a=Nr(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=yr(n);return y("div",{className:jn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:$d(n,e)}),x("span",{className:jn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:jn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:jn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:qd(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",_d(n.resetsAt)]}):null]})]})}function Pd(){return p()}function Dd(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function Ld(e,t){return e.map((e,n)=>({account:e,index:n,score:Rd(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function Rd(e){if(!e)return 0;if(e.rateLimitReachedType||xr(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-Nr(e.usedPercent));return t.length?Math.min(...t):0}function $d(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 qd(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function _d(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 Ud(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 zd(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 Od(e){const t=e?.trim();return t?t.replace(/[\\/]+$/,"")||t:"No folder"}function jd(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function Fd(e){return e>=1e6?`${Bd(e/1e6)}M`:e>=1e3?`${Bd(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function Bd(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Gd(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function Hd(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Kd(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Wd(e){return"fullAccess"===e?"Full access":"Default"}function Qd(e,t){let n=e;for(const a of t)n=da(n,a);return n??{data:[],nextCursor:null}}function Vd(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function Jd(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 Xd(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Yd(e){if(!e)return!1;const t=e instanceof Error?e.message:String(e);return e instanceof Qn&&401===e.status||/token_invalidated|authentication token .*invalidated|re-authenticate this account/i.test(t)}function Zd(e){return e instanceof Error?e.message:"Request failed."}var ec=qn({default:()=>tc}),tc=c(function(){return x(Ko,{})}),nc=qn({default:()=>ac}),ac=c(function(){return x(ad,{})}),rc=qn({default:()=>ic}),ic=c(function(){return x(rd,{})}),sc=class extends Error{status;constructor(e,t){super(t),this.status=e}};function oc(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function dc(e){throw new sc(405,`${e} is not supported for this route.`)}function cc(e,t){t.includes(e.method)||dc(e.method)}async function lc(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 sc(400,"JSON body must be an object.");return e}catch(n){if(n instanceof sc)throw n;throw new sc(400,"Request body must be valid JSON.")}}function uc(e,t,n={}){if(null==e){if(n.required)throw new sc(400,`${t} is required.`);return}if("string"!=typeof e)throw new sc(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new sc(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new sc(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function mc(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new sc(400,`${t} must be an array of strings.`);return e}}function hc(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new sc(400,`${t} must be a boolean.`);return e}}function fc(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new sc(400,`${t} must be an object.`);return e}}function pc(e,t,n){const a=e.searchParams.get(t);if(null===a||""===a.trim())return n;const r=Number(a);if(!Number.isInteger(r))throw new sc(400,`${t} must be an integer.`);return r}function gc(e,t){const n=e[t];if(!n)throw new sc(400,`${t} is required.`);return n}function vc(e){return e instanceof sc?oc({message:e.message},{status:e.status}):oc({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var wc=qn({loader:()=>bc});function bc({request:e}){try{return cc(e,["GET"]),oc({status:"ok",service:"xedoc"})}catch(t){return vc(t)}}var xc,yc=globalThis,Nc=wn("~"===(xc=process.env.CODEX_WORKSPACE_ROOT?.trim()||hn())?hn():xc.startsWith("~/")?wn(hn(),xc.slice(2)):xn(xc),".xedoc","xedoc.db"),Ic=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Nc);process.env.DATABASE_URL=Ic,tn(pn(Nc),{recursive:!0,mode:448});var kc=yc.prisma??new Wt({datasources:{db:{url:Ic}}});"production"!==process.env.NODE_ENV&&(yc.prisma=kc);var Ac="server",Cc="scrypt";async function Ec(e){!function(e){if(e.length<8)throw new sc(400,"Server password must be at least 8 characters.")}(e);const t=await Dc()??await async function(e){try{return await kc.serverAuth.create({data:{id:Ac,passwordHash:Lc(e),tokenSecret:Rc(32)}})}catch(t){if(function(e){return e instanceof Kt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new sc(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!==Cc||!a||!r||void 0!==i)&&$c(Gt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new sc(401,"Invalid server password.");return{token:Tc({authHash:Sc(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Mc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new sc(401,"Invalid auth token.");if(!$c(a,Pc(n,t.tokenSecret)))throw new sc(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 sc(401,"Invalid auth token.")}}(n);if(i.authHash!==Sc(t.passwordHash))throw new sc(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new sc(401,"Missing auth token.");return n}(e),await async function(){const e=await Dc();if(!e)throw new sc(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Tc(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${Pc(n,t)}`}function Sc(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function Pc(e,t){return jt("sha256",t).update(e).digest("base64url")}async function Dc(){return kc.serverAuth.findUnique({where:{id:Ac}})}function Lc(e){const t=Rc(16);return`${Cc}:${t}:${Gt(e,t,64).toString("base64url")}`}function Rc(e){return Ft(e).toString("base64url")}function $c(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ht(n,a)}var qc=qn({loader:()=>_c});async function _c({request:e}){try{return cc(e,["GET"]),oc(await async function(){return{passwordConfigured:!!(await Dc())}}())}catch(t){return vc(t)}}var Uc=qn({action:()=>zc});async function zc({request:e}){try{return cc(e,["POST"]),oc(await Ec(uc((await lc(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return vc(t)}}var Oc=qn({loader:()=>jc});async function jc({request:e}){try{return cc(e,["GET"]),oc(await async function(e){return{authenticated:!0,issuedAt:(await Mc(e)).issuedAt}}(e))}catch(t){return vc(t)}}function Fc(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Bc(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Gc(e){const t=Fc(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Hc=class{config;child;initializePromise;stdoutBuffer="";pending=new Map;eventHandlers=new Set;serverRequestHandlers=new Set;constructor(e){this.config=e}request(e,t,n=3e4){return this.ensureStarted().then(()=>this.requestStarted(e,t,n))}waitForEvent(e,t=12e4,n){return new Promise((a,r)=>{if(n?.aborted)return void r(new Error("Stopped waiting for Codex event."));const i=()=>{clearTimeout(o),n?.removeEventListener("abort",s),d()},s=()=>{i(),r(new Error("Stopped waiting for Codex event."))},o=setTimeout(()=>{i(),r(new Error("Timed out waiting for Codex event."))},t),d=this.onEvent(t=>{e(t)&&(i(),a(t))});n?.addEventListener("abort",s,{once:!0})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${Bt()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=Zc(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);return ol(e.codexHome),this.child=In(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&(console.warn(`[codex:${this.config.accountId}] ${t}`),Jc(t)&&Qc(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(il(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(il(t.id)),t.error)return Jc(t.error.message)&&Qc(this.config.accountId,t.error.message),void a.reject(new Error(t.error.message??"Codex request failed."));a.resolve(t)}}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},Kc=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Hc(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()}},Wc=new Set;async function Qc(e,t){Wc.add(e),await kc.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:Xc(t)}})}function Vc(e){Wc.delete(e)}function Jc(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return t.includes("token_invalidated")||t.includes("authentication token has been invalidated")||t.includes("401")&&t.includes("unauthorized")&&t.includes("invalidated")}function Xc(e){const t=(e instanceof Error?e.message:"string"==typeof e?e:"").trim();return t?["Codex authentication token was invalidated. Re-authenticate this account.",t.length>700?`${t.slice(0,700)}...`:t].join("\n"):"Codex authentication token was invalidated. Re-authenticate this account."}async function Yc(e){return(await Kc.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function Zc(e){return wn(sl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function el(e){const t=Zc(e);return ol(t),t}function tl(){return sl(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function nl(){const e=tl();return tn(e,{recursive:!0,mode:448}),Vt(e,448),e}function al(){const e=nl(),t=wn(e,"AGENTS.md");return ml(t,384),{codexHome:e,instructionsPath:t}}function rl(){const e=tl();return wn(e,ll(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>ul(t)-ul(e)).at(0)??"state_5.sqlite")}function il(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function sl(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}function ol(e){tn(e,{recursive:!0,mode:448}),Vt(e,448),function(e){const t=nl();if(xn(e)===xn(t))return;(function(e,t){const n=wn(t,"sessions"),a=wn(e,"sessions");if(tn(n,{recursive:!0,mode:448}),pl(a,n))return;vl(a)&&(gl(a)?.isDirectory()&&hl(a,n),dn(a,wl(a)));un(n,a,"dir")})(e,t),function(e,t){const n=wn(t,"session_index.jsonl"),a=wn(e,"session_index.jsonl");if(ml(n,384),pl(a,n))return;vl(a)&&(gl(a)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");Qt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),dn(a,wl(a)));un(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([fn(rl())]);for(const a of[t,e])for(const e of ll(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))dl(e,t,n)}(e,t),function(e,t){cl(e,t,"AGENTS.md",!0),cl(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function dl(e,t,n){const a=wn(t,n),r=wn(e,n);pl(r,a)||(gl(r)?.isFile()&&fl(r,a),n.endsWith("-wal")||n.endsWith("-shm")||ml(a,384),vl(r)&&dn(r,wl(r)),un(a,r,"file"))}function cl(e,t,n,a){const r=wn(t,n),i=wn(e,n);(a||vl(r)||vl(i))&&(ml(r,384),pl(i,r)||(gl(i)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");if(!a.trim())return Yt(e,t),void Vt(t,384);if(a===n||a.includes(n))return;const r=a.endsWith("\n")?"":"\n",i=n.endsWith("\n")?n:`${n}\n`;Qt(t,`${r}\n\x3c!-- Imported from ${fn(pn(e))}/${fn(e)} during xedoc sharing. --\x3e\n${i}`)}(i,r),vl(i)&&dn(i,wl(i)),un(r,i,"file")))}function ll(e){try{return rn(e)}catch{return[]}}function ul(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function ml(e,t){Jt(nn(e,"a",t)),Vt(e,t)}function hl(e,t){tn(t,{recursive:!0,mode:448});for(const n of rn(e,{withFileTypes:!0})){const a=wn(e,n.name),r=wn(t,n.name);n.isDirectory()?hl(a,r):n.isFile()&&fl(a,r)}}function fl(e,t){vl(t)||(tn(pn(t),{recursive:!0,mode:448}),Yt(e,t))}function pl(e,t){try{return!!en(e).isSymbolicLink()&&xn(pn(e),sn(e))===xn(t)}catch{return!1}}function gl(e){try{return ln(e)}catch{return null}}function vl(e){try{return en(e),!0}catch{return!1}}function wl(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;vl(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var bl=32768,xl="auth.json",yl=262144;async function Nl(){const e=await kc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return Xl(e),function(e){const t=Fl(e);return e.map(e=>nu(e,t.has(e.id)))}(await async function(e){return Promise.all(e.map(async e=>"AUTHENTICATING"===e.status&&_l(e.id)?(Kc.stopRuntime(e.id),kc.codexAccount.update({where:{id:e.id},data:Dl(e.id)})):e))}(e))}async function Il(){const e=Bl({required:!0}),t=await async function(e){const t=(await kc.codexAccount.findMany({orderBy:{createdAt:"asc"}})).flatMap(e=>{const t=Gl(e.id);return t?[{account:e,auth:t}]:[]}),n=t.find(t=>t.auth.fingerprint===e.fingerprint);if(n)return n.account;if(!e.email)return null;const a=t.filter(t=>t.auth.email===e.email);return 1===a.length?a[0].account:null}(e),n=t?await async function(e,t){return Kc.stopRuntime(e.id),jl(e.id,{authJson:t.authJson}),kc.codexAccount.update({where:{id:e.id},data:Dl(e.id)})}(t,e):await async function(e){const t=await kc.codexAccount.create({data:{displayName:e.email??"Local Codex account",command:process.env.CODEX_COMMAND??"codex",args:eu(ql()),environment:eu(void 0)}});return jl(t.id,{authJson:e.authJson}),kc.codexAccount.update({where:{id:t.id},data:Dl(t.id)})}(e);return{imported:1,accounts:[nu(n,!0)],authentications:[{accountId:n.id,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Imported the active local Codex account."}]}}async function kl(e){const t=await Al(e);return function(e){const t=Wl();tn(t,{recursive:!0,mode:448}),Vt(t,448);const n=wn(t,xl);mn(n,`${JSON.stringify(e)}\n`,{encoding:"utf8",mode:384}),Vt(n,384)}(function(e){try{const t=zl(e);if(!Ul(t))throw new sc(409,"Authenticate this xedoc account before making it the active local Codex account.");return t}catch(t){if(t instanceof sc)throw t;throw new sc(409,"Authenticate this xedoc account before making it the active local Codex account.")}}(e)),nu(t,!0)}async function Al(e){const t=await kc.codexAccount.findUnique({where:{id:e}});if(!t)throw new sc(404,"Codex account not found.");return Zl(t.id),t}async function Cl(){const{codexHome:e,instructionsPath:t}=al();await Yl();let n="";try{n=an(t,"utf8")}catch(a){if(!function(e){return!!e&&"object"==typeof e&&"code"in e&&"ENOENT"===e.code}(a))throw a}return{accountId:null,codexHome:e,instructionsPath:t,instructions:n,maxBytes:bl,shared:!0}}async function El(e){const t=function(e){if("string"!=typeof e)throw new sc(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>bl)throw new sc(400,"instructions must be 32768 bytes or fewer.");return t}(e.instructions),{codexHome:n,instructionsPath:a}=al();return await Yl(),mn(a,t,{encoding:"utf8",mode:384}),Vt(a,384),{accountId:null,codexHome:n,instructionsPath:a,instructions:t,maxBytes:bl,shared:!0}}async function Ml(e,t="browser"){const n=await Al(e),a="INVALIDATED"===n.status;if(_l(e)&&!a)return Kc.stopRuntime(e),await kc.codexAccount.update({where:{id:e},data:Dl(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(Kc.stopRuntime(e),function(e){cn(wn(Zc(e),xl),{force:!0})}(e)),await kc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=Rl(n);if(!a){const t=await async function(e){try{return Fc(Fc((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await kc.codexAccount.update({where:{id:e},data:Dl(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=Fc((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===Bc(i?.type)?"device":t,o=function(e,t){return"device"===t?Bc(e?.verificationUrl)??Bc(e?.verification_url)??Bc(e?.authUrl)??Bc(e?.auth_url)??Bc(e?.url)??null:Bc(e?.authUrl)??Bc(e?.auth_url)??Bc(e?.url)??null}(i,s),d=Bc(i?.loginId)??null,c="device"===s?Bc(i?.userCode)??Bc(i?.user_code)??null:null;if(!("device"!==s||o&&c))throw new Error("Codex did not return device login instructions.");const l=o?"AUTHENTICATING":"CONNECTED";return await kc.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Dl(e):{status:l,lastAuthUrl:o,lastAuthMode:s,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){Pl(t);let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),kc.codexAccount.update({where:{id:t},data:Dl(t)}))},s=e=>{a||(a=!0,c(),kc.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{_l(t)?i():$l(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r(),Sl.get(t)===c&&Sl.delete(t)};Sl.set(t,c),r=e.onEvent(e=>{const t=Fc(e.params);if("account/login/completed"===e.method){const e=Bc(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(Bc(t.error)??"Login failed."):void i()}"account/updated"===e.method&&Bc(t?.authMode)&&i()})}(r,e,d),{accountId:e,status:l,authMode:"AUTHENTICATING"===l?s:null,authUrl:o,verificationUrl:"device"===s?o:null,userCode:c,loginId:d,message:"CONNECTED"===l?"Codex account is connected.":"device"===s?"Open the verification URL and enter the device code to finish Codex authentication.":"Complete Codex authentication in the opened browser. xedoc will connect automatically when the Codex callback is received."}}catch(r){const n=r instanceof Error?r.message:"Authentication failed.";return await kc.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 Tl(e,t){const n=await Al(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new sc(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new sc(400,"Callback URL must use http.");if(t.username||t.password)throw new sc(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 sc(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new sc(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Rl(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 sc(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Fc((await i)?.params);if(!1===s?.success){const t=Bc(s.error)??"Login failed.";return await kc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Ll(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await $l(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:_l(e)?(Kc.stopRuntime(e),await kc.codexAccount.update({where:{id:e},data:Dl(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await kc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Ll(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 kc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Ll(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}var Sl=new Map;function Pl(e){Sl.get(e)?.(),Sl.delete(e)}function Dl(e,t){Vc(e);const n=((a=t)?Jl(Bc(a.email))??Jl(Bc(a.accountEmail))??Jl(Bc(a.chatgptEmail))??Jl(Bc(Fc(a.profile)?.email))??Jl(Bc(Fc(a.user)?.email)):null)??function(e){try{return Ql(zl(e))}catch{return null}}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function Ll(e){return"browser"===e||"device"===e?e:null}function Rl(e){return Kc.getRuntime({accountId:e.id,command:e.command,args:au(e.args),workingDirectory:null,environment:Gc(e.environment)})}async function $l(e,t){const n=Fc(Fc((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await kc.codexAccount.update({where:{id:e},data:Dl(e,n)}),!0)}function ql(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function _l(e){try{return Ul(zl(e))}catch{return!1}}function Ul(e){return!("chatgpt"!==Bc(e.auth_mode)||!Fc(e.tokens)&&!Bc(e.OPENAI_API_KEY))}function zl(e){const t=an(wn(Zc(e),xl),"utf8");return Fc(JSON.parse(t))??{}}function Ol(e){try{const t=zl(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function jl(e,t){if(!t)return;const n=el(e),a=`${JSON.stringify(t.authJson)}\n`;mn(wn(n,xl),a,{encoding:"utf8",mode:384}),Vt(wn(n,xl),384)}function Fl(e){const t=Bl({required:!1});if(!t)return new Set;const n=e.flatMap(e=>{const t=Gl(e.id);return t?[{account:e,auth:t}]:[]}),a=n.filter(e=>e.auth.fingerprint===t.fingerprint);return a.length?new Set(a.map(e=>e.account.id)):t.email?new Set(n.filter(e=>e.auth.email===t.email).map(e=>e.account.id)):new Set}function Bl(e){try{const e=an(wn(Wl(),xl),"utf8");if(Buffer.byteLength(e,"utf8")>yl)throw new sc(400,"Local Codex auth.json must be 262144 bytes or fewer.");const t=Fc(JSON.parse(e));if(!t||!Ul(t))throw new sc(400,"Local Codex auth.json does not contain an active ChatGPT account.");return Hl(t)}catch(t){if(!e.required)return null;if(t instanceof sc)throw t;throw new sc(404,"No active local Codex auth.json was found. Sign in with the local Codex CLI first.")}}function Gl(e){try{const t=zl(e);return Ul(t)?Hl(t):null}catch{return null}}function Hl(e){return{authJson:e,email:Ql(e),fingerprint:(t=e,Ot("sha256").update(Kl(t)).digest("hex"))};var t}function Kl(e){return Array.isArray(e)?`[${e.map(e=>Kl(e)).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Kl(e[t])}`).join(",")}}`:JSON.stringify(e)}function Wl(){return function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_LOCAL_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Ql(e){return Jl(Bc(e.email))??Jl(Bc(Fc(e.account)?.email))??Jl(Bc(Fc(e.profile)?.email))??Jl(Bc(Fc(e.user)?.email))??Vl(Bc(Fc(e.tokens)?.id_token))??Vl(Bc(Fc(e.tokens)?.idToken))??Vl(Bc(e.id_token))??Vl(Bc(e.idToken))}function Vl(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return Jl(Bc(Fc(JSON.parse(function(e){const t=e.replaceAll("-","+").replaceAll("_","/"),n=t.padEnd(t.length+(4-t.length%4)%4,"=");return Buffer.from(n,"base64").toString("utf8")}(t)))?.email))}catch{return null}}function Jl(e){const t=e?.trim();return t&&t.includes("@")?t:null}function Xl(e){for(const t of e)Zl(t.id)}async function Yl(){Xl(await kc.codexAccount.findMany({select:{id:!0}}))}function Zl(e){try{el(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function eu(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function tu(e){return{args:eu(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?Kt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function nu(e,t=!1){return{id:e.id,displayName:e.displayName,status:e.status,isLocalCodexActive:t,command:e.command,args:au(e.args),environment:Gc(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Ll(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function au(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):ql()}function ru(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new sc(400,`${n} must be an object.`);return{id:lu(e.id,`${n}.id`,128),displayName:cu(e.displayName,`${n}.displayName`,128),command:lu(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:uu(e.args,`${n}.args`)??ql(),auth:mu(e.auth,`${n}.auth`),defaultModel:lu(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:du(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:su(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:ou(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:hu(e.environment,`${n}.environment`)}}function iu(e){return null==e?null:cu(e,"runtime option",128)}function su(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 sc(400,`${t} is invalid.`)}function ou(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new sc(400,`${t} is invalid.`)}function du(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new sc(400,`${t} is invalid.`)}function cu(e,t,n){const a=lu(e,t,n);if(!a)throw new sc(400,`${t} is required.`);return a}function lu(e,t,n){if(null==e)return;if("string"!=typeof e)throw new sc(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new sc(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function uu(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new sc(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function mu(e,t){if(null==e)return null;const n=Fc(e);if(!n)throw new sc(400,`${t} must be an object.`);const a=Fc(n.authJson);if(!a)throw new sc(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new sc(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,yl),{authJson:a}}function hu(e,t){if(null==e)return null;const n=Fc(e);if(!n)throw new sc(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var fu=qn({action:()=>gu,loader:()=>pu});async function pu({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await Nl())}catch(t){return vc(t)}}async function gu({request:e}){try{cc(e,["POST"]),await Mc(e);const t=await lc(e);return oc(await async function(e){const t=await kc.codexAccount.create({data:{displayName:(n=e.displayName,Bc(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:eu(e.args??ql()),defaultModel:iu(e.defaultModel),defaultPermissionMode:du(e.defaultPermissionMode),defaultReasoningEffort:su(e.defaultReasoningEffort),defaultServiceTier:ou(e.defaultServiceTier),environment:eu(e.environment)}});var n;return Zl(t.id),t}({displayName:uc(t.displayName,"displayName",{maxLength:128}),command:uc(t.command,"command"),args:mc(t.args,"args"),defaultModel:vu(t.defaultModel,"defaultModel"),defaultPermissionMode:vu(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:vu(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:vu(t.defaultServiceTier,"defaultServiceTier"),environment:fc(t.environment,"environment")}),{status:201})}catch(t){return vc(t)}}function vu(e,t){return null===e?null:uc(e,t,{maxLength:128})}var wu=qn({loader:()=>bu});async function bu({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await async function(){const e=await kc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:2,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:au(e.args),auth:Ol(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Gc(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return vc(t)}}var xu=qn({action:()=>yu});async function yu({request:e}){try{cc(e,["POST"]),await Mc(e);const t=await lc(e);if(!Array.isArray(t.accounts))throw new sc(400,"accounts must be an array.");return oc(await async function(e){const t=e.accounts.map(ru),n=[];for(const s of t){const e=s.id?await kc.codexAccount.findUnique({where:{id:s.id}}):null;if(e){Kc.stopRuntime(e.id);const t=await kc.codexAccount.update({where:{id:e.id},data:tu(s)});jl(t.id,s.auth),n.push(t);continue}const t=await kc.codexAccount.create({data:{...s.id?{id:s.id}:{},...tu(s)}});jl(t.id,s.auth),n.push(t)}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await Ml(s.id));const r=await kc.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=>nu(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return vc(t)}}var Nu=qn({action:()=>ku,loader:()=>Iu});async function Iu({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await Cl())}catch(t){return vc(t)}}async function ku({request:e}){try{cc(e,["PATCH"]),await Mc(e);const t=await lc(e);if("string"!=typeof t.instructions)throw new sc(400,"instructions is required.");return oc(await El({instructions:t.instructions}))}catch(t){return vc(t)}}var Au=qn({action:()=>Cu});async function Cu({request:e}){try{return cc(e,["POST"]),await Mc(e),oc(await Il(),{status:201})}catch(t){return vc(t)}}var Eu=An(Nn),Mu="127.0.0.1",Tu=function(e){const t=Number(e??1457);return!Number.isInteger(t)||t<=0||t>65535?1457:t}(process.env.CODEX_LOGIN_CALLBACK_PORT);async function Su(){const e=await new Promise((e,t)=>{const n=kn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Mu,port:Tu},()=>{n.close(n=>{n?t(n):e(!1)})})});return function(e,t,n){const a=t.some(e=>e.pid===process.pid);return{checkedAt:(new Date).toISOString(),host:Mu,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:Tu,processes:t,message:e?a?"The current xedoc server owns the login callback port.":"The Codex login callback port is already in use.":"The Codex login callback port is available."}}(e,e?await async function(){if("win32"===process.platform)return async function(){try{const{stdout:e}=await Eu("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${Tu}\\s`);for(const a of e.split(/\r?\n/)){const e=a.trim();if(!e.includes("LISTENING")||!n.test(e))continue;const r=e.split(/\s+/),i=Number(r.at(-1));Number.isFinite(i)&&t.push({pid:i,address:e})}return Du(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Eu("lsof",["-nP",`-iTCP:${Tu}`,"-sTCP:LISTEN","-F","pcLn"]);return function(e){const t=[];let n=null;for(const a of e.split(/\r?\n/)){if(!a)continue;const e=a.slice(0,1),r=a.slice(1);"p"!==e?n&&("c"===e?n.command=r:"L"===e?n.user=r:"n"===e&&(n.address=r)):(n&&t.push(n),n={pid:Number(r)})}n&&t.push(n);return Du(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Eu("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${Tu}\\b`);for(const a of e.split(/\r?\n/)){if(!n.test(a)||!a.includes("LISTEN"))continue;const e=/"([^"]+)",pid=(\d+)/g;let r;for(;r=e.exec(a);)t.push({command:r[1],pid:Number(r[2]),address:a.trim()})}return Du(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function Pu(){const e=await Su();if(!e.inUse)return e;const t=e.processes.map(e=>e.pid).filter(e=>e>0&&e!==process.pid);if(!t.length)throw new sc(409,e.processes.some(e=>e.pid===process.pid)?"The current xedoc server owns the login callback port and cannot kill itself.":"No killable process was found for the login callback port.");const n=[];for(const i of Array.from(new Set(t)))try{process.kill(i,"SIGTERM"),n.push(i)}catch(r){if(!Lu(r))throw new sc(500,`Could not kill process ${i}: ${Ru(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await Su(),killedProcessIds:n}}function Du(e){const t=new Map;for(const n of e)t.has(n.pid)||t.set(n.pid,n);return Array.from(t.values()).sort((e,t)=>e.pid-t.pid)}function Lu(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function Ru(e){return e instanceof Error?e.message:"Unknown error"}var $u=qn({action:()=>_u,loader:()=>qu});async function qu({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await Su())}catch(t){return vc(t)}}async function _u({request:e}){try{return cc(e,["POST"]),await Mc(e),oc(await Pu())}catch(t){return vc(t)}}var Uu=qn({action:()=>zu});async function zu({request:e,params:t}){try{return cc(e,["POST"]),await Mc(e),oc(await kl(gc(t,"accountId")))}catch(n){return vc(n)}}var Ou=qn({action:()=>Fu,loader:()=>ju});async function ju({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await Al(gc(t,"accountId")))}catch(n){return vc(n)}}async function Fu({request:e,params:t}){try{await Mc(e);const n=gc(t,"accountId");if("PATCH"===e.method){const t=await lc(e);return oc(await async function(e,t){return await Al(e),Kc.stopRuntime(e),kc.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:eu(t.args),environment:eu(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:uc(t.displayName,"displayName",{maxLength:128}),command:uc(t.command,"command"),args:mc(t.args,"args"),environment:fc(t.environment,"environment")}))}if("DELETE"===e.method)return oc(await async function(e){const t=await Al(e);return Kc.stopRuntime(e),Vc(e),kc.$transaction(async n=>{await n.chat.updateMany({where:{accountId:e},data:{accountId:null}}),await n.threadPreference.updateMany({where:{accountId:e},data:{accountId:null}});const a=(await n.chatRun.findMany({select:{id:!0},where:{accountId:e}})).map(e=>e.id);return a.length&&(await n.chatMessage.updateMany({where:{runId:{in:a}},data:{runId:null}}),await n.chatRun.deleteMany({where:{id:{in:a}}})),n.codexAccount.delete({where:{id:t.id}})})}(n));dc(e.method)}catch(n){return vc(n)}}var Bu=qn({action:()=>Gu});async function Gu({request:e,params:t}){try{cc(e,["PATCH"]),await Mc(e);const n=await lc(e),a={defaultModel:Hu(n.defaultModel,"defaultModel"),defaultPermissionMode:Hu(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Hu(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Hu(n.defaultServiceTier,"defaultServiceTier")};return oc(await async function(e,t){return await Al(e),nu(await kc.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:iu(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:du(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:su(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:ou(t.defaultServiceTier)}}))}(gc(t,"accountId"),a))}catch(n){return vc(n)}}function Hu(e,t){return null===e?null:uc(e,t,{maxLength:128})}var Ku=qn({action:()=>Qu,loader:()=>Wu});async function Wu({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await async function(e){return await Al(e),{...await Cl(),accountId:e}}(gc(t,"accountId")))}catch(n){return vc(n)}}async function Qu({request:e,params:t}){try{cc(e,["PATCH"]),await Mc(e);const n=await lc(e);if("string"!=typeof n.instructions)throw new sc(400,"instructions is required.");return oc(await async function(e,t){return await Al(e),{...await El(t),accountId:e}}(gc(t,"accountId"),{instructions:n.instructions}))}catch(n){return vc(n)}}async function Vu(e){const t=await Ju(e);try{const n=await async function(e){return(await Kc.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(Zu(t));return await Xu(e),n}catch(n){return Yu(e,n)}}async function Ju(e){const t=await kc.codexAccount.findUnique({where:{id:e}});if(!t)throw new sc(404,"Account not found.");if("CONNECTED"!==t.status)throw new sc("INVALIDATED"===t.status?401:400,"INVALIDATED"===t.status?"Codex authentication token was invalidated. Re-authenticate this account.":"Authenticate the account before loading Codex account data.");return t}async function Xu(e){if(function(e){return Wc.has(e)}(e))throw new sc(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await kc.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new sc(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function Yu(e,t){if(t instanceof sc)throw t;if(function(e){return Jc(e instanceof Error?e.message:String(e??""))}(t))throw await Qc(e,t),Kc.stopRuntime(e),new sc(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function Zu(e){return{accountId:e.id,args:em(e.args),command:e.command,environment:Gc(e.environment),workingDirectory:null}}function em(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var tm=qn({loader:()=>nm});async function nm({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await Vu(gc(t,"accountId")))}catch(n){return vc(n)}}var am=qn({loader:()=>rm});async function rm({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await async function(e){const t=await Ju(e);try{const n=await Yc(Zu(t));return await Xu(e),n}catch(n){return Yu(e,n)}}(gc(t,"accountId")))}catch(n){return vc(n)}}var im=qn({action:()=>sm});async function sm({request:e,params:t}){try{cc(e,["POST","DELETE"]),await Mc(e);const n=gc(t,"accountId");return"DELETE"===e.method?oc(await async function(e){const t=await Al(e);return Pl(e),Kc.stopRuntime(e),_l(e)?nu(await kc.codexAccount.update({where:{id:e},data:Dl(e)}),Fl([t]).has(e)):"AUTHENTICATING"!==t.status?nu(t,Fl([t]).has(e)):nu(await kc.codexAccount.update({where:{id:e},data:{status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))}(n)):oc(await Ml(n,function(e){const t=uc(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new sc(400,"mode must be browser or device.")}((await lc(e)).mode)))}catch(n){return vc(n)}}var om=qn({action:()=>dm});async function dm({request:e,params:t}){try{cc(e,["POST"]),await Mc(e);const n=uc((await lc(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return oc(await Tl(gc(t,"accountId"),n))}catch(n){return vc(n)}}var cm=globalThis,lm=new Map,um=new Map;async function mm(e,t){const n=await Um(e);if(!n)return;const a=wn(el(t),"sessions",th(n));if(xn(n)!==xn(a)){await async function(e){const t=function(e){const t=`${yn}sessions${yn}`,n=xn(e),a=n.lastIndexOf(t);return-1===a?null:wn(n.slice(0,a),"session_index.jsonl")}(e),n=wn(tl(),"session_index.jsonl");if(!t||xn(t)===xn(n))return;try{const e=await Pn(t,"utf8");if(!e.trim())return;const a=await Pn(n,"utf8").catch(()=>"");await En(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(n);try{return void(await Cn(a,Xt.R_OK))}catch{}await Tn(pn(a),{recursive:!0,mode:448}),await Mn(n,a)}}async function hm(e){const t=await Um(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>zm())return null;const a=`${t}:${e}`,r=um.get(a);if(r&&Om(r,n))return r.value;const i=function(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=Vm(f);if(!e)continue;const u=Jm(e.timestamp)??n;o=Xm(o,u),d=Ym(d,u);const m=Fc(e.payload);if("session_meta"===e.type&&m){a=Bc(m.id)??a,r=Bc(m.source)??r,i=Bc(m.originator)??i,s=Bc(m.cwd)??s,o=Jm(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=Bc(m.cwd)??s;continue}const h=vm(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=wm(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??Zm(t);if(!m||!u.length)return null;const h=eh(u.find(e=>"USER"===e.role)?.content??"")??eh(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}}(await Pn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return jm(um,a,n,s),s}catch{return null}}(t,e):null}async function fm(e){const t=await Um(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>zm())return null;const a=`${t}:${e}`,r=lm.get(a);if(r&&Om(r,n))return r.value;let i,s=null;for(const t of(await Pn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Vm(t);if(!e)continue;"session_meta"===e.type&&(i=Bc(Fc(e.payload)?.id)??i);const n=Bm(e);n&&(s=n)}const o=(i??Zm(e))===t?s:null;return jm(lm,a,n,o),o}catch{return null}}(t,e):null}async function pm(e){const t=await Em(e);return t?Rm(t):null}async function gm(){return(await async function(e){const t=await Lm();if(!t)return[];try{const n=await Mm(t);return await t.$queryRawUnsafe(`\n SELECT ${Tm(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${Dm(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(Fm("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(Rm).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function vm(e,t,n){if("response_item"!==e.type)return null;const a=Fc(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?Nm(e.text,e):"string"==typeof e.message?Nm(e.message,e):"string"==typeof e.content?Nm(e.content,e):Array.isArray(e.content)?Nm(e.content.map(e=>{if("string"==typeof e)return e;const t=Fc(e);return t?"string"==typeof t.text?t.text:km(t)??"":""}).join(""),e):Nm("",e)}(a);return!s.trim()||bm(s)?null:{content:s,createdAt:t,metadata:xm(a,n),rawPayload:ym(e,a),role:r}}function wm(e,t,n){if("event_msg"!==e.type)return null;const a=Fc(e.payload);if(!a)return null;const r=Bc(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?Nm(a.message,a):"";return!s.trim()||bm(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...xm(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:ym(e,a),role:i}}function bm(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function xm(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Bc(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Bc(e.type)}}function ym(e,t){return{payload:{name:Bc(t.name),phase:Bc(t.phase),role:Bc(t.role),type:Bc(t.type)},timestamp:Bc(e.timestamp),type:Bc(e.type)}}function Nm(e,t){return[e,...Im(t.images),...Im(t.local_images),...Im(t.localImages)].filter(Boolean).join("\n\n")}function Im(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Am(e):km(Fc(e))).filter(e=>!!e):[]}function km(e){return e?Am(Bc(e.url)??Bc(e.image_url)??Bc(e.path)??Bc(e.filePath)):null}function Am(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Cm(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||bm(n)||!t.allowGeneric&&function(e){const t=function(e){return e.replace(/\s+/g," ").trim().toLowerCase()}(e);return"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}(n)?null:n.slice(0,160)}async function Em(e){const t=await Lm();if(!t)return null;try{const n=await Mm(t);return(await t.$queryRawUnsafe(`\n SELECT ${Tm(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function Mm(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function Tm(e){return[Sm(e,"id"),Sm(e,"rollout_path","rolloutPath"),Pm(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),Pm(e,Dm(e),"updatedAt"),Sm(e,"cwd"),Sm(e,"title"),Sm(e,"first_user_message","firstUserMessage"),Sm(e,"preview"),Sm(e,"archived"),Sm(e,"archived_at","archivedAt")].join(",\n ")}function Sm(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function Pm(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function Dm(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function Lm(){const e=rl();try{await Cn(e,Xt.R_OK)}catch{return null}return cm.codexStatePrisma&&cm.codexStateDatabasePath===e||(await(cm.codexStatePrisma?.$disconnect().catch(()=>{})),cm.codexStateDatabasePath=e,cm.codexStatePrisma=new Wt({datasources:{db:{url:qm(e)}}})),cm.codexStatePrisma}function Rm(e){const t=new Date(0),n=$m(e.updatedAt,t),a=$m(e.createdAt,n),r=_m(e.rolloutPath)[0]??"",i=Cm(e.firstUserMessage,{allowGeneric:!0}),s=Cm(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:s,title:Cm(e.title,{allowGeneric:!1})??eh(i??"")??eh(s??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function $m(e,t){const n="bigint"==typeof e?Number(e):"number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return!Number.isFinite(n)||n<=0?t:new Date(n>1e10?n:1e3*n)}function qm(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function _m(e){const t=e?.trim();if(!t)return[];const n=wn(tl(),"sessions",th(t));return[...new Set([t,n])]}async function Um(e){const t=await Em(e);for(const n of _m(t?.rolloutPath))try{return await Cn(n,Xt.R_OK),n}catch{}return null}function zm(){return Fm("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Om(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function jm(e,t,n,a){if(e.size>=100){const t=e.keys().next().value;t&&e.delete(t)}e.set(t,{mtimeMs:n.mtimeMs,size:n.size,value:a})}function Fm(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Bm(e){const t=Gm(e);if(!t)return null;const n=Fc(t.params),a=Fc(t.info)??Fc(n?.info)??n??t;return function(e,t=e){const n=Km(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Km(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Km(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}([Km(e,["input_tokens","inputTokens"]),Km(e,["output_tokens","outputTokens"]),Km(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}}(Hm(a,["last_token_usage","lastTokenUsage"])??Hm(a,["total_token_usage","totalTokenUsage"])??a,a)}function Gm(e,t=0){if(t>4)return;const n=Fc(e);if(!n)return;const a=Qm(Bc(n.type)??""),r=Qm(Bc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Gm(n[i],t+1);if(e)return e}}function Hm(e,t){for(const n of t){const t=Fc(e[n]);if(t)return t}}function Km(e,t){for(const n of t){const t=Wm(e[n]);if(void 0!==t)return t}}function Wm(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 Qm(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Vm(e){try{return Fc(JSON.parse(e))??null}catch{return null}}function Jm(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Xm(e,t){return!e||t<e?t:e}function Ym(e,t){return!e||t>e?t:e}function Zm(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function eh(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 th(e){const t=`${yn}sessions${yn}`,n=e.lastIndexOf(t);return-1===n?fn(e):e.slice(n+t.length)}var nh="__xedocRealtimeState__";function ah(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[nh]??={handlers:new Set},e[nh]}().handlers)r(a)}var rh=null;async function ih(){rh??=async function(){await kc.$executeRawUnsafe('\n CREATE TABLE IF NOT EXISTS "ThreadPreference" (\n "threadId" TEXT NOT NULL PRIMARY KEY,\n "accountId" TEXT,\n "autoRotateAccount" BOOLEAN NOT NULL DEFAULT false,\n "title" TEXT,\n "workingDirectory" TEXT,\n "model" TEXT,\n "reasoningEffort" TEXT,\n "serviceTier" TEXT,\n "collaborationMode" TEXT NOT NULL DEFAULT \'default\',\n "permissionMode" TEXT NOT NULL DEFAULT \'default\',\n "archivedAt" DATETIME,\n "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n "updatedAt" DATETIME NOT NULL,\n CONSTRAINT "ThreadPreference_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "CodexAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE\n )\n '),await kc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await kc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>kc.$executeRawUnsafe('\n INSERT OR IGNORE INTO "ThreadPreference" (\n "threadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n "archivedAt",\n "createdAt",\n "updatedAt"\n )\n SELECT\n "externalThreadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n CASE WHEN "status" = \'ARCHIVED\' THEN "updatedAt" ELSE NULL END,\n "createdAt",\n "updatedAt"\n FROM "Chat"\n WHERE "externalThreadId" IS NOT NULL AND TRIM("externalThreadId") != \'\'\n ')).then(()=>{},()=>{}),await rh}async function sh(){return await ih(),kc.threadPreference.findMany()}async function oh(e){return await ih(),kc.threadPreference.findUnique({where:{threadId:e}})}async function dh(e,t){await ih();const n=function(e){return{accountId:e.accountId,archivedAt:e.archivedAt,autoRotateAccount:e.autoRotateAccount,collaborationMode:e.collaborationMode,model:e.model,permissionMode:e.permissionMode,reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier,title:e.title,workingDirectory:e.workingDirectory}}(t);return kc.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function ch(e){const[t,n]=await Promise.all([pm(e),oh(e)]);return t?.workingDirectory??n?.workingDirectory??null}function lh(e){return"fullAccess"===e?"fullAccess":"default"}async function uh(e){const t=fh(),n=ph(t,e),a=await Dn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:pn(n),entries:a.map(e=>function(e,t){return{name:t.name,path:wn(e,t.name),type:gh(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 mh(e,t){const n=fh(),a=xn(ph(n,e),function(e){const t=e.trim();if(!t)throw new sc(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new sc(400,"Folder name must be a single folder name.");return t}(t)),r=bn(n,a);if(r.startsWith("..")||vn(r))throw new sc(403,"Path is outside the workspace root.");try{await Tn(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new sc(409,"Folder already exists.");throw i}return uh(a)}function hh(e){return ph(fh(),e)}function fh(){const e=function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Zt(e)||tn(e,{recursive:!0}),on(e)}function ph(e,t){const n=t?.trim(),a=n?vn(n)?n:wn(e,n):e;let r;try{r=on(xn(a))}catch{throw new sc(400,"Workspace path does not exist.")}const i=bn(e,r);if(i.startsWith("..")||vn(i))throw new sc(403,"Path is outside the workspace root.");if(!ln(r).isDirectory())throw new sc(400,"Workspace path is not a directory.");return r}function gh(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var vh=1e6;async function wh(e,t,n){const a=await ch(e);if(!a)throw new sc(400,"Chat does not have a working directory.");const r=hh(a),i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()),n=/^(.*)#L(\d+)(?:-\d+)?$/i.exec(t);if(n)return{line:Number(n[2]),path:n[1]};const a=/^(.+):(\d+)(?::\d+)?$/.exec(t);return a&&!/^[A-Za-z]:\\/.test(t)?{line:Number(a[2]),path:a[1]}:{path:t}}(t),s=await bh(r,i.path),o=await xh(s,r),d=n??i.line??null,c=Math.min(o.size,vh),l=c?await async function(e,t){const n=await Sn(e,"r");try{const e=Buffer.alloc(t),a=await n.read(e,0,t,0);return e.subarray(0,a.bytesRead)}finally{await n.close()}}(s,c):Buffer.alloc(0),u=function(e){if(!e.length)return!1;const t=e.subarray(0,Math.min(e.length,8e3));return!!t.includes(0)||t.toString("utf8").includes("�")}(l),m=u?void 0:l.toString("utf8"),h=m?m.split(/\r?\n/).length:0;return{content:m,isBinary:u,language:yh(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>vh}}async function bh(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new sc(400,"File path is required.");const a=await Ln(e),r=vn(n)?n:xn(a,n);let i;try{i=await Ln(r)}catch{throw new sc(404,"File does not exist.")}return function(e,t){const n=bn(e,t);if(n.startsWith("..")||vn(n))throw new sc(403,"Path is outside the chat working directory.")}(a,i),i}async function xh(e,t){const n=await Rn(e);if(!n.isFile())throw new sc(400,"Workspace path is not a file.");const a=t?await Ln(t):null;return{name:fn(e),path:e,relativePath:a&&bn(a,e)||fn(e),size:n.size}}function yh(e){const t=gn(e).slice(1).toLowerCase();return{cjs:"javascript",css:"css",go:"go",htm:"html",html:"html",js:"javascript",json:"json",jsonl:"json",jsx:"javascript",md:"markdown",mjs:"javascript",py:"python",rb:"ruby",rs:"rust",sh:"bash",sql:"sql",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"}[t]??(t||null)}var Nh=new Map,Ih=new Map,kh=new Map,Ah=new Map,Ch=new Map,Eh=new Map,Mh="New Thread";async function Th(e){const t=await oh(e),n=await Uh(e);if(!n&&!Ih.has(e))throw new sc(404,"Chat not found.");return Oh(e,t,n)}async function Sh(e,t){const n=await Th(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new sc(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&pp(t.collaborationMode)!==n.collaborationMode)throw new sc(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new sc(400,"Wait for the current run to finish before changing workspace.")}const a=await async function(e,t){if(void 0===t||t===e)return;return null===t?null:(await qh(t)).id}(n.accountId,t.accountId);if(Ih.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new sc(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:pp(t.collaborationMode),i=void 0===t.permissionMode?void 0:gp(t.permissionMode),s=void 0===t.title?void 0:bp(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:hh(t.workingDirectory),d=await dh(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:mp(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:hp(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:fp(t.serviceTier),title:s,workingDirectory:o});if(a&&mm(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),s&&async function(e,t,n){if(!t.accountId)return;const a=await kc.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await Mp(kp(a),e,n)}(e,d,s).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),i){const t=Ih.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...Nh.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=ip(t);n.runtime.respondToServerRequest(n.rpcId,a),Nh.delete(sp(e,n.requestId));const r=Wh(e,n.messageId,{completedAt:new Date,metadataPatch:{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:a,status:"resolved"},status:"COMPLETED"});r&&Np(e,"message.updated",r)}}(e)}const c=await Oh(e,d);return Np(e,"chat.updated",c),c}async function Ph(e){await Th(e);const t=await Oh(e,await async function(e){return dh(e,{archivedAt:new Date})}(e));return Np(e,"chat.updated",t),t}async function Dh(e,t=0,n=50){const a=await Th(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await hm(e);return t?t.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,role:e.role,source:"session"}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:n.completedAt??n.createdAt??i,content:n.content,createdAt:i,id:jh(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?lp(n.metadata):Fh(n),rawPayload:lp(n.rawPayload??null),requestId:null,role:n.role,runId:null,sequence:r,status:"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=Ih.get(e);return n?t.length?n.messages.filter(e=>function(e,t){return"PENDING"===e.status||"STREAMING"===e.status||"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||!t.some(t=>function(e,t){return e.kind===t.kind&&e.role===t.role&&(!(!e.turnId||!t.turnId||e.turnId!==t.turnId)||(!(!e.itemId||!t.itemId||e.itemId!==t.itemId)||"CHAT"===e.kind&&Qh(e.content)===Qh(t.content)))}(t,e))}(e,t)):n.messages:[]}(e,i),o=[...i,...s].sort((e,t)=>e.sequence-t.sequence).filter(e=>e.sequence>t).slice(0,r);return{data:o,nextCursor:o.length?o[o.length-1].sequence:null}}async function Lh(e,t,n){await Th(e);const a=sp(e,t),r=Nh.get(a);if(!r)throw new sc(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new sc(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new sc(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new sc(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),Nh.delete(a);const s=Wh(e,r.messageId,{completedAt:new Date,metadataPatch:{decision:n.decision,resolvedAt:(new Date).toISOString(),result:n.result??i,status:"resolved"},status:"COMPLETED"});if(!s)throw new sc(410,"Server request is no longer active.");return Np(e,"message.updated",s),s}async function Rh(e,t){let n=await Th(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new sc(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Xh(n));const a=t.accountId??n.accountId;if(!a)throw new sc(400,"Choose a Codex account before sending messages.");const r=await qh(a);if(!n.workingDirectory)throw new sc(400,"Select a working directory before sending messages.");const i=hh(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new sc(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 sc(400,"Attachment kind is invalid.");n.push(await nf(e,a))}else n.push(tf(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 sc(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:pp(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await Gh(e);if("RUNNING"===m.status||"QUEUED"===m.status)return"steer"===t.delivery?async function({account:e,attachments:t,collaborationMode:n,content:a,messageContent:r,metadata:i,startedAt:s,threadId:o}){const d=Ih.get(o);if(!d?.runtime)throw new sc(409,"The active turn is not ready for steering yet.");const c=d.turnId??await mf(d.runtime,o);if(!c)throw new sc(409,"The active turn has not published a turn id yet.");const l=await oh(o),u=await Cf(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=Df(await lf(d.runtime,{expectedTurnId:c,threadId:o,...kf(n,u)},a,t))??c;const m=Kh(o,{completedAt:s,content:r,metadata:sf({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return Np(o,"chat.updated",await Th(o)),Np(o,"message.created",m),{message:m,assistantMessage:null,runId:d.runId,status:"RUNNING",delivery:"steer",steered:!0}}({account:r,attachments:s,collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,startedAt:u,threadId:e,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,queuedAt:d,threadId:c,workingDirectory:l}){const u=Bt(),m=Kh(c,{completedAt:d,content:i,metadata:sf({...s,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return Hh(c).queuedTurns.push({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,createdAt:d,id:u,messageId:m.id,metadata:s,permissionMode:o,workingDirectory:l}),Np(c,"chat.updated",await Th(c)),Np(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await of(n,rf(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=Kh(e,{completedAt:u,content:o,metadata:sf(t.metadata,s),role:"USER",status:"COMPLETED"});Np(e,"message.created",h);const f=await Vh({account:r,attachments:s,automaticTitleSeed:await of(n,rf(t.content,s)),collaborationMode:c,content:t.content,metadata:t.metadata??{},permissionMode:l,requestedCollaborationMode:d,startedAt:u,threadId:e,workingDirectory:i});return{message:h,assistantMessage:f.assistantMessage,runId:f.runId,status:"QUEUED"}}function $h(e){const t=Ih.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function qh(e){const t=await kc.codexAccount.findUnique({where:{id:e}});if(!t)throw new sc(400,"Account not found.");if("CONNECTED"!==t.status)throw new sc(400,"Authenticate the account before using this chat.");return t}async function _h(){const e=await gm(),t=new Map;for(const n of e)t.set(n.externalThreadId,zh(n));return t}async function Uh(e){const t=await pm(e);return t?{createdAt:t.createdAt,firstUserMessage:t.firstUserMessage??null,preview:t.preview??null,threadId:e,title:t.title,updatedAt:t.updatedAt,workingDirectory:t.workingDirectory??null}:null}function zh(e){return{createdAt:e.createdAt,firstUserMessage:e.firstUserMessage??null,preview:e.preview??null,threadId:e.externalThreadId,title:e.title,updatedAt:e.updatedAt,workingDirectory:e.workingDirectory??null}}async function Oh(e,t,n){const a=void 0===n?await Uh(e):n,r=Ih.get(e),i=function(e){return{accountId:e?.accountId??null,autoRotateAccount:e?.autoRotateAccount??!1,collaborationMode:(t=e?.collaborationMode,"plan"===t?"plan":"default"),model:e?.model??null,permissionMode:lh(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),s=t?.createdAt??a?.createdAt??r?.updatedAt??new Date,o=r?.updatedAt??a?.updatedAt??t?.updatedAt??s,d=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=bp(r??"");if(e&&!xp(e))return e}return yp(n??"")??yp(t??"")??Mh}({preferenceTitle:t?.title,preview:a?.preview,seed:(c=r?.messages??[],[...c].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??a?.firstUserMessage??null),snapshotTitle:a?.title});var c;return{...i,id:e,externalThreadId:e,lastActivityAt:o,status:t?.archivedAt?"ARCHIVED":"RUNNING"===r?.status||"QUEUED"===r?.status?"RUNNING":"IDLE",title:d,workingDirectory:a?.workingDirectory??i.workingDirectory,createdAt:s,updatedAt:o}}function jh(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function Fh(e){return{kind:"codexTranscript",source:e.source}}function Bh(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=Fc(e);return up(t?.text)??up(t?.content)??up(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(Bc(e.url)??Bc(e.image_url)??Bc(e.path)??Bc(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function Gh(e){const t=Ih.get(e);if(t)return t;const n=(await hm(e))?.messages.length??0,a={interruptRequested:!1,messageKeys:new Map,messages:[],nextSequence:n+1,permissionMode:"default",primed:!1,queuedTurns:[],status:"IDLE",threadId:e,updatedAt:new Date};return Ih.set(e,a),a}function Hh(e){const t=Ih.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function Kh(e,t){const n=Hh(e),a=new Date,r={chatId:e,completedAt:t.completedAt??null,content:t.content,createdAt:a,id:t.id??`runtime:${e}:${Bt()}`,itemId:t.itemId??null,kind:t.kind??"CHAT",metadata:t.metadata?lp(t.metadata):null,rawPayload:t.rawPayload?lp(t.rawPayload):null,requestId:t.requestId??null,role:t.role,runId:t.runId??n.runId??null,sequence:n.nextSequence,status:t.status??"PENDING",turnId:t.turnId??null};return n.nextSequence+=1,n.updatedAt=a,n.messages.push(r),r}function Wh(e,t,n){const a=Ih.get(e),r=a?.messages.findIndex(e=>e.id===t)??-1;if(!a||r<0)return null;const i=a.messages[r],s={...i,completedAt:n.completedAt??i.completedAt,content:n.content??i.content,metadata:void 0!==n.metadata?lp(n.metadata):n.metadataPatch?{...Fc(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?lp(n.rawPayload):i.rawPayload,status:n.status??i.status,turnId:void 0===n.turnId?i.turnId:n.turnId};return a.messages[r]=s,a.updatedAt=new Date,s}function Qh(e){return e.replace(/\s+/g," ").trim()}async function Vh({account:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,metadata:i,permissionMode:s,requestedCollaborationMode:o,startedAt:d,threadId:c,workingDirectory:l}){const u=await Gh(c),m=`run:${c}:${Bt()}`;u.accountId=e.id,u.interruptRequested=!1,u.permissionMode=s,u.runId=m,u.status="QUEUED",u.turnId=null,u.updatedAt=d,o&&await dh(c,{collaborationMode:o});const h=Kh(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return Np(c,"chat.updated",await Th(c)),Np(c,"message.created",h),Np(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=kh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);kh.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),kh.get(e)===i&&kh.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=Hh(e),u=await oh(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=kp(a),f=l.primed&&l.accountId===a.id&&l.runtime===h;var p;l.permissionMode=m,l.runtime=h,l.status="RUNNING",l.updatedAt=new Date;const g=Wh(e,n,{status:"STREAMING"});g&&Np(e,"message.updated",g);Np(e,"chat.updated",await Th(e)),Np(e,"run.status",{runId:t,status:"RUNNING"}),await mm(e,a.id);let v="";const w=new Map;let b,x=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=Rf(e);if(t&&a&&a!==t)return!1;const r=$f(e);return!n||!r||r===n})(a,e,b)&&df(t,()=>async function(e,t){const n=function(e){const t=Yf(e);if(t){const e=Fc(t.params),n=Fc(t.info)??Fc(e?.info)??e??t;return Xf(Zf(n,["last_token_usage","lastTokenUsage"])??Zf(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Fc(e.params),a=Fc(n?.event),r=Fc(n?.usage)??Fc(a?.usage)??(Jf(e.method)?n:void 0);return r?Xf(r):null}(t);n&&Np(e.threadId,"context.updated",n);if(function(e){return!!Yf(e)||Jf(e.method)}(t))return;if(function(e){const t=Fc(e.params),n=Fc(t?.payload)??Fc(t?.event);return[e.method,Bc(t?.type),Bc(n?.type),Bc(n?.event)].some(e=>jf(e??"").includes("compact"))}(t))return void(await Ef({completedAt:new Date,content:Qf(t),itemId:`context-compaction:${$f(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Vf(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:$f(t)}));const a=t.method??"",r=Fc(t.params),i=_f(t),s=jf(Bc(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Fc(e.params),n=Fc(e.result),a=Fc(t?.event);return Cp(t)??Cp(a)??Cp(n)}(t);return void(n&&await Tp(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=up(r?.delta)??up(Fc(r?.event)?.delta);if(!n)return;const a=qf(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Ef({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Bc(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:$f(t)});return void Np(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&Ff(s))return void(await Ef({content:"",fallbackMessageId:e.assistantMessageId,itemId:qf(t),kind:"CHAT",metadata:{kind:"assistant",phase:Bc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:$f(t)}));if("item/completed"===a&&Ff(s)){const n=function(e){if(!e)return"";const t=up(e.text)??up(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>up(Fc(e)?.text)??"").filter(Boolean).join("")}(i)||Pf(t);if(!n)return;const a=qf(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Ef({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Bc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:$f(t)}))}if(a.startsWith("item/reasoning/")||jf(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=qf(t)??`${n.toLowerCase()}:${$f(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 Ef({content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Bf(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:$f(t)})}(e,t,"THINKING",{content:zf(t,i),delta:Uf(t),metadata:{kind:"thinking",status:Hf(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Fc(t.params)??{},a="item/plan/delta"===t.method?Uf(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Fc(e)).filter(e=>!!e).map(e=>({status:Bc(e.status)??"pending",step:Bc(e.step)??""})).filter(e=>e.step),i=Bc(n.explanation),s=$f(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:qf(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 Ef({content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Fc(t.params)??{},r=n??a,i=qf(t)??`command:${$f(t)??"turn"}`,s=`COMMAND:${i}`,o=Uf(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:up(r.output)??up(r.aggregatedOutput)??up(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Bc(r.command)??Bc(a.command)??"command",l=Hf(r,t.method??"");await Ef({completedAt:Bf(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:dp(r.actions)??dp(r.commandActions),command:c,cwd:Bc(r.cwd)??Bc(a.cwd),durationMs:cp(r.durationMs)??cp(r.duration_ms),exitCode:cp(r.exitCode)??cp(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Bf(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:$f(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=Fc(t.params)??{},r=n??a,i=qf(t)??`file-change:${$f(t)??"turn"}`,s=Kf(r)??Kf(a),o=dp(r.changes)??dp(a.changes)??[],d=function(e,t){const n=[Bc(e.path),Bc(e.filePath),Bc(e.file_path),...t.flatMap(e=>{const t=Fc(e);return[Bc(t?.path),Bc(t?.filePath),Bc(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Ef({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:cp(r.additions)??Wf(s,"+"),changes:o,deletions:cp(r.deletions)??Wf(s,"-"),diff:s,kind:"fileChange",paths:d,status:Hf(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Bf(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:$f(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=Fc(t.params)??{},a=Bc(n.requestId)??Bc(n.id);if(!a)return;Nh.delete(sp(e,a));const r=Ih.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=Wh(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:lp(n.result),status:"resolved"},status:"COMPLETED"});i&&Np(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Fc(t.params),a=Bc(Fc(n?.error)?.message)??Bc(n?.message)??t.error?.message??"Codex runtime error.";await Ef({completedAt:new Date,content:a,itemId:`error:${$f(t)??Date.now()}`,kind:"ERROR",metadata:{details:lp(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:$f(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>Ip("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=Fc(e.params),r=Bc(a?.threadId);if(t&&r&&r!==t)return!1;const i=Bc(a?.turnId);return!n||!i||i===n})(n,e,b)&&df(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Fc(t.params)??{},r=il(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?jf(e).includes("permissions")?"permissions":"approval":jf(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:Bc(n.message),method:e,mode:Bc(n.mode),questions:np(n.questions),raw:lp(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:dp(n.availableDecisions),changes:dp(n.changes),command:Bc(n.command),cwd:Bc(n.cwd),itemId:Bc(n.itemId),kind:a,method:e,raw:lp(r),reason:Bc(n.reason)??Bc(n.message),requestId:t,requestKind:a,status:"pending",turnId:Bc(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=ip(i);return e.runtime.respondToServerRequest(t.id,n),void(await Ef({completedAt:new Date,content:rp(s),itemId:Bc(a.itemId),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:n,status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Bc(a.turnId)}))}const o=await Ef({content:rp(s),itemId:Bc(a.itemId),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",threadId:e.threadId,turnId:Bc(a.turnId)});Nh.set(sp(e.threadId,r),{messageId:o.id,requestId:r,requestKind:i,rpcId:t.id,runtime:e.runtime,threadId:e.threadId})}({permissionMode:()=>l.permissionMode,runId:t,runtime:l.runtime,threadId:e},n)).catch(e=>Ip("Codex server request projection failed.",e))});try{if(!f&&await Nf(l.runtime,e,o,d)!==e)throw new Error("Codex returned a different thread id while resuming.");!function({cwd:e,runtime:t,seed:n,threadId:a}){const r=n?.trim();if(!r)return;const i=yp(r);(async()=>{i&&await Ep(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=Fc((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return bp(Bc(a?.name)??Bc(a?.threadName)??Bc(a?.thread_name)??Bc(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await Ep(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await Cf(l.runtime,u?.model??null,u?.reasoningEffort??null);y=new AbortController,N=l.runtime.waitForEvent(t=>function(e){const t=e.method??"";return"turn/completed"===t||"turn/failed"===t||"turn/interrupted"===t||"turn/cancelled"===t||"turn/canceled"===t||t.startsWith("turn/")&&(t.includes("completed")||t.includes("failed")||t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled"))}(t)&&Rf(t)===e&&(!b||$f(t)===b),6e5,y.signal);const p=await async function(e,t,n,a){const r=bf(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,!xf(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(l.runtime,{threadId:e,cwd:o,...u?.model?{model:u.model}:{},...u?.reasoningEffort?{effort:u.reasoningEffort}:{},...u?.serviceTier?{serviceTier:u.serviceTier}:{},...If(d,h,m),metadata:i},r,s);x=!0,b=Df(p),l.primed=!1,l.turnId=b??null,b&&l.interruptRequested&&await cf(l.runtime,b,e);const g=await N;if(await async function(e){await(Ch.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Jh(Gf(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(Gf(g));const w=await async function(e,t,n){try{const a=Fc((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return Lf((Array.isArray(a?.data)?a.data:[]).map(e=>Fc(e)).filter(e=>!!e).filter(e=>!n||Bc(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,b)||Pf(g)||Pf(p)||v,I=new Date,k=Wh(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:b??null});Sf(e,t,"COMPLETED"),Tf(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return Ih.get(e)?.messages.some(e=>{if(e.runId!==t)return!1;const n=e.content.trim();return!(!n||"Planning..."===n)&&("CHAT"===e.kind&&"ASSISTANT"===e.role?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(n):"PLAN"===e.kind&&"result"===Fc(e.metadata)?.presentation)})??!1}(e,t)&&await dh(e,{collaborationMode:"default"}),Np(e,"chat.updated",await Th(e)),k&&Np(e,"message.completed",k),Np(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=Cp((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=Fc((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Cp((op(n?.data)??op(n?.items)??op(n?.threads)??[]).find(e=>Bc(e.id)===t))}catch{return null}}(e,t);n&&await Tp(t,n)}(kp(a),e),await mm(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!x;Tf(e,t,a);const i=new Date;if(A instanceof Jh){Sf(e,t,"COMPLETED");const s=Wh(e,n,{completedAt:i,content:v,metadataPatch:{interrupted:!0,kind:"assistant"},status:"COMPLETED"});return l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Np(e,"chat.updated",await Th(e)),s&&Np(e,"message.completed",s),void Np(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}Sf(e,t,"FAILED");const s=Wh(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Np(e,"chat.updated",await Th(e)),s&&Np(e,"message.failed",{...s,error:a}),Np(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),Ch.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(Ah.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=Ih.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await qh((await Xh(await Th(e))).accountId??n.accountId),a=new Date,r=await Vh({account:t,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:n.permissionMode,startedAt:a,threadId:e,workingDirectory:n.workingDirectory}),i=Wh(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&Np(e,"message.updated",i)}catch(A){const a=Wh(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&Np(e,"message.updated",a)}}(e)).catch(()=>{});Ah.set(e,t),t.finally(()=>{Ah.get(e)===t&&Ah.delete(e)})}(e):function(e){Xh(async function(e){try{return await Th(e)}catch{return null}}(e)).catch(e=>{console.warn("Failed to auto rotate idle chat account.",e instanceof Error?e.message:e)})}(e)}}(e,t,n,a,r,i,s,o,d,c))}(c,m,h.id,e,r,i,t,l,a,n),{assistantMessage:h,runId:m}}var Jh=class extends Error{};async function Xh(e){const t=await e;if(!t)throw new sc(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||Ih.get(t.id)?.primed)return t;const n=await kc.codexAccount.findMany({orderBy:{createdAt:"asc"},where:{status:"CONNECTED"}});if(!n.length)return t;const a=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:wr(await Yc({accountId:e.id,args:Ap(e.args),command:e.command,environment:Gc(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(n),r=n.find(e=>e.id===t.accountId),i=r?Yh(a.get(r.id)):-1;if(r&&i>=0)return t;const s=function(e,t){return e.map((e,n)=>({account:e,index:n,score:Yh(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(n,a);if(!s||s.id===t.accountId)return t;if(Yh(a.get(s.id))<0)return t;const o=await dh(t.id,{accountId:s.id});mm(t.id,s.id).catch(()=>{});const d=await Oh(t.id,o);return Np(t.id,"chat.updated",d),d}function Yh(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Zh(e.secondary)?"weekly":Zh(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-ef(e.usedPercent));return t.length?Math.min(...t):0}function Zh(e){return ef(e?.usedPercent??0)>=100}function ef(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function tf(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 sc(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 sc(400,"Image attachments must be 6 MB or smaller.");const s=af(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Bt(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function nf(e,t){const n=await async function(e,t){return xh(await bh(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Bt(),kind:"file",name:af(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function af(e,t){const n=e?.trim();return(n?fn(n):t).slice(0,160)||"attachment"}function rf(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}function sf(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function of(e,t){if(!xp(e.title))return null;const n=t.trim();return n||null}function df(e,t){const n=(Ch.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return Ch.set(e,a),a.finally(()=>{Ch.get(e)===a&&Ch.delete(e)}),n}async function cf(e,t,n){const a={turnId:t,...n?{threadId:n}:{}};try{return void(await e.request("turn/interrupt",a,3e4))}catch(r){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return!t||t.includes("invalid")||t.includes("unknown")||t.includes("missing")||t.includes("param")}(r))throw r}await e.request("turn/interrupt",{turn_id:t,...n?{thread_id:n}:{}},3e4)}async function lf(e,t,n,a){async function r(r){const i=bf(n,a),s=void 0===t.collaborationMode?[t]:[t,uf(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&&yf(d))break;if(xf(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 mf(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}function uf(e,t){const n={...e};return delete n[t],n}async function mf(e,t){for(let n=0;n<3;n+=1){const a=await hf(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 hf(e,t){try{const n=Fc((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return ff(op(n?.data)??op(n?.items)??op(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 ff(op(Fc(Fc(n.result)?.thread)?.turns)??[],!1)}function ff(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>gf(pf(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!wf(vf(i)))continue;const e=gf(pf(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function pf(e){return Bc(e.id)??Bc(e.turnId)??Bc(e.turn_id)??null}function gf(e){const t=e?.trim();return t||null}function vf(e){return(Bc(e.status)??Bc(e.turnStatus)??Bc(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function wf(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function bf(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={text:n,text_elements:[],type:"text"},s=(e,t)=>[i,...a.map(t=>({[e]:t.message.url,type:"image"})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function xf(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 yf(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}async function Nf(e,t,n,a){const r=t?"thread/resume":"thread/start",i=Fc((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=Bc(Fc(i?.thread)?.id)??Bc(i?.threadId)??Bc(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function If(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Af(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function kf(e,t=null){return"plan"!==e?{}:{collaborationMode:Af(e,t)}}function Af(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Cf(e,t,n){const a=vp(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Fc(Fc((await e.request("config/read",{},3e4)).result)?.config),n=vp(Bc(t?.model));if(r=r??wp(t?.model_reasoning_effort)??wp(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Fc((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=Fc(e),n=vp(Bc(t?.id))??vp(Bc(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function Ef(e){return async function(e,t){if(!e)return t();const n=Eh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Eh.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Eh.get(e)===i&&Eh.delete(e)}}(Mf(e),async()=>{const t=Hh(e.threadId),n=function(e,t){const n=Mf(t),a=n?e.messageKeys.get(n):null;return a?e.messages.find(e=>e.id===a)??null:t.requestId?e.messages.find(e=>e.requestId===t.requestId)??null:t.itemId?e.messages.find(e=>e.itemId===t.itemId&&e.kind===t.kind)??null:t.fallbackMessageId?e.messages.find(e=>e.id===t.fallbackMessageId)??null:null}(t,e),a=n?Wh(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):Kh(e.threadId,{completedAt:e.completedAt,content:e.content,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId}),r=Mf(e);return r&&t.messageKeys.set(r,a.id),Np(e.threadId,n?"message.updated":"message.created",a),a})}function Mf(e){return e.requestId?`${e.threadId}:request:${e.requestId}`:e.itemId?`${e.threadId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.threadId}:fallback:${e.fallbackMessageId}`:null}function Tf(e,t,n){const a=Ih.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status||"APPROVAL"!==r.kind&&"USER_INPUT_PROMPT"!==r.kind)continue;if(r.requestId){const t=sp(e,r.requestId),a=Nh.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),Nh.delete(t)}const a=Wh(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&Np(e,"message.updated",a)}}function Sf(e,t,n){const a=Ih.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status&&"STREAMING"!==r.status||!["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"].includes(r.kind))continue;const a=Wh(e,r.id,{completedAt:new Date,status:n});a&&Np(e,"message.updated",a)}}function Pf(e){const t=Fc(e.result),n=Fc(e.params),a=Fc(n?.payload)??n??t;return Lf(Fc(n?.turn)??Fc(t?.turn))??up(t?.text)??up(t?.content)??up(a?.text)??up(a?.content)??up(a?.delta)??up(a?.message)??""}function Df(e){const t=Fc(e.result),n=Fc(e.params);return Bc(t?.turnId)??Bc(t?.turn_id)??Bc(n?.turnId)??Bc(n?.turn_id)??Bc(Fc(t?.turn)?.id)??Bc(Fc(n?.turn)?.id)}function Lf(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Fc(e);return"agentMessage"!==t?.type?null:up(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Rf(e){const t=Fc(e.params),n=Fc(e.result),a=Fc(t?.event);return Bc(t?.threadId)??Bc(t?.thread_id)??Bc(n?.threadId)??Bc(n?.thread_id)??Bc(a?.threadId)??Bc(a?.thread_id)}function $f(e){const t=Fc(e.params),n=Fc(e.result),a=_f(e);return Bc(t?.turnId)??Bc(n?.turnId)??Bc(a?.turnId)??Df(e)}function qf(e){const t=Fc(e.params),n=Fc(e.result),a=_f(e);return Bc(t?.itemId)??Bc(n?.itemId)??Bc(a?.id)}function _f(e){const t=Fc(e.params),n=Fc(e.result),a=Fc(t?.payload);return Fc(t?.item)??Fc(n?.item)??Fc(a?.item)}function Uf(e){const t=Fc(e.params),n=Fc(t?.event);return up(t?.delta)??up(t?.text)??up(t?.output)??up(n?.delta)??up(n?.text)}function zf(e,t){const n=Fc(e.params),a=Fc(e.result);return[t,n,Fc(n?.event),Fc(n?.payload),a].map(Of).find(e=>!!e?.trim())}function Of(e){if(e)return up(e.reasoning)??up(e.reasoningText)??up(e.reasoning_text)??up(e.summary)??Bh(e.summary)??Bh(e.content)??up(e.text)??up(e.output)}function jf(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Ff(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Bf(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Gf(e){const t=Fc(e.params);return Bc(Fc(t?.error)?.message)??Bc(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Hf(e,t){const n=Bc(e?.status);return n?jf(n):t.includes("failed")||t.includes("error")?"failed":Bf({method:t})?"completed":"running"}function Kf(e){return up(e.diff)??up(e.unifiedDiff)??up(e.unified_diff)??up(e.patch)}function Wf(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Qf(e){const t=jf(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Vf(e){return jf(e.method??"").includes("start")}function Jf(e){const t=jf(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Xf(e,t=e){const n=ep(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=ep(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=ep(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}([ep(e,["input_tokens","inputTokens"]),ep(e,["output_tokens","outputTokens"]),ep(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,i-d),l=Math.max(0,Math.min(100,Math.round(d/i*100)));return{remainingPercent:Math.max(0,100-l),tokenLimit:i,tokensRemaining:c,tokensUsed:d,usedPercent:l}}function Yf(e,t=0){if(t>4)return;const n=Fc(e);if(!n)return;const a=jf(Bc(n.type)??""),r=jf(Bc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Yf(n[i],t+1);if(e)return e}}function Zf(e,t){for(const n of t){const t=Fc(e[n]);if(t)return t}}function ep(e,t){for(const n of t){const t=tp(e[n]);if(void 0!==t)return t}}function tp(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 np(e){return Array.isArray(e)?e.map(e=>Fc(e)).filter(e=>!!e).map(e=>({header:Bc(e.header),id:Bc(e.id)??Bt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:ap(e.options),question:Bc(e.question)??Bc(e.header)??"Answer",selectionLimit:cp(e.selectionLimit)??cp(e.selection_limit)})):[]}function ap(e){return Array.isArray(e)?e.map(e=>Fc(e)).filter(e=>!!e).map(e=>({description:Bc(e.description),label:Bc(e.label)??Bc(e.value)??""})).filter(e=>e.label):[]}function rp(e){return"userInput"===e.kind?Bc(e.message)??"Codex needs more information before it can continue.":Bc(e.reason)??Bc(e.command)??"Codex needs approval before it can continue."}function ip(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function sp(e,t){return`${e}:${t}`}function op(e){return Array.isArray(e)?e.map(e=>Fc(e)).filter(e=>!!e):null}function dp(e){if(Array.isArray(e))return e.map(lp)}function cp(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function lp(e){return JSON.parse(JSON.stringify(e))}function up(e){return"string"==typeof e&&e.length>0?e:void 0}function mp(e){if(null===e)return null;const t=e.trim();if(!t)throw new sc(400,"Runtime option cannot be empty.");return t}function hp(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new sc(400,"reasoningEffort is invalid.");return e}function fp(e){if(null===e||"fast"===e||"flex"===e)return e;throw new sc(400,"serviceTier is invalid.")}function pp(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new sc(400,"collaborationMode is invalid.")}function gp(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new sc(400,"permissionMode is invalid.")}function vp(e){const t=e?.trim();return t||null}function wp(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function bp(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function xp(e){const t=function(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}function yp(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 Np(e,t,n){ah(e,t,n)}function Ip(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function kp(e){return Kc.getRuntime({accountId:e.id,args:Ap(e.args),command:e.command,environment:Gc(e.environment),workingDirectory:null})}function Ap(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Cp(e){const t=Fc(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=bp(Bc(i)??"");if(e)return e}const a=bp(Bc(t.title)??"");if(a&&!xp(a))return a;const r=Fc(t.thread);return r?Cp(r):null}async function Ep(e,t,n){const a=bp(n);if(!a||xp(a))return!1;const r=await oh(t);return!(r?.title&&!xp(r.title))&&(await Tp(t,a),Mp(e,t,a),!0)}async function Mp(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function Tp(e,t){const n=bp(t);n&&!xp(n)&&Np(e,"chat.updated",await Oh(e,await dh(e,{title:n})))}var Sp=qn({action:()=>Dp,loader:()=>Pp});async function Pp({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await async function(){const[e,t]=await Promise.all([sh(),_h()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...Ih.keys()]);return(await Promise.all([...a].map(e=>Oh(e,n.get(e)??null,t.get(e)??null)))).filter(e=>"ARCHIVED"!==e.status).sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()||new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}())}catch(t){return vc(t)}}async function Dp({request:e}){try{cc(e,["POST"]),await Mc(e);const t=await lc(e);return oc(await async function(e){const t=await qh(e.accountId),n=hh(e.workingDirectory),a=void 0===e.collaborationMode?"default":pp(e.collaborationMode),r=void 0===e.permissionMode?"default":gp(e.permissionMode),i=kp(t),s=await Nf(i,null,n),o=await dh(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:mp(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:hp(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:fp(e.serviceTier),title:bp(e.title??"")??null,workingDirectory:n}),d=await Gh(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await Oh(s,o);return Np(s,"chat.updated",c),c}({accountId:uc(t.accountId,"accountId",{required:!0}),autoRotateAccount:hc(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:uc(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:uc(t.model,"model",{maxLength:160}),reasoningEffort:Lp(t.reasoningEffort,"reasoningEffort"),serviceTier:Lp(t.serviceTier,"serviceTier"),collaborationMode:Lp(t.collaborationMode,"collaborationMode"),permissionMode:Lp(t.permissionMode,"permissionMode"),title:uc(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return vc(t)}}function Lp(e,t){return null===e?null:uc(e,t,{maxLength:80})}var Rp=qn({action:()=>qp,loader:()=>$p});async function $p({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await Th(gc(t,"chatId")))}catch(n){return vc(n)}}async function qp({request:e,params:t}){try{await Mc(e);const n=gc(t,"chatId");if("PATCH"===e.method){const t=await lc(e);return oc(await Sh(n,{accountId:uc(t.accountId,"accountId"),autoRotateAccount:hc(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:uc(t.model,"model",{maxLength:160}),reasoningEffort:_p(t.reasoningEffort,"reasoningEffort"),serviceTier:_p(t.serviceTier,"serviceTier"),collaborationMode:_p(t.collaborationMode,"collaborationMode"),permissionMode:_p(t.permissionMode,"permissionMode"),title:uc(t.title,"title",{maxLength:160}),workingDirectory:uc(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return oc(await Ph(n));dc(e.method)}catch(n){return vc(n)}}function _p(e,t){return null===e?null:uc(e,t,{maxLength:80})}var Up=qn({loader:()=>zp});async function zp({request:e,params:t}){try{return cc(e,["GET"]),await Mc(e),oc(await async function(e){return await Th(e),{usage:await fm(e)}}(gc(t,"chatId")))}catch(n){return vc(n)}}var Op=qn({loader:()=>jp});async function jp({request:e,params:t}){try{cc(e,["GET"]),await Mc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new sc(400,"path is required.");return oc(await wh(gc(t,"chatId"),a,pc(n,"line",0)||null))}catch(n){return vc(n)}}var Fp=An(Nn);async function Bp(e){const t=await Hp(e),n=await Kp(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await Wp(t.cwd),r=await Qp(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 Qp(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Vp(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 Gp(e,t){const n=await Hp(e);if("RUNNING"===n.status)throw new sc(409,"Git actions are disabled while Codex is running.");if(!(await Kp(n.cwd)))throw new sc(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Jp(t.branch);a=await Vp(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Jp(t.branch);await Vp(n.cwd,["check-ref-format","--branch",e]),a=await Vp(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new sc(400,"Commit message is required.");await Vp(n.cwd,["add","-A"]),a=await Vp(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Vp(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new sc(400,"Unsupported git action.");a=await Qp(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Vp(n.cwd,["push"]):await async function(e){await Vp(e,["remote","get-url","origin"]);const t=await Wp(e);if(!t)throw new sc(400,"Cannot push while detached from a branch.");return Vp(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Yp(t.action),output:a,status:await Bp(e)}}async function Hp(e){const t=await ch(e);if(!t)throw new sc(400,"Chat does not have a working directory.");return{cwd:hh(t),status:$h(e)}}async function Kp(e){return Qp(e,["rev-parse","--show-toplevel"])}async function Wp(e){return await Qp(e,["symbolic-ref","--quiet","--short","HEAD"])??await Qp(e,["rev-parse","--short","HEAD"])}async function Qp(e,t){try{return await Vp(e,t)}catch{return null}}async function Vp(e,t){try{const n=await Fp("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Xp(n.stdout,n.stderr)}catch(n){throw new sc(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Xp("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 Jp(e){const t=e?.trim();if(!t)throw new sc(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new sc(400,"Branch name is invalid.");return t}function Xp(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Yp(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 Zp({request:e,params:t}){try{cc(e,["GET"]),await Mc(e);const n=gc(t,"chatId"),a=gc(t,"operation"),r=new URL(e.url);if("status"===a)return oc(await Bp(n));if("branches"===a)return oc(await async function(e){const t=await Hp(e);if(!(await Kp(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Wp(t.cwd);return{branches:(await Vp(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 Qp(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return oc(await async function(e,t){const n=await Hp(e);if(!(await Kp(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Xp(await Qp(n.cwd,["diff","--stat",...a]),await Qp(n.cwd,["diff","--cached","--stat",...a]));return{diff:Xp(await Qp(n.cwd,["diff","--no-ext-diff",...a]),await Qp(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return oc(await async function(e){const t=await Hp(e);return await Kp(t.cwd)?{commits:(n=await Qp(t.cwd,["log","--max-count=80","--date=iso-strict","--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%aI%x1f%D%x1f%s%x1e","--decorate=short","--all"])??"",n.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t,n,a,r,i,s,...o]=e.split("");return t&&n?{authorEmail:r??"",authorName:a??"",authoredAt:i??"",hash:t,refs:(s??"").split(",").map(e=>e.trim()).filter(Boolean),shortHash:n,subject:o.join("")||"(no subject)"}:null}).filter(e=>!!e)),isRepo:!0}:{commits:[],isRepo:!1};var n}(n));throw new sc(404,"Git operation not found.")}catch(n){return vc(n)}}async function eg({request:e,params:t}){try{if(cc(e,["POST"]),await Mc(e),"action"!==gc(t,"operation"))throw new sc(404,"Git operation not found.");const n=await lc(e),a={action:tg(n.action),branch:uc(n.branch,"branch",{maxLength:240}),message:uc(n.message,"message",{maxLength:5e3})};return oc(await Gp(gc(t,"chatId"),a))}catch(n){return vc(n)}}function tg(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new sc(400,"action is invalid.")}async function ng({request:e,params:t}){try{cc(e,["GET"]),await Mc(e);const n=new URL(e.url);return oc(await Dh(gc(t,"chatId"),pc(n,"afterSequence",0),pc(n,"limit",50)))}catch(n){return vc(n)}}async function ag({request:e,params:t}){try{cc(e,["POST"]),await Mc(e);const n=await lc(e),a={content:ig(n.content),accountId:uc(n.accountId,"accountId"),attachments:sg(n.attachments),collaborationMode:lg(n.collaborationMode,"collaborationMode"),delivery:rg(n.delivery),metadata:fc(n.metadata,"metadata")};return oc(await Rh(gc(t,"chatId"),a),{status:201})}catch(n){return vc(n)}}function rg(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new sc(400,"delivery is invalid.")}}function ig(e){if(null==e)return"";if("string"!=typeof e)throw new sc(400,"content must be a string.");if(e.length>4e4)throw new sc(400,"content must be 40000 characters or fewer.");return e.trim()}function sg(e){if(void 0!==e){if(!Array.isArray(e))throw new sc(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new sc(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:og(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:dg(n.mimeType,`attachments[${t}].mimeType`,80),name:dg(n.name,`attachments[${t}].name`,160),size:cg(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:dg(n.name,`attachments[${t}].name`,160),path:og(n.path,`attachments[${t}].path`,4096),size:cg(n.size,`attachments[${t}].size`)};throw new sc(400,`attachments[${t}].kind is invalid.`)})}}function og(e,t,n){if("string"!=typeof e||!e.trim())throw new sc(400,`${t} is required.`);if(e.length>n)throw new sc(400,`${t} is too large.`);return e}function dg(e,t,n){if(null!=e){if("string"!=typeof e)throw new sc(400,`${t} must be a string.`);if(e.length>n)throw new sc(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function cg(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new sc(400,`${t} must be a positive number.`);return e}}function lg(e,t){return null===e?null:uc(e,t,{maxLength:80})}async function ug({request:e,params:t}){try{return cc(e,["POST"]),await Mc(e),oc(await async function(e){if("RUNNING"!==(await Th(e)).status)throw new sc(409,"There is no running task to stop.");const t=Ih.get(e);if(!t?.runId)throw new sc(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await cf(t.runtime,t.turnId,e),{chatId:e,runId:t.runId,status:"RUNNING"===t.status?"RUNNING":"QUEUED",message:t.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(gc(t,"chatId")))}catch(n){return vc(n)}}async function mg({request:e,params:t}){try{return cc(e,["POST"]),await Mc(e),oc(await async function(e,t){await Th(e);const n=Ih.get(e);if(!n||"RUNNING"!==n.status&&"QUEUED"!==n.status)throw new sc(409,"There is no running task to steer.");if(!n.runtime)throw new sc(409,"The active turn is not ready for steering yet.");const a=n.queuedTurns.findIndex(e=>e.id===t);if(a<0)throw new sc(410,"Queued message is no longer pending.");const r=n.queuedTurns[a],i=n.turnId??await mf(n.runtime,e);if(!i)throw new sc(409,"The active turn has not published a turn id yet.");const s=await oh(e),o=await Cf(n.runtime,s?.model??null,s?.reasoningEffort??null);n.turnId=Df(await lf(n.runtime,{expectedTurnId:i,threadId:e,...kf(r.collaborationMode,o)},r.content,r.attachments))??i,n.queuedTurns.splice(a,1);const d=new Date,c=Wh(e,r.messageId,{completedAt:d,metadataPatch:{delivery:"steer",queueStatus:"steered",runId:n.runId??null,steeredAt:d.toISOString()},turnId:n.turnId});if(!c)throw new sc(410,"Queued message is no longer available.");return Np(e,"chat.updated",await Th(e)),Np(e,"message.updated",c),c}(gc(t,"chatId"),gc(t,"queueId")))}catch(n){return vc(n)}}async function hg({request:e,params:t}){try{cc(e,["POST"]),await Mc(e);const n=await lc(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new sc(400,"kind must be approval, permissions, or userInput.")}(n.kind);return oc(await Lh(gc(t,"chatId"),gc(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return vc(n)}}async function fg({request:e}){try{return cc(e,["GET"]),await Mc(e),oc(await uh(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return vc(t)}}async function pg({request:e}){try{cc(e,["POST"]),await Mc(e);const t=await lc(e),n={parentPath:uc(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:uc(t.name,"name",{required:!0,maxLength:255})};return oc(await mh(n.parentPath,n.name),{status:201})}catch(t){return vc(t)}}var gg={entry:{module:"/assets/entry.client-D7Yyv89q.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js"],css:[]},routes:{root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!0,module:"/assets/root-CEanGH3t.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js","/assets/document-title-CHO2Odju.js","/assets/session-provider-Bm2PmtNc.js"],css:["/assets/root-BRJo5KR5.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-tAEbMlde.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/label-DCuf6YnR.js","/assets/session-provider-Bm2PmtNc.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-lHxV3BNh.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/app-shell-Bo8pv11U.js","/assets/label-DCuf6YnR.js","/assets/document-title-CHO2Odju.js","/assets/session-provider-Bm2PmtNc.js","/assets/react-dom-Cmetac4J.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-wk_AHvg3.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/app-shell-Bo8pv11U.js","/assets/label-DCuf6YnR.js","/assets/document-title-CHO2Odju.js","/assets/session-provider-Bm2PmtNc.js","/assets/react-dom-Cmetac4J.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-C2zq74m2.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/app-shell-Bo8pv11U.js","/assets/label-DCuf6YnR.js","/assets/document-title-CHO2Odju.js","/assets/session-provider-Bm2PmtNc.js","/assets/react-dom-Cmetac4J.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.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.personalization-DH1AzvNF.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-local-active-D9cdi-v4.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.login-callback-port-DQNbFsFb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.local-active-Lj56Skb8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-DbJR7wIK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-DTZTQ21Z.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.personalization-DQAPMa-w.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.models-BbNPhoBD.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.rate-limits-C6Rs4m-7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate-zJk1OPH-.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate.callback-C3q2njBk.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats-s886wBuI.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId-BdQ0D5mb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.context-h_lwoA2q.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.files-Cx0zOZBK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.git._operation-DogyaTuw.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.messages-lfOVkPe8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.interrupt-DFwcHue_.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.queued._queueId.steer-Dob8lziy.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.server-requests._requestId.respond-CtGOWFXz.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.workspaces.directories-_nGjLu4v.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-ed43c94b.js",version:"ed43c94b",sri:void 0},vg="build/client",wg="/",bg={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},xg=!0,yg=!1,Ng=[],Ig={mode:"lazy",manifestPath:"/__manifest"},kg="/",Ag={module:_n},Cg={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:Na},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ra},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:qa},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:ec},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:nc},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:rc},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:wc},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:qc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:Uc},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:Oc},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:fu},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:wu},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:xu},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,module:Nu},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,module:Au},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,module:$u},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,module:Uu},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Ou},"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:Bu},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,module:Ku},"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:tm},"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:am},"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:im},"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:om},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Sp},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Rp},"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:Up},"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:Op},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,module:qn({action:()=>eg,loader:()=>Zp})},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,module:qn({action:()=>ag,loader:()=>ng})},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,module:qn({action:()=>ug})},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,module:qn({action:()=>mg})},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,module:qn({action:()=>hg})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:qn({action:()=>pg,loader:()=>fg})}},Eg=!1;export{Eg as allowedActionOrigins,gg as assets,vg as assetsBuildDirectory,wg as basename,Ag as entry,bg as future,yg as isSpaMode,Ng as prerender,kg as publicPath,Ig as routeDiscovery,Cg as routes,xg as ssr};
|