xedoc-cli 0.1.1 → 0.1.2

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 (42) hide show
  1. package/README.md +3 -4
  2. package/build/client/assets/app-layout-d99dmiup.js +1 -0
  3. package/build/client/assets/app-shell-Dl69tJhv.js +1 -0
  4. package/build/client/assets/chat-B5FboIxH.js +1 -0
  5. package/build/client/assets/{connect-0oYrfAJT.js → connect-CHSFTXwk.js} +1 -1
  6. package/build/client/assets/{document-title-Dn4sU16M.js → document-title-B6Yxyaur.js} +1 -1
  7. package/build/client/assets/{entry.client-CM3vH2bv.js → entry.client-BlQXdBHx.js} +1 -1
  8. package/build/client/assets/home-Bahc85Gk.js +1 -0
  9. package/build/client/assets/{label-FUU4pCWu.js → label-C7i5Qt-O.js} +1 -1
  10. package/build/client/assets/manifest-fe1036ff.js +1 -0
  11. package/build/client/assets/{react-dom-KYDDPtOx.js → react-dom-CMuFyqmq.js} +1 -1
  12. package/build/client/assets/{root-DKEnPIjJ.js → root-feKzGV0p.js} +1 -1
  13. package/build/client/assets/{session-provider-FKGj36EG.js → session-provider-2Ozr-CuV.js} +1 -1
  14. package/build/server/index.js +1 -1
  15. package/package.json +2 -2
  16. package/prisma/schema.prisma +2 -18
  17. package/server/sqlite-setup.mjs +23 -28
  18. package/build/client/assets/api.workspaces.directories-B0tllRDq.js +0 -0
  19. package/build/client/assets/app-layout-Bb7v-3GP.js +0 -1
  20. package/build/client/assets/app-shell-Bn5JIK3M.js +0 -1
  21. package/build/client/assets/chat-BoNZJwBl.js +0 -1
  22. package/build/client/assets/home-DUuienY0.js +0 -1
  23. package/build/client/assets/manifest-9a2680ac.js +0 -1
  24. /package/build/client/assets/{api.accounts-CHoT6sYP.js → api.accounts-x_2c5-qG.js} +0 -0
  25. /package/build/client/assets/{api.accounts._accountId-BixDYyx8.js → api.accounts._accountId-BksU0sQ7.js} +0 -0
  26. /package/build/client/assets/{api.accounts._accountId.authenticate-CLzgv3py.js → api.accounts._accountId.authenticate-Bp51NHGy.js} +0 -0
  27. /package/build/client/assets/{api.accounts._accountId.authenticate.callback-Bqhz8sDl.js → api.accounts._accountId.authenticate.callback-DLgNMRyd.js} +0 -0
  28. /package/build/client/assets/{api.accounts._accountId.models-VIVpVZrj.js → api.accounts._accountId.models-DGbCmT_9.js} +0 -0
  29. /package/build/client/assets/{api.accounts._accountId.rate-limits-C9iUvNFt.js → api.accounts._accountId.rate-limits-DZh4HPLO.js} +0 -0
  30. /package/build/client/assets/{api.accounts._accountId.runtime-settings-6XNKTx--.js → api.accounts._accountId.runtime-settings-ChGZGvfx.js} +0 -0
  31. /package/build/client/assets/{api.accounts.export-romutOT6.js → api.accounts.export-CwjXUcyG.js} +0 -0
  32. /package/build/client/assets/{api.accounts.import-BiWq2jPz.js → api.accounts.import-Km-76sRE.js} +0 -0
  33. /package/build/client/assets/{api.chats-C6-gVaXw.js → api.chats-DZ_6Q7rY.js} +0 -0
  34. /package/build/client/assets/{api.chats._chatId-DaXHa-ln.js → api.chats._chatId-BEX87qHo.js} +0 -0
  35. /package/build/client/assets/{api.chats._chatId.context-DlBgjpCD.js → api.chats._chatId.context-v4G0lNKq.js} +0 -0
  36. /package/build/client/assets/{api.chats._chatId.files-DVZKcoNV.js → api.chats._chatId.files-BrN7O-wM.js} +0 -0
  37. /package/build/client/assets/{api.chats._chatId.git._operation-8Xtyz4hF.js → api.chats._chatId.git._operation-CiUW8Knm.js} +0 -0
  38. /package/build/client/assets/{api.chats._chatId.interrupt-B71lrxkc.js → api.chats._chatId.interrupt-2DlVPDlX.js} +0 -0
  39. /package/build/client/assets/{api.chats._chatId.messages-iVzJcgvw.js → api.chats._chatId.messages-cDawTuvN.js} +0 -0
  40. /package/build/client/assets/{api.chats._chatId.server-requests._requestId.respond-BLhOUK8A.js → api.chats._chatId.server-requests._requestId.respond-CTlCffOk.js} +0 -0
  41. /package/build/client/assets/{api.users-BLvMDkJE.js → api.workspaces.directories-nVoleT74.js} +0 -0
  42. /package/build/client/assets/{jsx-runtime-B9QlDcuB.js → jsx-runtime-Dafdqr5g.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 E,useTheme as M}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as D,useEffect as L,useMemo as q,useRef as R,useState as $,useSyncExternalStore as O}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 J,ChevronRight as Q,ChevronRightIcon as Y,CircleCheckIcon as X,Clock as Z,Code2 as ee,Cpu as te,Download as ne,ExternalLink as ae,Eye as re,File as ie,FileCode as se,FileDiff as oe,Filter as de,Folder as ce,FolderOpen as le,FolderPlus as ue,Gauge as me,GitBranch as he,GitCommitHorizontal as fe,Home as pe,Image as ge,Info as ve,InfoIcon as we,KeyRound as xe,Laptop as ye,ListChecks as be,Loader2 as Ne,Loader2Icon as Ie,LockKeyhole as ke,LogOut as Ce,Mail as Ae,Menu as Ee,MessageSquare as Me,Moon as Te,MoreHorizontal as Se,OctagonXIcon as Pe,PanelLeftIcon as De,Paperclip as Le,Pencil as qe,PencilLine as Re,PlugZap as $e,Plus as Oe,RefreshCw as _e,RotateCcw as Ue,RotateCw as ze,Search as je,Server as Fe,Settings as Be,Shield as Ge,ShieldCheck as He,Square as Ke,SquarePen as We,Sun as Ve,Terminal as Je,Trash2 as Qe,TriangleAlertIcon as Ye,Upload as Xe,UserRound as Ze,X as et,XIcon as tt,Zap as nt}from"lucide-react";import{Tooltip as at}from"@base-ui/react/tooltip";import{clsx as rt}from"clsx";import{twMerge as it}from"tailwind-merge";import{Button as st}from"@base-ui/react/button";import{cva as ot}from"class-variance-authority";import{Input as dt}from"@base-ui/react/input";import{AlertDialog as ct}from"@base-ui/react/alert-dialog";import{mergeProps as lt}from"@base-ui/react/merge-props";import{useRender as ut}from"@base-ui/react/use-render";import{Dialog as mt}from"@base-ui/react/dialog";import{ScrollArea as ht}from"@base-ui/react/scroll-area";import{Separator as ft}from"@base-ui/react/separator";import{Menu as pt}from"@base-ui/react/menu";import gt from"react-markdown";import vt from"remark-gfm";import wt from"highlight.js/lib/core";import xt from"highlight.js/lib/languages/bash";import yt from"highlight.js/lib/languages/css";import bt from"highlight.js/lib/languages/go";import Nt from"highlight.js/lib/languages/json";import It from"highlight.js/lib/languages/javascript";import kt from"highlight.js/lib/languages/markdown";import Ct from"highlight.js/lib/languages/python";import At from"highlight.js/lib/languages/rust";import Et from"highlight.js/lib/languages/shell";import Mt from"highlight.js/lib/languages/sql";import Tt from"highlight.js/lib/languages/typescript";import St from"highlight.js/lib/languages/xml";import Pt from"highlight.js/lib/languages/yaml";import{Popover as Dt}from"@base-ui/react/popover";import{Switch as Lt}from"@base-ui/react/switch";import{io as qt}from"socket.io-client";import"dotenv/config";import{createHash as Rt,createHmac as $t,randomBytes as Ot,randomUUID as _t,scryptSync as Ut,timingSafeEqual as zt}from"node:crypto";import{Prisma as jt,PrismaClient as Ft}from"@prisma/client";import{chmodSync as Bt,constants as Gt,existsSync as Ht,mkdirSync as Kt,readFileSync as Wt,realpathSync as Vt,statSync as Jt}from"node:fs";import{homedir as Qt}from"node:os";import{basename as Yt,delimiter as Xt,dirname as Zt,extname as en,isAbsolute as tn,join as nn,relative as an,resolve as rn,sep as sn}from"node:path";import{execFile as on,spawn as dn}from"node:child_process";import{access as cn,copyFile as ln,mkdir as un,open as mn,readFile as hn,readdir as fn,realpath as pn,stat as gn}from"node:fs/promises";import{promisify as vn}from"node:util";var wn=Object.defineProperty,xn=(e,t)=>{let n={};for(var a in e)wn(n,a,{get:e[a],enumerable:!0});return t||wn(n,Symbol.toStringTag,{value:"Module"}),n},yn=xn({default:()=>Nn,streamTimeout:()=>bn}),bn=5e3;function Nn(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&g(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),bn+1e3);const{pipe:h,abort:f}=v(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var In=({...e})=>{const{theme:t="system"}=M();return x(_,{theme:t,className:"toaster group",icons:{success:x(X,{className:"size-4"}),info:x(we,{className:"size-4"}),warning:x(Ye,{className:"size-4"}),error:x(Pe,{className:"size-4"}),loading:x(Ie,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function kn(...e){return it(rt(e))}function Cn({delay:e=0,...t}){return x(at.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function An({...e}){return x(at.Root,{"data-slot":"tooltip",...e})}function En({...e}){return x(at.Trigger,{"data-slot":"tooltip-trigger",...e})}function Mn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(at.Portal,{children:x(at.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(at.Popup,{"data-slot":"tooltip-content",className:kn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(at.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var Tn="xedoc";function Sn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Tn}`:Tn}(e);L(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Tn}},[t])}var Pn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Dn=class extends Error{request;constructor(e,t){super(function(e,t){const n=t instanceof Error?t.message:String(t);return["No HTTP response received.",`${e.method} ${e.url}`,n,"Check the server URL, CORS settings, network reachability, and whether the API is running."].filter(Boolean).join("\n")}(e,t)),this.request=e}};async function Ln(e){return Gn(e.serverUrl,"/api/auth/session",{token:e.token})}async function qn(e,t){return Gn(e.serverUrl,"/api/users",{body:t,token:e.token})}async function Rn(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function $n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:{},token:e.token})}async function On(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function _n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function Un(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return Gn(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function zn(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function jn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function Fn(e,t,n=0){return Gn(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Bn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function Gn(e,t,n){const a=`${e}${t}`,r=n.method??(void 0===n.body?"GET":"POST");let i;try{i=await fetch(a,{method:r,headers:{Accept:"application/json",...void 0===n.body?{}:{"Content-Type":"application/json"},...n.token?{Authorization:`Bearer ${n.token}`}:{}},body:void 0===n.body?void 0:JSON.stringify(n.body)})}catch(d){throw new Dn({method:r,url:a},d)}const s=await i.text(),o=function(e,t){if(!e)return null;try{return JSON.parse(e)}catch(d){throw new Error(["Server returned invalid JSON.",t,d instanceof Error?d.message:void 0,Hn(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Pn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,Kn(o)??Hn(s)].filter(Boolean).join("\n"),i.status,a);return o}function Hn(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function Kn(e){if(!e||"object"!=typeof e)return;const t=e.message;return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:void 0}function Wn(e,t){return{data:[...(e?.data??[]).filter(e=>e.id!==t.id),t].sort((e,t)=>e.sequence-t.sequence),nextCursor:Math.max(t.sequence,e?.nextCursor??0)}}var Vn={externalId:"xedoc.web.external-id",serverUrl:"xedoc.web.server-url",token:"xedoc.web.token",userId:"xedoc.web.user-id"};function Jn(){const e=Qn();e&&(Zn(e,"serverUrl"),Zn(e,"token"),Zn(e,"userId"))}function Qn(){return"undefined"==typeof window?null:window.localStorage}function Yn(e,t){return e.getItem(Vn[t])}function Xn(e,t,n){e.setItem(Vn[t],n)}function Zn(e,t){e.removeItem(Vn[t])}function ea(e){const t=e.trim();if(!t)throw new Error("Enter a server URL.");const n=/^[a-z][a-z\d+\-.]*:\/\//i.test(t)?t:`http://${t}`,a=new URL(n);return a.pathname=a.pathname.replace(/\/+$/,""),a.search="",a.hash="",a.toString().replace(/\/+$/,"")}var ta=S(void 0);function na({children:e}){const[t,n]=$(null),[a,r]=$(!1),i=O(ra,ia,sa),s=t,o=!i||!a;L(()=>{if(!i)return;const e=function(){const e=Qn();if(!e)return null;const t=Yn(e,"serverUrl"),n=Yn(e,"token"),a=Yn(e,"userId");return t&&n&&a?{serverUrl:t,token:n,userId:a}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Ln(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{Jn(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=ea(window.location.origin),{token:a}=await async function(e,t){return Gn(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i=function(){const e=Qn();if(!e)return`web-${Date.now().toString(36)}`;const t=Yn(e,"externalId");if(t)return Xn(e,"externalId",t),t;const n=`web-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;return Xn(e,"externalId",n),n}(),s={serverUrl:t,token:a,userId:(await qn({serverUrl:t,token:a},{externalId:i,name:"Web Browser"})).id};!function(e){const t=Qn();t&&(Xn(t,"serverUrl",e.serverUrl),Xn(t,"token",e.token),Xn(t,"userId",e.userId))}(s),n(s),r(!0)},[]),c=P(async()=>{s&&await Ln(s)},[s]),l=P(()=>{Jn(),n(null),r(!0)},[]),u=q(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ta.Provider,{value:u,children:e})}function aa(){const e=D(ta);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ra(){return()=>{}}function ia(){return!0}function sa(){return!1}var oa=xn({ErrorBoundary:()=>ma,Layout:()=>la,default:()=>ua,links:()=>ca,meta:()=>da});function da(){return[{title:Tn}]}function ca(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function la({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var ua=c(function(){const[e]=$(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(E,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(Cn,{children:[x(na,{children:x(i,{})}),x(In,{richColors:!0})]})})})}),ma=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),ha=ot("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function fa({className:e,variant:t="default",size:n="default",...a}){return x(st,{"data-slot":"button",className:kn(ha({variant:t,size:n,className:e})),...a})}function pa({className:e,type:t,...n}){return x(dt,{type:t,"data-slot":"input",className:kn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function ga({className:e,...t}){return x("label",{"data-slot":"label",className:kn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function va(){const[e,t]=$(""),[n,a]=$(""),[i,s]=$(null),[o,d]=$(null),[c,l]=$(!1),{loading:u,session:m,setup:f}=aa(),p=h(),g=!1===i;if(L(()=>{let e=!0;return d(null),async function(e){return Gn(e,"/api/auth/status",{token:null})}(ea(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await f(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?xe:$e,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password",children:"Server password"}),x(pa,{id:"server-password",autoComplete:g?"new-password":"current-password",placeholder:"Password",type:"password",value:e,onChange:e=>t(e.target.value),onKeyDown:t=>{"Enter"===t.key&&wa(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(pa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&wa(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(fa,{disabled:!wa(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ne,{className:"animate-spin"}):x(g?xe:$e,{}),g?"Set Password":"Connect"]})]})]})})}function wa(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var xa=xn({default:()=>ya}),ya=c(function(){return x(va,{})}),ba=xn({loader:()=>Na});function Na(){return m("/favicon.svg",301)}function Ia({...e}){return x(ct.Root,{"data-slot":"alert-dialog",...e})}function ka({...e}){return x(ct.Portal,{"data-slot":"alert-dialog-portal",...e})}function Ca({className:e,...t}){return x(ct.Backdrop,{"data-slot":"alert-dialog-overlay",className:kn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Aa({className:e,size:t="default",...n}){return y(ka,{children:[x(Ca,{}),x(ct.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:kn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Ea({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:kn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function Ma({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:kn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Ta({className:e,...t}){return x(ct.Title,{"data-slot":"alert-dialog-title",className:kn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Sa({className:e,...t}){return x(ct.Description,{"data-slot":"alert-dialog-description",className:kn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Pa({className:e,...t}){return x(fa,{"data-slot":"alert-dialog-action",className:kn(e),...t})}function Da({className:e,variant:t="outline",size:n="default",...a}){return x(ct.Close,{"data-slot":"alert-dialog-cancel",className:kn(e),render:x(fa,{variant:t,size:n}),...a})}function La({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:kn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}var qa=ot("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function Ra({className:e,variant:t="default",render:n,...a}){return ut({defaultTagName:"span",props:lt({className:kn(qa({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function $a({className:e,status:t}){return x(Ra,{className:e,variant:Oa(t),children:t.toLowerCase()})}function Oa(e){switch(e){case"ERROR":case"FAILED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}var _a={args:"",command:"",displayName:"",environment:""};function Ua({accounts:e,createFocusKey:t=0,session:n}){const[a,r]=$(_a),[i,s]=$(null),[o,d]=$(_a),[c,l]=$({}),[u,m]=$(null),h=R(null),f=R(null),p=R(null),g=A();L(()=>{if(t<=0)return;const e=window.setTimeout(()=>{f.current?.scrollIntoView({block:"start",behavior:"smooth"}),p.current?.focus()},80);return()=>window.clearTimeout(e)},[t]);const v=()=>g.invalidateQueries({queryKey:["accounts",n.userId]}),b=I({mutationFn:async(e={})=>{const t=await async function(e,t){return Gn(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...ja(a),displayName:a.displayName.trim(),userId:n.userId});return e.authenticate?{account:t,auth:await $n(n,t.id),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:({auth:e,popup:t})=>{r(_a),U.success("Account created."),v(),e&&S(e,t)}}),N=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...ja(o),displayName:o.displayName.trim()})},onError:e=>U.error(Ga(e)),onSuccess:()=>{s(null),d(_a),U.success("Account updated."),v()}}),k=I({mutationFn:({accountId:e})=>$n(n,e),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{v(),S(e,t.popup)}}),C=I({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(n,e,{redirectUrl:t.trim()}),onError:e=>U.error(Ga(e)),onSuccess:(e,t)=>{l(e=>({...e,[t.accountId]:""})),v(),"CONNECTED"!==e.status?U.info(e.message??"Callback accepted."):U.success("Account connected.")}}),E=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>U.error(Ga(e)),onSuccess:()=>{m(null),U.success("Account deleted."),v(),g.invalidateQueries({queryKey:["chats",n.userId]})}}),M=I({mutationFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/accounts/export?userId=${encodeURIComponent(t)}`,{token:e.token})}(n,n.userId),onError:e=>U.error(Ga(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),U.success(`Exported ${e.accounts.length} ${Ba(e.accounts.length)}.`)}}),T=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts,userId:n.userId}),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{U.success(`Imported ${e.imported} ${Ba(e.imported)}.`),v(),g.invalidateQueries({queryKey:["chats",n.userId]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){S(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&U.info(`${a} more ${Ba(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&U.success(`Connected ${a} imported ${Ba(a)}.`)}(e.authentications,t.popup)}});function S(e,t){if(e.authUrl)return Ka(e.authUrl,t),void U.info("Authentication page opened.");t?.close(),"AUTHENTICATING"!==e.status?U.success(e.message??"Account is connected."):U.info(e.message??"Authentication is still in progress.")}return y(w,{children:[y("div",{className:"grid gap-5",children:[y("section",{className:"grid gap-3",children:[y("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Authenticate accounts before using them for chats."})]}),y("div",{className:"text-xs text-muted-foreground",children:[e.length," ",Ba(e.length)]})]}),e.length?e.map(e=>{const t=c[e.id]??"",n="AUTHENTICATING"===e.status||!!e.lastAuthUrl,a=k.isPending&&k.variables?.accountId===e.id,r=C.isPending&&C.variables?.accountId===e.id;return x("div",{className:"grid gap-4 rounded-md border bg-background p-4",children:i?.id===e.id?y(w,{children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[y("h4",{className:"text-sm font-semibold",children:["Edit ",e.displayName]}),x("p",{className:"text-xs text-muted-foreground",children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),y(fa,{size:"sm",variant:"ghost",onClick:()=>{s(null),d(_a)},children:[x(et,{}),"Cancel"]})]}),x(za,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(fa,{className:"w-fit",disabled:!o.displayName.trim()||N.isPending,onClick:()=>N.mutate(),children:[N.isPending?x(Ne,{className:"animate-spin"}):x(W,{}),"Save account"]})]}):y(w,{children:[y("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-start",children:[y("div",{className:"min-w-0 space-y-2",children:[y("div",{className:"flex items-center gap-2",children:[x("h4",{className:"truncate text-sm font-semibold",children:e.displayName}),x($a,{status:e.status})]}),y("p",{className:"truncate font-mono text-xs text-muted-foreground",children:[e.command," ",e.args.join(" ")]}),e.environment?y("p",{className:"text-xs text-muted-foreground",children:[Object.keys(e.environment).length," env"," ",1===Object.keys(e.environment).length?"value":"values"]}):null,e.lastError?x("p",{className:"mt-2 whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:e.lastError}):null]}),y("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end",children:[y(fa,{disabled:a,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>{return t=e.id,void k.mutate({accountId:t,popup:Ha()});var t},children:[a?x(Ne,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(ze,{}):x(ae,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(fa,{size:"sm",variant:"outline",onClick:()=>function(e){var t;s(e),d({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(e),children:[x(qe,{}),"Edit"]}),y(fa,{size:"sm",variant:"destructive",onClick:()=>m(e),children:[x(Qe,{}),"Delete"]})]})]}),n?y("div",{className:"grid gap-4 rounded-md border bg-muted/25 p-3",children:[y("div",{children:[x("h5",{className:"text-sm font-medium",children:"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:"Open the auth URL, finish login, then paste the localhost callback response URL."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`auth-url-${e.id}`,children:"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(pa,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(fa,{size:"sm",variant:"outline",onClick:()=>Ka(e.lastAuthUrl??null),children:[x(ae,{}),"Open"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`callback-url-${e.id}`,children:"Callback response URL"}),x(La,{className:"min-h-20 font-mono text-xs",id:`callback-url-${e.id}`,placeholder:"http://localhost:1455/...",value:t,onChange:t=>l(n=>({...n,[e.id]:t.target.value}))})]}),x("div",{className:"flex justify-end",children:y(fa,{disabled:!t.trim()||r,onClick:()=>C.mutate({accountId:e.id,redirectUrl:t}),children:[r?x(Ne,{className:"animate-spin"}):x(W,{}),"Complete Login"]})})]}):null]})},e.id)}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h4",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account below or import account records from a JSON export."})]})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",ref:f,children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Create account"}),x("p",{className:"text-sm text-muted-foreground",children:"Use a readable name. Runtime fields are optional."})]}),x(za,{displayNameRef:p,form:a,onChange:r,prefix:"create-account"}),y("div",{className:"flex flex-wrap gap-2",children:[y(fa,{disabled:!a.displayName.trim()||b.isPending,onClick:function(){b.mutate({authenticate:!0,popup:Ha()})},children:[b.isPending?x(Ne,{className:"animate-spin"}):x(ae,{}),"Create & Authenticate"]}),y(fa,{disabled:!a.displayName.trim()||b.isPending,variant:"secondary",onClick:()=>b.mutate({}),children:[b.isPending?x(Ne,{className:"animate-spin"}):x(Oe,{}),"Create Only"]})]})]}),y("section",{className:"flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/30 p-4",children:[y("div",{className:"min-w-0",children:[x("h3",{className:"text-sm font-semibold",children:"Import / export"}),x("p",{className:"text-sm text-muted-foreground",children:"Move account records and runtime settings with JSON. Codex auth tokens stay on this server."})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:h,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Ha();try{const e=JSON.parse(await t.text());T.mutate({accounts:Fa(e),popup:n})}catch(a){n?.close(),U.error(Ga(a))}}}),y(fa,{disabled:T.isPending,variant:"secondary",onClick:()=>h.current?.click(),children:[T.isPending?x(Ne,{className:"animate-spin"}):x(Xe,{}),"Import JSON"]}),y(fa,{disabled:M.isPending,variant:"outline",onClick:()=>M.mutate(),children:[M.isPending?x(Ne,{className:"animate-spin"}):x(ne,{}),"Export JSON"]})]})]})]}),x(Ia,{open:!!u,onOpenChange:e=>{e||m(null)},children:y(Aa,{children:[y(Ea,{children:[x(Ta,{children:"Delete account?"}),y(Sa,{children:["This removes ",u?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ma,{children:[x(Da,{children:"Cancel"}),y(Pa,{disabled:E.isPending,variant:"destructive",onClick:()=>{u&&E.mutate(u.id)},children:[E.isPending?x(Ne,{className:"animate-spin"}):x(Qe,{}),"Delete"]})]})]})})]})}function za({displayNameRef:e,form:t,onChange:n,prefix:a}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-name`,children:"Display name"}),x(pa,{id:`${a}-name`,placeholder:"Work Codex",ref:e,value:t.displayName,onChange:e=>n({...t,displayName:e.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-command`,children:"Command"}),x(pa,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-args`,children:"Arguments"}),x(pa,{id:`${a}-args`,placeholder:"app-server",value:t.args,onChange:e=>n({...t,args:e.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-environment`,children:"Environment JSON"}),x(La,{className:"min-h-20 font-mono text-xs",id:`${a}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:t.environment,onChange:e=>n({...t,environment:e.target.value})})]})]})}function ja(e){const t={};if(e.command.trim()&&(t.command=e.command.trim()),e.args.trim()&&(t.args=e.args.split(/\s+/).map(e=>e.trim()).filter(Boolean)),e.environment.trim()){const n=JSON.parse(e.environment);if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("Environment must be a JSON object.");t.environment=n}return t}function Fa(e){if(Array.isArray(e))return e;if(e&&"object"==typeof e){const t=e.accounts;if(Array.isArray(t))return t}throw new Error("Import file must contain an accounts array.")}function Ba(e){return 1===e?"account":"accounts"}function Ga(e){return e instanceof Error?e.message:"Request failed."}function Ha(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Ka(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Wa({...e}){return x(mt.Root,{"data-slot":"dialog",...e})}function Va({...e}){return x(mt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ja({...e}){return x(mt.Portal,{"data-slot":"dialog-portal",...e})}function Qa({className:e,...t}){return x(mt.Backdrop,{"data-slot":"dialog-overlay",className:kn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ya({className:e,children:t,showCloseButton:n=!0,...a}){return y(Ja,{children:[x(Qa,{}),y(mt.Popup,{"data-slot":"dialog-content",className:kn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(mt.Close,{"data-slot":"dialog-close",render:x(fa,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:kn("flex flex-col gap-2",e),...t})}function Za({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:kn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(mt.Close,{render:x(fa,{variant:"outline"}),children:"Close"})]})}function er({className:e,...t}){return x(mt.Title,{"data-slot":"dialog-title",className:kn("font-heading text-base leading-none font-medium",e),...t})}function tr({className:e,...t}){return x(mt.Description,{"data-slot":"dialog-description",className:kn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function nr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ht.Root,{"data-slot":"scroll-area",className:kn("relative",e),...r,children:[x(ht.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:kn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(ar,{}),x(ht.Corner,{})]})}function ar({className:e,orientation:t="vertical",...n}){return x(ht.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:kn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(ht.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function rr({className:e,orientation:t="horizontal",...n}){return x(ft,{"data-slot":"separator",orientation:t,className:kn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function ir({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(Wa,{open:s,onOpenChange:r,children:y(Ya,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Xa,{className:"px-5 py-4",children:[x(er,{children:"Settings"}),x(tr,{children:"Manage the active server connection, accounts, and project details."})]}),x(rr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(sr,{active:"server"===t,icon:x(Fe,{}),label:"Server",onClick:()=>i("server")}),x(sr,{active:"accounts"===t,icon:x(Ze,{}),label:"Accounts",onClick:()=>i("accounts")}),x(sr,{active:"info"===t,icon:x(ve,{}),label:"Info",onClick:()=>i("info")})]}),x(nr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(or,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(Ua,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(dr,{}):null]})})]})]})})}function sr({active:e,icon:t,label:n,onClick:a}){return y(fa,{"aria-pressed":e,className:kn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function or({clearSession:e,refreshSession:t,session:n}){const[a,r]=$(!1),[i,s]=$(null);return y("div",{className:"grid gap-4",children:[y("div",{className:"rounded-md border bg-muted/30 p-3",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(Fe,{}),"API server"]}),x("div",{className:"mt-2 break-all text-sm text-muted-foreground",children:n.serverUrl})]}),y("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3",children:[y("div",{children:[x("div",{className:"text-sm font-medium",children:"Session status"}),x("div",{className:"text-sm text-muted-foreground",children:"Bearer token stored in this browser."})]}),null===i?null:x($a,{status:i?"ONLINE":"OFFLINE"})]}),x(rr,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(fa,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),U.success("Server session is healthy.")}catch(e){s(!1),U.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(_e,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(fa,{variant:"destructive",onClick:e,children:[x(Ce,{}),"Clear Session"]})]})]})}function dr(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(ve,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(ae,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Ae,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function cr({...e}){return x(pt.Root,{"data-slot":"dropdown-menu",...e})}function lr({...e}){return x(pt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function ur({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(pt.Portal,{children:x(pt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(pt.Popup,{"data-slot":"dropdown-menu-content",className:kn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function mr({className:e,inset:t,variant:n="default",...a}){return x(pt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:kn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function hr({...e}){return x(pt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function fr({className:e,inset:t,children:n,...a}){return y(pt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:kn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function pr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(ur,{"data-slot":"dropdown-menu-sub-content",className:kn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function gr({...e}){return x(pt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function vr({className:e,children:t,inset:n,...a}){return y(pt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:kn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(pt.RadioItemIndicator,{children:x(V,{})})}),t]})}function wr(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(cr,{children:[y(lr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x(Ve,{className:"size-4 dark:hidden"}),x(Te,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(ur,{align:"end",className:"w-40",children:[y(mr,{onClick:()=>e("light"),children:[x(Ve,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(mr,{onClick:()=>e("dark"),children:[x(Te,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(mr,{onClick:()=>e("system"),children:[x(ye,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}wt.registerLanguage("bash",xt),wt.registerLanguage("css",yt),wt.registerLanguage("go",bt),wt.registerLanguage("html",St),wt.registerLanguage("javascript",It),wt.registerLanguage("json",Nt),wt.registerLanguage("markdown",kt),wt.registerLanguage("python",Ct),wt.registerLanguage("rust",At),wt.registerLanguage("sh",Et),wt.registerLanguage("sql",Mt),wt.registerLanguage("tsx",Tt),wt.registerLanguage("typescript",Tt),wt.registerLanguage("xml",St),wt.registerLanguage("yaml",Pt);var xr=S(null);function yr({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=q(()=>new Set(t??[]),[t]),h=q(()=>function(e){const t=ki([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Ui(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}(e)||"CHAT"===e.kind&&"ASSISTANT"===e.role&&(0===e.content.trim().length&&"PENDING"!==e.status&&"STREAMING"!==e.status)}(e)).sort((e,t)=>e.sequence-t.sequence),n=new Map;for(const a of t){const e=a.turnId?`turn:${a.turnId}`:`message:${a.id}`,t=n.get(e);t?t.push(a):n.set(e,[a])}return Array.from(n.values()).flatMap(e=>e.some(e=>"STREAMING"===e.status||"PENDING"===e.status)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}(n).filter(e=>!m.has(e.id)),[m,n]),f=q(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=Mi(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=q(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Br(n))return n.id}return null}(h),[h]),[g,v]=$(null);return y(xr.Provider,{value:v,children:[f.map(t=>x(Nr,{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(Dr,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function br({chatId:e,messages:t,session:n}){const a=q(()=>Pi(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(Ar,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function Nr({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(Cr,{message:t.message}):x(Ir,{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 Ir({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){const m=q(()=>function(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(qi(r.message)){const e=n.at(-1);if(!e||Ri(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&&$i(e)!==$i(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)Li(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:Ti(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Si(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($a,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(kr,{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 kr({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(Hr,{messages:a.messages}):"previousActions"===a.type?x(Kr,{messages:a.messages}):"fileChanges"===a.type?x(Vr,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Ar,{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 Cr({message:e}){const t=function(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}(e);return x("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:y("div",{className:"min-w-0 max-w-[84%] overflow-hidden rounded-xl bg-foreground px-3 py-2 text-sm leading-6 text-background",children:[y("div",{className:"mb-1 flex items-center gap-2",children:[x(Ze,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Mr,{text:e.content}),t.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:t.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border border-background/20 bg-background/10 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-6 rounded object-cover",src:e.url}):x(se,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:"file"===e.kind?e.path:e.name})]},e.id))}):null]})})}function Ar({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(_r,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x($r,{}):null;case"THINKING":return x(Or,{message:i});case"PLAN":return x(Ur,{metadata:Ui(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(Gr,{metadata:Ui(i.metadata)});case"FILE_CHANGE":return x(Vr,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(ui,{chatId:e,compact:t,message:i,metadata:Ui(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(mi,{chatId:e,compact:t,message:i,metadata:Ui(i.metadata),session:m});case"ERROR":return x(yi,{metadata:Ui(i.metadata),text:i.content});default:return x(bi,{text:i.content})}}function Er({text:e}){const t=D(xr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(gt,{remarkPlugins:[vt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:kn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:kn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:kn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:kn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:kn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:kn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:kn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:kn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:kn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:kn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:kn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:kn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:kn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:kn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:kn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:kn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:kn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:kn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:kn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:kn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:Tr(e)})})}function Mr({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:Sr(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 Tr(e){return Sr(e).map(e=>"image"===e.type?`\n\n![](${encodeURI(e.src).replace(/\)/g,"%29")})\n\n`:e.text).join("")}function Sr(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=Pr(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 Pr(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 Dr({chatId:e,onClose:t,session:n,target:a}){const r=C({enabled:!!a,queryKey:["workspace-file",e,a?.path,a?.line??null],queryFn:()=>async function(e,t,n,a){const r=new URLSearchParams({path:n});return a&&a>0&&r.set("line",String(a)),Gn(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Wa,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[y(er,{className:"flex min-w-0 items-center gap-2",children:[x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(tr,{className:"truncate",children:qr(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ne,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(Lr,{file:r.data}):null})]})})}function Lr({file:e}){const t=R({}),n=q(()=>(e.content??"").split(/\r?\n/),[e.content]);return L(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(nr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:kn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:(i=n||" ",s=e.language,s&&wt.getLanguage(s)?wt.highlight(i,{language:s}).value:wt.highlightAuto(i).value)}})]},r);var i,s})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function qr(e){return e?[Rr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Rr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function $r(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function Or({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function _r({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Br(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(Er,{text:o}):null,s?x(zr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Ur({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Br(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(be,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(Er,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(bi,{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(Ra,{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(jr,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function zr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(be,{className:"size-4"}),"Proposed plan"]}),x(Er,{text:i}),s?x(jr,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function jr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=$(""),[d,c]=$(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(fa,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ne,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(Wa,{open:d,onOpenChange:c,children:[y(Va,{render:x(fa,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Re,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Xa,{children:[x(er,{children:"Tell Codex What To Change"}),x(tr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(La,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(fa,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(fa,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ne,{className:"animate-spin"}):x(Re,{}),"Send changes"]})]})]})]})]})]})}var Fr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Br(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Fr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Fr,"").trim()}:"PLAN"!==e.kind||"result"!==Ui(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Gr({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(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(Ra,{variant:li(e),children:ci(e)}),"number"==typeof e?.exitCode?x(Ra,{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 Hr({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,Ii),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Si(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(Ra,{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(Wr,{message:e},e.id)),i>0?y(fa,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function Kr({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(Ra,{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(Wr,{message:e},e.id))})]})}function Wr({message:e}){const t=Ui(e.metadata),n=Ui(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Ui(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Ui(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[Oi(e),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-xs font-medium",children:a}),r?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),x(Ra,{variant:"secondary",children:e.status.toLowerCase()})]})}function Vr({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=q(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=Ui(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of Jr(e)){const e=n.get(t.path);e?n.set(t.path,{action:oi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:di(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:di(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(xr),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(oe,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${Xr(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(ti,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(fa,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:ei(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(Ue,{}),"Undo"]}),y(fa,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:Zr(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(re,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Wa,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(ti,{additions:e.additions,deletions:e.deletions}),y(Va,{render:x(fa,{size:"icon-sm",variant:"ghost"}),children:[x(J,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Xa,{children:[x(er,{children:e.path}),y(tr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(Ra,{variant:"secondary",children:e},e))}):null]})}function Jr(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=Yr(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=Yr(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:Qr(n),additions:n.filter(e=>e.startsWith("+")&&!e.startsWith("+++")).length,deletions:n.filter(e=>e.startsWith("-")&&!e.startsWith("---")).length,diff:t,path:a}),e):e},[]):[]}(e.diff),n=(e.changes??[]).reduce((e,t)=>{if(!t||"object"!=typeof t||Array.isArray(t))return e;const n=t,a=ni(n.path,n.filePath,n.file,n.name);return a?(e.push({action:ri(ni(n.action,n.kind,n.type)??"Edited"),additions:ai(n.additions),deletions:ai(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>ii(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=>ii(t.path,e.path)))];if(t.length)return t;const a=e.paths??[];if(!a.length)return[];const r=e.additions??0,i=e.deletions??0;return a.map((e,t)=>({action:"Edited",additions:1===a.length||0===t?r:0,deletions:1===a.length||0===t?i:0,path:e}))}function Qr(e){return e.some(e=>e.startsWith("new file mode ")||"--- /dev/null"===e)?"Created":e.some(e=>e.startsWith("deleted file mode ")||"+++ /dev/null"===e)?"Deleted":e.some(e=>e.startsWith("rename from ")||e.startsWith("rename to "))?"Renamed":"Edited"}function Yr(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function Xr(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function Zr(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 ei(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 ti({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 ni(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function ai(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 ri(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function ii(e,t){return si(e)===si(t)}function si(e){return Yr(e).replace(/\\/g,"/").replace(/^\.\//,"")}function oi(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 di(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function ci(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function li(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function ui({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=Ni(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(hi,{icon:x(ke,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:fi(a)}):y("div",{className:kn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:kn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(ke,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:kn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:kn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(Ra,{variant:"secondary",children:[x(K,{className:"size-3"}),"resolved"]}):y(w,{children:[y(fa,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ne,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function mi({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=$({}),[o,d]=$(0),c=Ni(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&&xi(h,i[h.id]).length>0,p=l.every(e=>xi(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(hi,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:pi(a)});return y("div",{className:kn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:kn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(fa,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(F,{})}),y(Ra,{variant:"secondary",children:[m+1," / ",l.length]}),x(fa,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(B,{})}),u?x(Ra,{variant:"secondary",children:"resolved"}):null]})]}),h?x(vi,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??gi,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:kn("flex justify-end",t?"mt-2":"mt-4"),children:y(fa,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:wi(l,i)}):U.error("Answer every question before submitting.")},children:[c.isPending?x(Ne,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function hi({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(Ra,{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 fi(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 pi(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 gi={other:"",values:[]};function vi({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:kn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:kn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(fa,{"aria-pressed":r,className:kn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:kn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:kn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(pa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(La,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(La,{className:e?"min-h-12":"min-h-16",disabled:t,placeholder:"Other answer",value:c,onChange:e=>l({other:e.target.value})}):null,"number"==typeof o&&o>1?y("span",{className:"text-xs text-muted-foreground",children:["Select up to ",o,"."]}):null]})}function wi(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:xi(e,t[e.id])}]))}}function xi(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function yi({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 bi({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function Ni(e,t,n){const a=A();return I({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return Gn(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>Wn(e,t))}})}var Ii=5;function ki(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=Ci(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Ai(n[t],r):(a.set(e,n.length),n.push(r))}return n}function Ci(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 Ai(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Ei(t.status)>Ei(e.status)?{...e,status:t.status}:e:Ei(t.status)>Ei(e.status)||t.sequence>=e.sequence?t:e}function Ei(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Mi(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Ti(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 Si(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 Pi(e){return{pendingRequest:ki(e).sort((e,t)=>t.sequence-e.sequence).find(Di)}}function Di(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Ui(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Li(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Di(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 qi(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Ri(e,t){return $i(e)===$i(t)}function $i(e){return e.runId??e.turnId??e.chatId}function Oi(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(ke,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(_i,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function _i(){return x(be,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Ui(e){return e&&"object"==typeof e?e:void 0}function zi({...e}){return x(Dt.Root,{"data-slot":"popover",...e})}function ji({...e}){return x(Dt.Trigger,{"data-slot":"popover-trigger",...e})}function Fi({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Dt.Portal,{children:x(Dt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Dt.Popup,{"data-slot":"popover-content",className:kn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function Bi({className:e,...t}){return x("div",{"data-slot":"popover-header",className:kn("flex flex-col gap-0.5 text-sm",e),...t})}function Gi({className:e,...t}){return x(Dt.Title,{"data-slot":"popover-title",className:kn("font-medium",e),...t})}function Hi({className:e,...t}){return x(Dt.Description,{"data-slot":"popover-description",className:kn("text-muted-foreground",e),...t})}function Ki({...e}){return x(mt.Root,{"data-slot":"sheet",...e})}function Wi({...e}){return x(mt.Portal,{"data-slot":"sheet-portal",...e})}function Vi({className:e,...t}){return x(mt.Backdrop,{"data-slot":"sheet-overlay",className:kn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function Ji({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(Wi,{children:[x(Vi,{}),y(mt.Popup,{"data-slot":"sheet-content","data-side":n,className:kn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(mt.Close,{"data-slot":"sheet-close",render:x(fa,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Qi({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:kn("flex flex-col gap-0.5 p-4",e),...t})}function Yi({className:e,...t}){return x(mt.Title,{"data-slot":"sheet-title",className:kn("font-heading text-base font-medium text-foreground",e),...t})}function Xi({className:e,...t}){return x(mt.Description,{"data-slot":"sheet-description",className:kn("text-sm text-muted-foreground",e),...t})}var Zi=T.createContext(null);function es(){const e=T.useContext(Zi);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function ts({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(Zi.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:kn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function ns({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}=es();return"none"===n?x("div",{"data-slot":"sidebar",className:kn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(Ki,{open:c,onOpenChange:l,...s,children:y(Ji,{dir:i,"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[y(Qi,{className:"sr-only",children:[x(Yi,{children:"Sidebar"}),x(Xi,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:kn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:kn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function as({className:e,onClick:t,...n}){const{toggleSidebar:a}=es();return y(fa,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:kn(e),onClick:e=>{t?.(e),a()},...n,children:[x(De,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function rs({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:kn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function is({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:kn("flex flex-col gap-2 p-2",e),...t})}function ss({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:kn("flex flex-col gap-2 p-2",e),...t})}function os({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:kn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function ds({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:kn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function cs({className:e,render:t,...n}){return ut({defaultTagName:"div",props:lt({className:kn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function ls({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:kn("w-full text-sm",e),...t})}function us({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:kn("flex w-full min-w-0 flex-col gap-0",e),...t})}function ms({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:kn("group/menu-item relative",e),...t})}var hs=ot("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function fs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=es(),c=ut({defaultTagName:"button",props:lt({className:kn(hs({variant:n,size:a}),i)},s),render:r?x(En,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(An,{children:[c,x(Mn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function ps({className:e,size:t="default",...n}){return x(Lt.Root,{"data-slot":"switch","data-size":t,className:kn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(Lt.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function gs({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=A(),[o,d]=$(new Set),[c,l]=$(e??""),[u,m]=$("directory"),[h,f]=$(e??""),[p,g]=$(""),[v,w]=$(!0),[b,N]=$(!1),[k,E]=$(""),[M,T]=$(""),S=C({enabled:r,queryKey:Ns(i,void 0),queryFn:()=>Un(i,void 0)}),P=S.data,D=P?.root??P?.path??"",q=c||P?.path||"",R=I({mutationFn:()=>{const e=k||q||P?.path,t=M.trim();if(!e)throw new Error("Select a folder first.");if(!t)throw new Error("Enter a folder name.");return async function(e,t){return Gn(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),E(""),T(""),U.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),_(e.path)}});function O(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of Is(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&&O(e)}return L(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),E(""),T(""))},[e,r]),L(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of Is(t,P.root))n.add(a);return n})},[e,P]),x(Wa,{open:r,onOpenChange:n,children:y(Ya,{className:"flex max-h-[88vh] max-w-2xl flex-col gap-0 overflow-hidden rounded-xl bg-background p-0 ring-border sm:max-w-2xl",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-3",children:[x(er,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(tr,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(bs,{label:"Home",onClick:function(){P?.path&&_(P.path)},children:x(pe,{})}),x(bs,{disabled:!q||R.isPending,label:"New folder",onClick:function(){const e=q||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),E(e),T(""),d(t=>{const n=new Set(t);if(D)for(const a of Is(e,D))n.add(a);return n.add(e),n}))},children:x(ue,{})}),x(bs,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(_e,{className:kn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[y("div",{className:"relative hidden min-w-0 sm:block",children:[x(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{className:"h-7 w-44 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]}),x(fa,{className:"h-7 px-2 text-xs",size:"sm",type:"button",variant:"ghost",onClick:()=>w(e=>!e),children:v?"Hide path":"Show path"})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(bs,{label:"Open path",onClick:z,children:x(Q,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(nr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(vs,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:M,createFolderParentPath:k,createFolderPending:R.isPending,selectedPath:q,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),E(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>R.mutate(),onOpen:_,onSelect:O,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(Za,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":q||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(fa,{disabled:!q||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!q||"file"===t&&"file"!==u||(a(q),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(fa,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function vs({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=As(f)===As(r.path),N=v&&As(t)===As(r.path),I=C({enabled:w&&!a,queryKey:Ns(g,r.path),queryFn:()=>Un(g,r.path)}),k=a??I.data,A=q(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),M=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(xs,{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(ws,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(vs,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),M.map(e=>x(ys,{entry:e,level:o+1,selected:"file"===p&&As(f)===As(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 ws({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(ue,{className:"size-4 shrink-0 text-muted-foreground"}),x(pa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(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(et,{})})]})}function xs({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:kn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(Q,{className:kn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?le:ce,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function ys({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:kn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(ie,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function bs({children:e,disabled:t,label:n,onClick:a}){return y(fa,{className:"size-7 p-0",disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function Ns(e,t){return["workspace-directory",e.serverUrl,t]}function Is(e,t){const n=Cs(t),a=Cs(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`${Cs(e)}${n}${t}`}function Cs(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function As(e){return Cs(e).toLocaleLowerCase()}function Es(){const{clearSession:e,loading:t,refreshSession:n,session:a}=aa(),{chatId:s}=p(),[o,d]=$(0),[c,l]=$(!1),[u,m]=$("server"),[f,g]=$(null),v=h(),b=P(e=>{d(e?.focusCreate?e=>e+1:0),m("accounts"),l(!0)},[]),N=P(e=>{"accounts"===e&&d(0),m(e)},[]),I=P((e="server")=>{m(e),l(!0)},[]),A=C({enabled:!!a,queryKey:["accounts",a?.userId],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/accounts?userId=${encodeURIComponent(t)}`,{token:e.token})}(a,a.userId)}),E=C({enabled:!!a,queryKey:["chats",a?.userId],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats?userId=${encodeURIComponent(t)}`,{token:e.token})}(a,a.userId)}),M=q(()=>A.data??[],[A.data]),T=q(()=>E.data??[],[E.data]),S=q(()=>s?T.find(e=>e.id===s)?.title??null:null,[s,T]),D=q(()=>M.filter(e=>"CONNECTED"===e.status),[M]);Sn(S);const L=k({queries:D.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>_n(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),R=q(()=>Object.fromEntries(D.map((e,t)=>{const n=no(L[t]?.data);return n?[e.id,ao(n)]:null}).filter(e=>!!e)),[L,D]);if(t)return x(_s,{});if(!a)return x(r,{replace:!0,to:"/connect"});const O={accounts:M,accountUsageSummaries:R,chats:T,connectedAccounts:D,openAccountManagement:b,openWorkspacePicker:g,session:a};return y(w,{children:[y(ts,{children:[y(ns,{className:"border-r",collapsible:"icon",children:[x(is,{children:y(fa,{className:"w-full justify-start",variant:"ghost",onClick:()=>v("/"),children:[x(We,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(os,{children:y(ds,{children:[x(cs,{children:"Chats"}),x(ls,{children:x(Ts,{chats:T,session:a})})]})}),x(ss,{children:y(fa,{className:"justify-start",variant:"ghost",onClick:()=>I(),children:[x(Be,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(rs,{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(as,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ms,{onAddAccount:()=>b({focusCreate:!0}),onNewChat:()=>v("/")}),x(wr,{})]})]}),A.error||E.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:A.error?.message??E.error?.message??"Unable to load workspace data."}):null,x(i,{context:O})]})]}),x(ir,{accounts:M,activeTab:u,clearSession:e,createFocusKey:o,open:c,refreshSession:n,session:a,onTabChange:N,onOpenChange:l}),f?x(gs,{initialPath:f.initialPath,mode:f.mode,open:!!f,session:a,onOpenChange:e=>{e||g(null)},onSelect:f.onSelect}):null]})}function Ms({onAddAccount:e,onNewChat:t}){return y(cr,{children:[y(lr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x(Oe,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(ur,{align:"end",className:"w-44",children:[y(mr,{onClick:t,children:[x(We,{}),"New chat"]}),y(mr,{onClick:e,children:[x(Ze,{}),"Add account"]})]})]})}function Ts({chats:e,session:t}){const n=h(),{chatId:a}=p(),r=A(),[i,s]=$(null),[o,d]=$(""),[c,l]=$(null),[u,m]=$(""),[f,g]=$(null),v=q(()=>e.map(e=>({chat:e,dateLabel:lo(e.lastActivityAt),folderName:uo(e.workingDirectory)})),[e]),b=q(()=>{const e=new Map;for(const t of v)e.set(t.folderName,(e.get(t.folderName)??0)+1);return Array.from(e,([e,t])=>({count:t,name:e})).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=q(()=>{const e=u.trim().toLocaleLowerCase();return v.filter(({chat:t,folderName:n})=>(!f||n===f)&&(!e||[t.title,n,t.workingDirectory??""].join(" ").toLocaleLowerCase().includes(e)))},[v,f,u]),k=!!u.trim()||!!f;L(()=>{f&&!b.some(e=>e.name===f)&&g(null)},[f,b]);const C=I({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return jn(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>U.error(ko(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats",t.userId]})}}),E=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>U.error(ko(e)),onSuccess:(e,i)=>{l(null),r.invalidateQueries({queryKey:["chats",t.userId]}),a===i.id&&n("/")}});return y(w,{children:[y("div",{className:"mb-2 flex items-center gap-1 px-1 group-data-[collapsible=icon]:hidden",children:[y("div",{className:"relative min-w-0 flex-1",children:[x(je,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(pa,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(zi,{children:[x(ji,{render:x(fa,{"aria-label":"Filter chats by folder",className:kn(f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:x(de,{className:"size-4"})}),y(Fi,{align:"end",className:"w-64",side:"bottom",children:[y(Bi,{children:[x(Gi,{children:"Folder"}),x(Hi,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:kn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",!f&&"bg-muted"),type:"button",onClick:()=>g(null),children:[x("span",{className:"min-w-0 flex-1 truncate",children:"All folders"}),x("span",{className:"text-xs text-muted-foreground",children:e.length}),f?null:x(K,{className:"size-4"})]}),b.map(e=>y("button",{className:kn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",f===e.name&&"bg-muted"),type:"button",onClick:()=>g(e.name),children:[x(ce,{className:"size-4 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"text-xs text-muted-foreground",children:e.count}),f===e.name?x(K,{className:"size-4"}):null]},e.name))]})]})]})]}),x(us,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>x(ms,{children:y("div",{className:"flex items-center gap-1",children:[y(fs,{className:"h-14 min-w-0 flex-1 items-start py-1.5",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Me,{className:"mt-0.5"}),y("span",{className:"min-w-0 flex-1",children:[x("span",{className:"block truncate leading-5",children:e.title}),y("span",{className:"flex min-w-0 items-center gap-2 text-[11px] leading-4 font-normal text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1",children:[x(Z,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:t})]}),y("span",{className:"flex min-w-0 items-center gap-1",children:[x(ce,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(cr,{children:[y(lr,{render:x(fa,{size:"icon-sm",variant:"ghost"}),children:[x(Se,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(ur,{align:"end",className:"w-40",children:[y(mr,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(mr,{onClick:()=>l(e),children:[x(j,{}),"Archive"]})]})]})]})},e.id)):y("div",{className:"px-2 py-3 text-sm text-muted-foreground group-data-[collapsible=icon]:hidden",children:[e.length?"No matching chats.":"No chats yet.",k?x(fa,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(Wa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Rename chat"}),x(tr,{children:"Choose a short title for the sidebar."})]}),x(pa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(Za,{children:x(fa,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(Wa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Archive chat?"}),y(tr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Za,{children:[x(fa,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(fa,{disabled:E.isPending||!c,variant:"destructive",onClick:()=>{c&&E.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Ss(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 Ps(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Ls(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Ds(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 Ls(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 qs(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:mo(t),path:t}}function Rs({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(w,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(ie,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(fa,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(et,{className:"size-3"})})]},e.id))}):null]})}function $s(){const{accountUsageSummaries:e,connectedAccounts:t,openAccountManagement:n,openWorkspacePicker:a,session:r}=eo(),[i,s]=$(""),[o,d]=$([]),[c,l]=$("default"),[u,m]=$(null),[f,p]=$(null),[g,v]=$("default"),[w,b]=$(null),[N,k]=$(null),[E,M]=$(null),[T,S]=$(""),D=A(),q=h(),O=R(null),_=t.find(e=>e.id===f)??t[0];L(()=>{if(!_?.id)return k(null),m(null),v("default"),b(null),void M(null);k(_.id),m(_.defaultModel??null),v(_.defaultPermissionMode??"default"),b(_.defaultReasoningEffort??null),M(_.defaultServiceTier??null)},[_?.defaultModel,_?.defaultPermissionMode,_?.defaultReasoningEffort,_?.defaultServiceTier,_?.id]);const z=C({enabled:!!_?.id,queryKey:["models",_?.id],queryFn:()=>On(r,_.id),staleTime:3e5}),j=C({enabled:!!_?.id,queryKey:["rate-limits",_?.id],queryFn:()=>_n(r,_.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),F=z.data?.data??[],B=N===_?.id,G=B?u:null,H=B?w:null,K=B?E:null,W=to(F,G),V=W?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],J=H??W?.defaultReasoningEffort??null,Q=W?.additionalSpeedTiers??[],Y=no(j.data),X=I({mutationFn:({accountId:e,settings:t})=>Rn(r,e,t),onError:e=>U.error(ko(e)),onSuccess:e=>{D.setQueryData(["accounts",r.userId],t=>No(t,e))}}),Z=I({mutationFn:async()=>{if(!_)throw new Error("Connect an account before starting a chat.");if(!T.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return Gn(e.serverUrl,"/api/chats",{body:t,token:e.token})}(r,{accountId:_.id,collaborationMode:c,model:G,permissionMode:g,reasoningEffort:H,serviceTier:K,userId:r.userId,workingDirectory:T.trim()});return{chat:e,response:await Bn(r,e.id,{attachments:Ss(o),content:i.trim()})}},onError:e=>U.error(ko(e)),onSuccess:({chat:e,response:t})=>{s(""),d([]),l("default"),v(_?.defaultPermissionMode??"default"),S(""),D.setQueryData(["messages",e.id],yo(void 0,bo(t))),D.invalidateQueries({queryKey:["chats",r.userId]}),q(`/chat/${e.id}`)}}),ee=P(e=>{e?.length&&Ps(e).then(e=>{d(t=>[...t,...e])}).catch(e=>U.error(ko(e)))},[]),te=P(()=>{a({initialPath:T,mode:"file",onSelect:e=>{d(t=>[...t,qs(e)])}})},[a,T]);return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:y("div",{className:"mx-auto flex w-full max-w-3xl flex-1 flex-col justify-center gap-6 px-4 py-8",children:[y("div",{className:"text-center",children:[x("h1",{className:"text-2xl font-semibold tracking-normal",children:"What should Codex work on?"}),x("p",{className:"mt-2 text-sm text-muted-foreground",children:"Select an account and workspace, then send the first message."})]}),t.length?null:y("div",{className:"rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(fa,{className:"mt-3",size:"sm",onClick:n,children:[x(Ze,{}),"Manage Accounts"]})]}),y("div",{className:"grid gap-3 rounded-xl border bg-background p-3 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-lg border bg-muted/25 px-2 py-1.5",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-xs shadow-none focus-visible:ring-0",placeholder:"Working directory",spellCheck:!1,value:T,onChange:e=>S(e.target.value)}),y(fa,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>a({initialPath:T,onSelect:S}),children:[x(le,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),x(La,{className:"min-h-32 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:"Message Codex",value:i,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!Z.isPending&&Io(i,T,_,o)&&Z.mutate())},onPaste:e=>{const t=Ds(e.clipboardData);t.length&&ee(t)}}),x(Rs,{attachments:o,imageInputRef:O,onAttachImages:ee,onRemove:e=>d(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(Vs,{attachmentDisabled:Z.isPending,disabled:!_,mode:c,onAttachFile:te,onAttachImage:()=>O.current?.click(),onSelectMode:l}),x(Us,{account:_,connectedAccounts:t,disabled:!t.length,selectedAccountId:_?.id??"",usageSummaries:e,onSelect:e=>{p(e)}}),x(Ys,{activeReasoningEffort:J,disabled:!_,modelOptions:F,modelValue:G??"",pending:z.isFetching,reasoningOptions:V,reasoningValue:H??"",selectedModel:W,serviceTierOptions:Q,serviceTierValue:K??"",onSelectModel:e=>{const t=_?.id??null;k(t),m(e||null),b(null),M(null),t&&X.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=_?.id??null,n=e||null;k(t),b(n),t&&X.mutate({accountId:t,settings:{defaultModel:G,defaultReasoningEffort:n,defaultServiceTier:K}})},onSelectServiceTier:e=>{const t=_?.id??null,n=e||null;k(t),M(n),t&&X.mutate({accountId:t,settings:{defaultModel:G,defaultReasoningEffort:H,defaultServiceTier:n}})}}),x(Js,{disabled:!_,mode:g,onSelectMode:e=>{v(e),_?.id&&X.mutate({accountId:_.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Ws,{pending:j.isFetching,snapshot:Y}),x(Qs,{loading:Z.isPending,sendDisabled:!Io(i,T,_,o),onSend:()=>Z.mutate()})]})]})]})]})})}function Os(){const{chatId:e}=p(),{accounts:t,accountUsageSummaries:n,connectedAccounts:a,openWorkspacePicker:i,session:s}=eo(),[o,d]=$(""),[c,l]=$([]),[u,m]=$("OFFLINE"),[h,f]=$(null),g=R(null),v=R(null),w=R(!0),b=A(),N=q(()=>["chat",e],[e]),k=q(()=>["messages",e],[e]);L(()=>{f(null),l([])},[e]);const E=C({enabled:!!e,queryKey:N,queryFn:()=>zn(s,e)}),M=C({enabled:!!e,queryKey:k,queryFn:()=>Fn(s,e,0)}),T=C({enabled:!!e&&!h,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(s,e),retry:!1,staleTime:3e4});L(()=>{T.data?.usage&&!h&&f(T.data.usage)},[T.data?.usage,h]);const S=q(()=>M.data?.data??[],[M.data]),D=q(()=>Pi(S),[S]),O=q(()=>D.pendingRequest?[D.pendingRequest.id]:[],[D.pendingRequest]),_=q(()=>S.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[S]),z=E.data,j=t.find(e=>e.id===z?.accountId),F=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),B=P((e="auto")=>{const t=g.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),G=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["models",j?.id],queryFn:()=>On(s,j.id),staleTime:3e5}),H=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["rate-limits",j?.id],queryFn:()=>_n(s,j.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),K=I({mutationFn:t=>jn(s,e,{accountId:t}),onError:e=>U.error(ko(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats",s.userId]}),U.success("Chat account updated.")}}),W=I({mutationFn:t=>jn(s,e,t),onError:e=>U.error(ko(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats",s.userId]})}}),V=I({mutationFn:({accountId:e,settings:t})=>Rn(s,e,t),onError:e=>U.error(ko(e)),onSuccess:e=>{b.setQueryData(["accounts",s.userId],t=>No(t,e))}}),J=I({mutationFn:t=>Bn(s,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??o).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>U.error(ko(e)),onSuccess:(e,t)=>{w.current=!0,(t?.clearComposer??1)&&(d(""),l([])),b.setQueryData(k,t=>yo(t,bo(e))),b.invalidateQueries({queryKey:N}),b.invalidateQueries({queryKey:["chats",s.userId]})}}),Q=I({mutationFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(s,e),onError:e=>U.error(ko(e)),onSuccess:()=>{U.message("Stop requested.")}}),Y=P(e=>{e?.length&&Ps(e).then(e=>{l(t=>[...t,...e])}).catch(e=>U.error(ko(e)))},[]),X=P(()=>{i({initialPath:E.data?.workingDirectory,mode:"file",onSelect:e=>{l(t=>[...t,qs(e)])}})},[E.data?.workingDirectory,i]),Z=P(e=>{J.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"}})},[J]),ee=P(e=>{var t;J.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"}})},[J]),te=P(e=>{J.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[J]),ne=P(e=>{J.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[J]);if(L(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?b.setQueryData(k,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return Wn(e,n);if("message.failed"===t)return Wn(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)):f(t):n(t)};return function(e,t,n){let a=!1;const r=qt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(s,e,{onClose:()=>m("OFFLINE"),onError:e=>{m("OFFLINE"),U.error(ko(e))},onEvent:t,onOpen:()=>{var a;m("ONLINE"),Fn(s,e,(a=b.getQueryData(k),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>U.error(ko(e))),zn(s,e).then(n).catch(e=>U.error(ko(e)))}});function n(e){b.setQueryData(N,e),b.setQueryData(["chats",s.userId],t=>t?.map(t=>t.id===e.id?e:t))}},[e,N,k,b,s]),L(()=>{w.current=!0;const e=requestAnimationFrame(()=>B("auto"));return()=>cancelAnimationFrame(e)},[e,B]),L(()=>{if(!w.current)return;let e=0;const t=requestAnimationFrame(()=>{B("auto"),e=requestAnimationFrame(()=>B("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[_,B]),!e)return x(r,{replace:!0,to:"/"});if(E.isLoading||M.isLoading)return x(_s,{});if(E.error)return x("main",{className:"flex flex-1 items-center justify-center p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:E.error.message})]})});const ae=z,re=j,ie="RUNNING"===ae?.status,se=G.data?.data??[],oe=!!ae&&!ie&&a.length>0,de=to(se,ae?.model),le=de?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ue=ae?.reasoningEffort??de?.defaultReasoningEffort??null,me=de?.additionalSpeedTiers??[],he=no(H.data);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:[y("div",{className:"flex min-h-12 items-center justify-between gap-3 border-b px-4 py-2",children:[y("div",{className:"min-w-0",children:[y("div",{className:"flex items-center gap-2",children:[x(js,{state:u}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:ae?.title??"Chat"})]}),y("div",{className:"mt-1 flex min-w-0 items-center gap-3 text-xs text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(Ze,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:re?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(ce,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:ae?.workingDirectory??"No working directory"})]})]})]}),ae?x(Fs,{chatId:ae.id,disabled:ie,session:s}):null]}),x(nr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:g,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{w.current=F(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:S.length?x(yr,{chatId:e,fileChangeActionDisabled:ie,fileChangeActionPending:J.isPending,hiddenMessageIds:O,messages:S,onImplementPlan:Z,onRevisePlan:ee,onReviewFileChanges:te,onUndoFileChanges:ne,planActionDisabled:ie,planActionPending:J.isPending,session:s}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),y("div",{className:"min-w-0 overflow-hidden border-t bg-background",children:[x(br,{chatId:e,messages:S,session:s}),x("div",{className:"p-3",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[x(La,{className:"max-h-44 min-h-20 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:ae?.workingDirectory?re?"Message Codex":"Choose an account first":"Choose a directory first",value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Io(o,ae?.workingDirectory??"",re,c)&&J.mutate({attachments:Ss(c),clearComposer:!0,delivery:ie?"queue":void 0}))},onPaste:e=>{const t=Ds(e.clipboardData);t.length&&Y(t)}}),x(Rs,{attachments:c,imageInputRef:v,onAttachImages:Y,onRemove:e=>l(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(Vs,{attachmentDisabled:J.isPending,disabled:!ae,modeDisabled:ie,mode:ae?.collaborationMode??"default",onAttachFile:X,onAttachImage:()=>v.current?.click(),pending:W.isPending,steerDisabled:!ie||J.isPending||!Io(o,ae?.workingDirectory??"",re,c),onSteerActiveTurn:()=>J.mutate({attachments:Ss(c),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>W.mutate({collaborationMode:e})}),x(Us,{account:re,connectedAccounts:a,disabled:!oe,pending:K.isPending,selectedAccountId:ae?.accountId??"",usageSummaries:n,onSelect:e=>K.mutate(e)}),x(Ys,{activeReasoningEffort:ue,disabled:!ae||ie||!re,modelOptions:se,modelValue:ae?.model??"",pending:G.isFetching||W.isPending,reasoningOptions:le,reasoningValue:ae?.reasoningEffort??"",selectedModel:de,serviceTierOptions:me,serviceTierValue:ae?.serviceTier??"",onSelectModel:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),W.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:t,defaultServiceTier:ae.serviceTier??null}}),W.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:ae.reasoningEffort??null,defaultServiceTier:t}}),W.mutate({serviceTier:t})}}),x(Js,{disabled:!ae,mode:ae?.permissionMode??"default",pending:W.isPending,onSelectMode:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultPermissionMode:e}}),W.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(zs,{usage:h}),x(Ws,{pending:H.isFetching,snapshot:he}),x(Qs,{loading:J.isPending,running:ie,sendDisabled:!Io(o,ae?.workingDirectory??"",re,c),stopPending:Q.isPending,onSend:()=>J.mutate({attachments:Ss(c),clearComposer:!0,delivery:ie?"queue":void 0}),onStop:()=>Q.mutate()})]})]})]})})]})]})}function _s(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})})}function Us({account:e,connectedAccounts:t,disabled:n,onSelect:a,pending:r,selectedAccountId:i,usageSummaries:s}){return y(cr,{children:[y(lr,{render:x(fa,{"aria-label":e?.displayName??"Choose account",className:"max-w-44 justify-start max-sm:size-8 max-sm:px-0",disabled:n||r,size:"sm",title:e?.displayName??"Choose account",variant:"ghost"}),children:[r?x(Ne,{className:"animate-spin"}):x(Ze,{}),x("span",{className:"truncate max-sm:sr-only",children:e?.displayName??"Choose account"})]}),x(ur,{align:"start",className:"w-64",children:x(gr,{value:i,onValueChange:e=>{e&&e!==i&&a(e)},children:t.map(e=>y(vr,{disabled:r,value:e.id,children:[x("span",{className:"truncate",children:e.displayName}),s[e.id]?x("span",{className:"ml-auto mr-5 shrink-0 text-xs text-muted-foreground",children:s[e.id]}):null]},e.id))})})]})}function zs({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=go(e.usedPercent);return y(zi,{children:[x(ji,{render:x(fa,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(Fi,{align:"end",className:"w-72",side:"top",children:[y(Bi,{children:[x(Gi,{children:"Context window"}),x(Hi,{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:[ho(e.tokensUsed)," /"," ",ho(e.tokenLimit)," tokens used"]})]})]})]})}function js({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:kn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function Fs({chatId:e,disabled:t,session:n}){const[a,r]=$(!1),i=A(),s=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(n,e),refetchInterval:2e4,retry:!1}),o=s.data;if(o&&!o.isRepo)return null;const d=o?.branch??"Git",c=!!o&&!o.clean,l=o?Ks(o):"";return y(Wa,{open:a,onOpenChange:r,children:[y(fa,{className:"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",disabled:s.isLoading&&!o,size:"sm",type:"button",variant:"outline",onClick:()=>r(!0),children:[x(he,{className:"size-3.5"}),x("span",{className:"min-w-0 truncate",children:d}),l?x("span",{className:"shrink-0 text-muted-foreground",children:l}):null,x("span",{className:kn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(Bs,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function Bs({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=$(""),[o,d]=$(""),[c,l]=$(""),u=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),m=C({enabled:!!e,queryKey:["git-diff",e],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return Gn(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e),retry:!1}),h=I({mutationFn:function(t){return async function(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>U.error(ko(e)),onSuccess:t=>{U.success(t.message),l(""),d(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})}}),f=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(u.data,i),p=t||h.isPending,g=r??h.data?.status;return y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[x(er,{children:"Git"}),x(tr,{className:"truncate",children:g?.root??"Repository information"})]}),y("div",{className:"grid min-h-0 flex-1 gap-0 overflow-hidden border-y md:grid-cols-[18rem_minmax(0,1fr)]",children:[y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] border-b md:border-b-0 md:border-r",children:[y("div",{className:"grid gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(he,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:g?.branch??"No branch"}),x("div",{className:"text-xs text-muted-foreground",children:g?Hs(g):"Loading..."})]}),x(fa,{className:"ml-auto",size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})},children:x(_e,{className:kn(h.isPending&&"animate-spin")})})]}),x(pa,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(nr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(fa,{className:"justify-start",disabled:p||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>{window.confirm(`Switch to ${e.name}?`)&&h.mutate({action:"checkout",branch:e.name})},children:[x(he,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),f.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:"No branches found."})]})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(pa,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(fa,{disabled:p||!o.trim(),size:"sm",type:"button",variant:"outline",onClick:()=>h.mutate({action:"createBranch",branch:o.trim()}),children:[x(Oe,{}),"Create branch"]})]})]}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-3 p-3",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ne,{}),"Pull"]}),y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Xe,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":Hs(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(La,{className:"min-h-16 resize-y",placeholder:"Commit message",value:c,onChange:e=>l(e.target.value)}),y(fa,{className:"self-end",disabled:p||!c.trim()||g?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&h.mutate({action:"commit",message:c.trim()})},children:[x(fe,{}),"Commit"]})]})]}),x(nr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(Gs,{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 Gs({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 Hs(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Ks(e)].filter(Boolean).join(" · "):"Git unavailable"}function Ks(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ws({pending:e,snapshot:t}){const n=ao(t),a=function(e){return e?ro(e.secondary)?"weekly":ro(e.primary)?"fiveHour":null:null}(t);return y(zi,{children:[y(ji,{render:x(fa,{className:kn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ne,{className:"size-3 animate-spin"}):x(nt,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(Fi,{align:"start",className:"w-80",side:"top",children:[y(Bi,{children:[x(Gi,{children:"Usage capacity"}),x(Hi,{children:"Current Codex account limits refresh automatically."})]}),x(Xs,{pending:e,snapshot:t})]})]})}function Vs({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(cr,{children:[x(lr,{render:x(fa,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ne,{className:"animate-spin"}):x(Oe,{})}),y(ur,{align:"start",className:"w-56",children:[y(mr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(be,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(ps,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(mr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ge,{}),x("span",{children:"Attach image"})]}),y(mr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Le,{}),x("span",{children:"Attach workspace file"})]}),o?y(mr,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function Js({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(cr,{children:[y(lr,{render:x(fa,{"aria-label":xo(t),className:kn("max-w-40 justify-start max-sm:size-8 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:xo(t),variant:"ghost"}),children:[a?x(Ne,{className:"animate-spin"}):x(r?He:Ge,{}),x("span",{className:"truncate max-sm:sr-only",children:xo(t)})]}),x(ur,{align:"start",className:"w-48",children:y(gr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(vr,{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(vr,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function Qs({loading:e,onSend:t,onStop:n,running:a=!1,sendDisabled:r,stopPending:i=!1}){return a?y("div",{className:"flex items-center gap-1",children:[x(fa,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})}),x(fa,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:i||!n,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:n,children:i?x(Ne,{className:"animate-spin"}):x(Ke,{})})]}):x(fa,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})})}function Ys({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?vo(e):null,a?wo(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(cr,{children:[y(lr,{render:x(fa,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ne,{className:"animate-spin"}):x(te,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(ur,{align:"start",className:"w-72",children:[y(hr,{children:[y(fr,{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:vo(e)})]}),x(pr,{className:"w-52",children:y(gr,{value:c,onValueChange:i,children:[x(vr,{value:"",children:"Model default"}),d.map(e=>x(vr,{value:e,children:vo(e)},e))]})})]}),y(hr,{children:[y(fr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(te,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(pr,{className:"w-64",children:y(gr,{value:a,onValueChange:r,children:[x(vr,{value:"",children:"Default model"}),n.map(e=>x(vr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(hr,{children:[y(fr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(me,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:wo(m)})]}),x(pr,{className:"w-52",children:y(gr,{value:m,onValueChange:s,children:[x(vr,{value:"",children:"Default speed"}),u.map(e=>x(vr,{value:e,children:wo(e)},e))]})})]})]})]})}function Xs({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",po(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?x("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,po(n))}):null]}),x(Zs,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(Zs,{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 Zs({fallbackLabel:e,severity:t,window:n}){const a=go(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=ro(n);return y("div",{className:kn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:so(n,e)}),x("span",{className:kn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:kn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:kn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:oo(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",co(n.resetsAt)]}):null]})]})}function eo(){return f()}function to(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function no(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function ao(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[io(e.primary,"5h"),io(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function ro(e){return go(e?.usedPercent??0)>=100}function io(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-go(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 so(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 oo(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function co(e){const t=e<1e12?1e3*e:e;return new Intl.DateTimeFormat(void 0,{day:"numeric",hour:"numeric",minute:"2-digit",month:"short"}).format(new Date(t))}function lo(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 uo(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 mo(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function ho(e){return e>=1e6?`${fo(e/1e6)}M`:e>=1e3?`${fo(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function fo(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function po(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function go(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function vo(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function wo(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function xo(e){return"fullAccess"===e?"Full access":"Default"}function yo(e,t){let n=e;for(const a of t)n=Wn(n,a);return n??{data:[],nextCursor:null}}function bo(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function No(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 Io(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function ko(e){return e instanceof Error?e.message:"Request failed."}var Co=xn({default:()=>Ao}),Ao=c(function(){return x(Es,{})}),Eo=xn({default:()=>Mo}),Mo=c(function(){return x($s,{})}),To=xn({default:()=>So}),So=c(function(){return x(Os,{})}),Po=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Do(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Lo(e){throw new Po(405,`${e} is not supported for this route.`)}function qo(e,t){t.includes(e.method)||Lo(e.method)}async function Ro(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 Po(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Po)throw n;throw new Po(400,"Request body must be valid JSON.")}}function $o(e,t,n={}){if(null==e){if(n.required)throw new Po(400,`${t} is required.`);return}if("string"!=typeof e)throw new Po(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Po(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Po(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Oo(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Po(400,`${t} must be an array of strings.`);return e}}function _o(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Po(400,`${t} must be an object.`);return e}}function Uo(e,t,n){const a=e.searchParams.get(t);if(null===a||""===a.trim())return n;const r=Number(a);if(!Number.isInteger(r))throw new Po(400,`${t} must be an integer.`);return r}function zo(e,t){const n=e[t];if(!n)throw new Po(400,`${t} is required.`);return n}function jo(e){return e instanceof Po?Do({message:e.message},{status:e.status}):Do({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Fo=xn({loader:()=>Bo});function Bo({request:e}){try{return qo(e,["GET"]),Do({status:"ok",service:"xedoc"})}catch(t){return jo(t)}}var Go,Ho=globalThis,Ko=nn("~"===(Go=process.env.CODEX_WORKSPACE_ROOT?.trim()||Qt())?Qt():Go.startsWith("~/")?nn(Qt(),Go.slice(2)):rn(Go),".xedoc","xedoc.db"),Wo=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Ko);process.env.DATABASE_URL=Wo,Kt(Zt(Ko),{recursive:!0,mode:448});var Vo=Ho.prisma??new Ft({datasources:{db:{url:Wo}}});"production"!==process.env.NODE_ENV&&(Ho.prisma=Vo);var Jo="server",Qo="scrypt";async function Yo(e){!function(e){if(e.length<8)throw new Po(400,"Server password must be at least 8 characters.")}(e);const t=await nd()??await async function(e){try{return await Vo.serverAuth.create({data:{id:Jo,passwordHash:ad(e),tokenSecret:rd(32)}})}catch(t){if(function(e){return e instanceof jt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Po(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!==Qo||!a||!r||void 0!==i)&&id(Ut(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Po(401,"Invalid server password.");return{token:Zo({authHash:ed(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Xo(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Po(401,"Invalid auth token.");if(!id(a,td(n,t.tokenSecret)))throw new Po(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 Po(401,"Invalid auth token.")}}(n);if(i.authHash!==ed(t.passwordHash))throw new Po(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Po(401,"Missing auth token.");return n}(e),await async function(){const e=await nd();if(!e)throw new Po(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Zo(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${td(n,t)}`}function ed(e){return t=e,Rt("sha256").update(t).digest("hex");var t}function td(e,t){return $t("sha256",t).update(e).digest("base64url")}async function nd(){return Vo.serverAuth.findUnique({where:{id:Jo}})}function ad(e){const t=rd(16);return`${Qo}:${t}:${Ut(e,t,64).toString("base64url")}`}function rd(e){return Ot(e).toString("base64url")}function id(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&zt(n,a)}var sd=xn({loader:()=>od});async function od({request:e}){try{return qo(e,["GET"]),Do(await async function(){return{passwordConfigured:!!(await nd())}}())}catch(t){return jo(t)}}var dd=xn({action:()=>cd});async function cd({request:e}){try{return qo(e,["POST"]),Do(await Yo($o((await Ro(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return jo(t)}}var ld=xn({loader:()=>ud});async function ud({request:e}){try{return qo(e,["GET"]),Do(await async function(e){return{authenticated:!0,issuedAt:(await Xo(e)).issuedAt}}(e))}catch(t){return jo(t)}}function md(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function hd(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function fd(e){const t=md(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var pd=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){return new Promise((n,a)=>{const r=setTimeout(()=>{i(),a(new Error("Timed out waiting for Codex event."))},t),i=this.onEvent(t=>{e(t)&&(clearTimeout(r),i(),n(t))})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${_t()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=vd(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);var t;return t=e.codexHome,Kt(t,{recursive:!0,mode:448}),Bt(t,448),this.child=dn(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&console.warn(`[codex:${this.config.accountId}] ${t}`)}),this.child.on("error",e=>this.failAll(e)),this.child.on("close",e=>{this.failAll(new Error(`Codex runtime exited with code ${e??"unknown"}.`)),this.child=void 0,this.initializePromise=void 0}),this.initializePromise=this.initialize(),this.initializePromise}async initialize(){await this.requestStarted("initialize",{clientInfo:{name:"xedoc",title:"xedoc",version:"0.1.0"},capabilities:{experimentalApi:!0}}),this.child?.stdin.write(`${JSON.stringify({method:"initialized"})}\n`)}handleStdout(e){this.stdoutBuffer+=e.toString("utf8");const t=this.stdoutBuffer.split("\n");this.stdoutBuffer=t.pop()??"";for(const n of t){const e=n.trim();e&&this.handleLine(e)}}handleLine(e){let t;try{t=JSON.parse(e)}catch{return}const n=function(e){return void 0!==e.id&&null!==e.id&&e.method?"server-request":void 0!==e.id&&null!==e.id?"response":"notification"}(t);if("server-request"===n){if(!this.serverRequestHandlers.size)return void this.rejectServerRequest(t.id,-32601,`Unsupported request method: ${t.method??"unknown"}`);for(const e of this.serverRequestHandlers)e(t);return}if("notification"===n){for(const e of this.eventHandlers)e(t);return}const a=this.pending.get(wd(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(wd(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()}},gd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new pd(e);return this.runtimes.set(e.accountId,n),n}stopRuntime(e){this.runtimes.get(e)?.shutdown(),this.runtimes.delete(e)}shutdown(){for(const e of this.runtimes.values())e.shutdown();this.runtimes.clear()}};function vd(e){return nn(function(e){return"~"===e?Qt():e.startsWith("~/")?nn(Qt(),e.slice(2)):rn(e)}(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function wd(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function xd(e){const t=await Vo.user.findUnique({where:{id:e}});if(!t)throw new Po(404,"User not found.");return t}async function yd(e){const t=await Vo.codexAccount.findUnique({where:{id:e}});if(!t)throw new Po(404,"Codex account not found.");return t}async function bd(e){const t=await yd(e);if(Cd(e))return gd.stopRuntime(e),await Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};await Vo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}});try{const n=Id(t);if(md(md((await n.request("account/read",{refreshToken:!1})).result)?.account))return await Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};const a=md((await n.request("account/login/start",{type:"chatgpt"})).result),r=hd(a?.authUrl)??hd(a?.auth_url)??hd(a?.url)??null,i=hd(a?.loginId)??null,s=r?"AUTHENTICATING":"CONNECTED";if(await Vo.codexAccount.update({where:{id:e},data:{status:s,lastAuthUrl:r,lastError:null}}),r){const t=n.onEvent(n=>{const a=md(n.params);if("account/login/completed"===n.method)return t(),!1===a?.success?void Vo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:hd(a.error)??"Login failed."}}):void Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}});"account/updated"===n.method&&hd(a?.authMode)&&(t(),Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}))})}return{accountId:e,status:s,authUrl:r,loginId:i,message:r?"Open the returned URL to finish Codex authentication.":"Codex account is connected."}}catch(n){const t=n instanceof Error?n.message:"Authentication failed.";return await Vo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}}async function Nd(e,t){const n=await yd(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Po(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Po(400,"Callback URL must use http.");if(t.username||t.password)throw new Po(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 Po(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Po(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Id(n),i=r.waitForEvent(e=>"account/login/completed"===e.method||"account/updated"===e.method,15e3).catch(()=>null);try{const t=await async function(e){try{return await fetch(e,{redirect:"manual"})}catch(t){if("localhost"!==e.hostname)throw t;const n=new URL(e.toString());return n.hostname="127.0.0.1",fetch(n,{redirect:"manual"})}}(a);if(t.status>=400){const e=await async function(e){const t=(await e.text()).trim();return t?t.length>500?`${t.slice(0,500)}...`:t:null}(t);throw new Po(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=md((await i)?.params);if(!1===s?.success){const t=hd(s.error)??"Login failed.";return await Vo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}return await async function(e,t){return!!md(md((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}:Cd(e)?(gd.stopRuntime(e),await Vo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}):(await Vo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authUrl:n.lastAuthUrl,message:"Callback accepted. Codex is still finishing authentication."})}catch(s){const t=s instanceof Error?s.message:"Authentication failed.";return await Vo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:n.lastAuthUrl,message:t}}}function Id(e){return gd.getRuntime({accountId:e.id,command:e.command,args:Td(e.args),workingDirectory:null,environment:fd(e.environment)})}function kd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Cd(e){try{const t=Wt(`${vd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==hd(n.auth_mode)||!md(n.tokens)&&!hd(n.OPENAI_API_KEY))}catch{return!1}}function Ad(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Ed(e){return{args:Ad(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?jt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastError:null,status:"DISCONNECTED"};var t}function Md(e){return{id:e.id,userId:e.userId,displayName:e.displayName,status:e.status,command:e.command,args:Td(e.args),environment:fd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Td(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):kd()}function Sd(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Po(400,`${n} must be an object.`);return{id:$d(e.id,`${n}.id`,128),displayName:Rd(e.displayName,`${n}.displayName`,128),command:$d(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Od(e.args,`${n}.args`)??kd(),defaultModel:$d(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:qd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Dd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Ld(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:_d(e.environment,`${n}.environment`)}}function Pd(e){return null==e?null:Rd(e,"runtime option",128)}function Dd(e,t="defaultReasoningEffort"){if(null==e)return null;if("none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e)return e;throw new Po(400,`${t} is invalid.`)}function Ld(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Po(400,`${t} is invalid.`)}function qd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Po(400,`${t} is invalid.`)}function Rd(e,t,n){const a=$d(e,t,n);if(!a)throw new Po(400,`${t} is required.`);return a}function $d(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Po(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Po(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Od(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Po(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function _d(e,t){if(null==e)return null;const n=md(e);if(!n)throw new Po(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Ud=xn({action:()=>zd});async function zd({request:e}){try{qo(e,["POST"]),await Xo(e);const n=await Ro(e);return Do(await(t={externalId:$o(n.externalId,"externalId",{maxLength:128}),name:$o(n.name,"name",{maxLength:128})},t.externalId?Vo.user.upsert({where:{externalId:t.externalId},update:{name:t.name},create:{externalId:t.externalId,name:t.name}}):Vo.user.create({data:{name:t.name}})),{status:201})}catch(n){return jo(n)}var t}var jd=xn({action:()=>Bd,loader:()=>Fd});async function Fd({request:e}){try{return qo(e,["GET"]),await Xo(e),Do(await(t=$o(new URL(e.url).searchParams.get("userId"),"userId",{required:!0}),Vo.codexAccount.findMany({where:{userId:t},orderBy:{createdAt:"asc"}})))}catch(n){return jo(n)}var t}async function Bd({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Ro(e);return Do(await async function(e){return await xd(e.userId),Vo.codexAccount.create({data:{userId:e.userId,displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:Ad(e.args??kd()),defaultModel:Pd(e.defaultModel),defaultPermissionMode:qd(e.defaultPermissionMode),defaultReasoningEffort:Dd(e.defaultReasoningEffort),defaultServiceTier:Ld(e.defaultServiceTier),environment:Ad(e.environment)}})}({userId:$o(t.userId,"userId",{required:!0}),displayName:$o(t.displayName,"displayName",{required:!0,maxLength:128}),command:$o(t.command,"command"),args:Oo(t.args,"args"),defaultModel:Gd(t.defaultModel,"defaultModel"),defaultPermissionMode:Gd(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Gd(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Gd(t.defaultServiceTier,"defaultServiceTier"),environment:_o(t.environment,"environment")}),{status:201})}catch(t){return jo(t)}}function Gd(e,t){return null===e?null:$o(e,t,{maxLength:128})}var Hd=xn({loader:()=>Kd});async function Kd({request:e}){try{return qo(e,["GET"]),await Xo(e),Do(await async function(e){await xd(e);const t=await Vo.codexAccount.findMany({where:{userId:e},orderBy:{createdAt:"asc"}});return{schemaVersion:1,exportedAt:(new Date).toISOString(),accounts:t.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:Td(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:fd(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}($o(new URL(e.url).searchParams.get("userId"),"userId",{required:!0})))}catch(t){return jo(t)}}var Wd=xn({action:()=>Vd});async function Vd({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Ro(e);if(!Array.isArray(t.accounts))throw new Po(400,"accounts must be an array.");return Do(await async function(e){await xd(e.userId);const t=e.accounts.map(Sd),n=[];for(const s of t){const t=s.id?await Vo.codexAccount.findUnique({where:{id:s.id}}):null;if(t&&t.userId!==e.userId)throw new Po(409,`Account ${s.id} already belongs to another user.`);t?(gd.stopRuntime(t.id),n.push(await Vo.codexAccount.update({where:{id:t.id},data:Ed(s)}))):n.push(await Vo.codexAccount.create({data:{...s.id?{id:s.id}:{},userId:e.userId,...Ed(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await bd(s.id));const r=await Vo.codexAccount.findMany({where:{id:{in:n.map(e=>e.id)}}}),i=new Map(r.map(e=>[e.id,e]));return{imported:n.length,accounts:n.map(e=>Md(i.get(e.id)??e)),authentications:a}}({userId:$o(t.userId,"userId",{required:!0}),accounts:t.accounts}),{status:201})}catch(t){return jo(t)}}var Jd=xn({action:()=>Yd,loader:()=>Qd});async function Qd({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Do(await yd(zo(t,"accountId")))}catch(n){return jo(n)}}async function Yd({request:e,params:t}){try{await Xo(e);const n=zo(t,"accountId");if("PATCH"===e.method){const t=await Ro(e);return Do(await async function(e,t){return await yd(e),gd.stopRuntime(e),Vo.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:Ad(t.args),environment:Ad(t.environment),status:"DISCONNECTED",lastError:null}})}(n,{displayName:$o(t.displayName,"displayName",{maxLength:128}),command:$o(t.command,"command"),args:Oo(t.args,"args"),environment:_o(t.environment,"environment")}))}if("DELETE"===e.method)return Do(await async function(e){return await yd(e),gd.stopRuntime(e),Vo.codexAccount.delete({where:{id:e}})}(n));Lo(e.method)}catch(n){return jo(n)}}var Xd=xn({action:()=>Zd});async function Zd({request:e,params:t}){try{qo(e,["PATCH"]),await Xo(e);const n=await Ro(e),a={defaultModel:ec(n.defaultModel,"defaultModel"),defaultPermissionMode:ec(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:ec(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:ec(n.defaultServiceTier,"defaultServiceTier")};return Do(await async function(e,t){return await yd(e),Md(await Vo.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Pd(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:qd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Dd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Ld(t.defaultServiceTier)}}))}(zo(t,"accountId"),a))}catch(n){return jo(n)}}function ec(e,t){return null===e?null:$o(e,t,{maxLength:128})}async function tc(e){return async function(e){return(await gd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(rc(await ac(e)))}async function nc(e){return async function(e){return(await gd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}(rc(await ac(e)))}async function ac(e){const t=await Vo.codexAccount.findUnique({where:{id:e}});if(!t)throw new Po(404,"Account not found.");if("CONNECTED"!==t.status)throw new Po(400,"Authenticate the account before loading Codex account data.");return t}function rc(e){return{accountId:e.id,args:ic(e.args),command:e.command,environment:fd(e.environment),workingDirectory:null}}function ic(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var sc=xn({loader:()=>oc});async function oc({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Do(await tc(zo(t,"accountId")))}catch(n){return jo(n)}}var dc=xn({loader:()=>cc});async function cc({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Do(await nc(zo(t,"accountId")))}catch(n){return jo(n)}}var lc=xn({action:()=>uc});async function uc({request:e,params:t}){try{return qo(e,["POST"]),await Xo(e),Do(await bd(zo(t,"accountId")))}catch(n){return jo(n)}}var mc=xn({action:()=>hc});async function hc({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=$o((await Ro(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Do(await Nd(zo(t,"accountId"),n))}catch(n){return jo(n)}}var fc=new Map;async function pc(e,t={}){if(!("test"===process.env.NODE_ENV?"true"===process.env.CODEX_LOCAL_CHAT_IMPORT:"false"!==process.env.CODEX_LOCAL_CHAT_IMPORT))return;const n=Date.now(),a=fc.get(e);if(!t.force&&a&&n-a.lastScanAt<Gc("CODEX_LOCAL_CHAT_IMPORT_INTERVAL_MS",3e4))return void(await a.promise);if(a?.promise)return void(await a.promise);const r={lastScanAt:n},i=async function(e){const t=await qc();if(!t.length)return;const n=(await Promise.all(t.map(e=>zc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,Fc());for(const a of n)await wc(e,a.path).catch(e=>{console.warn(`Failed to import local Codex chat from ${a.path}.`,e instanceof Error?e.message:e)})}(e).catch(e=>{console.warn("Local Codex chat import failed.",e instanceof Error?e.message:e)}).finally(()=>{const t=fc.get(e);t?.promise===i&&(t.promise=void 0)});r.promise=i,fc.set(e,r),await i,await async function(e){const t=await Vo.chat.findMany({where:{userId:e,OR:[{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},{accountId:null,externalThreadId:{not:null}}]},select:{id:!0},take:Fc()});for(const n of t)await Vo.$transaction(e=>yc(e,n.id))}(e)}async function gc(e,t){const n=await Vo.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await il(e)??(n?.externalThreadId?await Rc(n.externalThreadId):null);if(!a)return;const r=nn(vd(t),"sessions",function(e){const t=`${sn}sessions${sn}`,n=e.lastIndexOf(t);return-1===n?Yt(e):e.slice(n+t.length)}(a));if(rn(a)!==rn(r)){try{return void(await cn(r,Gt.R_OK))}catch{}await un(Zt(r),{recursive:!0,mode:448}),await ln(a,r)}}async function vc(e,t){const n=await il(e);if(n){const e=await Oc(n,t);if(e)return e}const a=await Rc(t);return a?Oc(a,t):null}async function wc(e,t){const n=await gn(t);if(!n.isFile()||n.size>Bc())return;const a=xc(await hn(t,"utf8"),t,new Date(n.mtimeMs));if(!a||"xedoc"===a.originator)return;const r=await Sc(t,a.externalThreadId),i=r?.updatedAt??a.updatedAt;await Vo.$transaction(async t=>{const n=await t.chat.findFirst({where:{externalThreadId:a.externalThreadId,userId:e},select:{id:!0}});n?await yc(t,n.id,r,a.updatedAt):await t.chat.create({data:{accountId:null,createdAt:a.createdAt,externalThreadId:a.externalThreadId,lastActivityAt:i,status:"IDLE",title:r?.title??a.title,updatedAt:a.updatedAt,userId:e,workingDirectory:a.workingDirectory}})})}function xc(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=Yc(f);if(!e)continue;const u=Xc(e.timestamp)??n;o=Zc(o,u),d=el(d,u);const m=md(e.payload);if("session_meta"===e.type&&m){a=hd(m.id)??a,r=hd(m.source)??r,i=hd(m.originator)??i,s=hd(m.cwd)??s,o=Xc(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=hd(m.cwd)??s;continue}const h=bc(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=Nc(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??tl(t);if(!m||!u.length)return null;const h=nl(u.find(e=>"USER"===e.role)?.content??"")??nl(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 yc(e,t,n,a){const r=await e.chat.findUnique({where:{id:t},select:{externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}});if(!r)return;const i=await e.chatMessage.findMany({where:{chatId:t},orderBy:{sequence:"asc"},select:{content:!0,id:!0,metadata:!0,role:!0}}),s=i.filter(e=>"localCodexImport"===md(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&Ic(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=nl(d.find(e=>"USER"===e.role&&!Ic(e.content))?.content??d.find(e=>!Ic(e.content))?.content??"")??"Imported Codex chat",l=n??(r.externalThreadId?await async function(e,t){const n=function(e){for(const t of e){const e=md(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=hd(e.sessionPath);if(n)return n}return null}(e)??await Rc(t);return n?Sc(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=al(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==al(u)&&(f.title=u);else{const e=new Set([al(c),al("Imported Codex chat")]);(Ic(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function bc(e,t,n){if("response_item"!==e.type)return null;const a=md(e.payload);if(!a||"message"!==a.type)return null;const r="assistant"===(i=a.role)?"ASSISTANT":"user"===i?"USER":null;var i;if(!r)return null;const s=function(e){return"string"==typeof e.text?Ac(e.text,e):"string"==typeof e.message?Ac(e.message,e):"string"==typeof e.content?Ac(e.content,e):Array.isArray(e.content)?Ac(e.content.map(e=>{if("string"==typeof e)return e;const t=md(e);return t?"string"==typeof t.text?t.text:Mc(t)??"":""}).join(""),e):Ac("",e)}(a);return!s.trim()||Ic(s)?null:{content:s,createdAt:t,metadata:kc(a,n),rawPayload:Cc(e,a),role:r}}function Nc(e,t,n){if("event_msg"!==e.type)return null;const a=md(e.payload);if(!a)return null;const r=hd(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?Ac(a.message,a):"";return!s.trim()||Ic(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...kc(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Cc(e,a),role:i}}function Ic(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function kc(e,t){return{kind:"localCodexImport",originator:t.originator,phase:hd(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:hd(e.type)}}function Cc(e,t){return{payload:{name:hd(t.name),phase:hd(t.phase),role:hd(t.role),type:hd(t.type)},timestamp:hd(e.timestamp),type:hd(e.type)}}function Ac(e,t){return[e,...Ec(t.images),...Ec(t.local_images),...Ec(t.localImages)].filter(Boolean).join("\n\n")}function Ec(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Tc(e):Mc(md(e))).filter(e=>!!e):[]}function Mc(e){return e?Tc(hd(e.url)??hd(e.image_url)??hd(e.path)??hd(e.filePath)):null}function Tc(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Sc(e,t){if(!e||!t)return null;const n=function(e){const t=`${sn}sessions${sn}`,n=rn(e),a=n.lastIndexOf(t);return-1===a?null:nn(n.slice(0,a),"session_index.jsonl")}(e);if(!n)return null;try{return function(e,t){return Dc(e).get(t)??null}(await hn(n,"utf8"),t)}catch{return null}}async function Pc(e){try{return Dc(await hn(e,"utf8"))}catch{return new Map}}function Dc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=Yc(n);if(!e)continue;const a=hd(e.id)??hd(e.thread_id)??hd(e.threadId)??hd(e.session_id)??hd(e.sessionId);if(!a)continue;const r=Lc(hd(e.thread_name)??hd(e.threadName)??hd(e.name)??hd(e.title)),i=Xc(e.updated_at)??Xc(e.updatedAt)??Xc(e.modified_at)??Xc(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Lc(e){const t=e?.replace(/\s+/g," ").trim();return!t||Ic(t)?null:t.slice(0,160)}async function qc(){const e=[..._c(),nn(rl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await Uc()],t=[...new Set(e.map(e=>rl(e)))],n=[];for(const a of t)try{await cn(a,Gt.R_OK),n.push(a)}catch{}return n}async function Rc(e){const t=await qc(),n=(await Promise.all(t.map(e=>zc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>tl(t.path)===e);if(a)return a.path;for(const r of n.slice(0,Fc()))if(await $c(r.path,e))return r.path;return null}async function $c(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Bc())return null;const a=xc(await hn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Oc(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Bc())return null;let a,r=null;for(const t of(await hn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Yc(t);if(!e)continue;"session_meta"===e.type&&(a=hd(md(e.payload)?.id)??a);const n=Hc(e);n&&(r=n)}return(a??tl(e))===t?r:null}catch{return null}}function _c(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(Xt).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:nn(e,"sessions")):[]}async function Uc(){const e=rl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await fn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>nn(e,t.name,"sessions"))}catch{return[]}}async function zc(e){const t=[];return await jc(e,t,0),t}async function jc(e,t,n){if(n>6)return;let a;try{a=await fn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=nn(e,a.name);if(a.isDirectory())return void(await jc(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await gn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function Fc(){return Gc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function Bc(){return Gc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Gc(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Hc(e){const t=Kc(e);if(!t)return null;const n=md(t.params),a=md(t.info)??md(n?.info)??n??t;return function(e,t=e){const n=Vc(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Vc(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Vc(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}([Vc(e,["input_tokens","inputTokens"]),Vc(e,["output_tokens","outputTokens"]),Vc(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}}(Wc(a,["last_token_usage","lastTokenUsage"])??Wc(a,["total_token_usage","totalTokenUsage"])??a,a)}function Kc(e,t=0){if(t>4)return;const n=md(e);if(!n)return;const a=Qc(hd(n.type)??""),r=Qc(hd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Kc(n[i],t+1);if(e)return e}}function Wc(e,t){for(const n of t){const t=md(e[n]);if(t)return t}}function Vc(e,t){for(const n of t){const t=Jc(e[n]);if(void 0!==t)return t}}function Jc(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function Qc(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Yc(e){try{return md(JSON.parse(e))??null}catch{return null}}function Xc(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Zc(e,t){return!e||t<e?t:e}function el(e,t){return!e||t>e?t:e}function tl(e){return/rollout-[^.]+-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function nl(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 al(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function rl(e){return"~"===e?Qt():e.startsWith("~/")?nn(Qt(),e.slice(2)):rn(e)}async function il(e){const t=await Vo.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=md(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=hd(e.sessionPath);if(t)return t}return null}var sl="__xedocRealtimeState__";function ol(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[sl]??={handlers:new Set},e[sl]}().handlers)r(a)}async function dl(e){const t=ul(),n=ml(t,e),a=await fn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:Zt(n),entries:a.map(e=>function(e,t){return{name:t.name,path:nn(e,t.name),type:hl(t)}}(n,e)).sort((e,t)=>"directory"===e.type&&"directory"!==t.type?-1:"directory"!==e.type&&"directory"===t.type?1:e.name.localeCompare(t.name))}}async function cl(e,t){const n=ul(),a=rn(ml(n,e),function(e){const t=e.trim();if(!t)throw new Po(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Po(400,"Folder name must be a single folder name.");return t}(t)),r=an(n,a);if(r.startsWith("..")||tn(r))throw new Po(403,"Path is outside the workspace root.");try{await un(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new Po(409,"Folder already exists.");throw i}return dl(a)}function ll(e){return ml(ul(),e)}function ul(){const e=function(e){return"~"===e?Qt():e.startsWith("~/")?nn(Qt(),e.slice(2)):rn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Ht(e)||Kt(e,{recursive:!0}),Vt(e)}function ml(e,t){const n=t?.trim(),a=n?tn(n)?n:nn(e,n):e;let r;try{r=Vt(rn(a))}catch{throw new Po(400,"Workspace path does not exist.")}const i=an(e,r);if(i.startsWith("..")||tn(i))throw new Po(403,"Path is outside the workspace root.");if(!Jt(r).isDirectory())throw new Po(400,"Workspace path is not a directory.");return r}function hl(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var fl=1e6;async function pl(e,t,n){const a=await Vo.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new Po(404,"Chat not found.");if(!a.workingDirectory)throw new Po(400,"Chat does not have a working directory.");const r=ll(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 gl(r,i.path),o=await vl(s,r),d=n??i.line??null,c=Math.min(o.size,fl),l=c?await async function(e,t){const n=await mn(e,"r");try{const e=Buffer.alloc(t),a=await n.read(e,0,t,0);return e.subarray(0,a.bytesRead)}finally{await n.close()}}(s,c):Buffer.alloc(0),u=function(e){if(!e.length)return!1;const t=e.subarray(0,Math.min(e.length,8e3));return!!t.includes(0)||t.toString("utf8").includes("�")}(l),m=u?void 0:l.toString("utf8"),h=m?m.split(/\r?\n/).length:0;return{content:m,isBinary:u,language:wl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>fl}}async function gl(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Po(400,"File path is required.");const a=await pn(e),r=tn(n)?n:rn(a,n);let i;try{i=await pn(r)}catch{throw new Po(404,"File does not exist.")}return function(e,t){const n=an(e,t);if(n.startsWith("..")||tn(n))throw new Po(403,"Path is outside the chat working directory.")}(a,i),i}async function vl(e,t){const n=await gn(e);if(!n.isFile())throw new Po(400,"Workspace path is not a file.");const a=t?await pn(t):null;return{name:Yt(e),path:e,relativePath:a&&an(a,e)||Yt(e),size:n.size}}function wl(e){const t=en(e).slice(1).toLowerCase();return{cjs:"javascript",css:"css",go:"go",htm:"html",html:"html",js:"javascript",json:"json",jsonl:"json",jsx:"javascript",md:"markdown",mjs:"javascript",py:"python",rb:"ruby",rs:"rust",sh:"bash",sql:"sql",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"}[t]??(t||null)}var xl=new Map,yl=new Map,bl=new Map,Nl=new Map,Il=new Map,kl=new Map,Cl=new Map;function Al(e,t){return async function(e,t){const n=Il.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Il.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Il.get(e)===i&&Il.delete(e)}}(e,async()=>Vo.chatMessage.create({data:{...t,chatId:e,sequence:await Mu(e)}}))}function El(e,t){const n=(kl.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return kl.set(e,a),a.finally(()=>{kl.get(e)===a&&kl.delete(e)}),n}async function Ml(e){return await pc(e),await async function(e){const t=await Vo.chat.findMany({where:{accountId:{not:null},externalThreadId:{not:null},status:{not:"ARCHIVED"},userId:e},select:{accountId:!0,externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}}),n=[...new Set(t.map(e=>e.accountId).filter(e=>!!e))];if(!n.length)return;const a=new Map;await Promise.all(n.map(async e=>{a.set(e,await Pc(nn(vd(e),"session_index.jsonl")))}));for(const r of t){if(!r.accountId||!r.externalThreadId)continue;const e=a.get(r.accountId)?.get(r.externalThreadId),t=zl(r,e);if(t){const e=await Vo.chat.update({where:{id:r.id},data:t});Tu(r.id,"chat.updated",gm(e))}}}(e),Vo.chat.findMany({where:{userId:e,status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Tl(e){const t=await Vo.chat.findUnique({where:{id:e}});if(!t)throw new Po(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?Ul(e,e.accountId,e.externalThreadId):e}(t)}async function Sl(e,t){const n=await Tl(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await Vo.codexAccount.findUnique({where:{id:t}});if(!n||n.userId!==e.userId)throw new Po(400,"Account does not belong to the chat user.");if("CONNECTED"!==n.status)throw new Po(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:ql(t.collaborationMode),s=void 0!==i&&i!==Rl(n.collaborationMode),o=void 0===t.permissionMode?void 0:$l(t.permissionMode),d=void 0!==o&&o!==Ol(n.permissionMode);if(void 0!==t.workingDirectory)throw new Po(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new Po(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new Po(400,"Wait for the current run to finish before changing modes.");const c=await Vo.chat.update({where:{id:e},data:{accountId:a,model:void 0===t.model?void 0:Pl(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Dl(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Ll(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&gc(e,a).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),void 0!==t.title&&async function(e){if(!e.accountId||!e.externalThreadId)return;const t=await Vo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await ym(gd.getRuntime({accountId:t.id,command:t.command,args:bm(t.args),workingDirectory:null,environment:fd(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 yl.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...xl.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=sm(t);n.runtime.respondToServerRequest(n.rpcId,a),xl.delete(um(e,n.requestId));const r=await Vo.chatMessage.findUnique({where:{id:n.messageId}});r&&Tu(e,"message.updated",pm(await Vo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:lm(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Pl(e){if(null===e)return null;const t=e.trim();if(!t)throw new Po(400,"Runtime option cannot be empty.");return t}function Dl(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Po(400,"reasoningEffort is invalid.");return e}function Ll(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Po(400,"serviceTier is invalid.")}function ql(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Po(400,"collaborationMode is invalid.")}function Rl(e){return"plan"===e?"plan":"default"}function $l(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Po(400,"permissionMode is invalid.")}function Ol(e){return"fullAccess"===e?"fullAccess":"default"}function _l(e){const t=wm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}async function Ul(e,t,n){const a=zl(e,(await Pc(nn(vd(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await Vo.chat.update({where:{id:e.id},data:a});return Tu(e.id,"chat.updated",gm(r)),r}function zl(e,t){if(!t)return null;const n={};return t.title&&wm(e.title)!==wm(t.title)&&(n.title=t.title),t.updatedAt&&e.lastActivityAt.getTime()!==t.updatedAt.getTime()&&(n.lastActivityAt=t.updatedAt),Object.keys(n).length?n:null}async function jl(e,t=0,n=50){const a=await Tl(e);await async function(e){const t=await Vo.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 Vo.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 Vo.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 Vo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=gd.getRuntime({accountId:t.id,command:t.command,args:bm(t.args),workingDirectory:null,environment:fd(t.environment)});try{const t=Hl((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return Hl((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 il(e);if(n){const e=await $c(n,t);if(e)return e}const a=await Rc(t);return a?$c(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(Fl),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??Bl(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?mm(t.metadata):null)??a?.metadata??Gl(t),rawPayload:mm(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||(!Fl(e)||!t.has(e.role)))}(e,i)).map(pm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(pm)).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 Fl(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function Bl(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function Gl(e){return{kind:"codexTranscript",source:e.source}}function Hl(e){return function(e){const t=md(e),n=md(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=Jl(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=hd(e.id)??hd(e.turnId)??hd(e.turn_id)??null,n=Ql(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=Ql(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(Jl(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=hd(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=hd(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,...Kl(t.images),...Kl(t.local_images),...Kl(t.localImages)].filter(Boolean).join("\n\n")}(hm(e.text)??hm(e.message)??hm(e.output)??function(e){if("string"==typeof e&&e.length>0)return e;if(!Array.isArray(e))return;const t=e.map(e=>{if("string"==typeof e)return e;const t=md(e);return hm(t?.text)??hm(t?.content)??hm(t?.message)??Wl(t)??""}).join("");return t.length?t:void 0}(e.content)??"",e)}(e);return!a.trim()||Ic(a)?null:{completedAt:Ql(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:Ql(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:hd(e.id)??hd(e.itemId)??hd(e.item_id)??null,rawPayload:Yl(e),role:n,source:"runtime",turnId:hd(e.turnId)??hd(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function Kl(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Vl(e):Wl(md(e))).filter(e=>!!e):[]}function Wl(e){return e?Vl(hd(e.url)??hd(e.image_url)??hd(e.path)??hd(e.filePath)):null}function Vl(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Jl(e){return Array.isArray(e)?e.map(e=>md(e)).filter(e=>!!e):null}function Ql(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Yl(e){return{id:hd(e.id),itemId:hd(e.itemId)??hd(e.item_id),role:hd(e.role),type:hd(e.type)}}async function Xl(e,t,n){await Tl(e);const a=um(e,t),r=xl.get(a);if(!r)throw new Po(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Po(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Po(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Po(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),xl.delete(a);const s=pm(await Vo.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:lm(await cm(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return Tu(e,"message.updated",s),s}async function Zl(e,t){const n=await Tl(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Po(400,"Switch the chat account before sending with a different account.");const a=t.accountId??n.accountId;if(!a)throw new Po(400,"Choose a Codex account before sending messages.");const r=await Vo.codexAccount.findUnique({where:{id:a}});if(!r||r.userId!==n.userId)throw new Po(400,"Account does not belong to the chat user.");if("CONNECTED"!==r.status)throw new Po(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new Po(400,"Select a working directory before sending messages.");const i=ll(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Po(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 Po(400,"Attachment kind is invalid.");n.push(await ru(e,a))}else n.push(au(a));return n}(i,t.attachments??[]),o=function(e,t){const n=t.map(e=>e.message).filter(e=>"image"===e.kind).map(e=>`<image>${e.url}</image>`);return[e.trim(),...n].filter(Boolean).join("\n\n")}(t.content,s);if(!o.trim()&&!s.length)throw new Po(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!_l(t))return null;const a=((await Vo.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,o),c=void 0===t.collaborationMode?void 0:ql(t.collaborationMode),l=c??Rl(n.collaborationMode),u=Ol(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=tu(n.id);if(!l?.runtime)throw new Po(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new Po(409,"The active turn has not published a thread yet.");const m=l.turnId??await uu(l.runtime,u);if(!m)throw new Po(409,"The active turn has not published a turn id yet.");const h=await Vo.chat.findUnique({where:{id:n.id}}),f=await Cu(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=Lu(await async function(e,t,n,a){async function r(r){const i=xu(n,a),s=void 0===t.collaborationMode?[t]:[t,lu(t,"collaborationMode")];let o;for(const t of s)for(const n of i)try{return await e.request("turn/steer",{...t,expectedTurnId:r,input:n},3e4)}catch(d){if(o=d,void 0!==t.collaborationMode&&bu(d))break;if(yu(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 uu(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...Iu(a,f)},r,t))??m,l.externalThreadId=u;const p=await Al(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:fm(su({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await Vo.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return Tu(n.id,"chat.updated",gm(g)),Tu(n.id,"message.created",pm(p)),{message:pm(p),assistantMessage:null,runId:l.runId,status:"RUNNING",delivery:"steer",steered:!0}}({accountId:a,attachments:s,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,startedAt:m,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,chat:a,collaborationMode:r,content:i,messageContent:s,metadata:o,permissionMode:d,queuedAt:c,workingDirectory:l}){const u=_t(),m=await Al(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:fm(su({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=bl.get(e)??[];bl.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 Vo.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return Tu(a.id,"chat.updated",gm(h)),Tu(a.id,"message.created",pm(m)),{message:pm(m),assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:d,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,queuedAt:m,workingDirectory:i});const h=await Al(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:fm(su(t.metadata,s))});Tu(e,"message.created",pm(h));const f=await eu({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:pm(h),assistantMessage:pm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function eu({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 Vo.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:fm({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await Al(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return Tu(a,"chat.updated",gm(await Vo.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),Tu(a,"message.created",pm(m)),Tu(a,"run.status",{runId:u.id,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){const l=await Vo.codexAccount.findUnique({where:{id:a}}),u=await Vo.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=Ol(u.permissionMode),h=await Vo.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});Tu(e,"message.updated",pm(h)),await Vo.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),Tu(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};yl.set(t,f);const p=gd.getRuntime({accountId:l.id,command:l.command,args:bm(l.args),workingDirectory:null,environment:fd(l.environment)});f.runtime=p;let g="";const v=new Map;let w,x=u.externalThreadId;const y=p.onEvent(n=>{(function(e,t,n){const a=Ru(e);if(t&&a&&a!==t)return!1;const r=$u(e);return!n||!r||r===n})(n,x,w)&&El(t,()=>async function(e,t){const n=function(e){const t=Zu(e);if(t){const e=md(t.params),n=md(t.info)??md(e?.info)??e??t;return Xu(em(n,["last_token_usage","lastTokenUsage"])??em(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=md(e.params),a=md(n?.event),r=md(n?.usage)??md(a?.usage)??(Yu(e.method)?n:void 0);return r?Xu(r):null}(t);n&&Tu(e.chatId,"context.updated",n);if(function(e){return!!Zu(e)||Yu(e.method)}(t))return;if(function(e){const t=md(e.params),n=md(t?.payload)??md(t?.event);return[e.method,hd(t?.type),hd(n?.type),hd(n?.event)].some(e=>zu(e??"").includes("compact"))}(t))return void(await Pu({chatId:e.chatId,completedAt:new Date,content:Ju(t),itemId:`context-compaction:${$u(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Qu(t)?"STREAMING":"COMPLETED",turnId:$u(t)}));const a=t.method??"",r=md(t.params),i=_u(t),s=zu(hd(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=md(e.params),n=md(e.result),a=md(t?.event);return xm(t)??xm(a)??xm(n)}(t);return void(n&&await Im(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=hm(r?.delta)??hm(md(r?.event)?.delta);if(!n)return;const a=Ou(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Pu({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:hd(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:$u(t)});return void Tu(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&ju(s))return void(await Pu({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:Ou(t),kind:"CHAT",metadata:{kind:"assistant",phase:hd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:$u(t)}));if("item/completed"===a&&ju(s)){const n=function(e){if(!e)return"";const t=hm(e.text)??hm(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>hm(md(e)?.text)??"").filter(Boolean).join("")}(i)||Du(t);if(!n)return;const a=Ou(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Pu({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:hd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:$u(t)}))}if(a.startsWith("item/reasoning/")||zu(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Ou(t)??`${n.toLowerCase()}:${$u(t)??"turn"}`,i=`${n}:${r}`,s=a.delta?`${e.streamBuffers.get(i)??""}${a.delta}`:e.streamBuffers.get(i)??a.contentFallback;e.streamBuffers.set(i,s),await Pu({chatId:e.chatId,content:s,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Fu(t)?"COMPLETED":"STREAMING",turnId:$u(t)})}(e,t,"THINKING",{contentFallback:"Thinking...",delta:Uu(t),metadata:{kind:"thinking",status:Gu(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=md(t.params)??{},a="item/plan/delta"===t.method?Uu(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>md(e)).filter(e=>!!e).map(e=>({status:hd(e.status)??"pending",step:hd(e.step)??""})).filter(e=>e.step),i=hd(n.explanation),s=$u(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Ou(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 Pu({chatId:e.chatId,content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=md(t.params)??{},r=n??a,i=Ou(t)??`command:${$u(t)??"turn"}`,s=`COMMAND:${i}`,o=Uu(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:hm(r.output)??hm(r.aggregatedOutput)??hm(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=hd(r.command)??hd(a.command)??"command",l=Gu(r,t.method??"");await Pu({chatId:e.chatId,completedAt:Fu(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Wu(r.actions)??Wu(r.commandActions),command:c,cwd:hd(r.cwd)??hd(a.cwd),durationMs:Vu(r.durationMs)??Vu(r.duration_ms),exitCode:Vu(r.exitCode)??Vu(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Fu(t)?"COMPLETED":"STREAMING",turnId:$u(t)})}(e,t,i));if("filechange"===s||a.includes("fileChange")||"turn/diff/updated"===a||a.includes("turn_diff"))return void(await async function(e,t,n){const a=md(t.params)??{},r=n??a,i=Ou(t)??`file-change:${$u(t)??"turn"}`,s=Hu(r)??Hu(a),o=Wu(r.changes)??Wu(a.changes)??[],d=function(e,t){const n=[hd(e.path),hd(e.filePath),hd(e.file_path),...t.flatMap(e=>{const t=md(e);return[hd(t?.path),hd(t?.filePath),hd(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Pu({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Vu(r.additions)??Ku(s,"+"),changes:o,deletions:Vu(r.deletions)??Ku(s,"-"),diff:s,kind:"fileChange",paths:d,status:Gu(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Fu(t)?"COMPLETED":"STREAMING",turnId:$u(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=md(t.params)??{},a=hd(n.requestId)??hd(n.id);if(!a)return;xl.delete(um(e,a));const r=await Vo.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;Tu(e,"message.updated",pm(await Vo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:lm(r.metadata,{result:void 0===n.result?null:mm(n.result),resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}(e.chatId,t));("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=md(t.params),a=hd(md(n?.error)?.message)??hd(n?.message)??t.error?.message??"Codex runtime error.";await Pu({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${$u(t)??Date.now()}`,kind:"ERROR",metadata:{details:mm(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:$u(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>Su("Codex event projection failed.",e))}),b=p.onServerRequest(n=>{(function(e,t,n){const a=md(e.params),r=hd(a?.threadId);if(t&&r&&r!==t)return!1;const i=hd(a?.turnId);return!n||!i||i===n})(n,x,w)&&El(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=md(t.params)??{},r=wd(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?zu(e).includes("permissions")?"permissions":"approval":zu(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:hd(n.message),method:e,mode:hd(n.mode),questions:am(n.questions),raw:mm(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Wu(n.availableDecisions),changes:Wu(n.changes),command:hd(n.command),cwd:hd(n.cwd),itemId:hd(n.itemId),kind:a,method:e,raw:mm(r),reason:hd(n.reason)??hd(n.message),requestId:t,requestKind:a,status:"pending",turnId:hd(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=sm(i);return e.runtime.respondToServerRequest(t.id,n),void(await Pu({chatId:e.chatId,completedAt:new Date,content:im(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:hd(a.turnId),itemId:hd(a.itemId)}))}const o=await Pu({chatId:e.chatId,content:im(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:hd(a.turnId),itemId:hd(a.itemId)});xl.set(um(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=>Su("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=md((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=hd(md(r?.thread)?.id)??hd(r?.threadId)??hd(r?.thread_id)??t;if(!i)throw new Error("Codex did not return a thread id.");return i}(p,u.externalThreadId,o),f.externalThreadId=x,function({chatId:e,cwd:t,runtime:n,seed:a,threadId:r}){const i=a?.trim();if(!i)return;const s=function(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}(i),o=new Set(["untitled chat","conversation",...s?[wm(s)]:[]]);(async()=>{const a=await async function(e,{cwd:t,seed:n}){try{const a=md((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return vm(hd(a?.title)??hd(a?.name)??hd(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await async function(e,t,n,a,r){const i=vm(a);if(!i)return!1;const s=await Vo.chat.findUnique({where:{id:t}});if(!s)return!1;const o=wm(s.title);return!(!_l(s.title)&&!r.has(o))&&(await Im(t,i),ym(e,n,i),!0)}(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await du(t)&&(f.interruptRequested=!0);const n=await Cu(p,u.model,u.reasoningEffort),a=await async function(e,t,n,a){const r=xu(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,!yu(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}:{},...Nu(d,n,m),metadata:i},r,s);w=Lu(a),f.turnId=w,w&&(await Vo.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await du(t))&&(f.interruptRequested=!0,await cu(p,w,x)));const v=await 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)&&Ru(e)===x&&(!w||$u(e)===w),6e5);if(await async function(e){await(kl.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new ou(Bu(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(Bu(v));const y=await async function(e,t,n){try{const a=md((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return qu((Array.isArray(a?.data)?a.data:[]).map(e=>md(e)).filter(e=>!!e).filter(e=>!n||hd(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||Du(v)||Du(a)||g,b=new Date,N=await Vo.chatMessage.update({where:{id:h.id},data:{content:y,status:"COMPLETED",rawPayload:fm(v),completedAt:b}});await dm(e,t,"COMPLETED"),await om(e,t,"Codex completed the turn."),await Vo.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const I="plan"===d&&await async function(e,t){return(await Vo.chatMessage.findMany({where:{chatId:e,runId:t,OR:[{kind:"PLAN"},{kind:"CHAT",role:"ASSISTANT"}]}})).some(e=>{const t=e.content.trim();return!(!t||"Planning..."===t)&&("CHAT"===e.kind?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(t):"result"===md(e.metadata)?.presentation)})}(e,t),k=await Vo.chat.update({where:{id:e},data:{collaborationMode:I?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:b,updatedAt:b}});Tu(e,"chat.updated",gm(k)),Tu(e,"message.completed",pm(N)),Tu(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=xm(md((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=md((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return xm((Nm(n?.data)??Nm(n?.items)??Nm(n?.threads)??[]).find(e=>hd(e.id)===t))}catch{return null}}(e,n);a&&await Im(t,a)}(p,e,x),await Ul(k,l.id,x)}catch(N){const n=N instanceof Error?N.message:"Codex run failed.";if(await om(e,t,n),N instanceof ou){await dm(e,t,"COMPLETED");const a=new Date,r=await Vo.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:lm(h.metadata,{interrupted:!0,kind:"assistant"})}});return await Vo.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),Tu(e,"chat.updated",gm(await Vo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Tu(e,"message.completed",pm(r)),void Tu(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await Vo.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await dm(e,t,"FAILED"),await Vo.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),Tu(e,"chat.updated",gm(await Vo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Tu(e,"message.failed",{...pm(r),error:n}),Tu(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y(),b(),yl.delete(t),kl.delete(t),function(e){const t=(Nl.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(tu(e))return;const t=await Vo.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=bl.get(e)??[];if(!t)return bl.delete(e),null;n.length?bl.set(e,n):bl.delete(e);return t}(e);if(!n)return;try{const a=await Vo.codexAccount.findUnique({where:{id:n.accountId}});if(!a||a.userId!==t.userId||"CONNECTED"!==a.status)throw new Error("Queued message account is no longer connected.");const r=new Date,i=await eu({accountId:n.accountId,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:Ol(t.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:r,workingDirectory:n.workingDirectory});await nu(e,n.messageId,{dequeuedAt:r.toISOString(),queueStatus:"running",runId:i.run.id})}catch(N){await nu(e,n.messageId,{error:N instanceof Error?N.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});Nl.set(e,t),t.finally(()=>{Nl.get(e)===t&&Nl.delete(e)})}(e)}}(a,u.id,m.id,e,i,s,t,l,r,n),{assistantMessage:m,run:u}}function tu(e){for(const t of yl.values())if(t.chatId===e)return t;return null}async function nu(e,t,n){const a=await Vo.chatMessage.findUnique({where:{id:t}});a&&Tu(e,"message.updated",pm(await Vo.chatMessage.update({where:{id:t},data:{metadata:lm(a.metadata,n)}})))}function au(e){const t=e.dataUrl?.trim(),n=/^data:(image\/(?:png|jpeg|jpg|webp|gif));base64,([A-Za-z0-9+/=\s]+)$/i.exec(t);if(!n)throw new Po(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 Po(400,"Image attachments must be 6 MB or smaller.");const s=iu(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:_t(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function ru(e,t){const n=await async function(e,t){return vl(await gl(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:_t(),kind:"file",name:iu(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function iu(e,t){const n=e?.trim();return(n?Yt(n):t).slice(0,160)||"attachment"}function su(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var ou=class extends Error{};async function du(e){return!!(await Vo.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function cu(e,t,n){const a={turnId:t,...n?{threadId:n}:{}};try{return void(await e.request("turn/interrupt",a,3e4))}catch(r){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return!t||t.includes("invalid")||t.includes("unknown")||t.includes("missing")||t.includes("param")}(r))throw r}await e.request("turn/interrupt",{turn_id:t,...n?{thread_id:n}:{}},3e4)}function lu(e,t){const n={...e};return delete n[t],n}async function uu(e,t){for(let n=0;n<3;n+=1){const a=await mu(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 mu(e,t){try{const n=md((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return hu(fu(n?.data)??fu(n?.items)??fu(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 hu(fu(md(md(n.result)?.thread)?.turns)??[],!1)}function hu(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>gu(pu(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!wu(vu(i)))continue;const e=gu(pu(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function fu(e){return Array.isArray(e)?e.map(md).filter(e=>!!e):null}function pu(e){return hd(e.id)??hd(e.turnId)??hd(e.turn_id)??null}function gu(e){const t=e?.trim();return t||null}function vu(e){return(hd(e.status)??hd(e.turnStatus)??hd(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function wu(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function xu(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 yu(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 bu(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function Nu(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:ku(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Iu(e,t=null){return"plan"!==e?{}:{collaborationMode:ku(e,t)}}function ku(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Cu(e,t,n){const a=Au(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=md(md((await e.request("config/read",{},3e4)).result)?.config),n=Au(hd(t?.model));if(r=r??Eu(t?.model_reasoning_effort)??Eu(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=md((await e.request("model/list",{includeHidden:!1,limit:100},3e4)).result),n=Array.isArray(t?.data)?t.data:[];for(const e of n){const t=md(e),n=Au(hd(t?.id))??Au(hd(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Au(e){const t=e?.trim();return t||null}function Eu(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Mu(e){return((await Vo.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function Tu(e,t,n){ol(e,t,n)}function Su(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function Pu(e){return async function(e,t){if(!e)return t();const n=Cl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Cl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Cl.get(e)===i&&Cl.delete(e)}}(function(e){return e.requestId?`${e.chatId}:request:${e.requestId}`:e.itemId?`${e.chatId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.chatId}:fallback:${e.fallbackMessageId}`:null}(e),async()=>{const t=await async function(e){if(e.requestId){const t=await Vo.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await Vo.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 Vo.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:fm(e.metadata),rawPayload:void 0===e.rawPayload?void 0:fm(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=pm(t?await Vo.chatMessage.update({where:{id:t.id},data:n}):await Al(e.chatId,n));return Tu(e.chatId,t?"message.updated":"message.created",a),a})}function Du(e){const t=md(e.result),n=md(e.params),a=md(n?.payload)??n??t;return qu(md(n?.turn)??md(t?.turn))??hm(t?.text)??hm(t?.content)??hm(a?.text)??hm(a?.content)??hm(a?.delta)??hm(a?.message)??""}function Lu(e){const t=md(e.result),n=md(e.params);return hd(t?.turnId)??hd(t?.turn_id)??hd(n?.turnId)??hd(n?.turn_id)??hd(md(t?.turn)?.id)??hd(md(n?.turn)?.id)}function qu(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=md(e);return"agentMessage"!==t?.type?null:hm(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Ru(e){const t=md(e.params),n=md(e.result),a=md(t?.event);return hd(t?.threadId)??hd(t?.thread_id)??hd(n?.threadId)??hd(n?.thread_id)??hd(a?.threadId)??hd(a?.thread_id)}function $u(e){const t=md(e.params),n=md(e.result),a=_u(e);return hd(t?.turnId)??hd(n?.turnId)??hd(a?.turnId)??Lu(e)}function Ou(e){const t=md(e.params),n=md(e.result),a=_u(e);return hd(t?.itemId)??hd(n?.itemId)??hd(a?.id)}function _u(e){const t=md(e.params),n=md(e.result),a=md(t?.payload);return md(t?.item)??md(n?.item)??md(a?.item)}function Uu(e){const t=md(e.params),n=md(t?.event);return hm(t?.delta)??hm(t?.text)??hm(t?.output)??hm(n?.delta)??hm(n?.text)}function zu(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function ju(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Fu(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Bu(e){const t=md(e.params);return hd(md(t?.error)?.message)??hd(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Gu(e,t){const n=hd(e?.status);return n?zu(n):t.includes("failed")||t.includes("error")?"failed":Fu({method:t})?"completed":"running"}function Hu(e){return hm(e.diff)??hm(e.unifiedDiff)??hm(e.unified_diff)??hm(e.patch)}function Ku(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Wu(e){if(Array.isArray(e))return e.map(mm)}function Vu(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Ju(e){const t=zu(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Qu(e){return zu(e.method??"").includes("start")}function Yu(e){const t=zu(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Xu(e,t=e){const n=tm(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=tm(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=tm(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}([tm(e,["input_tokens","inputTokens"]),tm(e,["output_tokens","outputTokens"]),tm(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 Zu(e,t=0){if(t>4)return;const n=md(e);if(!n)return;const a=zu(hd(n.type)??""),r=zu(hd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Zu(n[i],t+1);if(e)return e}}function em(e,t){for(const n of t){const t=md(e[n]);if(t)return t}}function tm(e,t){for(const n of t){const t=nm(e[n]);if(void 0!==t)return t}}function nm(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 am(e){return Array.isArray(e)?e.map(e=>md(e)).filter(e=>!!e).map(e=>({header:hd(e.header),id:hd(e.id)??_t(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:rm(e.options),question:hd(e.question)??hd(e.header)??"Answer",selectionLimit:Vu(e.selectionLimit)??Vu(e.selection_limit)})):[]}function rm(e){return Array.isArray(e)?e.map(e=>md(e)).filter(e=>!!e).map(e=>({description:hd(e.description),label:hd(e.label)??hd(e.value)??""})).filter(e=>e.label):[]}function im(e){return"userInput"===e.kind?hd(e.message)??"Codex needs more information before it can continue.":hd(e.reason)??hd(e.command)??"Codex needs approval before it can continue."}function sm(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function om(e,t,n){const a=await Vo.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=md(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=um(e,r.requestId),a=xl.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),xl.delete(t)}Tu(e,"message.updated",pm(await Vo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:lm(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function dm(e,t,n){const a=await Vo.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)Tu(e,"message.updated",pm(await Vo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function cm(e){return(await Vo.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function lm(e,t){return fm({...md(e)??{},...t})}function um(e,t){return`${e}:${t}`}function mm(e){return JSON.parse(JSON.stringify(e))}function hm(e){return"string"==typeof e&&e.length>0?e:void 0}function fm(e){return JSON.parse(JSON.stringify(e))}function pm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function gm(e){return{...e,collaborationMode:Rl(e.collaborationMode),permissionMode:Ol(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function vm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function wm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function xm(e){const t=md(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=vm(hd(r)??"");if(e)return e}const a=md(t.thread);return a?xm(a):null}async function ym(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function bm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Nm(e){return Array.isArray(e)?e.map(e=>md(e)).filter(e=>!!e):null}async function Im(e,t){Tu(e,"chat.updated",gm(await Vo.chat.update({where:{id:e},data:{title:t}})))}var km=xn({action:()=>Am,loader:()=>Cm});async function Cm({request:e}){try{return qo(e,["GET"]),await Xo(e),Do(await Ml($o(new URL(e.url).searchParams.get("userId"),"userId",{required:!0})))}catch(t){return jo(t)}}async function Am({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Ro(e);return Do(await async function(e){const t=await Vo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||t.userId!==e.userId)throw new Po(400,"Account does not belong to the user.");if("CONNECTED"!==t.status)throw new Po(400,"Authenticate the account before starting a chat.");return Vo.chat.create({data:{userId:e.userId,accountId:e.accountId,workingDirectory:ll(e.workingDirectory),model:void 0===e.model?void 0:Pl(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Dl(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Ll(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:ql(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:$l(e.permissionMode),title:e.title??"Untitled chat"}})}({userId:$o(t.userId,"userId",{required:!0}),accountId:$o(t.accountId,"accountId",{required:!0}),workingDirectory:$o(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:$o(t.model,"model",{maxLength:160}),reasoningEffort:Em(t.reasoningEffort,"reasoningEffort"),serviceTier:Em(t.serviceTier,"serviceTier"),collaborationMode:Em(t.collaborationMode,"collaborationMode"),permissionMode:Em(t.permissionMode,"permissionMode"),title:$o(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return jo(t)}}function Em(e,t){return null===e?null:$o(e,t,{maxLength:80})}var Mm=xn({action:()=>Sm,loader:()=>Tm});async function Tm({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Do(await Tl(zo(t,"chatId")))}catch(n){return jo(n)}}async function Sm({request:e,params:t}){try{await Xo(e);const n=zo(t,"chatId");if("PATCH"===e.method){const t=await Ro(e);return Do(await Sl(n,{accountId:$o(t.accountId,"accountId"),model:null===t.model?null:$o(t.model,"model",{maxLength:160}),reasoningEffort:Pm(t.reasoningEffort,"reasoningEffort"),serviceTier:Pm(t.serviceTier,"serviceTier"),collaborationMode:Pm(t.collaborationMode,"collaborationMode"),permissionMode:Pm(t.permissionMode,"permissionMode"),title:$o(t.title,"title",{maxLength:160}),workingDirectory:$o(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Do(await async function(e){return await Tl(e),Vo.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));Lo(e.method)}catch(n){return jo(n)}}function Pm(e,t){return null===e?null:$o(e,t,{maxLength:80})}var Dm=xn({loader:()=>Lm});async function Lm({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Do(await async function(e){const t=await Tl(e);return t.externalThreadId?{usage:await vc(t.id,t.externalThreadId)}:{usage:null}}(zo(t,"chatId")))}catch(n){return jo(n)}}var qm=xn({loader:()=>Rm});async function Rm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Po(400,"path is required.");return Do(await pl(zo(t,"chatId"),a,Uo(n,"line",0)||null))}catch(n){return jo(n)}}var $m=vn(on);async function Om(e){const t=await Um(e),n=await zm(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await jm(t.cwd),r=await Fm(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 Fm(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Bm(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 _m(e,t){const n=await Um(e);if("RUNNING"===n.status)throw new Po(409,"Git actions are disabled while Codex is running.");if(!(await zm(n.cwd)))throw new Po(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Gm(t.branch);a=await Bm(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Gm(t.branch);await Bm(n.cwd,["check-ref-format","--branch",e]),a=await Bm(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Po(400,"Commit message is required.");await Bm(n.cwd,["add","-A"]),a=await Bm(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Bm(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Po(400,"Unsupported git action.");a=await Fm(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Bm(n.cwd,["push"]):await async function(e){await Bm(e,["remote","get-url","origin"]);const t=await jm(e);if(!t)throw new Po(400,"Cannot push while detached from a branch.");return Bm(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Km(t.action),output:a,status:await Om(e)}}async function Um(e){const t=await Vo.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new Po(404,"Chat not found.");if(!t.workingDirectory)throw new Po(400,"Chat does not have a working directory.");return{cwd:ll(t.workingDirectory),status:t.status}}async function zm(e){return Fm(e,["rev-parse","--show-toplevel"])}async function jm(e){return await Fm(e,["symbolic-ref","--quiet","--short","HEAD"])??await Fm(e,["rev-parse","--short","HEAD"])}async function Fm(e,t){try{return await Bm(e,t)}catch{return null}}async function Bm(e,t){try{const n=await $m("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Hm(n.stdout,n.stderr)}catch(n){throw new Po(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Hm("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 Gm(e){const t=e?.trim();if(!t)throw new Po(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Po(400,"Branch name is invalid.");return t}function Hm(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Km(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 Wm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=zo(t,"chatId"),a=zo(t,"operation"),r=new URL(e.url);if("status"===a)return Do(await Om(n));if("branches"===a)return Do(await async function(e){const t=await Um(e);if(!(await zm(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await jm(t.cwd);return{branches:(await Bm(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 Fm(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Do(await async function(e,t){const n=await Um(e);if(!(await zm(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Hm(await Fm(n.cwd,["diff","--stat",...a]),await Fm(n.cwd,["diff","--cached","--stat",...a]));return{diff:Hm(await Fm(n.cwd,["diff","--no-ext-diff",...a]),await Fm(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new Po(404,"Git operation not found.")}catch(n){return jo(n)}}async function Vm({request:e,params:t}){try{if(qo(e,["POST"]),await Xo(e),"action"!==zo(t,"operation"))throw new Po(404,"Git operation not found.");const n=await Ro(e),a={action:Jm(n.action),branch:$o(n.branch,"branch",{maxLength:240}),message:$o(n.message,"message",{maxLength:5e3})};return Do(await _m(zo(t,"chatId"),a))}catch(n){return jo(n)}}function Jm(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Po(400,"action is invalid.")}async function Qm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=new URL(e.url);return Do(await jl(zo(t,"chatId"),Uo(n,"afterSequence",0),Uo(n,"limit",50)))}catch(n){return jo(n)}}async function Ym({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=await Ro(e),a={content:Zm(n.content),accountId:$o(n.accountId,"accountId"),attachments:eh(n.attachments),collaborationMode:rh(n.collaborationMode,"collaborationMode"),delivery:Xm(n.delivery),metadata:_o(n.metadata,"metadata")};return Do(await Zl(zo(t,"chatId"),a),{status:201})}catch(n){return jo(n)}}function Xm(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Po(400,"delivery is invalid.")}}function Zm(e){if(null==e)return"";if("string"!=typeof e)throw new Po(400,"content must be a string.");if(e.length>4e4)throw new Po(400,"content must be 40000 characters or fewer.");return e.trim()}function eh(e){if(void 0!==e){if(!Array.isArray(e))throw new Po(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Po(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:th(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:nh(n.mimeType,`attachments[${t}].mimeType`,80),name:nh(n.name,`attachments[${t}].name`,160),size:ah(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:nh(n.name,`attachments[${t}].name`,160),path:th(n.path,`attachments[${t}].path`,4096),size:ah(n.size,`attachments[${t}].size`)};throw new Po(400,`attachments[${t}].kind is invalid.`)})}}function th(e,t,n){if("string"!=typeof e||!e.trim())throw new Po(400,`${t} is required.`);if(e.length>n)throw new Po(400,`${t} is too large.`);return e}function nh(e,t,n){if(null!=e){if("string"!=typeof e)throw new Po(400,`${t} must be a string.`);if(e.length>n)throw new Po(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function ah(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Po(400,`${t} must be a positive number.`);return e}}function rh(e,t){return null===e?null:$o(e,t,{maxLength:80})}async function ih({request:e,params:t}){try{return qo(e,["POST"]),await Xo(e),Do(await async function(e){const t=await Tl(e);if("RUNNING"!==t.status)throw new Po(409,"There is no running task to stop.");const n=await Vo.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new Po(409,"There is no active run to stop.");const a=new Date;await Vo.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=yl.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await cu(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."}}(zo(t,"chatId")))}catch(n){return jo(n)}}async function sh({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=await Ro(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Po(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Do(await Xl(zo(t,"chatId"),zo(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return jo(n)}}async function oh({request:e}){try{return qo(e,["GET"]),await Xo(e),Do(await dl(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return jo(t)}}async function dh({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Ro(e),n={parentPath:$o(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:$o(t.name,"name",{required:!0,maxLength:255})};return Do(await cl(n.parentPath,n.name),{status:201})}catch(t){return jo(t)}}var ch={entry:{module:"/assets/entry.client-CM3vH2bv.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/react-dom-KYDDPtOx.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-DKEnPIjJ.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/react-dom-KYDDPtOx.js","/assets/document-title-Dn4sU16M.js","/assets/session-provider-FKGj36EG.js"],css:["/assets/root-Bh_1OXF0.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-0oYrfAJT.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/label-FUU4pCWu.js","/assets/session-provider-FKGj36EG.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-Bb7v-3GP.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/app-shell-Bn5JIK3M.js","/assets/label-FUU4pCWu.js","/assets/document-title-Dn4sU16M.js","/assets/session-provider-FKGj36EG.js","/assets/react-dom-KYDDPtOx.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-DUuienY0.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/app-shell-Bn5JIK3M.js","/assets/label-FUU4pCWu.js","/assets/document-title-Dn4sU16M.js","/assets/session-provider-FKGj36EG.js","/assets/react-dom-KYDDPtOx.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-BoNZJwBl.js",imports:["/assets/jsx-runtime-B9QlDcuB.js","/assets/app-shell-Bn5JIK3M.js","/assets/label-FUU4pCWu.js","/assets/document-title-Dn4sU16M.js","/assets/session-provider-FKGj36EG.js","/assets/react-dom-KYDDPtOx.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.users":{id:"routes/api.users",parentId:"root",path:"api/users",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.users-BLvMDkJE.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-CHoT6sYP.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-romutOT6.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-BiWq2jPz.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-BixDYyx8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-6XNKTx--.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.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-9a2680ac.js",version:"9a2680ac",sri:void 0},lh="build/client",uh="/",mh={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},hh=!0,fh=!1,ph=[],gh={mode:"lazy",manifestPath:"/__manifest"},vh="/",wh={module:yn},xh={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:oa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:xa},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:ba},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:Co},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Eo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:To},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Fo},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:sd},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:dd},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:ld},"routes/api.users":{id:"routes/api.users",parentId:"root",path:"api/users",index:void 0,caseSensitive:void 0,module:Ud},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:jd},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Hd},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Wd},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Jd},"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:Xd},"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:sc},"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:dc},"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:lc},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,module:mc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:km},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Mm},"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:Dm},"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:qm},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,module:xn({action:()=>Vm,loader:()=>Wm})},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,module:xn({action:()=>Ym,loader:()=>Qm})},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,module:xn({action:()=>ih})},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,module:xn({action:()=>sh})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:xn({action:()=>dh,loader:()=>oh})}},yh=!1;export{yh as allowedActionOrigins,ch as assets,lh as assetsBuildDirectory,uh as basename,wh as entry,mh as future,fh as isSpaMode,ph as prerender,vh as publicPath,gh as routeDiscovery,xh as routes,hh as ssr};
1
+ import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useNavigate as h,useOutletContext as f,useParams as p}from"react-router";import{isbot as g}from"isbot";import{renderToPipeableStream as v}from"react-dom/server";import{Fragment as w,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as b,QueryClientProvider as N,useMutation as I,useQueries as k,useQuery as C,useQueryClient as A}from"@tanstack/react-query";import{ThemeProvider as E,useTheme as M}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as D,useEffect as q,useMemo as L,useRef as R,useState as $,useSyncExternalStore as O}from"react";import{Toaster as _,toast as z}from"sonner";import{AlertTriangle as U,Archive as j,ArrowLeft as F,ArrowRight as B,ArrowUp as G,Brain as H,Check as K,CheckCircle2 as W,CheckIcon as V,ChevronDown as Q,ChevronRight as J,ChevronRightIcon as X,CircleCheckIcon as Y,Clock as Z,Code2 as ee,Cpu as te,Download as ne,ExternalLink as ae,Eye as re,File as ie,FileCode as se,FileDiff as oe,Filter as de,Folder as ce,FolderOpen as le,FolderPlus as ue,Gauge as me,GitBranch as he,GitCommitHorizontal as fe,Home as pe,Image as ge,Info as ve,InfoIcon as we,KeyRound as xe,Laptop as ye,ListChecks as be,Loader2 as Ne,Loader2Icon as Ie,LockKeyhole as ke,LogOut as Ce,Mail as Ae,Menu as Ee,MessageSquare as Me,Moon as Te,MoreHorizontal as Se,OctagonXIcon as Pe,PanelLeftIcon as De,Paperclip as qe,Pencil as Le,PencilLine as Re,PlugZap as $e,Plus as Oe,RefreshCw as _e,RotateCcw as ze,RotateCw as Ue,Search as je,Server as Fe,Settings as Be,Shield as Ge,ShieldCheck as He,Square as Ke,SquarePen as We,Sun as Ve,Terminal as Qe,Trash2 as Je,TriangleAlertIcon as Xe,Upload as Ye,UserRound as Ze,X as et,XIcon as tt,Zap as nt}from"lucide-react";import{Tooltip as at}from"@base-ui/react/tooltip";import{clsx as rt}from"clsx";import{twMerge as it}from"tailwind-merge";import{Button as st}from"@base-ui/react/button";import{cva as ot}from"class-variance-authority";import{Input as dt}from"@base-ui/react/input";import{AlertDialog as ct}from"@base-ui/react/alert-dialog";import{mergeProps as lt}from"@base-ui/react/merge-props";import{useRender as ut}from"@base-ui/react/use-render";import{Dialog as mt}from"@base-ui/react/dialog";import{ScrollArea as ht}from"@base-ui/react/scroll-area";import{Separator as ft}from"@base-ui/react/separator";import{Menu as pt}from"@base-ui/react/menu";import gt from"react-markdown";import vt from"remark-gfm";import wt from"highlight.js/lib/core";import xt from"highlight.js/lib/languages/bash";import yt from"highlight.js/lib/languages/css";import bt from"highlight.js/lib/languages/go";import Nt from"highlight.js/lib/languages/json";import It from"highlight.js/lib/languages/javascript";import kt from"highlight.js/lib/languages/markdown";import Ct from"highlight.js/lib/languages/python";import At from"highlight.js/lib/languages/rust";import Et from"highlight.js/lib/languages/shell";import Mt from"highlight.js/lib/languages/sql";import Tt from"highlight.js/lib/languages/typescript";import St from"highlight.js/lib/languages/xml";import Pt from"highlight.js/lib/languages/yaml";import{Popover as Dt}from"@base-ui/react/popover";import{Switch as qt}from"@base-ui/react/switch";import{io as Lt}from"socket.io-client";import"dotenv/config";import{createHash as Rt,createHmac as $t,randomBytes as Ot,randomUUID as _t,scryptSync as zt,timingSafeEqual as Ut}from"node:crypto";import{Prisma as jt,PrismaClient as Ft}from"@prisma/client";import{chmodSync as Bt,constants as Gt,existsSync as Ht,mkdirSync as Kt,readFileSync as Wt,realpathSync as Vt,statSync as Qt}from"node:fs";import{homedir as Jt}from"node:os";import{basename as Xt,delimiter as Yt,dirname as Zt,extname as en,isAbsolute as tn,join as nn,relative as an,resolve as rn,sep as sn}from"node:path";import{execFile as on,spawn as dn}from"node:child_process";import{access as cn,copyFile as ln,mkdir as un,open as mn,readFile as hn,readdir as fn,realpath as pn,stat as gn}from"node:fs/promises";import{promisify as vn}from"node:util";var wn=Object.defineProperty,xn=(e,t)=>{let n={};for(var a in e)wn(n,a,{get:e[a],enumerable:!0});return t||wn(n,Symbol.toStringTag,{value:"Module"}),n},yn=xn({default:()=>Nn,streamTimeout:()=>bn}),bn=5e3;function Nn(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&g(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),bn+1e3);const{pipe:h,abort:f}=v(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var In=({...e})=>{const{theme:t="system"}=M();return x(_,{theme:t,className:"toaster group",icons:{success:x(Y,{className:"size-4"}),info:x(we,{className:"size-4"}),warning:x(Xe,{className:"size-4"}),error:x(Pe,{className:"size-4"}),loading:x(Ie,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function kn(...e){return it(rt(e))}function Cn({delay:e=0,...t}){return x(at.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function An({...e}){return x(at.Root,{"data-slot":"tooltip",...e})}function En({...e}){return x(at.Trigger,{"data-slot":"tooltip-trigger",...e})}function Mn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(at.Portal,{children:x(at.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(at.Popup,{"data-slot":"tooltip-content",className:kn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(at.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var Tn="xedoc";function Sn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Tn}`:Tn}(e);q(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Tn}},[t])}var Pn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Dn=class extends Error{request;constructor(e,t){super(function(e,t){const n=t instanceof Error?t.message:String(t);return["No HTTP response received.",`${e.method} ${e.url}`,n,"Check the server URL, CORS settings, network reachability, and whether the API is running."].filter(Boolean).join("\n")}(e,t)),this.request=e}};async function qn(e){return Bn(e.serverUrl,"/api/auth/session",{token:e.token})}async function Ln(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Rn(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:{},token:e.token})}async function $n(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function On(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function _n(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return Bn(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function zn(e,t){return Bn(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function Un(e,t,n){return Bn(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function jn(e,t,n=0){return Bn(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Fn(e,t,n){return Bn(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function Bn(e,t,n){const a=`${e}${t}`,r=n.method??(void 0===n.body?"GET":"POST");let i;try{i=await fetch(a,{method:r,headers:{Accept:"application/json",...void 0===n.body?{}:{"Content-Type":"application/json"},...n.token?{Authorization:`Bearer ${n.token}`}:{}},body:void 0===n.body?void 0:JSON.stringify(n.body)})}catch(d){throw new Dn({method:r,url:a},d)}const s=await i.text(),o=function(e,t){if(!e)return null;try{return JSON.parse(e)}catch(d){throw new Error(["Server returned invalid JSON.",t,d instanceof Error?d.message:void 0,Gn(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Pn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,Hn(o)??Gn(s)].filter(Boolean).join("\n"),i.status,a);return o}function Gn(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function Hn(e){if(!e||"object"!=typeof e)return;const t=e.message;return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:void 0}function Kn(e,t){return{data:[...(e?.data??[]).filter(e=>e.id!==t.id),t].sort((e,t)=>e.sequence-t.sequence),nextCursor:Math.max(t.sequence,e?.nextCursor??0)}}var Wn={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function Vn(){const e=Qn();e&&(Yn(e,"serverUrl"),Yn(e,"token"))}function Qn(){return"undefined"==typeof window?null:window.localStorage}function Jn(e,t){return e.getItem(Wn[t])}function Xn(e,t,n){e.setItem(Wn[t],n)}function Yn(e,t){e.removeItem(Wn[t])}function Zn(e){const t=e.trim();if(!t)throw new Error("Enter a server URL.");const n=/^[a-z][a-z\d+\-.]*:\/\//i.test(t)?t:`http://${t}`,a=new URL(n);return a.pathname=a.pathname.replace(/\/+$/,""),a.search="",a.hash="",a.toString().replace(/\/+$/,"")}var ea=S(void 0);function ta({children:e}){const[t,n]=$(null),[a,r]=$(!1),i=O(aa,ra,ia),s=t,o=!i||!a;q(()=>{if(!i)return;const e=function(){const e=Qn();if(!e)return null;const t=Jn(e,"serverUrl"),n=Jn(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),qn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{Vn(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=Zn(window.location.origin),{token:a}=await async function(e,t){return Bn(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=Qn();t&&(Xn(t,"serverUrl",e.serverUrl),Xn(t,"token",e.token))}(i),n(i),r(!0)},[]),c=P(async()=>{s&&await qn(s)},[s]),l=P(()=>{Vn(),n(null),r(!0)},[]),u=L(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ea.Provider,{value:u,children:e})}function na(){const e=D(ea);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function aa(){return()=>{}}function ra(){return!0}function ia(){return!1}var sa=xn({ErrorBoundary:()=>ua,Layout:()=>ca,default:()=>la,links:()=>da,meta:()=>oa});function oa(){return[{title:Tn}]}function da(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function ca({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var la=c(function(){const[e]=$(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(E,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(Cn,{children:[x(ta,{children:x(i,{})}),x(In,{richColors:!0})]})})})}),ua=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),ma=ot("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function ha({className:e,variant:t="default",size:n="default",...a}){return x(st,{"data-slot":"button",className:kn(ma({variant:t,size:n,className:e})),...a})}function fa({className:e,type:t,...n}){return x(dt,{type:t,"data-slot":"input",className:kn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function pa({className:e,...t}){return x("label",{"data-slot":"label",className:kn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function ga(){const[e,t]=$(""),[n,a]=$(""),[i,s]=$(null),[o,d]=$(null),[c,l]=$(!1),{loading:u,session:m,setup:f}=na(),p=h(),g=!1===i;if(q(()=>{let e=!0;return d(null),async function(e){return Bn(e,"/api/auth/status",{token:null})}(Zn(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await f(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?xe:$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(pa,{htmlFor:"server-password",children:"Server password"}),x(fa,{id:"server-password",autoComplete:g?"new-password":"current-password",placeholder:"Password",type:"password",value:e,onChange:e=>t(e.target.value),onKeyDown:t=>{"Enter"===t.key&&va(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(fa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&va(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(ha,{disabled:!va(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ne,{className:"animate-spin"}):x(g?xe:$e,{}),g?"Set Password":"Connect"]})]})]})})}function va(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var wa=xn({default:()=>xa}),xa=c(function(){return x(ga,{})}),ya=xn({loader:()=>ba});function ba(){return m("/favicon.svg",301)}function Na({...e}){return x(ct.Root,{"data-slot":"alert-dialog",...e})}function Ia({...e}){return x(ct.Portal,{"data-slot":"alert-dialog-portal",...e})}function ka({className:e,...t}){return x(ct.Backdrop,{"data-slot":"alert-dialog-overlay",className:kn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ca({className:e,size:t="default",...n}){return y(Ia,{children:[x(ka,{}),x(ct.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:kn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Aa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:kn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function Ea({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:kn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Ma({className:e,...t}){return x(ct.Title,{"data-slot":"alert-dialog-title",className:kn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Ta({className:e,...t}){return x(ct.Description,{"data-slot":"alert-dialog-description",className:kn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Sa({className:e,...t}){return x(ha,{"data-slot":"alert-dialog-action",className:kn(e),...t})}function Pa({className:e,variant:t="outline",size:n="default",...a}){return x(ct.Close,{"data-slot":"alert-dialog-cancel",className:kn(e),render:x(ha,{variant:t,size:n}),...a})}function Da({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:kn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}var qa=ot("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function La({className:e,variant:t="default",render:n,...a}){return ut({defaultTagName:"span",props:lt({className:kn(qa({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Ra({className:e,status:t}){return x(La,{className:e,variant:$a(t),children:t.toLowerCase()})}function $a(e){switch(e){case"ERROR":case"FAILED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}var Oa={args:"",command:"",displayName:"",environment:""};function _a({accounts:e,createFocusKey:t=0,session:n}){const[a,r]=$(Oa),[i,s]=$(null),[o,d]=$(Oa),[c,l]=$({}),[u,m]=$(null),h=R(null),f=R(null),p=R(null),g=A();q(()=>{if(t<=0)return;const e=window.setTimeout(()=>{f.current?.scrollIntoView({block:"start",behavior:"smooth"}),p.current?.focus()},80);return()=>window.clearTimeout(e)},[t]);const v=()=>g.invalidateQueries({queryKey:["accounts"]}),b=I({mutationFn:async(e={})=>{const t=await async function(e,t){return Bn(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...Ua(a),displayName:a.displayName.trim()});return e.authenticate?{account:t,auth:await Rn(n,t.id),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:({auth:e,popup:t})=>{r(Oa),z.success("Account created."),v(),e&&S(e,t)}}),N=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...Ua(o),displayName:o.displayName.trim()})},onError:e=>z.error(Ba(e)),onSuccess:()=>{s(null),d(Oa),z.success("Account updated."),v()}}),k=I({mutationFn:({accountId:e})=>Rn(n,e),onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:(e,t)=>{v(),S(e,t.popup)}}),C=I({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(n,e,{redirectUrl:t.trim()}),onError:e=>z.error(Ba(e)),onSuccess:(e,t)=>{l(e=>({...e,[t.accountId]:""})),v(),"CONNECTED"!==e.status?z.info(e.message??"Callback accepted."):z.success("Account connected.")}}),E=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>z.error(Ba(e)),onSuccess:()=>{m(null),z.success("Account deleted."),v(),g.invalidateQueries({queryKey:["chats"]})}}),M=I({mutationFn:()=>async function(e){return Bn(e.serverUrl,"/api/accounts/export",{token:e.token})}(n),onError:e=>z.error(Ba(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),z.success(`Exported ${e.accounts.length} ${Fa(e.accounts.length)}.`)}}),T=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:(e,t)=>{z.success(`Imported ${e.imported} ${Fa(e.imported)}.`),v(),g.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){S(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&z.info(`${a} more ${Fa(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&z.success(`Connected ${a} imported ${Fa(a)}.`)}(e.authentications,t.popup)}});function S(e,t){if(e.authUrl)return Ha(e.authUrl,t),void z.info("Authentication page opened.");t?.close(),"AUTHENTICATING"!==e.status?z.success(e.message??"Account is connected."):z.info(e.message??"Authentication is still in progress.")}return y(w,{children:[y("div",{className:"grid gap-5",children:[y("section",{className:"grid gap-3",children:[y("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Authenticate accounts before using them for chats."})]}),y("div",{className:"text-xs text-muted-foreground",children:[e.length," ",Fa(e.length)]})]}),e.length?e.map(e=>{const t=c[e.id]??"",n="AUTHENTICATING"===e.status||!!e.lastAuthUrl,a=k.isPending&&k.variables?.accountId===e.id,r=C.isPending&&C.variables?.accountId===e.id;return x("div",{className:"grid gap-4 rounded-md border bg-background p-4",children:i?.id===e.id?y(w,{children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[y("h4",{className:"text-sm font-semibold",children:["Edit ",e.displayName]}),x("p",{className:"text-xs text-muted-foreground",children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),y(ha,{size:"sm",variant:"ghost",onClick:()=>{s(null),d(Oa)},children:[x(et,{}),"Cancel"]})]}),x(za,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(ha,{className:"w-fit",disabled:!o.displayName.trim()||N.isPending,onClick:()=>N.mutate(),children:[N.isPending?x(Ne,{className:"animate-spin"}):x(W,{}),"Save account"]})]}):y(w,{children:[y("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-start",children:[y("div",{className:"min-w-0 space-y-2",children:[y("div",{className:"flex items-center gap-2",children:[x("h4",{className:"truncate text-sm font-semibold",children:e.displayName}),x(Ra,{status:e.status})]}),y("p",{className:"truncate font-mono text-xs text-muted-foreground",children:[e.command," ",e.args.join(" ")]}),e.environment?y("p",{className:"text-xs text-muted-foreground",children:[Object.keys(e.environment).length," env"," ",1===Object.keys(e.environment).length?"value":"values"]}):null,e.lastError?x("p",{className:"mt-2 whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:e.lastError}):null]}),y("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end",children:[y(ha,{disabled:a,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>{return t=e.id,void k.mutate({accountId:t,popup:Ga()});var t},children:[a?x(Ne,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(Ue,{}):x(ae,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(ha,{size:"sm",variant:"outline",onClick:()=>function(e){var t;s(e),d({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(e),children:[x(Le,{}),"Edit"]}),y(ha,{size:"sm",variant:"destructive",onClick:()=>m(e),children:[x(Je,{}),"Delete"]})]})]}),n?y("div",{className:"grid gap-4 rounded-md border bg-muted/25 p-3",children:[y("div",{children:[x("h5",{className:"text-sm font-medium",children:"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:"Open the auth URL, finish login, then paste the localhost callback response URL."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`auth-url-${e.id}`,children:"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(fa,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(ha,{size:"sm",variant:"outline",onClick:()=>Ha(e.lastAuthUrl??null),children:[x(ae,{}),"Open"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`callback-url-${e.id}`,children:"Callback response URL"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`callback-url-${e.id}`,placeholder:"http://localhost:1455/...",value:t,onChange:t=>l(n=>({...n,[e.id]:t.target.value}))})]}),x("div",{className:"flex justify-end",children:y(ha,{disabled:!t.trim()||r,onClick:()=>C.mutate({accountId:e.id,redirectUrl:t}),children:[r?x(Ne,{className:"animate-spin"}):x(W,{}),"Complete Login"]})})]}):null]})},e.id)}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h4",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account below or import account records from a JSON export."})]})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",ref:f,children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Create account"}),x("p",{className:"text-sm text-muted-foreground",children:"Use a readable name. Runtime fields are optional."})]}),x(za,{displayNameRef:p,form:a,onChange:r,prefix:"create-account"}),y("div",{className:"flex flex-wrap gap-2",children:[y(ha,{disabled:!a.displayName.trim()||b.isPending,onClick:function(){b.mutate({authenticate:!0,popup:Ga()})},children:[b.isPending?x(Ne,{className:"animate-spin"}):x(ae,{}),"Create & Authenticate"]}),y(ha,{disabled:!a.displayName.trim()||b.isPending,variant:"secondary",onClick:()=>b.mutate({}),children:[b.isPending?x(Ne,{className:"animate-spin"}):x(Oe,{}),"Create Only"]})]})]}),y("section",{className:"flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/30 p-4",children:[y("div",{className:"min-w-0",children:[x("h3",{className:"text-sm font-semibold",children:"Import / export"}),x("p",{className:"text-sm text-muted-foreground",children:"Move account records and runtime settings with JSON. Codex auth tokens stay on this server."})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:h,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Ga();try{const e=JSON.parse(await t.text());T.mutate({accounts:ja(e),popup:n})}catch(a){n?.close(),z.error(Ba(a))}}}),y(ha,{disabled:T.isPending,variant:"secondary",onClick:()=>h.current?.click(),children:[T.isPending?x(Ne,{className:"animate-spin"}):x(Ye,{}),"Import JSON"]}),y(ha,{disabled:M.isPending,variant:"outline",onClick:()=>M.mutate(),children:[M.isPending?x(Ne,{className:"animate-spin"}):x(ne,{}),"Export JSON"]})]})]})]}),x(Na,{open:!!u,onOpenChange:e=>{e||m(null)},children:y(Ca,{children:[y(Aa,{children:[x(Ma,{children:"Delete account?"}),y(Ta,{children:["This removes ",u?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ea,{children:[x(Pa,{children:"Cancel"}),y(Sa,{disabled:E.isPending,variant:"destructive",onClick:()=>{u&&E.mutate(u.id)},children:[E.isPending?x(Ne,{className:"animate-spin"}):x(Je,{}),"Delete"]})]})]})})]})}function za({displayNameRef:e,form:t,onChange:n,prefix:a}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`${a}-name`,children:"Display name"}),x(fa,{id:`${a}-name`,placeholder:"Work Codex",ref:e,value:t.displayName,onChange:e=>n({...t,displayName:e.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`${a}-command`,children:"Command"}),x(fa,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`${a}-args`,children:"Arguments"}),x(fa,{id:`${a}-args`,placeholder:"app-server",value:t.args,onChange:e=>n({...t,args:e.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`${a}-environment`,children:"Environment JSON"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`${a}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:t.environment,onChange:e=>n({...t,environment:e.target.value})})]})]})}function Ua(e){const t={};if(e.command.trim()&&(t.command=e.command.trim()),e.args.trim()&&(t.args=e.args.split(/\s+/).map(e=>e.trim()).filter(Boolean)),e.environment.trim()){const n=JSON.parse(e.environment);if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("Environment must be a JSON object.");t.environment=n}return t}function ja(e){if(Array.isArray(e))return e;if(e&&"object"==typeof e){const t=e.accounts;if(Array.isArray(t))return t}throw new Error("Import file must contain an accounts array.")}function Fa(e){return 1===e?"account":"accounts"}function Ba(e){return e instanceof Error?e.message:"Request failed."}function Ga(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Ha(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Ka({...e}){return x(mt.Root,{"data-slot":"dialog",...e})}function Wa({...e}){return x(mt.Trigger,{"data-slot":"dialog-trigger",...e})}function Va({...e}){return x(mt.Portal,{"data-slot":"dialog-portal",...e})}function Qa({className:e,...t}){return x(mt.Backdrop,{"data-slot":"dialog-overlay",className:kn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ja({className:e,children:t,showCloseButton:n=!0,...a}){return y(Va,{children:[x(Qa,{}),y(mt.Popup,{"data-slot":"dialog-content",className:kn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(mt.Close,{"data-slot":"dialog-close",render:x(ha,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:kn("flex flex-col gap-2",e),...t})}function Ya({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:kn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(mt.Close,{render:x(ha,{variant:"outline"}),children:"Close"})]})}function Za({className:e,...t}){return x(mt.Title,{"data-slot":"dialog-title",className:kn("font-heading text-base leading-none font-medium",e),...t})}function er({className:e,...t}){return x(mt.Description,{"data-slot":"dialog-description",className:kn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function tr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ht.Root,{"data-slot":"scroll-area",className:kn("relative",e),...r,children:[x(ht.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:kn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(nr,{}),x(ht.Corner,{})]})}function nr({className:e,orientation:t="vertical",...n}){return x(ht.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:kn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(ht.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function ar({className:e,orientation:t="horizontal",...n}){return x(ft,{"data-slot":"separator",orientation:t,className:kn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function rr({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(Ka,{open:s,onOpenChange:r,children:y(Ja,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Xa,{className:"px-5 py-4",children:[x(Za,{children:"Settings"}),x(er,{children:"Manage the active server connection, accounts, and project details."})]}),x(ar,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(ir,{active:"server"===t,icon:x(Fe,{}),label:"Server",onClick:()=>i("server")}),x(ir,{active:"accounts"===t,icon:x(Ze,{}),label:"Accounts",onClick:()=>i("accounts")}),x(ir,{active:"info"===t,icon:x(ve,{}),label:"Info",onClick:()=>i("info")})]}),x(tr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(sr,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(_a,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(or,{}):null]})})]})]})})}function ir({active:e,icon:t,label:n,onClick:a}){return y(ha,{"aria-pressed":e,className:kn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function sr({clearSession:e,refreshSession:t,session:n}){const[a,r]=$(!1),[i,s]=$(null);return y("div",{className:"grid gap-4",children:[y("div",{className:"rounded-md border bg-muted/30 p-3",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(Fe,{}),"API server"]}),x("div",{className:"mt-2 break-all text-sm text-muted-foreground",children:n.serverUrl})]}),y("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3",children:[y("div",{children:[x("div",{className:"text-sm font-medium",children:"Session status"}),x("div",{className:"text-sm text-muted-foreground",children:"Bearer token stored in this browser."})]}),null===i?null:x(Ra,{status:i?"ONLINE":"OFFLINE"})]}),x(ar,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(ha,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),z.success("Server session is healthy.")}catch(e){s(!1),z.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(_e,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(ha,{variant:"destructive",onClick:e,children:[x(Ce,{}),"Clear Session"]})]})]})}function or(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(ve,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(ae,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Ae,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function dr({...e}){return x(pt.Root,{"data-slot":"dropdown-menu",...e})}function cr({...e}){return x(pt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function lr({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(pt.Portal,{children:x(pt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(pt.Popup,{"data-slot":"dropdown-menu-content",className:kn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function ur({className:e,inset:t,variant:n="default",...a}){return x(pt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:kn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function mr({...e}){return x(pt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function hr({className:e,inset:t,children:n,...a}){return y(pt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:kn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(X,{className:"ml-auto"})]})}function fr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(lr,{"data-slot":"dropdown-menu-sub-content",className:kn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function pr({...e}){return x(pt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function gr({className:e,children:t,inset:n,...a}){return y(pt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:kn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(pt.RadioItemIndicator,{children:x(V,{})})}),t]})}function vr(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(dr,{children:[y(cr,{render:x(ha,{size:"icon",variant:"outline"}),children:[x(Ve,{className:"size-4 dark:hidden"}),x(Te,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(lr,{align:"end",className:"w-40",children:[y(ur,{onClick:()=>e("light"),children:[x(Ve,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(ur,{onClick:()=>e("dark"),children:[x(Te,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(ur,{onClick:()=>e("system"),children:[x(ye,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}wt.registerLanguage("bash",xt),wt.registerLanguage("css",yt),wt.registerLanguage("go",bt),wt.registerLanguage("html",St),wt.registerLanguage("javascript",It),wt.registerLanguage("json",Nt),wt.registerLanguage("markdown",kt),wt.registerLanguage("python",Ct),wt.registerLanguage("rust",At),wt.registerLanguage("sh",Et),wt.registerLanguage("sql",Mt),wt.registerLanguage("tsx",Tt),wt.registerLanguage("typescript",Tt),wt.registerLanguage("xml",St),wt.registerLanguage("yaml",Pt);var wr=S(null);function xr({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=L(()=>new Set(t??[]),[t]),h=L(()=>function(e){const t=Ii([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=_i(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}(e)||"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=L(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=Ei(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=L(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Fr(n))return n.id}return null}(h),[h]),[g,v]=$(null);return y(wr.Provider,{value:v,children:[f.map(t=>x(br,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:p,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,planActionDisabled:c,planActionPending:l,session:u},t.id)),x(Pr,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function yr({chatId:e,messages:t,session:n}){const a=L(()=>Si(t),[t]);return a.pendingRequest?x("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:x(Cr,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function br({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"user"===t.type?x(kr,{message:t.message}):x(Nr,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function Nr({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){const m=L(()=>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(qi(r.message)){const e=n.at(-1);if(!e||Li(e,r.message)){n.push(r.message);continue}a(),n.push(r.message);continue}a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"})}else a(),t.push({id:`${r.type}:${r.messages.map(e=>e.id).join(":")}`,messages:r.messages,type:r.type});return a(),t}(function(e){const t=[];let n=[];const a=()=>{if(!n.length)return;const e=Math.min(...n.map(e=>e.sequence));t.push({messages:n,sequence:e,type:"fileChanges"}),n=[]};for(const r of e){if("message"!==r.type||"FILE_CHANGE"!==r.message.kind){a(),t.push(r);continue}const e=n.at(-1);e&&Ri(e)!==Ri(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(e=>"STREAMING"===e.status||"PENDING"===e.status))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){return[...e].reverse().find(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0)}(e),n=[],a=[];for(const d of e)Di(d,t)?n.push(d):a.push(d);const r=a.map(e=>({message:e,sequence:e.sequence,type:"message"}));if(!n.length)return r;const i=Math.min(...n.map(e=>e.sequence)),s=r.findIndex(e=>e.sequence>i),o={messages:n,sequence:i,type:"previousActions"};return s<0?[...r,o]:[...r.slice(0,s),o,...r.slice(s)]}(function(e){const t=[];let n=[];const a=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:Mi(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Ti(e)}}(n)),n=[])};for(const r of e)"ASSISTANT"!==r.role||"CHAT"!==r.kind?(a(),t.push(r)):n.push(r);return a(),t}([...e].sort((e,t)=>e.sequence-t.sequence)))))}(r),[r]),h=r.reduce((e,t)=>"FAILED"===t.status?"FAILED":"STREAMING"===t.status?"FAILED"===e?e:"STREAMING":"PENDING"===t.status?"FAILED"===e||"STREAMING"===e?e:"PENDING":e,null);return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?x(Ra,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(Ir,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function Ir({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?x(Gr,{messages:a.messages}):"previousActions"===a.type?x(Hr,{messages:a.messages}):"fileChanges"===a.type?x(Wr,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Cr,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:r,message:a.message,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function kr({message:e}){const t=function(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}(e);return x("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:y("div",{className:"min-w-0 max-w-[84%] overflow-hidden rounded-xl bg-foreground px-3 py-2 text-sm leading-6 text-background",children:[y("div",{className:"mb-1 flex items-center gap-2",children:[x(Ze,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Er,{text:e.content}),t.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:t.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border border-background/20 bg-background/10 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-6 rounded object-cover",src:e.url}):x(se,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:"file"===e.kind?e.path:e.name})]},e.id))}):null]})})}function Cr({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(Or,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Rr,{}):null;case"THINKING":return x($r,{message:i});case"PLAN":return x(_r,{metadata:_i(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(Br,{metadata:_i(i.metadata)});case"FILE_CHANGE":return x(Wr,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(li,{chatId:e,compact:t,message:i,metadata:_i(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(ui,{chatId:e,compact:t,message:i,metadata:_i(i.metadata),session:m});case"ERROR":return x(xi,{metadata:_i(i.metadata),text:i.content});default:return x(yi,{text:i.content})}}function Ar({text:e}){const t=D(wr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(gt,{remarkPlugins:[vt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:kn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:kn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:kn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:kn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:kn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:kn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:kn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:kn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:kn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:kn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:kn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:kn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:kn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:kn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:kn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:kn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:kn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:kn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:kn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:kn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:Mr(e)})})}function Er({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:Tr(e).map((e,t)=>"image"===e.type?x("img",{alt:"",className:"max-h-[28rem] max-w-full rounded-md border border-background/20 object-contain",loading:"lazy",src:e.src},`${e.src}-${t}`):e.text.trim()?x("div",{className:"whitespace-pre-wrap break-words",children:e.text},`${e.text.slice(0,32)}-${t}`):null)})}function Mr(e){return Tr(e).map(e=>"image"===e.type?`\n\n![](${encodeURI(e.src).replace(/\)/g,"%29")})\n\n`:e.text).join("")}function Tr(e){const t=[],n=/<image>\s*([\s\S]*?)\s*<\/image>/gi;let a,r=0;for(;a=n.exec(e);){a.index>r&&t.push({text:e.slice(r,a.index),type:"text"});const i=Sr(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"}),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function Sr(e){const t=e.trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function Pr({chatId:e,onClose:t,session:n,target:a}){const r=C({enabled:!!a,queryKey:["workspace-file",e,a?.path,a?.line??null],queryFn:()=>async function(e,t,n,a){const r=new URLSearchParams({path:n});return a&&a>0&&r.set("line",String(a)),Bn(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Ka,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ja,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[y(Za,{className:"flex min-w-0 items-center gap-2",children:[x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(er,{className:"truncate",children:qr(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ne,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(Dr,{file:r.data}):null})]})})}function Dr({file:e}){const t=R({}),n=L(()=>(e.content??"").split(/\r?\n/),[e.content]);return q(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(tr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:kn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:(i=n||" ",s=e.language,s&&wt.getLanguage(s)?wt.highlight(i,{language:s}).value:wt.highlightAuto(i).value)}})]},r);var i,s})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function qr(e){return e?[Lr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Lr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Rr(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function $r({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 Or({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Fr(t),o="envelope"===s?.source?s.surroundingText:t.content,d=!!s&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[o.trim()?x(Ar,{text:o}):null,s?x(zr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function _r({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Fr(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(be,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(Ar,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(yi,{text:"Planning..."}),o.length?x("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[x(La,{variant:"completed"===e.status?"default":"secondary",children:e.status}),x("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?x(Ur,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function zr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(be,{className:"size-4"}),"Proposed plan"]}),x(Ar,{text:i}),s?x(Ur,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Ur({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=$(""),[d,c]=$(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(ha,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ne,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(Ka,{open:d,onOpenChange:c,children:[y(Wa,{render:x(ha,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Re,{}),"Tell Codex what to change"]}),y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Tell Codex What To Change"}),x(er,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(Da,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(ha,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(ha,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ne,{className:"animate-spin"}):x(Re,{}),"Send changes"]})]})]})]})]})]})}var jr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Fr(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=jr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(jr,"").trim()}:"PLAN"!==e.kind||"result"!==_i(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Br({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Qe,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(La,{variant:ci(e),children:di(e)}),"number"==typeof e?.exitCode?x(La,{variant:0===e.exitCode?"secondary":"destructive",children:e.exitCode}):null]})]}),y("div",{className:"min-w-0 max-w-full overflow-hidden border-t px-3 py-2",children:[e?.cwd?x("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,x("pre",{className:"max-h-64 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e?.output||"(no output)"})]})]})}function Gr({messages:e}){const[t,n]=$(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,Ni),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Ti(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Qe,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(La,{variant:"secondary",children:s.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>x(Kr,{message:e},e.id)),i>0?y(ha,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function Hr({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Qe,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(La,{variant:"secondary",children:"collapsed"})]}),x("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>x(Kr,{message:e},e.id))})]})}function Kr({message:e}){const t=_i(e.metadata),n=_i(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(_i(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===_i(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[$i(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(La,{variant:"secondary",children:e.status.toLowerCase()})]})}function Wr({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=L(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=_i(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of Vr(e)){const e=n.get(t.path);e?n.set(t.path,{action:si(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:oi(e.diff,t.diff),path:e.path.length<=t.path.length?e.path:t.path}):n.set(t.path,t)}}const i=Array.from(n.values());return{additions:i.reduce((e,t)=>e+t.additions,0),deletions:i.reduce((e,t)=>e+t.deletions,0),diff:oi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(wr),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(oe,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${Xr(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(ei,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(ha,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:Zr(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(ze,{}),"Undo"]}),y(ha,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:Yr(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(re,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Ka,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(ei,{additions:e.additions,deletions:e.deletions}),y(Wa,{render:x(ha,{size:"icon-sm",variant:"ghost"}),children:[x(Q,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ja,{className:"max-w-5xl",children:[y(Xa,{children:[x(Za,{children:e.path}),y(er,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(La,{variant:"secondary",children:e},e))}):null]})}function Vr(e){if(!e)return[];const t=function(e){const t=e?.trim();return t?function(e){const t=e.split("\n"),n=[];let a=[];for(const r of t)r.startsWith("diff --git ")&&a.length&&(n.push(a),a=[]),a.push(r);a.length&&n.push(a);return n.map(e=>e.join("\n").trim()).filter(Boolean)}(t).reduce((e,t)=>{const n=t.split("\n"),a=function(e){for(const t of["+++ ","--- "])for(const n of e){if(!n.startsWith(t))continue;const e=Jr(n.slice(t.length));if(e&&"/dev/null"!==e)return e}for(const t of e){if(!t.startsWith("diff --git "))continue;const e=t.split(/\s+/),n=Jr(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:Qr(n),additions:n.filter(e=>e.startsWith("+")&&!e.startsWith("+++")).length,deletions:n.filter(e=>e.startsWith("-")&&!e.startsWith("---")).length,diff:t,path:a}),e):e},[]):[]}(e.diff),n=(e.changes??[]).reduce((e,t)=>{if(!t||"object"!=typeof t||Array.isArray(t))return e;const n=t,a=ti(n.path,n.filePath,n.file,n.name);return a?(e.push({action:ai(ti(n.action,n.kind,n.type)??"Edited"),additions:ni(n.additions),deletions:ni(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>ri(t.path,e.path));return n?{...e,additions:e.additions||n.additions,deletions:e.deletions||n.deletions,diff:n.diff}:e}),...t.filter(e=>!n.some(t=>ri(t.path,e.path)))];if(t.length)return t;const a=e.paths??[];if(!a.length)return[];const r=e.additions??0,i=e.deletions??0;return a.map((e,t)=>({action:"Edited",additions:1===a.length||0===t?r:0,deletions:1===a.length||0===t?i:0,path:e}))}function Qr(e){return e.some(e=>e.startsWith("new file mode ")||"--- /dev/null"===e)?"Created":e.some(e=>e.startsWith("deleted file mode ")||"+++ /dev/null"===e)?"Deleted":e.some(e=>e.startsWith("rename from ")||e.startsWith("rename to "))?"Renamed":"Edited"}function Jr(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function Xr(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function Yr(e){return["Review the changes from the latest completed editing turn.","Look for bugs, regressions, missed requirements, and risky assumptions. Do not modify files unless I explicitly ask.","","Changed files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function Zr(e){return["Undo the changes from the latest completed editing turn.","Revert only the files listed below. Preserve unrelated user edits and stop with an explanation if the reverse patch cannot be applied cleanly.","","Target files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function ei({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),x("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function ti(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function ni(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){const t=Number(e);return Number.isFinite(t)?t:0}return 0}function ai(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function ri(e,t){return ii(e)===ii(t)}function ii(e){return Jr(e).replace(/\\/g,"/").replace(/^\.\//,"")}function si(e,t){return e?t&&e!==t?"Created"===e||"Created"===t?"Created":"Deleted"===e||"Deleted"===t?"Deleted":"Renamed"===e||"Renamed"===t?"Renamed":"Edited":e:t??"Edited"}function oi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function di(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function ci(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function li({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=bi(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(mi,{icon:x(ke,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:hi(a)}):y("div",{className:kn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:kn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(ke,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:kn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:kn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(La,{variant:"secondary",children:[x(K,{className:"size-3"}),"resolved"]}):y(w,{children:[y(ha,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ne,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(ha,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(ha,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function ui({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=$({}),[o,d]=$(0),c=bi(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&wi(h,i[h.id]).length>0,p=l.every(e=>wi(e,i[e.id]).length>0),g=m>=l.length-1,v=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return x(mi,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:fi(a)});return y("div",{className:kn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:kn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(ha,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(F,{})}),y(La,{variant:"secondary",children:[m+1," / ",l.length]}),x(ha,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(B,{})}),u?x(La,{variant:"secondary",children:"resolved"}):null]})]}),h?x(gi,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??pi,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:kn("flex justify-end",t?"mt-2":"mt-4"),children:y(ha,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:vi(l,i)}):z.error("Answer every question before submitting.")},children:[c.isPending?x(Ne,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function mi({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"text-muted-foreground",children:e}),x("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?x(La,{variant:"secondary",children:t}):null]}),a?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function hi(e){if(!e)return"No decision details.";const t=e.decision??e.result;return void 0===t?"expired"===e.status?"The request expired before a decision was sent.":"Decision sent.":`Decision: ${function(e){return"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):null===e?"none":JSON.stringify(e)}(t)}`}function fi(e){if(!e)return"No answer details.";if("expired"===e.status)return"The request expired before an answer was sent.";const t=function(e){const t=e.result;if(!t||"object"!=typeof t||Array.isArray(t))return[];const n=t.answers;return!n||"object"!=typeof n||Array.isArray(n)?[]:Object.entries(n).map(([t,n])=>{const a=e.questions?.find(e=>e.id===t),r=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return[];const t=e.answers;return Array.isArray(t)?t.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean):[]}(n);return r.length?`${a?.header??a?.question??t}: ${r.join(", ")}`:null}).filter(e=>!!e)}(e);return t.length?t.join("; "):"Answer sent."}var pi={other:"",values:[]};function gi({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:kn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:kn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(ha,{"aria-pressed":r,className:kn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:kn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:kn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(fa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(Da,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(Da,{className:e?"min-h-12":"min-h-16",disabled:t,placeholder:"Other answer",value:c,onChange:e=>l({other:e.target.value})}):null,"number"==typeof o&&o>1?y("span",{className:"text-xs text-muted-foreground",children:["Select up to ",o,"."]}):null]})}function vi(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:wi(e,t[e.id])}]))}}function wi(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function xi({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(U,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function yi({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function bi(e,t,n){const a=A();return I({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return Bn(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>z.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>Kn(e,t))}})}var Ni=5;function Ii(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=ki(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Ci(n[t],r):(a.set(e,n.length),n.push(r))}return n}function ki(e){return e.requestId?`${e.runId??e.chatId}:${e.kind}:request:${e.requestId}`:e.itemId?`${e.runId??e.chatId}:${e.kind}:item:${e.itemId}`:null}function Ci(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Ai(t.status)>Ai(e.status)?{...e,status:t.status}:e:Ai(t.status)>Ai(e.status)||t.sequence>=e.sequence?t:e}function Ai(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Ei(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Mi(e){const t=[];for(const n of e)if(n.trim()&&!(t.findIndex(e=>e===n||e.startsWith(n))>=0)){for(let e=t.length-1;e>=0;e-=1)n.startsWith(t[e])&&t.splice(e,1);t.push(n)}return t.join("\n\n")}function Ti(e){return e.some(e=>"FAILED"===e.status)?"FAILED":e.some(e=>"STREAMING"===e.status)?"STREAMING":e.some(e=>"PENDING"===e.status)?"PENDING":"COMPLETED"}function Si(e){return{pendingRequest:Ii(e).sort((e,t)=>t.sequence-e.sequence).find(Pi)}}function Pi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=_i(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Di(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Pi(e)&&("APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||("THINKING"===e.kind||"TOOL_ACTIVITY"===e.kind||("COMMAND_EXECUTION"===e.kind?"FAILED"!==e.status:"ASSISTANT"===e.role&&"CHAT"===e.kind&&(!!t&&t.content.includes(e.content.trim())))))))}function qi(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Li(e,t){return Ri(e)===Ri(t)}function Ri(e){return e.runId??e.turnId??e.chatId}function $i(e){return"COMMAND_EXECUTION"===e.kind?x(Qe,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(ke,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(Oi,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Oi(){return x(be,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function _i(e){return e&&"object"==typeof e?e:void 0}function zi({...e}){return x(Dt.Root,{"data-slot":"popover",...e})}function Ui({...e}){return x(Dt.Trigger,{"data-slot":"popover-trigger",...e})}function ji({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Dt.Portal,{children:x(Dt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Dt.Popup,{"data-slot":"popover-content",className:kn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function Fi({className:e,...t}){return x("div",{"data-slot":"popover-header",className:kn("flex flex-col gap-0.5 text-sm",e),...t})}function Bi({className:e,...t}){return x(Dt.Title,{"data-slot":"popover-title",className:kn("font-medium",e),...t})}function Gi({className:e,...t}){return x(Dt.Description,{"data-slot":"popover-description",className:kn("text-muted-foreground",e),...t})}function Hi({...e}){return x(mt.Root,{"data-slot":"sheet",...e})}function Ki({...e}){return x(mt.Portal,{"data-slot":"sheet-portal",...e})}function Wi({className:e,...t}){return x(mt.Backdrop,{"data-slot":"sheet-overlay",className:kn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function Vi({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(Ki,{children:[x(Wi,{}),y(mt.Popup,{"data-slot":"sheet-content","data-side":n,className:kn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(mt.Close,{"data-slot":"sheet-close",render:x(ha,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Qi({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:kn("flex flex-col gap-0.5 p-4",e),...t})}function Ji({className:e,...t}){return x(mt.Title,{"data-slot":"sheet-title",className:kn("font-heading text-base font-medium text-foreground",e),...t})}function Xi({className:e,...t}){return x(mt.Description,{"data-slot":"sheet-description",className:kn("text-sm text-muted-foreground",e),...t})}var Yi=T.createContext(null);function Zi(){const e=T.useContext(Yi);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function es({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=T.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return T.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=T.useState(!1),[l,u]=T.useState(e),m=t??l,h=T.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=T.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);T.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=T.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(Yi.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:kn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function ts({side:e="left",variant:t="sidebar",collapsible:n="offcanvas",className:a,children:r,dir:i,...s}){const{isMobile:o,state:d,openMobile:c,setOpenMobile:l}=Zi();return"none"===n?x("div",{"data-slot":"sidebar",className:kn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(Hi,{open:c,onOpenChange:l,...s,children:y(Vi,{dir:i,"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[y(Qi,{className:"sr-only",children:[x(Ji,{children:"Sidebar"}),x(Xi,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:kn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:kn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function ns({className:e,onClick:t,...n}){const{toggleSidebar:a}=Zi();return y(ha,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:kn(e),onClick:e=>{t?.(e),a()},...n,children:[x(De,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function as({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:kn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function rs({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:kn("flex flex-col gap-2 p-2",e),...t})}function is({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:kn("flex flex-col gap-2 p-2",e),...t})}function ss({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:kn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function os({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:kn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function ds({className:e,render:t,...n}){return ut({defaultTagName:"div",props:lt({className:kn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function cs({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:kn("w-full text-sm",e),...t})}function ls({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:kn("flex w-full min-w-0 flex-col gap-0",e),...t})}function us({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:kn("group/menu-item relative",e),...t})}var ms=ot("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function hs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=Zi(),c=ut({defaultTagName:"button",props:lt({className:kn(ms({variant:n,size:a}),i)},s),render:r?x(En,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(An,{children:[c,x(Mn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function fs({className:e,size:t="default",...n}){return x(qt.Root,{"data-slot":"switch","data-size":t,className:kn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(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 ps({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=A(),[o,d]=$(new Set),[c,l]=$(e??""),[u,m]=$("directory"),[h,f]=$(e??""),[p,g]=$(""),[v,w]=$(!0),[b,N]=$(!1),[k,E]=$(""),[M,T]=$(""),S=C({enabled:r,queryKey:bs(i,void 0),queryFn:()=>_n(i,void 0)}),P=S.data,D=P?.root??P?.path??"",L=c||P?.path||"",R=I({mutationFn:()=>{const e=k||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 Bn(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>z.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),E(""),T(""),z.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),_(e.path)}});function O(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of Ns(e,D))n.add(a);return n})}function _(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function U(){const e=h.trim()||P?.path;e&&O(e)}return q(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),E(""),T(""))},[e,r]),q(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of Ns(t,P.root))n.add(a);return n})},[e,P]),x(Ka,{open:r,onOpenChange:n,children:y(Ja,{className:"flex max-h-[88vh] max-w-2xl flex-col gap-0 overflow-hidden rounded-xl bg-background p-0 ring-border sm:max-w-2xl",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-3",children:[x(Za,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(er,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(ys,{label:"Home",onClick:function(){P?.path&&_(P.path)},children:x(pe,{})}),x(ys,{disabled:!L||R.isPending,label:"New folder",onClick:function(){const e=L||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),E(e),T(""),d(t=>{const n=new Set(t);if(D)for(const a of Ns(e,D))n.add(a);return n.add(e),n}))},children:x(ue,{})}),x(ys,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(_e,{className:kn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[y("div",{className:"relative hidden min-w-0 sm:block",children:[x(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(fa,{className:"h-7 w-44 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]}),x(ha,{className:"h-7 px-2 text-xs",size:"sm",type:"button",variant:"ghost",onClick:()=>w(e=>!e),children:v?"Hide path":"Show path"})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(fa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U()}}),x(ys,{label:"Open path",onClick:U,children:x(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(fa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(tr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(gs,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:M,createFolderParentPath:k,createFolderPending:R.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),E(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>R.mutate(),onOpen:_,onSelect:O,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(Ya,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":L||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(ha,{disabled:!L||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!L||"file"===t&&"file"!==u||(a(L),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(ha,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function gs({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:s,level:o,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),b=Cs(f)===Cs(r.path),N=v&&Cs(t)===Cs(r.path),I=C({enabled:w&&!a,queryKey:bs(g,r.path),queryFn:()=>_n(g,r.path)}),k=a??I.data,A=L(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),M=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(ws,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:b,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(o+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"Loading..."}):null,N?x(vs,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(gs,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),M.map(e=>x(xs,{entry:e,level:o+1,selected:"file"===p&&Cs(f)===Cs(e.path),onSelect:m},e.path)),!k||A.length||N?null:x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"No matching entries."})]}):null]})}function vs({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(ue,{className:"size-4 shrink-0 text-muted-foreground"}),x(fa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(ys,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(ys,{disabled:i,label:"Cancel new folder",onClick:n,children:x(et,{})})]})}function ws({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:kn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(J,{className:kn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?le:ce,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function xs({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:kn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(ie,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function ys({children:e,disabled:t,label:n,onClick:a}){return y(ha,{className:"size-7 p-0",disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function bs(e,t){return["workspace-directory",e.serverUrl,t]}function Ns(e,t){const n=ks(t),a=ks(e);if(!n||!a.startsWith(n))return n?[n]:[];const r=[n],i=a.slice(n.length).replace(/^[\\/]+/,"");let s=n;for(const o of i.split(/[\\/]/).filter(Boolean))s=Is(s,o),r.push(s);return r}function Is(e,t){const n=e.includes("\\")?"\\":"/";return`${ks(e)}${n}${t}`}function ks(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function Cs(e){return ks(e).toLocaleLowerCase()}function As(){const{clearSession:e,loading:t,refreshSession:n,session:a}=na(),{chatId:s}=p(),[o,d]=$(0),[c,l]=$(!1),[u,m]=$("server"),[f,g]=$(null),v=h(),b=P(e=>{d(e?.focusCreate?e=>e+1:0),m("accounts"),l(!0)},[]),N=P(e=>{"accounts"===e&&d(0),m(e)},[]),I=P((e="server")=>{m(e),l(!0)},[]),A=C({enabled:!!a,queryKey:["accounts"],queryFn:()=>async function(e){return Bn(e.serverUrl,"/api/accounts",{token:e.token})}(a)}),E=C({enabled:!!a,queryKey:["chats"],queryFn:()=>async function(e){return Bn(e.serverUrl,"/api/chats",{token:e.token})}(a)}),M=L(()=>A.data??[],[A.data]),T=L(()=>E.data??[],[E.data]),S=L(()=>s?T.find(e=>e.id===s)?.title??null:null,[s,T]),D=L(()=>M.filter(e=>"CONNECTED"===e.status),[M]);Sn(S);const q=k({queries:D.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>On(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),R=L(()=>Object.fromEntries(D.map((e,t)=>{const n=to(q[t]?.data);return n?[e.id,no(n)]:null}).filter(e=>!!e)),[q,D]);if(t)return x(Os,{});if(!a)return x(r,{replace:!0,to:"/connect"});const O={accounts:M,accountUsageSummaries:R,chats:T,connectedAccounts:D,openAccountManagement:b,openWorkspacePicker:g,session:a};return y(w,{children:[y(es,{children:[y(ts,{className:"border-r",collapsible:"icon",children:[x(rs,{children:y(ha,{className:"w-full justify-start",variant:"ghost",onClick:()=>v("/"),children:[x(We,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(ss,{children:y(os,{children:[x(ds,{children:"Chats"}),x(cs,{children:x(Ms,{chats:T,session:a})})]})}),x(is,{children:y(ha,{className:"justify-start",variant:"ghost",onClick:()=>I(),children:[x(Be,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(as,{className:"h-svh min-w-0 overflow-hidden",children:[y("header",{className:"flex h-14 shrink-0 items-center justify-between gap-3 border-b px-3",children:[x("div",{className:"flex min-w-0 items-center gap-2",children:x(ns,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Es,{onAddAccount:()=>b({focusCreate:!0}),onNewChat:()=>v("/")}),x(vr,{})]})]}),A.error||E.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:A.error?.message??E.error?.message??"Unable to load workspace data."}):null,x(i,{context:O})]})]}),x(rr,{accounts:M,activeTab:u,clearSession:e,createFocusKey:o,open:c,refreshSession:n,session:a,onTabChange:N,onOpenChange:l}),f?x(ps,{initialPath:f.initialPath,mode:f.mode,open:!!f,session:a,onOpenChange:e=>{e||g(null)},onSelect:f.onSelect}):null]})}function Es({onAddAccount:e,onNewChat:t}){return y(dr,{children:[y(cr,{render:x(ha,{size:"icon",variant:"outline"}),children:[x(Oe,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(lr,{align:"end",className:"w-44",children:[y(ur,{onClick:t,children:[x(We,{}),"New chat"]}),y(ur,{onClick:e,children:[x(Ze,{}),"Add account"]})]})]})}function Ms({chats:e,session:t}){const n=h(),{chatId:a}=p(),r=A(),[i,s]=$(null),[o,d]=$(""),[c,l]=$(null),[u,m]=$(""),[f,g]=$(null),v=L(()=>e.map(e=>({chat:e,dateLabel:co(e.lastActivityAt),folderName:lo(e.workingDirectory)})),[e]),b=L(()=>{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=L(()=>{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;q(()=>{f&&!b.some(e=>e.name===f)&&g(null)},[f,b]);const C=I({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return Un(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>z.error(Io(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),E=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>z.error(Io(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(w,{children:[y("div",{className:"mb-2 flex items-center gap-1 px-1 group-data-[collapsible=icon]:hidden",children:[y("div",{className:"relative min-w-0 flex-1",children:[x(je,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(fa,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(zi,{children:[x(Ui,{render:x(ha,{"aria-label":"Filter chats by folder",className:kn(f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:x(de,{className:"size-4"})}),y(ji,{align:"end",className:"w-64",side:"bottom",children:[y(Fi,{children:[x(Bi,{children:"Folder"}),x(Gi,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:kn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",!f&&"bg-muted"),type:"button",onClick:()=>g(null),children:[x("span",{className:"min-w-0 flex-1 truncate",children:"All folders"}),x("span",{className:"text-xs text-muted-foreground",children:e.length}),f?null:x(K,{className:"size-4"})]}),b.map(e=>y("button",{className:kn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",f===e.name&&"bg-muted"),type:"button",onClick:()=>g(e.name),children:[x(ce,{className:"size-4 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"text-xs text-muted-foreground",children:e.count}),f===e.name?x(K,{className:"size-4"}):null]},e.name))]})]})]})]}),x(ls,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>x(us,{children:y("div",{className:"flex items-center gap-1",children:[y(hs,{className:"h-14 min-w-0 flex-1 items-start py-1.5",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Me,{className:"mt-0.5"}),y("span",{className:"min-w-0 flex-1",children:[x("span",{className:"block truncate leading-5",children:e.title}),y("span",{className:"flex min-w-0 items-center gap-2 text-[11px] leading-4 font-normal text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1",children:[x(Z,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:t})]}),y("span",{className:"flex min-w-0 items-center gap-1",children:[x(ce,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(dr,{children:[y(cr,{render:x(ha,{size:"icon-sm",variant:"ghost"}),children:[x(Se,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(lr,{align:"end",className:"w-40",children:[y(ur,{onClick:()=>{s(e),d(e.title)},children:[x(Le,{}),"Rename"]}),y(ur,{onClick:()=>l(e),children:[x(j,{}),"Archive"]})]})]})]})},e.id)):y("div",{className:"px-2 py-3 text-sm text-muted-foreground group-data-[collapsible=icon]:hidden",children:[e.length?"No matching chats.":"No chats yet.",k?x(ha,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(Ka,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Rename chat"}),x(er,{children:"Choose a short title for the sidebar."})]}),x(fa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(Ya,{children:x(ha,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(Ka,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Archive chat?"}),y(er,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Ya,{children:[x(ha,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(ha,{disabled:E.isPending||!c,variant:"destructive",onClick:()=>{c&&E.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Ts(e){return e.map(e=>"image"===e.kind?{dataUrl:e.dataUrl,kind:"image",mimeType:e.mimeType,name:e.name,size:e.size}:{kind:"file",name:e.name,path:e.path,size:e.size})}async function Ss(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Ds(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Ps(e){const t=Array.from(e.files).filter(e=>e.type.startsWith("image/")),n=Array.from(e.items).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e),a=new Set;return[...t,...n].filter(e=>{const t=`${e.name}:${e.size}:${e.lastModified}`;return!a.has(t)&&(a.add(t),!0)})}function Ds(e){return new Promise((t,n)=>{const a=new FileReader;a.onerror=()=>n(a.error??new Error("Unable to read image.")),a.onload=()=>t(String(a.result??"")),a.readAsDataURL(e)})}function qs(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:uo(t),path:t}}function Ls({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(w,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(ie,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(ha,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(et,{className:"size-3"})})]},e.id))}):null]})}function Rs(){const{accountUsageSummaries:e,connectedAccounts:t,openAccountManagement:n,openWorkspacePicker:a,session:r}=Zs(),[i,s]=$(""),[o,d]=$([]),[c,l]=$("default"),[u,m]=$(null),[f,p]=$(null),[g,v]=$("default"),[w,b]=$(null),[N,k]=$(null),[E,M]=$(null),[T,S]=$(""),D=A(),L=h(),O=R(null),_=t.find(e=>e.id===f)??t[0];q(()=>{if(!_?.id)return k(null),m(null),v("default"),b(null),void M(null);k(_.id),m(_.defaultModel??null),v(_.defaultPermissionMode??"default"),b(_.defaultReasoningEffort??null),M(_.defaultServiceTier??null)},[_?.defaultModel,_?.defaultPermissionMode,_?.defaultReasoningEffort,_?.defaultServiceTier,_?.id]);const U=C({enabled:!!_?.id,queryKey:["models",_?.id],queryFn:()=>$n(r,_.id),staleTime:3e5}),j=C({enabled:!!_?.id,queryKey:["rate-limits",_?.id],queryFn:()=>On(r,_.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),F=U.data?.data??[],B=N===_?.id,G=B?u:null,H=B?w:null,K=B?E:null,W=eo(F,G),V=W?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Q=H??W?.defaultReasoningEffort??null,J=W?.additionalSpeedTiers??[],X=to(j.data),Y=I({mutationFn:({accountId:e,settings:t})=>Ln(r,e,t),onError:e=>z.error(Io(e)),onSuccess:e=>{D.setQueryData(["accounts"],t=>bo(t,e))}}),Z=I({mutationFn:async()=>{if(!_)throw new Error("Connect an account before starting a chat.");if(!T.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return Bn(e.serverUrl,"/api/chats",{body:t,token:e.token})}(r,{accountId:_.id,collaborationMode:c,model:G,permissionMode:g,reasoningEffort:H,serviceTier:K,workingDirectory:T.trim()});return{chat:e,response:await Fn(r,e.id,{attachments:Ts(o),content:i.trim()})}},onError:e=>z.error(Io(e)),onSuccess:({chat:e,response:t})=>{s(""),d([]),l("default"),v(_?.defaultPermissionMode??"default"),S(""),D.setQueryData(["messages",e.id],xo(void 0,yo(t))),D.invalidateQueries({queryKey:["chats"]}),L(`/chat/${e.id}`)}}),ee=P(e=>{e?.length&&Ss(e).then(e=>{d(t=>[...t,...e])}).catch(e=>z.error(Io(e)))},[]),te=P(()=>{a({initialPath:T,mode:"file",onSelect:e=>{d(t=>[...t,qs(e)])}})},[a,T]);return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:y("div",{className:"mx-auto flex w-full max-w-3xl flex-1 flex-col justify-center gap-6 px-4 py-8",children:[y("div",{className:"text-center",children:[x("h1",{className:"text-2xl font-semibold tracking-normal",children:"What should Codex work on?"}),x("p",{className:"mt-2 text-sm text-muted-foreground",children:"Select an account and workspace, then send the first message."})]}),t.length?null:y("div",{className:"rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(ha,{className:"mt-3",size:"sm",onClick:n,children:[x(Ze,{}),"Manage Accounts"]})]}),y("div",{className:"grid gap-3 rounded-xl border bg-background p-3 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-lg border bg-muted/25 px-2 py-1.5",children:[x(fa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-xs shadow-none focus-visible:ring-0",placeholder:"Working directory",spellCheck:!1,value:T,onChange:e=>S(e.target.value)}),y(ha,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>a({initialPath:T,onSelect:S}),children:[x(le,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),x(Da,{className:"min-h-32 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:"Message Codex",value:i,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!Z.isPending&&No(i,T,_,o)&&Z.mutate())},onPaste:e=>{const t=Ps(e.clipboardData);t.length&&ee(t)}}),x(Ls,{attachments:o,imageInputRef:O,onAttachImages:ee,onRemove:e=>d(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(Ws,{attachmentDisabled:Z.isPending,disabled:!_,mode:c,onAttachFile:te,onAttachImage:()=>O.current?.click(),onSelectMode:l}),x(_s,{account:_,connectedAccounts:t,disabled:!t.length,selectedAccountId:_?.id??"",usageSummaries:e,onSelect:e=>{p(e)}}),x(Js,{activeReasoningEffort:Q,disabled:!_,modelOptions:F,modelValue:G??"",pending:U.isFetching,reasoningOptions:V,reasoningValue:H??"",selectedModel:W,serviceTierOptions:J,serviceTierValue:K??"",onSelectModel:e=>{const t=_?.id??null;k(t),m(e||null),b(null),M(null),t&&Y.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=_?.id??null,n=e||null;k(t),b(n),t&&Y.mutate({accountId:t,settings:{defaultModel:G,defaultReasoningEffort:n,defaultServiceTier:K}})},onSelectServiceTier:e=>{const t=_?.id??null,n=e||null;k(t),M(n),t&&Y.mutate({accountId:t,settings:{defaultModel:G,defaultReasoningEffort:H,defaultServiceTier:n}})}}),x(Vs,{disabled:!_,mode:g,onSelectMode:e=>{v(e),_?.id&&Y.mutate({accountId:_.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Ks,{pending:j.isFetching,snapshot:X}),x(Qs,{loading:Z.isPending,sendDisabled:!No(i,T,_,o),onSend:()=>Z.mutate()})]})]})]})]})})}function $s(){const{chatId:e}=p(),{accounts:t,accountUsageSummaries:n,connectedAccounts:a,openWorkspacePicker:i,session:s}=Zs(),[o,d]=$(""),[c,l]=$([]),[u,m]=$("OFFLINE"),[h,f]=$(null),g=R(null),v=R(null),w=R(!0),b=A(),N=L(()=>["chat",e],[e]),k=L(()=>["messages",e],[e]);q(()=>{f(null),l([])},[e]);const E=C({enabled:!!e,queryKey:N,queryFn:()=>zn(s,e)}),M=C({enabled:!!e,queryKey:k,queryFn:()=>jn(s,e,0)}),T=C({enabled:!!e&&!h,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(s,e),retry:!1,staleTime:3e4});q(()=>{T.data?.usage&&!h&&f(T.data.usage)},[T.data?.usage,h]);const S=L(()=>M.data?.data??[],[M.data]),D=L(()=>Si(S),[S]),O=L(()=>D.pendingRequest?[D.pendingRequest.id]:[],[D.pendingRequest]),_=L(()=>S.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[S]),U=E.data,j=t.find(e=>e.id===U?.accountId),F=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),B=P((e="auto")=>{const t=g.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),G=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["models",j?.id],queryFn:()=>$n(s,j.id),staleTime:3e5}),H=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["rate-limits",j?.id],queryFn:()=>On(s,j.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),K=I({mutationFn:t=>Un(s,e,{accountId:t}),onError:e=>z.error(Io(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats"]}),z.success("Chat account updated.")}}),W=I({mutationFn:t=>Un(s,e,t),onError:e=>z.error(Io(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats"]})}}),V=I({mutationFn:({accountId:e,settings:t})=>Ln(s,e,t),onError:e=>z.error(Io(e)),onSuccess:e=>{b.setQueryData(["accounts"],t=>bo(t,e))}}),Q=I({mutationFn:t=>Fn(s,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??o).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>z.error(Io(e)),onSuccess:(e,t)=>{w.current=!0,(t?.clearComposer??1)&&(d(""),l([])),b.setQueryData(k,t=>xo(t,yo(e))),b.invalidateQueries({queryKey:N}),b.invalidateQueries({queryKey:["chats"]})}}),J=I({mutationFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(s,e),onError:e=>z.error(Io(e)),onSuccess:()=>{z.message("Stop requested.")}}),X=P(e=>{e?.length&&Ss(e).then(e=>{l(t=>[...t,...e])}).catch(e=>z.error(Io(e)))},[]),Y=P(()=>{i({initialPath:E.data?.workingDirectory,mode:"file",onSelect:e=>{l(t=>[...t,qs(e)])}})},[E.data?.workingDirectory,i]),Z=P(e=>{Q.mutate({clearComposer:!1,collaborationMode:"default",content:"Implement the latest approved plan from the most recent proposed plan in this thread.",metadata:{action:"implementPlan",planMessageId:e.message.id,source:"proposedPlan"}})},[Q]),ee=P(e=>{var t;Q.mutate({clearComposer:!1,collaborationMode:"plan",content:(t=e.feedback,["Revise the latest proposed plan from this thread using the following requested changes.","Do not implement yet. Return an updated proposed plan.","",t].join("\n")),metadata:{action:"revisePlan",planMessageId:e.message.id,source:"proposedPlan"}})},[Q]),te=P(e=>{Q.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[Q]),ne=P(e=>{Q.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[Q]);if(q(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?b.setQueryData(k,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return Kn(e,n);if("message.failed"===t)return Kn(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)):f(t):n(t)};return function(e,t,n){let a=!1;const r=Lt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(s,e,{onClose:()=>m("OFFLINE"),onError:e=>{m("OFFLINE"),z.error(Io(e))},onEvent:t,onOpen:()=>{var a;m("ONLINE"),jn(s,e,(a=b.getQueryData(k),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>z.error(Io(e))),zn(s,e).then(n).catch(e=>z.error(Io(e)))}});function n(e){b.setQueryData(N,e),b.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,N,k,b,s]),q(()=>{w.current=!0;const e=requestAnimationFrame(()=>B("auto"));return()=>cancelAnimationFrame(e)},[e,B]),q(()=>{if(!w.current)return;let e=0;const t=requestAnimationFrame(()=>{B("auto"),e=requestAnimationFrame(()=>B("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[_,B]),!e)return x(r,{replace:!0,to:"/"});if(E.isLoading||M.isLoading)return x(Os,{});if(E.error)return x("main",{className:"flex flex-1 items-center justify-center p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:E.error.message})]})});const ae=U,re=j,ie="RUNNING"===ae?.status,se=G.data?.data??[],oe=!!ae&&!ie&&a.length>0,de=eo(se,ae?.model),le=de?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ue=ae?.reasoningEffort??de?.defaultReasoningEffort??null,me=de?.additionalSpeedTiers??[],he=to(H.data);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:[y("div",{className:"flex min-h-12 items-center justify-between gap-3 border-b px-4 py-2",children:[y("div",{className:"min-w-0",children:[y("div",{className:"flex items-center gap-2",children:[x(Us,{state:u}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:ae?.title??"Chat"})]}),y("div",{className:"mt-1 flex min-w-0 items-center gap-3 text-xs text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(Ze,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:re?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(ce,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:ae?.workingDirectory??"No working directory"})]})]})]}),ae?x(js,{chatId:ae.id,disabled:ie,session:s}):null]}),x(tr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:g,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{w.current=F(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:S.length?x(xr,{chatId:e,fileChangeActionDisabled:ie,fileChangeActionPending:Q.isPending,hiddenMessageIds:O,messages:S,onImplementPlan:Z,onRevisePlan:ee,onReviewFileChanges:te,onUndoFileChanges:ne,planActionDisabled:ie,planActionPending:Q.isPending,session:s}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),y("div",{className:"min-w-0 overflow-hidden border-t bg-background",children:[x(yr,{chatId:e,messages:S,session:s}),x("div",{className:"p-3",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[x(Da,{className:"max-h-44 min-h-20 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:ae?.workingDirectory?re?"Message Codex":"Choose an account first":"Choose a directory first",value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),No(o,ae?.workingDirectory??"",re,c)&&Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:ie?"queue":void 0}))},onPaste:e=>{const t=Ps(e.clipboardData);t.length&&X(t)}}),x(Ls,{attachments:c,imageInputRef:v,onAttachImages:X,onRemove:e=>l(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(Ws,{attachmentDisabled:Q.isPending,disabled:!ae,modeDisabled:ie,mode:ae?.collaborationMode??"default",onAttachFile:Y,onAttachImage:()=>v.current?.click(),pending:W.isPending,steerDisabled:!ie||Q.isPending||!No(o,ae?.workingDirectory??"",re,c),onSteerActiveTurn:()=>Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>W.mutate({collaborationMode:e})}),x(_s,{account:re,connectedAccounts:a,disabled:!oe,pending:K.isPending,selectedAccountId:ae?.accountId??"",usageSummaries:n,onSelect:e=>K.mutate(e)}),x(Js,{activeReasoningEffort:ue,disabled:!ae||ie||!re,modelOptions:se,modelValue:ae?.model??"",pending:G.isFetching||W.isPending,reasoningOptions:le,reasoningValue:ae?.reasoningEffort??"",selectedModel:de,serviceTierOptions:me,serviceTierValue:ae?.serviceTier??"",onSelectModel:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),W.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:t,defaultServiceTier:ae.serviceTier??null}}),W.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:ae.reasoningEffort??null,defaultServiceTier:t}}),W.mutate({serviceTier:t})}}),x(Vs,{disabled:!ae,mode:ae?.permissionMode??"default",pending:W.isPending,onSelectMode:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultPermissionMode:e}}),W.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(zs,{usage:h}),x(Ks,{pending:H.isFetching,snapshot:he}),x(Qs,{loading:Q.isPending,running:ie,sendDisabled:!No(o,ae?.workingDirectory??"",re,c),stopPending:J.isPending,onSend:()=>Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:ie?"queue":void 0}),onStop:()=>J.mutate()})]})]})]})})]})]})}function Os(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})})}function _s({account:e,connectedAccounts:t,disabled:n,onSelect:a,pending:r,selectedAccountId:i,usageSummaries:s}){return y(dr,{children:[y(cr,{render:x(ha,{"aria-label":e?.displayName??"Choose account",className:"max-w-44 justify-start max-sm:size-8 max-sm:px-0",disabled:n||r,size:"sm",title:e?.displayName??"Choose account",variant:"ghost"}),children:[r?x(Ne,{className:"animate-spin"}):x(Ze,{}),x("span",{className:"truncate max-sm:sr-only",children:e?.displayName??"Choose account"})]}),x(lr,{align:"start",className:"w-64",children:x(pr,{value:i,onValueChange:e=>{e&&e!==i&&a(e)},children:t.map(e=>y(gr,{disabled:r,value:e.id,children:[x("span",{className:"truncate",children:e.displayName}),s[e.id]?x("span",{className:"ml-auto mr-5 shrink-0 text-xs text-muted-foreground",children:s[e.id]}):null]},e.id))})})]})}function zs({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=po(e.usedPercent);return y(zi,{children:[x(Ui,{render:x(ha,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(ji,{align:"end",className:"w-72",side:"top",children:[y(Fi,{children:[x(Bi,{children:"Context window"}),x(Gi,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[mo(e.tokensUsed)," /"," ",mo(e.tokenLimit)," tokens used"]})]})]})]})}function Us({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:kn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function js({chatId:e,disabled:t,session:n}){const[a,r]=$(!1),i=A(),s=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(n,e),refetchInterval:2e4,retry:!1}),o=s.data;if(o&&!o.isRepo)return null;const d=o?.branch??"Git",c=!!o&&!o.clean,l=o?Hs(o):"";return y(Ka,{open:a,onOpenChange:r,children:[y(ha,{className:"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",disabled:s.isLoading&&!o,size:"sm",type:"button",variant:"outline",onClick:()=>r(!0),children:[x(he,{className:"size-3.5"}),x("span",{className:"min-w-0 truncate",children:d}),l?x("span",{className:"shrink-0 text-muted-foreground",children:l}):null,x("span",{className:kn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(Fs,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function Fs({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=$(""),[o,d]=$(""),[c,l]=$(""),u=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),m=C({enabled:!!e,queryKey:["git-diff",e],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return Bn(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e),retry:!1}),h=I({mutationFn:function(t){return async function(e,t,n){return Bn(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>z.error(Io(e)),onSuccess:t=>{z.success(t.message),l(""),d(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})}}),f=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(u.data,i),p=t||h.isPending,g=r??h.data?.status;return y(Ja,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[x(Za,{children:"Git"}),x(er,{className:"truncate",children:g?.root??"Repository information"})]}),y("div",{className:"grid min-h-0 flex-1 gap-0 overflow-hidden border-y md:grid-cols-[18rem_minmax(0,1fr)]",children:[y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] border-b md:border-b-0 md:border-r",children:[y("div",{className:"grid gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(he,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:g?.branch??"No branch"}),x("div",{className:"text-xs text-muted-foreground",children:g?Gs(g):"Loading..."})]}),x(ha,{className:"ml-auto",size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})},children:x(_e,{className:kn(h.isPending&&"animate-spin")})})]}),x(fa,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(tr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(ha,{className:"justify-start",disabled:p||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>{window.confirm(`Switch to ${e.name}?`)&&h.mutate({action:"checkout",branch:e.name})},children:[x(he,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),f.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:"No branches found."})]})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(fa,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(ha,{disabled:p||!o.trim(),size:"sm",type:"button",variant:"outline",onClick:()=>h.mutate({action:"createBranch",branch:o.trim()}),children:[x(Oe,{}),"Create branch"]})]})]}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-3 p-3",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(ha,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ne,{}),"Pull"]}),y(ha,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Ye,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":Gs(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(Da,{className:"min-h-16 resize-y",placeholder:"Commit message",value:c,onChange:e=>l(e.target.value)}),y(ha,{className:"self-end",disabled:p||!c.trim()||g?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&h.mutate({action:"commit",message:c.trim()})},children:[x(fe,{}),"Commit"]})]})]}),x(tr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(Bs,{status:g}),x("pre",{className:"max-h-[46vh] min-w-0 overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:m.data?.diff?.trim()||m.data?.stat?.trim()||"No tracked diff."})]})})]})]})]})}function Bs({status:e}){const t=e?.changedFiles??[];return t.length?x("div",{className:"grid max-h-40 gap-1 overflow-auto rounded-md border p-2",children:t.map(e=>y("div",{className:"grid min-w-0 grid-cols-[3rem_minmax(0,1fr)] gap-2 text-xs",children:[x("span",{className:"font-mono text-muted-foreground",children:e.status}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function Gs(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Hs(e)].filter(Boolean).join(" · "):"Git unavailable"}function Hs(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ks({pending:e,snapshot:t}){const n=no(t),a=function(e){return e?ao(e.secondary)?"weekly":ao(e.primary)?"fiveHour":null:null}(t);return y(zi,{children:[y(Ui,{render:x(ha,{className:kn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ne,{className:"size-3 animate-spin"}):x(nt,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ji,{align:"start",className:"w-80",side:"top",children:[y(Fi,{children:[x(Bi,{children:"Usage capacity"}),x(Gi,{children:"Current Codex account limits refresh automatically."})]}),x(Xs,{pending:e,snapshot:t})]})]})}function Ws({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,onSteerActiveTurn:o,pending:d,steerDisabled:c}){const l="plan"===n,u=e||t;return y(dr,{children:[x(cr,{render:x(ha,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ne,{className:"animate-spin"}):x(Oe,{})}),y(lr,{align:"start",className:"w-56",children:[y(ur,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(be,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(fs,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(ur,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ge,{}),x("span",{children:"Attach image"})]}),y(ur,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(qe,{}),x("span",{children:"Attach workspace file"})]}),o?y(ur,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function Vs({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(dr,{children:[y(cr,{render:x(ha,{"aria-label":wo(t),className:kn("max-w-40 justify-start max-sm:size-8 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:wo(t),variant:"ghost"}),children:[a?x(Ne,{className:"animate-spin"}):x(r?He:Ge,{}),x("span",{className:"truncate max-sm:sr-only",children:wo(t)})]}),x(lr,{align:"start",className:"w-48",children:y(pr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(gr,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Default"}),x("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),x(gr,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function Qs({loading:e,onSend:t,onStop:n,running:a=!1,sendDisabled:r,stopPending:i=!1}){return a?y("div",{className:"flex items-center gap-1",children:[x(ha,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})}),x(ha,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:i||!n,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:n,children:i?x(Ne,{className:"animate-spin"}):x(Ke,{})})]}):x(ha,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})})}function Js({activeReasoningEffort:e,disabled:t,modelOptions:n,modelValue:a,onSelectModel:r,onSelectReasoning:i,onSelectServiceTier:s,pending:o,reasoningOptions:d,reasoningValue:c,selectedModel:l,serviceTierOptions:u,serviceTierValue:m}){const h=function({effort:e,model:t,modelValue:n,serviceTier:a}){return[(t?.displayName??n)||"Model",e?go(e):null,a?vo(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(dr,{children:[y(cr,{render:x(ha,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ne,{className:"animate-spin"}):x(te,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(lr,{align:"start",className:"w-72",children:[y(mr,{children:[y(hr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(H,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:go(e)})]}),x(fr,{className:"w-52",children:y(pr,{value:c,onValueChange:i,children:[x(gr,{value:"",children:"Model default"}),d.map(e=>x(gr,{value:e,children:go(e)},e))]})})]}),y(mr,{children:[y(hr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(te,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(fr,{className:"w-64",children:y(pr,{value:a,onValueChange:r,children:[x(gr,{value:"",children:"Default model"}),n.map(e=>x(gr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(mr,{children:[y(hr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(me,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:vo(m)})]}),x(fr,{className:"w-52",children:y(pr,{value:m,onValueChange:s,children:[x(gr,{value:"",children:"Default speed"}),u.map(e=>x(gr,{value:e,children:vo(e)},e))]})})]})]})]})}function Xs({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",fo(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,fo(n))}):null]}),x(Ys,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(Ys,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function Ys({fallbackLabel:e,severity:t,window:n}){const a=po(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=ao(n);return y("div",{className:kn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:io(n,e)}),x("span",{className:kn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:kn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:kn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:so(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",oo(n.resetsAt)]}):null]})]})}function Zs(){return f()}function eo(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function to(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function no(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[ro(e.primary,"5h"),ro(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function ao(e){return po(e?.usedPercent??0)>=100}function ro(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-po(e.usedPercent)));return`${function(e,t){const n=e?.windowDurationMins;return n?n>=10080?"W":300===n?"5h":n%60==0?n/60+"h":`${n}m`:t}(e,t)} ${n}%`}function io(e,t){const n=e?.windowDurationMins;return n?n>=10080?"Weekly limit":300===n?"5-hour limit":n%60==0?n/60+"-hour limit":`${n}-minute limit`:t}function so(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function oo(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 co(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 lo(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 uo(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function mo(e){return e>=1e6?`${ho(e/1e6)}M`:e>=1e3?`${ho(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function ho(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function fo(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function po(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function go(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function vo(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function wo(e){return"fullAccess"===e?"Full access":"Default"}function xo(e,t){let n=e;for(const a of t)n=Kn(n,a);return n??{data:[],nextCursor:null}}function yo(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function bo(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 No(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Io(e){return e instanceof Error?e.message:"Request failed."}var ko=xn({default:()=>Co}),Co=c(function(){return x(As,{})}),Ao=xn({default:()=>Eo}),Eo=c(function(){return x(Rs,{})}),Mo=xn({default:()=>To}),To=c(function(){return x($s,{})}),So=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Po(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Do(e){throw new So(405,`${e} is not supported for this route.`)}function qo(e,t){t.includes(e.method)||Do(e.method)}async function Lo(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 So(400,"JSON body must be an object.");return e}catch(n){if(n instanceof So)throw n;throw new So(400,"Request body must be valid JSON.")}}function Ro(e,t,n={}){if(null==e){if(n.required)throw new So(400,`${t} is required.`);return}if("string"!=typeof e)throw new So(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new So(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new So(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function $o(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new So(400,`${t} must be an array of strings.`);return e}}function Oo(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new So(400,`${t} must be an object.`);return e}}function _o(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 So(400,`${t} must be an integer.`);return r}function zo(e,t){const n=e[t];if(!n)throw new So(400,`${t} is required.`);return n}function Uo(e){return e instanceof So?Po({message:e.message},{status:e.status}):Po({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var jo=xn({loader:()=>Fo});function Fo({request:e}){try{return qo(e,["GET"]),Po({status:"ok",service:"xedoc"})}catch(t){return Uo(t)}}var Bo,Go=globalThis,Ho=nn("~"===(Bo=process.env.CODEX_WORKSPACE_ROOT?.trim()||Jt())?Jt():Bo.startsWith("~/")?nn(Jt(),Bo.slice(2)):rn(Bo),".xedoc","xedoc.db"),Ko=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Ho);process.env.DATABASE_URL=Ko,Kt(Zt(Ho),{recursive:!0,mode:448});var Wo=Go.prisma??new Ft({datasources:{db:{url:Ko}}});"production"!==process.env.NODE_ENV&&(Go.prisma=Wo);var Vo="server",Qo="scrypt";async function Jo(e){!function(e){if(e.length<8)throw new So(400,"Server password must be at least 8 characters.")}(e);const t=await td()??await async function(e){try{return await Wo.serverAuth.create({data:{id:Vo,passwordHash:nd(e),tokenSecret:ad(32)}})}catch(t){if(function(e){return e instanceof jt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new So(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!==Qo||!a||!r||void 0!==i)&&rd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new So(401,"Invalid server password.");return{token:Yo({authHash:Zo(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Xo(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new So(401,"Invalid auth token.");if(!rd(a,ed(n,t.tokenSecret)))throw new So(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 So(401,"Invalid auth token.")}}(n);if(i.authHash!==Zo(t.passwordHash))throw new So(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new So(401,"Missing auth token.");return n}(e),await async function(){const e=await td();if(!e)throw new So(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Yo(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${ed(n,t)}`}function Zo(e){return t=e,Rt("sha256").update(t).digest("hex");var t}function ed(e,t){return $t("sha256",t).update(e).digest("base64url")}async function td(){return Wo.serverAuth.findUnique({where:{id:Vo}})}function nd(e){const t=ad(16);return`${Qo}:${t}:${zt(e,t,64).toString("base64url")}`}function ad(e){return Ot(e).toString("base64url")}function rd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ut(n,a)}var id=xn({loader:()=>sd});async function sd({request:e}){try{return qo(e,["GET"]),Po(await async function(){return{passwordConfigured:!!(await td())}}())}catch(t){return Uo(t)}}var od=xn({action:()=>dd});async function dd({request:e}){try{return qo(e,["POST"]),Po(await Jo(Ro((await Lo(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Uo(t)}}var cd=xn({loader:()=>ld});async function ld({request:e}){try{return qo(e,["GET"]),Po(await async function(e){return{authenticated:!0,issuedAt:(await Xo(e)).issuedAt}}(e))}catch(t){return Uo(t)}}function ud(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function md(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function hd(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){return new Promise((n,a)=>{const r=setTimeout(()=>{i(),a(new Error("Timed out waiting for Codex event."))},t),i=this.onEvent(t=>{e(t)&&(clearTimeout(r),i(),n(t))})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${_t()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=gd(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);var t;return t=e.codexHome,Kt(t,{recursive:!0,mode:448}),Bt(t,448),this.child=dn(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&console.warn(`[codex:${this.config.accountId}] ${t}`)}),this.child.on("error",e=>this.failAll(e)),this.child.on("close",e=>{this.failAll(new Error(`Codex runtime exited with code ${e??"unknown"}.`)),this.child=void 0,this.initializePromise=void 0}),this.initializePromise=this.initialize(),this.initializePromise}async initialize(){await this.requestStarted("initialize",{clientInfo:{name:"xedoc",title:"xedoc",version:"0.1.0"},capabilities:{experimentalApi:!0}}),this.child?.stdin.write(`${JSON.stringify({method:"initialized"})}\n`)}handleStdout(e){this.stdoutBuffer+=e.toString("utf8");const t=this.stdoutBuffer.split("\n");this.stdoutBuffer=t.pop()??"";for(const n of t){const e=n.trim();e&&this.handleLine(e)}}handleLine(e){let t;try{t=JSON.parse(e)}catch{return}const n=function(e){return void 0!==e.id&&null!==e.id&&e.method?"server-request":void 0!==e.id&&null!==e.id?"response":"notification"}(t);if("server-request"===n){if(!this.serverRequestHandlers.size)return void this.rejectServerRequest(t.id,-32601,`Unsupported request method: ${t.method??"unknown"}`);for(const e of this.serverRequestHandlers)e(t);return}if("notification"===n){for(const e of this.eventHandlers)e(t);return}const a=this.pending.get(vd(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(vd(t.id)),t.error?a.reject(new Error(t.error.message??"Codex request failed.")):a.resolve(t))}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},pd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new 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()}};function gd(e){return nn(function(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function vd(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function wd(e){const t=await Wo.codexAccount.findUnique({where:{id:e}});if(!t)throw new So(404,"Codex account not found.");return t}async function xd(e){const t=await wd(e);if(Id(e))return pd.stopRuntime(e),await Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};await Wo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}});try{const n=bd(t);if(ud(ud((await n.request("account/read",{refreshToken:!1})).result)?.account))return await Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};const a=ud((await n.request("account/login/start",{type:"chatgpt"})).result),r=md(a?.authUrl)??md(a?.auth_url)??md(a?.url)??null,i=md(a?.loginId)??null,s=r?"AUTHENTICATING":"CONNECTED";if(await Wo.codexAccount.update({where:{id:e},data:{status:s,lastAuthUrl:r,lastError:null}}),r){const t=n.onEvent(n=>{const a=ud(n.params);if("account/login/completed"===n.method)return t(),!1===a?.success?void Wo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:md(a.error)??"Login failed."}}):void Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}});"account/updated"===n.method&&md(a?.authMode)&&(t(),Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}))})}return{accountId:e,status:s,authUrl:r,loginId:i,message:r?"Open the returned URL to finish Codex authentication.":"Codex account is connected."}}catch(n){const t=n instanceof Error?n.message:"Authentication failed.";return await Wo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}}async function yd(e,t){const n=await wd(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new So(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new So(400,"Callback URL must use http.");if(t.username||t.password)throw new So(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 So(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new So(400,"Callback URL must include an OAuth code or error.");return t}(t),r=bd(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 So(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=md(s.error)??"Login failed.";return await Wo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}return await async function(e,t){return!!ud(ud((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}:Id(e)?(pd.stopRuntime(e),await Wo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}):(await Wo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authUrl:n.lastAuthUrl,message:"Callback accepted. Codex is still finishing authentication."})}catch(s){const t=s instanceof Error?s.message:"Authentication failed.";return await Wo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:n.lastAuthUrl,message:t}}}function bd(e){return pd.getRuntime({accountId:e.id,command:e.command,args:Ed(e.args),workingDirectory:null,environment:hd(e.environment)})}function Nd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Id(e){try{const t=Wt(`${gd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==md(n.auth_mode)||!ud(n.tokens)&&!md(n.OPENAI_API_KEY))}catch{return!1}}function kd(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Cd(e){return{args:kd(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?jt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastError:null,status:"DISCONNECTED"};var t}function Ad(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:Ed(e.args),environment:hd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ed(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Nd()}function Md(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new So(400,`${n} must be an object.`);return{id:Ld(e.id,`${n}.id`,128),displayName:qd(e.displayName,`${n}.displayName`,128),command:Ld(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Rd(e.args,`${n}.args`)??Nd(),defaultModel:Ld(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:Dd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Sd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Pd(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:$d(e.environment,`${n}.environment`)}}function Td(e){return null==e?null:qd(e,"runtime option",128)}function Sd(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 So(400,`${t} is invalid.`)}function Pd(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new So(400,`${t} is invalid.`)}function Dd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new So(400,`${t} is invalid.`)}function qd(e,t,n){const a=Ld(e,t,n);if(!a)throw new So(400,`${t} is required.`);return a}function Ld(e,t,n){if(null==e)return;if("string"!=typeof e)throw new So(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new So(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Rd(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new So(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function $d(e,t){if(null==e)return null;const n=ud(e);if(!n)throw new So(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Od=xn({action:()=>zd,loader:()=>_d});async function _d({request:e}){try{return qo(e,["GET"]),await Xo(e),Po(await Wo.codexAccount.findMany({orderBy:{createdAt:"asc"}}))}catch(t){return Uo(t)}}async function zd({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Lo(e);return Po(await async function(e){return Wo.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:kd(e.args??Nd()),defaultModel:Td(e.defaultModel),defaultPermissionMode:Dd(e.defaultPermissionMode),defaultReasoningEffort:Sd(e.defaultReasoningEffort),defaultServiceTier:Pd(e.defaultServiceTier),environment:kd(e.environment)}})}({displayName:Ro(t.displayName,"displayName",{required:!0,maxLength:128}),command:Ro(t.command,"command"),args:$o(t.args,"args"),defaultModel:Ud(t.defaultModel,"defaultModel"),defaultPermissionMode:Ud(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Ud(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Ud(t.defaultServiceTier,"defaultServiceTier"),environment:Oo(t.environment,"environment")}),{status:201})}catch(t){return Uo(t)}}function Ud(e,t){return null===e?null:Ro(e,t,{maxLength:128})}var jd=xn({loader:()=>Fd});async function Fd({request:e}){try{return qo(e,["GET"]),await Xo(e),Po(await async function(){const e=await Wo.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:Ed(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:hd(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return Uo(t)}}var Bd=xn({action:()=>Gd});async function Gd({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Lo(e);if(!Array.isArray(t.accounts))throw new So(400,"accounts must be an array.");return Po(await async function(e){const t=e.accounts.map(Md),n=[];for(const s of t){const e=s.id?await Wo.codexAccount.findUnique({where:{id:s.id}}):null;e?(pd.stopRuntime(e.id),n.push(await Wo.codexAccount.update({where:{id:e.id},data:Cd(s)}))):n.push(await Wo.codexAccount.create({data:{...s.id?{id:s.id}:{},...Cd(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await xd(s.id));const r=await Wo.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=>Ad(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Uo(t)}}var Hd=xn({action:()=>Wd,loader:()=>Kd});async function Kd({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Po(await wd(zo(t,"accountId")))}catch(n){return Uo(n)}}async function Wd({request:e,params:t}){try{await Xo(e);const n=zo(t,"accountId");if("PATCH"===e.method){const t=await Lo(e);return Po(await async function(e,t){return await wd(e),pd.stopRuntime(e),Wo.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:kd(t.args),environment:kd(t.environment),status:"DISCONNECTED",lastError:null}})}(n,{displayName:Ro(t.displayName,"displayName",{maxLength:128}),command:Ro(t.command,"command"),args:$o(t.args,"args"),environment:Oo(t.environment,"environment")}))}if("DELETE"===e.method)return Po(await async function(e){return await wd(e),pd.stopRuntime(e),Wo.codexAccount.delete({where:{id:e}})}(n));Do(e.method)}catch(n){return Uo(n)}}var Vd=xn({action:()=>Qd});async function Qd({request:e,params:t}){try{qo(e,["PATCH"]),await Xo(e);const n=await Lo(e),a={defaultModel:Jd(n.defaultModel,"defaultModel"),defaultPermissionMode:Jd(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Jd(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Jd(n.defaultServiceTier,"defaultServiceTier")};return Po(await async function(e,t){return await wd(e),Ad(await Wo.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Td(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:Dd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Sd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Pd(t.defaultServiceTier)}}))}(zo(t,"accountId"),a))}catch(n){return Uo(n)}}function Jd(e,t){return null===e?null:Ro(e,t,{maxLength:128})}async function Xd(e){return async function(e){return(await pd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(ec(await Zd(e)))}async function Yd(e){return async function(e){return(await pd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}(ec(await Zd(e)))}async function Zd(e){const t=await Wo.codexAccount.findUnique({where:{id:e}});if(!t)throw new So(404,"Account not found.");if("CONNECTED"!==t.status)throw new So(400,"Authenticate the account before loading Codex account data.");return t}function ec(e){return{accountId:e.id,args:tc(e.args),command:e.command,environment:hd(e.environment),workingDirectory:null}}function tc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var nc=xn({loader:()=>ac});async function ac({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Po(await Xd(zo(t,"accountId")))}catch(n){return Uo(n)}}var rc=xn({loader:()=>ic});async function ic({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Po(await Yd(zo(t,"accountId")))}catch(n){return Uo(n)}}var sc=xn({action:()=>oc});async function oc({request:e,params:t}){try{return qo(e,["POST"]),await Xo(e),Po(await xd(zo(t,"accountId")))}catch(n){return Uo(n)}}var dc=xn({action:()=>cc});async function cc({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=Ro((await Lo(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Po(await yd(zo(t,"accountId"),n))}catch(n){return Uo(n)}}var lc="global",uc=new Map;async function mc(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=uc.get(lc);if(!e.force&&n&&t-n.lastScanAt<jc("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 Pc();if(!e.length)return;const t=(await Promise.all(e.map(e=>Oc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,zc());for(const n of t)await pc(n.path).catch(e=>{console.warn(`Failed to import local Codex chat from ${n.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=uc.get(lc);e?.promise===r&&(e.promise=void 0)});a.promise=r,uc.set(lc,a),await r,await async function(){const e=await Wo.chat.findMany({where:{OR:[{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},{accountId:null,externalThreadId:{not:null}}]},select:{id:!0},take:zc()});for(const t of e)await Wo.$transaction(e=>vc(e,t.id))}()}async function hc(e,t){const n=await Wo.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await nl(e)??(n?.externalThreadId?await Dc(n.externalThreadId):null);if(!a)return;const r=nn(gd(t),"sessions",function(e){const t=`${sn}sessions${sn}`,n=e.lastIndexOf(t);return-1===n?Xt(e):e.slice(n+t.length)}(a));if(rn(a)!==rn(r)){try{return void(await cn(r,Gt.R_OK))}catch{}await un(Zt(r),{recursive:!0,mode:448}),await ln(a,r)}}async function fc(e,t){const n=await nl(e);if(n){const e=await Lc(n,t);if(e)return e}const a=await Dc(t);return a?Lc(a,t):null}async function pc(e){const t=await gn(e);if(!t.isFile()||t.size>Uc())return;const n=gc(await hn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await Ec(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await Wo.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await vc(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 gc(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=Vc(f);if(!e)continue;const u=Qc(e.timestamp)??n;o=Jc(o,u),d=Xc(d,u);const m=ud(e.payload);if("session_meta"===e.type&&m){a=md(m.id)??a,r=md(m.source)??r,i=md(m.originator)??i,s=md(m.cwd)??s,o=Qc(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=md(m.cwd)??s;continue}const h=wc(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=xc(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??Yc(t);if(!m||!u.length)return null;const h=Zc(u.find(e=>"USER"===e.role)?.content??"")??Zc(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 vc(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&&yc(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=Zc(d.find(e=>"USER"===e.role&&!yc(e.content))?.content??d.find(e=>!yc(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=md(e.sessionPath);if(n)return n}return null}(e)??await Dc(t);return n?Ec(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=el(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==el(u)&&(f.title=u);else{const e=new Set([el(c),el("Imported Codex chat")]);(yc(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function wc(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?Ic(e.text,e):"string"==typeof e.message?Ic(e.message,e):"string"==typeof e.content?Ic(e.content,e):Array.isArray(e.content)?Ic(e.content.map(e=>{if("string"==typeof e)return e;const t=ud(e);return t?"string"==typeof t.text?t.text:Cc(t)??"":""}).join(""),e):Ic("",e)}(a);return!s.trim()||yc(s)?null:{content:s,createdAt:t,metadata:bc(a,n),rawPayload:Nc(e,a),role:r}}function xc(e,t,n){if("event_msg"!==e.type)return null;const a=ud(e.payload);if(!a)return null;const r=md(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?Ic(a.message,a):"";return!s.trim()||yc(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...bc(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Nc(e,a),role:i}}function yc(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function bc(e,t){return{kind:"localCodexImport",originator:t.originator,phase:md(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:md(e.type)}}function Nc(e,t){return{payload:{name:md(t.name),phase:md(t.phase),role:md(t.role),type:md(t.type)},timestamp:md(e.timestamp),type:md(e.type)}}function Ic(e,t){return[e,...kc(t.images),...kc(t.local_images),...kc(t.localImages)].filter(Boolean).join("\n\n")}function kc(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Ac(e):Cc(ud(e))).filter(e=>!!e):[]}function Cc(e){return e?Ac(md(e.url)??md(e.image_url)??md(e.path)??md(e.filePath)):null}function Ac(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Ec(e,t){if(!e||!t)return null;const n=function(e){const t=`${sn}sessions${sn}`,n=rn(e),a=n.lastIndexOf(t);return-1===a?null:nn(n.slice(0,a),"session_index.jsonl")}(e);if(!n)return null;try{return function(e,t){return Tc(e).get(t)??null}(await hn(n,"utf8"),t)}catch{return null}}async function Mc(e){try{return Tc(await hn(e,"utf8"))}catch{return new Map}}function Tc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=Vc(n);if(!e)continue;const a=md(e.id)??md(e.thread_id)??md(e.threadId)??md(e.session_id)??md(e.sessionId);if(!a)continue;const r=Sc(md(e.thread_name)??md(e.threadName)??md(e.name)??md(e.title)),i=Qc(e.updated_at)??Qc(e.updatedAt)??Qc(e.modified_at)??Qc(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Sc(e){const t=e?.replace(/\s+/g," ").trim();return!t||yc(t)?null:t.slice(0,160)}async function Pc(){const e=[...Rc(),nn(tl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await $c()],t=[...new Set(e.map(e=>tl(e)))],n=[];for(const a of t)try{await cn(a,Gt.R_OK),n.push(a)}catch{}return n}async function Dc(e){const t=await Pc(),n=(await Promise.all(t.map(e=>Oc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>Yc(t.path)===e);if(a)return a.path;for(const r of n.slice(0,zc()))if(await qc(r.path,e))return r.path;return null}async function qc(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Uc())return null;const a=gc(await hn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Lc(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Uc())return null;let a,r=null;for(const t of(await hn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Vc(t);if(!e)continue;"session_meta"===e.type&&(a=md(ud(e.payload)?.id)??a);const n=Fc(e);n&&(r=n)}return(a??Yc(e))===t?r:null}catch{return null}}function Rc(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(Yt).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:nn(e,"sessions")):[]}async function $c(){const e=tl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await fn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>nn(e,t.name,"sessions"))}catch{return[]}}async function Oc(e){const t=[];return await _c(e,t,0),t}async function _c(e,t,n){if(n>6)return;let a;try{a=await fn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=nn(e,a.name);if(a.isDirectory())return void(await _c(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await gn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function zc(){return jc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function Uc(){return jc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function jc(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Fc(e){const t=Bc(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=Hc(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Hc(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Hc(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}([Hc(e,["input_tokens","inputTokens"]),Hc(e,["output_tokens","outputTokens"]),Hc(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}}(Gc(a,["last_token_usage","lastTokenUsage"])??Gc(a,["total_token_usage","totalTokenUsage"])??a,a)}function Bc(e,t=0){if(t>4)return;const n=ud(e);if(!n)return;const a=Wc(md(n.type)??""),r=Wc(md(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Bc(n[i],t+1);if(e)return e}}function Gc(e,t){for(const n of t){const t=ud(e[n]);if(t)return t}}function Hc(e,t){for(const n of t){const t=Kc(e[n]);if(void 0!==t)return t}}function Kc(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 Wc(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Vc(e){try{return ud(JSON.parse(e))??null}catch{return null}}function Qc(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Jc(e,t){return!e||t<e?t:e}function Xc(e,t){return!e||t>e?t:e}function Yc(e){return/rollout-[^.]+-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function Zc(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 el(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function tl(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}async function nl(e){const t=await Wo.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=md(e.sessionPath);if(t)return t}return null}var al="__xedocRealtimeState__";function rl(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[al]??={handlers:new Set},e[al]}().handlers)r(a)}async function il(e){const t=dl(),n=cl(t,e),a=await fn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:Zt(n),entries:a.map(e=>function(e,t){return{name:t.name,path:nn(e,t.name),type:ll(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 sl(e,t){const n=dl(),a=rn(cl(n,e),function(e){const t=e.trim();if(!t)throw new So(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new So(400,"Folder name must be a single folder name.");return t}(t)),r=an(n,a);if(r.startsWith("..")||tn(r))throw new So(403,"Path is outside the workspace root.");try{await un(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new So(409,"Folder already exists.");throw i}return il(a)}function ol(e){return cl(dl(),e)}function dl(){const e=function(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Ht(e)||Kt(e,{recursive:!0}),Vt(e)}function cl(e,t){const n=t?.trim(),a=n?tn(n)?n:nn(e,n):e;let r;try{r=Vt(rn(a))}catch{throw new So(400,"Workspace path does not exist.")}const i=an(e,r);if(i.startsWith("..")||tn(i))throw new So(403,"Path is outside the workspace root.");if(!Qt(r).isDirectory())throw new So(400,"Workspace path is not a directory.");return r}function ll(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var ul=1e6;async function ml(e,t,n){const a=await Wo.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new So(404,"Chat not found.");if(!a.workingDirectory)throw new So(400,"Chat does not have a working directory.");const r=ol(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 hl(r,i.path),o=await fl(s,r),d=n??i.line??null,c=Math.min(o.size,ul),l=c?await async function(e,t){const n=await mn(e,"r");try{const e=Buffer.alloc(t),a=await n.read(e,0,t,0);return e.subarray(0,a.bytesRead)}finally{await n.close()}}(s,c):Buffer.alloc(0),u=function(e){if(!e.length)return!1;const t=e.subarray(0,Math.min(e.length,8e3));return!!t.includes(0)||t.toString("utf8").includes("�")}(l),m=u?void 0:l.toString("utf8"),h=m?m.split(/\r?\n/).length:0;return{content:m,isBinary:u,language:pl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>ul}}async function hl(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new So(400,"File path is required.");const a=await pn(e),r=tn(n)?n:rn(a,n);let i;try{i=await pn(r)}catch{throw new So(404,"File does not exist.")}return function(e,t){const n=an(e,t);if(n.startsWith("..")||tn(n))throw new So(403,"Path is outside the chat working directory.")}(a,i),i}async function fl(e,t){const n=await gn(e);if(!n.isFile())throw new So(400,"Workspace path is not a file.");const a=t?await pn(t):null;return{name:Xt(e),path:e,relativePath:a&&an(a,e)||Xt(e),size:n.size}}function pl(e){const t=en(e).slice(1).toLowerCase();return{cjs:"javascript",css:"css",go:"go",htm:"html",html:"html",js:"javascript",json:"json",jsonl:"json",jsx:"javascript",md:"markdown",mjs:"javascript",py:"python",rb:"ruby",rs:"rust",sh:"bash",sql:"sql",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"}[t]??(t||null)}var gl=new Map,vl=new Map,wl=new Map,xl=new Map,yl=new Map,bl=new Map,Nl=new Map;function Il(e,t){return async function(e,t){const n=yl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);yl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),yl.get(e)===i&&yl.delete(e)}}(e,async()=>Wo.chatMessage.create({data:{...t,chatId:e,sequence:await Cu(e)}}))}function kl(e,t){const n=(bl.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return bl.set(e,a),a.finally(()=>{bl.get(e)===a&&bl.delete(e)}),n}async function Cl(){return await mc(),await async function(){const e=await Wo.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 Mc(nn(gd(e),"session_index.jsonl")))}));for(const a of e){if(!a.accountId||!a.externalThreadId)continue;const e=n.get(a.accountId)?.get(a.externalThreadId),t=Ol(a,e);if(t){const e=await Wo.chat.update({where:{id:a.id},data:t});Au(a.id,"chat.updated",hm(e))}}}(),Wo.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Al(e){const t=await Wo.chat.findUnique({where:{id:e}});if(!t)throw new So(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?$l(e,e.accountId,e.externalThreadId):e}(t)}async function El(e,t){const n=await Al(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await Wo.codexAccount.findUnique({where:{id:t}});if(!n)throw new So(400,"Account not found.");if("CONNECTED"!==n.status)throw new So(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:Pl(t.collaborationMode),s=void 0!==i&&i!==Dl(n.collaborationMode),o=void 0===t.permissionMode?void 0:ql(t.permissionMode),d=void 0!==o&&o!==Ll(n.permissionMode);if(void 0!==t.workingDirectory)throw new So(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new So(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new So(400,"Wait for the current run to finish before changing modes.");const c=await Wo.chat.update({where:{id:e},data:{accountId:a,model:void 0===t.model?void 0:Ml(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Tl(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Sl(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&hc(e,a).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),void 0!==t.title&&async function(e){if(!e.accountId||!e.externalThreadId)return;const t=await Wo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await vm(pd.getRuntime({accountId:t.id,command:t.command,args:wm(t.args),workingDirectory:null,environment:hd(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 vl.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...gl.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=am(t);n.runtime.respondToServerRequest(n.rpcId,a),gl.delete(dm(e,n.requestId));const r=await Wo.chatMessage.findUnique({where:{id:n.messageId}});r&&Au(e,"message.updated",mm(await Wo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:om(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Ml(e){if(null===e)return null;const t=e.trim();if(!t)throw new So(400,"Runtime option cannot be empty.");return t}function Tl(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new So(400,"reasoningEffort is invalid.");return e}function Sl(e){if(null===e||"fast"===e||"flex"===e)return e;throw new So(400,"serviceTier is invalid.")}function Pl(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new So(400,"collaborationMode is invalid.")}function Dl(e){return"plan"===e?"plan":"default"}function ql(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new So(400,"permissionMode is invalid.")}function Ll(e){return"fullAccess"===e?"fullAccess":"default"}function Rl(e){const t=pm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}async function $l(e,t,n){const a=Ol(e,(await Mc(nn(gd(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await Wo.chat.update({where:{id:e.id},data:a});return Au(e.id,"chat.updated",hm(r)),r}function Ol(e,t){if(!t)return null;const n={};return t.title&&pm(e.title)!==pm(t.title)&&(n.title=t.title),t.updatedAt&&e.lastActivityAt.getTime()!==t.updatedAt.getTime()&&(n.lastActivityAt=t.updatedAt),Object.keys(n).length?n:null}async function _l(e,t=0,n=50){const a=await Al(e);await async function(e){const t=await Wo.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 Wo.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 Wo.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 Wo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=pd.getRuntime({accountId:t.id,command:t.command,args:wm(t.args),workingDirectory:null,environment:hd(t.environment)});try{const t=Fl((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return Fl((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 nl(e);if(n){const e=await qc(n,t);if(e)return e}const a=await Dc(t);return a?qc(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(zl),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??Ul(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?cm(t.metadata):null)??a?.metadata??jl(t),rawPayload:cm(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||(!zl(e)||!t.has(e.role)))}(e,i)).map(mm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(mm)).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 zl(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function Ul(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function jl(e){return{kind:"codexTranscript",source:e.source}}function Fl(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=Kl(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=md(e.id)??md(e.turnId)??md(e.turn_id)??null,n=Wl(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=Wl(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(Kl(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=md(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=md(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,...Bl(t.images),...Bl(t.local_images),...Bl(t.localImages)].filter(Boolean).join("\n\n")}(lm(e.text)??lm(e.message)??lm(e.output)??function(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 lm(t?.text)??lm(t?.content)??lm(t?.message)??Gl(t)??""}).join("");return t.length?t:void 0}(e.content)??"",e)}(e);return!a.trim()||yc(a)?null:{completedAt:Wl(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:Wl(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:md(e.id)??md(e.itemId)??md(e.item_id)??null,rawPayload:Vl(e),role:n,source:"runtime",turnId:md(e.turnId)??md(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function Bl(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Hl(e):Gl(ud(e))).filter(e=>!!e):[]}function Gl(e){return e?Hl(md(e.url)??md(e.image_url)??md(e.path)??md(e.filePath)):null}function Hl(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Kl(e){return Array.isArray(e)?e.map(e=>ud(e)).filter(e=>!!e):null}function Wl(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Vl(e){return{id:md(e.id),itemId:md(e.itemId)??md(e.item_id),role:md(e.role),type:md(e.type)}}async function Ql(e,t,n){await Al(e);const a=dm(e,t),r=gl.get(a);if(!r)throw new So(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new So(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new So(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new So(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),gl.delete(a);const s=mm(await Wo.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:om(await sm(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return Au(e,"message.updated",s),s}async function Jl(e,t){const n=await Al(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new So(400,"Switch the chat account before sending with a different account.");const a=t.accountId??n.accountId;if(!a)throw new So(400,"Choose a Codex account before sending messages.");const r=await Wo.codexAccount.findUnique({where:{id:a}});if(!r)throw new So(400,"Account not found.");if("CONNECTED"!==r.status)throw new So(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new So(400,"Select a working directory before sending messages.");const i=ol(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new So(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 So(400,"Attachment kind is invalid.");n.push(await tu(e,a))}else n.push(eu(a));return n}(i,t.attachments??[]),o=function(e,t){const n=t.map(e=>e.message).filter(e=>"image"===e.kind).map(e=>`<image>${e.url}</image>`);return[e.trim(),...n].filter(Boolean).join("\n\n")}(t.content,s);if(!o.trim()&&!s.length)throw new So(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!Rl(t))return null;const a=((await Wo.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,o),c=void 0===t.collaborationMode?void 0:Pl(t.collaborationMode),l=c??Dl(n.collaborationMode),u=Ll(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=Yl(n.id);if(!l?.runtime)throw new So(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new So(409,"The active turn has not published a thread yet.");const m=l.turnId??await du(l.runtime,u);if(!m)throw new So(409,"The active turn has not published a turn id yet.");const h=await Wo.chat.findUnique({where:{id:n.id}}),f=await Nu(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=Su(await async function(e,t,n,a){async function r(r){const i=gu(n,a),s=void 0===t.collaborationMode?[t]:[t,ou(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&&wu(d))break;if(vu(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 du(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...yu(a,f)},r,t))??m,l.externalThreadId=u;const p=await Il(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:um(au({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await Wo.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return Au(n.id,"chat.updated",hm(g)),Au(n.id,"message.created",mm(p)),{message:mm(p),assistantMessage:null,runId:l.runId,status:"RUNNING",delivery:"steer",steered:!0}}({accountId:a,attachments:s,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,startedAt:m,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,chat:a,collaborationMode:r,content:i,messageContent:s,metadata:o,permissionMode:d,queuedAt:c,workingDirectory:l}){const u=_t(),m=await Il(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:um(au({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=wl.get(e)??[];wl.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 Wo.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return Au(a.id,"chat.updated",hm(h)),Au(a.id,"message.created",mm(m)),{message:mm(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 Il(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:um(au(t.metadata,s))});Au(e,"message.created",mm(h));const f=await Xl({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:mm(h),assistantMessage:mm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function Xl({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 Wo.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:um({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await Il(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return Au(a,"chat.updated",hm(await Wo.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),Au(a,"message.created",mm(m)),Au(a,"run.status",{runId:u.id,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){const l=await Wo.codexAccount.findUnique({where:{id:a}}),u=await Wo.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=Ll(u.permissionMode),h=await Wo.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});Au(e,"message.updated",mm(h)),await Wo.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),Au(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};vl.set(t,f);const p=pd.getRuntime({accountId:l.id,command:l.command,args:wm(l.args),workingDirectory:null,environment:hd(l.environment)});f.runtime=p;let g="";const v=new Map;let w,x=u.externalThreadId;const y=p.onEvent(n=>{(function(e,t,n){const a=Du(e);if(t&&a&&a!==t)return!1;const r=qu(e);return!n||!r||r===n})(n,x,w)&&kl(t,()=>async function(e,t){const n=function(e){const t=Ju(e);if(t){const e=ud(t.params),n=ud(t.info)??ud(e?.info)??e??t;return Qu(Xu(n,["last_token_usage","lastTokenUsage"])??Xu(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=ud(e.params),a=ud(n?.event),r=ud(n?.usage)??ud(a?.usage)??(Vu(e.method)?n:void 0);return r?Qu(r):null}(t);n&&Au(e.chatId,"context.updated",n);if(function(e){return!!Ju(e)||Vu(e.method)}(t))return;if(function(e){const t=ud(e.params),n=ud(t?.payload)??ud(t?.event);return[e.method,md(t?.type),md(n?.type),md(n?.event)].some(e=>Ou(e??"").includes("compact"))}(t))return void(await Mu({chatId:e.chatId,completedAt:new Date,content:Ku(t),itemId:`context-compaction:${qu(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Wu(t)?"STREAMING":"COMPLETED",turnId:qu(t)}));const a=t.method??"",r=ud(t.params),i=Ru(t),s=Ou(md(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 gm(t)??gm(a)??gm(n)}(t);return void(n&&await ym(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=lm(r?.delta)??lm(ud(r?.event)?.delta);if(!n)return;const a=Lu(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Mu({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:md(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:qu(t)});return void Au(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&_u(s))return void(await Mu({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:Lu(t),kind:"CHAT",metadata:{kind:"assistant",phase:md(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:qu(t)}));if("item/completed"===a&&_u(s)){const n=function(e){if(!e)return"";const t=lm(e.text)??lm(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>lm(ud(e)?.text)??"").filter(Boolean).join("")}(i)||Tu(t);if(!n)return;const a=Lu(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Mu({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:md(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:qu(t)}))}if(a.startsWith("item/reasoning/")||Ou(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Lu(t)??`${n.toLowerCase()}:${qu(t)??"turn"}`,i=`${n}:${r}`,s=a.delta?`${e.streamBuffers.get(i)??""}${a.delta}`:e.streamBuffers.get(i)??a.contentFallback;e.streamBuffers.set(i,s),await Mu({chatId:e.chatId,content:s,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:zu(t)?"COMPLETED":"STREAMING",turnId:qu(t)})}(e,t,"THINKING",{contentFallback:"Thinking...",delta:$u(t),metadata:{kind:"thinking",status:ju(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?$u(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>ud(e)).filter(e=>!!e).map(e=>({status:md(e.status)??"pending",step:md(e.step)??""})).filter(e=>e.step),i=md(n.explanation),s=qu(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Lu(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 Mu({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=Lu(t)??`command:${qu(t)??"turn"}`,s=`COMMAND:${i}`,o=$u(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:lm(r.output)??lm(r.aggregatedOutput)??lm(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=md(r.command)??md(a.command)??"command",l=ju(r,t.method??"");await Mu({chatId:e.chatId,completedAt:zu(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Gu(r.actions)??Gu(r.commandActions),command:c,cwd:md(r.cwd)??md(a.cwd),durationMs:Hu(r.durationMs)??Hu(r.duration_ms),exitCode:Hu(r.exitCode)??Hu(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":zu(t)?"COMPLETED":"STREAMING",turnId:qu(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=Lu(t)??`file-change:${qu(t)??"turn"}`,s=Fu(r)??Fu(a),o=Gu(r.changes)??Gu(a.changes)??[],d=function(e,t){const n=[md(e.path),md(e.filePath),md(e.file_path),...t.flatMap(e=>{const t=ud(e);return[md(t?.path),md(t?.filePath),md(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Mu({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Hu(r.additions)??Bu(s,"+"),changes:o,deletions:Hu(r.deletions)??Bu(s,"-"),diff:s,kind:"fileChange",paths:d,status:ju(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:zu(t)?"COMPLETED":"STREAMING",turnId:qu(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=ud(t.params)??{},a=md(n.requestId)??md(n.id);if(!a)return;gl.delete(dm(e,a));const r=await Wo.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;Au(e,"message.updated",mm(await Wo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:om(r.metadata,{result:void 0===n.result?null:cm(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=md(ud(n?.error)?.message)??md(n?.message)??t.error?.message??"Codex runtime error.";await Mu({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${qu(t)??Date.now()}`,kind:"ERROR",metadata:{details:cm(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:qu(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>Eu("Codex event projection failed.",e))}),b=p.onServerRequest(n=>{(function(e,t,n){const a=ud(e.params),r=md(a?.threadId);if(t&&r&&r!==t)return!1;const i=md(a?.turnId);return!n||!i||i===n})(n,x,w)&&kl(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=ud(t.params)??{},r=vd(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?Ou(e).includes("permissions")?"permissions":"approval":Ou(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:md(n.message),method:e,mode:md(n.mode),questions:em(n.questions),raw:cm(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Gu(n.availableDecisions),changes:Gu(n.changes),command:md(n.command),cwd:md(n.cwd),itemId:md(n.itemId),kind:a,method:e,raw:cm(r),reason:md(n.reason)??md(n.message),requestId:t,requestKind:a,status:"pending",turnId:md(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=am(i);return e.runtime.respondToServerRequest(t.id,n),void(await Mu({chatId:e.chatId,completedAt:new Date,content:nm(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:md(a.turnId),itemId:md(a.itemId)}))}const o=await Mu({chatId:e.chatId,content:nm(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:md(a.turnId),itemId:md(a.itemId)});gl.set(dm(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=>Eu("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=md(ud(r?.thread)?.id)??md(r?.threadId)??md(r?.thread_id)??t;if(!i)throw new Error("Codex did not return a thread id.");return i}(p,u.externalThreadId,o),f.externalThreadId=x,function({chatId:e,cwd:t,runtime:n,seed:a,threadId:r}){const i=a?.trim();if(!i)return;const s=function(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}(i),o=new Set(["untitled chat","conversation",...s?[pm(s)]:[]]);(async()=>{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 fm(md(a?.title)??md(a?.name)??md(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await async function(e,t,n,a,r){const i=fm(a);if(!i)return!1;const s=await Wo.chat.findUnique({where:{id:t}});if(!s)return!1;const o=pm(s.title);return!(!Rl(s.title)&&!r.has(o))&&(await ym(t,i),vm(e,n,i),!0)}(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await iu(t)&&(f.interruptRequested=!0);const n=await Nu(p,u.model,u.reasoningEffort),a=await async function(e,t,n,a){const r=gu(n,a);let i;for(const o of r)try{return await e.request("turn/start",{...t,input:o},3e4)}catch(s){if(i=s,!vu(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}:{},...xu(d,n,m),metadata:i},r,s);w=Su(a),f.turnId=w,w&&(await Wo.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await iu(t))&&(f.interruptRequested=!0,await su(p,w,x)));const v=await 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)&&Du(e)===x&&(!w||qu(e)===w),6e5);if(await async function(e){await(bl.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new ru(Uu(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(Uu(v));const y=await async function(e,t,n){try{const a=ud((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return Pu((Array.isArray(a?.data)?a.data:[]).map(e=>ud(e)).filter(e=>!!e).filter(e=>!n||md(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||Tu(v)||Tu(a)||g,b=new Date,N=await Wo.chatMessage.update({where:{id:h.id},data:{content:y,status:"COMPLETED",rawPayload:um(v),completedAt:b}});await im(e,t,"COMPLETED"),await rm(e,t,"Codex completed the turn."),await Wo.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const I="plan"===d&&await async function(e,t){return(await Wo.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),k=await Wo.chat.update({where:{id:e},data:{collaborationMode:I?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:b,updatedAt:b}});Au(e,"chat.updated",hm(k)),Au(e,"message.completed",mm(N)),Au(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t,n){if(!n)return;const a=await async function(e,t){try{const n=gm(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 gm((xm(n?.data)??xm(n?.items)??xm(n?.threads)??[]).find(e=>md(e.id)===t))}catch{return null}}(e,n);a&&await ym(t,a)}(p,e,x),await $l(k,l.id,x)}catch(N){const n=N instanceof Error?N.message:"Codex run failed.";if(await rm(e,t,n),N instanceof ru){await im(e,t,"COMPLETED");const a=new Date,r=await Wo.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:om(h.metadata,{interrupted:!0,kind:"assistant"})}});return await Wo.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),Au(e,"chat.updated",hm(await Wo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Au(e,"message.completed",mm(r)),void Au(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await Wo.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await im(e,t,"FAILED"),await Wo.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),Au(e,"chat.updated",hm(await Wo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Au(e,"message.failed",{...mm(r),error:n}),Au(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y(),b(),vl.delete(t),bl.delete(t),function(e){const t=(xl.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(Yl(e))return;const t=await Wo.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=wl.get(e)??[];if(!t)return wl.delete(e),null;n.length?wl.set(e,n):wl.delete(e);return t}(e);if(!n)return;try{const a=await Wo.codexAccount.findUnique({where:{id:n.accountId}});if(!a||"CONNECTED"!==a.status)throw new Error("Queued message account is no longer connected.");const r=new Date,i=await Xl({accountId:n.accountId,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:Ll(t.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:r,workingDirectory:n.workingDirectory});await Zl(e,n.messageId,{dequeuedAt:r.toISOString(),queueStatus:"running",runId:i.run.id})}catch(N){await Zl(e,n.messageId,{error:N instanceof Error?N.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});xl.set(e,t),t.finally(()=>{xl.get(e)===t&&xl.delete(e)})}(e)}}(a,u.id,m.id,e,i,s,t,l,r,n),{assistantMessage:m,run:u}}function Yl(e){for(const t of vl.values())if(t.chatId===e)return t;return null}async function Zl(e,t,n){const a=await Wo.chatMessage.findUnique({where:{id:t}});a&&Au(e,"message.updated",mm(await Wo.chatMessage.update({where:{id:t},data:{metadata:om(a.metadata,n)}})))}function eu(e){const t=e.dataUrl?.trim(),n=/^data:(image\/(?:png|jpeg|jpg|webp|gif));base64,([A-Za-z0-9+/=\s]+)$/i.exec(t);if(!n)throw new So(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 So(400,"Image attachments must be 6 MB or smaller.");const s=nu(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:_t(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function tu(e,t){const n=await async function(e,t){return fl(await hl(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:_t(),kind:"file",name:nu(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function nu(e,t){const n=e?.trim();return(n?Xt(n):t).slice(0,160)||"attachment"}function au(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var ru=class extends Error{};async function iu(e){return!!(await Wo.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function su(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 ou(e,t){const n={...e};return delete n[t],n}async function du(e,t){for(let n=0;n<3;n+=1){const a=await cu(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 cu(e,t){try{const n=ud((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return lu(uu(n?.data)??uu(n?.items)??uu(n?.turns)??[],!0)}catch{}let n;try{n=await e.request("thread/read",{includeTurns:!0,threadId:t},1e4)}catch(a){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("threadid")||t.includes("includeturns")||t.includes("thread_id")||t.includes("include_turns")||t.includes("unknown field")||t.includes("missing field")||t.includes("invalid")}(a))throw a;n=await e.request("thread/read",{include_turns:!0,thread_id:t},1e4)}return lu(uu(ud(ud(n.result)?.thread)?.turns)??[],!1)}function lu(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>hu(mu(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!pu(fu(i)))continue;const e=hu(mu(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function uu(e){return Array.isArray(e)?e.map(ud).filter(e=>!!e):null}function mu(e){return md(e.id)??md(e.turnId)??md(e.turn_id)??null}function hu(e){const t=e?.trim();return t||null}function fu(e){return(md(e.status)??md(e.turnStatus)??md(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function pu(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function gu(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={type:"text",text:n,text_elements:[]},s=(e,t)=>[i,...a.map(t=>({type:"image",[e]:t.message.url})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function vu(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 wu(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function xu(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:bu(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function yu(e,t=null){return"plan"!==e?{}:{collaborationMode:bu(e,t)}}function bu(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Nu(e,t,n){const a=Iu(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=Iu(md(t?.model));if(r=r??ku(t?.model_reasoning_effort)??ku(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=Iu(md(t?.id))??Iu(md(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Iu(e){const t=e?.trim();return t||null}function ku(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Cu(e){return((await Wo.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function Au(e,t,n){rl(e,t,n)}function Eu(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function Mu(e){return async function(e,t){if(!e)return t();const n=Nl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Nl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Nl.get(e)===i&&Nl.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 Wo.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await Wo.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 Wo.chatMessage.findUnique({where:{id:e.fallbackMessageId}});if(!t)return null;if(!e.itemId||!t.itemId||t.itemId===e.itemId)return t}return null}(e),n={completedAt:e.completedAt,content:e.content,itemId:e.itemId??void 0,kind:e.kind,metadata:void 0===e.metadata?void 0:um(e.metadata),rawPayload:void 0===e.rawPayload?void 0:um(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=mm(t?await Wo.chatMessage.update({where:{id:t.id},data:n}):await Il(e.chatId,n));return Au(e.chatId,t?"message.updated":"message.created",a),a})}function Tu(e){const t=ud(e.result),n=ud(e.params),a=ud(n?.payload)??n??t;return Pu(ud(n?.turn)??ud(t?.turn))??lm(t?.text)??lm(t?.content)??lm(a?.text)??lm(a?.content)??lm(a?.delta)??lm(a?.message)??""}function Su(e){const t=ud(e.result),n=ud(e.params);return md(t?.turnId)??md(t?.turn_id)??md(n?.turnId)??md(n?.turn_id)??md(ud(t?.turn)?.id)??md(ud(n?.turn)?.id)}function Pu(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=ud(e);return"agentMessage"!==t?.type?null:lm(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Du(e){const t=ud(e.params),n=ud(e.result),a=ud(t?.event);return md(t?.threadId)??md(t?.thread_id)??md(n?.threadId)??md(n?.thread_id)??md(a?.threadId)??md(a?.thread_id)}function qu(e){const t=ud(e.params),n=ud(e.result),a=Ru(e);return md(t?.turnId)??md(n?.turnId)??md(a?.turnId)??Su(e)}function Lu(e){const t=ud(e.params),n=ud(e.result),a=Ru(e);return md(t?.itemId)??md(n?.itemId)??md(a?.id)}function Ru(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 $u(e){const t=ud(e.params),n=ud(t?.event);return lm(t?.delta)??lm(t?.text)??lm(t?.output)??lm(n?.delta)??lm(n?.text)}function Ou(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function _u(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function zu(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Uu(e){const t=ud(e.params);return md(ud(t?.error)?.message)??md(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function ju(e,t){const n=md(e?.status);return n?Ou(n):t.includes("failed")||t.includes("error")?"failed":zu({method:t})?"completed":"running"}function Fu(e){return lm(e.diff)??lm(e.unifiedDiff)??lm(e.unified_diff)??lm(e.patch)}function Bu(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Gu(e){if(Array.isArray(e))return e.map(cm)}function Hu(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Ku(e){const t=Ou(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Wu(e){return Ou(e.method??"").includes("start")}function Vu(e){const t=Ou(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Qu(e,t=e){const n=Yu(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=Yu(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=Yu(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}([Yu(e,["input_tokens","inputTokens"]),Yu(e,["output_tokens","outputTokens"]),Yu(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 Ju(e,t=0){if(t>4)return;const n=ud(e);if(!n)return;const a=Ou(md(n.type)??""),r=Ou(md(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Ju(n[i],t+1);if(e)return e}}function Xu(e,t){for(const n of t){const t=ud(e[n]);if(t)return t}}function Yu(e,t){for(const n of t){const t=Zu(e[n]);if(void 0!==t)return t}}function Zu(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function em(e){return Array.isArray(e)?e.map(e=>ud(e)).filter(e=>!!e).map(e=>({header:md(e.header),id:md(e.id)??_t(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:tm(e.options),question:md(e.question)??md(e.header)??"Answer",selectionLimit:Hu(e.selectionLimit)??Hu(e.selection_limit)})):[]}function tm(e){return Array.isArray(e)?e.map(e=>ud(e)).filter(e=>!!e).map(e=>({description:md(e.description),label:md(e.label)??md(e.value)??""})).filter(e=>e.label):[]}function nm(e){return"userInput"===e.kind?md(e.message)??"Codex needs more information before it can continue.":md(e.reason)??md(e.command)??"Codex needs approval before it can continue."}function am(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function rm(e,t,n){const a=await Wo.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=dm(e,r.requestId),a=gl.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),gl.delete(t)}Au(e,"message.updated",mm(await Wo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:om(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function im(e,t,n){const a=await Wo.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)Au(e,"message.updated",mm(await Wo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function sm(e){return(await Wo.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function om(e,t){return um({...ud(e)??{},...t})}function dm(e,t){return`${e}:${t}`}function cm(e){return JSON.parse(JSON.stringify(e))}function lm(e){return"string"==typeof e&&e.length>0?e:void 0}function um(e){return JSON.parse(JSON.stringify(e))}function mm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function hm(e){return{...e,collaborationMode:Dl(e.collaborationMode),permissionMode:Ll(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function fm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function pm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function gm(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=fm(md(r)??"");if(e)return e}const a=ud(t.thread);return a?gm(a):null}async function vm(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function wm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function xm(e){return Array.isArray(e)?e.map(e=>ud(e)).filter(e=>!!e):null}async function ym(e,t){Au(e,"chat.updated",hm(await Wo.chat.update({where:{id:e},data:{title:t}})))}var bm=xn({action:()=>Im,loader:()=>Nm});async function Nm({request:e}){try{return qo(e,["GET"]),await Xo(e),Po(await Cl())}catch(t){return Uo(t)}}async function Im({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Lo(e);return Po(await async function(e){const t=await Wo.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new So(400,"Account not found.");if("CONNECTED"!==t.status)throw new So(400,"Authenticate the account before starting a chat.");return Wo.chat.create({data:{accountId:e.accountId,workingDirectory:ol(e.workingDirectory),model:void 0===e.model?void 0:Ml(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Tl(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Sl(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Pl(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:ql(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:Ro(t.accountId,"accountId",{required:!0}),workingDirectory:Ro(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Ro(t.model,"model",{maxLength:160}),reasoningEffort:km(t.reasoningEffort,"reasoningEffort"),serviceTier:km(t.serviceTier,"serviceTier"),collaborationMode:km(t.collaborationMode,"collaborationMode"),permissionMode:km(t.permissionMode,"permissionMode"),title:Ro(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Uo(t)}}function km(e,t){return null===e?null:Ro(e,t,{maxLength:80})}var Cm=xn({action:()=>Em,loader:()=>Am});async function Am({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Po(await Al(zo(t,"chatId")))}catch(n){return Uo(n)}}async function Em({request:e,params:t}){try{await Xo(e);const n=zo(t,"chatId");if("PATCH"===e.method){const t=await Lo(e);return Po(await El(n,{accountId:Ro(t.accountId,"accountId"),model:null===t.model?null:Ro(t.model,"model",{maxLength:160}),reasoningEffort:Mm(t.reasoningEffort,"reasoningEffort"),serviceTier:Mm(t.serviceTier,"serviceTier"),collaborationMode:Mm(t.collaborationMode,"collaborationMode"),permissionMode:Mm(t.permissionMode,"permissionMode"),title:Ro(t.title,"title",{maxLength:160}),workingDirectory:Ro(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Po(await async function(e){return await Al(e),Wo.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));Do(e.method)}catch(n){return Uo(n)}}function Mm(e,t){return null===e?null:Ro(e,t,{maxLength:80})}var Tm=xn({loader:()=>Sm});async function Sm({request:e,params:t}){try{return qo(e,["GET"]),await Xo(e),Po(await async function(e){const t=await Al(e);return t.externalThreadId?{usage:await fc(t.id,t.externalThreadId)}:{usage:null}}(zo(t,"chatId")))}catch(n){return Uo(n)}}var Pm=xn({loader:()=>Dm});async function Dm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new So(400,"path is required.");return Po(await ml(zo(t,"chatId"),a,_o(n,"line",0)||null))}catch(n){return Uo(n)}}var qm=vn(on);async function Lm(e){const t=await $m(e),n=await Om(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await _m(t.cwd),r=await zm(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 zm(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Um(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 Rm(e,t){const n=await $m(e);if("RUNNING"===n.status)throw new So(409,"Git actions are disabled while Codex is running.");if(!(await Om(n.cwd)))throw new So(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=jm(t.branch);a=await Um(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=jm(t.branch);await Um(n.cwd,["check-ref-format","--branch",e]),a=await Um(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new So(400,"Commit message is required.");await Um(n.cwd,["add","-A"]),a=await Um(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Um(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new So(400,"Unsupported git action.");a=await zm(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Um(n.cwd,["push"]):await async function(e){await Um(e,["remote","get-url","origin"]);const t=await _m(e);if(!t)throw new So(400,"Cannot push while detached from a branch.");return Um(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Bm(t.action),output:a,status:await Lm(e)}}async function $m(e){const t=await Wo.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new So(404,"Chat not found.");if(!t.workingDirectory)throw new So(400,"Chat does not have a working directory.");return{cwd:ol(t.workingDirectory),status:t.status}}async function Om(e){return zm(e,["rev-parse","--show-toplevel"])}async function _m(e){return await zm(e,["symbolic-ref","--quiet","--short","HEAD"])??await zm(e,["rev-parse","--short","HEAD"])}async function zm(e,t){try{return await Um(e,t)}catch{return null}}async function Um(e,t){try{const n=await qm("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Fm(n.stdout,n.stderr)}catch(n){throw new So(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Fm("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 jm(e){const t=e?.trim();if(!t)throw new So(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new So(400,"Branch name is invalid.");return t}function Fm(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Bm(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 Gm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=zo(t,"chatId"),a=zo(t,"operation"),r=new URL(e.url);if("status"===a)return Po(await Lm(n));if("branches"===a)return Po(await async function(e){const t=await $m(e);if(!(await Om(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await _m(t.cwd);return{branches:(await Um(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 zm(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Po(await async function(e,t){const n=await $m(e);if(!(await Om(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Fm(await zm(n.cwd,["diff","--stat",...a]),await zm(n.cwd,["diff","--cached","--stat",...a]));return{diff:Fm(await zm(n.cwd,["diff","--no-ext-diff",...a]),await zm(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new So(404,"Git operation not found.")}catch(n){return Uo(n)}}async function Hm({request:e,params:t}){try{if(qo(e,["POST"]),await Xo(e),"action"!==zo(t,"operation"))throw new So(404,"Git operation not found.");const n=await Lo(e),a={action:Km(n.action),branch:Ro(n.branch,"branch",{maxLength:240}),message:Ro(n.message,"message",{maxLength:5e3})};return Po(await Rm(zo(t,"chatId"),a))}catch(n){return Uo(n)}}function Km(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new So(400,"action is invalid.")}async function Wm({request:e,params:t}){try{qo(e,["GET"]),await Xo(e);const n=new URL(e.url);return Po(await _l(zo(t,"chatId"),_o(n,"afterSequence",0),_o(n,"limit",50)))}catch(n){return Uo(n)}}async function Vm({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=await Lo(e),a={content:Jm(n.content),accountId:Ro(n.accountId,"accountId"),attachments:Xm(n.attachments),collaborationMode:th(n.collaborationMode,"collaborationMode"),delivery:Qm(n.delivery),metadata:Oo(n.metadata,"metadata")};return Po(await Jl(zo(t,"chatId"),a),{status:201})}catch(n){return Uo(n)}}function Qm(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new So(400,"delivery is invalid.")}}function Jm(e){if(null==e)return"";if("string"!=typeof e)throw new So(400,"content must be a string.");if(e.length>4e4)throw new So(400,"content must be 40000 characters or fewer.");return e.trim()}function Xm(e){if(void 0!==e){if(!Array.isArray(e))throw new So(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new So(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Ym(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Zm(n.mimeType,`attachments[${t}].mimeType`,80),name:Zm(n.name,`attachments[${t}].name`,160),size:eh(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Zm(n.name,`attachments[${t}].name`,160),path:Ym(n.path,`attachments[${t}].path`,4096),size:eh(n.size,`attachments[${t}].size`)};throw new So(400,`attachments[${t}].kind is invalid.`)})}}function Ym(e,t,n){if("string"!=typeof e||!e.trim())throw new So(400,`${t} is required.`);if(e.length>n)throw new So(400,`${t} is too large.`);return e}function Zm(e,t,n){if(null!=e){if("string"!=typeof e)throw new So(400,`${t} must be a string.`);if(e.length>n)throw new So(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function eh(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new So(400,`${t} must be a positive number.`);return e}}function th(e,t){return null===e?null:Ro(e,t,{maxLength:80})}async function nh({request:e,params:t}){try{return qo(e,["POST"]),await Xo(e),Po(await async function(e){const t=await Al(e);if("RUNNING"!==t.status)throw new So(409,"There is no running task to stop.");const n=await Wo.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new So(409,"There is no active run to stop.");const a=new Date;await Wo.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=vl.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await su(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."}}(zo(t,"chatId")))}catch(n){return Uo(n)}}async function ah({request:e,params:t}){try{qo(e,["POST"]),await Xo(e);const n=await Lo(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new So(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Po(await Ql(zo(t,"chatId"),zo(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Uo(n)}}async function rh({request:e}){try{return qo(e,["GET"]),await Xo(e),Po(await il(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Uo(t)}}async function ih({request:e}){try{qo(e,["POST"]),await Xo(e);const t=await Lo(e),n={parentPath:Ro(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Ro(t.name,"name",{required:!0,maxLength:255})};return Po(await sl(n.parentPath,n.name),{status:201})}catch(t){return Uo(t)}}var sh={entry:{module:"/assets/entry.client-BlQXdBHx.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/react-dom-CMuFyqmq.js"],css:[]},routes:{root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!0,module:"/assets/root-feKzGV0p.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/react-dom-CMuFyqmq.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js"],css:["/assets/root-Bh_1OXF0.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/connect-CHSFTXwk.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/label-C7i5Qt-O.js","/assets/session-provider-2Ozr-CuV.js"],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/favicon.ico-BGeA4faG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/app-layout-d99dmiup.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-Dl69tJhv.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/home-Bahc85Gk.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-Dl69tJhv.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/chat-B5FboIxH.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-Dl69tJhv.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.js"],css:["/assets/app-shell-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/health-OjIoaxn7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.status-FGYJfLVM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.exchange-CkPWDiGV.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.session-DOeXMy_2.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts-x_2c5-qG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.export-CwjXUcyG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-Km-76sRE.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-BksU0sQ7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-ChGZGvfx.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.models-DGbCmT_9.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.rate-limits-DZh4HPLO.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate-Bp51NHGy.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate.callback-DLgNMRyd.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats-DZ_6Q7rY.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId-BEX87qHo.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.context-v4G0lNKq.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.files-BrN7O-wM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.git._operation-CiUW8Knm.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.messages-cDawTuvN.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.interrupt-2DlVPDlX.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.server-requests._requestId.respond-CTlCffOk.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.workspaces.directories-nVoleT74.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-fe1036ff.js",version:"fe1036ff",sri:void 0},oh="build/client",dh="/",ch={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},lh=!0,uh=!1,mh=[],hh={mode:"lazy",manifestPath:"/__manifest"},fh="/",ph={module:yn},gh={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:sa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:wa},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:ya},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:ko},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Ao},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Mo},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:jo},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:id},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:od},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:cd},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:Od},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:jd},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Bd},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Hd},"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:Vd},"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:nc},"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:rc},"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:sc},"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:dc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:bm},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Cm},"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:Tm},"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:Pm},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,module:xn({action:()=>Hm,loader:()=>Gm})},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,module:xn({action:()=>Vm,loader:()=>Wm})},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,module:xn({action:()=>nh})},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,module:xn({action:()=>ah})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:xn({action:()=>ih,loader:()=>rh})}},vh=!1;export{vh as allowedActionOrigins,sh as assets,oh as assetsBuildDirectory,dh as basename,ph as entry,ch as future,uh as isSpaMode,mh as prerender,fh as publicPath,hh as routeDiscovery,gh as routes,lh as ssr};