xedoc-cli 0.1.11 → 0.1.12

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.
Files changed (43) hide show
  1. package/README.md +11 -5
  2. package/build/client/assets/api.workspaces.directories-B0tllRDq.js +0 -0
  3. package/build/client/assets/app-layout-Bl4qOwh7.js +1 -0
  4. package/build/client/assets/app-shell-D4VZoy6V.js +2 -0
  5. package/build/client/assets/chat-5ZSZb1GN.js +1 -0
  6. package/build/client/assets/{connect-C_Nz7Dlc.js → connect-xfBRZuAz.js} +1 -1
  7. package/build/client/assets/document-title-bwEcQkgI.js +1 -0
  8. package/build/client/assets/{entry.client-BQZeV9JD.js → entry.client-Bt-W9tr6.js} +1 -1
  9. package/build/client/assets/{ghostty-web-CgkkAFeT.js → ghostty-web-BBN5ya0J.js} +1 -1
  10. package/build/client/assets/home-D-i6W4Ao.js +1 -0
  11. package/build/client/assets/{jsx-runtime-Cal6WBdn.js → jsx-runtime-BUWBtJLv.js} +1 -1
  12. package/build/client/assets/{label-3ZcIm6vU.js → label-BLnKkf67.js} +1 -1
  13. package/build/client/assets/manifest-9317aaeb.js +1 -0
  14. package/build/client/assets/{react-dom-D4MOkHq2.js → react-dom-Bppadr6u.js} +1 -1
  15. package/build/client/assets/root-B6reKqFo.js +1 -0
  16. package/build/client/assets/root-BDyfnfyW.css +2 -0
  17. package/build/client/assets/{session-provider-LuURNNCq.js → session-provider-BFqptX_P.js} +1 -1
  18. package/build/server/index.js +1 -1
  19. package/package.json +1 -1
  20. package/prisma/schema.prisma +22 -0
  21. package/server/sqlite-setup.mjs +63 -0
  22. package/build/client/assets/app-layout-VeZzc2bX.js +0 -1
  23. package/build/client/assets/app-shell-iKMZyGQn.js +0 -2
  24. package/build/client/assets/chat-lT5RuwNC.js +0 -1
  25. package/build/client/assets/document-title-C2ykzN2o.js +0 -1
  26. package/build/client/assets/home-BynJN9xe.js +0 -1
  27. package/build/client/assets/manifest-a5a0eaab.js +0 -1
  28. package/build/client/assets/root-B6ikjQMc.js +0 -1
  29. package/build/client/assets/root-KOlmIkbz.css +0 -2
  30. /package/build/client/assets/{__vite-browser-external-2447137e-Bb2UaVfr.js → __vite-browser-external-2447137e-DSxSsOOp.js} +0 -0
  31. /package/build/client/assets/{api.accounts._accountId.authenticate-Bp51NHGy.js → api.accounts._accountId.authenticate-CLzgv3py.js} +0 -0
  32. /package/build/client/assets/{api.accounts._accountId.authenticate.callback-DLgNMRyd.js → api.accounts._accountId.authenticate.callback-Bqhz8sDl.js} +0 -0
  33. /package/build/client/assets/{api.accounts._accountId.models-DGbCmT_9.js → api.accounts._accountId.models-VIVpVZrj.js} +0 -0
  34. /package/build/client/assets/{api.accounts._accountId.rate-limits-DZh4HPLO.js → api.accounts._accountId.personalization-z2pU64qI.js} +0 -0
  35. /package/build/client/assets/{api.chats-DZ_6Q7rY.js → api.accounts._accountId.rate-limits-C9iUvNFt.js} +0 -0
  36. /package/build/client/assets/{api.chats._chatId-BEX87qHo.js → api.chats-C6-gVaXw.js} +0 -0
  37. /package/build/client/assets/{api.chats._chatId.context-v4G0lNKq.js → api.chats._chatId-DaXHa-ln.js} +0 -0
  38. /package/build/client/assets/{api.chats._chatId.files-BrN7O-wM.js → api.chats._chatId.context-DlBgjpCD.js} +0 -0
  39. /package/build/client/assets/{api.chats._chatId.git._operation-CiUW8Knm.js → api.chats._chatId.files-DVZKcoNV.js} +0 -0
  40. /package/build/client/assets/{api.chats._chatId.interrupt-2DlVPDlX.js → api.chats._chatId.git._operation-8Xtyz4hF.js} +0 -0
  41. /package/build/client/assets/{api.chats._chatId.messages-cDawTuvN.js → api.chats._chatId.interrupt-B71lrxkc.js} +0 -0
  42. /package/build/client/assets/{api.chats._chatId.server-requests._requestId.respond-CTlCffOk.js → api.chats._chatId.messages-iVzJcgvw.js} +0 -0
  43. /package/build/client/assets/{api.workspaces.directories-nVoleT74.js → api.chats._chatId.server-requests._requestId.respond-BLhOUK8A.js} +0 -0
@@ -1 +1 @@
1
- import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useNavigate as h,useOutletContext as f,useParams as p}from"react-router";import{isbot as g}from"isbot";import{renderToPipeableStream as v}from"react-dom/server";import{Fragment as w,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as b,QueryClientProvider as N,useMutation as I,useQueries as k,useQuery as C,useQueryClient as A}from"@tanstack/react-query";import{ThemeProvider as M,useTheme as E}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as D,useEffect as L,useMemo as R,useRef as q,useState as O,useSyncExternalStore as $}from"react";import{Toaster as _,toast as U}from"sonner";import{AlertTriangle as z,Archive as j,ArrowLeft as F,ArrowRight as B,ArrowUp as G,Brain as H,Check as K,CheckCircle2 as W,CheckIcon as V,ChevronDown as Q,ChevronRight as J,ChevronRightIcon as X,CircleCheckIcon as Y,Clock as Z,Code2 as ee,Copy as te,Cpu as ne,Download as ae,ExternalLink as re,Eye as ie,File as se,FileCode as oe,FileDiff as de,Filter as ce,Folder as le,FolderOpen as ue,FolderPlus as me,Gauge as he,GitBranch as fe,GitCommitHorizontal as pe,Home as ge,Image as ve,Info as we,InfoIcon as xe,KeyRound as ye,Laptop as be,ListChecks as Ne,Loader2 as Ie,Loader2Icon as ke,LockKeyhole as Ce,LogOut as Ae,Mail as Me,Menu as Ee,MessageSquare as Te,Moon as Se,MoreHorizontal as Pe,OctagonXIcon as De,PanelLeftIcon as Le,Paperclip as Re,Pencil as qe,PencilLine as Oe,PlugZap as $e,Plus as _e,RefreshCw as Ue,RotateCcw as ze,RotateCw as je,Search as Fe,Server as Be,Settings as Ge,Shield as He,ShieldCheck as Ke,Square as We,SquarePen as Ve,Sun as Qe,Terminal as Je,Trash2 as Xe,TriangleAlertIcon as Ye,Upload as Ze,UserRound as et,X as tt,XIcon as nt,Zap as at}from"lucide-react";import{Tooltip as rt}from"@base-ui/react/tooltip";import{clsx as it}from"clsx";import{twMerge as st}from"tailwind-merge";import{Button as ot}from"@base-ui/react/button";import{cva as dt}from"class-variance-authority";import{Input as ct}from"@base-ui/react/input";import{AlertDialog as lt}from"@base-ui/react/alert-dialog";import{mergeProps as ut}from"@base-ui/react/merge-props";import{useRender as mt}from"@base-ui/react/use-render";import{Dialog as ht}from"@base-ui/react/dialog";import{ScrollArea as ft}from"@base-ui/react/scroll-area";import{Separator as pt}from"@base-ui/react/separator";import{io as gt}from"socket.io-client";import{Menu as vt}from"@base-ui/react/menu";import wt from"react-markdown";import xt from"remark-gfm";import yt from"highlight.js/lib/core";import bt from"highlight.js/lib/languages/bash";import Nt from"highlight.js/lib/languages/css";import It from"highlight.js/lib/languages/go";import kt from"highlight.js/lib/languages/json";import Ct from"highlight.js/lib/languages/javascript";import At from"highlight.js/lib/languages/markdown";import Mt from"highlight.js/lib/languages/python";import Et from"highlight.js/lib/languages/rust";import Tt from"highlight.js/lib/languages/shell";import St from"highlight.js/lib/languages/sql";import Pt from"highlight.js/lib/languages/typescript";import Dt from"highlight.js/lib/languages/xml";import Lt from"highlight.js/lib/languages/yaml";import{Popover as Rt}from"@base-ui/react/popover";import{Switch as qt}from"@base-ui/react/switch";import"dotenv/config";import{createHash as Ot,createHmac as $t,randomBytes as _t,randomUUID as Ut,scryptSync as zt,timingSafeEqual as jt}from"node:crypto";import{Prisma as Ft,PrismaClient as Bt}from"@prisma/client";import{appendFileSync as Gt,chmodSync as Ht,closeSync as Kt,constants as Wt,copyFileSync as Vt,existsSync as Qt,lstatSync as Jt,mkdirSync as Xt,openSync as Yt,readFileSync as Zt,readdirSync as en,readlinkSync as tn,realpathSync as nn,renameSync as an,statSync as rn,symlinkSync as sn}from"node:fs";import{homedir as on}from"node:os";import{basename as dn,delimiter as cn,dirname as ln,extname as un,isAbsolute as mn,join as hn,relative as fn,resolve as pn,sep as gn}from"node:path";import{execFile as vn,spawn as wn}from"node:child_process";import{access as xn,appendFile as yn,copyFile as bn,mkdir as Nn,open as In,readFile as kn,readdir as Cn,realpath as An,stat as Mn}from"node:fs/promises";import{promisify as En}from"node:util";var Tn=Object.defineProperty,Sn=(e,t)=>{let n={};for(var a in e)Tn(n,a,{get:e[a],enumerable:!0});return t||Tn(n,Symbol.toStringTag,{value:"Module"}),n},Pn=Sn({default:()=>Ln,streamTimeout:()=>Dn}),Dn=5e3;function Ln(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&g(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Dn+1e3);const{pipe:h,abort:f}=v(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var Rn=({...e})=>{const{theme:t="system"}=E();return x(_,{theme:t,className:"toaster group",icons:{success:x(Y,{className:"size-4"}),info:x(xe,{className:"size-4"}),warning:x(Ye,{className:"size-4"}),error:x(De,{className:"size-4"}),loading:x(ke,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function qn(...e){return st(it(e))}function On({delay:e=0,...t}){return x(rt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function $n({...e}){return x(rt.Root,{"data-slot":"tooltip",...e})}function _n({...e}){return x(rt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Un({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(rt.Portal,{children:x(rt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(rt.Popup,{"data-slot":"tooltip-content",className:qn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(rt.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var zn="xedoc";function jn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${zn}`:zn}(e);L(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=zn}},[t])}var Fn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Bn=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 Gn(e){return ea(e.serverUrl,"/api/auth/session",{token:e.token})}async function Hn(e,t,n){return ea(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Kn(e,t,n={}){return ea(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Wn(e,t){return ea(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function Vn(e,t){return ea(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function Qn(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return ea(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function Jn(e,t){return ea(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function Xn(e,t,n){return ea(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function Yn(e,t,n=0){return ea(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Zn(e,t,n){return ea(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function ea(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 Bn({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,ta(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Fn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,na(o)??ta(s)].filter(Boolean).join("\n"),i.status,a);return o}function ta(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function na(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 aa(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 ra={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function ia(){const e=sa();e&&(ca(e,"serverUrl"),ca(e,"token"))}function sa(){return"undefined"==typeof window?null:window.localStorage}function oa(e,t){return e.getItem(ra[t])}function da(e,t,n){e.setItem(ra[t],n)}function ca(e,t){e.removeItem(ra[t])}function la(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 ua=S(void 0);function ma({children:e}){const[t,n]=O(null),[a,r]=O(!1),i=$(fa,pa,ga),s=t,o=!i||!a;L(()=>{if(!i)return;const e=function(){const e=sa();if(!e)return null;const t=oa(e,"serverUrl"),n=oa(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Gn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{ia(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=la(window.location.origin),{token:a}=await async function(e,t){return ea(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=sa();t&&(da(t,"serverUrl",e.serverUrl),da(t,"token",e.token))}(i),n(i),r(!0)},[]),c=P(async()=>{s&&await Gn(s)},[s]),l=P(()=>{ia(),n(null),r(!0)},[]),u=R(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ua.Provider,{value:u,children:e})}function ha(){const e=D(ua);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function fa(){return()=>{}}function pa(){return!0}function ga(){return!1}var va=Sn({ErrorBoundary:()=>Na,Layout:()=>ya,default:()=>ba,links:()=>xa,meta:()=>wa});function wa(){return[{title:zn}]}function xa(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function ya({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 ba=c(function(){const[e]=O(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(M,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(On,{children:[x(ma,{children:x(i,{})}),x(Rn,{richColors:!0})]})})})}),Na=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})]})})}),Ia=dt("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function ka({className:e,variant:t="default",size:n="default",...a}){return x(ot,{"data-slot":"button",className:qn(Ia({variant:t,size:n,className:e})),...a})}function Ca({className:e,type:t,...n}){return x(ct,{type:t,"data-slot":"input",className:qn("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 Aa({className:e,...t}){return x("label",{"data-slot":"label",className:qn("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 Ma(){const[e,t]=O(""),[n,a]=O(""),[i,s]=O(null),[o,d]=O(null),[c,l]=O(!1),{loading:u,session:m,setup:f}=ha(),p=h(),g=!1===i;if(L(()=>{let e=!0;return d(null),async function(e){return ea(e,"/api/auth/status",{token:null})}(la(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await f(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?ye:$e,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:"server-password",children:"Server password"}),x(Ca,{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&&Ea(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(Ca,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&Ea(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(ka,{disabled:!Ea(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ie,{className:"animate-spin"}):x(g?ye:$e,{}),g?"Set Password":"Connect"]})]})]})})}function Ea(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ta=Sn({default:()=>Sa}),Sa=c(function(){return x(Ma,{})}),Pa=Sn({loader:()=>Da});function Da(){return m("/favicon.svg",301)}function La({...e}){return x(lt.Root,{"data-slot":"alert-dialog",...e})}function Ra({...e}){return x(lt.Portal,{"data-slot":"alert-dialog-portal",...e})}function qa({className:e,...t}){return x(lt.Backdrop,{"data-slot":"alert-dialog-overlay",className:qn("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 Oa({className:e,size:t="default",...n}){return y(Ra,{children:[x(qa,{}),x(lt.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:qn("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 $a({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:qn("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 _a({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:qn("-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 Ua({className:e,...t}){return x(lt.Title,{"data-slot":"alert-dialog-title",className:qn("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 za({className:e,...t}){return x(lt.Description,{"data-slot":"alert-dialog-description",className:qn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ja({className:e,...t}){return x(ka,{"data-slot":"alert-dialog-action",className:qn(e),...t})}function Fa({className:e,variant:t="outline",size:n="default",...a}){return x(lt.Close,{"data-slot":"alert-dialog-cancel",className:qn(e),render:x(ka,{variant:t,size:n}),...a})}function Ba({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:qn("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 Ga=dt("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function Ha({className:e,variant:t="default",render:n,...a}){return mt({defaultTagName:"span",props:ut({className:qn(Ga({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Ka({className:e,status:t}){return x(Ha,{className:e,variant:Wa(t),children:t.toLowerCase()})}function Wa(e){switch(e){case"ERROR":case"FAILED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}var Va={args:"",command:"",displayName:"",environment:""};function Qa({accounts:e,createFocusKey:t=0,session:n}){const[a,r]=O(Va),[i,s]=O(null),[o,d]=O(Va),[c,l]=O(null),u=q(null),m=q(null),h=q(null),f=A();L(()=>{if(t<=0)return;const e=window.setTimeout(()=>{m.current?.scrollIntoView({block:"start",behavior:"smooth"}),h.current?.focus()},80);return()=>window.clearTimeout(e)},[t]);const p=()=>f.invalidateQueries({queryKey:["accounts"]}),g=I({mutationFn:async(e={})=>{const t=await async function(e,t){return ea(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...Xa(a),displayName:a.displayName.trim()});return e.authMode?{account:t,auth:await Kn(n,t.id,{mode:e.authMode}),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),U.error(er(e))},onSuccess:({auth:e,popup:t})=>{r(Va),U.success("Account created."),p(),e&&T(e,t)}}),v=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return ea(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...Xa(o),displayName:o.displayName.trim()})},onError:e=>U.error(er(e)),onSuccess:()=>{s(null),d(Va),U.success("Account updated."),p()}}),b=I({mutationFn:({accountId:e,mode:t})=>Kn(n,e,{mode:t}),onError:(e,t)=>{t?.popup?.close(),U.error(er(e))},onSuccess:(e,t)=>{p(),T(e,t.popup)}}),N=I({mutationFn:e=>async function(e,t){return ea(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>U.error(er(e)),onSuccess:()=>{l(null),U.success("Account deleted."),p(),f.invalidateQueries({queryKey:["chats"]})}}),k=I({mutationFn:()=>async function(e){return ea(e.serverUrl,"/api/accounts/export",{token:e.token})}(n),onError:e=>U.error(er(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),U.success(`Exported ${e.accounts.length} ${Za(e.accounts.length)}.`)}}),C=I({mutationFn:e=>async function(e,t){return ea(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),U.error(er(e))},onSuccess:(e,t)=>{U.success(`Imported ${e.imported} ${Za(e.imported)}.`),p(),f.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){T(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&U.info(`${a} more ${Za(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&U.success(`Connected ${a} imported ${Za(a)}.`)}(e.authentications,t.popup)}});function M(e,t="browser"){b.mutate({accountId:e,mode:t,popup:tr()})}function E(e){g.mutate({authMode:e,popup:tr()})}function T(e,t){if(e.authUrl)return nr(e.authUrl,t),void U.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");t?.close(),"AUTHENTICATING"!==e.status?U.success(e.message??"Account is connected."):U.info(e.message??"Authentication is still in progress.")}return y(w,{children:[y("div",{className:"grid gap-5",children:[y("section",{className:"grid gap-3",children:[y("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Authenticate accounts before using them for chats."})]}),y("div",{className:"text-xs text-muted-foreground",children:[e.length," ",Za(e.length)]})]}),e.length?e.map(e=>{const t=("browser"===(n=e.lastAuthMode)||"device"===n?n:null)??"browser";var n;const a="device"===t,r="AUTHENTICATING"===e.status||!!e.lastAuthUrl,c=b.isPending&&b.variables?.accountId===e.id,u=b.variables?.mode??"browser",m=c&&"browser"===u,h=c&&"device"===u;return x("div",{className:"grid gap-4 rounded-md border bg-background p-4",children:i?.id===e.id?y(w,{children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[y("h4",{className:"text-sm font-semibold",children:["Edit ",e.displayName]}),x("p",{className:"text-xs text-muted-foreground",children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),y(ka,{size:"sm",variant:"ghost",onClick:()=>{s(null),d(Va)},children:[x(tt,{}),"Cancel"]})]}),x(Ja,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(ka,{className:"w-fit",disabled:!o.displayName.trim()||v.isPending,onClick:()=>v.mutate(),children:[v.isPending?x(Ie,{className:"animate-spin"}):x(W,{}),"Save account"]})]}):y(w,{children:[y("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-start",children:[y("div",{className:"min-w-0 space-y-2",children:[y("div",{className:"flex items-center gap-2",children:[x("h4",{className:"truncate text-sm font-semibold",children:e.displayName}),x(Ka,{status:e.status})]}),y("p",{className:"truncate font-mono text-xs text-muted-foreground",children:[e.command," ",e.args.join(" ")]}),e.environment?y("p",{className:"text-xs text-muted-foreground",children:[Object.keys(e.environment).length," env"," ",1===Object.keys(e.environment).length?"value":"values"]}):null,e.lastError?x("p",{className:"mt-2 whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:e.lastError}):null]}),y("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end",children:[y(ka,{disabled:c,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>M(e.id,"AUTHENTICATING"===e.status?t:"browser"),children:[m?x(Ie,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(je,{}):x(re,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(ka,{disabled:c,size:"sm",variant:"outline",onClick:()=>M(e.id,"device"),children:[h?x(Ie,{className:"animate-spin"}):x(ye,{}),"Device Login"]}),y(ka,{size:"sm",variant:"outline",onClick:()=>function(e){var t;s(e),d({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(e),children:[x(qe,{}),"Edit"]}),y(ka,{size:"sm",variant:"destructive",onClick:()=>l(e),children:[x(Xe,{}),"Delete"]})]})]}),r?y("div",{className:"grid gap-4 rounded-md border bg-muted/25 p-3",children:[y("div",{children:[x("h5",{className:"text-sm font-medium",children:a?"Device Login":"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:a?"Open the verification URL and enter the device code.":"Finish login in the opened browser. xedoc is listening on the Codex callback port and will connect this account automatically."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`auth-url-${e.id}`,children:a?"Verification URL":"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Ca,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(ka,{size:"sm",variant:"outline",onClick:()=>nr(e.lastAuthUrl??null),children:[x(re,{}),"Open"]})]})]}):null,a?e.lastAuthUserCode?y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`device-code-${e.id}`,children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Ca,{className:"font-mono text-sm tracking-wider",id:`device-code-${e.id}`,readOnly:!0,value:e.lastAuthUserCode}),y(ka,{size:"sm",variant:"outline",onClick:()=>async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),U.success("Device code copied.")}catch{U.error("Could not copy device code.")}}(e.lastAuthUserCode??""),children:[x(te,{}),"Copy"]})]})]}):x("p",{className:"rounded-md border border-dashed bg-background px-3 py-2 text-xs text-muted-foreground",children:"Start device login again to get a fresh code."}):x("p",{className:"rounded-md border border-dashed bg-background px-3 py-2 text-xs text-muted-foreground",children:"Keep this account pending while the browser flow completes. Use Device Login if the browser is running on a different machine."})]}):null]})},e.id)}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h4",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account below or import account records from a JSON export."})]})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",ref:m,children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Create account"}),x("p",{className:"text-sm text-muted-foreground",children:"Use a readable name. Runtime fields are optional."})]}),x(Ja,{displayNameRef:h,form:a,onChange:r,prefix:"create-account"}),y("div",{className:"flex flex-wrap gap-2",children:[y(ka,{disabled:!a.displayName.trim()||g.isPending,onClick:()=>E("browser"),children:[g.isPending?x(Ie,{className:"animate-spin"}):x(re,{}),"Create & Authenticate"]}),y(ka,{disabled:!a.displayName.trim()||g.isPending,variant:"secondary",onClick:()=>E("device"),children:[g.isPending?x(Ie,{className:"animate-spin"}):x(ye,{}),"Create & Device Login"]}),y(ka,{disabled:!a.displayName.trim()||g.isPending,variant:"outline",onClick:()=>g.mutate({}),children:[g.isPending?x(Ie,{className:"animate-spin"}):x(_e,{}),"Create Only"]})]})]}),y("section",{className:"flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/30 p-4",children:[y("div",{className:"min-w-0",children:[x("h3",{className:"text-sm font-semibold",children:"Import / export"}),x("p",{className:"text-sm text-muted-foreground",children:"Move account records and runtime settings with JSON. Codex auth tokens stay on this server."})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:u,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=tr();try{const e=JSON.parse(await t.text());C.mutate({accounts:Ya(e),popup:n})}catch(a){n?.close(),U.error(er(a))}}}),y(ka,{disabled:C.isPending,variant:"secondary",onClick:()=>u.current?.click(),children:[C.isPending?x(Ie,{className:"animate-spin"}):x(Ze,{}),"Import JSON"]}),y(ka,{disabled:k.isPending,variant:"outline",onClick:()=>k.mutate(),children:[k.isPending?x(Ie,{className:"animate-spin"}):x(ae,{}),"Export JSON"]})]})]})]}),x(La,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Oa,{children:[y($a,{children:[x(Ua,{children:"Delete account?"}),y(za,{children:["This removes ",c?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(_a,{children:[x(Fa,{children:"Cancel"}),y(ja,{disabled:N.isPending,variant:"destructive",onClick:()=>{c&&N.mutate(c.id)},children:[N.isPending?x(Ie,{className:"animate-spin"}):x(Xe,{}),"Delete"]})]})]})})]})}function Ja({displayNameRef:e,form:t,onChange:n,prefix:a}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`${a}-name`,children:"Display name"}),x(Ca,{id:`${a}-name`,placeholder:"Work Codex",ref:e,value:t.displayName,onChange:e=>n({...t,displayName:e.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`${a}-command`,children:"Command"}),x(Ca,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`${a}-args`,children:"Arguments"}),x(Ca,{id:`${a}-args`,placeholder:"app-server",value:t.args,onChange:e=>n({...t,args:e.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(Aa,{htmlFor:`${a}-environment`,children:"Environment JSON"}),x(Ba,{className:"min-h-20 font-mono text-xs",id:`${a}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:t.environment,onChange:e=>n({...t,environment:e.target.value})})]})]})}function Xa(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 Ya(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 Za(e){return 1===e?"account":"accounts"}function er(e){return e instanceof Error?e.message:"Request failed."}function tr(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function nr(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function ar({...e}){return x(ht.Root,{"data-slot":"dialog",...e})}function rr({...e}){return x(ht.Trigger,{"data-slot":"dialog-trigger",...e})}function ir({...e}){return x(ht.Portal,{"data-slot":"dialog-portal",...e})}function sr({className:e,...t}){return x(ht.Backdrop,{"data-slot":"dialog-overlay",className:qn("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 or({className:e,children:t,showCloseButton:n=!0,...a}){return y(ir,{children:[x(sr,{}),y(ht.Popup,{"data-slot":"dialog-content",className:qn("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(ka,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function dr({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:qn("flex flex-col gap-2",e),...t})}function cr({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:qn("-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(ka,{variant:"outline"}),children:"Close"})]})}function lr({className:e,...t}){return x(ht.Title,{"data-slot":"dialog-title",className:qn("font-heading text-base leading-none font-medium",e),...t})}function ur({className:e,...t}){return x(ht.Description,{"data-slot":"dialog-description",className:qn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function mr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ft.Root,{"data-slot":"scroll-area",className:qn("relative",e),...r,children:[x(ft.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:qn("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(hr,{}),x(ft.Corner,{})]})}function hr({className:e,orientation:t="vertical",...n}){return x(ft.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:qn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(ft.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function fr({className:e,orientation:t="horizontal",...n}){return x(pt,{"data-slot":"separator",orientation:t,className:qn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function pr({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(ar,{open:s,onOpenChange:r,children:y(or,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(dr,{className:"px-5 py-4",children:[x(lr,{children:"Settings"}),x(ur,{children:"Manage the active server connection, accounts, and project details."})]}),x(fr,{}),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(gr,{active:"server"===t,icon:x(Be,{}),label:"Server",onClick:()=>i("server")}),x(gr,{active:"accounts"===t,icon:x(et,{}),label:"Accounts",onClick:()=>i("accounts")}),x(gr,{active:"info"===t,icon:x(we,{}),label:"Info",onClick:()=>i("info")})]}),x(mr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(vr,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(Qa,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(wr,{}):null]})})]})]})})}function gr({active:e,icon:t,label:n,onClick:a}){return y(ka,{"aria-pressed":e,className:qn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function vr({clearSession:e,refreshSession:t,session:n}){const[a,r]=O(!1),[i,s]=O(null);return y("div",{className:"grid gap-4",children:[y("div",{className:"rounded-md border bg-muted/30 p-3",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(Be,{}),"API server"]}),x("div",{className:"mt-2 break-all text-sm text-muted-foreground",children:n.serverUrl})]}),y("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3",children:[y("div",{children:[x("div",{className:"text-sm font-medium",children:"Session status"}),x("div",{className:"text-sm text-muted-foreground",children:"Bearer token stored in this browser."})]}),null===i?null:x(Ka,{status:i?"ONLINE":"OFFLINE"})]}),x(fr,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(ka,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),U.success("Server session is healthy.")}catch(e){s(!1),U.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(Ue,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(ka,{variant:"destructive",onClick:e,children:[x(Ae,{}),"Clear Session"]})]})]})}function wr(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(we,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(re,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Me,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function xr(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 yr="xedoc.web.terminal-height",br=null;function Nr({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=O(null),[o,d]=O(null),[c,l]=O(kr),[u,m]=O(!1),[h,f]=O(null),[p,g]=O([]),v=q(c),w=function(){const[e,t]=O(()=>Mr());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(()=>p.find(e=>e.id===i)??null,[i,p]),N=P((e,t)=>xr(a,e,t),[a]),I=P(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),k=P(async()=>{const e=await N("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),I(e.terminals),s(e.terminal.id)},[I,n,N,h]);L(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),N("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),I(n.terminals),!n.terminals.length)){const t=await N("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),I(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(Er(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&xr(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[I,n,N,a]),L(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&I(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[I,n,h,a]),L(()=>{v.current=c;const e=window.setTimeout(()=>{Cr(c)},150);return()=>window.clearTimeout(e)},[c]),L(()=>{const e=()=>{l(e=>{const t=Ar(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const C=P(async e=>{try{I((await N("terminal:close",{terminalId:e})).terminals)}catch(t){U.error(Er(t))}},[I,N]),A=P(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),M=P(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=Ar(n+t-e.clientY);v.current=a,l(a)},r=()=>{Cr(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:qn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:M,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:qn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(Je,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:qn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{C(e.id)},children:x(tt,{className:"size-3"})})]},e.id))}),x(ka,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{k().catch(e=>U.error(Er(e)))},children:u?x(Ie,{className:"animate-spin"}):x(_e,{})}),t?x(ka,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(tt,{})}):null]}),x("div",{className:"min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):b?x(Ir,{compactLayout:w,resizeSignal:c,socket:a,terminal:b,onTerminalUpdated:A},b.id):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function Ir({compactLayout:e,onTerminalUpdated:t,resizeSignal:n,socket:a,terminal:r}){const i=q(null),s=q(null),o=q(null),d=q(null),c=P(()=>{null===o.current&&(o.current=window.requestAnimationFrame(()=>{o.current=null,s.current?.fit()}))},[]);return L(()=>(c(),()=>{null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null)}),[c,n]),L(()=>{const n=i.current;if(!a||!n)return;let l=!1,u=!1;const m=[],h=e=>{a.emit("terminal:input",{data:e,terminalId:r.id})},f=e=>{u&&e.terminalId===r.id&&d.current?.write(e.data)};return a.on("terminal:output",f),async function(){return br??=import("ghostty-web").then(async e=>(await e.init(),e)),br}().then(async({FitAddon:n,Terminal:o})=>{if(l||!i.current)return;const f=new o({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:e?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),p=new n;s.current=p,d.current=f,f.loadAddon(p),f.open(i.current),p.fit(),p.observeResize(),f.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(h("\r"),!0)),m.push(p),m.push(f.onData(e=>{h(e)})),m.push(f.onResize(e=>{a.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:r.id})})),m.push(f.onTitleChange(e=>{a.emit("terminal:title",{terminalId:r.id,title:e})}));const g=await xr(a,"terminal:attach",{terminalId:r.id});l||(t(g.terminal),g.replay&&f.write(g.replay),u=!0,requestAnimationFrame(()=>{p.fit(),f.focus()}),c())}).catch(e=>{l||U.error(Er(e))}),()=>{l=!0,null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null),a.off("terminal:output",f),xr(a,"terminal:detach",{terminalId:r.id}).catch(()=>{});for(const e of m)e.dispose();d.current?.dispose(),d.current=null,s.current=null}},[e,t,c,a,r.id]),x("div",{className:"relative h-full min-h-0 overflow-hidden p-1 outline-none sm:p-2 [&_canvas]:block",ref:i,style:{caretColor:"transparent"}})}function kr(){return"undefined"==typeof window?360:Ar(Number.parseInt(window.localStorage.getItem(yr)??"",10)||(Mr()?300:360))}function Cr(e){"undefined"!=typeof window&&window.localStorage.setItem(yr,String(e))}function Ar(e){const t="undefined"!=typeof window&&Mr()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(Mr()?96:140),760));return Math.max(t,Math.min(n,e))}function Mr(){return"undefined"!=typeof window&&window.innerWidth<640}function Er(e){return e instanceof Error?e.message:"Terminal request failed."}function Tr({...e}){return x(vt.Root,{"data-slot":"dropdown-menu",...e})}function Sr({...e}){return x(vt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function Pr({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(vt.Portal,{children:x(vt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(vt.Popup,{"data-slot":"dropdown-menu-content",className:qn("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(vt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:qn("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 Lr({...e}){return x(vt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function Rr({className:e,inset:t,children:n,...a}){return y(vt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:qn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(X,{className:"ml-auto"})]})}function qr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(Pr,{"data-slot":"dropdown-menu-sub-content",className:qn("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 Or({...e}){return x(vt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function $r({className:e,children:t,inset:n,...a}){return y(vt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:qn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(vt.RadioItemIndicator,{children:x(V,{})})}),t]})}function _r({className:e,...t}){return x(vt.Separator,{"data-slot":"dropdown-menu-separator",className:qn("-mx-1 my-1 h-px bg-border",e),...t})}function Ur(){const{setTheme:e,theme:t}=E(),n=t??"system";return y(Tr,{children:[y(Sr,{render:x(ka,{size:"icon",variant:"outline"}),children:[x(Qe,{className:"size-4 dark:hidden"}),x(Se,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(Pr,{align:"end",className:"w-40",children:[y(Dr,{onClick:()=>e("light"),children:[x(Qe,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(Dr,{onClick:()=>e("dark"),children:[x(Se,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(Dr,{onClick:()=>e("system"),children:[x(be,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}yt.registerLanguage("bash",bt),yt.registerLanguage("css",Nt),yt.registerLanguage("go",It),yt.registerLanguage("html",Dt),yt.registerLanguage("javascript",Ct),yt.registerLanguage("json",kt),yt.registerLanguage("markdown",At),yt.registerLanguage("python",Mt),yt.registerLanguage("rust",Et),yt.registerLanguage("sh",Tt),yt.registerLanguage("sql",St),yt.registerLanguage("tsx",Pt),yt.registerLanguage("typescript",Pt),yt.registerLanguage("xml",Dt),yt.registerLanguage("yaml",Lt);var zr=S(null);function jr({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=R(()=>new Set(t??[]),[t]),h=R(()=>function(e){const t=Hi([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=ss(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}(e)||(!!function(e){return"THINKING"===e.kind&&"thinking..."===e.content.trim().toLowerCase()}(e)||"CHAT"===e.kind&&"ASSISTANT"===e.role&&(0===e.content.trim().length&&"PENDING"!==e.status&&"STREAMING"!==e.status))}(e)).sort((e,t)=>e.sequence-t.sequence),n=new Map;for(const a of t){const e=a.turnId?`turn:${a.turnId}`:`message:${a.id}`,t=n.get(e);t?t.push(a):n.set(e,[a])}return Array.from(n.values()).flatMap(e=>e.some(e=>"STREAMING"===e.status||"PENDING"===e.status)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}(n).filter(e=>!m.has(e.id)),[m,n]),f=R(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=Qi(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=R(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&li(n))return n.id}return null}(h),[h]),[g,v]=O(null);return y(zr.Provider,{value:v,children:[f.map(t=>x(Br,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:p,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,planActionDisabled:c,planActionPending:l,session:u},t.id)),x(Zr,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function Fr({chatId:e,messages:t,session:n}){const a=R(()=>Yi(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(Wr,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function Br({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"user"===t.type?x(Kr,{message:t.message}):x(Gr,{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 Gr({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){const m=R(()=>function(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(ts(r.message)){const e=n.at(-1);if(!e||ns(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&&as(e)!==as(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)es(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:Ji(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Xi(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(Ka,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(Hr,{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 Hr({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(mi,{messages:a.messages}):"previousActions"===a.type?x(hi,{messages:a.messages}):"fileChanges"===a.type?x(pi,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Wr,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:r,message:a.message,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function Kr({message:e}){const t=function(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}(e);return x("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:y("div",{className:"min-w-0 max-w-[84%] overflow-hidden rounded-xl bg-foreground px-3 py-2 text-sm leading-6 text-background",children:[y("div",{className:"mb-1 flex items-center gap-2",children:[x(et,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Qr,{text:e.content}),t.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:t.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border border-background/20 bg-background/10 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-6 rounded object-cover",src:e.url}):x(oe,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:"file"===e.kind?e.path:e.name})]},e.id))}):null]})})}function Wr({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(ii,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(ai,{}):null;case"THINKING":return x(ri,{message:i});case"PLAN":return x(si,{metadata:ss(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(ui,{metadata:ss(i.metadata)});case"FILE_CHANGE":return x(pi,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Di,{chatId:e,compact:t,message:i,metadata:ss(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Li,{chatId:e,compact:t,message:i,metadata:ss(i.metadata),session:m});case"ERROR":return x(ji,{metadata:ss(i.metadata),text:i.content});default:return x(Fi,{text:i.content})}}function Vr({text:e}){const t=D(zr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(wt,{remarkPlugins:[xt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:qn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:qn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:qn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:qn("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:qn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:qn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:qn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:qn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:qn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:qn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:qn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:qn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:qn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:qn("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:qn("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:qn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:qn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:qn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:qn("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:qn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:qn("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:qn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:Jr(e)})})}function Qr({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:Xr(e).map((e,t)=>"image"===e.type?x("img",{alt:"",className:"max-h-[28rem] max-w-full rounded-md border border-background/20 object-contain",loading:"lazy",src:e.src},`${e.src}-${t}`):e.text.trim()?x("div",{className:"whitespace-pre-wrap break-words",children:e.text},`${e.text.slice(0,32)}-${t}`):null)})}function Jr(e){return Xr(e).map(e=>"image"===e.type?`\n\n![](${encodeURI(e.src).replace(/\)/g,"%29")})\n\n`:e.text).join("")}function Xr(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=Yr(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"}),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function Yr(e){const t=e.trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function Zr({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)),ea(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(ar,{open:!!a,onOpenChange:e=>!e&&t(),children:y(or,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(dr,{className:"gap-1 px-4 pb-2 pt-4",children:[y(lr,{className:"flex min-w-0 items-center gap-2",children:[x(oe,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(ur,{className:"truncate",children:ti(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ie,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(ei,{file:r.data}):null})]})})}function ei({file:e}){const t=q({}),n=R(()=>(e.content??"").split(/\r?\n/),[e.content]);return L(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(mr,{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:qn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:(i=n||" ",s=e.language,s&&yt.getLanguage(s)?yt.highlight(i,{language:s}).value:yt.highlightAuto(i).value)}})]},r);var i,s})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function ti(e){return e?[ni(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function ni(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function ai(){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 ri({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function ii({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(Vr,{text:o}):null,s?x(oi,{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(Ne,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(Vr,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(Fi,{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(Ha,{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(di,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function oi({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ne,{className:"size-4"}),"Proposed plan"]}),x(Vr,{text:i}),s?x(di,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function di({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=O(""),[d,c]=O(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(ka,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ie,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(ar,{open:d,onOpenChange:c,children:[y(rr,{render:x(ka,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Oe,{}),"Tell Codex what to change"]}),y(or,{children:[y(dr,{children:[x(lr,{children:"Tell Codex What To Change"}),x(ur,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(Ba,{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(ka,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(ka,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ie,{className:"animate-spin"}):x(Oe,{}),"Send changes"]})]})]})]})]})]})}var ci=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function li(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=ci.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(ci,"").trim()}:"PLAN"!==e.kind||"result"!==ss(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function ui({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(Ha,{variant:Pi(e),children:Si(e)}),"number"==typeof e?.exitCode?x(Ha,{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 mi({messages:e}){const[t,n]=O(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,Gi),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Xi(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(Ha,{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(fi,{message:e},e.id)),i>0?y(ka,{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 hi({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(Ha,{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(fi,{message:e},e.id))})]})}function fi({message:e}){const t=ss(e.metadata),n=ss(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(ss(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===ss(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:[rs(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(Ha,{variant:"secondary",children:e.status.toLowerCase()})]})}function pi({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=R(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=ss(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of gi(e)){const e=n.get(t.path);e?n.set(t.path,{action:Ei(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:Ti(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:Ti(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(zr),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(de,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${xi(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(Ni,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(ka,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:bi(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ze,{}),"Undo"]}),y(ka,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:yi(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ie,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(ar,{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(Ni,{additions:e.additions,deletions:e.deletions}),y(rr,{render:x(ka,{size:"icon-sm",variant:"ghost"}),children:[x(Q,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(or,{className:"max-w-5xl",children:[y(dr,{children:[x(lr,{children:e.path}),y(ur,{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(Ha,{variant:"secondary",children:e},e))}):null]})}function gi(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=wi(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=wi(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:vi(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=Ii(n.path,n.filePath,n.file,n.name);return a?(e.push({action:Ci(Ii(n.action,n.kind,n.type)??"Edited"),additions:ki(n.additions),deletions:ki(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>Ai(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=>Ai(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 vi(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 wi(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function xi(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function yi(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 bi(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 Ni({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 Ii(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function ki(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 Ci(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function Ai(e,t){return Mi(e)===Mi(t)}function Mi(e){return wi(e).replace(/\\/g,"/").replace(/^\.\//,"")}function Ei(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 Ti(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function Si(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function Pi(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Di({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=Bi(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(Ri,{icon:x(Ce,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:qi(a)}):y("div",{className:qn("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:qn("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:qn("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:qn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(Ha,{variant:"secondary",children:[x(K,{className:"size-3"}),"resolved"]}):y(w,{children:[y(ka,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(ka,{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(ka,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Li({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=O({}),[o,d]=O(0),c=Bi(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&zi(h,i[h.id]).length>0,p=l.every(e=>zi(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(Ri,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Oi(a)});return y("div",{className:qn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:qn("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(ka,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(F,{})}),y(Ha,{variant:"secondary",children:[m+1," / ",l.length]}),x(ka,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(B,{})}),u?x(Ha,{variant:"secondary",children:"resolved"}):null]})]}),h?x(_i,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??$i,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:qn("flex justify-end",t?"mt-2":"mt-4"),children:y(ka,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Ui(l,i)}):U.error("Answer every question before submitting.")},children:[c.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function Ri({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(Ha,{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 qi(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 Oi(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 $i={other:"",values:[]};function _i({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:qn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:qn("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(ka,{"aria-pressed":r,className:qn("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:qn("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:qn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(Ca,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(Ba,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(Ba,{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 Ui(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:zi(e,t[e.id])}]))}}function zi(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function ji({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(z,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function Fi({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function Bi(e,t,n){const a=A();return I({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return ea(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>aa(e,t))}})}var Gi=5;function Hi(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=Ki(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Wi(n[t],r):(a.set(e,n.length),n.push(r))}return n}function Ki(e){return e.requestId?`${e.runId??e.chatId}:${e.kind}:request:${e.requestId}`:e.itemId?`${e.runId??e.chatId}:${e.kind}:item:${e.itemId}`:null}function Wi(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Vi(t.status)>Vi(e.status)?{...e,status:t.status}:e:Vi(t.status)>Vi(e.status)||t.sequence>=e.sequence?t:e}function Vi(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Qi(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Ji(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 Xi(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 Yi(e){return{pendingRequest:Hi(e).sort((e,t)=>t.sequence-e.sequence).find(Zi)}}function Zi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=ss(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function es(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Zi(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 ts(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function ns(e,t){return as(e)===as(t)}function as(e){return e.runId??e.turnId??e.chatId}function rs(e){return"COMMAND_EXECUTION"===e.kind?x(Je,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Ce,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(is,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function is(){return x(Ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function ss(e){return e&&"object"==typeof e?e:void 0}function os({...e}){return x(Rt.Root,{"data-slot":"popover",...e})}function ds({...e}){return x(Rt.Trigger,{"data-slot":"popover-trigger",...e})}function cs({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Rt.Portal,{children:x(Rt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Rt.Popup,{"data-slot":"popover-content",className:qn("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 ls({className:e,...t}){return x("div",{"data-slot":"popover-header",className:qn("flex flex-col gap-0.5 text-sm",e),...t})}function us({className:e,...t}){return x(Rt.Title,{"data-slot":"popover-title",className:qn("font-medium",e),...t})}function ms({className:e,...t}){return x(Rt.Description,{"data-slot":"popover-description",className:qn("text-muted-foreground",e),...t})}function hs({...e}){return x(ht.Root,{"data-slot":"sheet",...e})}function fs({...e}){return x(ht.Portal,{"data-slot":"sheet-portal",...e})}function ps({className:e,...t}){return x(ht.Backdrop,{"data-slot":"sheet-overlay",className:qn("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 gs({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(fs,{children:[x(ps,{}),y(ht.Popup,{"data-slot":"sheet-content","data-side":n,className:qn("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(ka,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function vs({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:qn("flex flex-col gap-0.5 p-4",e),...t})}function ws({className:e,...t}){return x(ht.Title,{"data-slot":"sheet-title",className:qn("font-heading text-base font-medium text-foreground",e),...t})}function xs({className:e,...t}){return x(ht.Description,{"data-slot":"sheet-description",className:qn("text-sm text-muted-foreground",e),...t})}var ys=T.createContext(null);function bs(){const e=T.useContext(ys);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function Ns({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=T.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return T.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=T.useState(!1),[l,u]=T.useState(e),m=t??l,h=T.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=T.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);T.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=T.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(ys.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:qn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function Is({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}=bs();return"none"===n?x("div",{"data-slot":"sidebar",className:qn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(hs,{open:c,onOpenChange:l,...s,children:y(gs,{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(vs,{className:"sr-only",children:[x(ws,{children:"Sidebar"}),x(xs,{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:qn("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:qn("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 ks({className:e,onClick:t,...n}){const{toggleSidebar:a}=bs();return y(ka,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:qn(e),onClick:e=>{t?.(e),a()},...n,children:[x(Le,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function Cs({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:qn("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 As({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:qn("flex flex-col gap-2 p-2",e),...t})}function Ms({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:qn("flex flex-col gap-2 p-2",e),...t})}function Es({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:qn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function Ts({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:qn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function Ss({className:e,render:t,...n}){return mt({defaultTagName:"div",props:ut({className:qn("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 Ps({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:qn("w-full text-sm",e),...t})}function Ds({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:qn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Ls({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:qn("group/menu-item relative",e),...t})}var Rs=dt("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function qs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=bs(),c=mt({defaultTagName:"button",props:ut({className:qn(Rs({variant:n,size:a}),i)},s),render:r?x(_n,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y($n,{children:[c,x(Un,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function Os({className:e,render:t,showOnHover:n=!1,...a}){return mt({defaultTagName:"button",props:ut({className:qn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0",e)},a),render:t,state:{slot:"sidebar-menu-action",sidebar:"menu-action"}})}function $s({className:e,size:t="default",...n}){return x(qt.Root,{"data-slot":"switch","data-size":t,className:qn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(qt.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function _s({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=A(),[o,d]=O(new Set),[c,l]=O(e??""),[u,m]=O("directory"),[h,f]=O(e??""),[p,g]=O(""),[v,w]=O(!0),[b,N]=O(!1),[k,M]=O(""),[E,T]=O(""),S=C({enabled:r,queryKey:Gs(i,void 0),queryFn:()=>Qn(i,void 0)}),P=S.data,D=P?.root??P?.path??"",R=c||P?.path||"",q=I({mutationFn:()=>{const e=k||R||P?.path,t=E.trim();if(!e)throw new Error("Select a folder first.");if(!t)throw new Error("Enter a folder name.");return async function(e,t){return ea(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),M(""),T(""),U.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),_(e.path)}});function $(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of Hs(e,D))n.add(a);return n})}function _(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&$(e)}return L(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),M(""),T(""))},[e,r]),L(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of Hs(t,P.root))n.add(a);return n})},[e,P]),x(ar,{open:r,onOpenChange:n,children:y(or,{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(dr,{className:"gap-1 px-4 pb-2 pt-3",children:[x(lr,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(ur,{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(Bs,{label:"Home",onClick:function(){P?.path&&_(P.path)},children:x(ge,{})}),x(Bs,{disabled:!R||q.isPending,label:"New folder",onClick:function(){const e=R||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),M(e),T(""),d(t=>{const n=new Set(t);if(D)for(const a of Hs(e,D))n.add(a);return n.add(e),n}))},children:x(me,{})}),x(Bs,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Ue,{className:qn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[y("div",{className:"relative hidden min-w-0 sm:block",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Ca,{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(ka,{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(Ca,{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(Bs,{label:"Open path",onClick:z,children:x(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Ca,{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(mr,{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(Us,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:E,createFolderParentPath:k,createFolderPending:q.isPending,selectedPath:R,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),M(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>q.mutate(),onOpen:_,onSelect:$,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(cr,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":R||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(ka,{disabled:!R||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!R||"file"===t&&"file"!==u||(a(R),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(ka,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function Us({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=Vs(f)===Vs(r.path),N=v&&Vs(t)===Vs(r.path),I=C({enabled:w&&!a,queryKey:Gs(g,r.path),queryFn:()=>Qn(g,r.path)}),k=a??I.data,A=R(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),M=A.filter(e=>"directory"===e.type),E=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(js,{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(zs,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,M.map(a=>x(Us,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),E.map(e=>x(Fs,{entry:e,level:o+1,selected:"file"===p&&Vs(f)===Vs(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 zs({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(me,{className:"size-4 shrink-0 text-muted-foreground"}),x(Ca,{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(Bs,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(Bs,{disabled:i,label:"Cancel new folder",onClick:n,children:x(tt,{})})]})}function js({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:qn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(J,{className:qn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?ue:le,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Fs({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:qn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function Bs({children:e,disabled:t,label:n,onClick:a}){return y(ka,{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 Gs(e,t){return["workspace-directory",e.serverUrl,t]}function Hs(e,t){const n=Ws(t),a=Ws(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=Ks(s,o),r.push(s);return r}function Ks(e,t){const n=e.includes("\\")?"\\":"/";return`${Ws(e)}${n}${t}`}function Ws(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function Vs(e){return Ws(e).toLocaleLowerCase()}function Qs(){const{clearSession:e,loading:t,refreshSession:n,session:a}=ha(),{chatId:s}=p(),o=function(e){const[t,n]=O(!1),[a,r]=O(0),[i,s]=O(null);return L(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=gt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return a.on("connect",()=>{n||t.onOpen?.()}),a.on("disconnect",()=>{n||t.onClose?.()}),a.on("connect_error",e=>{n||t.onError?.(e)}),a.on("terminal:count",e=>{n||t.onCount?.(e)}),a.on("terminal:project",e=>{n||t.onProject?.(e)}),a.on("terminal:output",e=>{n||t.onOutput?.(e)}),a.on("terminal:exit",e=>{n||t.onExit?.(e)}),{disconnect:()=>{n=!0,a.disconnect()},socket:a}}(e,{onClose:()=>n(!1),onCount:e=>r(Math.max(0,e.count)),onError:()=>n(!1),onOpen:()=>n(!0)});return s(t.socket),()=>{t.disconnect(),n(!1),s(null)}},[e?.serverUrl,e?.token]),{connected:t,count:a,socket:i}}(a),[d,c]=O(""),[l,u]=O(null),[m,f]=O(0),[g,v]=O(!1),[b,N]=O("server"),[I,A]=O(!1),[M,E]=O(null),T=h(),S=P(e=>{f(e?.focusCreate?e=>e+1:0),N("accounts"),v(!0)},[]),D=P(e=>{"accounts"===e&&f(0),N(e)},[]),q=P((e="server")=>{N(e),v(!0)},[]),$=C({enabled:!!a,queryKey:["accounts"],queryFn:()=>async function(e){return ea(e.serverUrl,"/api/accounts",{token:e.token})}(a),refetchInterval:e=>!!e.state.data?.some(e=>"AUTHENTICATING"===e.status)&&1500}),_=C({enabled:!!a,queryKey:["chats"],queryFn:()=>async function(e){return ea(e.serverUrl,"/api/chats",{token:e.token})}(a)}),U=R(()=>$.data??[],[$.data]),z=R(()=>_.data??[],[_.data]),j=R(()=>s?z.find(e=>e.id===s)?.title??null:null,[s,z]);L(()=>{s&&u(s)},[s]);const F=R(()=>{if(s){const e=z.find(e=>e.id===s);if(e)return e}if(l){const e=z.find(e=>e.id===l);if(e)return e}return z[0]??null},[s,z,l]),B=R(()=>U.filter(e=>"CONNECTED"===e.status),[U]);jn(j);const G=k({queries:B.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>Vn(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),H=R(()=>Object.fromEntries(B.map((e,t)=>{const n=Ao(G[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[G,B]),K=R(()=>Object.fromEntries(B.map(e=>{const t=H[e.id];return t?[e.id,Mo(t)]:null}).filter(e=>!!e)),[H,B]);if(L(()=>{d.trim()||A(!1)},[d]),t)return x(oo,{});if(!a)return x(r,{replace:!0,to:"/connect"});const W={accounts:U,accountRateLimitSnapshots:H,accountUsageSummaries:K,activeProjectPath:d,chats:z,connectedAccounts:B,lastOpenedChat:F,openAccountManagement:S,openWorkspacePicker:E,session:a,setActiveProjectPath:c,setTerminalOpen:A,terminalOpen:I,terminalSocket:o.socket,terminalSocketConnected:o.connected};return y(w,{children:[y(Ns,{children:[y(Is,{className:"border-r",collapsible:"icon",children:[x(As,{children:y(ka,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Ve,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(Es,{children:y(Ts,{children:[x(Ss,{children:"Chats"}),x(Ps,{children:x(Ys,{chats:z,session:a})})]})}),x(Ms,{children:y(ka,{className:"justify-start",variant:"ghost",onClick:()=>q(),children:[x(Ge,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(Cs,{className:"h-svh min-w-0 overflow-hidden",children:[y("header",{className:"flex h-14 shrink-0 items-center justify-between gap-3 border-b px-3",children:[x("div",{className:"flex min-w-0 items-center gap-2",children:x(ks,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Js,{active:I,disabled:!d.trim(),onToggle:()=>A(!I)}),x(Xs,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(Ur,{})]})]}),$.error||_.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:$.error?.message??_.error?.message??"Unable to load workspace data."}):null,x(i,{context:W})]})]}),x(pr,{accounts:U,activeTab:b,clearSession:e,createFocusKey:m,open:g,refreshSession:n,session:a,onTabChange:D,onOpenChange:v}),M?x(_s,{initialPath:M.initialPath,mode:M.mode,open:!!M,session:a,onOpenChange:e=>{e||E(null)},onSelect:M.onSelect}):null]})}function Js({active:e,disabled:t,onToggle:n}){return x(ka,{"aria-label":"Terminal","aria-pressed":e,disabled:t,size:"icon",title:t?"Choose a working directory":"Terminal",type:"button",variant:e?"secondary":"ghost",onClick:n,children:x(Je,{})})}function Xs({onAddAccount:e,onNewChat:t}){return y(Tr,{children:[y(Sr,{render:x(ka,{size:"icon",variant:"outline"}),children:[x(_e,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(Pr,{align:"end",className:"w-44",children:[y(Dr,{onClick:t,children:[x(Ve,{}),"New chat"]}),y(Dr,{onClick:e,children:[x(et,{}),"Add account"]})]})]})}function Ys({chats:e,session:t}){const n=h(),{chatId:a}=p(),r=A(),[i,s]=O(null),[o,d]=O(""),[c,l]=O(null),[u,m]=O(""),[f,g]=O(null),v=R(()=>e.map(e=>({chat:e,dateLabel:Oo(e.lastActivityAt),folderName:$o(e.workingDirectory)})),[e]),b=R(()=>{const e=new Map;for(const t of v)e.set(t.folderName,(e.get(t.folderName)??0)+1);return Array.from(e,([e,t])=>({count:t,name:e})).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=R(()=>{const e=u.trim().toLocaleLowerCase();return v.filter(({chat:t,folderName:n})=>(!f||n===f)&&(!e||[t.title,n,t.workingDirectory??""].join(" ").toLocaleLowerCase().includes(e)))},[v,f,u]),k=!!u.trim()||!!f;L(()=>{f&&!b.some(e=>e.name===f)&&g(null)},[f,b]);const C=I({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return Xn(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>U.error(Jo(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),M=I({mutationFn:e=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>U.error(Jo(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(w,{children:[y("div",{className:"mb-2 flex items-center gap-1 px-1 group-data-[collapsible=icon]:hidden",children:[y("div",{className:"relative min-w-0 flex-1",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(Ca,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(os,{children:[y(ds,{render:x(ka,{"aria-label":"Filter chats by folder",className:qn("relative",f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:[x(ce,{className:"size-4"}),f?x("span",{"aria-hidden":"true",className:"absolute right-1.5 top-1.5 size-2 rounded-full bg-red-500 ring-2 ring-background"}):null]}),y(cs,{align:"end",className:"w-64",side:"bottom",children:[y(ls,{children:[x(us,{children:"Folder"}),x(ms,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:qn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",!f&&"bg-muted"),type:"button",onClick:()=>g(null),children:[x("span",{className:"min-w-0 flex-1 truncate",children:"All folders"}),x("span",{className:"text-xs text-muted-foreground",children:e.length}),f?null:x(K,{className:"size-4"})]}),b.map(e=>y("button",{className:qn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",f===e.name&&"bg-muted"),type:"button",onClick:()=>g(e.name),children:[x(le,{className:"size-4 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"text-xs text-muted-foreground",children:e.count}),f===e.name?x(K,{className:"size-4"}):null]},e.name))]})]})]})]}),x(Ds,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>y(Ls,{children:[y(qs,{className:"h-14 min-w-0 items-start py-1.5 pr-2! group-has-data-[sidebar=menu-action]/menu-item:pr-2! group-data-[collapsible=icon]:items-center! group-data-[collapsible=icon]:justify-center!",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Te,{className:"mt-0.5 group-data-[collapsible=icon]:mt-0!"}),y("span",{className:"min-w-0 flex-1 group-data-[collapsible=icon]:hidden!",children:[x("span",{className:"block truncate leading-5",children:e.title}),y("span",{className:"flex min-w-0 items-center gap-2 text-[11px] leading-4 font-normal text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1",children:[x(Z,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:t})]}),y("span",{className:"flex min-w-0 items-center gap-1",children:[x(le,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(Tr,{children:[y(Sr,{render:x(Os,{"aria-label":"Chat actions",className:"right-2 top-3 size-7 pointer-events-none opacity-0 group-hover/menu-item:pointer-events-auto group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:opacity-100 [&>svg]:size-5",showOnHover:!0}),children:[x(Pe,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(Pr,{align:"end",className:"w-40",children:[y(Dr,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(Dr,{onClick:()=>l(e),children:[x(j,{}),"Archive"]})]})]})]},e.id)):y("div",{className:"px-2 py-3 text-sm text-muted-foreground group-data-[collapsible=icon]:hidden",children:[e.length?"No matching chats.":"No chats yet.",k?x(ka,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(ar,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(or,{children:[y(dr,{children:[x(lr,{children:"Rename chat"}),x(ur,{children:"Choose a short title for the sidebar."})]}),x(Ca,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(cr,{children:x(ka,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(ar,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(or,{children:[y(dr,{children:[x(lr,{children:"Archive chat?"}),y(ur,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(cr,{children:[x(ka,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(ka,{disabled:M.isPending||!c,variant:"destructive",onClick:()=>{c&&M.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Zs(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 eo(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await no(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function to(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 no(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 ao(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:_o(t),path:t}}function ro({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(w,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(se,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(ka,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(tt,{className:"size-3"})})]},e.id))}):null]})}function io(){const{accountRateLimitSnapshots:e,accountUsageSummaries:t,connectedAccounts:n,lastOpenedChat:a,openAccountManagement:r,openWorkspacePicker:i,session:s,setActiveProjectPath:o,setTerminalOpen:d,terminalOpen:c,terminalSocket:l,terminalSocketConnected:u}=ko(),[m,f]=O(""),[p,g]=O([]),[v,w]=O("default"),[b,N]=O(null),[k,M]=O(a?.autoRotateAccount??!1),[E,T]=O(a?.accountId??null),[S,D]=O("default"),[$,_]=O(null),[z,j]=O(null),[F,B]=O(null),[G,H]=O(a?.workingDirectory?.trim()??""),K=A(),W=h(),V=q(null),Q=q(a?.id??null);L(()=>(o(G.trim()),()=>o("")),[o,G]),L(()=>{if(!a||Q.current===a.id)return;Q.current=a.id;const e=a.workingDirectory?.trim()??"";e&&H(t=>t.trim()?t:e);const t=a.accountId;t&&T(e=>e??t)},[a]);const J=R(()=>To(n,e),[e,n]),X=n.find(e=>e.id===E),Y=(k&&X&&So(e[X.id])<0?void 0:X)??J??n[0];L(()=>{if(!Y?.id)return j(null),N(null),D("default"),_(null),void B(null);j(Y.id),N(Y.defaultModel??null),D(Y.defaultPermissionMode??"default"),_(Y.defaultReasoningEffort??null),B(Y.defaultServiceTier??null)},[Y?.defaultModel,Y?.defaultPermissionMode,Y?.defaultReasoningEffort,Y?.defaultServiceTier,Y?.id]);const Z=C({enabled:!!Y?.id,queryKey:["models",Y?.id],queryFn:()=>Wn(s,Y.id),staleTime:3e5}),ee=C({enabled:!!Y?.id,queryKey:["rate-limits",Y?.id],queryFn:()=>Vn(s,Y.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),te=Z.data?.data??[],ne=z===Y?.id,ae=ne?b:null,re=ne?$:null,ie=ne?F:null,se=Co(te,ae),oe=se?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],de=re??se?.defaultReasoningEffort??null,ce=se?.additionalSpeedTiers??[],le=Ao(ee.data),me=I({mutationFn:({accountId:e,settings:t})=>Hn(s,e,t),onError:e=>U.error(Jo(e)),onSuccess:e=>{K.setQueryData(["accounts"],t=>Vo(t,e))}}),he=I({mutationFn:async()=>{if(!Y)throw new Error("Connect an account before starting a chat.");if(!G.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return ea(e.serverUrl,"/api/chats",{body:t,token:e.token})}(s,{accountId:Y.id,autoRotateAccount:k,collaborationMode:v,model:ae,permissionMode:S,reasoningEffort:re,serviceTier:ie,workingDirectory:G.trim()});return{chat:e,response:await Zn(s,e.id,{attachments:Zs(p),content:m.trim()})}},onError:e=>U.error(Jo(e)),onSuccess:({chat:e,response:t})=>{f(""),g([]),M(!1),w("default"),D(Y?.defaultPermissionMode??"default"),H(""),K.setQueryData(["messages",e.id],Ko(void 0,Wo(t))),K.invalidateQueries({queryKey:["chats"]}),W(`/chat/${e.id}`)}}),fe=P(e=>{e?.length&&eo(e).then(e=>{g(t=>[...t,...e])}).catch(e=>U.error(Jo(e)))},[]),pe=P(()=>{i({initialPath:G,mode:"file",onSelect:e=>{g(t=>[...t,ao(e)])}})},[i,G]),ge=G.trim(),ve=c&&!!ge;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overflow-x-hidden",children:y("div",{className:qn("mx-auto flex w-full flex-1 flex-col gap-6 px-4",ve?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-3xl justify-center py-8"),children:[y("div",{className:"text-center",children:[x("h1",{className:"text-2xl font-semibold tracking-normal",children:"What should Codex work on?"}),x("p",{className:"mt-2 text-sm text-muted-foreground",children:"Select an account and workspace, then send the first message."})]}),n.length?null:y("div",{className:"rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(ka,{className:"mt-3",size:"sm",onClick:r,children:[x(et,{}),"Manage Accounts"]})]}),ve?x(Nr,{onClosePanel:()=>d(!1),projectPath:ge,socket:l,socketConnected:u}):y("div",{className:"grid gap-3 rounded-xl border bg-background p-3 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-lg border bg-muted/25 px-2 py-1.5",children:[x(Ca,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-xs shadow-none focus-visible:ring-0",placeholder:"Working directory",spellCheck:!1,value:G,onChange:e=>H(e.target.value)}),y(ka,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>i({initialPath:G,onSelect:H}),children:[x(ue,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),x(Ba,{className:"min-h-32 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:"Message Codex",value:m,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!he.isPending&&Qo(m,G,Y,p)&&he.mutate())},onPaste:e=>{const t=to(e.clipboardData);t.length&&fe(t)}}),x(ro,{attachments:p,imageInputRef:V,onAttachImages:fe,onRemove:e=>g(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(wo,{attachmentDisabled:he.isPending,disabled:!Y,mode:v,onAttachFile:pe,onAttachImage:()=>V.current?.click(),onSelectMode:w}),x(co,{account:Y,autoRotate:k,autoRotateDisabled:he.isPending,connectedAccounts:n,disabled:!n.length,selectedAccountId:Y?.id??"",usageSummaries:t,onAutoRotateChange:M,onSelect:e=>{T(e)}}),x(bo,{activeReasoningEffort:de,disabled:!Y,modelOptions:te,modelValue:ae??"",pending:Z.isFetching,reasoningOptions:oe,reasoningValue:re??"",selectedModel:se,serviceTierOptions:ce,serviceTierValue:ie??"",onSelectModel:e=>{const t=Y?.id??null;j(t),N(e||null),_(null),B(null),t&&me.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=Y?.id??null,n=e||null;j(t),_(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:n,defaultServiceTier:ie}})},onSelectServiceTier:e=>{const t=Y?.id??null,n=e||null;j(t),B(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:re,defaultServiceTier:n}})}}),x(xo,{disabled:!Y,mode:S,onSelectMode:e=>{D(e),Y?.id&&me.mutate({accountId:Y.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(vo,{pending:ee.isFetching,snapshot:le}),x(yo,{loading:he.isPending,sendDisabled:!Qo(m,G,Y,p),onSend:()=>he.mutate()})]})]})]})]})})}function so(){const{chatId:e}=p(),{accounts:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,connectedAccounts:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=ko(),[h,f]=O(""),[g,v]=O([]),[b,N]=O("OFFLINE"),[k,M]=O(null),E=q(null),T=q(null),S=q(!0),D=A(),$=R(()=>["chat",e],[e]),_=R(()=>["messages",e],[e]);L(()=>{M(null),v([])},[e]);const z=C({enabled:!!e,queryKey:$,queryFn:()=>Jn(o,e)}),j=C({enabled:!!e,queryKey:_,queryFn:()=>Yn(o,e,0)}),F=C({enabled:!!e&&!k,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(o,e),retry:!1,staleTime:3e4});L(()=>{F.data?.usage&&!k&&M(F.data.usage)},[F.data?.usage,k]);const B=R(()=>j.data?.data??[],[j.data]),G=R(()=>Yi(B),[B]),H=R(()=>G.pendingRequest?[G.pendingRequest.id]:[],[G.pendingRequest]),K=R(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]),W=z.data,V=t.find(e=>e.id===W?.accountId);L(()=>(d(W?.workingDirectory?.trim()??""),()=>d("")),[W?.workingDirectory,d]);const Q=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),J=P((e="auto")=>{const t=E.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),X=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["models",V?.id],queryFn:()=>Wn(o,V.id),staleTime:3e5}),Y=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["rate-limits",V?.id],queryFn:()=>Vn(o,V.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),Z=I({mutationFn:t=>Xn(o,e,{accountId:t.accountId}),onError:e=>U.error(Jo(e)),onSuccess:(e,t)=>{D.setQueryData($,e),D.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&U.success("Chat account updated.")}}),ee=I({mutationFn:t=>Xn(o,e,t),onError:e=>U.error(Jo(e)),onSuccess:e=>{D.setQueryData($,e),D.invalidateQueries({queryKey:["chats"]})}}),te=I({mutationFn:({accountId:e,settings:t})=>Hn(o,e,t),onError:e=>U.error(Jo(e)),onSuccess:e=>{D.setQueryData(["accounts"],t=>Vo(t,e))}}),ne=I({mutationFn:t=>Zn(o,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??h).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>U.error(Jo(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(f(""),v([])),D.setQueryData(_,t=>Ko(t,Wo(e))),D.invalidateQueries({queryKey:$}),D.invalidateQueries({queryKey:["chats"]})}}),ae=I({mutationFn:()=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(o,e),onError:e=>U.error(Jo(e)),onSuccess:()=>{U.message("Stop requested.")}}),re=R(()=>To(i,n),[n,i]),ie=R(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?So(a[n.id])<0?null:!t||"CONNECTED"!==t.status||So(a[t.id])<0?n:null:null}(W,V,re,n),[n,re,V,W])?.id;L(()=>{!ie||Z.isPending||ne.isPending||Z.mutate({accountId:ie,notify:!1})},[ie,ne.isPending,Z.isPending]);const se=P(e=>{e?.length&&eo(e).then(e=>{v(t=>[...t,...e])}).catch(e=>U.error(Jo(e)))},[]),oe=P(()=>{s({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{v(t=>[...t,ao(e)])}})},[z.data?.workingDirectory,s]),de=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:"Implement the latest approved plan from the most recent proposed plan in this thread.",metadata:{action:"implementPlan",planMessageId:e.message.id,source:"proposedPlan"}})},[ne]),ce=P(e=>{var t;ne.mutate({clearComposer:!1,collaborationMode:"plan",content:(t=e.feedback,["Revise the latest proposed plan from this thread using the following requested changes.","Do not implement yet. Return an updated proposed plan.","",t].join("\n")),metadata:{action:"revisePlan",planMessageId:e.message.id,source:"proposedPlan"}})},[ne]),ue=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]),me=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]);if(L(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?D.setQueryData(_,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return aa(e,n);if("message.failed"===t)return aa(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)):M(t):n(t)};return function(e,t,n){let a=!1;const r=gt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(o,e,{onClose:()=>N("OFFLINE"),onError:e=>{N("OFFLINE"),U.error(Jo(e))},onEvent:t,onOpen:()=>{var a;N("ONLINE"),Yn(o,e,(a=D.getQueryData(_),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>U.error(Jo(e))),Jn(o,e).then(n).catch(e=>U.error(Jo(e)))}});function n(e){D.setQueryData($,e),D.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,$,_,D,o]),L(()=>{S.current=!0;const e=requestAnimationFrame(()=>J("auto"));return()=>cancelAnimationFrame(e)},[e,J]),L(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{J("auto"),e=requestAnimationFrame(()=>J("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[K,J]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x(oo,{});if(z.error)return x("main",{className:"flex flex-1 items-center justify-center p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const he=W,fe=V,pe="RUNNING"===he?.status,ge=X.data?.data??[],ve=!!he&&!pe&&i.length>0,we=Co(ge,he?.model),xe=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ye=he?.reasoningEffort??we?.defaultReasoningEffort??null,be=we?.additionalSpeedTiers??[],Ne=Ao(Y.data);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:[y("div",{className:"flex min-h-12 items-center justify-between gap-3 border-b px-4 py-2",children:[y("div",{className:"min-w-0",children:[y("div",{className:"flex items-center gap-2",children:[x(uo,{state:b}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:he?.title??"Chat"})]}),y("div",{className:"mt-1 flex min-w-0 items-center gap-3 text-xs text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:fe?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(le,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:he?.workingDirectory??"No working directory"})]})]})]}),he?x(mo,{chatId:he.id,disabled:pe,session:o}):null]}),x(mr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:E,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=Q(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(jr,{chatId:e,fileChangeActionDisabled:pe,fileChangeActionPending:ne.isPending,hiddenMessageIds:H,messages:B,onImplementPlan:de,onRevisePlan:ce,onReviewFileChanges:ue,onUndoFileChanges:me,planActionDisabled:pe,planActionPending:ne.isPending,session:o}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:qn("min-w-0 border-t bg-background",l&&he?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:l&&he?.workingDirectory?x("div",{className:"p-3",children:x("div",{className:"mx-auto max-w-5xl",children:x(Nr,{onClosePanel:()=>c(!1),projectPath:he.workingDirectory,socket:u,socketConnected:m})})}):y(w,{children:[x(Fr,{chatId:e,messages:B,session:o}),x("div",{className:"p-3",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[x(Ba,{className:"max-h-44 min-h-20 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:he?.workingDirectory?fe?"Message Codex":"Choose an account first":"Choose a directory first",value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Qo(h,he?.workingDirectory??"",fe,g)&&ne.mutate({attachments:Zs(g),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=to(e.clipboardData);t.length&&se(t)}}),x(ro,{attachments:g,imageInputRef:T,onAttachImages:se,onRemove:e=>v(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(wo,{attachmentDisabled:ne.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:oe,onAttachImage:()=>T.current?.click(),pending:ee.isPending,steerDisabled:!pe||ne.isPending||!Qo(h,he?.workingDirectory??"",fe,g),onSteerActiveTurn:()=>ne.mutate({attachments:Zs(g),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>ee.mutate({collaborationMode:e})}),x(co,{account:fe,autoRotate:he?.autoRotateAccount??!1,autoRotateDisabled:!he||ee.isPending,connectedAccounts:i,disabled:!he||!i.length,pending:Z.isPending,selectedAccountId:he?.accountId??"",selectionDisabled:!ve,usageSummaries:a,onAutoRotateChange:e=>ee.mutate({autoRotateAccount:e}),onSelect:e=>Z.mutate({accountId:e})}),x(bo,{activeReasoningEffort:ye,disabled:!he||pe||!fe,modelOptions:ge,modelValue:he?.model??"",pending:X.isFetching||ee.isPending,reasoningOptions:xe,reasoningValue:he?.reasoningEffort??"",selectedModel:we,serviceTierOptions:be,serviceTierValue:he?.serviceTier??"",onSelectModel:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),ee.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:t,defaultServiceTier:he.serviceTier??null}}),ee.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:he.reasoningEffort??null,defaultServiceTier:t}}),ee.mutate({serviceTier:t})}}),x(xo,{disabled:!he,mode:he?.permissionMode??"default",pending:ee.isPending,onSelectMode:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultPermissionMode:e}}),ee.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(lo,{usage:k}),x(vo,{pending:Y.isFetching,snapshot:Ne}),x(yo,{loading:ne.isPending,running:pe,sendDisabled:!Qo(h,he?.workingDirectory??"",fe,g),stopPending:ae.isPending,onSend:()=>ne.mutate({attachments:Zs(g),clearComposer:!0,delivery:pe?"queue":void 0}),onStop:()=>ae.mutate()})]})]})]})})]})})]})}function oo(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})})}function co({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(Sr,{render:x(ka,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(t?Ue:et,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(Pr,{align:"start",className:"w-64",children:[i?y(w,{children:[y(Dr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Ue,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x($s,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(_r,{})]}):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(K,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function lo({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Fo(e.usedPercent);return y(os,{children:[x(ds,{render:x(ka,{"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(cs,{align:"end",className:"w-72",side:"top",children:[y(ls,{children:[x(us,{children:"Context window"}),x(ms,{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:[Uo(e.tokensUsed)," /"," ",Uo(e.tokenLimit)," tokens used"]})]})]})]})}function uo({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:qn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function mo({chatId:e,disabled:t,session:n}){const[a,r]=O(!1),i=A(),s=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(n,e),refetchInterval:2e4,retry:!1}),o=s.data;if(o&&!o.isRepo)return null;const d=o?.branch??"Git",c=!!o&&!o.clean,l=o?go(o):"";return y(ar,{open:a,onOpenChange:r,children:[y(ka,{className:"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",disabled:s.isLoading&&!o,size:"sm",type:"button",variant:"outline",onClick:()=>r(!0),children:[x(fe,{className:"size-3.5"}),x("span",{className:"min-w-0 truncate",children:d}),l?x("span",{className:"shrink-0 text-muted-foreground",children:l}):null,x("span",{className:qn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(ho,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function ho({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=O(""),[o,d]=O(""),[c,l]=O(""),u=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),m=C({enabled:!!e,queryKey:["git-diff",e],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return ea(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e),retry:!1}),h=I({mutationFn:function(t){return async function(e,t,n){return ea(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>U.error(Jo(e)),onSuccess:t=>{U.success(t.message),l(""),d(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})}}),f=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(u.data,i),p=t||h.isPending,g=r??h.data?.status;return y(or,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(dr,{className:"gap-1 px-4 pb-2 pt-4",children:[x(lr,{children:"Git"}),x(ur,{className:"truncate",children:g?.root??"Repository information"})]}),y("div",{className:"grid min-h-0 flex-1 gap-0 overflow-hidden border-y md:grid-cols-[18rem_minmax(0,1fr)]",children:[y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] border-b md:border-b-0 md:border-r",children:[y("div",{className:"grid gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:g?.branch??"No branch"}),x("div",{className:"text-xs text-muted-foreground",children:g?po(g):"Loading..."})]}),x(ka,{className:"ml-auto",size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})},children:x(Ue,{className:qn(h.isPending&&"animate-spin")})})]}),x(Ca,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(mr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(ka,{className:"justify-start",disabled:p||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>{window.confirm(`Switch to ${e.name}?`)&&h.mutate({action:"checkout",branch:e.name})},children:[x(fe,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),f.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:"No branches found."})]})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(Ca,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(ka,{disabled:p||!o.trim(),size:"sm",type:"button",variant:"outline",onClick:()=>h.mutate({action:"createBranch",branch:o.trim()}),children:[x(_e,{}),"Create branch"]})]})]}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-3 p-3",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(ka,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ae,{}),"Pull"]}),y(ka,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Ze,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":po(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(Ba,{className:"min-h-16 resize-y",placeholder:"Commit message",value:c,onChange:e=>l(e.target.value)}),y(ka,{className:"self-end",disabled:p||!c.trim()||g?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&h.mutate({action:"commit",message:c.trim()})},children:[x(pe,{}),"Commit"]})]})]}),x(mr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(fo,{status:g}),x("pre",{className:"max-h-[46vh] min-w-0 overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:m.data?.diff?.trim()||m.data?.stat?.trim()||"No tracked diff."})]})})]})]})]})}function fo({status:e}){const t=e?.changedFiles??[];return t.length?x("div",{className:"grid max-h-40 gap-1 overflow-auto rounded-md border p-2",children:t.map(e=>y("div",{className:"grid min-w-0 grid-cols-[3rem_minmax(0,1fr)] gap-2 text-xs",children:[x("span",{className:"font-mono text-muted-foreground",children:e.status}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function po(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,go(e)].filter(Boolean).join(" · "):"Git unavailable"}function go(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function vo({pending:e,snapshot:t}){const n=Mo(t),a=Eo(t);return y(os,{children:[y(ds,{render:x(ka,{className:qn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ie,{className:"size-3 animate-spin"}):x(at,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(cs,{align:"start",className:"w-80",side:"top",children:[y(ls,{children:[x(us,{children:"Usage capacity"}),x(ms,{children:"Current Codex account limits refresh automatically."})]}),x(No,{pending:e,snapshot:t})]})]})}function wo({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(Sr,{render:x(ka,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ie,{className:"animate-spin"}):x(_e,{})}),y(Pr,{align:"start",className:"w-56",children:[y(Dr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(Ne,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x($s,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(Dr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ve,{}),x("span",{children:"Attach image"})]}),y(Dr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Re,{}),x("span",{children:"Attach workspace file"})]}),o?y(Dr,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function xo({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(Tr,{children:[y(Sr,{render:x(ka,{"aria-label":Ho(t),className:qn("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:Ho(t),variant:"ghost"}),children:[a?x(Ie,{className:"animate-spin"}):x(r?Ke:He,{}),x("span",{className:"truncate max-sm:sr-only",children:Ho(t)})]}),x(Pr,{align:"start",className:"w-48",children:y(Or,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x($r,{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($r,{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 yo({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(ka,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})}),x(ka,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:i||!n,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:n,children:i?x(Ie,{className:"animate-spin"}):x(We,{})})]}):x(ka,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})})}function bo({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?Bo(e):null,a?Go(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(Tr,{children:[y(Sr,{render:x(ka,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(ne,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(Pr,{align:"start",className:"w-72",children:[y(Lr,{children:[y(Rr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(H,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Bo(e)})]}),x(qr,{className:"w-52",children:y(Or,{value:c,onValueChange:i,children:[x($r,{value:"",children:"Model default"}),d.map(e=>x($r,{value:e,children:Bo(e)},e))]})})]}),y(Lr,{children:[y(Rr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(ne,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(qr,{className:"w-64",children:y(Or,{value:a,onValueChange:r,children:[x($r,{value:"",children:"Default model"}),n.map(e=>x($r,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(Lr,{children:[y(Rr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(he,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Go(m)})]}),x(qr,{className:"w-52",children:y(Or,{value:m,onValueChange:s,children:[x($r,{value:"",children:"Default speed"}),u.map(e=>x($r,{value:e,children:Go(e)},e))]})})]})]})]})}function No({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: ",jo(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,jo(n))}):null]}),x(Io,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(Io,{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 Io({fallbackLabel:e,severity:t,window:n}){const a=Fo(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=Po(n);return y("div",{className:qn("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:Lo(n,e)}),x("span",{className:qn("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:qn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:qn("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:Ro(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",qo(n.resetsAt)]}):null]})]})}function ko(){return f()}function Co(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function Ao(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function Mo(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[Do(e.primary,"5h"),Do(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function Eo(e){return e?Po(e.secondary)?"weekly":Po(e.primary)?"fiveHour":null:null}function To(e,t){return e.map((e,n)=>({account:e,index:n,score:So(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function So(e){if(!e)return 0;if(e.rateLimitReachedType||Eo(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-Fo(e.usedPercent));return t.length?Math.min(...t):0}function Po(e){return Fo(e?.usedPercent??0)>=100}function Do(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Fo(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 Lo(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 Ro(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function qo(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 Oo(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 $o(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 _o(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function Uo(e){return e>=1e6?`${zo(e/1e6)}M`:e>=1e3?`${zo(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function zo(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function jo(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function Fo(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Bo(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Go(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Ho(e){return"fullAccess"===e?"Full access":"Default"}function Ko(e,t){let n=e;for(const a of t)n=aa(n,a);return n??{data:[],nextCursor:null}}function Wo(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function Vo(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 Qo(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Jo(e){return e instanceof Error?e.message:"Request failed."}var Xo=Sn({default:()=>Yo}),Yo=c(function(){return x(Qs,{})}),Zo=Sn({default:()=>ed}),ed=c(function(){return x(io,{})}),td=Sn({default:()=>nd}),nd=c(function(){return x(so,{})}),ad=class extends Error{status;constructor(e,t){super(t),this.status=e}};function rd(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function id(e){throw new ad(405,`${e} is not supported for this route.`)}function sd(e,t){t.includes(e.method)||id(e.method)}async function od(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 ad(400,"JSON body must be an object.");return e}catch(n){if(n instanceof ad)throw n;throw new ad(400,"Request body must be valid JSON.")}}function dd(e,t,n={}){if(null==e){if(n.required)throw new ad(400,`${t} is required.`);return}if("string"!=typeof e)throw new ad(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new ad(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new ad(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function cd(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new ad(400,`${t} must be an array of strings.`);return e}}function ld(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new ad(400,`${t} must be a boolean.`);return e}}function ud(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new ad(400,`${t} must be an object.`);return e}}function md(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 ad(400,`${t} must be an integer.`);return r}function hd(e,t){const n=e[t];if(!n)throw new ad(400,`${t} is required.`);return n}function fd(e){return e instanceof ad?rd({message:e.message},{status:e.status}):rd({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var pd=Sn({loader:()=>gd});function gd({request:e}){try{return sd(e,["GET"]),rd({status:"ok",service:"xedoc"})}catch(t){return fd(t)}}var vd,wd=globalThis,xd=hn("~"===(vd=process.env.CODEX_WORKSPACE_ROOT?.trim()||on())?on():vd.startsWith("~/")?hn(on(),vd.slice(2)):pn(vd),".xedoc","xedoc.db"),yd=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(xd);process.env.DATABASE_URL=yd,Xt(ln(xd),{recursive:!0,mode:448});var bd=wd.prisma??new Bt({datasources:{db:{url:yd}}});"production"!==process.env.NODE_ENV&&(wd.prisma=bd);var Nd="server",Id="scrypt";async function kd(e){!function(e){if(e.length<8)throw new ad(400,"Server password must be at least 8 characters.")}(e);const t=await Td()??await async function(e){try{return await bd.serverAuth.create({data:{id:Nd,passwordHash:Sd(e),tokenSecret:Pd(32)}})}catch(t){if(function(e){return e instanceof Ft.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new ad(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!==Id||!a||!r||void 0!==i)&&Dd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new ad(401,"Invalid server password.");return{token:Ad({authHash:Md(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Cd(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new ad(401,"Invalid auth token.");if(!Dd(a,Ed(n,t.tokenSecret)))throw new ad(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 ad(401,"Invalid auth token.")}}(n);if(i.authHash!==Md(t.passwordHash))throw new ad(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new ad(401,"Missing auth token.");return n}(e),await async function(){const e=await Td();if(!e)throw new ad(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Ad(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${Ed(n,t)}`}function Md(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function Ed(e,t){return $t("sha256",t).update(e).digest("base64url")}async function Td(){return bd.serverAuth.findUnique({where:{id:Nd}})}function Sd(e){const t=Pd(16);return`${Id}:${t}:${zt(e,t,64).toString("base64url")}`}function Pd(e){return _t(e).toString("base64url")}function Dd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&jt(n,a)}var Ld=Sn({loader:()=>Rd});async function Rd({request:e}){try{return sd(e,["GET"]),rd(await async function(){return{passwordConfigured:!!(await Td())}}())}catch(t){return fd(t)}}var qd=Sn({action:()=>Od});async function Od({request:e}){try{return sd(e,["POST"]),rd(await kd(dd((await od(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return fd(t)}}var $d=Sn({loader:()=>_d});async function _d({request:e}){try{return sd(e,["GET"]),rd(await async function(e){return{authenticated:!0,issuedAt:(await Cd(e)).issuedAt}}(e))}catch(t){return fd(t)}}function Ud(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function zd(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function jd(e){const t=Ud(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Fd=class{config;child;initializePromise;stdoutBuffer="";pending=new Map;eventHandlers=new Set;serverRequestHandlers=new Set;constructor(e){this.config=e}request(e,t,n=3e4){return this.ensureStarted().then(()=>this.requestStarted(e,t,n))}waitForEvent(e,t=12e4,n){return new Promise((a,r)=>{if(n?.aborted)return void r(new Error("Stopped waiting for Codex event."));const i=()=>{clearTimeout(o),n?.removeEventListener("abort",s),d()},s=()=>{i(),r(new Error("Stopped waiting for Codex event."))},o=setTimeout(()=>{i(),r(new Error("Timed out waiting for Codex event."))},t),d=this.onEvent(t=>{e(t)&&(i(),a(t))});n?.addEventListener("abort",s,{once:!0})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${Ut()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=Hd(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 Xd(e.codexHome),this.child=wn(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&console.warn(`[codex:${this.config.accountId}] ${t}`)}),this.child.on("error",e=>this.failAll(e)),this.child.on("close",e=>{this.failAll(new Error(`Codex runtime exited with code ${e??"unknown"}.`)),this.child=void 0,this.initializePromise=void 0}),this.initializePromise=this.initialize(),this.initializePromise}async initialize(){await this.requestStarted("initialize",{clientInfo:{name:"xedoc",title:"xedoc",version:"0.1.0"},capabilities:{experimentalApi:!0}}),this.child?.stdin.write(`${JSON.stringify({method:"initialized"})}\n`)}handleStdout(e){this.stdoutBuffer+=e.toString("utf8");const t=this.stdoutBuffer.split("\n");this.stdoutBuffer=t.pop()??"";for(const n of t){const e=n.trim();e&&this.handleLine(e)}}handleLine(e){let t;try{t=JSON.parse(e)}catch{return}const n=function(e){return void 0!==e.id&&null!==e.id&&e.method?"server-request":void 0!==e.id&&null!==e.id?"response":"notification"}(t);if("server-request"===n){if(!this.serverRequestHandlers.size)return void this.rejectServerRequest(t.id,-32601,`Unsupported request method: ${t.method??"unknown"}`);for(const e of this.serverRequestHandlers)e(t);return}if("notification"===n){for(const e of this.eventHandlers)e(t);return}const a=this.pending.get(Qd(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(Qd(t.id)),t.error?a.reject(new Error(t.error.message??"Codex request failed.")):a.resolve(t))}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},Bd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Fd(e);return this.runtimes.set(e.accountId,n),n}stopRuntime(e){this.runtimes.get(e)?.shutdown(),this.runtimes.delete(e)}shutdown(){for(const e of this.runtimes.values())e.shutdown();this.runtimes.clear()}};async function Gd(e){return(await Bd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function Hd(e){return hn(Jd(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function Kd(e){const t=Hd(e);return Xd(t),t}function Wd(){return Jd(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Vd(){return hn(Wd(),"session_index.jsonl")}function Qd(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function Jd(e){return"~"===e?on():e.startsWith("~/")?hn(on(),e.slice(2)):pn(e)}function Xd(e){Xt(e,{recursive:!0,mode:448}),Ht(e,448),function(e){const t=Wd();if(pn(e)===pn(t))return;Xt(t,{recursive:!0,mode:448}),Ht(t,448),function(e,t){const n=hn(t,"sessions"),a=hn(e,"sessions");if(Xt(n,{recursive:!0,mode:448}),ec(a,n))return;nc(a)&&(tc(a)?.isDirectory()&&Yd(a,n),an(a,ac(a)));sn(n,a,"dir")}(e,t),function(e,t){const n=hn(t,"session_index.jsonl"),a=hn(e,"session_index.jsonl");if(function(e,t){Kt(Yt(e,"a",t)),Ht(e,t)}(n,384),ec(a,n))return;nc(a)&&(tc(a)?.isFile()&&function(e,t){const n=Zt(e,"utf8");if(!n.trim())return;const a=Zt(t,"utf8");Gt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),an(a,ac(a)));sn(n,a,"file")}(e,t)}(e)}function Yd(e,t){Xt(t,{recursive:!0,mode:448});for(const n of en(e,{withFileTypes:!0})){const a=hn(e,n.name),r=hn(t,n.name);n.isDirectory()?Yd(a,r):n.isFile()&&Zd(a,r)}}function Zd(e,t){nc(t)||(Xt(ln(t),{recursive:!0,mode:448}),Vt(e,t))}function ec(e,t){try{return!!Jt(e).isSymbolicLink()&&pn(ln(e),tn(e))===pn(t)}catch{return!1}}function tc(e){try{return rn(e)}catch{return null}}function nc(e){try{return Jt(e),!0}catch{return!1}}function ac(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;nc(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}async function rc(){const e=await bd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return function(e){for(const t of e)mc(t.id)}(e),e}async function ic(e){const t=await bd.codexAccount.findUnique({where:{id:e}});if(!t)throw new ad(404,"Codex account not found.");return mc(t.id),t}async function sc(e,t="browser"){const n=await ic(e);if(uc(e))return Bd.stopRuntime(e),await bd.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};await bd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const a=cc(n);if(Ud(Ud((await a.request("account/read",{refreshToken:!1})).result)?.account))return await bd.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};const r=Ud((await a.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),i="chatgptDeviceCode"===zd(r?.type)?"device":t,s=function(e,t){return"device"===t?zd(e?.verificationUrl)??zd(e?.verification_url)??zd(e?.authUrl)??zd(e?.auth_url)??zd(e?.url)??null:zd(e?.authUrl)??zd(e?.auth_url)??zd(e?.url)??null}(r,i),o=zd(r?.loginId)??null,d="device"===i?zd(r?.userCode)??zd(r?.user_code)??null:null;if(!("device"!==i||s&&d))throw new Error("Codex did not return device login instructions.");const c=s?"AUTHENTICATING":"CONNECTED";return await bd.codexAccount.update({where:{id:e},data:"CONNECTED"===c?{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}:{status:c,lastAuthUrl:s,lastAuthMode:i,lastAuthLoginId:o,lastAuthUserCode:d,lastError:null}}),"AUTHENTICATING"===c&&function(e,t,n){const a=e.onEvent(e=>{const r=Ud(e.params);if("account/login/completed"===e.method){const e=zd(r?.loginId);if(n&&e&&e!==n)return;return a(),!1===r?.success?void bd.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:zd(r.error)??"Login failed."}}):void bd.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}"account/updated"===e.method&&zd(r?.authMode)&&(a(),bd.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))})}(a,e,o),{accountId:e,status:c,authMode:"AUTHENTICATING"===c?i:null,authUrl:s,verificationUrl:"device"===i?s:null,userCode:d,loginId:o,message:"CONNECTED"===c?"Codex account is connected.":"device"===i?"Open the verification URL and enter the device code to finish Codex authentication.":"Complete Codex authentication in the opened browser. xedoc will connect automatically when the Codex callback is received."}}catch(a){const n=a instanceof Error?a.message:"Authentication failed.";return await bd.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 oc(e,t){const n=await ic(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new ad(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new ad(400,"Callback URL must use http.");if(t.username||t.password)throw new ad(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 ad(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new ad(400,"Callback URL must include an OAuth code or error.");return t}(t),r=cc(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 ad(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Ud((await i)?.params);if(!1===s?.success){const t=zd(s.error)??"Login failed.";return await bd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:dc(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await async function(e,t){return!!Ud(Ud((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await bd.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:uc(e)?(Bd.stopRuntime(e),await bd.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await bd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:dc(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 bd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:dc(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function dc(e){return"browser"===e||"device"===e?e:null}function cc(e){return Bd.getRuntime({accountId:e.id,command:e.command,args:gc(e.args),workingDirectory:null,environment:jd(e.environment)})}function lc(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function uc(e){try{const t=Zt(`${Hd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==zd(n.auth_mode)||!Ud(n.tokens)&&!zd(n.OPENAI_API_KEY))}catch{return!1}}function mc(e){try{Kd(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function hc(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function fc(e){return{args:hc(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?Ft.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function pc(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:gc(e.args),environment:jd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:dc(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function gc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):lc()}function vc(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new ad(400,`${n} must be an object.`);return{id:Ic(e.id,`${n}.id`,128),displayName:Nc(e.displayName,`${n}.displayName`,128),command:Ic(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:kc(e.args,`${n}.args`)??lc(),defaultModel:Ic(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:bc(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:xc(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:yc(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:Cc(e.environment,`${n}.environment`)}}function wc(e){return null==e?null:Nc(e,"runtime option",128)}function xc(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 ad(400,`${t} is invalid.`)}function yc(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new ad(400,`${t} is invalid.`)}function bc(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new ad(400,`${t} is invalid.`)}function Nc(e,t,n){const a=Ic(e,t,n);if(!a)throw new ad(400,`${t} is required.`);return a}function Ic(e,t,n){if(null==e)return;if("string"!=typeof e)throw new ad(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new ad(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function kc(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new ad(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function Cc(e,t){if(null==e)return null;const n=Ud(e);if(!n)throw new ad(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Ac=Sn({action:()=>Ec,loader:()=>Mc});async function Mc({request:e}){try{return sd(e,["GET"]),await Cd(e),rd(await rc())}catch(t){return fd(t)}}async function Ec({request:e}){try{sd(e,["POST"]),await Cd(e);const t=await od(e);return rd(await async function(e){const t=await bd.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:hc(e.args??lc()),defaultModel:wc(e.defaultModel),defaultPermissionMode:bc(e.defaultPermissionMode),defaultReasoningEffort:xc(e.defaultReasoningEffort),defaultServiceTier:yc(e.defaultServiceTier),environment:hc(e.environment)}});return mc(t.id),t}({displayName:dd(t.displayName,"displayName",{required:!0,maxLength:128}),command:dd(t.command,"command"),args:cd(t.args,"args"),defaultModel:Tc(t.defaultModel,"defaultModel"),defaultPermissionMode:Tc(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Tc(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Tc(t.defaultServiceTier,"defaultServiceTier"),environment:ud(t.environment,"environment")}),{status:201})}catch(t){return fd(t)}}function Tc(e,t){return null===e?null:dd(e,t,{maxLength:128})}var Sc=Sn({loader:()=>Pc});async function Pc({request:e}){try{return sd(e,["GET"]),await Cd(e),rd(await async function(){const e=await bd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:1,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:gc(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:jd(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return fd(t)}}var Dc=Sn({action:()=>Lc});async function Lc({request:e}){try{sd(e,["POST"]),await Cd(e);const t=await od(e);if(!Array.isArray(t.accounts))throw new ad(400,"accounts must be an array.");return rd(await async function(e){const t=e.accounts.map(vc),n=[];for(const s of t){const e=s.id?await bd.codexAccount.findUnique({where:{id:s.id}}):null;e?(Bd.stopRuntime(e.id),n.push(await bd.codexAccount.update({where:{id:e.id},data:fc(s)}))):n.push(await bd.codexAccount.create({data:{...s.id?{id:s.id}:{},...fc(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await sc(s.id));const r=await bd.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=>pc(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return fd(t)}}var Rc=Sn({action:()=>Oc,loader:()=>qc});async function qc({request:e,params:t}){try{return sd(e,["GET"]),await Cd(e),rd(await ic(hd(t,"accountId")))}catch(n){return fd(n)}}async function Oc({request:e,params:t}){try{await Cd(e);const n=hd(t,"accountId");if("PATCH"===e.method){const t=await od(e);return rd(await async function(e,t){return await ic(e),Bd.stopRuntime(e),bd.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:hc(t.args),environment:hc(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:dd(t.displayName,"displayName",{maxLength:128}),command:dd(t.command,"command"),args:cd(t.args,"args"),environment:ud(t.environment,"environment")}))}if("DELETE"===e.method)return rd(await async function(e){return await ic(e),Bd.stopRuntime(e),bd.codexAccount.delete({where:{id:e}})}(n));id(e.method)}catch(n){return fd(n)}}var $c=Sn({action:()=>_c});async function _c({request:e,params:t}){try{sd(e,["PATCH"]),await Cd(e);const n=await od(e),a={defaultModel:Uc(n.defaultModel,"defaultModel"),defaultPermissionMode:Uc(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Uc(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Uc(n.defaultServiceTier,"defaultServiceTier")};return rd(await async function(e,t){return await ic(e),pc(await bd.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:wc(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:bc(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:xc(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:yc(t.defaultServiceTier)}}))}(hd(t,"accountId"),a))}catch(n){return fd(n)}}function Uc(e,t){return null===e?null:dd(e,t,{maxLength:128})}async function zc(e){return async function(e){return(await Bd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(Fc(await jc(e)))}async function jc(e){const t=await bd.codexAccount.findUnique({where:{id:e}});if(!t)throw new ad(404,"Account not found.");if("CONNECTED"!==t.status)throw new ad(400,"Authenticate the account before loading Codex account data.");return t}function Fc(e){return{accountId:e.id,args:Bc(e.args),command:e.command,environment:jd(e.environment),workingDirectory:null}}function Bc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var Gc=Sn({loader:()=>Hc});async function Hc({request:e,params:t}){try{return sd(e,["GET"]),await Cd(e),rd(await zc(hd(t,"accountId")))}catch(n){return fd(n)}}var Kc=Sn({loader:()=>Wc});async function Wc({request:e,params:t}){try{return sd(e,["GET"]),await Cd(e),rd(await async function(e){return Gd(Fc(await jc(e)))}(hd(t,"accountId")))}catch(n){return fd(n)}}var Vc=Sn({action:()=>Qc});async function Qc({request:e,params:t}){try{sd(e,["POST"]),await Cd(e);const n=await od(e);return rd(await sc(hd(t,"accountId"),function(e){const t=dd(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new ad(400,"mode must be browser or device.")}(n.mode)))}catch(n){return fd(n)}}var Jc=Sn({action:()=>Xc});async function Xc({request:e,params:t}){try{sd(e,["POST"]),await Cd(e);const n=dd((await od(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return rd(await oc(hd(t,"accountId"),n))}catch(n){return fd(n)}}var Yc="global",Zc=new Map;async function el(e={}){if(!("test"===process.env.NODE_ENV?"true"===process.env.CODEX_LOCAL_CHAT_IMPORT:"false"!==process.env.CODEX_LOCAL_CHAT_IMPORT))return;const t=Date.now(),n=Zc.get(Yc);if(!e.force&&n&&t-n.lastScanAt<Sl("CODEX_LOCAL_CHAT_IMPORT_INTERVAL_MS",3e4))return void(await n.promise);if(n?.promise)return void(await n.promise);const a={lastScanAt:t},r=async function(){const e=await yl();if(!e.length)return;const t=(await Promise.all(e.map(e=>Al(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,El()),n=await async function(e){const t=e.map(e=>jl(e.path)).filter(e=>!!e);if(!t.length)return new Set;const n=await bd.chat.findMany({where:{externalThreadId:{in:[...new Set(t)]}},select:{externalThreadId:!0}});return new Set(n.map(e=>e.externalThreadId).filter(e=>!!e))}(t);for(const a of t){const e=jl(a.path);e&&n.has(e)||await al(a.path).catch(e=>{console.warn(`Failed to import local Codex chat from ${a.path}.`,e instanceof Error?e.message:e)})}}().catch(e=>{console.warn("Local Codex chat import failed.",e instanceof Error?e.message:e)}).finally(()=>{const e=Zc.get(Yc);e?.promise===r&&(e.promise=void 0)});a.promise=r,Zc.set(Yc,a),await r,await async function(){const e=await bd.chat.findMany({where:{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},select:{id:!0},take:El()});for(const t of e)await bd.$transaction(e=>il(e,t.id))}()}async function tl(e,t){const n=await bd.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await Hl(e)??(n?.externalThreadId?await bl(n.externalThreadId):null);if(!a)return;const r=hn(Kd(t),"sessions",function(e){const t=`${gn}sessions${gn}`,n=e.lastIndexOf(t);return-1===n?dn(e):e.slice(n+t.length)}(a));if(pn(a)!==pn(r)){await async function(e){const t=vl(e),n=Vd();if(!t||pn(t)===pn(n))return;try{const e=await kn(t,"utf8");if(!e.trim())return;const a=await kn(n,"utf8").catch(()=>"");await yn(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(a);try{return void(await xn(r,Wt.R_OK))}catch{}await Nn(ln(r),{recursive:!0,mode:448}),await bn(a,r)}}async function nl(e,t){const n=await Hl(e);if(n){const e=await Il(n,t);if(e)return e}const a=await bl(t);return a?Il(a,t):null}async function al(e){const t=await Mn(e);if(!t.isFile()||t.size>Tl())return;const n=rl(await kn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await pl(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await bd.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await il(e,t.id,a,n.updatedAt):await e.chat.create({data:{accountId:null,createdAt:n.createdAt,externalThreadId:n.externalThreadId,lastActivityAt:r,status:"IDLE",title:a?.title??n.title,updatedAt:n.updatedAt,workingDirectory:n.workingDirectory}})})}function rl(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=$l(f);if(!e)continue;const u=_l(e.timestamp)??n;o=Ul(o,u),d=zl(d,u);const m=Ud(e.payload);if("session_meta"===e.type&&m){a=zd(m.id)??a,r=zd(m.source)??r,i=zd(m.originator)??i,s=zd(m.cwd)??s,o=_l(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=zd(m.cwd)??s;continue}const h=sl(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=ol(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??jl(t);if(!m||!u.length)return null;const h=Fl(u.find(e=>"USER"===e.role)?.content??"")??Fl(u[0]?.content??"")??"Imported Codex chat";return{createdAt:o??n,externalThreadId:m,messages:u,originator:i,path:t,source:r,title:h,updatedAt:d??n,workingDirectory:s}}async function il(e,t,n,a){const r=await e.chat.findUnique({where:{id:t},select:{externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}});if(!r)return;const i=await e.chatMessage.findMany({where:{chatId:t},orderBy:{sequence:"asc"},select:{content:!0,id:!0,metadata:!0,role:!0}}),s=i.filter(e=>"localCodexImport"===Ud(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&dl(e.content)).map(e=>e.id);o.length&&await e.chatMessage.deleteMany({where:{id:{in:o}}});const d=i.filter(e=>!o.includes(e.id)),c=Fl(d.find(e=>"USER"===e.role&&!dl(e.content))?.content??d.find(e=>!dl(e.content))?.content??"")??"Imported Codex chat",l=n??(r.externalThreadId?await async function(e,t){const n=function(e){for(const t of e){const e=Ud(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=zd(e.sessionPath);if(n)return n}return null}(e)??await bl(t);return n?pl(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=Bl(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==Bl(u)&&(f.title=u);else{const e=new Set([Bl(c),Bl("Imported Codex chat")]);(dl(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function sl(e,t,n){if("response_item"!==e.type)return null;const a=Ud(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?ul(e.text,e):"string"==typeof e.message?ul(e.message,e):"string"==typeof e.content?ul(e.content,e):Array.isArray(e.content)?ul(e.content.map(e=>{if("string"==typeof e)return e;const t=Ud(e);return t?"string"==typeof t.text?t.text:hl(t)??"":""}).join(""),e):ul("",e)}(a);return!s.trim()||dl(s)?null:{content:s,createdAt:t,metadata:cl(a,n),rawPayload:ll(e,a),role:r}}function ol(e,t,n){if("event_msg"!==e.type)return null;const a=Ud(e.payload);if(!a)return null;const r=zd(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?ul(a.message,a):"";return!s.trim()||dl(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...cl(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:ll(e,a),role:i}}function dl(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function cl(e,t){return{kind:"localCodexImport",originator:t.originator,phase:zd(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:zd(e.type)}}function ll(e,t){return{payload:{name:zd(t.name),phase:zd(t.phase),role:zd(t.role),type:zd(t.type)},timestamp:zd(e.timestamp),type:zd(e.type)}}function ul(e,t){return[e,...ml(t.images),...ml(t.local_images),...ml(t.localImages)].filter(Boolean).join("\n\n")}function ml(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?fl(e):hl(Ud(e))).filter(e=>!!e):[]}function hl(e){return e?fl(zd(e.url)??zd(e.image_url)??zd(e.path)??zd(e.filePath)):null}function fl(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function pl(e,t){if(!e||!t)return null;const n=vl(e);if(!n)return null;try{return function(e,t){return wl(e).get(t)??null}(await kn(n,"utf8"),t)}catch{return null}}async function gl(e){try{return wl(await kn(e,"utf8"))}catch{return new Map}}function vl(e){const t=`${gn}sessions${gn}`,n=pn(e),a=n.lastIndexOf(t);return-1===a?null:hn(n.slice(0,a),"session_index.jsonl")}function wl(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=$l(n);if(!e)continue;const a=zd(e.id)??zd(e.thread_id)??zd(e.threadId)??zd(e.session_id)??zd(e.sessionId);if(!a)continue;const r=xl(zd(e.thread_name)??zd(e.threadName)??zd(e.name)??zd(e.title)),i=_l(e.updated_at)??_l(e.updatedAt)??_l(e.modified_at)??_l(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function xl(e){const t=e?.replace(/\s+/g," ").trim();return!t||dl(t)?null:t.slice(0,160)}async function yl(){const e=[...kl(),hn(Wd(),"sessions"),hn(Gl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await Cl()],t=[],n=new Set;for(const a of e.map(e=>Gl(e)))try{await xn(a,Wt.R_OK);const e=await An(a).catch(()=>a);if(n.has(e))continue;n.add(e),t.push(a)}catch{}return t}async function bl(e){const t=await yl(),n=(await Promise.all(t.map(e=>Al(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>jl(t.path)===e);if(a)return a.path;for(const r of n.slice(0,El()))if(await Nl(r.path,e))return r.path;return null}async function Nl(e,t){try{const n=await Mn(e);if(!n.isFile()||n.size>Tl())return null;const a=rl(await kn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Il(e,t){try{const n=await Mn(e);if(!n.isFile()||n.size>Tl())return null;let a,r=null;for(const t of(await kn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=$l(t);if(!e)continue;"session_meta"===e.type&&(a=zd(Ud(e.payload)?.id)??a);const n=Pl(e);n&&(r=n)}return(a??jl(e))===t?r:null}catch{return null}}function kl(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(cn).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:hn(e,"sessions")):[]}async function Cl(){const e=Gl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await Cn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>hn(e,t.name,"sessions"))}catch{return[]}}async function Al(e){const t=[];return await Ml(e,t,0),t}async function Ml(e,t,n){if(n>6)return;let a;try{a=await Cn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=hn(e,a.name);if(a.isDirectory())return void(await Ml(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await Mn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function El(){return Sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function Tl(){return Sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Sl(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Pl(e){const t=Dl(e);if(!t)return null;const n=Ud(t.params),a=Ud(t.info)??Ud(n?.info)??n??t;return function(e,t=e){const n=Rl(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Rl(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Rl(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}([Rl(e,["input_tokens","inputTokens"]),Rl(e,["output_tokens","outputTokens"]),Rl(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}}(Ll(a,["last_token_usage","lastTokenUsage"])??Ll(a,["total_token_usage","totalTokenUsage"])??a,a)}function Dl(e,t=0){if(t>4)return;const n=Ud(e);if(!n)return;const a=Ol(zd(n.type)??""),r=Ol(zd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Dl(n[i],t+1);if(e)return e}}function Ll(e,t){for(const n of t){const t=Ud(e[n]);if(t)return t}}function Rl(e,t){for(const n of t){const t=ql(e[n]);if(void 0!==t)return t}}function ql(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 Ol(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function $l(e){try{return Ud(JSON.parse(e))??null}catch{return null}}function _l(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Ul(e,t){return!e||t<e?t:e}function zl(e,t){return!e||t>e?t:e}function jl(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function Fl(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 Bl(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function Gl(e){return"~"===e?on():e.startsWith("~/")?hn(on(),e.slice(2)):pn(e)}async function Hl(e){const t=await bd.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=Ud(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=zd(e.sessionPath);if(t)return t}return null}var Kl="__xedocRealtimeState__";function Wl(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[Kl]??={handlers:new Set},e[Kl]}().handlers)r(a)}async function Vl(e){const t=Xl(),n=Yl(t,e),a=await Cn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:ln(n),entries:a.map(e=>function(e,t){return{name:t.name,path:hn(e,t.name),type:Zl(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 Ql(e,t){const n=Xl(),a=pn(Yl(n,e),function(e){const t=e.trim();if(!t)throw new ad(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new ad(400,"Folder name must be a single folder name.");return t}(t)),r=fn(n,a);if(r.startsWith("..")||mn(r))throw new ad(403,"Path is outside the workspace root.");try{await Nn(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new ad(409,"Folder already exists.");throw i}return Vl(a)}function Jl(e){return Yl(Xl(),e)}function Xl(){const e=function(e){return"~"===e?on():e.startsWith("~/")?hn(on(),e.slice(2)):pn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Qt(e)||Xt(e,{recursive:!0}),nn(e)}function Yl(e,t){const n=t?.trim(),a=n?mn(n)?n:hn(e,n):e;let r;try{r=nn(pn(a))}catch{throw new ad(400,"Workspace path does not exist.")}const i=fn(e,r);if(i.startsWith("..")||mn(i))throw new ad(403,"Path is outside the workspace root.");if(!rn(r).isDirectory())throw new ad(400,"Workspace path is not a directory.");return r}function Zl(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var eu=1e6;async function tu(e,t,n){const a=await bd.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new ad(404,"Chat not found.");if(!a.workingDirectory)throw new ad(400,"Chat does not have a working directory.");const r=Jl(a.workingDirectory),i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()),n=/^(.*)#L(\d+)(?:-\d+)?$/i.exec(t);if(n)return{line:Number(n[2]),path:n[1]};const a=/^(.+):(\d+)(?::\d+)?$/.exec(t);return a&&!/^[A-Za-z]:\\/.test(t)?{line:Number(a[2]),path:a[1]}:{path:t}}(t),s=await nu(r,i.path),o=await au(s,r),d=n??i.line??null,c=Math.min(o.size,eu),l=c?await async function(e,t){const n=await In(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:ru(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>eu}}async function nu(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new ad(400,"File path is required.");const a=await An(e),r=mn(n)?n:pn(a,n);let i;try{i=await An(r)}catch{throw new ad(404,"File does not exist.")}return function(e,t){const n=fn(e,t);if(n.startsWith("..")||mn(n))throw new ad(403,"Path is outside the chat working directory.")}(a,i),i}async function au(e,t){const n=await Mn(e);if(!n.isFile())throw new ad(400,"Workspace path is not a file.");const a=t?await An(t):null;return{name:dn(e),path:e,relativePath:a&&fn(a,e)||dn(e),size:n.size}}function ru(e){const t=un(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 iu=new Map,su=new Map,ou=new Map,du=new Map,cu=new Map,lu=new Map,uu=new Map,mu=new Map;function hu(e,t){return async function(e,t){const n=lu.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);lu.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),lu.get(e)===i&&lu.delete(e)}}(e,async()=>bd.chatMessage.create({data:{...t,chatId:e,sequence:await km(e)}}))}function fu(e,t){const n=(uu.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return uu.set(e,a),a.finally(()=>{uu.get(e)===a&&uu.delete(e)}),n}async function pu(){await el(),await async function(){const e=await bd.chat.findMany({where:{accountId:{not:null},externalThreadId:{not:null},status:{not:"ARCHIVED"}},select:{accountId:!0,externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}}),t=[...new Set(e.map(e=>e.accountId).filter(e=>!!e))];if(!t.length)return;const n=new Map;await Promise.all(t.map(async e=>{n.set(e,await Tu(e))}));for(const a of e){if(!a.accountId||!a.externalThreadId)continue;const e=n.get(a.accountId)?.get(a.externalThreadId),t=Su(a,e);if(t){const e=await bd.chat.update({where:{id:a.id},data:t});Cm(a.id,"chat.updated",fh(e))}}}()}function gu(){return bd.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function vu(e){const t=await bd.chat.findUnique({where:{id:e}});if(!t)throw new ad(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?Eu(e,e.accountId,e.externalThreadId):e}(t)}async function wu(e,t){const n=await vu(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await bd.codexAccount.findUnique({where:{id:t}});if(!n)throw new ad(400,"Account not found.");if("CONNECTED"!==n.status)throw new ad(400,"Authenticate the account before attaching it to a chat.");return n.id}(n,t.accountId),r=void 0!==a&&a!==n.accountId,i=void 0===t.collaborationMode?void 0:Nu(t.collaborationMode),s=void 0!==i&&i!==Iu(n.collaborationMode),o=void 0===t.permissionMode?void 0:ku(t.permissionMode),d=void 0!==o&&o!==Cu(n.permissionMode);if(void 0!==t.workingDirectory)throw new ad(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new ad(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new ad(400,"Wait for the current run to finish before changing modes.");const c=await bd.chat.update({where:{id:e},data:{accountId:a,autoRotateAccount:t.autoRotateAccount,model:void 0===t.model?void 0:xu(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:yu(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:bu(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:s?null:void 0}});return r&&a&&c.externalThreadId&&tl(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),void 0!==t.title&&async function(e){if(!e.accountId||!e.externalThreadId)return;const t=await bd.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await xh(Bd.getRuntime({accountId:t.id,command:t.command,args:yh(t.args),workingDirectory:null,environment:jd(t.environment)}),e.externalThreadId,e.title)}(c).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),d&&void 0!==o&&(!function(e,t){for(const n of su.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...iu.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=rh(t);n.runtime.respondToServerRequest(n.rpcId,a),iu.delete(ch(e,n.requestId));const r=await bd.chatMessage.findUnique({where:{id:n.messageId}});r&&Cm(e,"message.updated",hh(await bd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:dh(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function xu(e){if(null===e)return null;const t=e.trim();if(!t)throw new ad(400,"Runtime option cannot be empty.");return t}function yu(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new ad(400,"reasoningEffort is invalid.");return e}function bu(e){if(null===e||"fast"===e||"flex"===e)return e;throw new ad(400,"serviceTier is invalid.")}function Nu(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new ad(400,"collaborationMode is invalid.")}function Iu(e){return"plan"===e?"plan":"default"}function ku(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new ad(400,"permissionMode is invalid.")}function Cu(e){return"fullAccess"===e?"fullAccess":"default"}function Au(e){const t=gh(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}function Mu(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}async function Eu(e,t,n){const a=Su(e,(await Tu(t)).get(n));if(!a)return e;const r=await bd.chat.update({where:{id:e.id},data:a});return Cm(e.id,"chat.updated",fh(r)),r}async function Tu(e){return function(...e){const t=new Map;for(const n of e)for(const[e,a]of n){const n=t.get(e);t.set(e,{title:a.title??n?.title??null,updatedAt:a.updatedAt??n?.updatedAt??null})}return t}(await gl(Vd()),await gl(hn(Hd(e),"session_index.jsonl")))}function Su(e,t){if(!t)return null;const n={};return!t.title||gh(e.title)===gh(t.title)||Au(t.title)&&!Au(e.title)||(n.title=t.title),t.updatedAt&&e.lastActivityAt.getTime()!==t.updatedAt.getTime()&&(n.lastActivityAt=t.updatedAt),Object.keys(n).length?n:null}async function Pu(e,t=0,n=50){const a=await vu(e);await async function(e){const t=await bd.chatRun.findMany({where:{chatId:e,status:{in:["CANCELLED","COMPLETED","FAILED"]}},select:{id:!0,status:!0}});for(const n of t){const t="FAILED"===n.status?"FAILED":"COMPLETED";await bd.chatMessage.updateMany({where:{chatId:e,kind:{in:["CHAT","COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:n.id,status:{in:["PENDING","STREAMING"]}},data:{completedAt:new Date,status:t}})}}(e);const r=await async function(e,t,n){const a=await bd.chatMessage.findMany({where:{chatId:e.id},orderBy:{sequence:"asc"}}),r="RUNNING"===e.status?[]:await async function(e){if(!e.externalThreadId)return[];const t=await async function(e){if(!e.accountId||!e.externalThreadId)return[];const t=await bd.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=Bd.getRuntime({accountId:t.id,command:t.command,args:yh(t.args),workingDirectory:null,environment:jd(t.environment)});try{const t=qu((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return qu((await n.request("thread/read",{includeTurns:!0,threadId:e.externalThreadId},3e4)).result)}catch{return[]}}(e);if(t.length)return t;const n=await async function(e,t){const n=await Hl(e);if(n){const e=await Nl(n,t);if(e)return e}const a=await bl(t);return a?Nl(a,t):null}(e.id,e.externalThreadId);return n?n.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,metadata:e.metadata,kind:e.kind,rawPayload:e.rawPayload,role:e.role,source:"session"}}(e)):[]}(e);return(r.length?function(e,t,n){const a=n.filter(Du),r=new Set,i=new Set(t.map(e=>e.role));let s=Math.max(0,...n.map(e=>e.sequence));const o=t.map((t,n)=>{const i=function(e,t,n){return t.find(t=>!n.has(t.id)&&t.role===e.role&&e.itemId&&t.itemId===e.itemId)??t.find(t=>!n.has(t.id)&&t.role===e.role&&e.turnId&&t.turnId===e.turnId)??t.find(t=>!n.has(t.id)&&t.role===e.role)??null}(t,a,r);return i&&r.add(i.id),function(e,t,n,a,r){const i=t.createdAt??a?.createdAt??e.createdAt,s=t.completedAt??t.createdAt??a?.completedAt;return{chatId:e.id,completedAt:s,content:t.content,createdAt:i,id:a?.id??Lu(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?lh(t.metadata):null)??a?.metadata??Ru(t),rawPayload:lh(t.rawPayload??a?.rawPayload??null),requestId:a?.requestId??null,role:t.role,runId:a?.runId??null,sequence:r,status:"FAILED"===a?.status?"FAILED":"COMPLETED",turnId:t.turnId??a?.turnId??null}}(e,t,n,i,i?.sequence??++s)}),d=n.filter(e=>!r.has(e.id)).filter(e=>function(e,t){return"CHAT"!==e.kind||("COMPLETED"!==e.status||(!Du(e)||!t.has(e.role)))}(e,i)).map(hh);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(hh)).filter(e=>e.sequence>t).sort((e,t)=>e.sequence-t.sequence).slice(0,n)}(a,t,Math.min(Math.max(n,1),200));return{data:r,nextCursor:r.length?r[r.length-1].sequence:null}}function Du(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function Lu(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function Ru(e){return{kind:"codexTranscript",source:e.source}}function qu(e){return function(e){const t=Ud(e),n=Ud(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=zu(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=zd(e.id)??zd(e.turnId)??zd(e.turn_id)??null,n=ju(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=ju(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(zu(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=zd(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=zd(e.type)?.replace(/[_\s-]+/g,"").toLowerCase();return"usermessage"===n||"inputmessage"===n?"USER":"agentmessage"===n||"assistantmessage"===n?"ASSISTANT":null}(e);if(!n)return null;const a=function(e){return function(e,t){return[e,...$u(t.images),...$u(t.local_images),...$u(t.localImages)].filter(Boolean).join("\n\n")}(uh(e.text)??uh(e.message)??uh(e.output)??Ou(e.content)??"",e)}(e);return!a.trim()||dl(a)?null:{completedAt:ju(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:ju(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:zd(e.id)??zd(e.itemId)??zd(e.item_id)??null,rawPayload:Fu(e),role:n,source:"runtime",turnId:zd(e.turnId)??zd(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function Ou(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=Ud(e);return uh(t?.text)??uh(t?.content)??uh(t?.message)??_u(t)??""}).join("");return t.length?t:void 0}function $u(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Uu(e):_u(Ud(e))).filter(e=>!!e):[]}function _u(e){return e?Uu(zd(e.url)??zd(e.image_url)??zd(e.path)??zd(e.filePath)):null}function Uu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function zu(e){return Array.isArray(e)?e.map(e=>Ud(e)).filter(e=>!!e):null}function ju(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Fu(e){return{id:zd(e.id),itemId:zd(e.itemId)??zd(e.item_id),role:zd(e.role),type:zd(e.type)}}async function Bu(e,t,n){await vu(e);const a=ch(e,t),r=iu.get(a);if(!r)throw new ad(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new ad(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new ad(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new ad(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),iu.delete(a);const s=hh(await bd.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:dh(await oh(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return Cm(e,"message.updated",s),s}async function Gu(e,t){let n=await vu(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new ad(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Wu(n));const a=t.accountId??n.accountId;if(!a)throw new ad(400,"Choose a Codex account before sending messages.");const r=await bd.codexAccount.findUnique({where:{id:a}});if(!r)throw new ad(400,"Account not found.");if("CONNECTED"!==r.status)throw new ad(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new ad(400,"Select a working directory before sending messages.");const i=Jl(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new ad(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 ad(400,"Attachment kind is invalid.");n.push(await em(e,a))}else n.push(Zu(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 ad(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!Au(t))return null;const a=((await bd.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,function(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}(t.content,s));await async function(e,t){const n=t?Mu(t):null;if(!n)return null;const a=await bd.chat.findUnique({where:{id:e},select:{title:!0}});return a&&Au(a.title)?(await Nh(e,n),n):null}(e,d);const c=void 0===t.collaborationMode?void 0:Nu(t.collaborationMode),l=c??Iu(n.collaborationMode),u=Cu(n.permissionMode),m=new Date;if("RUNNING"===n.status)return"steer"===t.delivery?async function({accountId:e,attachments:t,chat:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,startedAt:d,workingDirectory:c}){const l=Ku(n.id);if(!l?.runtime)throw new ad(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new ad(409,"The active turn has not published a thread yet.");const m=l.turnId??await om(l.runtime,u);if(!m)throw new ad(409,"The active turn has not published a turn id yet.");const h=await bd.chat.findUnique({where:{id:n.id}}),f=await bm(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=Tm(await async function(e,t,n,a){async function r(r){const i=pm(n,a),s=void 0===t.collaborationMode?[t]:[t,sm(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&&vm(d))break;if(gm(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 om(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...xm(a,f)},r,t))??m,l.externalThreadId=u;const p=await hu(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:mh(nm({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await bd.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return Cm(n.id,"chat.updated",fh(g)),Cm(n.id,"message.created",hh(p)),{message:hh(p),assistantMessage:null,runId:l.runId,status:"RUNNING",delivery:"steer",steered:!0}}({accountId:a,attachments:s,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,startedAt:m,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,chat:a,collaborationMode:r,content:i,messageContent:s,metadata:o,permissionMode:d,queuedAt:c,workingDirectory:l}){const u=Ut(),m=await hu(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:mh(nm({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=ou.get(e)??[];ou.set(e,[...n,t])}(a.id,{accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:r,content:i,createdAt:c,id:u,messageId:m.id,metadata:o,permissionMode:d,workingDirectory:l});const h=await bd.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return Cm(a.id,"chat.updated",fh(h)),Cm(a.id,"message.created",hh(m)),{message:hh(m),assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:d,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,queuedAt:m,workingDirectory:i});const h=await hu(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:mh(nm(t.metadata,s))});Cm(e,"message.created",hh(h));const f=await Hu({accountId:a,attachments:s,automaticTitleSeed:d,chatId:e,collaborationMode:l,content:t.content,metadata:t.metadata??{},permissionMode:u,requestedCollaborationMode:c,startedAt:m,workingDirectory:i});return{message:hh(h),assistantMessage:hh(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function Hu({accountId:e,attachments:t,automaticTitleSeed:n,chatId:a,collaborationMode:r,content:i,metadata:s,permissionMode:o,requestedCollaborationMode:d,startedAt:c,workingDirectory:l}){const u=await bd.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:mh({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await hu(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return Cm(a,"chat.updated",fh(await bd.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),Cm(a,"message.created",hh(m)),Cm(a,"run.status",{runId:u.id,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(async function(e,t){const n=du.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);du.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),du.get(e)===i&&du.delete(e)}})(a,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=await bd.codexAccount.findUnique({where:{id:a}}),u=await bd.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=Cu(u.permissionMode),h=await bd.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});Cm(e,"message.updated",hh(h)),await bd.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),Cm(e,"run.status",{runId:t,status:"RUNNING"}),u.externalThreadId&&await tl(e,l.id);const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};su.set(t,f);const p=Bd.getRuntime({accountId:l.id,command:l.command,args:yh(l.args),workingDirectory:null,environment:jd(l.environment)});f.runtime=p;let g="";const v=new Map;let w,x=u.externalThreadId,y=null,b=null;const N=p.onEvent(n=>{(function(e,t,n){const a=Pm(e);if(t&&a&&a!==t)return!1;const r=Dm(e);return!n||!r||r===n})(n,x,w)&&fu(t,()=>async function(e,t){const n=function(e){const t=Xm(e);if(t){const e=Ud(t.params),n=Ud(t.info)??Ud(e?.info)??e??t;return Jm(Ym(n,["last_token_usage","lastTokenUsage"])??Ym(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Ud(e.params),a=Ud(n?.event),r=Ud(n?.usage)??Ud(a?.usage)??(Qm(e.method)?n:void 0);return r?Jm(r):null}(t);n&&Cm(e.chatId,"context.updated",n);if(function(e){return!!Xm(e)||Qm(e.method)}(t))return;if(function(e){const t=Ud(e.params),n=Ud(t?.payload)??Ud(t?.event);return[e.method,zd(t?.type),zd(n?.type),zd(n?.event)].some(e=>_m(e??"").includes("compact"))}(t))return void(await Mm({chatId:e.chatId,completedAt:new Date,content:Wm(t),itemId:`context-compaction:${Dm(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Vm(t)?"STREAMING":"COMPLETED",turnId:Dm(t)}));const a=t.method??"",r=Ud(t.params),i=Rm(t),s=_m(zd(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Ud(e.params),n=Ud(e.result),a=Ud(t?.event);return vh(t)??vh(a)??vh(n)}(t);return void(n&&await Nh(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=uh(r?.delta)??uh(Ud(r?.event)?.delta);if(!n)return;const a=Lm(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Mm({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:zd(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:Dm(t)});return void Cm(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&Um(s))return void(await Mm({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:Lm(t),kind:"CHAT",metadata:{kind:"assistant",phase:zd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:Dm(t)}));if("item/completed"===a&&Um(s)){const n=function(e){if(!e)return"";const t=uh(e.text)??uh(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>uh(Ud(e)?.text)??"").filter(Boolean).join("")}(i)||Em(t);if(!n)return;const a=Lm(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Mm({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:zd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:Dm(t)}))}if(a.startsWith("item/reasoning/")||_m(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Lm(t)??`${n.toLowerCase()}:${Dm(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 Mm({chatId:e.chatId,content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:zm(t)?"COMPLETED":"STREAMING",turnId:Dm(t)})}(e,t,"THINKING",{content:Om(t,i),delta:qm(t),metadata:{kind:"thinking",status:Fm(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Ud(t.params)??{},a="item/plan/delta"===t.method?qm(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Ud(e)).filter(e=>!!e).map(e=>({status:zd(e.status)??"pending",step:zd(e.step)??""})).filter(e=>e.step),i=zd(n.explanation),s=Dm(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Lm(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 Mm({chatId:e.chatId,content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Ud(t.params)??{},r=n??a,i=Lm(t)??`command:${Dm(t)??"turn"}`,s=`COMMAND:${i}`,o=qm(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:uh(r.output)??uh(r.aggregatedOutput)??uh(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=zd(r.command)??zd(a.command)??"command",l=Fm(r,t.method??"");await Mm({chatId:e.chatId,completedAt:zm(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Hm(r.actions)??Hm(r.commandActions),command:c,cwd:zd(r.cwd)??zd(a.cwd),durationMs:Km(r.durationMs)??Km(r.duration_ms),exitCode:Km(r.exitCode)??Km(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":zm(t)?"COMPLETED":"STREAMING",turnId:Dm(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=Ud(t.params)??{},r=n??a,i=Lm(t)??`file-change:${Dm(t)??"turn"}`,s=Bm(r)??Bm(a),o=Hm(r.changes)??Hm(a.changes)??[],d=function(e,t){const n=[zd(e.path),zd(e.filePath),zd(e.file_path),...t.flatMap(e=>{const t=Ud(e);return[zd(t?.path),zd(t?.filePath),zd(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Mm({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Km(r.additions)??Gm(s,"+"),changes:o,deletions:Km(r.deletions)??Gm(s,"-"),diff:s,kind:"fileChange",paths:d,status:Fm(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:zm(t)?"COMPLETED":"STREAMING",turnId:Dm(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=Ud(t.params)??{},a=zd(n.requestId)??zd(n.id);if(!a)return;iu.delete(ch(e,a));const r=await bd.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;Cm(e,"message.updated",hh(await bd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:dh(r.metadata,{result:void 0===n.result?null:lh(n.result),resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}(e.chatId,t));("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Ud(t.params),a=zd(Ud(n?.error)?.message)??zd(n?.message)??t.error?.message??"Codex runtime error.";await Mm({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${Dm(t)??Date.now()}`,kind:"ERROR",metadata:{details:lh(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:Dm(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>Am("Codex event projection failed.",e))}),I=p.onServerRequest(n=>{(function(e,t,n){const a=Ud(e.params),r=zd(a?.threadId);if(t&&r&&r!==t)return!1;const i=zd(a?.turnId);return!n||!i||i===n})(n,x,w)&&fu(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Ud(t.params)??{},r=Qd(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?_m(e).includes("permissions")?"permissions":"approval":_m(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:zd(n.message),method:e,mode:zd(n.mode),questions:th(n.questions),raw:lh(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Hm(n.availableDecisions),changes:Hm(n.changes),command:zd(n.command),cwd:zd(n.cwd),itemId:zd(n.itemId),kind:a,method:e,raw:lh(r),reason:zd(n.reason)??zd(n.message),requestId:t,requestKind:a,status:"pending",turnId:zd(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=rh(i);return e.runtime.respondToServerRequest(t.id,n),void(await Mm({chatId:e.chatId,completedAt:new Date,content:ah(s),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,result:n,resolvedAt:(new Date).toISOString(),status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",turnId:zd(a.turnId),itemId:zd(a.itemId)}))}const o=await Mm({chatId:e.chatId,content:ah(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:zd(a.turnId),itemId:zd(a.itemId)});iu.set(ch(e.chatId,r),{chatId:e.chatId,messageId:o.id,requestKind:i,requestId:r,rpcId:t.id,runtime:e.runtime})}({chatId:e,permissionMode:()=>f.permissionMode,runId:t,runtime:p},n)).catch(e=>Am("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=Ud((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=zd(Ud(r?.thread)?.id)??zd(r?.threadId)??zd(r?.thread_id)??t;if(!i)throw new Error("Codex did not return a thread id.");return i}(p,u.externalThreadId,o),f.externalThreadId=x,function({chatId:e,cwd:t,runtime:n,seed:a,threadId:r}){const i=a?.trim();if(!i)return;const s=Mu(i),o=new Set(["untitled chat","conversation",...s?[gh(s)]:[]]);(async()=>{s&&await wh(n,e,r,s,o);const a=await async function(e,{cwd:t,seed:n}){try{const a=Ud((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return ph(zd(a?.title)??zd(a?.name)??zd(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await wh(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await rm(t)&&(f.interruptRequested=!0);const n=await bm(p,u.model,u.reasoningEffort);y=new AbortController,b=p.waitForEvent(e=>function(e){const t=e.method??"";return"turn/completed"===t||"turn/failed"===t||"turn/interrupted"===t||"turn/cancelled"===t||"turn/canceled"===t||t.startsWith("turn/")&&(t.includes("completed")||t.includes("failed")||t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled"))}(e)&&Pm(e)===x&&(!w||Dm(e)===w),6e5,y.signal);const a=await async function(e,t,n,a){const r=pm(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,!gm(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(p,{threadId:x,cwd:o,...u.model?{model:u.model}:{},...u.reasoningEffort?{effort:u.reasoningEffort}:{},...u.serviceTier?{serviceTier:u.serviceTier}:{},...wm(d,n,m),metadata:i},r,s);w=Tm(a),f.turnId=w,w&&(await bd.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await rm(t))&&(f.interruptRequested=!0,await im(p,w,x)));const v=await b;if(await async function(e){await(uu.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new am(jm(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(jm(v));const N=await async function(e,t,n){try{const a=Ud((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return Sm((Array.isArray(a?.data)?a.data:[]).map(e=>Ud(e)).filter(e=>!!e).filter(e=>!n||zd(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||Em(v)||Em(a)||g,I=new Date,k=await bd.chatMessage.update({where:{id:h.id},data:{content:N,status:"COMPLETED",rawPayload:mh(v),completedAt:I}});await sh(e,t,"COMPLETED"),await ih(e,t,"Codex completed the turn."),await bd.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const C="plan"===d&&await async function(e,t){return(await bd.chatMessage.findMany({where:{chatId:e,runId:t,OR:[{kind:"PLAN"},{kind:"CHAT",role:"ASSISTANT"}]}})).some(e=>{const t=e.content.trim();return!(!t||"Planning..."===t)&&("CHAT"===e.kind?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(t):"result"===Ud(e.metadata)?.presentation)})}(e,t),A=await bd.chat.update({where:{id:e},data:{collaborationMode:C?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:I,updatedAt:I}});Cm(e,"chat.updated",fh(A)),Cm(e,"message.completed",hh(k)),Cm(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t,n){if(!n)return;const a=await async function(e,t){try{const n=vh(Ud((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=Ud((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return vh((bh(n?.data)??bh(n?.items)??bh(n?.threads)??[]).find(e=>zd(e.id)===t))}catch{return null}}(e,n);a&&await Nh(t,a)}(p,e,x),await Eu(await bd.chat.findUnique({where:{id:e}})??A,l.id,x)}catch(k){y?.abort(),await(b?.catch(()=>{}));const n=k instanceof Error?k.message:"Codex run failed.";if(await ih(e,t,n),k instanceof am){await sh(e,t,"COMPLETED");const a=new Date,r=await bd.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:dh(h.metadata,{interrupted:!0,kind:"assistant"})}});return await bd.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),Cm(e,"chat.updated",fh(await bd.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Cm(e,"message.completed",hh(r)),void Cm(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await bd.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await sh(e,t,"FAILED"),await bd.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),Cm(e,"chat.updated",fh(await bd.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Cm(e,"message.failed",{...hh(r),error:n}),Cm(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y?.abort(),N(),I(),su.delete(t),uu.delete(t),ou.has(e)?function(e){const t=(cu.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(Ku(e))return;const t=await bd.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=ou.get(e)??[];if(!t)return ou.delete(e),null;n.length?ou.set(e,n):ou.delete(e);return t}(e);if(!n)return;try{const a=t.autoRotateAccount?await Wu(t):t,r=a.accountId??n.accountId,i=await bd.codexAccount.findUnique({where:{id:r}});if(!i||"CONNECTED"!==i.status)throw new Error("Queued message account is no longer connected.");const s=new Date,o=await Hu({accountId:r,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:Cu(a.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:s,workingDirectory:n.workingDirectory});await Yu(e,n.messageId,{dequeuedAt:s.toISOString(),queueStatus:"running",runId:o.run.id})}catch(k){await Yu(e,n.messageId,{error:k instanceof Error?k.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});cu.set(e,t),t.finally(()=>{cu.get(e)===t&&cu.delete(e)})}(e):function(e){(async function(e){const t=await bd.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;await Wu(t)})(e).catch(e=>{console.warn("Failed to auto rotate idle chat account.",e instanceof Error?e.message:e)})}(e)}}(e,t,n,a,r,i,s,o,d,c))}(a,u.id,m.id,e,i,s,t,l,r,n),{assistantMessage:m,run:u}}function Ku(e){for(const t of su.values())if(t.chatId===e)return t;return null}async function Wu(e){if(!e.autoRotateAccount||"RUNNING"===e.status||Ku(e.id))return e;const t=await bd.codexAccount.findMany({where:{status:"CONNECTED"},orderBy:{createdAt:"asc"}});if(!t.length)return e;const n=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:Vu(await Gd({accountId:e.id,args:yh(e.args),command:e.command,environment:jd(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(t),a=t.find(t=>t.id===e.accountId),r=a?Qu(n.get(a.id)):-1;if(a&&r>=0)return e;const i=function(e,t){return e.map((e,n)=>({account:e,index:n,score:Qu(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(t,n);if(!i||i.id===e.accountId)return e;if(Qu(n.get(i.id))<0)return e;const s=await bd.chat.update({where:{id:e.id},data:{accountId:i.id}});return Cm(e.id,"chat.updated",fh(s)),s.externalThreadId&&tl(e.id,i.id).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),s}function Vu(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function Qu(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Ju(e.secondary)?"weekly":Ju(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-Xu(e.usedPercent));return t.length?Math.min(...t):0}function Ju(e){return Xu(e?.usedPercent??0)>=100}function Xu(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}async function Yu(e,t,n){const a=await bd.chatMessage.findUnique({where:{id:t}});a&&Cm(e,"message.updated",hh(await bd.chatMessage.update({where:{id:t},data:{metadata:dh(a.metadata,n)}})))}function Zu(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 ad(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 ad(400,"Image attachments must be 6 MB or smaller.");const s=tm(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Ut(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function em(e,t){const n=await async function(e,t){return au(await nu(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Ut(),kind:"file",name:tm(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function tm(e,t){const n=e?.trim();return(n?dn(n):t).slice(0,160)||"attachment"}function nm(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var am=class extends Error{};async function rm(e){return!!(await bd.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function im(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 sm(e,t){const n={...e};return delete n[t],n}async function om(e,t){for(let n=0;n<3;n+=1){const a=await dm(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 dm(e,t){try{const n=Ud((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return cm(lm(n?.data)??lm(n?.items)??lm(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 cm(lm(Ud(Ud(n.result)?.thread)?.turns)??[],!1)}function cm(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>mm(um(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!fm(hm(i)))continue;const e=mm(um(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function lm(e){return Array.isArray(e)?e.map(Ud).filter(e=>!!e):null}function um(e){return zd(e.id)??zd(e.turnId)??zd(e.turn_id)??null}function mm(e){const t=e?.trim();return t||null}function hm(e){return(zd(e.status)??zd(e.turnStatus)??zd(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function fm(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function pm(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={type:"text",text:n,text_elements:[]},s=(e,t)=>[i,...a.map(t=>({type:"image",[e]:t.message.url})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function gm(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 vm(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function wm(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:ym(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function xm(e,t=null){return"plan"!==e?{}:{collaborationMode:ym(e,t)}}function ym(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function bm(e,t,n){const a=Nm(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Ud(Ud((await e.request("config/read",{},3e4)).result)?.config),n=Nm(zd(t?.model));if(r=r??Im(t?.model_reasoning_effort)??Im(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Ud((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=Ud(e),n=Nm(zd(t?.id))??Nm(zd(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Nm(e){const t=e?.trim();return t||null}function Im(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function km(e){return((await bd.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function Cm(e,t,n){Wl(e,t,n)}function Am(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function Mm(e){return async function(e,t){if(!e)return t();const n=mu.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);mu.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),mu.get(e)===i&&mu.delete(e)}}(function(e){return e.requestId?`${e.chatId}:request:${e.requestId}`:e.itemId?`${e.chatId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.chatId}:fallback:${e.fallbackMessageId}`:null}(e),async()=>{const t=await async function(e){if(e.requestId){const t=await bd.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await bd.chatMessage.findFirst({where:{chatId:e.chatId,itemId:e.itemId,kind:e.kind},orderBy:{sequence:"desc"}});if(t)return t}if(e.fallbackMessageId){const t=await bd.chatMessage.findUnique({where:{id:e.fallbackMessageId}});if(!t)return null;if(!e.itemId||!t.itemId||t.itemId===e.itemId)return t}return null}(e),n={completedAt:e.completedAt,content:e.content,itemId:e.itemId??void 0,kind:e.kind,metadata:void 0===e.metadata?void 0:mh(e.metadata),rawPayload:void 0===e.rawPayload?void 0:mh(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=hh(t?await bd.chatMessage.update({where:{id:t.id},data:n}):await hu(e.chatId,n));return Cm(e.chatId,t?"message.updated":"message.created",a),a})}function Em(e){const t=Ud(e.result),n=Ud(e.params),a=Ud(n?.payload)??n??t;return Sm(Ud(n?.turn)??Ud(t?.turn))??uh(t?.text)??uh(t?.content)??uh(a?.text)??uh(a?.content)??uh(a?.delta)??uh(a?.message)??""}function Tm(e){const t=Ud(e.result),n=Ud(e.params);return zd(t?.turnId)??zd(t?.turn_id)??zd(n?.turnId)??zd(n?.turn_id)??zd(Ud(t?.turn)?.id)??zd(Ud(n?.turn)?.id)}function Sm(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Ud(e);return"agentMessage"!==t?.type?null:uh(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Pm(e){const t=Ud(e.params),n=Ud(e.result),a=Ud(t?.event);return zd(t?.threadId)??zd(t?.thread_id)??zd(n?.threadId)??zd(n?.thread_id)??zd(a?.threadId)??zd(a?.thread_id)}function Dm(e){const t=Ud(e.params),n=Ud(e.result),a=Rm(e);return zd(t?.turnId)??zd(n?.turnId)??zd(a?.turnId)??Tm(e)}function Lm(e){const t=Ud(e.params),n=Ud(e.result),a=Rm(e);return zd(t?.itemId)??zd(n?.itemId)??zd(a?.id)}function Rm(e){const t=Ud(e.params),n=Ud(e.result),a=Ud(t?.payload);return Ud(t?.item)??Ud(n?.item)??Ud(a?.item)}function qm(e){const t=Ud(e.params),n=Ud(t?.event);return uh(t?.delta)??uh(t?.text)??uh(t?.output)??uh(n?.delta)??uh(n?.text)}function Om(e,t){const n=Ud(e.params),a=Ud(e.result);return[t,n,Ud(n?.event),Ud(n?.payload),a].map($m).find(e=>!!e?.trim())}function $m(e){if(e)return uh(e.reasoning)??uh(e.reasoningText)??uh(e.reasoning_text)??uh(e.summary)??Ou(e.summary)??Ou(e.content)??uh(e.text)??uh(e.output)}function _m(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Um(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function zm(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function jm(e){const t=Ud(e.params);return zd(Ud(t?.error)?.message)??zd(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Fm(e,t){const n=zd(e?.status);return n?_m(n):t.includes("failed")||t.includes("error")?"failed":zm({method:t})?"completed":"running"}function Bm(e){return uh(e.diff)??uh(e.unifiedDiff)??uh(e.unified_diff)??uh(e.patch)}function Gm(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Hm(e){if(Array.isArray(e))return e.map(lh)}function Km(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Wm(e){const t=_m(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Vm(e){return _m(e.method??"").includes("start")}function Qm(e){const t=_m(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Jm(e,t=e){const n=Zm(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=Zm(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=Zm(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}([Zm(e,["input_tokens","inputTokens"]),Zm(e,["output_tokens","outputTokens"]),Zm(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,i-d),l=Math.max(0,Math.min(100,Math.round(d/i*100)));return{tokenLimit:i,tokensRemaining:c,tokensUsed:d,remainingPercent:Math.max(0,100-l),usedPercent:l}}function Xm(e,t=0){if(t>4)return;const n=Ud(e);if(!n)return;const a=_m(zd(n.type)??""),r=_m(zd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Xm(n[i],t+1);if(e)return e}}function Ym(e,t){for(const n of t){const t=Ud(e[n]);if(t)return t}}function Zm(e,t){for(const n of t){const t=eh(e[n]);if(void 0!==t)return t}}function eh(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 th(e){return Array.isArray(e)?e.map(e=>Ud(e)).filter(e=>!!e).map(e=>({header:zd(e.header),id:zd(e.id)??Ut(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:nh(e.options),question:zd(e.question)??zd(e.header)??"Answer",selectionLimit:Km(e.selectionLimit)??Km(e.selection_limit)})):[]}function nh(e){return Array.isArray(e)?e.map(e=>Ud(e)).filter(e=>!!e).map(e=>({description:zd(e.description),label:zd(e.label)??zd(e.value)??""})).filter(e=>e.label):[]}function ah(e){return"userInput"===e.kind?zd(e.message)??"Codex needs more information before it can continue.":zd(e.reason)??zd(e.command)??"Codex needs approval before it can continue."}function rh(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function ih(e,t,n){const a=await bd.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=Ud(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=ch(e,r.requestId),a=iu.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),iu.delete(t)}Cm(e,"message.updated",hh(await bd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:dh(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function sh(e,t,n){const a=await bd.chatMessage.findMany({where:{chatId:e,kind:{in:["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:t,status:{in:["PENDING","STREAMING"]}}});for(const r of a)Cm(e,"message.updated",hh(await bd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function oh(e){return(await bd.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function dh(e,t){return mh({...Ud(e)??{},...t})}function ch(e,t){return`${e}:${t}`}function lh(e){return JSON.parse(JSON.stringify(e))}function uh(e){return"string"==typeof e&&e.length>0?e:void 0}function mh(e){return JSON.parse(JSON.stringify(e))}function hh(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function fh(e){return{...e,collaborationMode:Iu(e.collaborationMode),permissionMode:Cu(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function ph(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function gh(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function vh(e){const t=Ud(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=ph(zd(r)??"");if(e)return e}const a=Ud(t.thread);return a?vh(a):null}async function wh(e,t,n,a,r){const i=ph(a);if(!i)return!1;const s=await bd.chat.findUnique({where:{id:t}});if(!s)return!1;const o=gh(s.title);return!(!Au(s.title)&&!r.has(o))&&(await Nh(t,i),xh(e,n,i),!0)}async function xh(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function yh(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function bh(e){return Array.isArray(e)?e.map(e=>Ud(e)).filter(e=>!!e):null}async function Nh(e,t){Cm(e,"chat.updated",fh(await bd.chat.update({where:{id:e},data:{title:t}})))}var Ih=Sn({action:()=>Ch,loader:()=>kh});async function kh({request:e}){try{return sd(e,["GET"]),await Cd(e),rd(await async function(){const e=await gu();return e.length?(pu().catch(e=>{console.warn("Failed to refresh local chat index.",e instanceof Error?e.message:e)}),e):(await pu(),gu())}())}catch(t){return fd(t)}}async function Ch({request:e}){try{sd(e,["POST"]),await Cd(e);const t=await od(e);return rd(await async function(e){const t=await bd.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new ad(400,"Account not found.");if("CONNECTED"!==t.status)throw new ad(400,"Authenticate the account before starting a chat.");return bd.chat.create({data:{accountId:e.accountId,autoRotateAccount:e.autoRotateAccount,workingDirectory:Jl(e.workingDirectory),model:void 0===e.model?void 0:xu(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:yu(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:bu(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Nu(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:ku(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:dd(t.accountId,"accountId",{required:!0}),autoRotateAccount:ld(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:dd(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:dd(t.model,"model",{maxLength:160}),reasoningEffort:Ah(t.reasoningEffort,"reasoningEffort"),serviceTier:Ah(t.serviceTier,"serviceTier"),collaborationMode:Ah(t.collaborationMode,"collaborationMode"),permissionMode:Ah(t.permissionMode,"permissionMode"),title:dd(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return fd(t)}}function Ah(e,t){return null===e?null:dd(e,t,{maxLength:80})}var Mh=Sn({action:()=>Th,loader:()=>Eh});async function Eh({request:e,params:t}){try{return sd(e,["GET"]),await Cd(e),rd(await vu(hd(t,"chatId")))}catch(n){return fd(n)}}async function Th({request:e,params:t}){try{await Cd(e);const n=hd(t,"chatId");if("PATCH"===e.method){const t=await od(e);return rd(await wu(n,{accountId:dd(t.accountId,"accountId"),autoRotateAccount:ld(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:dd(t.model,"model",{maxLength:160}),reasoningEffort:Sh(t.reasoningEffort,"reasoningEffort"),serviceTier:Sh(t.serviceTier,"serviceTier"),collaborationMode:Sh(t.collaborationMode,"collaborationMode"),permissionMode:Sh(t.permissionMode,"permissionMode"),title:dd(t.title,"title",{maxLength:160}),workingDirectory:dd(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return rd(await async function(e){return await vu(e),bd.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));id(e.method)}catch(n){return fd(n)}}function Sh(e,t){return null===e?null:dd(e,t,{maxLength:80})}var Ph=Sn({loader:()=>Dh});async function Dh({request:e,params:t}){try{return sd(e,["GET"]),await Cd(e),rd(await async function(e){const t=await vu(e);return t.externalThreadId?{usage:await nl(t.id,t.externalThreadId)}:{usage:null}}(hd(t,"chatId")))}catch(n){return fd(n)}}var Lh=Sn({loader:()=>Rh});async function Rh({request:e,params:t}){try{sd(e,["GET"]),await Cd(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new ad(400,"path is required.");return rd(await tu(hd(t,"chatId"),a,md(n,"line",0)||null))}catch(n){return fd(n)}}var qh=En(vn);async function Oh(e){const t=await _h(e),n=await Uh(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await zh(t.cwd),r=await jh(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 jh(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Fh(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 $h(e,t){const n=await _h(e);if("RUNNING"===n.status)throw new ad(409,"Git actions are disabled while Codex is running.");if(!(await Uh(n.cwd)))throw new ad(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Bh(t.branch);a=await Fh(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Bh(t.branch);await Fh(n.cwd,["check-ref-format","--branch",e]),a=await Fh(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new ad(400,"Commit message is required.");await Fh(n.cwd,["add","-A"]),a=await Fh(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Fh(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new ad(400,"Unsupported git action.");a=await jh(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Fh(n.cwd,["push"]):await async function(e){await Fh(e,["remote","get-url","origin"]);const t=await zh(e);if(!t)throw new ad(400,"Cannot push while detached from a branch.");return Fh(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Hh(t.action),output:a,status:await Oh(e)}}async function _h(e){const t=await bd.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new ad(404,"Chat not found.");if(!t.workingDirectory)throw new ad(400,"Chat does not have a working directory.");return{cwd:Jl(t.workingDirectory),status:t.status}}async function Uh(e){return jh(e,["rev-parse","--show-toplevel"])}async function zh(e){return await jh(e,["symbolic-ref","--quiet","--short","HEAD"])??await jh(e,["rev-parse","--short","HEAD"])}async function jh(e,t){try{return await Fh(e,t)}catch{return null}}async function Fh(e,t){try{const n=await qh("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Gh(n.stdout,n.stderr)}catch(n){throw new ad(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Gh("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 Bh(e){const t=e?.trim();if(!t)throw new ad(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new ad(400,"Branch name is invalid.");return t}function Gh(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Hh(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 Kh({request:e,params:t}){try{sd(e,["GET"]),await Cd(e);const n=hd(t,"chatId"),a=hd(t,"operation"),r=new URL(e.url);if("status"===a)return rd(await Oh(n));if("branches"===a)return rd(await async function(e){const t=await _h(e);if(!(await Uh(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await zh(t.cwd);return{branches:(await Fh(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 jh(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return rd(await async function(e,t){const n=await _h(e);if(!(await Uh(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Gh(await jh(n.cwd,["diff","--stat",...a]),await jh(n.cwd,["diff","--cached","--stat",...a]));return{diff:Gh(await jh(n.cwd,["diff","--no-ext-diff",...a]),await jh(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new ad(404,"Git operation not found.")}catch(n){return fd(n)}}async function Wh({request:e,params:t}){try{if(sd(e,["POST"]),await Cd(e),"action"!==hd(t,"operation"))throw new ad(404,"Git operation not found.");const n=await od(e),a={action:Vh(n.action),branch:dd(n.branch,"branch",{maxLength:240}),message:dd(n.message,"message",{maxLength:5e3})};return rd(await $h(hd(t,"chatId"),a))}catch(n){return fd(n)}}function Vh(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new ad(400,"action is invalid.")}async function Qh({request:e,params:t}){try{sd(e,["GET"]),await Cd(e);const n=new URL(e.url);return rd(await Pu(hd(t,"chatId"),md(n,"afterSequence",0),md(n,"limit",50)))}catch(n){return fd(n)}}async function Jh({request:e,params:t}){try{sd(e,["POST"]),await Cd(e);const n=await od(e),a={content:Yh(n.content),accountId:dd(n.accountId,"accountId"),attachments:Zh(n.attachments),collaborationMode:af(n.collaborationMode,"collaborationMode"),delivery:Xh(n.delivery),metadata:ud(n.metadata,"metadata")};return rd(await Gu(hd(t,"chatId"),a),{status:201})}catch(n){return fd(n)}}function Xh(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new ad(400,"delivery is invalid.")}}function Yh(e){if(null==e)return"";if("string"!=typeof e)throw new ad(400,"content must be a string.");if(e.length>4e4)throw new ad(400,"content must be 40000 characters or fewer.");return e.trim()}function Zh(e){if(void 0!==e){if(!Array.isArray(e))throw new ad(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new ad(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:ef(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:tf(n.mimeType,`attachments[${t}].mimeType`,80),name:tf(n.name,`attachments[${t}].name`,160),size:nf(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:tf(n.name,`attachments[${t}].name`,160),path:ef(n.path,`attachments[${t}].path`,4096),size:nf(n.size,`attachments[${t}].size`)};throw new ad(400,`attachments[${t}].kind is invalid.`)})}}function ef(e,t,n){if("string"!=typeof e||!e.trim())throw new ad(400,`${t} is required.`);if(e.length>n)throw new ad(400,`${t} is too large.`);return e}function tf(e,t,n){if(null!=e){if("string"!=typeof e)throw new ad(400,`${t} must be a string.`);if(e.length>n)throw new ad(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function nf(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new ad(400,`${t} must be a positive number.`);return e}}function af(e,t){return null===e?null:dd(e,t,{maxLength:80})}async function rf({request:e,params:t}){try{return sd(e,["POST"]),await Cd(e),rd(await async function(e){const t=await vu(e);if("RUNNING"!==t.status)throw new ad(409,"There is no running task to stop.");const n=await bd.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new ad(409,"There is no active run to stop.");const a=new Date;await bd.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=su.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await im(r.runtime,r.turnId,r.externalThreadId??t.externalThreadId)),{chatId:e,runId:n.id,status:n.status,message:r?.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(hd(t,"chatId")))}catch(n){return fd(n)}}async function sf({request:e,params:t}){try{sd(e,["POST"]),await Cd(e);const n=await od(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new ad(400,"kind must be approval, permissions, or userInput.")}(n.kind);return rd(await Bu(hd(t,"chatId"),hd(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return fd(n)}}async function of({request:e}){try{return sd(e,["GET"]),await Cd(e),rd(await Vl(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return fd(t)}}async function df({request:e}){try{sd(e,["POST"]),await Cd(e);const t=await od(e),n={parentPath:dd(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:dd(t.name,"name",{required:!0,maxLength:255})};return rd(await Ql(n.parentPath,n.name),{status:201})}catch(t){return fd(t)}}var cf={entry:{module:"/assets/entry.client-BQZeV9JD.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.js"],css:[]},routes:{root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!0,module:"/assets/root-B6ikjQMc.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.js","/assets/document-title-C2ykzN2o.js","/assets/session-provider-LuURNNCq.js"],css:["/assets/root-KOlmIkbz.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/connect-C_Nz7Dlc.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/label-3ZcIm6vU.js","/assets/session-provider-LuURNNCq.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-VeZzc2bX.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-iKMZyGQn.js","/assets/label-3ZcIm6vU.js","/assets/document-title-C2ykzN2o.js","/assets/session-provider-LuURNNCq.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/home-BynJN9xe.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-iKMZyGQn.js","/assets/label-3ZcIm6vU.js","/assets/document-title-C2ykzN2o.js","/assets/session-provider-LuURNNCq.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/chat-lT5RuwNC.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-iKMZyGQn.js","/assets/label-3ZcIm6vU.js","/assets/document-title-C2ykzN2o.js","/assets/session-provider-LuURNNCq.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/health-OjIoaxn7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.status-FGYJfLVM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.exchange-CkPWDiGV.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.session-DOeXMy_2.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts-x_2c5-qG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.export-CwjXUcyG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-Km-76sRE.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-BksU0sQ7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-ChGZGvfx.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.models-DGbCmT_9.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.rate-limits-DZh4HPLO.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate-Bp51NHGy.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate.callback-DLgNMRyd.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats-DZ_6Q7rY.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId-BEX87qHo.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.context-v4G0lNKq.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.files-BrN7O-wM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.git._operation-CiUW8Knm.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.messages-cDawTuvN.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.interrupt-2DlVPDlX.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.server-requests._requestId.respond-CTlCffOk.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.workspaces.directories-nVoleT74.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-a5a0eaab.js",version:"a5a0eaab",sri:void 0},lf="build/client",uf="/",mf={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},hf=!0,ff=!1,pf=[],gf={mode:"lazy",manifestPath:"/__manifest"},vf="/",wf={module:Pn},xf={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:va},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ta},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:Pa},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:Xo},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Zo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:td},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:pd},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:Ld},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:qd},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:$d},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:Ac},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Sc},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Dc},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Rc},"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:$c},"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:Gc},"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:Kc},"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:Vc},"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:Jc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Ih},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Mh},"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:Ph},"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:Lh},"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:Sn({action:()=>Wh,loader:()=>Kh})},"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:Sn({action:()=>Jh,loader:()=>Qh})},"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:Sn({action:()=>rf})},"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:Sn({action:()=>sf})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:Sn({action:()=>df,loader:()=>of})}},yf=!1;export{yf as allowedActionOrigins,cf as assets,lf as assetsBuildDirectory,uf as basename,wf as entry,mf as future,ff as isSpaMode,pf as prerender,vf as publicPath,gf as routeDiscovery,xf as routes,hf 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 o,ScrollRestoration as s,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useLocation as h,useNavigate as f,useOutletContext as p,useParams as g}from"react-router";import{isbot as v}from"isbot";import{renderToPipeableStream as w}from"react-dom/server";import{Fragment as x,jsx as b,jsxs as y}from"react/jsx-runtime";import{QueryClient as N,QueryClientProvider as I,useMutation as k,useQueries as A,useQuery as C,useQueryClient as E}from"@tanstack/react-query";import{ThemeProvider as 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 W,Check as K,CheckCircle2 as V,CheckIcon as Q,ChevronDown as X,ChevronRight as J,ChevronRightIcon as Y,CircleCheckIcon as Z,Clock as ee,Code2 as te,Copy as ne,Cpu as ae,Download as re,ExternalLink as ie,Eye as oe,File as se,FileCode as de,FileDiff as ce,Folder as le,FolderOpen as ue,FolderPlus as me,Gauge as he,GitBranch as fe,GitCommitHorizontal as pe,Home as ge,Image as ve,Info as we,InfoIcon as xe,KeyRound as be,Laptop as ye,ListChecks as Ne,Loader2 as Ie,Loader2Icon as ke,LockKeyhole as Ae,Mail as Ce,Menu as Ee,MessageSquare as Me,Moon as Te,MoreHorizontal as Se,MoreVertical as Pe,OctagonXIcon as De,PanelLeftIcon as Le,Paperclip as Re,Pencil as $e,PencilLine as qe,PlugZap as _e,Plus as Ue,RefreshCw as ze,RotateCcw as Oe,RotateCw as je,Save as Fe,Search as Be,Settings as Ge,Shield as He,ShieldCheck as We,Square as Ke,SquarePen as Ve,Sun as Qe,Terminal as Xe,Trash2 as Je,TriangleAlertIcon as Ye,Upload as Ze,UserRound as et,X as tt,XIcon as nt,Zap as at}from"lucide-react";import{Tooltip as rt}from"@base-ui/react/tooltip";import{clsx as it}from"clsx";import{twMerge as ot}from"tailwind-merge";import{Button as st}from"@base-ui/react/button";import{cva as dt}from"class-variance-authority";import{Input as ct}from"@base-ui/react/input";import{AlertDialog as lt}from"@base-ui/react/alert-dialog";import{Dialog as ut}from"@base-ui/react/dialog";import{Menu as mt}from"@base-ui/react/menu";import{mergeProps as ht}from"@base-ui/react/merge-props";import{useRender as ft}from"@base-ui/react/use-render";import{ScrollArea as pt}from"@base-ui/react/scroll-area";import{Separator as gt}from"@base-ui/react/separator";import{io as vt}from"socket.io-client";import wt from"react-markdown";import xt from"remark-gfm";import bt from"highlight.js/lib/core";import yt from"highlight.js/lib/languages/bash";import Nt from"highlight.js/lib/languages/css";import It from"highlight.js/lib/languages/go";import kt from"highlight.js/lib/languages/json";import At from"highlight.js/lib/languages/javascript";import Ct from"highlight.js/lib/languages/markdown";import Et from"highlight.js/lib/languages/python";import Mt from"highlight.js/lib/languages/rust";import Tt from"highlight.js/lib/languages/shell";import St from"highlight.js/lib/languages/sql";import Pt from"highlight.js/lib/languages/typescript";import Dt from"highlight.js/lib/languages/xml";import Lt from"highlight.js/lib/languages/yaml";import{Popover as Rt}from"@base-ui/react/popover";import{Switch as $t}from"@base-ui/react/switch";import"dotenv/config";import{createHash as qt,createHmac as _t,randomBytes as Ut,randomUUID as zt,scryptSync as Ot,timingSafeEqual as jt}from"node:crypto";import{Prisma as Ft,PrismaClient as Bt}from"@prisma/client";import{appendFileSync as Gt,chmodSync as Ht,closeSync as Wt,constants as Kt,copyFileSync as Vt,existsSync as Qt,lstatSync as Xt,mkdirSync as Jt,openSync as Yt,readFileSync as Zt,readdirSync as en,readlinkSync as tn,realpathSync as nn,renameSync as an,rmSync as rn,statSync as on,symlinkSync as sn,writeFileSync as dn}from"node:fs";import{homedir as cn}from"node:os";import{basename as ln,dirname as un,extname as mn,isAbsolute as hn,join as fn,relative as pn,resolve as gn,sep as vn}from"node:path";import{execFile as wn,spawn as xn}from"node:child_process";import{access as bn,appendFile as yn,copyFile as Nn,mkdir as In,open as kn,readFile as An,readdir as Cn,realpath as En,stat as Mn}from"node:fs/promises";import{promisify as Tn}from"node:util";var Sn=Object.defineProperty,Pn=(e,t)=>{let n={};for(var a in e)Sn(n,a,{get:e[a],enumerable:!0});return t||Sn(n,Symbol.toStringTag,{value:"Module"}),n},Dn=Pn({default:()=>Rn,streamTimeout:()=>Ln}),Ln=5e3;function Rn(n,a,r,i,o){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((o,s)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&v(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Ln+1e3);const{pipe:h,abort:f}=w(b(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),o(new Response(i,{headers:r,status:a}))},onShellError(e){s(e)},onError(e){a=500,c&&console.error(e)}})})}var $n=({...e})=>{const{theme:t="system"}=T();return b(z,{theme:t,className:"toaster group",icons:{success:b(Z,{className:"size-4"}),info:b(xe,{className:"size-4"}),warning:b(Ye,{className:"size-4"}),error:b(De,{className:"size-4"}),loading:b(ke,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function qn(...e){return ot(it(e))}function _n({delay:e=0,...t}){return b(rt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Un({...e}){return b(rt.Root,{"data-slot":"tooltip",...e})}function zn({...e}){return b(rt.Trigger,{"data-slot":"tooltip-trigger",...e})}function On({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...o}){return b(rt.Portal,{children:b(rt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(rt.Popup,{"data-slot":"tooltip-content",className:qn("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),...o,children:[i,b(rt.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var jn="xedoc";function Fn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${jn}`:jn}(e);R(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=jn}},[t])}var Bn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Gn=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 Hn(e){return ea(e.serverUrl,"/api/auth/session",{token:e.token})}async function Wn(e,t,n){return ea(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Kn(e,t,n={}){return ea(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Vn(e,t){return ea(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function Qn(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return ea(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function Xn(e,t){return ea(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function Jn(e,t,n){return ea(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function Yn(e,t,n=0){return ea(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Zn(e,t,n){return ea(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function ea(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 Gn({method:r,url:a},d)}const o=await i.text(),s=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,ta(e)].filter(Boolean).join("\n"),{cause:d})}}(o,a);if(!i.ok)throw new Bn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,na(s)??ta(o)].filter(Boolean).join("\n"),i.status,a);return s}function ta(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function na(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 aa(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 ra={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function ia(){const e=oa();e&&(ca(e,"serverUrl"),ca(e,"token"))}function oa(){return"undefined"==typeof window?null:window.localStorage}function sa(e,t){return e.getItem(ra[t])}function da(e,t,n){e.setItem(ra[t],n)}function ca(e,t){e.removeItem(ra[t])}function la(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 ua=P(void 0);function ma({children:e}){const[t,n]=_(null),[a,r]=_(!1),i=U(fa,pa,ga),o=t,s=!i||!a;R(()=>{if(!i)return;const e=function(){const e=oa();if(!e)return null;const t=sa(e,"serverUrl"),n=sa(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Hn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{ia(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=D(async e=>{const t=la(window.location.origin),{token:a}=await async function(e,t){return ea(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=oa();t&&(da(t,"serverUrl",e.serverUrl),da(t,"token",e.token))}(i),n(i),r(!0)},[]),c=D(async()=>{o&&await Hn(o)},[o]),l=D(()=>{ia(),n(null),r(!0)},[]),u=$(()=>({clearSession:l,loading:s,refreshSession:c,session:o,setup:d}),[l,s,c,o,d]);return b(ua.Provider,{value:u,children:e})}function ha(){const e=L(ua);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function fa(){return()=>{}}function pa(){return!0}function ga(){return!1}var va=Pn({ErrorBoundary:()=>Na,Layout:()=>ba,default:()=>ya,links:()=>xa,meta:()=>wa});function wa(){return[{title:jn}]}function xa(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function ba({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[b("meta",{charSet:"utf-8"}),b("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),b(a,{}),b(n,{})]}),y("body",{children:[e,b(s,{}),b(o,{})]})]})}var ya=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return b(M,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:b(I,{client:e,children:y(_n,{children:[b(ma,{children:b(i,{})}),b($n,{richColors:!0})]})})})}),Na=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return b("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[b("h1",{className:"text-lg font-semibold",children:"xedoc"}),b("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),Ia=dt("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function ka({className:e,variant:t="default",size:n="default",...a}){return b(st,{"data-slot":"button",className:qn(Ia({variant:t,size:n,className:e})),...a})}function Aa({className:e,type:t,...n}){return b(ct,{type:t,"data-slot":"input",className:qn("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 Ca({className:e,...t}){return b("label",{"data-slot":"label",className:qn("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 Ea(){const[e,t]=_(""),[n,a]=_(""),[i,o]=_(null),[s,d]=_(null),[c,l]=_(!1),{loading:u,session:m,setup:h}=ha(),p=f(),g=!1===i;if(R(()=>{let e=!0;return d(null),async function(e){return ea(e,"/api/auth/status",{token:null})}(la(window.location.origin)).then(t=>{e&&o(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),o(!0))}),()=>{e=!1}},[]),u)return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(Ie,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return b(r,{replace:!0,to:"/"});if(null===i)return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(Ie,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await h(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return b("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[b("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:b(g?be:_e,{className:"size-5"})}),y("div",{children:[b("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),b("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:"server-password",children:"Server password"}),b(Aa,{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&&Ma(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:"server-password-confirm",children:"Confirm password"}),b(Aa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&Ma(e,n,g)&&v()}})]}):null,s?b("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:s}):null,y(ka,{disabled:!Ma(e,n,g)||c,onClick:()=>{v()},children:[c?b(Ie,{className:"animate-spin"}):b(g?be:_e,{}),g?"Set Password":"Connect"]})]})]})})}function Ma(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ta=Pn({default:()=>Sa}),Sa=c(function(){return b(Ea,{})}),Pa=Pn({loader:()=>Da});function Da(){return m("/favicon.svg",301)}function La({...e}){return b(lt.Root,{"data-slot":"alert-dialog",...e})}function Ra({...e}){return b(lt.Portal,{"data-slot":"alert-dialog-portal",...e})}function $a({className:e,...t}){return b(lt.Backdrop,{"data-slot":"alert-dialog-overlay",className:qn("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 qa({className:e,size:t="default",...n}){return y(Ra,{children:[b($a,{}),b(lt.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:qn("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 _a({className:e,...t}){return b("div",{"data-slot":"alert-dialog-header",className:qn("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 Ua({className:e,...t}){return b("div",{"data-slot":"alert-dialog-footer",className:qn("-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 za({className:e,...t}){return b(lt.Title,{"data-slot":"alert-dialog-title",className:qn("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 Oa({className:e,...t}){return b(lt.Description,{"data-slot":"alert-dialog-description",className:qn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ja({className:e,...t}){return b(ka,{"data-slot":"alert-dialog-action",className:qn(e),...t})}function Fa({className:e,variant:t="outline",size:n="default",...a}){return b(lt.Close,{"data-slot":"alert-dialog-cancel",className:qn(e),render:b(ka,{variant:t,size:n}),...a})}function Ba({...e}){return b(ut.Root,{"data-slot":"dialog",...e})}function Ga({...e}){return b(ut.Trigger,{"data-slot":"dialog-trigger",...e})}function Ha({...e}){return b(ut.Portal,{"data-slot":"dialog-portal",...e})}function Wa({className:e,...t}){return b(ut.Backdrop,{"data-slot":"dialog-overlay",className:qn("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 Ka({className:e,children:t,showCloseButton:n=!0,...a}){return y(Ha,{children:[b(Wa,{}),y(ut.Popup,{"data-slot":"dialog-content",className:qn("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(ut.Close,{"data-slot":"dialog-close",render:b(ka,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[b(nt,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function Va({className:e,...t}){return b("div",{"data-slot":"dialog-header",className:qn("flex flex-col gap-2",e),...t})}function Qa({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:qn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&b(ut.Close,{render:b(ka,{variant:"outline"}),children:"Close"})]})}function Xa({className:e,...t}){return b(ut.Title,{"data-slot":"dialog-title",className:qn("font-heading text-base leading-none font-medium",e),...t})}function Ja({className:e,...t}){return b(ut.Description,{"data-slot":"dialog-description",className:qn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Ya({...e}){return b(mt.Root,{"data-slot":"dropdown-menu",...e})}function Za({...e}){return b(mt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function er({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return b(mt.Portal,{children:b(mt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:b(mt.Popup,{"data-slot":"dropdown-menu-content",className:qn("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 tr({className:e,inset:t,variant:n="default",...a}){return b(mt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:qn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function nr({...e}){return b(mt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function ar({className:e,inset:t,children:n,...a}){return y(mt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:qn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,b(Y,{className:"ml-auto"})]})}function rr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return b(er,{"data-slot":"dropdown-menu-sub-content",className:qn("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 ir({...e}){return b(mt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function or({className:e,children:t,inset:n,...a}){return y(mt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:qn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[b("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:b(mt.RadioItemIndicator,{children:b(Q,{})})}),t]})}function sr({className:e,...t}){return b(mt.Separator,{"data-slot":"dropdown-menu-separator",className:qn("-mx-1 my-1 h-px bg-border",e),...t})}function dr({className:e,...t}){return b("textarea",{"data-slot":"textarea",className:qn("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 cr=dt("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function lr({className:e,variant:t="default",render:n,...a}){return ft({defaultTagName:"span",props:ht({className:qn(cr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function ur({className:e,status:t}){return b(lr,{className:e,variant:mr(t),children:t.toLowerCase()})}function mr(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 hr(e){const t=Nr(e);return function(e){const t=Nr(e);if(!t)return;return{credits:br(t.credits),limitId:Ir(t.limitId)??Ir(t.limit_id),limitName:Ir(t.limitName)??Ir(t.limit_name),planType:Ir(t.planType)??Ir(t.plan_type),primary:xr(t.primary),rateLimitReachedType:Ir(t.rateLimitReachedType)??Ir(t.rate_limit_reached_type),secondary:xr(t.secondary)}}(yr(e)?.codex??Object.values(yr(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 fr(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[wr(e.primary,"5h"),wr(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function pr(e){return e?gr(e.secondary)?"weekly":gr(e.primary)?"fiveHour":null:null}function gr(e){return vr(e?.usedPercent??0)>=100}function vr(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function wr(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-vr(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 xr(e){if(null===e)return null;const t=Nr(e);return t?{resetsAt:kr(t.resetsAt)??kr(t.resets_at),usedPercent:kr(t.usedPercent)??kr(t.used_percent)??0,windowDurationMins:kr(t.windowDurationMins)??kr(t.window_duration_mins)??kr(t.window_minutes)}:void 0}function br(e){if(null===e)return null;const t=Nr(e);return t?{balance:Ir(t.balance)??null,hasCredits:Ar(t.hasCredits)??Ar(t.has_credits)??!1,unlimited:Ar(t.unlimited)??!1}:void 0}function yr(e){const t=Nr(e);return Nr(t?.rateLimitsByLimitId)??Nr(t?.rate_limits_by_limit_id)}function Nr(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Ir(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function kr(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Ar(e){return"boolean"==typeof e?e:void 0}var Cr={args:"",command:"",displayName:"",environment:""};function Er({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:r=0,session:i}){const[o,s]=_(!1),[d,c]=_(null),[l,u]=_(""),[m,h]=_(""),[f,p]=_(null),[g,v]=_(Cr),[w,N]=_(null),I=q(null),A=q(null),C=E();R(()=>{if(r<=0)return;const e=window.setTimeout(()=>{s(!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=qr(n.lastAuthMode)??t.mode,r="AUTHENTICATING"===n.status?n.lastAuthUrl??t.authUrl:n.lastAuthUrl,i="AUTHENTICATING"===n.status?n.lastAuthUserCode??t.userCode:n.lastAuthUserCode,o={...t,accountName:n.displayName,authUrl:r??null,mode:a,status:n.status,userCode:i??null};return d=o,(s=t).accountId===d.accountId&&s.accountName===d.accountName&&s.authUrl===d.authUrl&&s.message===d.message&&s.mode===d.mode&&s.status===d.status&&s.userCode===d.userCode?t:o;var s,d})},[e]),R(()=>{d?.accountId&&"CONNECTED"!==d.status&&"CONNECTED"===e.find(e=>e.id===d.accountId)?.status&&(G(),c(null),u(""),O.success("Account connected."))},[e,d?.accountId,d?.status]);const M=()=>C.invalidateQueries({queryKey:["accounts"]}),T=$(()=>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]),S=k({mutationFn:async e=>{const t=await async function(e,t){return ea(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(i,{});return{account:t,auth:await Kn(i,t.id,{mode:e.authMode}),popup:e.popup}},onError:(e,t)=>{G(t?.popup??null),c(t=>t?{...t,message:Ur(e),status:"ERROR"}:t),O.error(Ur(e))},onSuccess:({account:e,auth:t,popup:n})=>{M(),B(t,n,e)}}),P=k({mutationFn:()=>{if(!f)throw new Error("Select an account to edit.");return async function(e,t,n){return ea(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(i,f.id,{...Lr(g),displayName:g.displayName.trim()})},onError:e=>O.error(Ur(e)),onSuccess:()=>{p(null),v(Cr),O.success("Account updated."),M()}}),D=k({mutationFn:({accountId:e,mode:t})=>Kn(i,e,{mode:t}),onError:(e,t)=>{G(t?.popup??null),c(t=>t?{...t,message:Ur(e),status:"ERROR"}:t),O.error(Ur(e))},onSuccess:(t,n)=>{M();const a=e.find(e=>e.id===n.accountId);B(t,n.popup,a)}}),L=k({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return ea(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(i,e,{redirectUrl:t.trim()}),onError:e=>{c(t=>t?{...t,message:Ur(e),status:"ERROR"}:t),O.error(Ur(e))},onSuccess:e=>{u(""),M(),B(e)}}),U=k({mutationFn:e=>async function(e,t){return ea(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Ur(e)),onSuccess:()=>{N(null),O.success("Account deleted."),M(),C.invalidateQueries({queryKey:["chats"]})}}),z=k({mutationFn:()=>async function(e){return ea(e.serverUrl,"/api/accounts/export",{token:e.token})}(i),onError:e=>O.error(Ur(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} ${$r(e.accounts.length)}.`)}}),j=k({mutationFn:e=>async function(e,t){return ea(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(i,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),O.error(Ur(e))},onSuccess:(e,t)=>{O.success(`Imported ${e.imported} ${$r(e.imported)}.`),M(),C.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){B(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&O.info(`${a} more ${$r(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&O.success(`Connected ${a} imported ${$r(a)}.`)}(e.authentications,t.popup)}});function F(e){const t=zr();I.current=t,s(!1),u(""),c({accountId:"",accountName:"Codex account",authUrl:null,message:"Creating account and starting Codex authentication.",mode:e,status:"AUTHENTICATING",userCode:null}),S.mutate({authMode:e,popup:t})}function B(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??qr(t?.lastAuthMode)??"browser",status:e.status,userCode:e.userCode??t?.lastAuthUserCode??null}}(e,n)),e.authUrl)return I.current=t??I.current,Or(e.authUrl,t),void O.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");G(t),"AUTHENTICATING"!==e.status?O.success(e.message??"Account is connected."):O.info(e.message??"Authentication is still in progress.")}function G(e=I.current){e&&!e.closed&&e.close(),e&&e!==I.current||(I.current=null)}return y(x,{children:[b("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[b("h3",{className:"text-sm font-semibold",children:"Accounts"}),b("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]}),y("div",{className:"flex flex-wrap gap-2",children:[b("input",{ref:A,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=zr();try{const e=JSON.parse(await t.text());j.mutate({accounts:Rr(e),popup:n})}catch(a){n?.close(),O.error(Ur(a))}}}),y(ka,{disabled:j.isPending,variant:"secondary",onClick:()=>A.current?.click(),children:[j.isPending?b(Ie,{className:"animate-spin"}):b(Ze,{}),"Import JSON"]}),y(ka,{disabled:z.isPending,variant:"outline",onClick:()=>z.mutate(),children:[z.isPending?b(Ie,{className:"animate-spin"}):b(re,{}),"Export JSON"]}),y(Ya,{open:o,onOpenChange:s,children:[y(Za,{render:b(ka,{}),children:[S.isPending?b(Ie,{className:"animate-spin"}):b(Ue,{}),"Add Account",b(X,{"data-icon":"inline-end"})]}),y(er,{align:"end",className:"w-56",children:[y(tr,{disabled:S.isPending,onClick:()=>F("browser"),children:[b(ie,{}),"Normal Auth"]}),y(tr,{disabled:S.isPending,onClick:()=>F("device"),children:[b(be,{}),"Device Auth"]})]})]})]})]}),y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[y("div",{className:"relative min-w-64 flex-1",children:[b(Be,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),b(Aa,{className:"pl-8",placeholder:"Search accounts",value:m,onChange:e=>h(e.target.value)})]}),y("div",{className:"text-xs text-muted-foreground",children:[T.length," of ",e.length," ",$r(e.length)]})]}),b("div",{className:"overflow-x-auto rounded-md border bg-background",children:y("table",{className:"w-full min-w-[720px] text-sm",children:[b("thead",{className:"border-b bg-muted/40 text-xs text-muted-foreground",children:y("tr",{children:[b("th",{className:"px-3 py-2 text-left font-medium",children:"Account"}),b("th",{className:"px-3 py-2 text-left font-medium",children:"Quota"}),b("th",{className:"w-12 px-3 py-2 text-right font-medium",children:b("span",{className:"sr-only",children:"Actions"})})]})}),b("tbody",{children:T.length?T.map(r=>b(Sr,{account:r,authPending:D.isPending&&D.variables?.accountId===r.id,authPendingMode:D.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=>function(t,n="browser"){const a=e.find(e=>e.id===t),r=zr();I.current=r,u(""),c(_r(a,n)),D.mutate({accountId:t,mode:n,popup:r})}(r.id,t),onShowAuthentication:()=>function(e){u(""),c(_r(e,qr(e.lastAuthMode)??"browser"))}(r)},r.id)):b("tr",{children:b("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."})})})]})})]})}),b(Tr,{callbackUrl:l,completePending:L.isPending,state:d,onCallbackUrlChange:u,onClose:()=>{c(null),u("")},onComplete:()=>{d?.accountId&&L.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:()=>Or(d?.authUrl)}),b(Ba,{open:!!f,onOpenChange:e=>{e||P.isPending||(p(null),v(Cr))},children:y(Ka,{className:"max-w-2xl",children:[y(Va,{children:[y(Xa,{children:["Edit ",f?.displayName??"account"]}),b(Ja,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),b(Mr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(Qa,{children:[y(ka,{variant:"outline",onClick:()=>{p(null),v(Cr)},children:[b(tt,{}),"Cancel"]}),y(ka,{disabled:!g.displayName.trim()||P.isPending,onClick:()=>P.mutate(),children:[P.isPending?b(Ie,{className:"animate-spin"}):b(V,{}),"Save account"]})]})]})}),b(La,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(qa,{children:[y(_a,{children:[b(za,{children:"Delete account?"}),y(Oa,{children:["This removes ",w?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ua,{children:[b(Fa,{children:"Cancel"}),y(ja,{disabled:U.isPending,variant:"destructive",onClick:()=>{w&&U.mutate(w.id)},children:[U.isPending?b(Ie,{className:"animate-spin"}):b(Je,{}),"Delete"]})]})]})})]})}function Mr({form:e,onChange:t,prefix:n}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:`${n}-name`,children:"Display name"}),b(Aa,{id:`${n}-name`,placeholder:"Work Codex",value:e.displayName,onChange:n=>t({...e,displayName:n.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:`${n}-command`,children:"Command"}),b(Aa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:`${n}-args`,children:"Arguments"}),b(Aa,{id:`${n}-args`,placeholder:"app-server",value:e.args,onChange:n=>t({...e,args:n.target.value})})]})]}),y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:`${n}-environment`,children:"Environment JSON"}),b(dr,{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 Tr({callbackUrl:e,completePending:t,state:n,onCallbackUrlChange:a,onClose:r,onComplete:i,onCopyDeviceCode:o,onReopen:s}){const d="device"===n?.mode,c="CONNECTED"===n?.status;return b(Ba,{open:!!n,onOpenChange:e=>{e||r()},children:y(Ka,{className:"max-w-2xl",children:[y(Va,{children:[b(Xa,{children:d?"Device authentication":"Normal authentication"}),b(Ja,{children:n?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[b("div",{className:qn("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:[b(Ca,{htmlFor:"account-auth-url",children:d?"Verification link":"Authentication link"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[b(Aa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:n.authUrl}),y(ka,{variant:"outline",onClick:s,children:[b(ie,{}),"Reopen"]})]})]}):null,d&&n?.userCode?y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[b(Aa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:n.userCode}),y(ka,{variant:"outline",onClick:o,children:[b(ne,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:"account-callback-url",children:"Response URL"}),b(dr,{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)}),b("p",{className:"text-xs text-muted-foreground",children:"Paste the complete localhost callback URL from the Codex browser tab when automatic completion is blocked."})]}),n?.message?b("p",{className:"rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground",children:n.message}):null]}),y(Qa,{children:[y(ka,{variant:"outline",onClick:r,children:[b(tt,{}),"Close"]}),y(ka,{disabled:!n?.authUrl,variant:"secondary",onClick:s,children:[b(ie,{}),"Reopen Link"]}),y(ka,{disabled:!n?.accountId||!e.trim()||t,onClick:i,children:[t?b(Ie,{className:"animate-spin"}):b(V,{}),"Submit Response URL"]})]})]})})}function Sr({account:e,authPending:t,authPendingMode:n,quotaLabel:a,quotaPending:r,quotaSnapshot:i,onAuthenticate:o,onDelete:s,onEdit:d,onShowAuthentication:c}){const l=qr(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:[b("td",{className:"px-3 py-3 align-top",children:y("div",{className:"grid gap-1.5",children:[b("div",{className:"font-medium",children:e.displayName}),y("div",{className:"flex flex-wrap items-center gap-2",children:[b(Pr,{account:e}),"AUTHENTICATING"===e.status?b("span",{className:"text-xs text-muted-foreground",children:"device"===l?"Device login pending":"Browser login pending"}):null]})]})}),b("td",{className:"px-3 py-3 align-top",children:b(Dr,{accountStatus:e.status,label:a,pending:r,snapshot:i})}),b("td",{className:"px-3 py-3 text-right align-top",children:y(Ya,{children:[y(Za,{render:b(ka,{size:"icon-sm",variant:"ghost"}),children:[t?b(Ie,{className:"animate-spin"}):b(Pe,{}),b("span",{className:"sr-only",children:"Account actions"})]}),y(er,{align:"end",className:"w-48",children:[y(tr,{disabled:t,onClick:()=>o(h),children:[u?b(Ie,{className:"animate-spin"}):"AUTHENTICATING"===e.status?b(je,{}):b(ie,{}),"AUTHENTICATING"===e.status?f:"Normal Auth"]}),y(tr,{disabled:t,onClick:()=>o("device"),children:[m?b(Ie,{className:"animate-spin"}):b(be,{}),"Device Auth"]}),"AUTHENTICATING"===e.status||e.lastAuthUrl?y(tr,{onClick:c,children:[b(ie,{}),"Authentication Details"]}):null,b(sr,{}),y(tr,{onClick:d,children:[b($e,{}),"Edit"]}),y(tr,{variant:"destructive",onClick:s,children:[b(Je,{}),"Delete"]})]})]})})]})}function Pr({account:e}){const t=e.lastError?.trim();return t?y(Un,{children:[b(zn,{render:b("span",{className:"inline-flex cursor-help"}),children:b(ur,{status:e.status})}),b(On,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):b(ur,{status:e.status})}function Dr({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return b("div",{className:"text-xs text-muted-foreground",children:"INVALIDATED"===e?"Re-authenticate account to load quota.":"Connect account to load quota."});const r=t??fr(a),i=pr(a);return y("div",{className:"grid gap-1.5",children:[y("div",{className:qn("inline-flex w-fit items-center gap-1.5 rounded-md border px-2 py-1 text-xs","fiveHour"===i&&"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300","weekly"===i&&"border-red-300 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"),children:[n?b(Ie,{className:"size-3 animate-spin"}):null,b("span",{children:r})]}),a?.planType?b("div",{className:"text-xs text-muted-foreground",children:(o=a.planType,o.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" "))}):null]});var o}function Lr(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 Rr(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 $r(e){return 1===e?"account":"accounts"}function qr(e){return"browser"===e||"device"===e?e:null}function _r(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 Ur(e){return e instanceof Error?e.message:"Request failed."}function zr(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Or(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(pt.Root,{"data-slot":"scroll-area",className:qn("relative",e),...r,children:[b(pt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:qn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),b(Fr,{}),b(pt.Corner,{})]})}function Fr({className:e,orientation:t="vertical",...n}){return b(pt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:qn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:b(pt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Br({className:e,orientation:t="horizontal",...n}){return b(gt,{"data-slot":"separator",orientation:t,className:qn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function Gr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,activeTab:r,createFocusKey:i,onOpenChange:o,onTabChange:s,open:d,session:c}){return b(Ba,{open:d,onOpenChange:o,children:y(Ka,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Va,{className:"px-5 py-4",children:[b(Xa,{children:"Settings"}),b(Ja,{children:"Manage accounts, personalization, and project details."})]}),b(Br,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[b(Hr,{active:"accounts"===r,icon:b(et,{}),label:"Accounts",onClick:()=>s("accounts")}),b(Hr,{active:"personalization"===r,icon:b(W,{}),label:"Personalization",onClick:()=>s("personalization")}),b(Hr,{active:"info"===r,icon:b(we,{}),label:"Info",onClick:()=>s("info")})]}),b(jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?b(Wr,{accounts:e,session:c}):null,"accounts"===r?b(Er,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?b(Kr,{}):null]})})]})]})})}function Hr({active:e,icon:t,label:n,onClick:a}){return y(ka,{"aria-pressed":e,className:qn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function Wr({accounts:e,session:t}){const[n,a]=_(()=>e[0]?.id??""),[r,i]=_(""),o=E();R(()=>{e.length?n&&e.some(e=>e.id===n)||a(e[0].id):a("")},[e,n]);const s=$(()=>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 ea(e.serverUrl,`/api/accounts/${t}/personalization`,{token:e.token})}(t,n)}});R(()=>{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 ea(e.serverUrl,`/api/accounts/${t}/personalization`,{body:n,method:"PATCH",token:e.token})}(t,n,{instructions:r})},onError:e=>O.error(Vr(e)),onSuccess:e=>{o.setQueryData(["account-personalization",e.accountId],e),o.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:[b("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),b("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:qn("text-xs text-muted-foreground",h&&"text-destructive"),children:[l.toLocaleString()," / ",u.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[b(Ca,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),b(dr,{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?b("p",{className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:Vr(d.error)}):null,y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[b("div",{className:"min-w-0",children:b("div",{className:"truncate font-mono text-xs text-muted-foreground",children:d.data?.instructionsPath??s?.displayName??"Personalization file"})}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(ka,{disabled:d.isFetching,variant:"outline",onClick:()=>{d.refetch()},children:[d.isFetching?b(Ie,{className:"animate-spin"}):b(ze,{}),"Reload"]}),y(ka,{disabled:!m||c.isPending,variant:"secondary",onClick:()=>i(d.data?.instructions??""),children:[b(ze,{}),"Reset"]}),y(ka,{disabled:!m||h||d.isLoading||c.isPending,onClick:()=>c.mutate(),children:[c.isPending?b(Ie,{className:"animate-spin"}):b(Fe,{}),"Save"]})]})]})]}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[b("h3",{className:"text-sm font-semibold",children:"No accounts"}),b("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account before configuring personalization."})]})}function Kr(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[b(we,{}),"Project"]}),b("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[b("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[b(ie,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[b(Ce,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function Vr(e){return e instanceof Error?e.message:"Request failed."}function Qr(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 Xr="xedoc.web.terminal-height",Jr=null;function Yr({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,o]=_(null),[s,d]=_(null),[c,l]=_(ei),[u,m]=_(!1),[h,f]=_(null),[p,g]=_([]),v=q(c),w=function(){const[e,t]=_(()=>ai());return R(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),x=D((e,t)=>Qr(a,e,t),[a]),N=D(e=>{g(e),o(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=D(async()=>{const e=await x("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),o(e.terminal.id)},[N,n,x,h]);R(()=>{if(!a||!n.trim())return g([]),o(null),void f(null);let e=!1,t=null;return m(!0),d(null),x("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),N(n.terminals),!n.terminals.length)){const t=await x("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),N(t.terminals),o(t.terminal.id))}}).catch(t=>{e||d(ri(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&Qr(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,x,a]),R(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&N(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[N,n,h,a]),R(()=>{v.current=c;const e=window.setTimeout(()=>{ti(c)},150);return()=>window.clearTimeout(e)},[c]),R(()=>{const e=()=>{l(e=>{const t=ni(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const k=D(async e=>{try{N((await x("terminal:close",{terminalId:e})).terminals)}catch(t){O.error(ri(t))}},[N,x]),A=D(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),C=D(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=ni(n+t-e.clientY);v.current=a,l(a)},r=()=>{ti(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:qn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[b("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:C,children:b("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[b("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:qn("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:()=>o(e.id),children:[b(Xe,{className:"size-3.5 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),b("span",{className:qn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),b("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{k(e.id)},children:b(tt,{className:"size-3"})})]},e.id))}),b(ka,{"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(ri(e)))},children:u?b(Ie,{className:"animate-spin"}):b(Ue,{})}),t?b(ka,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:b(tt,{})}):null]}),b("div",{className:"relative min-h-0 bg-zinc-950",children:s?b("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:s}):p.length?p.map(e=>b(Zr,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):b("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function Zr({active:e,compactLayout:t,onTerminalUpdated:n,resizeSignal:a,socket:r,terminal:i}){const o=q(null),s=q(null),d=q(null),c=q(null),[l,u]=_(!1),m=D(()=>{null===d.current&&(d.current=window.requestAnimationFrame(()=>{d.current=null,s.current?.fit()}))},[]);return R(()=>(m(),()=>{null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null)}),[m,a]),R(()=>{e&&(m(),requestAnimationFrame(()=>{s.current?.fit(),c.current?.focus()}))},[e,m]),R(()=>{const a=o.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 Jr??=import("ghostty-web").then(async e=>(await e.init(),e)),Jr}().then(async({FitAddon:a,Terminal:d})=>{if(l||!o.current)return;o.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;s.current=v,c.current=g,g.loadAddon(v),g.open(o.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 Qr(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(ri(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),Qr(r,"terminal:detach",{terminalId:i.id}).catch(()=>{});for(const e of f)e.dispose();c.current?.dispose(),a.replaceChildren(),c.current=null,s.current=null,u(!1)}},[e,t,n,m,r,i.id]),y("div",{className:qn("absolute inset-0 h-full min-h-0 overflow-hidden bg-zinc-950 p-1 outline-none sm:p-2",e?"z-10 opacity-100":"z-0 opacity-0 pointer-events-none"),"aria-hidden":!e,style:{caretColor:"transparent"},children:[!l&&e?b("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,b("div",{className:qn("h-full min-h-0 transition-opacity [&_canvas]:block",l?"opacity-100":"opacity-0"),ref:o})]})}function ei(){return"undefined"==typeof window?360:ni(Number.parseInt(window.localStorage.getItem(Xr)??"",10)||(ai()?300:360))}function ti(e){"undefined"!=typeof window&&window.localStorage.setItem(Xr,String(e))}function ni(e){const t="undefined"!=typeof window&&ai()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(ai()?96:140),760));return Math.max(t,Math.min(n,e))}function ai(){return"undefined"!=typeof window&&window.innerWidth<640}function ri(e){return e instanceof Error?e.message:"Terminal request failed."}function ii(){const{setTheme:e,theme:t}=T(),n=t??"system";return y(Ya,{children:[y(Za,{render:b(ka,{size:"icon",variant:"ghost"}),children:[b(Qe,{className:"size-4 dark:hidden"}),b(Te,{className:"hidden size-4 dark:block"}),b("span",{className:"sr-only",children:"Theme"})]}),y(er,{align:"end",className:"w-40",children:[y(tr,{onClick:()=>e("light"),children:[b(Qe,{}),"Light","light"===n?b(K,{className:"ml-auto"}):null]}),y(tr,{onClick:()=>e("dark"),children:[b(Te,{}),"Dark","dark"===n?b(K,{className:"ml-auto"}):null]}),y(tr,{onClick:()=>e("system"),children:[b(ye,{}),"System","system"===n?b(K,{className:"ml-auto"}):null]})]})]})}function oi(e,t){return t&&bt.getLanguage(t)?bt.highlight(e,{language:t}).value:bt.highlightAuto(e).value}bt.registerLanguage("bash",yt),bt.registerLanguage("css",Nt),bt.registerLanguage("go",It),bt.registerLanguage("html",Dt),bt.registerLanguage("javascript",At),bt.registerLanguage("json",kt),bt.registerLanguage("markdown",Ct),bt.registerLanguage("python",Et),bt.registerLanguage("rust",Mt),bt.registerLanguage("sh",Tt),bt.registerLanguage("sql",St),bt.registerLanguage("tsx",Pt),bt.registerLanguage("typescript",Pt),bt.registerLanguage("xml",Dt),bt.registerLanguage("yaml",Lt);var si=P(null);function di({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:o,fileChangeActionDisabled:s,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=$(()=>new Set(t??[]),[t]),h=$(()=>function(e){const t=mo([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Mo(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=vo(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&go(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&&Si(n))return n.id}return null}(h),[h]),[g,v]=_(null);return y(si.Provider,{value:v,children:[f.map(t=>b(li,{chatId:e,entry:t,fileChangeActionDisabled:s,fileChangeActionPending:d,latestProposedPlanMessageId:p,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:o,planActionDisabled:c,planActionPending:l,session:u},t.id)),b(xi,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function ci({chatId:e,messages:t,session:n}){const a=$(()=>bo(t),[t]);return a.pendingRequest?b("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:b("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:b(fi,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function li({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"user"===t.type?b(hi,{message:t.message}):b(ui,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function ui({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,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(Io(r.message)){const e=n.at(-1);if(!e||ko(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&&Ao(e)!==Ao(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)No(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)),o=r.findIndex(e=>e.sequence>i),s={messages:n,sequence:i,type:"previousActions"};return o<0?[...r,s]:[...r.slice(0,o),s,...r.slice(o)]}(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:wo(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:xo(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 b("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[b("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?b(ur,{status:h}):null]}),b("div",{className:"grid min-w-0 gap-2",children:m.map(r=>b(mi,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function mi({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?b(Di,{messages:a.messages}):"previousActions"===a.type?b(Li,{messages:a.messages}):"fileChanges"===a.type?b($i,{disabled:t,messages:a.messages,pending:n,onReview:s,onUndo:d}):b(fi,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:r,message:a.message,onImplementPlan:i,onRevisePlan:o,onReviewFileChanges:s,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function hi({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=$(()=>vi(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),[o,s]=_(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?b("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:r.map(e=>b("button",{className:"size-16 overflow-hidden rounded-lg border bg-muted outline-none ring-offset-background transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",title:e.name,type:"button",onClick:()=>s(e),children:b("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:[b(et,{className:"size-3.5 opacity-80"}),b("span",{className:"text-xs font-medium",children:"You"})]}),a?b("div",{className:"whitespace-pre-wrap break-words",children:a}):null,i.length?b("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:[b(de,{className:"size-3.5 shrink-0 opacity-80"}),b("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null]}):null]}),b(Ba,{open:!!o,onOpenChange:e=>{e||s(null)},children:y(Ka,{className:"flex h-[min(90vh,900px)] w-[min(92vw,1000px)] max-w-none flex-col overflow-hidden p-0",children:[y(Va,{className:"sr-only",children:[b(Xa,{children:o?.name??"Image preview"}),b(Ja,{children:"Full size image preview."})]}),o?b("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:b("img",{alt:o.name,className:"max-h-full max-w-full object-contain",src:o.src})}):null]})})]})}function fi({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:o,onRevisePlan:s,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?b(Ai,{latestProposedPlanMessageId:r,message:i,onImplementPlan:o,onRevisePlan:s,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?b(Ii,{}):null;case"THINKING":return b(ki,{message:i});case"PLAN":return b(Ci,{metadata:Mo(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:o,onRevisePlan:s,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return b(Pi,{metadata:Mo(i.metadata)});case"FILE_CHANGE":return b($i,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return b(Yi,{chatId:e,compact:t,message:i,metadata:Mo(i.metadata),session:m});case"USER_INPUT_PROMPT":return b(Zi,{chatId:e,compact:t,message:i,metadata:Mo(i.metadata),session:m});case"ERROR":return b(so,{metadata:Mo(i.metadata),text:i.content});default:return b(co,{text:i.content})}}function pi({text:e}){const t=L(si);return b("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:b(wt,{remarkPlugins:[xt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?b("button",{className:qn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):b("a",{className:qn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>b("blockquote",{className:qn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>b("code",{className:qn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>b("del",{className:qn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>b("em",{className:qn("italic",e),...t}),h1:({className:e,...t})=>b("h1",{className:qn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>b("h2",{className:qn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>b("h3",{className:qn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>b("h4",{className:qn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>b("h5",{className:qn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>b("h6",{className:qn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>b("hr",{className:qn("my-4 border-border",e),...t}),img:({className:e,...t})=>b("img",{className:qn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>b("input","checkbox"===t?{className:qn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>b("li",{className:qn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>b("ol",{className:qn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>b("p",{className:qn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>b("pre",{className:qn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>b("strong",{className:qn("font-semibold",e),...t}),table:({className:e,...t})=>b("div",{className:"my-3 max-w-full overflow-x-auto",children:b("table",{className:qn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>b("ul",{className:qn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:gi(e)})})}function gi(e){return vi(e).map(e=>"image"===e.type?`\n\n![](${encodeURI(e.src).replace(/\)/g,"%29")})\n\n`:e.text).join("")}function vi(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=wi(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"});const o=/^\s*<\/image>/i.exec(e.slice(n.lastIndex));i&&o&&(n.lastIndex+=o[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 wi(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 xi({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)),ea(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return b(Ba,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ka,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Va,{className:"gap-1 px-4 pb-2 pt-4",children:[y(Xa,{className:"flex min-w-0 items-center gap-2",children:[b(de,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),b(Ja,{className:"truncate",children:yi(r.data)})]}),b("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[b(Ie,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?b("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?b(bi,{file:r.data}):null})]})})}function bi({file:e}){const t=q({}),n=$(()=>(e.content??"").split(/\r?\n/),[e.content]);return R(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?b("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):b(jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[b("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:qn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[b("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),b("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:oi(n||" ",e.language)}})]},r)})}),e.truncated?b("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function yi(e){return e?[Ni(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Ni(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Ii(){return b("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>b("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function ki({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:[b(X,{className:"size-4 transition-transform group-open:rotate-180"}),b("span",{children:"Reasoning"})]}),e.content?b("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Ai({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const o=Si(t),s="envelope"===o?.source?o.surroundingText:t.content,d=!!o&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[s.trim()?b(pi,{text:s}):null,o?b(Ei,{disabled:r,message:t,pending:i,planBody:o.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Ci({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:o}){const s=n?.steps??[],d=Si(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[b(Ne,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?b(pi,{text:c}):n?.explanation?b("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):b(co,{text:"Planning..."}),s.length?b("div",{className:"mt-3 grid min-w-0 gap-2",children:s.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[b(lr,{variant:"completed"===e.status?"default":"secondary",children:e.status}),b("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?b(Mi,{disabled:i,message:t,pending:o,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Ei({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:o}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[b(Ne,{className:"size-4"}),"Proposed plan"]}),b(pi,{text:i}),o?b(Mi,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Mi({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[o,s]=_(""),[d,c]=_(!1),l=e||r,u=!!a&&o.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(ka,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?b(Ie,{className:"animate-spin"}):b(G,{}),"Implement plan"]}),y(Ba,{open:d,onOpenChange:c,children:[y(Ga,{render:b(ka,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[b(qe,{}),"Tell Codex what to change"]}),y(Ka,{children:[y(Va,{children:[b(Xa,{children:"Tell Codex What To Change"}),b(Ja,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[b(dr,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:o,onChange:e=>s(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[b(ka,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(ka,{disabled:!u,type:"button",onClick:()=>{const e=o.trim();e&&(a?.({feedback:e,message:t,planBody:i}),s(""),c(!1))},children:[r?b(Ie,{className:"animate-spin"}):b(qe,{}),"Send changes"]})]})]})]})]})]})}var Ti=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Si(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Ti.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Ti,"").trim()}:"PLAN"!==e.kind||"result"!==Mo(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Pi({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:[b(X,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[b(Xe,{className:"size-4 shrink-0"}),b("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:[b(lr,{variant:Ji(e),children:Xi(e)}),"number"==typeof e?.exitCode?b(lr,{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?b("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,b("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 Di({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,uo),...a?[a]:[]]),i=Math.max(0,e.length-r.length),o=xo(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===o||"PENDING"===o,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:[b(X,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[b(Xe,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),b(lr,{variant:"secondary",children:o.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>b(Ri,{message:e},e.id)),i>0?y(ka,{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 Li({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:[b(X,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[b(Xe,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),b(lr,{variant:"secondary",children:"collapsed"})]}),b("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>b(Ri,{message:e},e.id))})]})}function Ri({message:e}){const t=Mo(e.metadata),n=Mo(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Mo(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Mo(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:[Co(e),y("div",{className:"min-w-0",children:[b("div",{className:"truncate text-xs font-medium",children:a}),r?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),b(lr,{variant:"secondary",children:e.status.toLowerCase()})]})}function $i({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 o of t){const e=Mo(o.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of qi(e)){const e=n.get(t.path);e?n.set(t.path,{action:Vi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:Qi(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:Qi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),o=L(si),s=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[b(ce,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[b("div",{className:"truncate font-medium",children:i.entries.length?`${zi(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),b(Fi,{additions:i.additions,deletions:i.deletions})]})]}),b("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(ka,{disabled:!s||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:ji(i)}),children:[r?b(Ie,{className:"animate-spin"}):b(Oe,{}),"Undo"]}),y(ka,{disabled:!s||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:Oi(i)}),children:[r?b(Ie,{className:"animate-spin"}):b(oe,{}),"Review"]})]})]}),b("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Ba,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[b("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>o?.({path:e.path}),children:e.path}),b(Fi,{additions:e.additions,deletions:e.deletions}),y(Ga,{render:b(ka,{size:"icon-sm",variant:"ghost"}),children:[b(X,{className:"-rotate-90 size-4 text-muted-foreground"}),b("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ka,{className:"max-w-5xl",children:[y(Va,{children:[b(Xa,{children:e.path}),y(Ja,{children:[e.action??"Edited"," file change reported by Codex."]})]}),b("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):b("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?b("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>b(lr,{variant:"secondary",children:e},e))}):null]})}function qi(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=Ui(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=Ui(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:_i(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=Bi(n.path,n.filePath,n.file,n.name);return a?(e.push({action:Hi(Bi(n.action,n.kind,n.type)??"Edited"),additions:Gi(n.additions),deletions:Gi(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>Wi(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=>Wi(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 _i(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 Ui(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function zi(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function Oi(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 ji(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 Fi({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),b("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function Bi(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function Gi(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 Hi(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function Wi(e,t){return Ki(e)===Ki(t)}function Ki(e){return Ui(e).replace(/\\/g,"/").replace(/^\.\//,"")}function Vi(e,t){return e?t&&e!==t?"Created"===e||"Created"===t?"Created":"Deleted"===e||"Deleted"===t?"Deleted":"Renamed"===e||"Renamed"===t?"Renamed":"Edited":e:t??"Edited"}function Qi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function Xi(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function Ji(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Yi({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,o=lo(e,n,r),s=e=>o.mutate(e);return i||"expired"===a?.status?b(eo,{icon:b(Ae,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:to(a)}):y("div",{className:qn("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:qn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[b(Ae,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?b("div",{className:qn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?b("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,b("div",{className:qn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(lr,{variant:"secondary",children:[b(K,{className:"size-3"}),"resolved"]}):y(x,{children:[y(ka,{disabled:o.isPending,size:"sm",onClick:()=>s("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[o.isPending?b(Ie,{className:"animate-spin"}):b(K,{}),"Accept"]}),b(ka,{disabled:o.isPending,size:"sm",variant:"outline",onClick:()=>s("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),b(ka,{disabled:o.isPending,size:"sm",variant:"outline",onClick:()=>s("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Zi({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,o]=_({}),[s,d]=_(0),c=lo(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(s,Math.max(l.length-1,0)),h=l[m],f=!!h&&oo(h,i[h.id]).length>0,p=l.every(e=>oo(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 b(eo,{icon:b(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:no(a)});return y("div",{className:qn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:qn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[b("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[b(ka,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:b(B,{})}),y(lr,{variant:"secondary",children:[m+1," / ",l.length]}),b(ka,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:b(G,{})}),u?b(lr,{variant:"secondary",children:"resolved"}):null]})]}),h?b(ro,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??ao,onChange:e=>o(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?b("div",{className:qn("flex justify-end",t?"mt-2":"mt-4"),children:y(ka,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:io(l,i)}):O.error("Answer every question before submitting.")},children:[c.isPending?b(Ie,{className:"animate-spin"}):b(K,{}),"Submit"]})}):null]})}function eo({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[b("span",{className:"text-muted-foreground",children:e}),b("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?b(lr,{variant:"secondary",children:t}):null]}),a?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function to(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 no(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 ao={other:"",values:[]};function ro({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const o=r.options??[],s=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[b("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?b("span",{className:qn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),o.length?b("div",{className:qn("grid min-w-0",e?"gap-1":"gap-2"),children:o.map(n=>{const r=d.includes(n.label),i="number"==typeof s&&s>1&&d.length>=s;return y(ka,{"aria-pressed":r,className:qn("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===s){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 s&&d.length>=s||l({values:[...d,e]})}})(n.label),children:[y("span",{className:qn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[b("span",{children:n.label}),n.description?b("span",{className:qn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?b(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?b(Aa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):b(dr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&o.length?b(dr,{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 s&&s>1?y("span",{className:"text-xs text-muted-foreground",children:["Select up to ",s,"."]}):null]})}function io(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:oo(e,t[e.id])}]))}}function oo(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function so({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[b(j,{className:"size-4"}),"Error"]}),b("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function co({text:e}){return b("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function lo(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 ea(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=>aa(e,t))}})}var uo=5;function mo(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=ho(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=fo(n[t],r):(a.set(e,n.length),n.push(r))}return n}function ho(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 fo(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:po(t.status)>po(e.status)?{...e,status:t.status}:e:po(t.status)>po(e.status)||t.sequence>=e.sequence?t:e}function po(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function go(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function vo(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function wo(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 xo(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 bo(e){return{pendingRequest:mo(e).sort((e,t)=>t.sequence-e.sequence).find(yo)}}function yo(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Mo(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function No(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!yo(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 Io(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function ko(e,t){return Ao(e)===Ao(t)}function Ao(e){return e.runId??e.turnId??e.chatId}function Co(e){return"COMMAND_EXECUTION"===e.kind?b(Xe,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?b(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?b(Eo,{}):b(te,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Eo(){return b(Ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Mo(e){return e&&"object"==typeof e?e:void 0}function To({...e}){return b(Rt.Root,{"data-slot":"popover",...e})}function So({...e}){return b(Rt.Trigger,{"data-slot":"popover-trigger",...e})}function Po({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return b(Rt.Portal,{children:b(Rt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:b(Rt.Popup,{"data-slot":"popover-content",className:qn("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 Do({className:e,...t}){return b("div",{"data-slot":"popover-header",className:qn("flex flex-col gap-0.5 text-sm",e),...t})}function Lo({className:e,...t}){return b(Rt.Title,{"data-slot":"popover-title",className:qn("font-medium",e),...t})}function Ro({className:e,...t}){return b(Rt.Description,{"data-slot":"popover-description",className:qn("text-muted-foreground",e),...t})}function $o({...e}){return b(ut.Root,{"data-slot":"sheet",...e})}function qo({...e}){return b(ut.Portal,{"data-slot":"sheet-portal",...e})}function _o({className:e,...t}){return b(ut.Backdrop,{"data-slot":"sheet-overlay",className:qn("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 Uo({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(qo,{children:[b(_o,{}),y(ut.Popup,{"data-slot":"sheet-content","data-side":n,className:qn("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(ut.Close,{"data-slot":"sheet-close",render:b(ka,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[b(nt,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function zo({className:e,...t}){return b("div",{"data-slot":"sheet-header",className:qn("flex flex-col gap-0.5 p-4",e),...t})}function Oo({className:e,...t}){return b(ut.Title,{"data-slot":"sheet-title",className:qn("font-heading text-base font-medium text-foreground",e),...t})}function jo({className:e,...t}){return b(ut.Description,{"data-slot":"sheet-description",className:qn("text-sm text-muted-foreground",e),...t})}var Fo=S.createContext(null);function Bo(){const e=S.useContext(Fo);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function Go({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...o}){const s=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(()=>s?c(e=>!e):h(e=>!e),[s,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:s,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,s,d,c,f]);return b(Fo.Provider,{value:g,children:b("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:qn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...o,children:i})})}function Ho({side:e="left",variant:t="sidebar",collapsible:n="offcanvas",className:a,children:r,dir:i,...o}){const{isMobile:s,state:d,openMobile:c,setOpenMobile:l}=Bo();return"none"===n?b("div",{"data-slot":"sidebar",className:qn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...o,children:r}):s?b($o,{open:c,onOpenChange:l,...o,children:y(Uo,{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(zo,{className:"sr-only",children:[b(Oo,{children:"Sidebar"}),b(jo,{children:"Displays the mobile sidebar."})]}),b("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[b("div",{"data-slot":"sidebar-gap",className:qn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),b("div",{"data-slot":"sidebar-container","data-side":e,className:qn("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),...o,children:b("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function Wo({className:e,onClick:t,...n}){const{toggleSidebar:a}=Bo();return y(ka,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:qn(e),onClick:e=>{t?.(e),a()},...n,children:[b(Le,{}),b("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function Ko({className:e,...t}){return b("main",{"data-slot":"sidebar-inset",className:qn("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 Vo({className:e,...t}){return b("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:qn("flex flex-col gap-2 p-2",e),...t})}function Qo({className:e,...t}){return b("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:qn("flex flex-col gap-2 p-2",e),...t})}function Xo({className:e,...t}){return b("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:qn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function Jo({className:e,...t}){return b("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:qn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function Yo({className:e,render:t,...n}){return ft({defaultTagName:"div",props:ht({className:qn("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 Zo({className:e,...t}){return b("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:qn("w-full text-sm",e),...t})}function es({className:e,...t}){return b("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:qn("flex w-full min-w-0 flex-col gap-0",e),...t})}function ts({className:e,...t}){return b("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:qn("group/menu-item relative",e),...t})}var ns=dt("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function as({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...o}){const{isMobile:s,state:d}=Bo(),c=ft({defaultTagName:"button",props:ht({className:qn(ns({variant:n,size:a}),i)},o),render:r?b(zn,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Un,{children:[c,b(On,{side:"right",align:"center",hidden:"collapsed"!==d||s,...r})]})):c}function rs({className:e,size:t="default",...n}){return b($t.Root,{"data-slot":"switch","data-size":t,className:qn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:b($t.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function is({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const o=E(),[s,d]=_(new Set),[c,l]=_(e??""),[u,m]=_("directory"),[h,f]=_(e??""),[p,g]=_(""),[v,w]=_(!0),[x,N]=_(!1),[I,A]=_(""),[M,T]=_(""),S=C({enabled:r,queryKey:us(i,void 0),queryFn:()=>Qn(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 ea(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."),o.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 ms(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 ms(t,P.root))n.add(a);return n})},[e,P]),b(Ba,{open:r,onOpenChange:n,children:y(Ka,{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(Va,{className:"gap-1 px-4 pb-2 pt-3",children:[b(Xa,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),b(Ja,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[b(ls,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:b(ge,{})}),b(ls,{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 ms(e,D))n.add(a);return n.add(e),n}))},children:b(me,{})}),b(ls,{label:"Refresh",onClick:function(){o.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:b(ze,{className:qn(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:[b(Be,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(Aa,{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)})]}),b(ka,{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:[b(Aa,{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()}}),b(ls,{label:"Open path",onClick:z,children:b(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[b(Be,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(Aa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]}),b("div",{className:"min-h-0 bg-background",children:S.error?b("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):b(jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?b("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?b(os,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:s,filter:p,level:0,createFolderName:M,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:x,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(Qa,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[b("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),b("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":L||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(ka,{disabled:!L||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!L||"file"===t&&"file"!==u||(a(L),n(!1))},children:[b(K,{}),"file"===t?"Attach":"OK"]}),b(ka,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function os({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:o,level:s,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),x=ps(f)===ps(r.path),N=v&&ps(t)===ps(r.path),I=C({enabled:w&&!a,queryKey:us(g,r.path),queryFn:()=>Qn(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??[],o),[k?.entries,o]),E=A.filter(e=>"directory"===e.type),M=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[b(ds,{entry:r,expanded:w,level:s,loading:I.isFetching,selected:x,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?b("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(s+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?b("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(s+1)+"px"},children:"Loading..."}):null,N?b(ss,{level:s+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>b(os,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:o,level:s+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=>b(cs,{entry:e,level:s+1,selected:"file"===p&&ps(f)===ps(e.path),onSelect:m},e.path)),!k||A.length||N?null:b("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(s+1)+"px"},children:"No matching entries."})]}):null]})}function ss({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[b("span",{}),b(me,{className:"size-4 shrink-0 text-muted-foreground"}),b(Aa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),b(ls,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:b(K,{})}),b(ls,{disabled:i,label:"Cancel new folder",onClick:n,children:b(tt,{})})]})}function ds({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:o,selected:s}){return y("div",{className:qn("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",s?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[b("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>o(e.path),children:b(J,{className:qn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),b(t?ue:le,{className:"size-4 shrink-0 text-muted-foreground"}),b("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function cs({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:qn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[b("span",{}),b(se,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.name})]})}function ls({children:e,disabled:t,label:n,onClick:a}){return y(ka,{className:"size-7 p-0",disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,b("span",{className:"sr-only",children:n})]})}function us(e,t){return["workspace-directory",e.serverUrl,t]}function ms(e,t){const n=fs(t),a=fs(e);if(!n||!a.startsWith(n))return n?[n]:[];const r=[n],i=a.slice(n.length).replace(/^[\\/]+/,"");let o=n;for(const s of i.split(/[\\/]/).filter(Boolean))o=hs(o,s),r.push(o);return r}function hs(e,t){const n=e.includes("\\")?"\\":"/";return`${fs(e)}${n}${t}`}function fs(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function ps(e){return fs(e).toLocaleLowerCase()}function gs(){const{loading:e,session:t}=ha(),{chatId:n}=g(),a=function(e){const[t,n]=_(!1),[a,r]=_(0),[i,o]=_(null);return R(()=>{if(!e)return n(!1),r(0),void o(null);const t=function(e,t){let n=!1;const a=vt(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 o(t.socket),()=>{t.disconnect(),n(!1),o(null)}},[e?.serverUrl,e?.token]),{connected:t,count:a,socket:i}}(t),[o,s]=_(""),[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 ea(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 ea(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]);Fn(F);const H=A({queries:G.map(e=>({enabled:!!t,queryKey:["rate-limits",e.id],queryFn:()=>async function(e,t){return ea(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}(t,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),W=$(()=>Object.fromEntries(G.map((e,t)=>{const n=hr(H[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[H,G]),K=$(()=>Object.fromEntries(G.map(e=>{const t=W[e.id];return t?[e.id,fr(t)]:null}).filter(e=>!!e)),[W,G]),V=$(()=>Object.fromEntries(G.map((e,t)=>[e.id,H[t]?.isFetching??!1])),[H,G]),Q=H.some(e=>Nd(e.error));if(R(()=>{Q&&T.invalidateQueries({queryKey:["accounts"]})},[Q,T]),R(()=>{o.trim()||N(!1)},[o]),e)return b(Ts,{});if(!t)return b(r,{replace:!0,to:"/connect"});const X={accounts:z,accountRateLimitFetching:V,accountRateLimitSnapshots:W,accountUsageSummaries:K,activeProjectPath:o,chats:O,connectedAccounts:G,lastOpenedChat:B,openAccountManagement:S,openWorkspacePicker:k,session:t,setActiveProjectPath:s,setTerminalOpen:N,terminalCount:a.count,terminalOpen:w,terminalSocket:a.socket,terminalSocketConnected:a.connected};return y(x,{children:[y(Go,{className:"h-svh min-h-0 overflow-hidden",children:[y(Ho,{collapsible:"offcanvas",variant:"inset",children:[b(Vo,{children:y(ka,{className:"w-full justify-start",variant:"ghost",onClick:()=>M("/"),children:[b(Ve,{}),b("span",{children:"New chat"})]})}),b(Xo,{children:y(Jo,{className:"p-0",children:[b(Yo,{children:"Chats"}),b(Zo,{children:b(bs,{chats:O,session:t})})]})}),b(Qo,{children:y(ka,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[b(Ge,{}),b("span",{children:"Settings"})]})})]}),y(Ko,{className:"min-h-0 min-w-0 overflow-hidden",children:[y("header",{className:"flex h-12 shrink-0 items-center justify-between gap-2 border-b px-2",children:[y("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[b(Wo,{variant:"ghost",children:b(Ee,{})}),b("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold tracking-normal",children:F??(n?"Chat":"New chat")})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[j?y(x,{children:[b(vs,{active:w,className:qn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!o.trim(),onToggle:()=>N(!w)}),b(Ds,{chatId:j.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===j.status,session:t})]}):null,b(ws,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>M("/")}),b(ii,{})]})]}),q.error||U.error?b("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:q.error?.message??U.error?.message??"Unable to load workspace data."}):null,b("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(i,{context:X})})]})]}),b(Gr,{accounts:z,accountRateLimitFetching:V,accountRateLimitSnapshots:W,accountUsageSummaries:K,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?b(is,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function vs({active:e,className:t,compact:n=!1,count:a,disabled:r,onToggle:i}){const o=a??0;return y(ka,{"aria-label":"Terminal","aria-pressed":e,className:qn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:r,size:n?"icon":"sm",title:r?"Choose a working directory":"Terminal",type:"button",variant:"ghost",onClick:i,children:[b(Xe,{className:"size-3.5"}),b("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),o>0?b("span",{className:qn("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:o}):null]})}function ws({onAddAccount:e,onNewChat:t}){return y(Ya,{children:[y(Za,{render:b(ka,{size:"icon",variant:"ghost"}),children:[b(Ue,{className:"size-4"}),b("span",{className:"sr-only",children:"Create"})]}),y(er,{align:"end",className:"w-44",children:[y(tr,{onClick:t,children:[b(Ve,{}),"New chat"]}),y(tr,{onClick:e,children:[b(et,{}),"Add account"]})]})]})}var xs=4;function bs({chats:e,session:t}){const n=f(),{chatId:a}=g(),r=E(),[i,o]=_(null),[s,d]=_(""),[c,l]=_(null),[u,m]=_(()=>new Set),[h,p]=_(()=>new Set),v=$(()=>e.map(e=>{return{chat:e,dateLabel:dd(e.lastActivityAt),folderKey:(t=e.workingDirectory,ld(t)),folderName:cd(e.workingDirectory),folderPath:ld(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 Jn(t,i.id,{title:s.trim()||"Untitled chat"})},onError:e=>O.error(Id(e)),onSuccess:()=>{o(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),I=k({mutationFn:e=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>O.error(Id(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(x,{children:[b(es,{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,xs),s=e.items.length-i.length,c=!!(f=e.path).trim()&&"No folder"!==f;var f;return y(ts,{children:[y("div",{className:"flex min-w-0 items-center gap-1 pr-1",children:[y("button",{className:"flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left text-xs font-medium text-sidebar-foreground/75 outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",title:e.path,type:"button",onClick:()=>m(t=>{const n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),children:[b(le,{className:"size-3.5 shrink-0 text-cyan-500"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.name}),b("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),b(X,{className:qn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?b(ka,{"aria-label":`New chat in ${e.name}`,className:"size-7 shrink-0",size:"icon-sm",title:`New chat in ${e.path}`,type:"button",variant:"ghost",onClick:()=>n("/",{state:{workingDirectory:e.path}}),children:b(Ue,{className:"size-3.5"})}):null]}),t?null:y(es,{className:"gap-0.5 pl-4",children:[i.map(({chat:e,dateLabel:t,folderName:r})=>y(ts,{className:"flex min-w-0 items-center",children:[y(as,{className:"h-7 min-w-0 flex-1 px-2 pr-2! text-xs",isActive:e.id===a,size:"sm",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[b(Me,{className:"size-3.5 text-muted-foreground"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(Ya,{children:[y(Za,{render:b(ka,{"aria-label":"Chat actions",className:"pointer-events-none h-7 w-0 shrink-0 overflow-hidden opacity-0 transition-[width,opacity] group-hover/menu-item:pointer-events-auto group-hover/menu-item:ml-1 group-hover/menu-item:w-7 group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:ml-1 group-focus-within/menu-item:w-7 group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:ml-1 aria-expanded:w-7 aria-expanded:opacity-100",size:"icon-sm",variant:"ghost"}),children:[b(Se,{className:"size-4"}),b("span",{className:"sr-only",children:"Chat actions"})]}),y(er,{align:"end",className:"w-40",children:[y(tr,{onClick:()=>{o(e),d(e.title)},children:[b($e,{}),"Rename"]}),y(tr,{onClick:()=>l(e),children:[b(F,{}),"Archive"]})]})]})]},e.id)),s>0?b("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>new Set(t).add(e.key)),children:[b(X,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",s," more"]})]})}):r&&e.items.length>xs?b("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>{const n=new Set(t);return n.delete(e.key),n}),children:[b(X,{className:"size-3.5 shrink-0 rotate-180"}),b("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):b("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),b(Ba,{open:!!i,onOpenChange:e=>{e||(o(null),d(""))},children:y(Ka,{children:[y(Va,{children:[b(Xa,{children:"Rename chat"}),b(Ja,{children:"Choose a short title for the sidebar."})]}),b(Aa,{value:s,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),b(Qa,{children:b(ka,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),b(Ba,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ka,{children:[y(Va,{children:[b(Xa,{children:"Archive chat?"}),y(Ja,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Qa,{children:[b(ka,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(ka,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[b(F,{}),"Archive"]})]})]})})]})}function ys(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 Ns(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await ks(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Is(e){const t=Array.from(e.files).filter(e=>e.type.startsWith("image/")),n=Array.from(e.items).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e),a=new Set;return[...t,...n].filter(e=>{const t=`${e.name}:${e.size}:${e.lastModified}`;return!a.has(t)&&(a.add(t),!0)})}function ks(e){return new Promise((t,n)=>{const a=new FileReader;a.onerror=()=>n(a.error??new Error("Unable to read image.")),a.onload=()=>t(String(a.result??"")),a.readAsDataURL(e)})}function As(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:ud(t),path:t}}function Cs({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(x,{children:[b("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?b("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?b("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):b(se,{className:"size-3.5 shrink-0 text-muted-foreground"}),b("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),b(ka,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:b(tt,{className:"size-3"})})]},e.id))}):null]})}function Es(){const{accountRateLimitFetching:e,accountRateLimitSnapshots:t,accountUsageSummaries:n,connectedAccounts:a,lastOpenedChat:r,openAccountManagement:i,openWorkspacePicker:o,session:s,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=td(),p=h(),g=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"";const t=e.workingDirectory;return"string"==typeof t?t.trim():""}(p.state),v=g?`${p.key}:${g}`:"",[w,x]=_(""),[N,I]=_([]),[A,M]=_("default"),[T,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,z]=_(r?.accountId??null),[j,F]=_("default"),[B,G]=_(null),[H,W]=_(null),[K,V]=_(null),[Q,X]=_(g||r?.workingDirectory?.trim()||""),J=E(),Y=f(),Z=q(null),ee=q(r?.id??null),te=q(v||null);R(()=>(d(Q.trim()),()=>d("")),[d,Q]),R(()=>{g&&te.current!==v&&(te.current=v,X(g))},[g,v]),R(()=>{if(!r||ee.current===r.id)return;ee.current=r.id;const e=r.workingDirectory?.trim()??"";e&&X(t=>t.trim()?t:e);const t=r.accountId;t&&z(e=>e??t)},[r]);const ne=$(()=>ad(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 W(null),S(null),F("default"),G(null),void V(null);W(re.id),S(re.defaultModel??null),F(re.defaultPermissionMode??"default"),G(re.defaultReasoningEffort??null),V(re.defaultServiceTier??null)},[re?.defaultModel,re?.defaultPermissionMode,re?.defaultReasoningEffort,re?.defaultServiceTier,re?.id]);const ie=C({enabled:!!re?.id,queryKey:["models",re?.id],queryFn:()=>Vn(s,re.id),staleTime:3e5});R(()=>{Nd(ie.error)&&J.invalidateQueries({queryKey:["accounts"]})},[ie.error,J]);const oe=ie.data?.data??[],se=H===re?.id,de=se?T:null,ce=se?B:null,le=se?K:null,me=nd(oe,de),he=me?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],fe=ce??me?.defaultReasoningEffort??null,pe=me?.additionalSpeedTiers??[],ge=re?t[re.id]:void 0,ve=!!re&&!!e[re.id],we=k({mutationFn:({accountId:e,settings:t})=>Wn(s,e,t),onError:e=>O.error(Id(e)),onSuccess:e=>{J.setQueryData(["accounts"],t=>bd(t,e))}}),xe=k({mutationFn:async()=>{if(!re)throw new Error("Connect an account before starting a chat.");if(!Q.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return ea(e.serverUrl,"/api/chats",{body:t,token:e.token})}(s,{accountId:re.id,autoRotateAccount:P,collaborationMode:A,model:de,permissionMode:j,reasoningEffort:ce,serviceTier:le,workingDirectory:Q.trim()});return{chat:e,response:await Zn(s,e.id,{attachments:ys(N),content:w.trim()})}},onError:e=>O.error(Id(e)),onSuccess:({chat:e,response:t})=>{x(""),I([]),L(!1),M("default"),F(re?.defaultPermissionMode??"default"),X(""),J.setQueryData(["messages",e.id],wd(void 0,xd(t))),J.invalidateQueries({queryKey:["chats"]}),Y(`/chat/${e.id}`)}}),be=D(e=>{e?.length&&Ns(e).then(e=>{I(t=>[...t,...e])}).catch(e=>O.error(Id(e)))},[]),ye=D(()=>{o({initialPath:Q,mode:"file",onSelect:e=>{I(t=>[...t,As(e)])}})},[o,Q]),Ne=Q.trim(),Ie=l&&!!Ne;return b("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:qn("mx-auto flex min-h-full w-full flex-col px-4",Ie?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-[760px] justify-center py-8"),children:[a.length?null:y("div",{className:"mb-4 rounded-md border bg-muted/35 p-4 text-sm",children:[b("div",{className:"font-medium",children:"No connected account"}),b("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(ka,{className:"mt-3",size:"sm",onClick:i,children:[b(et,{}),"Manage Accounts"]})]}),Ie?b(Yr,{onClosePanel:()=>c(!1),projectPath:Ne,socket:u,socketConnected:m}):y("div",{className:"grid gap-3 rounded-2xl border bg-card/80 p-3 shadow-sm dark:border-border/90 dark:bg-card/55",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-xl border bg-transparent px-2 py-1.5 dark:bg-transparent",children:[b(Aa,{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:Q,onChange:e=>X(e.target.value)}),y(ka,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>o({initialPath:Q,onSelect:X}),children:[b(ue,{}),b("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[b(Vs,{visible:"plan"===A}),b(dr,{className:qn("min-h-32 resize-none border-0 bg-transparent px-1 shadow-none focus-visible:ring-0 dark:bg-transparent","plan"===A&&"pr-24"),placeholder:"Message Codex",value:w,onChange:e=>x(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!xe.isPending&&yd(w,Q,re,N)&&xe.mutate())},onPaste:e=>{const t=Is(e.clipboardData);t.length&&be(t)}})]}),b(Cs,{attachments:N,imageInputRef:Z,onAttachImages:be,onRemove:e=>I(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[b(Qs,{attachmentDisabled:xe.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:M}),b(Ss,{account:re,autoRotate:P,autoRotateDisabled:xe.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{z(e)}}),b(Ys,{activeReasoningEffort:fe,disabled:!re,modelOptions:oe,modelValue:de??"",pending:ie.isFetching,reasoningOptions:he,reasoningValue:ce??"",selectedModel:me,serviceTierOptions:pe,serviceTierValue:le??"",onSelectModel:e=>{const t=re?.id??null;W(t),S(e||null),G(null),V(null),t&&we.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=re?.id??null,n=e||null;W(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;W(t),V(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:ce,defaultServiceTier:n}})}}),b(Xs,{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:[b(Ks,{pending:ve,snapshot:ge}),b(Js,{loading:xe.isPending,sendDisabled:!yd(w,Q,re,N),onSend:()=>xe.mutate()})]})]})]})]})})})}function Ms(){const{chatId:e}=g(),{accounts:t,accountRateLimitFetching:n,accountRateLimitSnapshots:a,accountUsageSummaries:i,connectedAccounts:o,openWorkspacePicker:s,session:d,setActiveProjectPath:c,setTerminalOpen:l,terminalCount:u,terminalOpen:m,terminalSocket:h,terminalSocketConnected:f}=td(),[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:()=>Xn(d,e)}),j=C({enabled:!!e,queryKey:U,queryFn:()=>Yn(d,e,0)}),F=C({enabled:!!e&&!I,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return ea(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=$(()=>bo(B),[B]),H=$(()=>G.pendingRequest?[G.pendingRequest.id]:[],[G.pendingRequest]),W=$(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]),K=z.data,V=t.find(e=>e.id===K?.accountId);R(()=>(c(K?.workingDirectory?.trim()??""),()=>c("")),[K?.workingDirectory,c]);const Q=D(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),X=D((e="auto")=>{const t=M.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),J=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["models",V?.id],queryFn:()=>Vn(d,V.id),staleTime:3e5});R(()=>{Nd(J.error)&&P.invalidateQueries({queryKey:["accounts"]})},[J.error,P]);const Y=V?.id?a[V.id]:void 0,Z=!!V?.id&&!!n[V.id],ee=k({mutationFn:t=>Jn(d,e,{accountId:t.accountId}),onError:e=>O.error(Id(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&O.success("Chat account updated.")}}),te=k({mutationFn:t=>Jn(d,e,t),onError:e=>O.error(Id(e)),onSuccess:e=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]})}}),ne=k({mutationFn:({accountId:e,settings:t})=>Wn(d,e,t),onError:e=>O.error(Id(e)),onSuccess:e=>{P.setQueryData(["accounts"],t=>bd(t,e))}}),ae=k({mutationFn:t=>Zn(d,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??p).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>O.error(Id(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(v(""),N([])),P.setQueryData(U,t=>wd(t,xd(e))),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),re=k({mutationFn:()=>async function(e,t){return ea(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(d,e),onError:e=>O.error(Id(e)),onSuccess:()=>{O.message("Stop requested.")}}),ie=$(()=>ad(o,a),[a,o]),oe=$(()=>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}(K,V,ie,a),[a,ie,V,K])?.id;R(()=>{!oe||ee.isPending||ae.isPending||ee.mutate({accountId:oe,notify:!1})},[oe,ae.isPending,ee.isPending]);const se=D(e=>{e?.length&&Ns(e).then(e=>{N(t=>[...t,...e])}).catch(e=>O.error(Id(e)))},[]),de=D(()=>{s({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,As(e)])}})},[z.data?.workingDirectory,s]),ce=D(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=D(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=D(e=>{ae.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ae]),me=D(e=>{ae.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ae]);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 aa(e,n);if("message.failed"===t)return aa(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=vt(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(Id(e)),onEvent:t,onOpen:()=>{var a;Yn(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(Id(e))),Xn(d,e).then(n).catch(e=>O.error(Id(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(()=>X("auto"));return()=>cancelAnimationFrame(e)},[e,X]),R(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{X("auto"),e=requestAnimationFrame(()=>X("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[W,X]),!e)return b(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return b("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:b(Ie,{className:"size-5 animate-spin text-muted-foreground"})});if(z.error)return b("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[b("div",{className:"font-medium",children:"Chat not available"}),b("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const he=K,fe=V,pe="RUNNING"===he?.status,ge=J.data?.data??[],ve=!!he&&!pe&&o.length>0,we=nd(ge,he?.model),xe=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],be=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:[b(jr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:M,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=Q(e.currentTarget)}},children:b("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?b(di,{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}):b("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),b("div",{className:qn("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?b("div",{className:"p-2",children:b("div",{className:"mx-auto max-w-5xl",children:b(Yr,{onClosePanel:()=>l(!1),projectPath:he.workingDirectory,socket:h,socketConnected:f})})}):y(x,{children:[b(ci,{chatId:e,messages:B,session:d}),b("div",{className:"p-2",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[y("div",{className:"relative min-w-0",children:[b(Vs,{visible:"plan"===(he?.collaborationMode??"default")}),b(dr,{className:qn("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(),yd(p,he?.workingDirectory??"",fe,w)&&ae.mutate({attachments:ys(w),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=Is(e.clipboardData);t.length&&se(t)}})]}),b(Cs,{attachments:w,imageInputRef:T,onAttachImages:se,onRemove:e=>N(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[b(Qs,{attachmentDisabled:ae.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:de,onAttachImage:()=>T.current?.click(),pending:te.isPending,steerDisabled:!pe||ae.isPending||!yd(p,he?.workingDirectory??"",fe,w),onSteerActiveTurn:()=>ae.mutate({attachments:ys(w),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>te.mutate({collaborationMode:e})}),b(Ss,{account:fe,autoRotate:he?.autoRotateAccount??!1,autoRotateDisabled:!he||te.isPending,connectedAccounts:o,disabled:!he||!o.length,pending:ee.isPending,selectedAccountId:he?.accountId??"",selectionDisabled:!ve,usageSummaries:i,onAutoRotateChange:e=>te.mutate({autoRotateAccount:e}),onSelect:e=>ee.mutate({accountId:e})}),b(Ys,{activeReasoningEffort:be,disabled:!he||pe||!fe,modelOptions:ge,modelValue:he?.model??"",pending:J.isFetching||te.isPending,reasoningOptions:xe,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})}}),b(Xs,{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:[b(Ps,{usage:I}),b(Ks,{pending:Z,snapshot:Y}),b(Js,{loading:ae.isPending,running:pe,sendDisabled:!yd(p,he?.workingDirectory??"",fe,w),stopPending:re.isPending,onSend:()=>ae.mutate({attachments:ys(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:[b(vs,{active:m,className:qn("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)}),b(Ds,{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 Ts(){return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(Ie,{className:"size-5 animate-spin text-muted-foreground"})})}function Ss({account:e,autoRotate:t,autoRotateDisabled:n,connectedAccounts:a,disabled:r,onAutoRotateChange:i,onSelect:o,pending:s,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(Ya,{children:[y(Za,{render:b(ka,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||s,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[s?b(Ie,{className:"animate-spin"}):b(t?ze:et,{}),b("span",{className:"truncate max-sm:sr-only",children:u})]}),y(er,{align:"start",className:"w-64",children:[i?y(x,{children:[y(tr,{className:"gap-3 py-2",disabled:n||s,onClick:e=>{e.preventDefault(),i(!t)},children:[b(ze,{}),b("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),b(rs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),b(sr,{})]}):null,a.map(e=>{const t=e.id===d;return y(tr,{disabled:s||c,onClick:()=>{t||o(e.id)},children:[b("span",{className:"truncate",children:e.displayName}),l[e.id]?b("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):b("span",{className:"ml-auto"}),t?b(K,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function Ps({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=vr(e.usedPercent);return y(To,{children:[b(So,{render:b(ka,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:b("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:b("span",{className:"size-2 rounded-full bg-background"})})}),y(Po,{align:"end",className:"w-72",side:"top",children:[y(Do,{children:[b(Lo,{children:"Context window"}),b(Ro,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[md(e.tokensUsed)," /"," ",md(e.tokenLimit)," tokens used"]})]})]})]})}function Ds({chatId:e,className:t,compact:n=!1,disabled:a,session:r}){const[i,o]=_(!1),s=E(),d=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return ea(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?Ws(c):"";return y(Ba,{open:i,onOpenChange:o,children:[y(ka,{"aria-label":"Git"+(l?`: ${l}`:""),className:qn(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:()=>o(!0),children:[b(fe,{className:"size-3.5"}),n&&c?b("span",{className:qn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(x,{children:[b("span",{className:"min-w-0 truncate",children:l}),m?b("span",{className:"shrink-0 text-muted-foreground",children:m}):null,b("span",{className:qn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?b(Ls,{chatId:e,disabled:a,queryClient:s,session:r,status:c}):null]})}function Ls({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,o]=_(""),[s,d]=_(""),[c,l]=_(""),[u,m]=_(null),[h,f]=_(null),p=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return ea(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 ea(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 ea(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 ea(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>O.error(Id(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]})}}),x=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(p.data,i),N=w.data?.status??r,I=$(()=>N?.changedFiles??[],[N]),A=$(()=>v.data?.commits??[],[v.data]),E=A.find(e=>e.hash===u)??null,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(Ka,{className:"flex h-[min(90vh,760px)] w-[min(1180px,calc(100vw-1rem))] max-w-none flex-col overflow-hidden p-0",children:[y(Va,{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(Xa,{className:"flex min-w-0 items-center gap-2 text-base",children:[b(pe,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{children:"Git"})]}),b(Rs,{branches:x,branchFilter:i,currentBranch:N?.branch,loading:p.isFetching&&!p.data,locked:M,newBranchName:c,onBranchFilterChange:o,onCheckout:e=>{window.confirm(`Switch to ${e}?`)&&w.mutate({action:"checkout",branch:e})},onCreateBranch:()=>w.mutate({action:"createBranch",branch:c.trim()}),onNewBranchNameChange:l}),b("span",{className:qn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),b("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:w.isPending?"Running git...":N?Hs(N):"Loading..."}),y("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[y(ka,{disabled:M,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&w.mutate({action:"pull"})},children:[b(re,{}),"Pull"]}),y(ka,{disabled:M,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[b(Ze,{}),"Push"]}),b(ka,{size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})},children:b(ze,{className:qn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),b(Ja,{className:"sr-only",children:"Manage repository changes, branches, commits, pull, push, and history."})]}),y("div",{className:"grid min-h-0 flex-1 overflow-y-auto border-t lg:grid-cols-[18rem_minmax(0,1fr)_19rem] lg:overflow-hidden",children:[y("section",{className:"grid min-h-[20rem] grid-rows-[auto_minmax(0,1fr)_auto] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[b(Ne,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),b("span",{className:"text-xs text-muted-foreground",children:I.length})]}),b(jr,{className:"min-h-0",children:b($s,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[b(dr,{className:"min-h-20 resize-none text-sm",placeholder:"Commit message",value:s,onChange:e=>d(e.target.value)}),y(ka,{className:"justify-center",disabled:M||!s.trim()||N?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&w.mutate({action:"commit",message:s.trim()})},children:[b(pe,{}),"Commit All"]})]})]}),y("section",{className:"grid min-h-[24rem] min-w-0 grid-rows-[auto_minmax(0,1fr)] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex min-w-0 items-center gap-2 border-b px-3 py-2",children:[b(ce,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[b("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),b("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?b(ka,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),b("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:b(qs,{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:[b(ee,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"History"})]}),b("span",{className:"text-xs text-muted-foreground",children:A.length})]}),b(Fs,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),b("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[b("div",{className:"line-clamp-2 font-medium",children:E.subject}),b("div",{className:"truncate font-mono text-muted-foreground",children:E.hash}),y("div",{className:"truncate text-muted-foreground",children:[E.authorName||"Unknown author"," ·"," ",Gs(E.authoredAt)]})]}):b("div",{className:"text-muted-foreground",children:"No commit selected."})})]})]})]})}function Rs({branches:e,branchFilter:t,currentBranch:n,loading:a,locked:r,newBranchName:i,onBranchFilterChange:o,onCheckout:s,onCreateBranch:d,onNewBranchNameChange:c}){return y(To,{children:[y(So,{render:b(ka,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[b(fe,{}),b("span",{className:"min-w-0 truncate",children:n??"No branch"}),b(X,{className:"ml-1 size-3.5 text-muted-foreground"})]}),y(Po,{align:"start",className:"w-80 gap-0 p-0",side:"bottom",children:[y(Do,{className:"border-b p-3",children:[b(Lo,{children:"Branches"}),y(Ro,{children:["Current branch: ",n??"detached"]})]}),b("div",{className:"grid gap-2 p-3",children:b(Aa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>o(e.target.value)})}),b(jr,{className:"max-h-72 border-y",children:y("div",{className:"grid gap-1 p-2",children:[e.map(e=>y(ka,{className:"justify-start",disabled:r||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>s(e.name),children:[e.current?b(K,{}):b(fe,{}),b("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:b("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:a?"Loading branches...":"No branches found."})]})}),y("div",{className:"grid gap-2 p-3",children:[b(Aa,{className:"h-8",placeholder:"New branch",value:i,onChange:e=>c(e.target.value)}),y(ka,{disabled:r||!i.trim(),size:"sm",type:"button",variant:"outline",onClick:d,children:[b(Ue,{}),"Create branch"]})]})]})]})}function $s({files:e,loading:t,selectedPath:n,onSelect:a}){return t?b("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:qn("grid min-w-0 grid-cols-[2.25rem_minmax(0,1fr)] items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs outline-none hover:bg-muted focus-visible:bg-muted",n===e.path&&"bg-muted"),type:"button",onClick:()=>a(e.path),children:[b("span",{className:qn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Bs(e.status)),children:e.status.trim()}),b("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):b("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function qs({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(Us).filter(e=>!!e):[]}(e),[e]);return t?b("div",{className:"p-3 font-mono text-xs text-destructive",children:Id(t)}):a?b("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?b("div",{className:"min-w-max divide-y",children:r.map(e=>y("section",{className:"bg-background",children:[y("div",{className:"sticky top-0 z-10 border-b bg-background/95 px-3 py-2 backdrop-blur",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[b(se,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?b("div",{className:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 font-mono text-[0.68rem] text-muted-foreground",children:e.meta.slice(0,3).map(e=>b("span",{className:"truncate",children:e},e))}):null]}),b("div",{className:"py-1 font-mono text-xs leading-5",children:e.hunks.map((t,n)=>y("div",{children:[y("div",{className:"grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-y bg-muted/70 text-[0.68rem] text-muted-foreground",children:[b("div",{className:"border-r px-2 py-1 text-right",children:"line"}),b("div",{}),b("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>b(_s,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):b("pre",{className:"min-h-full min-w-0 overflow-auto p-3 font-mono text-xs leading-5 text-muted-foreground",children:n.trim()||"No tracked diff."})}function _s({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("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;"):oi(t.content||" ",e);return y("div",{className:qn("grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-l-2","add"===t.type&&"border-l-emerald-500 bg-emerald-500/10 text-emerald-950 dark:text-emerald-50","delete"===t.type&&"border-l-red-500 bg-red-500/10 text-red-950 dark:text-red-50","context"===t.type&&"border-l-transparent bg-background","meta"===t.type&&"border-l-transparent bg-muted/40 text-muted-foreground"),children:[b("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),b("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),b("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function Us(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=zs(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return zs(t[3]??t[2]??"")}(e);if(!t)return null;const n={hunks:[],language:js(t),meta:[],path:t};let a=null,r=0,i=0;for(const o of e){if(o.startsWith("@@")){const e=Os(o);r=e.oldStart,i=e.newStart,a={header:o,lines:[]},n.hunks.push(a);continue}a?o.startsWith("+")&&!o.startsWith("+++")?(a.lines.push({content:o.slice(1),newNumber:i,oldNumber:null,type:"add"}),i+=1):o.startsWith("-")&&!o.startsWith("---")?(a.lines.push({content:o.slice(1),newNumber:null,oldNumber:r,type:"delete"}),r+=1):o.startsWith("\\")?a.lines.push({content:o,newNumber:null,oldNumber:null,type:"meta"}):(a.lines.push({content:o.startsWith(" ")?o.slice(1):o,newNumber:i,oldNumber:r,type:"context"}),r+=1,i+=1):o.startsWith("diff --git ")||o.startsWith("--- ")||o.startsWith("+++ ")||n.meta.push(o)}return n.hunks.length?n:null}function zs(e){const t=e.trim().replace(/^"|"$/g,"");return t?t.replace(/^[ab]\//,""):null}function Os(e){const t=e.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);return{newStart:Number(t?.[2]??0),oldStart:Number(t?.[1]??0)}}function js(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 Fs({commits:e,error:t,fetching:n,selectedHash:a,onSelect:r}){return t?b("div",{className:"p-3 text-xs text-destructive",children:Id(t)}):n&&!e.length?b("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?b(jr,{className:"min-h-0",children:b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:qn("grid gap-1 rounded-md px-2 py-2 text-left outline-none hover:bg-muted focus-visible:bg-muted",a===e.hash&&"bg-muted"),type:"button",onClick:()=>r(e.hash),children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[b("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),b("span",{className:"shrink-0 font-mono text-[0.68rem] text-muted-foreground",children:e.shortHash})]}),y("div",{className:"flex min-w-0 items-center gap-1.5 text-[0.68rem] text-muted-foreground",children:[b("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),b("span",{"aria-hidden":"true",children:"·"}),b("span",{className:"shrink-0",children:Gs(e.authoredAt)})]}),e.refs.length?b("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>b("span",{className:"max-w-full truncate rounded bg-secondary px-1.5 py-0.5 text-[0.65rem] text-secondary-foreground",children:e},e))}):null]},e.hash))})}):b("div",{className:"p-3 text-xs text-muted-foreground",children:"No commits found."})}function Bs(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 Gs(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 Hs(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Ws(e)].filter(Boolean).join(" · "):"Git unavailable"}function Ws(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ks({pending:e,snapshot:t}){const n=fr(t),a=pr(t);return y(To,{children:[y(So,{render:b(ka,{className:qn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?b(Ie,{className:"size-3 animate-spin"}):b(at,{className:"size-3"}),b("span",{className:"truncate max-sm:sr-only",children:n})]}),y(Po,{align:"start",className:"w-80",side:"top",children:[y(Do,{children:[b(Lo,{children:"Usage capacity"}),b(Ro,{children:"Current Codex account limits refresh automatically."})]}),b(Zs,{pending:e,snapshot:t})]})]})}function Vs({visible:e}){return e?y(lr,{className:"pointer-events-none absolute right-1.5 top-1.5 z-10 border-primary/25 bg-background/95 text-foreground shadow-sm backdrop-blur dark:border-primary/40",variant:"outline",children:[b(Ne,{}),b("span",{children:"Plan mode"})]}):null}function Qs({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:o,onSteerActiveTurn:s,pending:d,steerDisabled:c}){const l="plan"===n,u=e||t;return y(Ya,{children:[b(Za,{render:b(ka,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?b(Ie,{className:"animate-spin"}):b(Ue,{})}),y(er,{align:"start",className:"w-56",children:[y(tr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),o(l?"default":"plan")},children:[b(Ne,{}),b("span",{className:"grid min-w-0 flex-1 gap-0.5",children:b("span",{children:"Plan mode"})}),b(rs,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(tr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[b(ve,{}),b("span",{children:"Attach image"})]}),y(tr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[b(Re,{}),b("span",{children:"Attach workspace file"})]}),s?y(tr,{className:"gap-3 py-2",disabled:c,onClick:s,children:[b(H,{}),b("span",{children:"Steer active turn"})]}):null]})]})}function Xs({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(Ya,{children:[y(Za,{render:b(ka,{"aria-label":vd(t),className:qn("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:vd(t),variant:"ghost"}),children:[a?b(Ie,{className:"animate-spin"}):b(r?We:He,{}),b("span",{className:"truncate max-sm:sr-only",children:vd(t)})]}),b(er,{align:"start",className:"w-48",children:y(ir,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[b(or,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Default"}),b("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),b(or,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Full access"}),b("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function Js({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:[b(ka,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?b(Ie,{className:"animate-spin"}):b(H,{})}),b(ka,{"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?b(Ie,{className:"animate-spin"}):b(Ke,{})})]}):b(ka,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?b(Ie,{className:"animate-spin"}):b(H,{})})}function Ys({activeReasoningEffort:e,disabled:t,modelOptions:n,modelValue:a,onSelectModel:r,onSelectReasoning:i,onSelectServiceTier:o,pending:s,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?pd(e):null,a?gd(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(Ya,{children:[y(Za,{render:b(ka,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||s,size:"sm",title:h,variant:"ghost"}),children:[s?b(Ie,{className:"animate-spin"}):b(ae,{}),b("span",{className:"truncate max-sm:sr-only",children:h})]}),y(er,{align:"start",className:"w-72",children:[y(nr,{children:[y(ar,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[b(W,{}),b("span",{children:"Intelligence"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:pd(e)})]}),b(rr,{className:"w-52",children:y(ir,{value:c,onValueChange:i,children:[b(or,{value:"",children:"Model default"}),d.map(e=>b(or,{value:e,children:pd(e)},e))]})})]}),y(nr,{children:[y(ar,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[b(ae,{}),b("span",{children:"Model"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),b(rr,{className:"w-64",children:y(ir,{value:a,onValueChange:r,children:[b(or,{value:"",children:"Default model"}),n.map(e=>b(or,{value:e.model,children:b("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(nr,{children:[y(ar,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[b(he,{}),b("span",{children:"Speed"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:gd(m)})]}),b(rr,{className:"w-52",children:y(ir,{value:m,onValueChange:o,children:[b(or,{value:"",children:"Default speed"}),u.map(e=>b(or,{value:e,children:gd(e)},e))]})})]})]})]})}function Zs({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?b("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",fd(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?b("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,fd(n))}):null]}),b(ed,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),b(ed,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):b("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function ed({fallbackLabel:e,severity:t,window:n}){const a=vr(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=gr(n);return y("div",{className:qn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[b("span",{className:"font-medium",children:id(n,e)}),b("span",{className:qn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("div",{className:qn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:qn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?b("span",{children:od(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",sd(n.resetsAt)]}):null]})]})}function td(){return p()}function nd(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function ad(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||pr(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-vr(e.usedPercent));return t.length?Math.min(...t):0}function id(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 od(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function sd(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 dd(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 o=new Date,s=t.getFullYear()===o.getFullYear();return new Intl.DateTimeFormat(void 0,{day:"numeric",month:"short",...s?{}:{year:"numeric"}}).format(t)}function cd(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 ld(e){const t=e?.trim();return t?t.replace(/[\\/]+$/,"")||t:"No folder"}function ud(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function md(e){return e>=1e6?`${hd(e/1e6)}M`:e>=1e3?`${hd(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function hd(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function fd(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function pd(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function gd(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function vd(e){return"fullAccess"===e?"Full access":"Default"}function wd(e,t){let n=e;for(const a of t)n=aa(n,a);return n??{data:[],nextCursor:null}}function xd(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function bd(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 yd(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Nd(e){if(!e)return!1;const t=e instanceof Error?e.message:String(e);return e instanceof Bn&&401===e.status||/token_invalidated|authentication token .*invalidated|re-authenticate this account/i.test(t)}function Id(e){return e instanceof Error?e.message:"Request failed."}var kd=Pn({default:()=>Ad}),Ad=c(function(){return b(gs,{})}),Cd=Pn({default:()=>Ed}),Ed=c(function(){return b(Es,{})}),Md=Pn({default:()=>Td}),Td=c(function(){return b(Ms,{})}),Sd=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Pd(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Dd(e){throw new Sd(405,`${e} is not supported for this route.`)}function Ld(e,t){t.includes(e.method)||Dd(e.method)}async function Rd(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 Sd(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Sd)throw n;throw new Sd(400,"Request body must be valid JSON.")}}function $d(e,t,n={}){if(null==e){if(n.required)throw new Sd(400,`${t} is required.`);return}if("string"!=typeof e)throw new Sd(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Sd(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Sd(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function qd(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Sd(400,`${t} must be an array of strings.`);return e}}function _d(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Sd(400,`${t} must be a boolean.`);return e}}function Ud(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Sd(400,`${t} must be an object.`);return e}}function zd(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 Sd(400,`${t} must be an integer.`);return r}function Od(e,t){const n=e[t];if(!n)throw new Sd(400,`${t} is required.`);return n}function jd(e){return e instanceof Sd?Pd({message:e.message},{status:e.status}):Pd({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Fd=Pn({loader:()=>Bd});function Bd({request:e}){try{return Ld(e,["GET"]),Pd({status:"ok",service:"xedoc"})}catch(t){return jd(t)}}var Gd,Hd=globalThis,Wd=fn("~"===(Gd=process.env.CODEX_WORKSPACE_ROOT?.trim()||cn())?cn():Gd.startsWith("~/")?fn(cn(),Gd.slice(2)):gn(Gd),".xedoc","xedoc.db"),Kd=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Wd);process.env.DATABASE_URL=Kd,Jt(un(Wd),{recursive:!0,mode:448});var Vd=Hd.prisma??new Bt({datasources:{db:{url:Kd}}});"production"!==process.env.NODE_ENV&&(Hd.prisma=Vd);var Qd="server",Xd="scrypt";async function Jd(e){!function(e){if(e.length<8)throw new Sd(400,"Server password must be at least 8 characters.")}(e);const t=await nc()??await async function(e){try{return await Vd.serverAuth.create({data:{id:Qd,passwordHash:ac(e),tokenSecret:rc(32)}})}catch(t){if(function(e){return e instanceof Ft.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Sd(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!==Xd||!a||!r||void 0!==i)&&ic(Ot(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Sd(401,"Invalid server password.");return{token:Zd({authHash:ec(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Yd(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Sd(401,"Invalid auth token.");if(!ic(a,tc(n,t.tokenSecret)))throw new Sd(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 Sd(401,"Invalid auth token.")}}(n);if(i.authHash!==ec(t.passwordHash))throw new Sd(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Sd(401,"Missing auth token.");return n}(e),await async function(){const e=await nc();if(!e)throw new Sd(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Zd(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${tc(n,t)}`}function ec(e){return t=e,qt("sha256").update(t).digest("hex");var t}function tc(e,t){return _t("sha256",t).update(e).digest("base64url")}async function nc(){return Vd.serverAuth.findUnique({where:{id:Qd}})}function ac(e){const t=rc(16);return`${Xd}:${t}:${Ot(e,t,64).toString("base64url")}`}function rc(e){return Ut(e).toString("base64url")}function ic(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&jt(n,a)}var oc=Pn({loader:()=>sc});async function sc({request:e}){try{return Ld(e,["GET"]),Pd(await async function(){return{passwordConfigured:!!(await nc())}}())}catch(t){return jd(t)}}var dc=Pn({action:()=>cc});async function cc({request:e}){try{return Ld(e,["POST"]),Pd(await Jd($d((await Rd(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return jd(t)}}var lc=Pn({loader:()=>uc});async function uc({request:e}){try{return Ld(e,["GET"]),Pd(await async function(e){return{authenticated:!0,issuedAt:(await Yd(e)).issuedAt}}(e))}catch(t){return jd(t)}}function mc(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function hc(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function fc(e){const t=mc(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var pc=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(s),n?.removeEventListener("abort",o),d()},o=()=>{i(),r(new Error("Stopped waiting for Codex event."))},s=setTimeout(()=>{i(),r(new Error("Timed out waiting for Codex event."))},t),d=this.onEvent(t=>{e(t)&&(i(),a(t))});n?.addEventListener("abort",o,{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-${zt()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const o=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:o}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=Ic(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 Tc(e.codexHome),this.child=xn(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}`),bc(t)&&wc(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(Ec(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(Ec(t.id)),t.error)return bc(t.error.message)&&wc(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()}},gc=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new pc(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()}},vc=new Set;async function wc(e,t){vc.add(e),await Vd.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:yc(t)}})}function xc(e){vc.delete(e)}function bc(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return t.includes("token_invalidated")||t.includes("authentication token has been invalidated")||t.includes("401")&&t.includes("unauthorized")&&t.includes("invalidated")}function yc(e){const t=(e instanceof Error?e.message:"string"==typeof e?e:"").trim();return t?["Codex authentication token was invalidated. Re-authenticate this account.",t.length>700?`${t.slice(0,700)}...`:t].join("\n"):"Codex authentication token was invalidated. Re-authenticate this account."}async function Nc(e){return(await gc.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function Ic(e){return fn(Mc(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function kc(e){const t=Ic(e);return Tc(t),t}function Ac(){return Mc(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Cc(){const e=Ac();return fn(e,Dc(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>Lc(t)-Lc(e)).at(0)??"state_5.sqlite")}function Ec(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function Mc(e){return"~"===e?cn():e.startsWith("~/")?fn(cn(),e.slice(2)):gn(e)}function Tc(e){Jt(e,{recursive:!0,mode:448}),Ht(e,448),function(e){const t=Ac();if(gn(e)===gn(t))return;Jt(t,{recursive:!0,mode:448}),Ht(t,448),function(e,t){const n=fn(t,"sessions"),a=fn(e,"sessions");if(Jt(n,{recursive:!0,mode:448}),_c(a,n))return;zc(a)&&(Uc(a)?.isDirectory()&&$c(a,n),an(a,Oc(a)));sn(n,a,"dir")}(e,t),function(e,t){const n=fn(t,"session_index.jsonl"),a=fn(e,"session_index.jsonl");if(Rc(n,384),_c(a,n))return;zc(a)&&(Uc(a)?.isFile()&&function(e,t){const n=Zt(e,"utf8");if(!n.trim())return;const a=Zt(t,"utf8");Gt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),an(a,Oc(a)));sn(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([ln(Cc())]);for(const a of[t,e])for(const e of Dc(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))Sc(e,t,n)}(e,t),function(e,t){Pc(e,t,"AGENTS.md",!0),Pc(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function Sc(e,t,n){const a=fn(t,n),r=fn(e,n);_c(r,a)||(Uc(r)?.isFile()&&qc(r,a),n.endsWith("-wal")||n.endsWith("-shm")||Rc(a,384),zc(r)&&an(r,Oc(r)),sn(a,r,"file"))}function Pc(e,t,n,a){const r=fn(t,n),i=fn(e,n);(a||zc(r)||zc(i))&&(Rc(r,384),_c(i,r)||(Uc(i)?.isFile()&&function(e,t){const n=Zt(e,"utf8");if(!n.trim())return;const a=Zt(t,"utf8");if(!a.trim())return Vt(e,t),void Ht(t,384);if(a===n||a.includes(n))return;const r=a.endsWith("\n")?"":"\n",i=n.endsWith("\n")?n:`${n}\n`;Gt(t,`${r}\n\x3c!-- Imported from ${ln(un(e))}/${ln(e)} during xedoc sharing. --\x3e\n${i}`)}(i,r),zc(i)&&an(i,Oc(i)),sn(r,i,"file")))}function Dc(e){try{return en(e)}catch{return[]}}function Lc(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function Rc(e,t){Wt(Yt(e,"a",t)),Ht(e,t)}function $c(e,t){Jt(t,{recursive:!0,mode:448});for(const n of en(e,{withFileTypes:!0})){const a=fn(e,n.name),r=fn(t,n.name);n.isDirectory()?$c(a,r):n.isFile()&&qc(a,r)}}function qc(e,t){zc(t)||(Jt(un(t),{recursive:!0,mode:448}),Vt(e,t))}function _c(e,t){try{return!!Xt(e).isSymbolicLink()&&gn(un(e),tn(e))===gn(t)}catch{return!1}}function Uc(e){try{return on(e)}catch{return null}}function zc(e){try{return Xt(e),!0}catch{return!1}}function Oc(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;zc(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var jc="AGENTS.md",Fc=32768;async function Bc(){const e=await Vd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return function(e){for(const t of e)al(t.id)}(e),e}async function Gc(e){const t=await Vd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Sd(404,"Codex account not found.");return al(t.id),t}async function Hc(e,t){const n=function(e){if("string"!=typeof e)throw new Sd(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>Fc)throw new Sd(400,"instructions must be 32768 bytes or fewer.");return t}(t.instructions);await Gc(e);const a=kc(e),r=fn(a,jc);return dn(r,n,{encoding:"utf8",mode:384}),Ht(r,384),{accountId:e,codexHome:a,instructionsPath:r,instructions:n,maxBytes:Fc}}async function Wc(e,t="browser"){const n=await Gc(e),a="INVALIDATED"===n.status;if(Zc(e)&&!a)return gc.stopRuntime(e),await Vd.codexAccount.update({where:{id:e},data:Vc(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(gc.stopRuntime(e),function(e){rn(`${Ic(e)}/auth.json`,{force:!0})}(e)),await Vd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=Xc(n);if(!a){const t=mc(mc((await r.request("account/read",{refreshToken:!1})).result)?.account);if(t)return await Vd.codexAccount.update({where:{id:e},data:Vc(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=mc((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),o="chatgptDeviceCode"===hc(i?.type)?"device":t,s=function(e,t){return"device"===t?hc(e?.verificationUrl)??hc(e?.verification_url)??hc(e?.authUrl)??hc(e?.auth_url)??hc(e?.url)??null:hc(e?.authUrl)??hc(e?.auth_url)??hc(e?.url)??null}(i,o),d=hc(i?.loginId)??null,c="device"===o?hc(i?.userCode)??hc(i?.user_code)??null:null;if(!("device"!==o||s&&c))throw new Error("Codex did not return device login instructions.");const l=s?"AUTHENTICATING":"CONNECTED";return await Vd.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Vc(e):{status:l,lastAuthUrl:s,lastAuthMode:o,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),Vd.codexAccount.update({where:{id:t},data:Vc(t)}))},o=e=>{a||(a=!0,c(),Vd.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},s=setInterval(()=>{Zc(t)?i():Jc(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(s),clearTimeout(d),r()};r=e.onEvent(e=>{const t=mc(e.params);if("account/login/completed"===e.method){const e=hc(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void o(hc(t.error)??"Login failed."):void i()}"account/updated"===e.method&&hc(t?.authMode)&&i()})}(r,e,d),{accountId:e,status:l,authMode:"AUTHENTICATING"===l?o:null,authUrl:s,verificationUrl:"device"===o?s:null,userCode:c,loginId:d,message:"CONNECTED"===l?"Codex account is connected.":"device"===o?"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 Vd.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 Kc(e,t){const n=await Gc(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Sd(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Sd(400,"Callback URL must use http.");if(t.username||t.password)throw new Sd(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 Sd(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Sd(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Xc(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 Sd(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const o=mc((await i)?.params);if(!1===o?.success){const t=hc(o.error)??"Login failed.";return await Vd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Qc(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await Jc(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Zc(e)?(gc.stopRuntime(e),await Vd.codexAccount.update({where:{id:e},data:Vc(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await Vd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Qc(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:"Callback accepted. Codex is still finishing authentication."})}catch(o){const t=o instanceof Error?o.message:"Authentication failed.";return await Vd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Qc(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function Vc(e,t){xc(e);const n=((a=t)?nl(hc(a.email))??nl(hc(a.accountEmail))??nl(hc(a.chatgptEmail))??nl(hc(mc(a.profile)?.email))??nl(hc(mc(a.user)?.email)):null)??function(e){try{return nl(hc((t=el(e)).email))??nl(hc(mc(t.account)?.email))??nl(hc(mc(t.profile)?.email))??nl(hc(mc(t.user)?.email))??tl(hc(mc(t.tokens)?.id_token))??tl(hc(mc(t.tokens)?.idToken))??tl(hc(t.id_token))??tl(hc(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 Qc(e){return"browser"===e||"device"===e?e:null}function Xc(e){return gc.getRuntime({accountId:e.id,command:e.command,args:sl(e.args),workingDirectory:null,environment:fc(e.environment)})}async function Jc(e,t){const n=mc(mc((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await Vd.codexAccount.update({where:{id:e},data:Vc(e,n)}),!0)}function Yc(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Zc(e){try{const t=el(e);return!("chatgpt"!==hc(t.auth_mode)||!mc(t.tokens)&&!hc(t.OPENAI_API_KEY))}catch{return!1}}function el(e){const t=Zt(`${Ic(e)}/auth.json`,"utf8");return mc(JSON.parse(t))??{}}function tl(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return nl(hc(mc(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 nl(e){const t=e?.trim();return t&&t.includes("@")?t:null}function al(e){try{kc(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function rl(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function il(e){return{args:rl(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?Ft.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function ol(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:sl(e.args),environment:fc(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Qc(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function sl(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Yc()}function dl(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Sd(400,`${n} must be an object.`);return{id:fl(e.id,`${n}.id`,128),displayName:hl(e.displayName,`${n}.displayName`,128),command:fl(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:pl(e.args,`${n}.args`)??Yc(),defaultModel:fl(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:ml(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:ll(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:ul(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:gl(e.environment,`${n}.environment`)}}function cl(e){return null==e?null:hl(e,"runtime option",128)}function ll(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 Sd(400,`${t} is invalid.`)}function ul(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Sd(400,`${t} is invalid.`)}function ml(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Sd(400,`${t} is invalid.`)}function hl(e,t,n){const a=fl(e,t,n);if(!a)throw new Sd(400,`${t} is required.`);return a}function fl(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Sd(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Sd(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function pl(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Sd(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function gl(e,t){if(null==e)return null;const n=mc(e);if(!n)throw new Sd(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var vl=Pn({action:()=>xl,loader:()=>wl});async function wl({request:e}){try{return Ld(e,["GET"]),await Yd(e),Pd(await Bc())}catch(t){return jd(t)}}async function xl({request:e}){try{Ld(e,["POST"]),await Yd(e);const t=await Rd(e);return Pd(await async function(e){const t=await Vd.codexAccount.create({data:{displayName:(n=e.displayName,hc(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:rl(e.args??Yc()),defaultModel:cl(e.defaultModel),defaultPermissionMode:ml(e.defaultPermissionMode),defaultReasoningEffort:ll(e.defaultReasoningEffort),defaultServiceTier:ul(e.defaultServiceTier),environment:rl(e.environment)}});var n;return al(t.id),t}({displayName:$d(t.displayName,"displayName",{maxLength:128}),command:$d(t.command,"command"),args:qd(t.args,"args"),defaultModel:bl(t.defaultModel,"defaultModel"),defaultPermissionMode:bl(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:bl(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:bl(t.defaultServiceTier,"defaultServiceTier"),environment:Ud(t.environment,"environment")}),{status:201})}catch(t){return jd(t)}}function bl(e,t){return null===e?null:$d(e,t,{maxLength:128})}var yl=Pn({loader:()=>Nl});async function Nl({request:e}){try{return Ld(e,["GET"]),await Yd(e),Pd(await async function(){const e=await Vd.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:1,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:sl(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:fc(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return jd(t)}}var Il=Pn({action:()=>kl});async function kl({request:e}){try{Ld(e,["POST"]),await Yd(e);const t=await Rd(e);if(!Array.isArray(t.accounts))throw new Sd(400,"accounts must be an array.");return Pd(await async function(e){const t=e.accounts.map(dl),n=[];for(const o of t){const e=o.id?await Vd.codexAccount.findUnique({where:{id:o.id}}):null;e?(gc.stopRuntime(e.id),n.push(await Vd.codexAccount.update({where:{id:e.id},data:il(o)}))):n.push(await Vd.codexAccount.create({data:{...o.id?{id:o.id}:{},...il(o)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const o of n)a.push(await Wc(o.id));const r=await Vd.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=>ol(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return jd(t)}}var Al=Pn({action:()=>El,loader:()=>Cl});async function Cl({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await Gc(Od(t,"accountId")))}catch(n){return jd(n)}}async function El({request:e,params:t}){try{await Yd(e);const n=Od(t,"accountId");if("PATCH"===e.method){const t=await Rd(e);return Pd(await async function(e,t){return await Gc(e),gc.stopRuntime(e),Vd.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:rl(t.args),environment:rl(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:$d(t.displayName,"displayName",{maxLength:128}),command:$d(t.command,"command"),args:qd(t.args,"args"),environment:Ud(t.environment,"environment")}))}if("DELETE"===e.method)return Pd(await async function(e){const t=await Gc(e);return gc.stopRuntime(e),xc(e),Vd.$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));Dd(e.method)}catch(n){return jd(n)}}var Ml=Pn({action:()=>Tl});async function Tl({request:e,params:t}){try{Ld(e,["PATCH"]),await Yd(e);const n=await Rd(e),a={defaultModel:Sl(n.defaultModel,"defaultModel"),defaultPermissionMode:Sl(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Sl(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Sl(n.defaultServiceTier,"defaultServiceTier")};return Pd(await async function(e,t){return await Gc(e),ol(await Vd.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:cl(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:ml(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:ll(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:ul(t.defaultServiceTier)}}))}(Od(t,"accountId"),a))}catch(n){return jd(n)}}function Sl(e,t){return null===e?null:$d(e,t,{maxLength:128})}var Pl=Pn({action:()=>Ll,loader:()=>Dl});async function Dl({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await async function(e){await Gc(e);const t=kc(e),n=fn(t,jc);let a="";try{a=Zt(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:Fc}}(Od(t,"accountId")))}catch(n){return jd(n)}}async function Ll({request:e,params:t}){try{Ld(e,["PATCH"]),await Yd(e);const n=await Rd(e);if("string"!=typeof n.instructions)throw new Sd(400,"instructions is required.");return Pd(await Hc(Od(t,"accountId"),{instructions:n.instructions}))}catch(n){return jd(n)}}async function Rl(e){const t=await $l(e);try{const n=await async function(e){return(await gc.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(Ul(t));return await ql(e),n}catch(n){return _l(e,n)}}async function $l(e){const t=await Vd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Sd(404,"Account not found.");if("CONNECTED"!==t.status)throw new Sd("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 ql(e){if(function(e){return vc.has(e)}(e))throw new Sd(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await Vd.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new Sd(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function _l(e,t){if(t instanceof Sd)throw t;if(function(e){return bc(e instanceof Error?e.message:String(e??""))}(t))throw await wc(e,t),gc.stopRuntime(e),new Sd(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function Ul(e){return{accountId:e.id,args:zl(e.args),command:e.command,environment:fc(e.environment),workingDirectory:null}}function zl(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var Ol=Pn({loader:()=>jl});async function jl({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await Rl(Od(t,"accountId")))}catch(n){return jd(n)}}var Fl=Pn({loader:()=>Bl});async function Bl({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await async function(e){const t=await $l(e);try{const n=await Nc(Ul(t));return await ql(e),n}catch(n){return _l(e,n)}}(Od(t,"accountId")))}catch(n){return jd(n)}}var Gl=Pn({action:()=>Hl});async function Hl({request:e,params:t}){try{Ld(e,["POST"]),await Yd(e);const n=await Rd(e);return Pd(await Wc(Od(t,"accountId"),function(e){const t=$d(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Sd(400,"mode must be browser or device.")}(n.mode)))}catch(n){return jd(n)}}var Wl=Pn({action:()=>Kl});async function Kl({request:e,params:t}){try{Ld(e,["POST"]),await Yd(e);const n=$d((await Rd(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Pd(await Kc(Od(t,"accountId"),n))}catch(n){return jd(n)}}var Vl=globalThis,Ql=new Map,Xl=new Map;async function Jl(e,t){const n=await Iu(e);if(!n)return;const a=fn(kc(t),"sessions",Ou(n));if(gn(n)!==gn(a)){await async function(e){const t=function(e){const t=`${vn}sessions${vn}`,n=gn(e),a=n.lastIndexOf(t);return-1===a?null:fn(n.slice(0,a),"session_index.jsonl")}(e),n=fn(Ac(),"session_index.jsonl");if(!t||gn(t)===gn(n))return;try{const e=await An(t,"utf8");if(!e.trim())return;const a=await An(n,"utf8").catch(()=>"");await yn(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(n);try{return void(await bn(a,Kt.R_OK))}catch{}await In(un(a),{recursive:!0,mode:448}),await Nn(n,a)}}async function Yl(e){const t=await Iu(e);return t?async function(e,t){try{const n=await Mn(e);if(!n.isFile()||n.size>ku())return null;const a=`${t}:${e}`,r=Xl.get(a);if(r&&Au(r,n))return r.value;const i=function(e,t,n){let a,r,i,o,s,d;const c=[],l=[];for(const f of e.split(/\r?\n/)){if(!f.trim())continue;const e=Ru(f);if(!e)continue;const u=$u(e.timestamp)??n;s=qu(s,u),d=_u(d,u);const m=mc(e.payload);if("session_meta"===e.type&&m){a=hc(m.id)??a,r=hc(m.source)??r,i=hc(m.originator)??i,o=hc(m.cwd)??o,s=$u(m.timestamp)??s;continue}if("turn_context"===e.type&&m){o=hc(m.cwd)??o;continue}const h=nu(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=au(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??Uu(t);if(!m||!u.length)return null;const h=zu(u.find(e=>"USER"===e.role)?.content??"")??zu(u[0]?.content??"")??"Imported Codex chat";return{createdAt:s??n,externalThreadId:m,messages:u,originator:i,path:t,source:r,title:h,updatedAt:d??n,workingDirectory:o}}(await An(e,"utf8"),e,new Date(n.mtimeMs)),o=i?.externalThreadId===t?i:null;return Cu(Xl,a,n,o),o}catch{return null}}(t,e):null}async function Zl(e){const t=await Iu(e);return t?async function(e,t){try{const n=await Mn(e);if(!n.isFile()||n.size>ku())return null;const a=`${t}:${e}`,r=Ql.get(a);if(r&&Au(r,n))return r.value;let i,o=null;for(const t of(await An(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Ru(t);if(!e)continue;"session_meta"===e.type&&(i=hc(mc(e.payload)?.id)??i);const n=Mu(e);n&&(o=n)}const s=(i??Uu(e))===t?o:null;return Cu(Ql,a,n,s),s}catch{return null}}(t,e):null}async function eu(e){const t=await mu(e);return t?xu(t):null}async function tu(){return(await async function(e){const t=await wu();if(!t)return[];try{const n=await hu(t);return await t.$queryRawUnsafe(`\n SELECT ${fu(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${vu(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(Eu("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(xu).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function nu(e,t,n){if("response_item"!==e.type)return null;const a=mc(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 o=function(e){return"string"==typeof e.text?su(e.text,e):"string"==typeof e.message?su(e.message,e):"string"==typeof e.content?su(e.content,e):Array.isArray(e.content)?su(e.content.map(e=>{if("string"==typeof e)return e;const t=mc(e);return t?"string"==typeof t.text?t.text:cu(t)??"":""}).join(""),e):su("",e)}(a);return!o.trim()||ru(o)?null:{content:o,createdAt:t,metadata:iu(a,n),rawPayload:ou(e,a),role:r}}function au(e,t,n){if("event_msg"!==e.type)return null;const a=mc(e.payload);if(!a)return null;const r=hc(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 o="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?su(a.message,a):"";return!o.trim()||ru(o)?null:{content:o,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...iu(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:ou(e,a),role:i}}function ru(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function iu(e,t){return{kind:"localCodexImport",originator:t.originator,phase:hc(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:hc(e.type)}}function ou(e,t){return{payload:{name:hc(t.name),phase:hc(t.phase),role:hc(t.role),type:hc(t.type)},timestamp:hc(e.timestamp),type:hc(e.type)}}function su(e,t){return[e,...du(t.images),...du(t.local_images),...du(t.localImages)].filter(Boolean).join("\n\n")}function du(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?lu(e):cu(mc(e))).filter(e=>!!e):[]}function cu(e){return e?lu(hc(e.url)??hc(e.image_url)??hc(e.path)??hc(e.filePath)):null}function lu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function uu(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||ru(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 mu(e){const t=await wu();if(!t)return null;try{const n=await hu(t);return(await t.$queryRawUnsafe(`\n SELECT ${fu(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function hu(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function fu(e){return[pu(e,"id"),pu(e,"rollout_path","rolloutPath"),gu(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),gu(e,vu(e),"updatedAt"),pu(e,"cwd"),pu(e,"title"),pu(e,"first_user_message","firstUserMessage"),pu(e,"preview"),pu(e,"archived"),pu(e,"archived_at","archivedAt")].join(",\n ")}function pu(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function gu(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function vu(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function wu(){const e=Cc();try{await bn(e,Kt.R_OK)}catch{return null}return Vl.codexStatePrisma&&Vl.codexStateDatabasePath===e||(await(Vl.codexStatePrisma?.$disconnect().catch(()=>{})),Vl.codexStateDatabasePath=e,Vl.codexStatePrisma=new Bt({datasources:{db:{url:yu(e)}}})),Vl.codexStatePrisma}function xu(e){const t=new Date(0),n=bu(e.updatedAt,t),a=bu(e.createdAt,n),r=Nu(e.rolloutPath)[0]??"",i=uu(e.firstUserMessage,{allowGeneric:!0}),o=uu(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:o,title:uu(e.title,{allowGeneric:!1})??zu(i??"")??zu(o??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function bu(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 yu(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function Nu(e){const t=e?.trim();if(!t)return[];const n=fn(Ac(),"sessions",Ou(t));return[...new Set([t,n])]}async function Iu(e){const t=await mu(e);for(const n of Nu(t?.rolloutPath))try{return await bn(n,Kt.R_OK),n}catch{}return null}function ku(){return Eu("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Au(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function Cu(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 Eu(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Mu(e){const t=Tu(e);if(!t)return null;const n=mc(t.params),a=mc(t.info)??mc(n?.info)??n??t;return function(e,t=e){const n=Pu(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Pu(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Pu(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 o=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([Pu(e,["input_tokens","inputTokens"]),Pu(e,["output_tokens","outputTokens"]),Pu(e,["reasoning_output_tokens","reasoningOutputTokens"])]),s=a??o;if(null===s)return null;const d=Math.min(s,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}}(Su(a,["last_token_usage","lastTokenUsage"])??Su(a,["total_token_usage","totalTokenUsage"])??a,a)}function Tu(e,t=0){if(t>4)return;const n=mc(e);if(!n)return;const a=Lu(hc(n.type)??""),r=Lu(hc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Tu(n[i],t+1);if(e)return e}}function Su(e,t){for(const n of t){const t=mc(e[n]);if(t)return t}}function Pu(e,t){for(const n of t){const t=Du(e[n]);if(void 0!==t)return t}}function Du(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 Lu(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Ru(e){try{return mc(JSON.parse(e))??null}catch{return null}}function $u(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function qu(e,t){return!e||t<e?t:e}function _u(e,t){return!e||t>e?t:e}function Uu(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function zu(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 Ou(e){const t=`${vn}sessions${vn}`,n=e.lastIndexOf(t);return-1===n?ln(e):e.slice(n+t.length)}var ju="__xedocRealtimeState__";function Fu(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[ju]??={handlers:new Set},e[ju]}().handlers)r(a)}var Bu=null;async function Gu(){Bu??=async function(){await Vd.$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 Vd.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await Vd.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>Vd.$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 Bu}async function Hu(){return await Gu(),Vd.threadPreference.findMany()}async function Wu(e){return await Gu(),Vd.threadPreference.findUnique({where:{threadId:e}})}async function Ku(e,t){await Gu();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 Vd.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function Vu(e){const[t,n]=await Promise.all([eu(e),Wu(e)]);return t?.workingDirectory??n?.workingDirectory??null}function Qu(e){return"fullAccess"===e?"fullAccess":"default"}async function Xu(e){const t=Zu(),n=em(t,e),a=await Cn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:un(n),entries:a.map(e=>function(e,t){return{name:t.name,path:fn(e,t.name),type:tm(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 Ju(e,t){const n=Zu(),a=gn(em(n,e),function(e){const t=e.trim();if(!t)throw new Sd(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Sd(400,"Folder name must be a single folder name.");return t}(t)),r=pn(n,a);if(r.startsWith("..")||hn(r))throw new Sd(403,"Path is outside the workspace root.");try{await In(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new Sd(409,"Folder already exists.");throw i}return Xu(a)}function Yu(e){return em(Zu(),e)}function Zu(){const e=function(e){return"~"===e?cn():e.startsWith("~/")?fn(cn(),e.slice(2)):gn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Qt(e)||Jt(e,{recursive:!0}),nn(e)}function em(e,t){const n=t?.trim(),a=n?hn(n)?n:fn(e,n):e;let r;try{r=nn(gn(a))}catch{throw new Sd(400,"Workspace path does not exist.")}const i=pn(e,r);if(i.startsWith("..")||hn(i))throw new Sd(403,"Path is outside the workspace root.");if(!on(r).isDirectory())throw new Sd(400,"Workspace path is not a directory.");return r}function tm(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var nm=1e6;async function am(e,t,n){const a=await Vu(e);if(!a)throw new Sd(400,"Chat does not have a working directory.");const r=Yu(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),o=await rm(r,i.path),s=await im(o,r),d=n??i.line??null,c=Math.min(s.size,nm),l=c?await async function(e,t){const n=await kn(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()}}(o,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:om(o),line:d,lineCount:h,name:s.name,path:o,relativePath:s.relativePath,size:s.size,truncated:s.size>nm}}async function rm(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Sd(400,"File path is required.");const a=await En(e),r=hn(n)?n:gn(a,n);let i;try{i=await En(r)}catch{throw new Sd(404,"File does not exist.")}return function(e,t){const n=pn(e,t);if(n.startsWith("..")||hn(n))throw new Sd(403,"Path is outside the chat working directory.")}(a,i),i}async function im(e,t){const n=await Mn(e);if(!n.isFile())throw new Sd(400,"Workspace path is not a file.");const a=t?await En(t):null;return{name:ln(e),path:e,relativePath:a&&pn(a,e)||ln(e),size:n.size}}function om(e){const t=mn(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 sm=new Map,dm=new Map,cm=new Map,lm=new Map,um=new Map,mm=new Map,hm="New Thread";async function fm(e){const t=await Wu(e),n=await Im(e);if(!n&&!dm.has(e))throw new Sd(404,"Chat not found.");return Am(e,t,n)}async function pm(e,t){const n=await fm(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new Sd(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&Yh(t.collaborationMode)!==n.collaborationMode)throw new Sd(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new Sd(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 ym(t)).id}(n.accountId,t.accountId);if(dm.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new Sd(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:Yh(t.collaborationMode),i=void 0===t.permissionMode?void 0:Zh(t.permissionMode),o=void 0===t.title?void 0:nf(t.title)??"Untitled chat",s=void 0===t.workingDirectory?void 0:Yu(t.workingDirectory),d=await Ku(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:Qh(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:Xh(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Jh(t.serviceTier),title:o,workingDirectory:s});if(a&&Jl(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),o&&async function(e,t,n){if(!t.accountId)return;const a=await Vd.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await mf(df(a),e,n)}(e,d,o).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),i){const t=dm.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...sm.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Fh(t);n.runtime.respondToServerRequest(n.rpcId,a),sm.delete(Bh(e,n.requestId));const r=Dm(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&&of(e,"message.updated",r)}}(e)}const c=await Am(e,d);return of(e,"chat.updated",c),c}async function gm(e){await fm(e);const t=await Am(e,await async function(e){return Ku(e,{archivedAt:new Date})}(e));return of(e,"chat.updated",t),t}async function vm(e,t=0,n=50){const a=await fm(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await Yl(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:Cm(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?Kh(n.metadata):Em(n),rawPayload:Kh(n.rawPayload??null),requestId:null,role:n.role,runId:null,sequence:r,status:"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),o=function(e,t){const n=dm.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&&Lm(e.content)===Lm(t.content)))}(t,e))}(e,t)):n.messages:[]}(e,i),s=[...i,...o].sort((e,t)=>e.sequence-t.sequence).filter(e=>e.sequence>t).slice(0,r);return{data:s,nextCursor:s.length?s[s.length-1].sequence:null}}async function wm(e,t,n){await fm(e);const a=Bh(e,t),r=sm.get(a);if(!r)throw new Sd(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Sd(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Sd(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Sd(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),sm.delete(a);const o=Dm(e,r.messageId,{completedAt:new Date,metadataPatch:{decision:n.decision,resolvedAt:(new Date).toISOString(),result:n.result??i,status:"resolved"},status:"COMPLETED"});if(!o)throw new Sd(410,"Server request is no longer active.");return of(e,"message.updated",o),o}async function xm(e,t){let n=await fm(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Sd(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await qm(n));const a=t.accountId??n.accountId;if(!a)throw new Sd(400,"Choose a Codex account before sending messages.");const r=await ym(a);if(!n.workingDirectory)throw new Sd(400,"Select a working directory before sending messages.");const i=Yu(n.workingDirectory),o=await async function(e,t){if(t.length>12)throw new Sd(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 Sd(400,"Attachment kind is invalid.");n.push(await jm(e,a))}else n.push(Om(a));return n}(i,t.attachments??[]),s=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,o);if(!s.trim()&&!o.length)throw new Sd(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:Yh(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await Tm(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:o,threadId:s}){const d=dm.get(s);if(!d?.runtime)throw new Sd(409,"The active turn is not ready for steering yet.");const c=d.turnId??await Qm(d.runtime,s);if(!c)throw new Sd(409,"The active turn has not published a turn id yet.");const l=await Wu(s),u=await ch(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=ph(await async function(e,t,n,a){async function r(r){const i=nh(n,a),o=void 0===t.collaborationMode?[t]:[t,Vm(t,"collaborationMode")];let s;for(const t of o)for(const n of i)try{return await e.request("turn/steer",{...t,expectedTurnId:r,input:n},3e4)}catch(d){if(s=d,void 0!==t.collaborationMode&&rh(d))break;if(ah(d))continue;throw d}throw s instanceof Error?s: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 Qm(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(d.runtime,{expectedTurnId:c,threadId:s,...sh(n,u)},a,t))??c;const m=Pm(s,{completedAt:o,content:r,metadata:Gm({...i,delivery:"steer",steeredAt:o.toISOString()},t),role:"USER",status:"COMPLETED"});return of(s,"chat.updated",await fm(s)),of(s,"message.created",m),{message:m,assistantMessage:null,runId:d.runId,status:"RUNNING",delivery:"steer",steered:!0}}({account:r,attachments:o,collaborationMode:c,content:t.content,messageContent:s,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:o,permissionMode:s,queuedAt:d,threadId:c,workingDirectory:l}){const u=zt(),m=Pm(c,{completedAt:d,content:i,metadata:Gm({...o,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return Sm(c).queuedTurns.push({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,createdAt:d,id:u,messageId:m.id,metadata:o,permissionMode:s,workingDirectory:l}),of(c,"chat.updated",await fm(c)),of(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:o,automaticTitleSeed:await Hm(n,Bm(t.content,o)),collaborationMode:c,content:t.content,messageContent:s,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=Pm(e,{completedAt:u,content:s,metadata:Gm(t.metadata,o),role:"USER",status:"COMPLETED"});of(e,"message.created",h);const f=await Rm({account:r,attachments:o,automaticTitleSeed:await Hm(n,Bm(t.content,o)),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 bm(e){const t=dm.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function ym(e){const t=await Vd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Sd(400,"Account not found.");if("CONNECTED"!==t.status)throw new Sd(400,"Authenticate the account before using this chat.");return t}async function Nm(){const e=await tu(),t=new Map;for(const n of e)t.set(n.externalThreadId,km(n));return t}async function Im(e){const t=await eu(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 km(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 Am(e,t,n){const a=void 0===n?await Im(e):n,r=dm.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:Qu(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),o=t?.createdAt??a?.createdAt??r?.updatedAt??new Date,s=r?.updatedAt??a?.updatedAt??t?.updatedAt??o,d=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=nf(r??"");if(e&&!af(e))return e}return rf(n??"")??rf(t??"")??hm}({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:s,status:t?.archivedAt?"ARCHIVED":"RUNNING"===r?.status||"QUEUED"===r?.status?"RUNNING":"IDLE",title:d,workingDirectory:a?.workingDirectory??i.workingDirectory,createdAt:o,updatedAt:s}}function Cm(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function Em(e){return{kind:"codexTranscript",source:e.source}}function Mm(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=mc(e);return Vh(t?.text)??Vh(t?.content)??Vh(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(hc(e.url)??hc(e.image_url)??hc(e.path)??hc(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function Tm(e){const t=dm.get(e);if(t)return t;const n=(await Yl(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 dm.set(e,a),a}function Sm(e){const t=dm.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function Pm(e,t){const n=Sm(e),a=new Date,r={chatId:e,completedAt:t.completedAt??null,content:t.content,createdAt:a,id:t.id??`runtime:${e}:${zt()}`,itemId:t.itemId??null,kind:t.kind??"CHAT",metadata:t.metadata?Kh(t.metadata):null,rawPayload:t.rawPayload?Kh(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 Dm(e,t,n){const a=dm.get(e),r=a?.messages.findIndex(e=>e.id===t)??-1;if(!a||r<0)return null;const i=a.messages[r],o={...i,completedAt:n.completedAt??i.completedAt,content:n.content??i.content,metadata:void 0!==n.metadata?Kh(n.metadata):n.metadataPatch?{...mc(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?Kh(n.rawPayload):i.rawPayload,status:n.status??i.status,turnId:void 0===n.turnId?i.turnId:n.turnId};return a.messages[r]=o,a.updatedAt=new Date,o}function Lm(e){return e.replace(/\s+/g," ").trim()}async function Rm({account:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,metadata:i,permissionMode:o,requestedCollaborationMode:s,startedAt:d,threadId:c,workingDirectory:l}){const u=await Tm(c),m=`run:${c}:${zt()}`;u.accountId=e.id,u.interruptRequested=!1,u.permissionMode=o,u.runId=m,u.status="QUEUED",u.turnId=null,u.updatedAt=d,s&&await Ku(c,{collaborationMode:s});const h=Pm(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return of(c,"chat.updated",await fm(c)),of(c,"message.created",h),of(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,o,s,d,c){(function(e,t){const n=cm.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);cm.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),cm.get(e)===i&&cm.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,o,s,d,c){const l=Sm(e),u=await Wu(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=df(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=Dm(e,n,{status:"STREAMING"});g&&of(e,"message.updated",g);of(e,"chat.updated",await fm(e)),of(e,"run.status",{runId:t,status:"RUNNING"}),await Jl(e,a.id);let v="";const w=new Map;let x,b=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=vh(e);if(t&&a&&a!==t)return!1;const r=wh(e);return!n||!r||r===n})(a,e,x)&&Wm(t,()=>async function(e,t){const n=function(e){const t=$h(e);if(t){const e=mc(t.params),n=mc(t.info)??mc(e?.info)??e??t;return Rh(qh(n,["last_token_usage","lastTokenUsage"])??qh(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=mc(e.params),a=mc(n?.event),r=mc(n?.usage)??mc(a?.usage)??(Lh(e.method)?n:void 0);return r?Rh(r):null}(t);n&&of(e.threadId,"context.updated",n);if(function(e){return!!$h(e)||Lh(e.method)}(t))return;if(function(e){const t=mc(e.params),n=mc(t?.payload)??mc(t?.event);return[e.method,hc(t?.type),hc(n?.type),hc(n?.event)].some(e=>kh(e??"").includes("compact"))}(t))return void(await lh({completedAt:new Date,content:Ph(t),itemId:`context-compaction:${wh(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Dh(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:wh(t)}));const a=t.method??"",r=mc(t.params),i=bh(t),o=kh(hc(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=mc(e.params),n=mc(e.result),a=mc(t?.event);return lf(t)??lf(a)??lf(n)}(t);return void(n&&await hf(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=Vh(r?.delta)??Vh(mc(r?.event)?.delta);if(!n)return;const a=xh(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const o=await lh({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:hc(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:wh(t)});return void of(e.threadId,"message.delta",{content:i,delta:n,messageId:o.id,runId:e.runId})}if("item/started"===a&&Ah(o))return void(await lh({content:"",fallbackMessageId:e.assistantMessageId,itemId:xh(t),kind:"CHAT",metadata:{kind:"assistant",phase:hc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:wh(t)}));if("item/completed"===a&&Ah(o)){const n=function(e){if(!e)return"";const t=Vh(e.text)??Vh(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>Vh(mc(e)?.text)??"").filter(Boolean).join("")}(i)||fh(t);if(!n)return;const a=xh(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await lh({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:hc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:wh(t)}))}if(a.startsWith("item/reasoning/")||kh(o).includes("reasoning"))return void(await async function(e,t,n,a){const r=xh(t)??`${n.toLowerCase()}:${wh(t)??"turn"}`,i=`${n}:${r}`,o=e.streamBuffers.get(i),s=a.delta?`${o??""}${a.delta}`:a.content??o??a.contentFallback??"";if(!s.trim())return;e.streamBuffers.set(i,s),await lh({content:s,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Ch(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:wh(t)})}(e,t,"THINKING",{content:Nh(t,i),delta:yh(t),metadata:{kind:"thinking",status:Mh(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=mc(t.params)??{},a="item/plan/delta"===t.method?yh(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>mc(e)).filter(e=>!!e).map(e=>({status:hc(e.status)??"pending",step:hc(e.step)??""})).filter(e=>e.step),i=hc(n.explanation),o=wh(t),s="turn/plan/updated"===t.method?`plan:${o??e.runId}`:xh(t)??`plan:${o??e.runId}`,d=`PLAN:${s}`,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 lh({content:c,itemId:s,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:o})}(e,t));if("commandexecution"===o||a.includes("commandExecution"))return void(await async function(e,t,n){const a=mc(t.params)??{},r=n??a,i=xh(t)??`command:${wh(t)??"turn"}`,o=`COMMAND:${i}`,s=yh(t),d=s?`${e.streamBuffers.get(o)??""}${s}`:Vh(r.output)??Vh(r.aggregatedOutput)??Vh(r.aggregated_output)??e.streamBuffers.get(o)??"";e.streamBuffers.set(o,d);const c=hc(r.command)??hc(a.command)??"command",l=Mh(r,t.method??"");await lh({completedAt:Ch(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Hh(r.actions)??Hh(r.commandActions),command:c,cwd:hc(r.cwd)??hc(a.cwd),durationMs:Wh(r.durationMs)??Wh(r.duration_ms),exitCode:Wh(r.exitCode)??Wh(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Ch(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:wh(t)})}(e,t,i));if("filechange"===o||a.includes("fileChange")||"turn/diff/updated"===a||a.includes("turn_diff"))return void(await async function(e,t,n){const a=mc(t.params)??{},r=n??a,i=xh(t)??`file-change:${wh(t)??"turn"}`,o=Th(r)??Th(a),s=Hh(r.changes)??Hh(a.changes)??[],d=function(e,t){const n=[hc(e.path),hc(e.filePath),hc(e.file_path),...t.flatMap(e=>{const t=mc(e);return[hc(t?.path),hc(t?.filePath),hc(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,s);await lh({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Wh(r.additions)??Sh(o,"+"),changes:s,deletions:Wh(r.deletions)??Sh(o,"-"),diff:o,kind:"fileChange",paths:d,status:Mh(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Ch(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:wh(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=mc(t.params)??{},a=hc(n.requestId)??hc(n.id);if(!a)return;sm.delete(Bh(e,a));const r=dm.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=Dm(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:Kh(n.result),status:"resolved"},status:"COMPLETED"});i&&of(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=mc(t.params),a=hc(mc(n?.error)?.message)??hc(n?.message)??t.error?.message??"Codex runtime error.";await lh({completedAt:new Date,content:a,itemId:`error:${wh(t)??Date.now()}`,kind:"ERROR",metadata:{details:Kh(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:wh(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>sf("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=mc(e.params),r=hc(a?.threadId);if(t&&r&&r!==t)return!1;const i=hc(a?.turnId);return!n||!i||i===n})(n,e,x)&&Wm(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=mc(t.params)??{},r=Ec(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?kh(e).includes("permissions")?"permissions":"approval":kh(e).includes("elicitation")?"userInput":null}(n);if(!i)return void e.runtime.rejectServerRequest(t.id,-32601,`Unsupported request method: ${n}`);const o="userInput"===i?function(e,t,n,a){return{kind:"userInput",message:hc(n.message),method:e,mode:hc(n.mode),questions:zh(n.questions),raw:Kh(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Hh(n.availableDecisions),changes:Hh(n.changes),command:hc(n.command),cwd:hc(n.cwd),itemId:hc(n.itemId),kind:a,method:e,raw:Kh(r),reason:hc(n.reason)??hc(n.message),requestId:t,requestKind:a,status:"pending",turnId:hc(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Fh(i);return e.runtime.respondToServerRequest(t.id,n),void(await lh({completedAt:new Date,content:jh(o),itemId:hc(a.itemId),kind:"APPROVAL",metadata:{...o,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:hc(a.turnId)}))}const s=await lh({content:jh(o),itemId:hc(a.itemId),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:o,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",threadId:e.threadId,turnId:hc(a.turnId)});sm.set(Bh(e.threadId,r),{messageId:s.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=>sf("Codex server request projection failed.",e))});try{if(!f&&await ih(l.runtime,e,s,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=rf(r);(async()=>{i&&await uf(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=mc((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return nf(hc(a?.name)??hc(a?.threadName)??hc(a?.thread_name)??hc(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await uf(t,a,n)})().catch(()=>{})}({cwd:s,runtime:l.runtime,seed:c,threadId:e});const h=await ch(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)&&vh(t)===e&&(!x||wh(t)===x),6e5,y.signal);const p=await async function(e,t,n,a){const r=nh(n,a);let i;for(const s of r)try{return await e.request("turn/start",{...t,input:s},3e4)}catch(o){if(i=o,!ah(o))throw o}throw i instanceof Error?i:new Error("Codex turn failed.")}(l.runtime,{threadId:e,cwd:s,...u?.model?{model:u.model}:{},...u?.reasoningEffort?{effort:u.reasoningEffort}:{},...u?.serviceTier?{serviceTier:u.serviceTier}:{},...oh(d,h,m),metadata:i},r,o);b=!0,x=ph(p),l.primed=!1,l.turnId=x??null,x&&l.interruptRequested&&await Km(l.runtime,x,e);const g=await N;if(await async function(e){await(um.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new $m(Eh(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(Eh(g));const w=await async function(e,t,n){try{const a=mc((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return gh((Array.isArray(a?.data)?a.data:[]).map(e=>mc(e)).filter(e=>!!e).filter(e=>!n||hc(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,x)||fh(g)||fh(p)||v,I=new Date,k=Dm(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:x??null});hh(e,t,"COMPLETED"),mh(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return dm.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"===mc(e.metadata)?.presentation)})??!1}(e,t)&&await Ku(e,{collaborationMode:"default"}),of(e,"chat.updated",await fm(e)),k&&of(e,"message.completed",k),of(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=lf((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=mc((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return lf((Gh(n?.data)??Gh(n?.items)??Gh(n?.threads)??[]).find(e=>hc(e.id)===t))}catch{return null}}(e,t);n&&await hf(t,n)}(df(a),e),await Jl(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!b;mh(e,t,a);const i=new Date;if(A instanceof $m){hh(e,t,"COMPLETED");const o=Dm(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,of(e,"chat.updated",await fm(e)),o&&of(e,"message.completed",o),void of(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}hh(e,t,"FAILED");const o=Dm(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,of(e,"chat.updated",await fm(e)),o&&of(e,"message.failed",{...o,error:a}),of(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),um.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(lm.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=dm.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await ym((await qm(await fm(e))).accountId??n.accountId),a=new Date,r=await Rm({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=Dm(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&of(e,"message.updated",i)}catch(A){const a=Dm(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&of(e,"message.updated",a)}}(e)).catch(()=>{});lm.set(e,t),t.finally(()=>{lm.get(e)===t&&lm.delete(e)})}(e):function(e){qm(async function(e){try{return await fm(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,o,s,d,c))}(c,m,h.id,e,r,i,t,l,a,n),{assistantMessage:h,runId:m}}var $m=class extends Error{};async function qm(e){const t=await e;if(!t)throw new Sd(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||dm.get(t.id)?.primed)return t;const n=await Vd.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:hr(await Nc({accountId:e.id,args:cf(e.args),command:e.command,environment:fc(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?_m(a.get(r.id)):-1;if(r&&i>=0)return t;const o=function(e,t){return e.map((e,n)=>({account:e,index:n,score:_m(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(n,a);if(!o||o.id===t.accountId)return t;if(_m(a.get(o.id))<0)return t;const s=await Ku(t.id,{accountId:o.id});Jl(t.id,o.id).catch(()=>{});const d=await Am(t.id,s);return of(t.id,"chat.updated",d),d}function _m(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Um(e.secondary)?"weekly":Um(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-zm(e.usedPercent));return t.length?Math.min(...t):0}function Um(e){return zm(e?.usedPercent??0)>=100}function zm(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Om(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 Sd(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 Sd(400,"Image attachments must be 6 MB or smaller.");const o=Fm(e.name,a.split("/").at(-1)??"image"),s=`data:${a};base64,${r}`;return{message:{id:zt(),kind:"image",mimeType:a,name:o,size:i,url:s},runtime:{type:"image",url:s}}}async function jm(e,t){const n=await async function(e,t){return im(await rm(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:zt(),kind:"file",name:Fm(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Fm(e,t){const n=e?.trim();return(n?ln(n):t).slice(0,160)||"attachment"}function Bm(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 Gm(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function Hm(e,t){if(!af(e.title))return null;const n=t.trim();return n||null}function Wm(e,t){const n=(um.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return um.set(e,a),a.finally(()=>{um.get(e)===a&&um.delete(e)}),n}async function Km(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 Vm(e,t){const n={...e};return delete n[t],n}async function Qm(e,t){for(let n=0;n<3;n+=1){const a=await Xm(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 Xm(e,t){try{const n=mc((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return Jm(Gh(n?.data)??Gh(n?.items)??Gh(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 Jm(Gh(mc(mc(n.result)?.thread)?.turns)??[],!1)}function Jm(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>Zm(Ym(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!th(eh(i)))continue;const e=Zm(Ym(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Ym(e){return hc(e.id)??hc(e.turnId)??hc(e.turn_id)??null}function Zm(e){const t=e?.trim();return t||null}function eh(e){return(hc(e.status)??hc(e.turnStatus)??hc(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function th(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function nh(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"},o=(e,t)=>[i,...a.map(t=>({[e]:t.message.url,type:"image"})),...t?r.map(e=>e.runtime):[]],s=[o("url",!0)];return a.length&&s.push(o("image_url",!0)),r.length&&(s.push(o("url",!1)),a.length&&s.push(o("image_url",!1))),s}function ah(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 rh(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 ih(e,t,n,a){const r=t?"thread/resume":"thread/start",i=mc((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),o=hc(mc(i?.thread)?.id)??hc(i?.threadId)??hc(i?.thread_id)??t;if(!o)throw new Error("Codex did not return a thread id.");return o}function oh(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:dh(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function sh(e,t=null){return"plan"!==e?{}:{collaborationMode:dh(e,t)}}function dh(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function ch(e,t,n){const a=ef(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=mc(mc((await e.request("config/read",{},3e4)).result)?.config),n=ef(hc(t?.model));if(r=r??tf(t?.model_reasoning_effort)??tf(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=mc((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=mc(e),n=ef(hc(t?.id))??ef(hc(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function lh(e){return async function(e,t){if(!e)return t();const n=mm.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);mm.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),mm.get(e)===i&&mm.delete(e)}}(uh(e),async()=>{const t=Sm(e.threadId),n=function(e,t){const n=uh(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?Dm(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):Pm(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=uh(e);return r&&t.messageKeys.set(r,a.id),of(e.threadId,n?"message.updated":"message.created",a),a})}function uh(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 mh(e,t,n){const a=dm.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=Bh(e,r.requestId),a=sm.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),sm.delete(t)}const a=Dm(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&of(e,"message.updated",a)}}function hh(e,t,n){const a=dm.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=Dm(e,r.id,{completedAt:new Date,status:n});a&&of(e,"message.updated",a)}}function fh(e){const t=mc(e.result),n=mc(e.params),a=mc(n?.payload)??n??t;return gh(mc(n?.turn)??mc(t?.turn))??Vh(t?.text)??Vh(t?.content)??Vh(a?.text)??Vh(a?.content)??Vh(a?.delta)??Vh(a?.message)??""}function ph(e){const t=mc(e.result),n=mc(e.params);return hc(t?.turnId)??hc(t?.turn_id)??hc(n?.turnId)??hc(n?.turn_id)??hc(mc(t?.turn)?.id)??hc(mc(n?.turn)?.id)}function gh(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=mc(e);return"agentMessage"!==t?.type?null:Vh(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function vh(e){const t=mc(e.params),n=mc(e.result),a=mc(t?.event);return hc(t?.threadId)??hc(t?.thread_id)??hc(n?.threadId)??hc(n?.thread_id)??hc(a?.threadId)??hc(a?.thread_id)}function wh(e){const t=mc(e.params),n=mc(e.result),a=bh(e);return hc(t?.turnId)??hc(n?.turnId)??hc(a?.turnId)??ph(e)}function xh(e){const t=mc(e.params),n=mc(e.result),a=bh(e);return hc(t?.itemId)??hc(n?.itemId)??hc(a?.id)}function bh(e){const t=mc(e.params),n=mc(e.result),a=mc(t?.payload);return mc(t?.item)??mc(n?.item)??mc(a?.item)}function yh(e){const t=mc(e.params),n=mc(t?.event);return Vh(t?.delta)??Vh(t?.text)??Vh(t?.output)??Vh(n?.delta)??Vh(n?.text)}function Nh(e,t){const n=mc(e.params),a=mc(e.result);return[t,n,mc(n?.event),mc(n?.payload),a].map(Ih).find(e=>!!e?.trim())}function Ih(e){if(e)return Vh(e.reasoning)??Vh(e.reasoningText)??Vh(e.reasoning_text)??Vh(e.summary)??Mm(e.summary)??Mm(e.content)??Vh(e.text)??Vh(e.output)}function kh(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Ah(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Ch(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Eh(e){const t=mc(e.params);return hc(mc(t?.error)?.message)??hc(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Mh(e,t){const n=hc(e?.status);return n?kh(n):t.includes("failed")||t.includes("error")?"failed":Ch({method:t})?"completed":"running"}function Th(e){return Vh(e.diff)??Vh(e.unifiedDiff)??Vh(e.unified_diff)??Vh(e.patch)}function Sh(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Ph(e){const t=kh(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Dh(e){return kh(e.method??"").includes("start")}function Lh(e){const t=kh(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Rh(e,t=e){const n=_h(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=_h(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=_h(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 o=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([_h(e,["input_tokens","inputTokens"]),_h(e,["output_tokens","outputTokens"]),_h(e,["reasoning_output_tokens","reasoningOutputTokens"])]),s=a??o;if(null===s)return null;const d=Math.min(s,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 $h(e,t=0){if(t>4)return;const n=mc(e);if(!n)return;const a=kh(hc(n.type)??""),r=kh(hc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=$h(n[i],t+1);if(e)return e}}function qh(e,t){for(const n of t){const t=mc(e[n]);if(t)return t}}function _h(e,t){for(const n of t){const t=Uh(e[n]);if(void 0!==t)return t}}function Uh(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function zh(e){return Array.isArray(e)?e.map(e=>mc(e)).filter(e=>!!e).map(e=>({header:hc(e.header),id:hc(e.id)??zt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Oh(e.options),question:hc(e.question)??hc(e.header)??"Answer",selectionLimit:Wh(e.selectionLimit)??Wh(e.selection_limit)})):[]}function Oh(e){return Array.isArray(e)?e.map(e=>mc(e)).filter(e=>!!e).map(e=>({description:hc(e.description),label:hc(e.label)??hc(e.value)??""})).filter(e=>e.label):[]}function jh(e){return"userInput"===e.kind?hc(e.message)??"Codex needs more information before it can continue.":hc(e.reason)??hc(e.command)??"Codex needs approval before it can continue."}function Fh(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function Bh(e,t){return`${e}:${t}`}function Gh(e){return Array.isArray(e)?e.map(e=>mc(e)).filter(e=>!!e):null}function Hh(e){if(Array.isArray(e))return e.map(Kh)}function Wh(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Kh(e){return JSON.parse(JSON.stringify(e))}function Vh(e){return"string"==typeof e&&e.length>0?e:void 0}function Qh(e){if(null===e)return null;const t=e.trim();if(!t)throw new Sd(400,"Runtime option cannot be empty.");return t}function Xh(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Sd(400,"reasoningEffort is invalid.");return e}function Jh(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Sd(400,"serviceTier is invalid.")}function Yh(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Sd(400,"collaborationMode is invalid.")}function Zh(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Sd(400,"permissionMode is invalid.")}function ef(e){const t=e?.trim();return t||null}function tf(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 af(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 rf(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 of(e,t,n){Fu(e,t,n)}function sf(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function df(e){return gc.getRuntime({accountId:e.id,args:cf(e.args),command:e.command,environment:fc(e.environment),workingDirectory:null})}function cf(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function lf(e){const t=mc(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=nf(hc(i)??"");if(e)return e}const a=nf(hc(t.title)??"");if(a&&!af(a))return a;const r=mc(t.thread);return r?lf(r):null}async function uf(e,t,n){const a=nf(n);if(!a||af(a))return!1;const r=await Wu(t);return!(r?.title&&!af(r.title))&&(await hf(t,a),mf(e,t,a),!0)}async function mf(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function hf(e,t){const n=nf(t);n&&!af(n)&&of(e,"chat.updated",await Am(e,await Ku(e,{title:n})))}var ff=Pn({action:()=>gf,loader:()=>pf});async function pf({request:e}){try{return Ld(e,["GET"]),await Yd(e),Pd(await async function(){const[e,t]=await Promise.all([Hu(),Nm()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...dm.keys()]);return(await Promise.all([...a].map(e=>Am(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 jd(t)}}async function gf({request:e}){try{Ld(e,["POST"]),await Yd(e);const t=await Rd(e);return Pd(await async function(e){const t=await ym(e.accountId),n=Yu(e.workingDirectory),a=void 0===e.collaborationMode?"default":Yh(e.collaborationMode),r=void 0===e.permissionMode?"default":Zh(e.permissionMode),i=df(t),o=await ih(i,null,n),s=await Ku(o,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:Qh(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:Xh(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Jh(e.serviceTier),title:nf(e.title??"")??null,workingDirectory:n}),d=await Tm(o);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await Am(o,s);return of(o,"chat.updated",c),c}({accountId:$d(t.accountId,"accountId",{required:!0}),autoRotateAccount:_d(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:$d(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:$d(t.model,"model",{maxLength:160}),reasoningEffort:vf(t.reasoningEffort,"reasoningEffort"),serviceTier:vf(t.serviceTier,"serviceTier"),collaborationMode:vf(t.collaborationMode,"collaborationMode"),permissionMode:vf(t.permissionMode,"permissionMode"),title:$d(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return jd(t)}}function vf(e,t){return null===e?null:$d(e,t,{maxLength:80})}var wf=Pn({action:()=>bf,loader:()=>xf});async function xf({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await fm(Od(t,"chatId")))}catch(n){return jd(n)}}async function bf({request:e,params:t}){try{await Yd(e);const n=Od(t,"chatId");if("PATCH"===e.method){const t=await Rd(e);return Pd(await pm(n,{accountId:$d(t.accountId,"accountId"),autoRotateAccount:_d(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:$d(t.model,"model",{maxLength:160}),reasoningEffort:yf(t.reasoningEffort,"reasoningEffort"),serviceTier:yf(t.serviceTier,"serviceTier"),collaborationMode:yf(t.collaborationMode,"collaborationMode"),permissionMode:yf(t.permissionMode,"permissionMode"),title:$d(t.title,"title",{maxLength:160}),workingDirectory:$d(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Pd(await gm(n));Dd(e.method)}catch(n){return jd(n)}}function yf(e,t){return null===e?null:$d(e,t,{maxLength:80})}var Nf=Pn({loader:()=>If});async function If({request:e,params:t}){try{return Ld(e,["GET"]),await Yd(e),Pd(await async function(e){return await fm(e),{usage:await Zl(e)}}(Od(t,"chatId")))}catch(n){return jd(n)}}var kf=Pn({loader:()=>Af});async function Af({request:e,params:t}){try{Ld(e,["GET"]),await Yd(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Sd(400,"path is required.");return Pd(await am(Od(t,"chatId"),a,zd(n,"line",0)||null))}catch(n){return jd(n)}}var Cf=Tn(wn);async function Ef(e){const t=await Tf(e),n=await Sf(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await Pf(t.cwd),r=await Df(t.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),[i,o]=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 Df(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),s=(await Lf(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:o,behind:i,branch:a,changedFiles:s,clean:0===s.length,isRepo:!0,root:n,upstream:r}}async function Mf(e,t){const n=await Tf(e);if("RUNNING"===n.status)throw new Sd(409,"Git actions are disabled while Codex is running.");if(!(await Sf(n.cwd)))throw new Sd(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Rf(t.branch);a=await Lf(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Rf(t.branch);await Lf(n.cwd,["check-ref-format","--branch",e]),a=await Lf(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Sd(400,"Commit message is required.");await Lf(n.cwd,["add","-A"]),a=await Lf(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Lf(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Sd(400,"Unsupported git action.");a=await Df(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Lf(n.cwd,["push"]):await async function(e){await Lf(e,["remote","get-url","origin"]);const t=await Pf(e);if(!t)throw new Sd(400,"Cannot push while detached from a branch.");return Lf(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:qf(t.action),output:a,status:await Ef(e)}}async function Tf(e){const t=await Vu(e);if(!t)throw new Sd(400,"Chat does not have a working directory.");return{cwd:Yu(t),status:bm(e)}}async function Sf(e){return Df(e,["rev-parse","--show-toplevel"])}async function Pf(e){return await Df(e,["symbolic-ref","--quiet","--short","HEAD"])??await Df(e,["rev-parse","--short","HEAD"])}async function Df(e,t){try{return await Lf(e,t)}catch{return null}}async function Lf(e,t){try{const n=await Cf("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return $f(n.stdout,n.stderr)}catch(n){throw new Sd(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return $f("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 Rf(e){const t=e?.trim();if(!t)throw new Sd(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Sd(400,"Branch name is invalid.");return t}function $f(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function qf(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 _f({request:e,params:t}){try{Ld(e,["GET"]),await Yd(e);const n=Od(t,"chatId"),a=Od(t,"operation"),r=new URL(e.url);if("status"===a)return Pd(await Ef(n));if("branches"===a)return Pd(await async function(e){const t=await Tf(e);if(!(await Sf(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Pf(t.cwd);return{branches:(await Lf(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 Df(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Pd(await async function(e,t){const n=await Tf(e);if(!(await Sf(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=$f(await Df(n.cwd,["diff","--stat",...a]),await Df(n.cwd,["diff","--cached","--stat",...a]));return{diff:$f(await Df(n.cwd,["diff","--no-ext-diff",...a]),await Df(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return Pd(await async function(e){const t=await Tf(e);return await Sf(t.cwd)?{commits:(n=await Df(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,o,...s]=e.split("");return t&&n?{authorEmail:r??"",authorName:a??"",authoredAt:i??"",hash:t,refs:(o??"").split(",").map(e=>e.trim()).filter(Boolean),shortHash:n,subject:s.join("")||"(no subject)"}:null}).filter(e=>!!e)),isRepo:!0}:{commits:[],isRepo:!1};var n}(n));throw new Sd(404,"Git operation not found.")}catch(n){return jd(n)}}async function Uf({request:e,params:t}){try{if(Ld(e,["POST"]),await Yd(e),"action"!==Od(t,"operation"))throw new Sd(404,"Git operation not found.");const n=await Rd(e),a={action:zf(n.action),branch:$d(n.branch,"branch",{maxLength:240}),message:$d(n.message,"message",{maxLength:5e3})};return Pd(await Mf(Od(t,"chatId"),a))}catch(n){return jd(n)}}function zf(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Sd(400,"action is invalid.")}async function Of({request:e,params:t}){try{Ld(e,["GET"]),await Yd(e);const n=new URL(e.url);return Pd(await vm(Od(t,"chatId"),zd(n,"afterSequence",0),zd(n,"limit",50)))}catch(n){return jd(n)}}async function jf({request:e,params:t}){try{Ld(e,["POST"]),await Yd(e);const n=await Rd(e),a={content:Bf(n.content),accountId:$d(n.accountId,"accountId"),attachments:Gf(n.attachments),collaborationMode:Vf(n.collaborationMode,"collaborationMode"),delivery:Ff(n.delivery),metadata:Ud(n.metadata,"metadata")};return Pd(await xm(Od(t,"chatId"),a),{status:201})}catch(n){return jd(n)}}function Ff(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Sd(400,"delivery is invalid.")}}function Bf(e){if(null==e)return"";if("string"!=typeof e)throw new Sd(400,"content must be a string.");if(e.length>4e4)throw new Sd(400,"content must be 40000 characters or fewer.");return e.trim()}function Gf(e){if(void 0!==e){if(!Array.isArray(e))throw new Sd(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Sd(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Hf(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Wf(n.mimeType,`attachments[${t}].mimeType`,80),name:Wf(n.name,`attachments[${t}].name`,160),size:Kf(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Wf(n.name,`attachments[${t}].name`,160),path:Hf(n.path,`attachments[${t}].path`,4096),size:Kf(n.size,`attachments[${t}].size`)};throw new Sd(400,`attachments[${t}].kind is invalid.`)})}}function Hf(e,t,n){if("string"!=typeof e||!e.trim())throw new Sd(400,`${t} is required.`);if(e.length>n)throw new Sd(400,`${t} is too large.`);return e}function Wf(e,t,n){if(null!=e){if("string"!=typeof e)throw new Sd(400,`${t} must be a string.`);if(e.length>n)throw new Sd(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Kf(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Sd(400,`${t} must be a positive number.`);return e}}function Vf(e,t){return null===e?null:$d(e,t,{maxLength:80})}async function Qf({request:e,params:t}){try{return Ld(e,["POST"]),await Yd(e),Pd(await async function(e){if("RUNNING"!==(await fm(e)).status)throw new Sd(409,"There is no running task to stop.");const t=dm.get(e);if(!t?.runId)throw new Sd(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await Km(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."}}(Od(t,"chatId")))}catch(n){return jd(n)}}async function Xf({request:e,params:t}){try{Ld(e,["POST"]),await Yd(e);const n=await Rd(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Sd(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Pd(await wm(Od(t,"chatId"),Od(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return jd(n)}}async function Jf({request:e}){try{return Ld(e,["GET"]),await Yd(e),Pd(await Xu(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return jd(t)}}async function Yf({request:e}){try{Ld(e,["POST"]),await Yd(e);const t=await Rd(e),n={parentPath:$d(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:$d(t.name,"name",{required:!0,maxLength:255})};return Pd(await Ju(n.parentPath,n.name),{status:201})}catch(t){return jd(t)}}var Zf={entry:{module:"/assets/entry.client-Bt-W9tr6.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/react-dom-Bppadr6u.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-B6reKqFo.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/react-dom-Bppadr6u.js","/assets/document-title-bwEcQkgI.js","/assets/session-provider-BFqptX_P.js"],css:["/assets/root-BDyfnfyW.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-xfBRZuAz.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/label-BLnKkf67.js","/assets/session-provider-BFqptX_P.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-Bl4qOwh7.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/app-shell-D4VZoy6V.js","/assets/label-BLnKkf67.js","/assets/document-title-bwEcQkgI.js","/assets/session-provider-BFqptX_P.js","/assets/react-dom-Bppadr6u.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-D-i6W4Ao.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/app-shell-D4VZoy6V.js","/assets/label-BLnKkf67.js","/assets/document-title-bwEcQkgI.js","/assets/session-provider-BFqptX_P.js","/assets/react-dom-Bppadr6u.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-5ZSZb1GN.js",imports:["/assets/jsx-runtime-BUWBtJLv.js","/assets/app-shell-D4VZoy6V.js","/assets/label-BLnKkf67.js","/assets/document-title-bwEcQkgI.js","/assets/session-provider-BFqptX_P.js","/assets/react-dom-Bppadr6u.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/health-OjIoaxn7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.status-FGYJfLVM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.exchange-CkPWDiGV.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.session-DOeXMy_2.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts-x_2c5-qG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.export-CwjXUcyG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-Km-76sRE.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-BksU0sQ7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-ChGZGvfx.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.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-z2pU64qI.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-VIVpVZrj.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-C9iUvNFt.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-CLzgv3py.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-Bqhz8sDl.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-C6-gVaXw.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-DaXHa-ln.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-DlBgjpCD.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-DVZKcoNV.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-8Xtyz4hF.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-iVzJcgvw.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-B71lrxkc.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-BLhOUK8A.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-B0tllRDq.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-9317aaeb.js",version:"9317aaeb",sri:void 0},ep="build/client",tp="/",np={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},ap=!0,rp=!1,ip=[],op={mode:"lazy",manifestPath:"/__manifest"},sp="/",dp={module:Dn},cp={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:va},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ta},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:Pa},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:kd},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Cd},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Md},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Fd},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:oc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:dc},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:lc},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:vl},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:yl},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Il},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Al},"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:Ml},"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:Pl},"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:Ol},"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:Fl},"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:Gl},"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:Wl},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:ff},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:wf},"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:Nf},"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:kf},"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:Pn({action:()=>Uf,loader:()=>_f})},"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:Pn({action:()=>jf,loader:()=>Of})},"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:Pn({action:()=>Qf})},"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:Pn({action:()=>Xf})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:Pn({action:()=>Yf,loader:()=>Jf})}},lp=!1;export{lp as allowedActionOrigins,Zf as assets,ep as assetsBuildDirectory,tp as basename,dp as entry,np as future,rp as isSpaMode,ip as prerender,sp as publicPath,op as routeDiscovery,cp as routes,ap as ssr};