codexui-android 0.1.83 → 0.1.85

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.
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-Ctw55jX6.js","assets/ThreadConversation-BsN7bN3q.css","assets/ReviewPane-nTMVVMpp.js","assets/ReviewPane-CyugWwTM.css","assets/SkillsHub-BqjWaUSP.js","assets/SkillsHub-Bg1Le103.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-BNp42k0F.js","assets/ThreadConversation-BsN7bN3q.css","assets/ReviewPane-BYXF27M-.js","assets/ReviewPane-CyugWwTM.css","assets/SkillsHub-GpJ2Lrm3.js","assets/SkillsHub-Bg1Le103.css"])))=>i.map(i=>d[i]);
2
2
  (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();/**
3
3
  * @vue/shared v3.5.32
4
4
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -80,7 +80,7 @@ ${P}`:s.value=P,Jt(()=>{var z;return(z=Re.value)==null?void 0:z.focus()}))}funct
80
80
 
81
81
  `)&&Tn(b,`${et}
82
82
 
83
- `)}Xc(c);const ho=dl(c);ho&&(Js(b,ho),yt(b,{label:"Running command",details:[((yl=ho.commandExecution)==null?void 0:yl.command)??""]}));const bs=Zc(c);if(bs){const et=(a.value[b]??[]).find(Wn=>Wn.id===bs.itemId);et!=null&&et.commandExecution&&Js(b,{...et,commandExecution:{...et.commandExecution,aggregatedOutput:`${et.commandExecution.aggregatedOutput}${bs.delta}`}})}const Wo=eu(c);Wo&&Js(b,Wo);const ws=fl(c);if(ws&&Wt(b,ws),ru(c)&&(we&&n.value&&Bo(n.value,{scrollTop:0,isAtBottom:!0,scrollRatio:1}),Hn(b)),c.method==="turn/completed"){we=!1,Hn(b),a.value[b]&&(a.value=bt(a.value,b));const et=z(c);et&&(It(et,!1),yt(et,null),xn(et),Be||(pn(et),Xi(et)))}}function Ki(c){if(c.method==="thread/tokenUsage/updated")return;const p=z(c);p&&Le.add(p);const g=c.method;(g.startsWith("thread/")||g.startsWith("turn/")||g.startsWith("item/"))&&(ne=!0),!(X!==null||typeof window>"u")&&(X=window.setTimeout(()=>{X=null,Nr()},Ed))}async function Ho(c){if(!ke){ke=!0;try{const p=await Ms(),g=[];for(const b of p.order){const j=Xo(b);g.includes(j)||g.push(j)}if(g.length>0){const b=$l(g,c);es(ee.value,b)||(ee.value=b,ci(ee.value))}if(Object.keys(p.labels).length>0){const b={...ve.value};let j=!1;for(const[B,U]of Object.entries(p.labels)){const G=Xo(B);b[G]!==U&&(b[G]=U,j=!0)}j&&(ve.value=b,Ad(b))}}catch{}}}async function ou(){if(!(Object.keys(Ye.value).length>0))try{const c=await FM();Object.keys(c.titles).length>0&&(Ye.value=c.titles)}catch{}}async function su(c,p,g){if(Ye.value[c])return;const b=p.trim();if(!b)return;const j=b.length>300?b.slice(0,300):b;try{const B=await qM(j,g);if(!B||Ye.value[c])return;Ye.value={...Ye.value,[c]:B},qt(),bd(c,B)}catch{}}async function iu(c){try{const p=await Ms();if(p.order.length===0)return c;const g=new Set(p.order.map(b=>Xo(b)));return c.filter(b=>g.has(b.projectName))}catch{return c}}async function vs(){var p;te.value||(Y.value=!0);const c=performance.now();try{const[g]=await Zd({name:"loadThreads",op:"ui.load.threads"},()=>Promise.all([ZR(),ou()]));await Ho(g);const b=await iu(g),j=$l(ee.value,b);es(ee.value,j)||(ee.value=j,ci(ee.value));const B=xd(b,ee.value);gn(new Set(Lr(B).map(Be=>Be.id)));const U=YD(t.value,B,u.value);t.value=Ll(t.value,U),u.value=Kt(u.value,new Set(Lr(t.value).map(Be=>Be.id))),qt(),te.value=!0;const G=Lr(e.value);lr(G),G.some(Be=>Be.id===n.value)||ot(((p=G[0])==null?void 0:p.id)??"");const je=Math.round(performance.now()-c);pr({category:"threads",message:`loaded ${G.length} threads in ${je}ms`,data:{projectCount:b.length},level:"info"})}finally{Y.value=!1}}async function Qr(c,p={}){var B;if(!c)return;const g=Re.value[c]===!0,b=p.silent!==!0&&!g;b&&(Se.value=!0);const j=performance.now();try{const G=De.value[c]!==!0?md(c):null,re=ag(c),[je,Be]=await Zd({name:"thread.loadMessages",op:"ui.load",attributes:{threadId:c,silent:p.silent??!1}},()=>Promise.all([G,re]));je&&(Qt(c,je.model),De.value={...De.value,[c]:!0});const{messages:ct,inProgress:gt,activeTurnId:nn,turnIndexByTurnId:ys}=Be;Bn(c,ct),Vi(c,ys),Ys(c);const _s=r.value[c]??[],ea=LD(_s,ct,{preserveMissing:p.silent===!0});vn(c,ea);const ho=s.value[c]??[],bs=jD(ho,ct);Qn(c,bs),tu(c,ct),nu(c,ct),Re.value={...Re.value,[c]:!0};const Wo=cr(c);Wo&&(Pe.value={...Pe.value,[c]:Wo}),It(c,gt),nn?_e.value={..._e.value,[c]:nn}:_e.value[c]&&(_e.value=bt(_e.value,c)),gt||br(c),mn(c);const ws=Math.round(performance.now()-j),Vo=$.value.find(ni=>ni.id===c),Ss=((B=Vo==null?void 0:Vo.cwd)==null?void 0:B.split("/").pop())??"unknown";ek("thread",{id:c,messageCount:ct.length,loadMs:ws,projectFolder:Ss}),pr({category:"thread",message:`loaded ${ct.length} msgs in ${ws}ms`,data:{threadId:c,projectFolder:Ss},level:"info"})}finally{b&&(Se.value=!1)}}async function Yi(c,p={}){c&&Re.value[c]!==!0&&await Qr(c,p)}async function Xs(){var c,p;try{const g=((p=(c=F.value)==null?void 0:c.cwd)==null?void 0:p.trim())??"";lt.value=await HM(g?[g]:void 0)}catch{}}async function au(){try{Xn(await cg())}catch{}}async function lu(c={}){k.value="";const p=c.includeSelectedThreadMessages!==!1,g=c.awaitAncillaryRefreshes===!0;try{await vs();const b=Promise.allSettled([zr(),bn(),fo(),Xs(),au()]).then(()=>{});p&&await Qr(n.value),g&&await b}catch(b){k.value=b instanceof Error?b.message:"Unknown application error"}}async function cu(c){ot(c);try{await Promise.all([Qr(c),Xs()])}catch(p){k.value=p instanceof Error?p.message:"Unknown application error"}}async function uu(c){try{await fM(c),await vs(),n.value===c&&await Qr(n.value)}catch(p){k.value=p instanceof Error?p.message:"Unknown application error"}}async function hl(c,p){const g=p.trim();if(!(!c||!g))try{await pM(c,g),Ye.value={...Ye.value,[c]:g},qt(),bd(c,g)}catch(b){k.value=b instanceof Error?b.message:"Unknown application error"}}async function du(c){var U,G;const p=c.trim();if(!p)return"";const g=Lr(t.value).find(re=>re.id===p),b=((U=g==null?void 0:g.cwd)==null?void 0:U.trim())??"",j=((G=g==null?void 0:g.title)==null?void 0:G.trim())??"Forked chat",B=_t(p);k.value="";try{const re=await dg(p,b||void 0,B||void 0),je=re.threadId.trim();return je?(vr(je,b,j),Qt(je,re.model),De.value={...De.value,[je]:!0},ot(je),await vs(),await Qr(je),je):""}catch(re){return k.value=re instanceof Error?re.message:"Unknown application error",""}}async function fu(c,p){var U;const g=c.trim();if(!g||!Number.isInteger(p)||p<0)return"";if(u.value[g]===!0)return k.value="Finish the current turn before forking from a response.","";if(Re.value[g]!==!0)try{await Qr(g)}catch(G){return k.value=G instanceof Error?G.message:"Unknown application error",""}const b=r.value[g]??[];let j=-1;for(const G of b)typeof G.turnIndex=="number"&&Number.isFinite(G.turnIndex)&&(j=Math.max(j,G.turnIndex));if(j>=0&&p>j)return"";const B=Lr(t.value).find(G=>G.id===g)??null;try{k.value="";const G=await dg(g),re=G.threadId.trim();if(!re)return"";const je=G.cwd.trim()||((U=B==null?void 0:B.cwd)==null?void 0:U.trim())||"",Be=XD((B==null?void 0:B.title)||(B==null?void 0:B.preview)||"Untitled thread");vr(re,je,Be),Qt(re,G.model),vn(re,G.messages),Re.value={...Re.value,[re]:!0},De.value={...De.value,[re]:!0},an(re),Qn(re,[]),Hn(re),a.value[re]&&(a.value=bt(a.value,re)),Ht(re,null),yt(re,null),St(re,null),It(re,!1);const ct=j-p;if(ct>0){const gt=await gd(re,ct);vn(re,gt)}return await hl(re,Be),ot(re),vs().catch(()=>{}),re}catch(G){return k.value=G instanceof Error?G.message:"Unknown application error",""}}async function pu(c,p,g=[],b=[],j=[]){if(!c||!p.trim()||g.length>0||b.length>0||j.length>0)return!1;const U=(Fe.value[c]??[]).filter(je=>je.method==="item/tool/requestUserInput");if(U.length!==1)return!1;const[G]=U,re=Rn(G);return re.length!==1?!1:vl({id:G.id,result:{answers:{[re[0]]:{answers:[p.trim()]}}}})}async function Ji(c,p=[],g=[],b="steer",j=[],B){if(Ze.value)return;const U=n.value,G=c.trim();if(!U||!G&&p.length===0&&j.length===0||await pu(U,G,p,g,j))return;pr({category:"ui.action",message:"send message",data:{threadId:U,hasImages:p.length>0,skillCount:g.length},level:"info"});const re=u.value[U]===!0;if(re&&b==="queue"){const je=d.value[U]??[],Be=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ct=[...je],gt=typeof B=="number"?Math.max(0,Math.min(B,ct.length)):ct.length;ct.splice(gt,0,{id:Be,text:G,imageUrls:p,skills:g,fileAttachments:j,collaborationMode:M.value}),d.value={...d.value,[U]:ct};return}if(re){we=!0,Zr(U,G,p,g,j).catch(je=>{const Be=je instanceof Error?je.message:"Unknown application error";St(U,Be),k.value=Be});return}k.value="",we=!0,Ht(U,null),yt(U,{label:"Thinking",details:gr(_t(U),V.value,M.value)}),St(U,null),It(U,!0);try{await Zr(U,G,p,g,j)}catch(je){we=!1,It(U,!1),yt(U,null);const Be=je instanceof Error?je.message:"Unknown application error";throw St(U,Be),k.value=Be,je}}async function hu(c,p,g=[],b=[],j=[]){if(Ze.value)return"";const B=c.trim(),U=p.trim(),G=O.value.trim();if(!B&&g.length===0&&j.length===0)return"";he.value=!0,k.value="";let re="";try{try{const gt=await ug(U||void 0,G||void 0);re=gt.threadId,Qt(re,gt.model)}catch(gt){if(G&&G!==Or&&Nl(gt)){await zt();const nn=await ug(U||void 0,Or);re=nn.threadId,Qt(re,nn.model)}else throw gt}if(!re)return"";vr(re,U,B||"[Image]"),Cn(re),De.value={...De.value,[re]:!0},ot(re),we=!0,Ht(re,null),yt(re,{label:"Thinking",details:gr(O.value,V.value,M.value)}),St(re,null),It(re,!0);const je=re,Be=U||null,ct=B;return Zr(re,B,g,b,j).catch(gt=>{we=!1,It(re,!1),yt(re,null);const nn=gt instanceof Error?gt.message:"Unknown application error";St(re,nn),k.value=nn}).finally(()=>{he.value=!1}),su(je,ct,Be),re}catch(je){we=!1,re&&(It(re,!1),yt(re,null));const Be=je instanceof Error?je.message:"Unknown application error";throw re&&St(re,Be),k.value=Be,he.value=!1,je}}async function Zr(c,p,g=[],b=[],j=[]){const B=V.value,U=M.value,G=p.trim(),re=b.map(Be=>({name:Be.name,path:Be.path})),je=j.map(Be=>({...Be}));kt(c,{text:G,imageUrls:[...g],skills:re,fileAttachments:je,effort:B,collaborationMode:U,fallbackRetried:!1});try{if(De.value[c]!==!0){const gt=await md(c);Qt(c,gt.model)}const Be=_t(c);let ct="";try{ct=await vd(c,p,g,Be||void 0,B||void 0,b.length>0?b:void 0,j,U)}catch(gt){if(Be&&Be!==Or&&Nl(gt))await zt(c),kt(c,{text:G,imageUrls:[...g],skills:re,fileAttachments:je,effort:B,collaborationMode:U,fallbackRetried:!0}),ct=await vd(c,p,g,Or,B||void 0,b.length>0?b:void 0,j,U);else throw gt}ct&&(_e.value={..._e.value,[c]:ct}),De.value={...De.value,[c]:!0},Le.add(c),ne=!0,await Nr(),wn(c)}catch(Be){throw Be}}async function Xi(c){if(f.value[c]===!0)return;const p=d.value[c];if(!p||p.length===0)return;f.value={...f.value,[c]:!0};const[g,...b]=p;d.value=b.length>0?{...d.value,[c]:b}:bt(d.value,c),he.value=!0,k.value="",we=!0,Ht(c,null),yt(c,{label:"Thinking",details:gr(_t(c),V.value,g.collaborationMode)}),St(c,null),It(c,!0);try{ir(g.collaborationMode),await Zr(c,g.text,g.imageUrls,g.skills,g.fileAttachments)}catch{It(c,!1),yt(c,null)}finally{f.value=bt(f.value,c),he.value=!1}}async function Qs(){const c=n.value;if(!c||u.value[c]!==!0||Te.value[c]===!0)return;let p=_e.value[c];if(!p){const{activeTurnId:g}=await ag(c);p=g,p&&(_e.value={..._e.value,[c]:p})}if(!p)throw new Error("Could not determine active turn id for interrupt");Ue.value=!0,k.value="";try{await yM(c,p),It(c,!1),yt(c,null),St(c,null),_e.value[c]&&(_e.value=bt(_e.value,c)),Le.add(c),ne=!0,await Nr()}catch(g){const b=g instanceof Error?g.message:"Failed to interrupt active turn";St(c,b),k.value=b}finally{Ue.value=!1}}async function ml(c){var G,re;const p=n.value;if(!p||T.value||!c.trim())return;const g=r.value[p]??[],b=g.find(je=>je.turnId===c),j=typeof(b==null?void 0:b.turnIndex)=="number"?b.turnIndex:-1;if(j<0)return;const B=g.reduce((je,Be)=>typeof Be.turnIndex=="number"&&Be.turnIndex>je?Be.turnIndex:je,-1);if(B<0||j>B)return;const U=B-j+1;if(!(U<1)){T.value=!0,k.value="";try{const je=((re=(G=F.value)==null?void 0:G.cwd)==null?void 0:re.trim())??"";je&&await hM(p,c,je);const Be=await gd(p,U);vn(p,Be),Qn(p,[]),Hn(p),a.value[p]&&(a.value=bt(a.value,p)),Ht(p,null),yt(p,null),St(p,null),ne=!0,await Nr()}catch(je){k.value=je instanceof Error?je.message:"Failed to rollback thread"}finally{T.value=!1}}}let Zs=null;async function mu(c,p){try{const g=await Ms(),b={...g.labels};let j=!1;for(const B of g.order){if(Xo(B)!==c)continue;const U=p.trim();U.length===0?b[B]!==void 0&&(delete b[B],j=!0):b[B]!==U&&(b[B]=U,j=!0)}j&&await yd({order:g.order,labels:b,active:g.active})}catch{}}function gu(c,p){c.length===0||(ve.value[c]??"")===p||(ve.value={...ve.value,[c]:p},Ad(ve.value),Zs!==null&&clearTimeout(Zs),Zs=setTimeout(()=>{Zs=null,mu(c,p)},500))}async function vu(c){var B;if(c.length===0)return;const p=ee.value.filter(U=>U!==c);if(es(ee.value,p)||(ee.value=p,ci(ee.value)),t.value=t.value.filter(U=>U.projectName!==c),ve.value[c]!==void 0){const U={...ve.value};delete U[c],ve.value=U,Ad(U)}qt();const g=Lr(e.value);lr(g),g.some(U=>U.id===n.value)||ot(((B=g[0])==null?void 0:B.id)??"");const j=new Set;try{const U=await Ms();for(const G of U.order)Xo(G)===c&&j.add(G);for(const G of U.active)Xo(G)===c&&j.add(G);for(const G of Object.keys(U.labels))Xo(G)===c&&j.add(G)}catch{}if(j.size>0)try{const U=await Ms(),G=U.order.filter(Be=>!j.has(Be)),re=U.active.filter(Be=>!j.has(Be)),je=re.length===0&&G.length>0?[G[0]]:re;await yd({order:G,labels:VD(U.labels,j),active:je});return}catch{}await ei()}function yu(c,p){if(c.length===0||t.value.length===0)return;const g=t.value.map(re=>re.projectName),b=g.indexOf(c);if(b===-1)return;const j=Math.max(0,Math.min(p,g.length-1)),B=PD(g,b,j);if(B===g)return;const U=$l(B,t.value);ee.value=U,ci(ee.value);const G=xd(t.value,ee.value);t.value=Ll(t.value,G),qt(),ei()}function _u(c){const p=c.trim();if(!p)return;const g=[p,...ee.value.filter(j=>j!==p)];if(es(ee.value,g))return;ee.value=g,ci(ee.value);const b=xd(t.value,ee.value);t.value=Ll(t.value,b),qt(),ei()}async function ei(){var c,p;try{const g=await Ms(),b=new Map;for(const U of g.order){const G=Xo(U);b.has(G)||b.set(G,U)}for(const U of t.value){const G=((p=(c=U.threads[0])==null?void 0:c.cwd)==null?void 0:p.trim())??"";G&&b.set(U.projectName,G)}const j=[];for(const U of ee.value){const G=b.get(U);G&&!j.includes(G)&&j.push(G)}for(const U of g.order)j.includes(U)||j.push(U);const B=g.active.filter(U=>j.includes(U));B.length===0&&j.length>0&&B.push(j[0]),await yd({order:j,labels:g.labels,active:B})}catch{}}async function Nr(){if(q.value){typeof window<"u"&&X===null&&(X=window.setTimeout(()=>{X=null,Nr()},Ed));return}q.value=!0;const c=ne,p=new Set(Le);ne=!1,Le.clear();try{c&&await vs();const g=n.value;if(!g)return;const b=p.has(g),j=u.value[g]===!0,B=cr(g),U=Pe.value[g]??"",G=B.length>0&&B!==U;(b||j||G||c)&&await Qr(g,{silent:!0})}catch{}finally{q.value=!1,(ne||Le.size>0)&&typeof window<"u"&&X===null&&(X=window.setTimeout(()=>{X=null,Nr()},Ed))}}async function ti(){await gl(),ne=!0,n.value&&Le.add(n.value),await Nr()}function bu(){typeof window>"u"||Z||(gl(),Z=sM(c=>{if(c.method==="ready"){Un(),ti();return}pl(c),Ki(c)}))}async function gl(){try{const p=(await aM()).map(g=>Pt(g)).filter(g=>g!==null);Vc(p)}catch{}}async function vl(c){try{return await iM(c.id,{result:c.result,error:c.error}),ll(c.id),!0}catch(p){return k.value=p instanceof Error?p.message:"Failed to reply to server request",!1}}function wu(){if(Z&&(Z(),Z=null),ne=!1,Le.clear(),xe.clear(),X!==null&&typeof window<"u"&&(window.clearTimeout(X),X=null),ae!==null&&typeof window<"u"&&(window.clearTimeout(ae),ae=null),typeof window<"u")for(const c of me.values())window.clearTimeout(c);me.clear(),we=!1,r.value={},o.value={},s.value={},i.value={},a.value={},l.value={},Q.value={},Me.value={},pe.value={},qe.value={},_e.value={},Te.value={},le.value={},Ee.value={},d.value={},f.value={},Ge.value=null,Ke.value={}}const Su=ie(()=>{const c=n.value;return c?d.value[c]??[]:[]});function Qi(c){const p=n.value;if(!p)return;const g=d.value[p];if(!g)return;const b=g.filter(j=>j.id!==c);d.value=b.length>0?{...d.value,[p]:b}:bt(d.value,p)}function Zi(c){const p=n.value;if(!p)return;const g=d.value[p];if(!g)return;const b=g.find(j=>j.id===c);b&&(Qi(c),ir(b.collaborationMode),Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments))}function Tu(c){ot(c)}return{projectGroups:e,projectDisplayNameById:ve,selectedThread:F,selectedThreadTokenUsage:it,selectedThreadScrollState:J,isSelectedThreadInterruptPending:ce,selectedThreadServerRequests:Oe,selectedLiveOverlay:We,codexQuota:st,selectedThreadId:n,availableCollaborationModes:E,availableModelIds:v,selectedCollaborationMode:M,selectedModelId:O,selectedReasoningEffort:V,selectedSpeedMode:K,installedSkills:lt,accountRateLimitSnapshots:Xe,messages:$t,isLoadingThreads:Y,isLoadingMessages:Se,isSendingMessage:he,isInterruptingTurn:Ue,isUpdatingSpeedMode:Ze,isRollingBack:T,error:k,refreshAll:lu,refreshSkills:Xs,selectThread:cu,loadMessages:Qr,ensureThreadMessagesLoaded:Yi,setThreadScrollState:Bo,archiveThreadById:uu,renameThreadById:hl,forkThreadById:du,forkThreadFromTurn:fu,rollbackSelectedThread:ml,sendMessageToSelectedThread:Ji,sendMessageToNewThread:hu,interruptSelectedThreadTurn:Qs,selectedThreadQueuedMessages:Su,removeQueuedMessage:Qi,steerQueuedMessage:Zi,setSelectedCollaborationMode:ir,setSelectedModelId:fn,setSelectedReasoningEffort:uo,updateSelectedSpeedMode:ms,respondToPendingServerRequest:vl,renameProject:gu,removeProject:vu,reorderProject:yu,pinProjectToTop:_u,startPolling:bu,stopPolling:wu,primeSelectedThread:Tu}}const ZD={class:"sidebar-root"},ej={class:"sidebar-scrollable"},tj=["aria-pressed"],nj={key:1,class:"sidebar-search-bar"},rj={class:"sidebar-settings-account-section"},oj={class:"sidebar-settings-account-header"},sj={class:"sidebar-settings-account-header-main"},ij=["aria-expanded","title"],aj={class:"sidebar-settings-account-collapse-icon"},lj={class:"sidebar-settings-account-count"},cj=["disabled"],uj={key:0,class:"sidebar-settings-account-error"},dj={key:1,class:"sidebar-settings-account-empty"},fj={key:2,class:"sidebar-settings-account-list"},pj=["title","onMouseenter","onMouseleave"],hj={class:"sidebar-settings-account-main"},mj={class:"sidebar-settings-account-email"},gj={class:"sidebar-settings-account-meta"},vj={class:"sidebar-settings-account-quota"},yj={class:"sidebar-settings-account-id"},_j={class:"sidebar-settings-account-actions"},bj=["disabled","onClick"],wj=["disabled","onClick"],Sj=["title"],Tj=["title"],Ej={class:"sidebar-settings-value"},kj=["title"],Ij={class:"sidebar-settings-value"},Cj=["title"],Aj={class:"sidebar-settings-value"},xj=["title"],Rj=["title"],Mj=["title"],Pj={class:"sidebar-settings-row sidebar-settings-row--select",title:"Choose the API provider for the Codex backend"},$j=["value","disabled"],Nj={key:0,class:"sidebar-settings-row sidebar-settings-row--input"},Oj={class:"sidebar-settings-key-group"},Lj={class:"sidebar-settings-key-masked"},Dj=["disabled"],jj=["disabled"],Fj={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},Bj={class:"sidebar-settings-key-group"},Uj={class:"sidebar-settings-key-group"},qj=["disabled"],Hj=["title"],Wj={class:"sidebar-settings-value"},Vj={key:2,class:"sidebar-settings-telegram-panel"},zj={class:"sidebar-settings-field"},Gj={class:"sidebar-settings-field"},Kj={key:0,class:"sidebar-settings-telegram-error"},Yj={class:"sidebar-settings-telegram-actions"},Jj=["disabled"],Xj=["data-state","title"],Qj=["data-state"],Zj={class:"sidebar-settings-context-meta"},eF={class:"sidebar-settings-rate-limits"},tF={class:"sidebar-settings-build-label","aria-label":"Worktree name and version"},nF={class:"sidebar-settings-button-version"},rF={class:"content-body"},oF={key:1,class:"content-grid content-grid-home"},sF={class:"new-thread-empty"},iF=["title"],aF=["onKeydown"],lF={class:"new-thread-open-folder-current"},cF=["title"],uF=["disabled"],dF={class:"new-thread-open-folder-actions"},fF={class:"new-thread-open-folder-toggle"},pF=["aria-pressed","disabled"],hF={key:0,class:"new-thread-open-folder-create"},mF={class:"new-thread-open-folder-create-composer"},gF=["onKeydown"],vF=["disabled"],yF={key:0,class:"new-thread-open-folder-error"},_F=["onKeydown"],bF={key:1,class:"new-thread-open-folder-error-actions"},wF={class:"new-thread-open-folder-error"},SF=["disabled"],TF={key:2,class:"new-thread-open-folder-status"},EF={key:3,class:"new-thread-open-folder-status"},kF={key:4,class:"new-thread-open-folder-list"},IF=["title","disabled","onClick"],CF={class:"new-thread-open-folder-item-name"},AF=["disabled","onClick"],xF={key:1,class:"new-thread-branch-select"},RF={class:"new-thread-branch-select-help"},MF={class:"worktree-init-status-title"},PF={class:"worktree-init-status-message"},$F={key:3,class:"new-thread-trending"},NF={class:"new-thread-trending-header"},OF={key:0,class:"new-thread-trending-empty"},LF={key:1,class:"new-thread-trending-empty"},DF={key:2,class:"new-thread-trending-list"},jF=["onClick"],FF=["title"],BF={class:"new-thread-trending-tip-name-owner"},UF={class:"new-thread-trending-tip-name-repo"},qF={key:1,class:"new-thread-trending-tip-name-repo"},HF={class:"new-thread-trending-tip-meta"},WF={class:"new-thread-trending-tip-description"},VF={class:"composer-with-queue"},zF={key:2,class:"content-grid"},GF={class:"content-thread"},KF={class:"composer-with-queue"},Pg="codex-web-local.sidebar-collapsed.v1",$g="codex-web-local.accounts-section-collapsed.v1",Ng="codex-web-local.send-with-enter.v1",Og="codex-web-local.in-progress-send-mode.v1",Lg="codex-web-local.dark-mode.v1",Dg="codex-web-local.dictation-click-to-toggle.v1",jg="codex-web-local.dictation-auto-send.v1",Fg="codex-web-local.dictation-language.v1",Bg="codex-web-local.github-trending-projects.v1",Ug="codex-web-local.chat-width.v1",YF=400,JF=In({__name:"App",setup(e){const t=Du(()=>ad(()=>import("./ThreadConversation-Ctw55jX6.js"),__vite__mapDeps([0,1]))),n=Du(()=>ad(()=>import("./ReviewPane-nTMVVMpp.js"),__vite__mapDeps([2,3]))),r=Du(()=>ad(()=>import("./SkillsHub-BqjWaUSP.js"),__vite__mapDeps([4,5]))),o="a77f",s="0.1.83",i={sendWithEnter:"When enabled, press Enter to send. When disabled, use Command+Enter to send.",inProgressSendMode:"If a turn is still running, choose whether a new prompt should steer the current turn or be queued.",appearance:"Switch between system theme, light mode, and dark mode.",chatWidth:"Choose how wide the conversation column and composer can grow on desktop screens.",dictationClickToToggle:"Use click-to-start and click-to-stop dictation instead of hold-to-talk.",dictationAutoSend:"Automatically send transcribed dictation when recording stops.",githubTrendingProjects:"Show or hide GitHub trending project cards on the new thread screen.",dictationLanguage:"Choose transcription language or keep auto-detect."},a={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},l={en:"english",zh:"chinese",de:"german",es:"spanish",ru:"russian",ko:"korean",fr:"french",ja:"japanese",pt:"portuguese",tr:"turkish",pl:"polish",ca:"catalan",nl:"dutch",ar:"arabic",sv:"swedish",it:"italian",id:"indonesian",hi:"hindi",fi:"finnish",vi:"vietnamese",he:"hebrew",uk:"ukrainian",el:"greek",ms:"malay",cs:"czech",ro:"romanian",da:"danish",hu:"hungarian",ta:"tamil",no:"norwegian",th:"thai",ur:"urdu",hr:"croatian",bg:"bulgarian",lt:"lithuanian",la:"latin",mi:"maori",ml:"malayalam",cy:"welsh",sk:"slovak",te:"telugu",fa:"persian",lv:"latvian",bn:"bengali",sr:"serbian",az:"azerbaijani",sl:"slovenian",kn:"kannada",et:"estonian",mk:"macedonian",br:"breton",eu:"basque",is:"icelandic",hy:"armenian",ne:"nepali",mn:"mongolian",bs:"bosnian",kk:"kazakh",sq:"albanian",sw:"swahili",gl:"galician",mr:"marathi",pa:"punjabi",si:"sinhala",km:"khmer",sn:"shona",yo:"yoruba",so:"somali",af:"afrikaans",oc:"occitan",ka:"georgian",be:"belarusian",tg:"tajik",sd:"sindhi",gu:"gujarati",am:"amharic",yi:"yiddish",lo:"lao",uz:"uzbek",fo:"faroese",ht:"haitian creole",ps:"pashto",tk:"turkmen",nn:"nynorsk",mt:"maltese",sa:"sanskrit",lb:"luxembourgish",my:"myanmar",bo:"tibetan",tl:"tagalog",mg:"malagasy",as:"assamese",tt:"tatar",haw:"hawaiian",ln:"lingala",ha:"hausa",ba:"bashkir",jw:"javanese",su:"sundanese",yue:"cantonese"},{projectGroups:u,projectDisplayNameById:d,selectedThread:f,selectedThreadTokenUsage:m,selectedThreadScrollState:v,selectedThreadServerRequests:E,selectedLiveOverlay:C,codexQuota:H,selectedThreadId:M,availableCollaborationModes:O,availableModelIds:V,selectedCollaborationMode:K,selectedModelId:de,selectedReasoningEffort:oe,selectedSpeedMode:ee,installedSkills:ve,accountRateLimitSnapshots:Pe,messages:Re,isLoadingThreads:De,isLoadingMessages:Q,isSendingMessage:pe,isInterruptingTurn:Me,isSelectedThreadInterruptPending:qe,isUpdatingSpeedMode:_e,refreshAll:Te,refreshSkills:le,selectThread:Ee,ensureThreadMessagesLoaded:Fe,setThreadScrollState:Ne,archiveThreadById:Ge,forkThreadById:Ke,renameThreadById:Ye,forkThreadFromTurn:lt,sendMessageToSelectedThread:Xe,sendMessageToNewThread:Y,interruptSelectedThreadTurn:Se,selectedThreadQueuedMessages:he,removeQueuedMessage:Ue,steerQueuedMessage:Ze,setSelectedCollaborationMode:T,setSelectedModelId:k,setSelectedReasoningEffort:q,updateSelectedSpeedMode:te,respondToPendingServerRequest:Z,renameProject:X,removeProject:ae,reorderProject:me,pinProjectToTop:fe,startPolling:ne,stopPolling:Le,primeSelectedThread:ke,rollbackSelectedThread:we}=QD(),xe=dR(),R=uR(),{isMobile:$}=_p(),F=N(null),J=N(null),ce=N(null),Oe=N([]),We=N(!1),st=N("trending-daily"),it=N(null),$t=N(!1);let _t=!1;const on=N(!1),ot=N(""),fn=N("local"),Qt=N(""),mr=N([]),ir=N(!1),Xn=N({order:[],labels:{}}),zt=N({phase:"idle",title:"",message:""}),kt=N(Qb()),pn=N(""),Ut=N(!1),uo=N(null),ms=N(null),fo=N(null),gr=N(null),zr=N(null);let bn=null;const sn=N("New Project (1)"),Gr=N(""),wn=N(!1),hn=N(ew()),jn=N(!1),ar=N([]),Fn=N(null),qt=N(!1),vr=N(!1),lr=N(null),mn=N([]),Ht=N(!1),It=N(!1),Sn=N(""),Cn=N(""),An=N(""),gn=N(""),Bn=N(_l(Ng,!0)),xn=N(jb()),yt=N(Db()),St=N(Fb()),yr=N(_l(Dg,!1)),Un=N(_l(jg,!0)),cr=N(Jb()),Bo=ie(()=>Xb()),vn=N(_l(Bg,!1)),Qn=N(!1),Kr=N(!1),Zn=N(""),Yr=N(!1),qn=N(null),Wt=N(!1),Tn=N("codex"),_r=N(""),Hn=N(""),an=N(!1),Mr=N(""),br=N(""),yn=N(""),Jr=N(!1),er=N(!1),ur=N(""),$e=N(""),ye=N(!1),Dt=N(!1),Uo=N(null),S=N(""),x=N(""),L=N([]),W=N(""),w=N(!1),P=N(!1),z=N(!1),be=N(""),tt=N({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),Pt=N(null),Gt=N(!1),Ot=N(!1);let Ft=null,Xr=!1,Pr=0;const po=ie(()=>{const h=xe.params.threadId;return typeof h=="string"?h:""}),al=ie(()=>{const h=new Set;for(const y of u.value)for(const I of y.threads)h.add(I.id);return h}),Rn=ie(()=>xe.name==="home"),qo=ie(()=>xe.name==="skills"),ll=ie(()=>{var h;return qo.value?"Skills":Rn.value?"New thread":((h=f.value)==null?void 0:h.title)??"Choose a thread"}),Vc=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",zc=ie(()=>{var y,I;return(((I=(y=f.value)==null?void 0:y.title)==null?void 0:I.trim())??"")||Vc}),gs=ie(()=>Re.value.filter(h=>{const y=nw(h.messageType,h.role);return y==="worked"?!0:!(y==="turnActivity.live"||y==="turnError.live"||y==="agentReasoning.live")})),Gc=ie(()=>C.value),Hi=ie(()=>Rn.value?"__new-thread__":M.value),cl=ie(()=>{const h=E.value;return h.length>0?h[h.length-1]:null}),$r=ie(()=>{var h,y;return Rn.value?ot.value.trim():((y=(h=f.value)==null?void 0:h.cwd)==null?void 0:y.trim())??""}),Wi=ie(()=>{var h;return!Rn.value&&((h=f.value)==null?void 0:h.inProgress)===!0}),Kc=ie(()=>!Rn.value&&!qo.value&&M.value.trim().length>0),Vi=ie(()=>pe.value||Me.value||Wi.value||E.value.length>0);function Ys(h){return Number.isFinite(h)?new Intl.NumberFormat("en-US",{notation:h>=1e3?"compact":"standard",maximumFractionDigits:h>=1e5?0:1}).format(Math.max(0,Math.trunc(h))):"0"}function Yc(h){if(!h)return"Waiting for Codex thread/tokenUsage/updated events for this thread.";const y=[`Current context usage: ${h.currentContextTokens.toLocaleString()} tokens`,`Cumulative thread usage: ${h.total.totalTokens.toLocaleString()} tokens`];return typeof h.modelContextWindow=="number"?(y.unshift(`Model context window: ${h.modelContextWindow.toLocaleString()} tokens`),y.push(`Remaining context: ${(h.remainingContextTokens??0).toLocaleString()} tokens`)):y.push("Model context window is unavailable in the latest usage event."),y.join(`
83
+ `)}Xc(c);const ho=dl(c);ho&&(Js(b,ho),yt(b,{label:"Running command",details:[((yl=ho.commandExecution)==null?void 0:yl.command)??""]}));const bs=Zc(c);if(bs){const et=(a.value[b]??[]).find(Wn=>Wn.id===bs.itemId);et!=null&&et.commandExecution&&Js(b,{...et,commandExecution:{...et.commandExecution,aggregatedOutput:`${et.commandExecution.aggregatedOutput}${bs.delta}`}})}const Wo=eu(c);Wo&&Js(b,Wo);const ws=fl(c);if(ws&&Wt(b,ws),ru(c)&&(we&&n.value&&Bo(n.value,{scrollTop:0,isAtBottom:!0,scrollRatio:1}),Hn(b)),c.method==="turn/completed"){we=!1,Hn(b),a.value[b]&&(a.value=bt(a.value,b));const et=z(c);et&&(It(et,!1),yt(et,null),xn(et),Be||(pn(et),Xi(et)))}}function Ki(c){if(c.method==="thread/tokenUsage/updated")return;const p=z(c);p&&Le.add(p);const g=c.method;(g.startsWith("thread/")||g.startsWith("turn/")||g.startsWith("item/"))&&(ne=!0),!(X!==null||typeof window>"u")&&(X=window.setTimeout(()=>{X=null,Nr()},Ed))}async function Ho(c){if(!ke){ke=!0;try{const p=await Ms(),g=[];for(const b of p.order){const j=Xo(b);g.includes(j)||g.push(j)}if(g.length>0){const b=$l(g,c);es(ee.value,b)||(ee.value=b,ci(ee.value))}if(Object.keys(p.labels).length>0){const b={...ve.value};let j=!1;for(const[B,U]of Object.entries(p.labels)){const G=Xo(B);b[G]!==U&&(b[G]=U,j=!0)}j&&(ve.value=b,Ad(b))}}catch{}}}async function ou(){if(!(Object.keys(Ye.value).length>0))try{const c=await FM();Object.keys(c.titles).length>0&&(Ye.value=c.titles)}catch{}}async function su(c,p,g){if(Ye.value[c])return;const b=p.trim();if(!b)return;const j=b.length>300?b.slice(0,300):b;try{const B=await qM(j,g);if(!B||Ye.value[c])return;Ye.value={...Ye.value,[c]:B},qt(),bd(c,B)}catch{}}async function iu(c){try{const p=await Ms();if(p.order.length===0)return c;const g=new Set(p.order.map(b=>Xo(b)));return c.filter(b=>g.has(b.projectName))}catch{return c}}async function vs(){var p;te.value||(Y.value=!0);const c=performance.now();try{const[g]=await Zd({name:"loadThreads",op:"ui.load.threads"},()=>Promise.all([ZR(),ou()]));await Ho(g);const b=await iu(g),j=$l(ee.value,b);es(ee.value,j)||(ee.value=j,ci(ee.value));const B=xd(b,ee.value);gn(new Set(Lr(B).map(Be=>Be.id)));const U=YD(t.value,B,u.value);t.value=Ll(t.value,U),u.value=Kt(u.value,new Set(Lr(t.value).map(Be=>Be.id))),qt(),te.value=!0;const G=Lr(e.value);lr(G),G.some(Be=>Be.id===n.value)||ot(((p=G[0])==null?void 0:p.id)??"");const je=Math.round(performance.now()-c);pr({category:"threads",message:`loaded ${G.length} threads in ${je}ms`,data:{projectCount:b.length},level:"info"})}finally{Y.value=!1}}async function Qr(c,p={}){var B;if(!c)return;const g=Re.value[c]===!0,b=p.silent!==!0&&!g;b&&(Se.value=!0);const j=performance.now();try{const G=De.value[c]!==!0?md(c):null,re=ag(c),[je,Be]=await Zd({name:"thread.loadMessages",op:"ui.load",attributes:{threadId:c,silent:p.silent??!1}},()=>Promise.all([G,re]));je&&(Qt(c,je.model),De.value={...De.value,[c]:!0});const{messages:ct,inProgress:gt,activeTurnId:nn,turnIndexByTurnId:ys}=Be;Bn(c,ct),Vi(c,ys),Ys(c);const _s=r.value[c]??[],ea=LD(_s,ct,{preserveMissing:p.silent===!0});vn(c,ea);const ho=s.value[c]??[],bs=jD(ho,ct);Qn(c,bs),tu(c,ct),nu(c,ct),Re.value={...Re.value,[c]:!0};const Wo=cr(c);Wo&&(Pe.value={...Pe.value,[c]:Wo}),It(c,gt),nn?_e.value={..._e.value,[c]:nn}:_e.value[c]&&(_e.value=bt(_e.value,c)),gt||br(c),mn(c);const ws=Math.round(performance.now()-j),Vo=$.value.find(ni=>ni.id===c),Ss=((B=Vo==null?void 0:Vo.cwd)==null?void 0:B.split("/").pop())??"unknown";ek("thread",{id:c,messageCount:ct.length,loadMs:ws,projectFolder:Ss}),pr({category:"thread",message:`loaded ${ct.length} msgs in ${ws}ms`,data:{threadId:c,projectFolder:Ss},level:"info"})}finally{b&&(Se.value=!1)}}async function Yi(c,p={}){c&&Re.value[c]!==!0&&await Qr(c,p)}async function Xs(){var c,p;try{const g=((p=(c=F.value)==null?void 0:c.cwd)==null?void 0:p.trim())??"";lt.value=await HM(g?[g]:void 0)}catch{}}async function au(){try{Xn(await cg())}catch{}}async function lu(c={}){k.value="";const p=c.includeSelectedThreadMessages!==!1,g=c.awaitAncillaryRefreshes===!0;try{await vs();const b=Promise.allSettled([zr(),bn(),fo(),Xs(),au()]).then(()=>{});p&&await Qr(n.value),g&&await b}catch(b){k.value=b instanceof Error?b.message:"Unknown application error"}}async function cu(c){ot(c);try{await Promise.all([Qr(c),Xs()])}catch(p){k.value=p instanceof Error?p.message:"Unknown application error"}}async function uu(c){try{await fM(c),await vs(),n.value===c&&await Qr(n.value)}catch(p){k.value=p instanceof Error?p.message:"Unknown application error"}}async function hl(c,p){const g=p.trim();if(!(!c||!g))try{await pM(c,g),Ye.value={...Ye.value,[c]:g},qt(),bd(c,g)}catch(b){k.value=b instanceof Error?b.message:"Unknown application error"}}async function du(c){var U,G;const p=c.trim();if(!p)return"";const g=Lr(t.value).find(re=>re.id===p),b=((U=g==null?void 0:g.cwd)==null?void 0:U.trim())??"",j=((G=g==null?void 0:g.title)==null?void 0:G.trim())??"Forked chat",B=_t(p);k.value="";try{const re=await dg(p,b||void 0,B||void 0),je=re.threadId.trim();return je?(vr(je,b,j),Qt(je,re.model),De.value={...De.value,[je]:!0},ot(je),await vs(),await Qr(je),je):""}catch(re){return k.value=re instanceof Error?re.message:"Unknown application error",""}}async function fu(c,p){var U;const g=c.trim();if(!g||!Number.isInteger(p)||p<0)return"";if(u.value[g]===!0)return k.value="Finish the current turn before forking from a response.","";if(Re.value[g]!==!0)try{await Qr(g)}catch(G){return k.value=G instanceof Error?G.message:"Unknown application error",""}const b=r.value[g]??[];let j=-1;for(const G of b)typeof G.turnIndex=="number"&&Number.isFinite(G.turnIndex)&&(j=Math.max(j,G.turnIndex));if(j>=0&&p>j)return"";const B=Lr(t.value).find(G=>G.id===g)??null;try{k.value="";const G=await dg(g),re=G.threadId.trim();if(!re)return"";const je=G.cwd.trim()||((U=B==null?void 0:B.cwd)==null?void 0:U.trim())||"",Be=XD((B==null?void 0:B.title)||(B==null?void 0:B.preview)||"Untitled thread");vr(re,je,Be),Qt(re,G.model),vn(re,G.messages),Re.value={...Re.value,[re]:!0},De.value={...De.value,[re]:!0},an(re),Qn(re,[]),Hn(re),a.value[re]&&(a.value=bt(a.value,re)),Ht(re,null),yt(re,null),St(re,null),It(re,!1);const ct=j-p;if(ct>0){const gt=await gd(re,ct);vn(re,gt)}return await hl(re,Be),ot(re),vs().catch(()=>{}),re}catch(G){return k.value=G instanceof Error?G.message:"Unknown application error",""}}async function pu(c,p,g=[],b=[],j=[]){if(!c||!p.trim()||g.length>0||b.length>0||j.length>0)return!1;const U=(Fe.value[c]??[]).filter(je=>je.method==="item/tool/requestUserInput");if(U.length!==1)return!1;const[G]=U,re=Rn(G);return re.length!==1?!1:vl({id:G.id,result:{answers:{[re[0]]:{answers:[p.trim()]}}}})}async function Ji(c,p=[],g=[],b="steer",j=[],B){if(Ze.value)return;const U=n.value,G=c.trim();if(!U||!G&&p.length===0&&j.length===0||await pu(U,G,p,g,j))return;pr({category:"ui.action",message:"send message",data:{threadId:U,hasImages:p.length>0,skillCount:g.length},level:"info"});const re=u.value[U]===!0;if(re&&b==="queue"){const je=d.value[U]??[],Be=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ct=[...je],gt=typeof B=="number"?Math.max(0,Math.min(B,ct.length)):ct.length;ct.splice(gt,0,{id:Be,text:G,imageUrls:p,skills:g,fileAttachments:j,collaborationMode:M.value}),d.value={...d.value,[U]:ct};return}if(re){we=!0,Zr(U,G,p,g,j).catch(je=>{const Be=je instanceof Error?je.message:"Unknown application error";St(U,Be),k.value=Be});return}k.value="",we=!0,Ht(U,null),yt(U,{label:"Thinking",details:gr(_t(U),V.value,M.value)}),St(U,null),It(U,!0);try{await Zr(U,G,p,g,j)}catch(je){we=!1,It(U,!1),yt(U,null);const Be=je instanceof Error?je.message:"Unknown application error";throw St(U,Be),k.value=Be,je}}async function hu(c,p,g=[],b=[],j=[]){if(Ze.value)return"";const B=c.trim(),U=p.trim(),G=O.value.trim();if(!B&&g.length===0&&j.length===0)return"";he.value=!0,k.value="";let re="";try{try{const gt=await ug(U||void 0,G||void 0);re=gt.threadId,Qt(re,gt.model)}catch(gt){if(G&&G!==Or&&Nl(gt)){await zt();const nn=await ug(U||void 0,Or);re=nn.threadId,Qt(re,nn.model)}else throw gt}if(!re)return"";vr(re,U,B||"[Image]"),Cn(re),De.value={...De.value,[re]:!0},ot(re),we=!0,Ht(re,null),yt(re,{label:"Thinking",details:gr(O.value,V.value,M.value)}),St(re,null),It(re,!0);const je=re,Be=U||null,ct=B;return Zr(re,B,g,b,j).catch(gt=>{we=!1,It(re,!1),yt(re,null);const nn=gt instanceof Error?gt.message:"Unknown application error";St(re,nn),k.value=nn}).finally(()=>{he.value=!1}),su(je,ct,Be),re}catch(je){we=!1,re&&(It(re,!1),yt(re,null));const Be=je instanceof Error?je.message:"Unknown application error";throw re&&St(re,Be),k.value=Be,he.value=!1,je}}async function Zr(c,p,g=[],b=[],j=[]){const B=V.value,U=M.value,G=p.trim(),re=b.map(Be=>({name:Be.name,path:Be.path})),je=j.map(Be=>({...Be}));kt(c,{text:G,imageUrls:[...g],skills:re,fileAttachments:je,effort:B,collaborationMode:U,fallbackRetried:!1});try{if(De.value[c]!==!0){const gt=await md(c);Qt(c,gt.model)}const Be=_t(c);let ct="";try{ct=await vd(c,p,g,Be||void 0,B||void 0,b.length>0?b:void 0,j,U)}catch(gt){if(Be&&Be!==Or&&Nl(gt))await zt(c),kt(c,{text:G,imageUrls:[...g],skills:re,fileAttachments:je,effort:B,collaborationMode:U,fallbackRetried:!0}),ct=await vd(c,p,g,Or,B||void 0,b.length>0?b:void 0,j,U);else throw gt}ct&&(_e.value={..._e.value,[c]:ct}),De.value={...De.value,[c]:!0},Le.add(c),ne=!0,await Nr(),wn(c)}catch(Be){throw Be}}async function Xi(c){if(f.value[c]===!0)return;const p=d.value[c];if(!p||p.length===0)return;f.value={...f.value,[c]:!0};const[g,...b]=p;d.value=b.length>0?{...d.value,[c]:b}:bt(d.value,c),he.value=!0,k.value="",we=!0,Ht(c,null),yt(c,{label:"Thinking",details:gr(_t(c),V.value,g.collaborationMode)}),St(c,null),It(c,!0);try{ir(g.collaborationMode),await Zr(c,g.text,g.imageUrls,g.skills,g.fileAttachments)}catch{It(c,!1),yt(c,null)}finally{f.value=bt(f.value,c),he.value=!1}}async function Qs(){const c=n.value;if(!c||u.value[c]!==!0||Te.value[c]===!0)return;let p=_e.value[c];if(!p){const{activeTurnId:g}=await ag(c);p=g,p&&(_e.value={..._e.value,[c]:p})}if(!p)throw new Error("Could not determine active turn id for interrupt");Ue.value=!0,k.value="";try{await yM(c,p),It(c,!1),yt(c,null),St(c,null),_e.value[c]&&(_e.value=bt(_e.value,c)),Le.add(c),ne=!0,await Nr()}catch(g){const b=g instanceof Error?g.message:"Failed to interrupt active turn";St(c,b),k.value=b}finally{Ue.value=!1}}async function ml(c){var G,re;const p=n.value;if(!p||T.value||!c.trim())return;const g=r.value[p]??[],b=g.find(je=>je.turnId===c),j=typeof(b==null?void 0:b.turnIndex)=="number"?b.turnIndex:-1;if(j<0)return;const B=g.reduce((je,Be)=>typeof Be.turnIndex=="number"&&Be.turnIndex>je?Be.turnIndex:je,-1);if(B<0||j>B)return;const U=B-j+1;if(!(U<1)){T.value=!0,k.value="";try{const je=((re=(G=F.value)==null?void 0:G.cwd)==null?void 0:re.trim())??"";je&&await hM(p,c,je);const Be=await gd(p,U);vn(p,Be),Qn(p,[]),Hn(p),a.value[p]&&(a.value=bt(a.value,p)),Ht(p,null),yt(p,null),St(p,null),ne=!0,await Nr()}catch(je){k.value=je instanceof Error?je.message:"Failed to rollback thread"}finally{T.value=!1}}}let Zs=null;async function mu(c,p){try{const g=await Ms(),b={...g.labels};let j=!1;for(const B of g.order){if(Xo(B)!==c)continue;const U=p.trim();U.length===0?b[B]!==void 0&&(delete b[B],j=!0):b[B]!==U&&(b[B]=U,j=!0)}j&&await yd({order:g.order,labels:b,active:g.active})}catch{}}function gu(c,p){c.length===0||(ve.value[c]??"")===p||(ve.value={...ve.value,[c]:p},Ad(ve.value),Zs!==null&&clearTimeout(Zs),Zs=setTimeout(()=>{Zs=null,mu(c,p)},500))}async function vu(c){var B;if(c.length===0)return;const p=ee.value.filter(U=>U!==c);if(es(ee.value,p)||(ee.value=p,ci(ee.value)),t.value=t.value.filter(U=>U.projectName!==c),ve.value[c]!==void 0){const U={...ve.value};delete U[c],ve.value=U,Ad(U)}qt();const g=Lr(e.value);lr(g),g.some(U=>U.id===n.value)||ot(((B=g[0])==null?void 0:B.id)??"");const j=new Set;try{const U=await Ms();for(const G of U.order)Xo(G)===c&&j.add(G);for(const G of U.active)Xo(G)===c&&j.add(G);for(const G of Object.keys(U.labels))Xo(G)===c&&j.add(G)}catch{}if(j.size>0)try{const U=await Ms(),G=U.order.filter(Be=>!j.has(Be)),re=U.active.filter(Be=>!j.has(Be)),je=re.length===0&&G.length>0?[G[0]]:re;await yd({order:G,labels:VD(U.labels,j),active:je});return}catch{}await ei()}function yu(c,p){if(c.length===0||t.value.length===0)return;const g=t.value.map(re=>re.projectName),b=g.indexOf(c);if(b===-1)return;const j=Math.max(0,Math.min(p,g.length-1)),B=PD(g,b,j);if(B===g)return;const U=$l(B,t.value);ee.value=U,ci(ee.value);const G=xd(t.value,ee.value);t.value=Ll(t.value,G),qt(),ei()}function _u(c){const p=c.trim();if(!p)return;const g=[p,...ee.value.filter(j=>j!==p)];if(es(ee.value,g))return;ee.value=g,ci(ee.value);const b=xd(t.value,ee.value);t.value=Ll(t.value,b),qt(),ei()}async function ei(){var c,p;try{const g=await Ms(),b=new Map;for(const U of g.order){const G=Xo(U);b.has(G)||b.set(G,U)}for(const U of t.value){const G=((p=(c=U.threads[0])==null?void 0:c.cwd)==null?void 0:p.trim())??"";G&&b.set(U.projectName,G)}const j=[];for(const U of ee.value){const G=b.get(U);G&&!j.includes(G)&&j.push(G)}for(const U of g.order)j.includes(U)||j.push(U);const B=g.active.filter(U=>j.includes(U));B.length===0&&j.length>0&&B.push(j[0]),await yd({order:j,labels:g.labels,active:B})}catch{}}async function Nr(){if(q.value){typeof window<"u"&&X===null&&(X=window.setTimeout(()=>{X=null,Nr()},Ed));return}q.value=!0;const c=ne,p=new Set(Le);ne=!1,Le.clear();try{c&&await vs();const g=n.value;if(!g)return;const b=p.has(g),j=u.value[g]===!0,B=cr(g),U=Pe.value[g]??"",G=B.length>0&&B!==U;(b||j||G||c)&&await Qr(g,{silent:!0})}catch{}finally{q.value=!1,(ne||Le.size>0)&&typeof window<"u"&&X===null&&(X=window.setTimeout(()=>{X=null,Nr()},Ed))}}async function ti(){await gl(),ne=!0,n.value&&Le.add(n.value),await Nr()}function bu(){typeof window>"u"||Z||(gl(),Z=sM(c=>{if(c.method==="ready"){Un(),ti();return}pl(c),Ki(c)}))}async function gl(){try{const p=(await aM()).map(g=>Pt(g)).filter(g=>g!==null);Vc(p)}catch{}}async function vl(c){try{return await iM(c.id,{result:c.result,error:c.error}),ll(c.id),!0}catch(p){return k.value=p instanceof Error?p.message:"Failed to reply to server request",!1}}function wu(){if(Z&&(Z(),Z=null),ne=!1,Le.clear(),xe.clear(),X!==null&&typeof window<"u"&&(window.clearTimeout(X),X=null),ae!==null&&typeof window<"u"&&(window.clearTimeout(ae),ae=null),typeof window<"u")for(const c of me.values())window.clearTimeout(c);me.clear(),we=!1,r.value={},o.value={},s.value={},i.value={},a.value={},l.value={},Q.value={},Me.value={},pe.value={},qe.value={},_e.value={},Te.value={},le.value={},Ee.value={},d.value={},f.value={},Ge.value=null,Ke.value={}}const Su=ie(()=>{const c=n.value;return c?d.value[c]??[]:[]});function Qi(c){const p=n.value;if(!p)return;const g=d.value[p];if(!g)return;const b=g.filter(j=>j.id!==c);d.value=b.length>0?{...d.value,[p]:b}:bt(d.value,p)}function Zi(c){const p=n.value;if(!p)return;const g=d.value[p];if(!g)return;const b=g.find(j=>j.id===c);b&&(Qi(c),ir(b.collaborationMode),Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments))}function Tu(c){ot(c)}return{projectGroups:e,projectDisplayNameById:ve,selectedThread:F,selectedThreadTokenUsage:it,selectedThreadScrollState:J,isSelectedThreadInterruptPending:ce,selectedThreadServerRequests:Oe,selectedLiveOverlay:We,codexQuota:st,selectedThreadId:n,availableCollaborationModes:E,availableModelIds:v,selectedCollaborationMode:M,selectedModelId:O,selectedReasoningEffort:V,selectedSpeedMode:K,installedSkills:lt,accountRateLimitSnapshots:Xe,messages:$t,isLoadingThreads:Y,isLoadingMessages:Se,isSendingMessage:he,isInterruptingTurn:Ue,isUpdatingSpeedMode:Ze,isRollingBack:T,error:k,refreshAll:lu,refreshSkills:Xs,selectThread:cu,loadMessages:Qr,ensureThreadMessagesLoaded:Yi,setThreadScrollState:Bo,archiveThreadById:uu,renameThreadById:hl,forkThreadById:du,forkThreadFromTurn:fu,rollbackSelectedThread:ml,sendMessageToSelectedThread:Ji,sendMessageToNewThread:hu,interruptSelectedThreadTurn:Qs,selectedThreadQueuedMessages:Su,removeQueuedMessage:Qi,steerQueuedMessage:Zi,setSelectedCollaborationMode:ir,setSelectedModelId:fn,setSelectedReasoningEffort:uo,updateSelectedSpeedMode:ms,respondToPendingServerRequest:vl,renameProject:gu,removeProject:vu,reorderProject:yu,pinProjectToTop:_u,startPolling:bu,stopPolling:wu,primeSelectedThread:Tu}}const ZD={class:"sidebar-root"},ej={class:"sidebar-scrollable"},tj=["aria-pressed"],nj={key:1,class:"sidebar-search-bar"},rj={class:"sidebar-settings-account-section"},oj={class:"sidebar-settings-account-header"},sj={class:"sidebar-settings-account-header-main"},ij=["aria-expanded","title"],aj={class:"sidebar-settings-account-collapse-icon"},lj={class:"sidebar-settings-account-count"},cj=["disabled"],uj={key:0,class:"sidebar-settings-account-error"},dj={key:1,class:"sidebar-settings-account-empty"},fj={key:2,class:"sidebar-settings-account-list"},pj=["title","onMouseenter","onMouseleave"],hj={class:"sidebar-settings-account-main"},mj={class:"sidebar-settings-account-email"},gj={class:"sidebar-settings-account-meta"},vj={class:"sidebar-settings-account-quota"},yj={class:"sidebar-settings-account-id"},_j={class:"sidebar-settings-account-actions"},bj=["disabled","onClick"],wj=["disabled","onClick"],Sj=["title"],Tj=["title"],Ej={class:"sidebar-settings-value"},kj=["title"],Ij={class:"sidebar-settings-value"},Cj=["title"],Aj={class:"sidebar-settings-value"},xj=["title"],Rj=["title"],Mj=["title"],Pj={class:"sidebar-settings-row sidebar-settings-row--select",title:"Choose the API provider for the Codex backend"},$j=["value","disabled"],Nj={key:0,class:"sidebar-settings-row sidebar-settings-row--input"},Oj={class:"sidebar-settings-key-group"},Lj={class:"sidebar-settings-key-masked"},Dj=["disabled"],jj=["disabled"],Fj={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},Bj={class:"sidebar-settings-key-group"},Uj={class:"sidebar-settings-key-group"},qj=["disabled"],Hj=["title"],Wj={class:"sidebar-settings-value"},Vj={key:2,class:"sidebar-settings-telegram-panel"},zj={class:"sidebar-settings-field"},Gj={class:"sidebar-settings-field"},Kj={key:0,class:"sidebar-settings-telegram-error"},Yj={class:"sidebar-settings-telegram-actions"},Jj=["disabled"],Xj=["data-state","title"],Qj=["data-state"],Zj={class:"sidebar-settings-context-meta"},eF={class:"sidebar-settings-rate-limits"},tF={class:"sidebar-settings-build-label","aria-label":"Worktree name and version"},nF={class:"sidebar-settings-button-version"},rF={class:"content-body"},oF={key:1,class:"content-grid content-grid-home"},sF={class:"new-thread-empty"},iF=["title"],aF=["onKeydown"],lF={class:"new-thread-open-folder-current"},cF=["title"],uF=["disabled"],dF={class:"new-thread-open-folder-actions"},fF={class:"new-thread-open-folder-toggle"},pF=["aria-pressed","disabled"],hF={key:0,class:"new-thread-open-folder-create"},mF={class:"new-thread-open-folder-create-composer"},gF=["onKeydown"],vF=["disabled"],yF={key:0,class:"new-thread-open-folder-error"},_F=["onKeydown"],bF={key:1,class:"new-thread-open-folder-error-actions"},wF={class:"new-thread-open-folder-error"},SF=["disabled"],TF={key:2,class:"new-thread-open-folder-status"},EF={key:3,class:"new-thread-open-folder-status"},kF={key:4,class:"new-thread-open-folder-list"},IF=["title","disabled","onClick"],CF={class:"new-thread-open-folder-item-name"},AF=["disabled","onClick"],xF={key:1,class:"new-thread-branch-select"},RF={class:"new-thread-branch-select-help"},MF={class:"worktree-init-status-title"},PF={class:"worktree-init-status-message"},$F={key:3,class:"new-thread-trending"},NF={class:"new-thread-trending-header"},OF={key:0,class:"new-thread-trending-empty"},LF={key:1,class:"new-thread-trending-empty"},DF={key:2,class:"new-thread-trending-list"},jF=["onClick"],FF=["title"],BF={class:"new-thread-trending-tip-name-owner"},UF={class:"new-thread-trending-tip-name-repo"},qF={key:1,class:"new-thread-trending-tip-name-repo"},HF={class:"new-thread-trending-tip-meta"},WF={class:"new-thread-trending-tip-description"},VF={class:"composer-with-queue"},zF={key:2,class:"content-grid"},GF={class:"content-thread"},KF={class:"composer-with-queue"},Pg="codex-web-local.sidebar-collapsed.v1",$g="codex-web-local.accounts-section-collapsed.v1",Ng="codex-web-local.send-with-enter.v1",Og="codex-web-local.in-progress-send-mode.v1",Lg="codex-web-local.dark-mode.v1",Dg="codex-web-local.dictation-click-to-toggle.v1",jg="codex-web-local.dictation-auto-send.v1",Fg="codex-web-local.dictation-language.v1",Bg="codex-web-local.github-trending-projects.v1",Ug="codex-web-local.chat-width.v1",YF=400,JF=In({__name:"App",setup(e){const t=Du(()=>ad(()=>import("./ThreadConversation-BNp42k0F.js"),__vite__mapDeps([0,1]))),n=Du(()=>ad(()=>import("./ReviewPane-BYXF27M-.js"),__vite__mapDeps([2,3]))),r=Du(()=>ad(()=>import("./SkillsHub-GpJ2Lrm3.js"),__vite__mapDeps([4,5]))),o="a77f",s="0.1.85",i={sendWithEnter:"When enabled, press Enter to send. When disabled, use Command+Enter to send.",inProgressSendMode:"If a turn is still running, choose whether a new prompt should steer the current turn or be queued.",appearance:"Switch between system theme, light mode, and dark mode.",chatWidth:"Choose how wide the conversation column and composer can grow on desktop screens.",dictationClickToToggle:"Use click-to-start and click-to-stop dictation instead of hold-to-talk.",dictationAutoSend:"Automatically send transcribed dictation when recording stops.",githubTrendingProjects:"Show or hide GitHub trending project cards on the new thread screen.",dictationLanguage:"Choose transcription language or keep auto-detect."},a={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},l={en:"english",zh:"chinese",de:"german",es:"spanish",ru:"russian",ko:"korean",fr:"french",ja:"japanese",pt:"portuguese",tr:"turkish",pl:"polish",ca:"catalan",nl:"dutch",ar:"arabic",sv:"swedish",it:"italian",id:"indonesian",hi:"hindi",fi:"finnish",vi:"vietnamese",he:"hebrew",uk:"ukrainian",el:"greek",ms:"malay",cs:"czech",ro:"romanian",da:"danish",hu:"hungarian",ta:"tamil",no:"norwegian",th:"thai",ur:"urdu",hr:"croatian",bg:"bulgarian",lt:"lithuanian",la:"latin",mi:"maori",ml:"malayalam",cy:"welsh",sk:"slovak",te:"telugu",fa:"persian",lv:"latvian",bn:"bengali",sr:"serbian",az:"azerbaijani",sl:"slovenian",kn:"kannada",et:"estonian",mk:"macedonian",br:"breton",eu:"basque",is:"icelandic",hy:"armenian",ne:"nepali",mn:"mongolian",bs:"bosnian",kk:"kazakh",sq:"albanian",sw:"swahili",gl:"galician",mr:"marathi",pa:"punjabi",si:"sinhala",km:"khmer",sn:"shona",yo:"yoruba",so:"somali",af:"afrikaans",oc:"occitan",ka:"georgian",be:"belarusian",tg:"tajik",sd:"sindhi",gu:"gujarati",am:"amharic",yi:"yiddish",lo:"lao",uz:"uzbek",fo:"faroese",ht:"haitian creole",ps:"pashto",tk:"turkmen",nn:"nynorsk",mt:"maltese",sa:"sanskrit",lb:"luxembourgish",my:"myanmar",bo:"tibetan",tl:"tagalog",mg:"malagasy",as:"assamese",tt:"tatar",haw:"hawaiian",ln:"lingala",ha:"hausa",ba:"bashkir",jw:"javanese",su:"sundanese",yue:"cantonese"},{projectGroups:u,projectDisplayNameById:d,selectedThread:f,selectedThreadTokenUsage:m,selectedThreadScrollState:v,selectedThreadServerRequests:E,selectedLiveOverlay:C,codexQuota:H,selectedThreadId:M,availableCollaborationModes:O,availableModelIds:V,selectedCollaborationMode:K,selectedModelId:de,selectedReasoningEffort:oe,selectedSpeedMode:ee,installedSkills:ve,accountRateLimitSnapshots:Pe,messages:Re,isLoadingThreads:De,isLoadingMessages:Q,isSendingMessage:pe,isInterruptingTurn:Me,isSelectedThreadInterruptPending:qe,isUpdatingSpeedMode:_e,refreshAll:Te,refreshSkills:le,selectThread:Ee,ensureThreadMessagesLoaded:Fe,setThreadScrollState:Ne,archiveThreadById:Ge,forkThreadById:Ke,renameThreadById:Ye,forkThreadFromTurn:lt,sendMessageToSelectedThread:Xe,sendMessageToNewThread:Y,interruptSelectedThreadTurn:Se,selectedThreadQueuedMessages:he,removeQueuedMessage:Ue,steerQueuedMessage:Ze,setSelectedCollaborationMode:T,setSelectedModelId:k,setSelectedReasoningEffort:q,updateSelectedSpeedMode:te,respondToPendingServerRequest:Z,renameProject:X,removeProject:ae,reorderProject:me,pinProjectToTop:fe,startPolling:ne,stopPolling:Le,primeSelectedThread:ke,rollbackSelectedThread:we}=QD(),xe=dR(),R=uR(),{isMobile:$}=_p(),F=N(null),J=N(null),ce=N(null),Oe=N([]),We=N(!1),st=N("trending-daily"),it=N(null),$t=N(!1);let _t=!1;const on=N(!1),ot=N(""),fn=N("local"),Qt=N(""),mr=N([]),ir=N(!1),Xn=N({order:[],labels:{}}),zt=N({phase:"idle",title:"",message:""}),kt=N(Qb()),pn=N(""),Ut=N(!1),uo=N(null),ms=N(null),fo=N(null),gr=N(null),zr=N(null);let bn=null;const sn=N("New Project (1)"),Gr=N(""),wn=N(!1),hn=N(ew()),jn=N(!1),ar=N([]),Fn=N(null),qt=N(!1),vr=N(!1),lr=N(null),mn=N([]),Ht=N(!1),It=N(!1),Sn=N(""),Cn=N(""),An=N(""),gn=N(""),Bn=N(_l(Ng,!0)),xn=N(jb()),yt=N(Db()),St=N(Fb()),yr=N(_l(Dg,!1)),Un=N(_l(jg,!0)),cr=N(Jb()),Bo=ie(()=>Xb()),vn=N(_l(Bg,!1)),Qn=N(!1),Kr=N(!1),Zn=N(""),Yr=N(!1),qn=N(null),Wt=N(!1),Tn=N("codex"),_r=N(""),Hn=N(""),an=N(!1),Mr=N(""),br=N(""),yn=N(""),Jr=N(!1),er=N(!1),ur=N(""),$e=N(""),ye=N(!1),Dt=N(!1),Uo=N(null),S=N(""),x=N(""),L=N([]),W=N(""),w=N(!1),P=N(!1),z=N(!1),be=N(""),tt=N({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),Pt=N(null),Gt=N(!1),Ot=N(!1);let Ft=null,Xr=!1,Pr=0;const po=ie(()=>{const h=xe.params.threadId;return typeof h=="string"?h:""}),al=ie(()=>{const h=new Set;for(const y of u.value)for(const I of y.threads)h.add(I.id);return h}),Rn=ie(()=>xe.name==="home"),qo=ie(()=>xe.name==="skills"),ll=ie(()=>{var h;return qo.value?"Skills":Rn.value?"New thread":((h=f.value)==null?void 0:h.title)??"Choose a thread"}),Vc=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",zc=ie(()=>{var y,I;return(((I=(y=f.value)==null?void 0:y.title)==null?void 0:I.trim())??"")||Vc}),gs=ie(()=>Re.value.filter(h=>{const y=nw(h.messageType,h.role);return y==="worked"?!0:!(y==="turnActivity.live"||y==="turnError.live"||y==="agentReasoning.live")})),Gc=ie(()=>C.value),Hi=ie(()=>Rn.value?"__new-thread__":M.value),cl=ie(()=>{const h=E.value;return h.length>0?h[h.length-1]:null}),$r=ie(()=>{var h,y;return Rn.value?ot.value.trim():((y=(h=f.value)==null?void 0:h.cwd)==null?void 0:y.trim())??""}),Wi=ie(()=>{var h;return!Rn.value&&((h=f.value)==null?void 0:h.inProgress)===!0}),Kc=ie(()=>!Rn.value&&!qo.value&&M.value.trim().length>0),Vi=ie(()=>pe.value||Me.value||Wi.value||E.value.length>0);function Ys(h){return Number.isFinite(h)?new Intl.NumberFormat("en-US",{notation:h>=1e3?"compact":"standard",maximumFractionDigits:h>=1e5?0:1}).format(Math.max(0,Math.trunc(h))):"0"}function Yc(h){if(!h)return"Waiting for Codex thread/tokenUsage/updated events for this thread.";const y=[`Current context usage: ${h.currentContextTokens.toLocaleString()} tokens`,`Cumulative thread usage: ${h.total.totalTokens.toLocaleString()} tokens`];return typeof h.modelContextWindow=="number"?(y.unshift(`Model context window: ${h.modelContextWindow.toLocaleString()} tokens`),y.push(`Remaining context: ${(h.remainingContextTokens??0).toLocaleString()} tokens`)):y.push("Model context window is unavailable in the latest usage event."),y.join(`
84
84
  `)}const ul=ie(()=>{var y;const h=(y=m.value)==null?void 0:y.remainingContextPercent;return h===null||typeof h!="number"?"pending":h<=10?"danger":h<=25?"warning":"ok"}),Jc=ie(()=>{const h=m.value;return h?typeof h.remainingContextTokens=="number"?`${Ys(h.remainingContextTokens)} left`:`${Ys(h.currentContextTokens)} used`:"Awaiting data"}),Xc=ie(()=>{const h=m.value;return h?typeof h.modelContextWindow=="number"?`${Ys(h.currentContextTokens)} used / ${Ys(h.modelContextWindow)}`:"Window size unavailable":"Updates after the next token usage event"}),Qc=ie(()=>Yc(m.value)),zi=ie(()=>{var se,Ie;const h=[],y=new Set;for(const Ae of Xn.value.order){const at=Ae.trim();!at||y.has(at)||(y.add(at),h.push({value:at,label:Xn.value.labels[at]||Rs(at)}))}for(const Ae of u.value){const at=((Ie=(se=Ae.threads[0])==null?void 0:se.cwd)==null?void 0:Ie.trim())??"";!at||y.has(at)||(y.add(at),h.push({value:at,label:d.value[Ae.projectName]??Ae.projectName}))}const I=ot.value.trim();return I&&!y.has(I)&&h.unshift({value:I,label:Rs(I)}),h}),Gi=ie(()=>{const h=Qt.value.trim(),y=[...mr.value];return h&&!y.some(I=>I.value===h)&&y.unshift({value:h,label:h}),y}),dl=ie(()=>{const h=Qt.value.trim();if(!h)return"";const y=Gi.value.find(I=>I.value===h);return(y==null?void 0:y.label)??h}),Zc=ie(()=>Fn.value??"__detached_head__"),eu=ie(()=>{var se;const h=[{value:"__review__",label:jn.value?"Review (Open)":"Review"}],y=new Set,I=((se=Fn.value)==null?void 0:se.trim())??"";I?(h.push({value:I,label:I}),y.add(I)):(h.push({value:"__detached_head__",label:"Detached HEAD"}),y.add("__detached_head__"));for(const Ie of ar.value)!Ie.value||y.has(Ie.value)||(y.add(Ie.value),h.push(Ie));return h}),fl=ie(()=>S.value.trim()),Js=ie(()=>{const h=ur.value.trim();return!h||h==="."||h===".."?!1:!/[\\/]/u.test(h)}),tu=ie(()=>Js.value&&fl.value.trim().length>0&&!W.value),nu=ie(()=>ye.value?"Creating…":"Create"),ru=ie(()=>{const h=S.value.trim(),y=x.value.trim();return!!(h&&y&&h!==y)}),pl=ie(()=>{const h=[];ru.value&&h.push({key:`parent:${x.value}`,name:"..",path:x.value,kind:"parent"});for(const y of L.value)h.push({key:`directory:${y.path}`,name:y.name,path:y.path,kind:"directory"});return h}),Ki=ie(()=>{const h=be.value.trim().toLowerCase();return h?pl.value.filter(y=>y.kind==="parent"||y.name.toLowerCase().includes(h)):pl.value}),Ho=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,ou=ie(()=>[{value:"search-daily",label:"Search daily"},{value:"search-weekly",label:"Search weekly"},{value:"search-monthly",label:"Search monthly"},{value:"trending-daily",label:"Trending daily"},{value:"trending-weekly",label:"Trending weekly"},{value:"trending-monthly",label:"Trending monthly"}]),su=ie(()=>a[St.value].label),iu=ie(()=>{const h=a[St.value];return{"--chat-column-max":h.columnMax,"--chat-card-max":h.cardMax}}),vs=ie(()=>{if(!tt.value.configured)return"Not configured";const h=tt.value.active?"Online":"Configured (offline)",y=tt.value.allowAllUsers?"allow all users":`${tt.value.allowedUsers} allowed user(s)`,I=`${tt.value.mappedChats} chat(s), ${tt.value.mappedThreads} thread(s), ${y}`,se=tt.value.lastError?`, error: ${tt.value.lastError}`:"";return`${h}, ${I}${se}`});ds(()=>{document.addEventListener("pointerdown",gt),window.addEventListener("keydown",ct),document.addEventListener("visibilitychange",ys),window.addEventListener("pageshow",_s),window.addEventListener("focus",ea),bl(),Ho==null||Ho.addEventListener("change",bl),rw(),Rb(),ri(),zo(),Xs(),Yi(),Au(),vn.value&&ku()}),Ac(()=>{document.removeEventListener("pointerdown",gt),window.removeEventListener("keydown",ct),document.removeEventListener("visibilitychange",ys),window.removeEventListener("pageshow",_s),window.removeEventListener("focus",ea),Ho==null||Ho.removeEventListener("change",bl),Ft!==null&&(window.clearInterval(Ft),Ft=null),bn&&(clearTimeout(bn),bn=null),Le()}),ut(pn,h=>{const y=h.trim();if(bn&&(clearTimeout(bn),bn=null),!y){zr.value=null;return}bn=setTimeout(()=>{$M(y,1e3).then(I=>{pn.value.trim()===y&&(zr.value=I.threadIds)}).catch(()=>{pn.value.trim()===y&&(zr.value=null)})},220)}),ut(mn,()=>{if(typeof window>"u")return;if(!mn.value.some(y=>y.quotaStatus==="loading")){Ft!==null&&(window.clearInterval(Ft),Ft=null);return}Ft===null&&(Ft=window.setInterval(()=>{Xr||(Xr=!0,ti({silent:!0}).finally(()=>{Xr=!1}))},1500))},{deep:!0});function Qr(){le()}async function Yi(){try{tt.value=await LM()}catch(h){const y=h instanceof Error?h.message:"Failed to load Telegram status";tt.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:y}}}async function Xs(){try{const h=await OM();Mr.value=h.botToken,br.value=h.allowedUserIds.map(y=>String(y)).join(`
85
85
  `),yn.value=""}catch(h){yn.value=h instanceof Error?h.message:"Failed to load Telegram configuration"}}function au(h){const y=h.split(/[\n,]/).map(Ie=>Ie.trim().replace(/^(telegram|tg):/i,"").trim()).filter(Boolean),I=y.includes("*"),se=Array.from(new Set(y.filter(Ie=>/^-?\d+$/.test(Ie)).map(Ie=>Number.parseInt(Ie,10))));return I?["*",...se]:se}async function lu(){const h=Mr.value.trim(),y=au(br.value);if(!h){yn.value="Telegram bot token is required.";return}if(y.length===0){yn.value="At least one allowed Telegram user ID or * is required.";return}Jr.value=!0,yn.value="";try{await NM(h,y),br.value=y.map(I=>String(I)).join(`
86
86
  `),await Promise.all([Xs(),Yi()]),window.alert("Telegram bot configured. Only allowlisted Telegram users can use the bridge.")}catch(I){yn.value=I instanceof Error?I.message:"Failed to connect Telegram bot",Yi()}finally{Jr.value=!1}}function cu(){Ut.value=!Ut.value,Ut.value?Jt(()=>{var h;return(h=uo.value)==null?void 0:h.focus()}):pn.value=""}function uu(){var h;pn.value="",(h=uo.value)==null||h.focus()}function hl(h){h.key==="Escape"&&(Ut.value=!1,pn.value="")}function du(h){h&&(xe.name==="thread"&&po.value===h||(R.push({name:"thread",params:{threadId:h}}),$.value&&Be(!0)))}async function fu(h){h&&(M.value!==h&&(await Ee(h),await R.push({name:"thread",params:{threadId:h}})),await Jt(),$b())}function pu(h){return h.length>8?h.slice(-8):h}function Ji(h){const y=[h.planType||"unknown"];return h.authMode&&y.unshift(h.authMode),y.join(" · ")}function hu(h){if(!h)return!1;const y=h.toLowerCase();return y.includes("payment required")||/\b402\b/.test(y)}function Zr(h){return h.unavailableReason==="payment_required"||hu(h.quotaError)}function Xi(h){return Ht.value||It.value||Sn.value.length>0||h.isActive&&Sn.value!==h.accountId&&Vi.value}function Qs(h){return Cn.value===h.accountId}function ml(h){return An.value===h.accountId||Qs(h)}function Zs(h){return Zr(h)?"Unavailable":h.isActive?"Active":It.value?"Switching…":"Switch"}function mu(h){return Sn.value===h.accountId?"Removing…":Qs(h)?"Click again to remove":"Remove"}function gu(h){An.value=h}function vu(h){An.value===h&&(An.value=""),Sn.value!==h&&Cn.value===h&&(Cn.value="")}function yu(h){const y=h.quotaSnapshot;if(!y)return null;const I=[y==null?void 0:y.primary,y==null?void 0:y.secondary].filter(Ae=>Ae!==null),se=I.find(Ae=>Ae.windowMinutes===10080);if(se)return se;const Ie=I.filter(Ae=>typeof Ae.windowMinutes=="number"&&Ae.windowMinutes>=10080).sort((Ae,at)=>(Ae.windowMinutes??0)-(at.windowMinutes??0))[0]??null;return Ie||(y.secondary??null)}function _u(h){if(typeof h!="number"||!Number.isFinite(h))return"";const y=new Date(h*1e3);return`${y.getMonth()+1}月${y.getDate()}日`}function ei(h){var Ae,at;if(Zr(h))return h.quotaError||"402 Payment Required";const y=h.quotaSnapshot,I=yu(h),se=(y==null?void 0:y.primary)??(y==null?void 0:y.secondary)??null,Ie=I??se;if(Ie){const Mn=Math.max(0,Math.min(100,100-Math.round(Ie.usedPercent))),eo=_u(Ie.resetsAt);return eo?`${Mn}% weekly remaining · ${eo}`:`${Mn}% weekly remaining`}return(Ae=y==null?void 0:y.credits)!=null&&Ae.unlimited?"Unlimited credits":(at=y==null?void 0:y.credits)!=null&&at.hasCredits&&y.credits.balance?`${y.credits.balance} credits`:h.quotaStatus==="loading"?"Loading quota…":h.quotaStatus==="error"?h.quotaError||"Quota unavailable":h.quotaStatus==="ready"||h.quotaStatus==="idle"?"Quota unavailable":"Fetching account details…"}function Nr(h){return[h.email||"Account",Ji(h),Zr(h)?"Unavailable account":null,ei(h),`Workspace ${h.accountId}`].filter(Boolean).join(`
@@ -88,5 +88,5 @@ ${P}`:s.value=P,Jt(()=>{var z;return(z=Re.value)==null?void 0:z.focus()}))}funct
88
88
  Then explain what this project does in very simple words a 5th grader can understand.`,imageUrls:[],fileAttachments:[],skills:[]})}function ni(h){const y=he.value.findIndex(Ae=>Ae.id===h),I=y>=0?he.value[y]:void 0,se=J.value;if(!I||!se||se.hasUnsavedDraft()&&!window.confirm("Replace the current draft with this queued message for editing?"))return;it.value=M.value?{threadId:M.value,queueIndex:y}:null;const Ie={text:I.text,imageUrls:[...I.imageUrls],fileAttachments:I.fileAttachments.map(Ae=>({...Ae})),skills:I.skills.map(Ae=>({...Ae}))};se.hydrateDraft(Ie),Ue(h)}function ta(){if(!$.value||Rn.value)return;const h=()=>{var y;(y=ce.value)==null||y.jumpToLatest()};h(),Jt(()=>{h(),!(typeof window>"u")&&window.requestAnimationFrame(()=>{h(),window.requestAnimationFrame(h)})})}function yl(h){ot.value=h.trim(),$e.value=""}function et(h){Qt.value=h.trim()}async function Wn(h){const y=h.trim();if(!y||xe.name!=="thread"){ar.value=[],Fn.value=null;return}qt.value=!0;try{const I=await CM(y);ar.value=I.options,Fn.value=I.currentBranch}catch{ar.value=[],Fn.value=null}finally{qt.value=!1}}function mo(h){if(h==="__review__"){jn.value=!jn.value;return}if(h==="__detached_head__"||vr.value)return;const y=h.trim();if(!y||y===(Fn.value??""))return;const I=$r.value.trim();I&&(vr.value=!0,AM(I,y).then(se=>(Fn.value=se||y,jn.value=!1,Wn(I))).catch(se=>{const Ie=se instanceof Error?se.message:"Failed to switch branch";window.alert(Ie)}).finally(()=>{vr.value=!1}))}async function Tb(){const h=await Eu();if(!h)return;await zo();const y=sn.value.trim()||"New Project (1)",I=window.prompt(`Create project in ${h}`,y);if(I===null)return;const se=I.trim();if(!se)return;const Ie=xp(Ap(h,se));if(Ie)try{const Ae=await _d(Ie,{createIfMissing:!0,label:""});if(!Ae)return;ot.value=Ae,fe(Rs(Ae)),await ri(),await zo()}catch(Ae){const at=Ae instanceof Error?Ae.message:"Failed to create the project.";window.alert(at)}}async function Eb(){const h=ot.value.trim()||await Eu();h&&(er.value=!1,Dt.value=!0,be.value="",await oi(h),W.value||Jt(()=>{var y;return(y=Uo.value)==null?void 0:y.focus()}))}function na(){Pr+=1,Dt.value=!1,w.value=!1,W.value="",be.value="",ra()}async function kb(h){!h||w.value||(be.value="",await oi(h))}function Ib(){const h=S.value.trim();!Dt.value||!h||oi(h)}function Cb(){const h=S.value.trim();!Dt.value||!h||w.value||oi(h)}async function kp(h=S.value){const y=h.trim();if(y){W.value="",P.value=!0;try{const I=await _d(y,{createIfMissing:!1,label:""});if(!I){W.value="Failed to open the selected folder.";return}ot.value=I,fe(Rs(I)),await ri(),await zo(),na()}catch(I){W.value=I instanceof Error?I.message:"Failed to open the selected folder."}finally{P.value=!1}}}async function Ab(){if($e.value="",er.value){ra();return}if(!Dt.value){const h=ot.value.trim()||await Eu();if(!h||(Dt.value=!0,be.value="",await oi(h),W.value))return}W.value||(ur.value=sn.value,er.value=!0,Jt(()=>{var h;return(h=lr.value)==null?void 0:h.focus()}))}function ra(){$e.value="",ur.value="",er.value=!1}async function Ip(){const h=ur.value.trim();if(!h)return;if($e.value="",W.value){$e.value="Reload the current folder before creating a new one.";return}ye.value=!0;const y=fl.value.trim(),I=xp(Ap(y,h));if(!I){$e.value="Unable to determine where the new folder should be created.",ye.value=!1;return}if(!Js.value){$e.value="Enter a single folder name.",ye.value=!1;return}try{const se=await RM(I);if(!se){$e.value="Failed to create the folder.";return}$e.value="",be.value="",await oi(se),ra()}catch(se){$e.value=se instanceof Error?se.message:"Failed to create folder."}finally{ye.value=!1}}async function xb(){var y;if(typeof window>"u")return!1;const h=((y=new URLSearchParams(window.location.search).get("openProjectPath"))==null?void 0:y.trim())??"";if(!h)return!1;try{const I=await _d(h,{createIfMissing:!1,label:""});if(!I)return!1;ot.value=I,fe(Rs(I)),await R.replace({name:"home"}),await ri();const se=new URL(window.location.href);return se.searchParams.delete("openProjectPath"),window.history.replaceState({},"",se.toString()),!0}catch{return!1}}async function Eu(){const h=Cp();if(h)return h;try{const y=await hg();if(y)return Gr.value=y,y}catch{}return""}async function zo(){const h=Cp();if(!h){sn.value="New Project (1)";return}try{const y=await MM(h);sn.value=y.name||"New Project (1)"}catch{sn.value="New Project (1)"}}function Cp(){var I,se;const h=ot.value.trim();if(h)return fd(h);const y=((se=(I=zi.value[0])==null?void 0:I.value)==null?void 0:se.trim())??"";return y?fd(y):Gr.value.trim()}async function Rb(){try{Gr.value=await hg()}catch{Gr.value=""}}async function ri(){try{const h=await Ms();Xn.value={order:[...h.order],labels:{...h.labels}}}catch{Xn.value={order:[],labels:{}}}}async function oi(h){const y=++Pr;S.value=en(h).trim(),W.value="",w.value=!0;try{const I=await xM(h,{showHidden:z.value});if(y!==Pr)return;S.value=I.path,x.value=I.parentPath,L.value=I.entries}catch(I){if(y!==Pr)return;W.value=I instanceof Error?I.message:"Failed to load local folders.",x.value=fd(S.value),L.value=[],ra()}finally{y===Pr&&(w.value=!1)}}async function ku(){We.value=!0;try{Oe.value=await jM(st.value,6)}catch{Oe.value=[]}finally{We.value=!1}}function Ap(h,y){const I=en(h).trim(),se=en(y).trim().replace(/^[\\/]+/u,"");if(!I||!se)return"";const Ie=I.includes("\\")&&!I.includes("/")?"\\":"/";if(/^[a-zA-Z]:[\\/]?$/u.test(I))return`${I.slice(0,2)}${Ie}${se}`;if(/^\/+$/u.test(I))return`/${se}`;const Ae=I.replace(/[\\/]+$/u,"");return Ae?`${Ae}${Ie}${se}`:""}function xp(h){const y=en(h).trim();if(!y)return"";const I=y.match(/^\\\\([^\\/]+)[\\/]+([^\\/]+)([\\/].*)?$/u);if(I){const[,Ie,Ae,at=""]=I,Mn=Iu(at.split(/[\\/]+/u));return Mn.length>0?`\\\\${Ie}\\${Ae}\\${Mn.join("\\")}`:`\\\\${Ie}\\${Ae}`}const se=y.match(/^([a-zA-Z]:)([\\/].*)?$/u);if(se){const[,Ie,Ae=""]=se,at=y.includes("\\")&&!y.includes("/")?"\\":"/",Mn=Iu(Ae.split(/[\\/]+/u));return Mn.length>0?`${Ie}${at}${Mn.join(at)}`:`${Ie}${at}`}if(y.startsWith("/")){const Ie=Iu(y.split("/"));return Ie.length>0?`/${Ie.join("/")}`:"/"}return y}function Iu(h){const y=[];for(const I of h){const se=I.trim();if(!(!se||se===".")){if(se===".."){y.length>0&&y.pop();continue}y.push(se)}}return y}function Rp(h){k(h)}function Mp(h){q(h)}function Pp(h){te(h)}function Mb(){Se()}function Pb(h){const y=h.turnId.trim();if(y.length>0){const I=[...gs.value].reverse().find(se=>{var Ie;return se.role==="user"&&(((Ie=se.turnId)==null?void 0:Ie.trim())??"")===y&&se.text.trim().length>0});I!=null&&I.text&&J.value&&J.value.appendTextToDraft(I.text)}we(h.turnId)}function $b(){if(Rn.value||qo.value||typeof document>"u"||!f.value||gs.value.length===0)return;const h=Nb(),y=Ob(),I=new Blob([h],{type:"text/markdown;charset=utf-8"}),se=URL.createObjectURL(I),Ie=document.createElement("a");Ie.href=se,Ie.download=y,document.body.appendChild(Ie),Ie.click(),document.body.removeChild(Ie),window.setTimeout(()=>URL.revokeObjectURL(se),0)}function Nb(){var I,se,Ie;const h=[],y=((se=(I=f.value)==null?void 0:I.title)==null?void 0:se.trim())||"Untitled thread";h.push(`# ${Lb(y)}`),h.push(""),h.push(`- Exported: ${new Date().toISOString()}`),h.push(`- Thread ID: ${((Ie=f.value)==null?void 0:Ie.id)??""}`),h.push(""),h.push("---"),h.push("");for(const Ae of gs.value){const at=Ae.role?Ae.role.toUpperCase():"MESSAGE";h.push(`## ${at}`),h.push("");const Mn=Ae.text.trim();if(Mn&&(h.push(Mn),h.push("")),Ae.commandExecution&&(h.push("```text"),h.push(`command: ${Ae.commandExecution.command}`),h.push(`status: ${Ae.commandExecution.status}`),Ae.commandExecution.cwd&&h.push(`cwd: ${Ae.commandExecution.cwd}`),Ae.commandExecution.exitCode!==null&&h.push(`exitCode: ${Ae.commandExecution.exitCode}`),h.push(Ae.commandExecution.aggregatedOutput||"(no output)"),h.push("```"),h.push("")),Ae.fileAttachments&&Ae.fileAttachments.length>0){h.push("Attachments:");for(const eo of Ae.fileAttachments)h.push(`- ${eo.path}`);h.push("")}if(Ae.images&&Ae.images.length>0){h.push("Images:");for(const eo of Ae.images)h.push(`- ${eo}`);h.push("")}}return`${h.join(`
89
89
  `).trimEnd()}
90
90
  `}function Ob(){var Ie,Ae;const I=(((Ae=(Ie=f.value)==null?void 0:Ie.title)==null?void 0:Ae.trim())||"chat").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"chat",se=new Date().toISOString().replace(/[:.]/g,"-");return`${I}-${se}.md`}function Lb(h){return h.replace(/([\\`*_{}\[\]()#+\-.!])/g,"\\$1")}function _l(h,y){if(typeof window>"u")return y;const I=window.localStorage.getItem(h);return I===null?y:I==="1"}function Db(){if(typeof window>"u")return"system";const h=window.localStorage.getItem(Lg);return h==="light"||h==="dark"?h:"system"}function jb(){return typeof window>"u"?"steer":window.localStorage.getItem(Og)==="queue"?"queue":"steer"}function Fb(){if(typeof window>"u")return"standard";const h=window.localStorage.getItem(Ug);return h==="standard"||h==="wide"||h==="extra-wide"?h:"standard"}function Bb(){Bn.value=!Bn.value,window.localStorage.setItem(Ng,Bn.value?"1":"0")}function Ub(){xn.value=xn.value==="steer"?"queue":"steer",window.localStorage.setItem(Og,xn.value)}function qb(){const h=["system","light","dark"],y=h.indexOf(yt.value);yt.value=h[(y+1)%h.length],window.localStorage.setItem(Lg,yt.value),bl()}function Hb(){const h=["standard","wide","extra-wide"],y=h.indexOf(St.value);St.value=h[(y+1)%h.length],window.localStorage.setItem(Ug,St.value)}function Wb(){yr.value=!yr.value,window.localStorage.setItem(Dg,yr.value?"1":"0")}function Vb(){Un.value=!Un.value,window.localStorage.setItem(jg,Un.value?"1":"0")}function zb(){vn.value=!vn.value,window.localStorage.setItem(Bg,vn.value?"1":"0")}async function Gb(h){if(!Kr.value){Kr.value=!0;try{if(h==="codex"){Tn.value="codex";const y=await fg(!1);Qn.value=y.enabled}else if(h==="openrouter"){Tn.value="openrouter";const y=await fg(!0);Qn.value=y.enabled}else h==="custom"&&(Tn.value="custom");await Te({includeSelectedThreadMessages:!1})}catch{}finally{Kr.value=!1}}}async function Cu(){if(Wt.value)return;const h=_r.value.trim();if(h){Wt.value=!0;try{await wM(h,Hn.value.trim()),Qn.value=!0,await Te({includeSelectedThreadMessages:!1})}catch{}finally{Wt.value=!1}}}async function $p(){if(!Wt.value){Wt.value=!0;try{const h=Zn.value.trim();await pg(h),Zn.value="",await Au(),await Te({includeSelectedThreadMessages:!1})}catch{}finally{Wt.value=!1}}}async function Kb(){if(!Wt.value){Wt.value=!0;try{await pg(""),Zn.value="",await Au(),await Te({includeSelectedThreadMessages:!1})}catch{}finally{Wt.value=!1}}}async function Au(){try{const h=await bM();Qn.value=h.enabled,Yr.value=h.customKey??!1,qn.value=h.maskedKey??null,h.enabled?h.provider==="custom"?(Tn.value="custom",_r.value=h.customBaseUrl??""):Tn.value="openrouter":Tn.value="codex"}catch{}}function Yb(h){const I=xu(h.trim())||"auto";cr.value=I,window.localStorage.setItem(Fg,I)}function Jb(){var I;if(typeof window>"u")return"auto";const h=((I=window.localStorage.getItem(Fg))==null?void 0:I.trim())||"auto";return xu(h)||"auto"}function Xb(){const h=[{value:"auto",label:"Auto-detect"}],y=new Set(["auto"]);function I(Ie){const Ae=l[Ie]||Ie;return`${Ae.charAt(0).toUpperCase()+Ae.slice(1)} (${Ie})`}for(const Ie of typeof navigator<"u"?navigator.languages??[]:[]){const Ae=xu(Ie);!Ae||y.has(Ae)||(y.add(Ae),h.push({value:Ae,label:`Preferred: ${I(Ae)}`}))}for(const Ie of Object.keys(l))y.has(Ie)||(y.add(Ie),h.push({value:Ie,label:I(Ie)}));const se=cr.value.trim();return se&&!y.has(se)&&h.push({value:se,label:I(se)}),h}function xu(h){const y=h.trim().toLowerCase();if(!y||y==="auto")return"";if(y in l)return y;const I=y.split("-")[0]??y;return I in l?I:""}function bl(){const h=document.documentElement;if(yt.value==="dark")h.classList.add("dark");else if(yt.value==="light")h.classList.remove("dark");else{const y=window.matchMedia("(prefers-color-scheme: dark)").matches;h.classList.toggle("dark",y)}}function Qb(){return typeof window>"u"?!1:window.localStorage.getItem(Pg)==="1"}function Zb(h){typeof window>"u"||window.localStorage.setItem(Pg,h?"1":"0")}function ew(){if(typeof window>"u")return!0;const h=window.localStorage.getItem($g);return h===null?!0:h==="1"}function tw(){hn.value=!hn.value,!(typeof window>"u")&&window.localStorage.setItem($g,hn.value?"1":"0")}function nw(h,y){const I=(h??"").trim();return I.length>0?I:y.trim()||"message"}function Np(h){T(h)}async function rw(){await R.isReady(),xe.name==="thread"&&po.value&&ke(po.value),ne(),await Te({includeSelectedThreadMessages:!0}),ti({silent:!0}),await xb(),on.value=!0,await Ru()}async function Ru(){if($t.value){_t=!0;return}$t.value=!0;try{do{if(_t=!1,xe.name==="home"||xe.name==="skills"){M.value!==""&&await Ee("");continue}if(xe.name==="thread"){const h=po.value;if(!h)continue;if(!al.value.has(h)){await R.replace({name:"home"});continue}M.value!==h?await Ee(h):Fe(h,{silent:!0})}}while(_t)}finally{$t.value=!1}}ut(()=>[xe.name,po.value,De.value,al.value.has(po.value),M.value],async()=>{on.value&&await Ru()}),ut(()=>M.value,async h=>{if(on.value&&!$t.value&&!(Rn.value||qo.value)){if(!h){xe.name!=="home"&&await R.replace({name:"home"});return}xe.name==="thread"&&po.value===h||await R.replace({name:"thread",params:{threadId:h}})}}),ut(()=>st.value,()=>{vn.value&&ku()}),ut(()=>vn.value,h=>{if(!h){Oe.value=[];return}ku()}),ut(()=>[on.value,xe.name,M.value],([h,y,I])=>{h&&y==="thread"&&I&&Fe(I,{silent:!0})}),ut(()=>zi.value,h=>{if(h.length===0){ot.value="";return}h.some(I=>I.value===ot.value)||(ot.value=h[0].value),zo()},{immediate:!0}),ut(()=>ot.value,()=>{zt.value={phase:"idle",title:"",message:""},zo()}),ut(()=>[fn.value,ot.value],([h,y])=>{h==="worktree"&&Op(y)},{immediate:!0}),ut(()=>fn.value,h=>{var y;if(h==="local"){zt.value={phase:"idle",title:"",message:""};const I=ot.value.trim();if(I&&Qi(I)){const se=((y=f.value)==null?void 0:y.projectName)??Rs(I),Ie=Zi(se,"");Ie&&(ot.value=Ie)}return}Op(ot.value)}),ut(()=>xe.name,h=>{h!=="home"&&(zt.value={phase:"idle",title:"",message:""}),h!=="thread"&&(jn.value=!1)}),ut(()=>M.value,()=>{zt.value={phase:"idle",title:"",message:""}}),ut(()=>[xe.name,$r.value],([h,y])=>{if(h!=="thread"){ar.value=[],Fn.value=null;return}Wn(y)},{immediate:!0}),ut(zc,h=>{typeof document>"u"||(document.title=h)},{immediate:!0}),ut($,h=>{h&&!kt.value&&Be(!0)});async function ow(h,y=[],I=[],se=[]){try{zt.value={phase:"idle",title:"",message:""};let Ie=ot.value;if(fn.value==="worktree"){zt.value={phase:"running",title:"Creating worktree",message:"Creating a worktree and running setup."};try{const at=await kM(ot.value,Qt.value);Ie=at.cwd,ot.value=at.cwd,zt.value={phase:"idle",title:"",message:""}}catch{zt.value={phase:"error",title:"Worktree setup failed",message:"Unable to create worktree. Try again or switch to Local project."};return}}const Ae=await Y(h,Ie,y,I,se);if(!Ae)return;await R.replace({name:"thread",params:{threadId:Ae}}),ta()}catch{}}async function Op(h){var I;const y=h.trim();if(!y){mr.value=[],Qt.value="";return}ir.value=!0;try{const se=await IM(y);mr.value=se;const Ie=Qt.value.trim();if(!(Ie.length>0&&se.some(at=>at.value===Ie))){const at=se.find(Mn=>Mn.value.trim()==="main");Qt.value=(at==null?void 0:at.value)??((I=se[0])==null?void 0:I.value)??""}}catch{mr.value=[],Qt.value=""}finally{ir.value=!1}}return(h,y)=>(A(),ht(vR,{"is-sidebar-collapsed":kt.value,onCloseSidebar:y[19]||(y[19]=I=>Be(!0))},{sidebar:Ct(()=>[_("section",ZD,[_("div",ej,[kt.value?ge("",!0):(A(),ht(Sg,{key:0,class:"sidebar-thread-controls-host","is-sidebar-collapsed":kt.value,"show-new-thread-button":!0,onToggleSidebar:y[0]||(y[0]=I=>Be(!kt.value)),onStartNewThread:p},{default:Ct(()=>[_("button",{class:"sidebar-search-toggle",type:"button","aria-pressed":Ut.value,"aria-label":"Search threads",title:"Search threads",onClick:cu},[ze(Tg,{class:"sidebar-search-toggle-icon"})],8,tj)]),_:1},8,["is-sidebar-collapsed"])),!kt.value&&Ut.value?(A(),D("div",nj,[ze(Tg,{class:"sidebar-search-bar-icon"}),Kn(_("input",{ref_key:"sidebarSearchInputRef",ref:uo,"onUpdate:modelValue":y[1]||(y[1]=I=>pn.value=I),class:"sidebar-search-input",type:"text",placeholder:"Filter threads...",onKeydown:hl},null,544),[[rr,pn.value]]),pn.value.length>0?(A(),D("button",{key:0,class:"sidebar-search-clear",type:"button","aria-label":"Clear search",onClick:uu},[ze(vD,{class:"sidebar-search-clear-icon"})])):ge("",!0)])):ge("",!0),kt.value?ge("",!0):(A(),D("button",{key:2,class:pt(["sidebar-skills-link",{"is-active":qo.value}]),type:"button",onClick:y[2]||(y[2]=I=>{He(R).push({name:"skills"}),He($)&&Be(!0)})}," Skills Hub ",2)),kt.value?ge("",!0):(A(),ht(O$,{key:3,groups:He(u),"project-display-name-by-id":He(d),"selected-thread-id":He(M),"is-loading":He(De),"search-query":pn.value,"search-matched-thread-ids":zr.value,onSelect:du,onArchive:wu,onStartNewThread:Tu,onRenameProject:g,onBrowseThreadFiles:c,onRenameThread:b,onForkThread:Su,onRemoveProject:j,onReorderProject:B,onExportThread:fu},null,8,["groups","project-display-name-by-id","selected-thread-id","is-loading","search-query","search-matched-thread-ids"]))]),kt.value?ge("",!0):(A(),D("div",{key:0,ref_key:"settingsAreaRef",ref:ms,class:"sidebar-settings-area",onClick:nn},[ze(ey,{name:"settings-panel"},{default:Ct(()=>[wn.value?(A(),D("div",{key:0,ref_key:"settingsPanelRef",ref:fo,class:"sidebar-settings-panel",onClick:y[10]||(y[10]=ft(()=>{},["stop"]))},[_("div",rj,[_("div",oj,[_("div",sj,[_("button",{class:"sidebar-settings-account-collapse",type:"button","aria-expanded":!hn.value,title:hn.value?"Expand accounts":"Collapse accounts",onClick:tw},[_("span",aj,ue(hn.value?"▸":"▾"),1)],8,ij),y[20]||(y[20]=_("span",{class:"sidebar-settings-account-title"},"Accounts",-1)),_("span",lj,ue(mn.value.length),1)]),_("button",{class:"sidebar-settings-account-refresh",type:"button",disabled:Ht.value||It.value,onClick:bu},ue(Ht.value?"Reloading…":"Reload"),9,cj)]),hn.value?ge("",!0):(A(),D(Qe,{key:0},[gn.value?(A(),D("p",uj,ue(gn.value),1)):ge("",!0),mn.value.length===0?(A(),D("p",dj," Run `codex login`, then click reload. ")):(A(),D("div",fj,[(A(!0),D(Qe,null,Bt(mn.value,I=>(A(),D("article",{key:I.accountId,class:pt(["sidebar-settings-account-item",{"is-active":I.isActive,"is-unavailable":Zr(I),"is-confirming-remove":Qs(I),"is-remove-visible":ml(I)}]),title:Nr(I),onMouseenter:se=>gu(I.accountId),onMouseleave:se=>vu(I.accountId)},[_("div",hj,[_("p",mj,ue(I.email||"Account"),1),_("p",gj,ue(Ji(I)),1),_("p",vj,ue(ei(I)),1),_("p",yj," Workspace "+ue(pu(I.accountId)),1)]),_("div",_j,[_("button",{class:"sidebar-settings-account-switch",type:"button",disabled:Xi(I)||I.isActive||Zr(I),onClick:se=>gl(I.accountId)},ue(Zs(I)),9,bj),_("button",{class:pt(["sidebar-settings-account-remove",{"is-visible":ml(I),"is-confirming":Qs(I)}]),type:"button",disabled:Xi(I),onClick:se=>vl(I.accountId)},ue(mu(I)),11,wj)])],42,pj))),128))]))],64))]),_("button",{class:"sidebar-settings-row",type:"button",title:i.sendWithEnter,onClick:Bb},[y[21]||(y[21]=_("span",{class:"sidebar-settings-label"},"Require ⌘ + enter to send",-1)),_("span",{class:pt(["sidebar-settings-toggle",{"is-on":!Bn.value}])},null,2)],8,Sj),_("button",{class:"sidebar-settings-row",type:"button",title:i.inProgressSendMode,onClick:Ub},[y[22]||(y[22]=_("span",{class:"sidebar-settings-label"},"When busy, send as",-1)),_("span",Ej,ue(xn.value==="steer"?"Steer":"Queue"),1)],8,Tj),_("button",{class:"sidebar-settings-row",type:"button",title:i.appearance,onClick:qb},[y[23]||(y[23]=_("span",{class:"sidebar-settings-label"},"Appearance",-1)),_("span",Ij,ue(yt.value==="system"?"System":yt.value==="dark"?"Dark":"Light"),1)],8,kj),_("button",{class:"sidebar-settings-row",type:"button",title:i.chatWidth,onClick:Hb},[y[24]||(y[24]=_("span",{class:"sidebar-settings-label"},"Chat width",-1)),_("span",Aj,ue(su.value),1)],8,Cj),_("button",{class:"sidebar-settings-row",type:"button",title:i.dictationClickToToggle,onClick:Wb},[y[25]||(y[25]=_("span",{class:"sidebar-settings-label"},"Click to toggle dictation",-1)),_("span",{class:pt(["sidebar-settings-toggle",{"is-on":yr.value}])},null,2)],8,xj),_("button",{class:"sidebar-settings-row",type:"button",title:i.dictationAutoSend,onClick:Vb},[y[26]||(y[26]=_("span",{class:"sidebar-settings-label"},"Auto send dictation",-1)),_("span",{class:pt(["sidebar-settings-toggle",{"is-on":Un.value}])},null,2)],8,Rj),_("button",{class:"sidebar-settings-row",type:"button",title:i.githubTrendingProjects,onClick:zb},[y[27]||(y[27]=_("span",{class:"sidebar-settings-label"},"GitHub trending projects",-1)),_("span",{class:pt(["sidebar-settings-toggle",{"is-on":vn.value}])},null,2)],8,Mj),_("div",Pj,[y[29]||(y[29]=_("span",{class:"sidebar-settings-label"},"Provider",-1)),_("select",{class:"sidebar-settings-provider-select",value:Tn.value,disabled:Kr.value,onChange:y[3]||(y[3]=I=>Gb(I.target.value))},[...y[28]||(y[28]=[_("option",{value:"codex"},"Codex",-1),_("option",{value:"openrouter"},"OpenRouter",-1),_("option",{value:"custom"},"Custom endpoint",-1)])],40,$j)]),Tn.value==="openrouter"?(A(),D("div",Nj,[y[30]||(y[30]=_("div",{class:"sidebar-settings-provider-info"},[_("span",{class:"sidebar-settings-label"},"OpenRouter API key"),_("a",{class:"sidebar-settings-provider-link",href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer"},"Get API key")],-1)),_("div",Oj,[Yr.value&&!Zn.value?(A(),D(Qe,{key:0},[_("span",Lj,ue(qn.value),1),_("button",{class:"sidebar-settings-key-clear",type:"button",disabled:Wt.value,title:"Remove custom key, use community keys",onClick:Kb},"✕",8,Dj)],64)):(A(),D(Qe,{key:1},[Kn(_("input",{"onUpdate:modelValue":y[4]||(y[4]=I=>Zn.value=I),class:"sidebar-settings-key-input",type:"password",placeholder:"sk-or-v1-... (optional, uses free keys if empty)",onKeydown:Zt($p,["enter"])},null,544),[[rr,Zn.value]]),_("button",{class:"sidebar-settings-key-save",type:"button",disabled:Wt.value||!Zn.value.trim(),onClick:$p},ue(Wt.value?"...":"Set"),9,jj)],64))])])):ge("",!0),Tn.value==="custom"?(A(),D("div",Fj,[y[31]||(y[31]=_("span",{class:"sidebar-settings-label"},"Custom endpoint URL",-1)),_("div",Bj,[Kn(_("input",{"onUpdate:modelValue":y[5]||(y[5]=I=>_r.value=I),class:"sidebar-settings-key-input",type:"url",placeholder:"https://api.example.com/v1",onKeydown:Zt(Cu,["enter"])},null,544),[[rr,_r.value]])]),y[32]||(y[32]=_("span",{class:"sidebar-settings-label",style:{"margin-top":"4px"}},"API key",-1)),_("div",Uj,[Kn(_("input",{"onUpdate:modelValue":y[6]||(y[6]=I=>Hn.value=I),class:"sidebar-settings-key-input",type:"password",placeholder:"Bearer token (optional)",onKeydown:Zt(Cu,["enter"])},null,544),[[rr,Hn.value]]),_("button",{class:"sidebar-settings-key-save",type:"button",disabled:Wt.value||!_r.value.trim(),onClick:Cu},ue(Wt.value?"...":"Save"),9,qj)])])):ge("",!0),_("div",{class:"sidebar-settings-row sidebar-settings-row--select",title:i.dictationLanguage},[y[33]||(y[33]=_("span",{class:"sidebar-settings-label"},"Dictation language",-1)),ze(Os,{class:"sidebar-settings-language-dropdown","model-value":cr.value,options:Bo.value,placeholder:"Auto-detect","open-direction":"up","enable-search":!0,"search-placeholder":"Search language...","onUpdate:modelValue":Yb},null,8,["model-value","options"])],8,Hj),_("button",{class:"sidebar-settings-row",type:"button","aria-live":"polite",onClick:y[7]||(y[7]=I=>an.value=!an.value)},[y[34]||(y[34]=_("span",{class:"sidebar-settings-label"},"Telegram",-1)),_("span",Wj,ue(vs.value),1)]),an.value?(A(),D("div",Vj,[_("label",zj,[y[35]||(y[35]=_("span",{class:"sidebar-settings-field-label"},"Bot token",-1)),Kn(_("input",{"onUpdate:modelValue":y[8]||(y[8]=I=>Mr.value=I),class:"sidebar-settings-input",type:"password",placeholder:"123456:ABCDEF",autocomplete:"off",spellcheck:"false"},null,512),[[rr,Mr.value]])]),_("label",Gj,[y[36]||(y[36]=_("span",{class:"sidebar-settings-field-label"},"Allowed Telegram user IDs",-1)),Kn(_("textarea",{"onUpdate:modelValue":y[9]||(y[9]=I=>br.value=I),class:"sidebar-settings-textarea",rows:"3",placeholder:`123456789
91
- 987654321`,spellcheck:"false"},null,512),[[rr,br.value]])]),y[37]||(y[37]=_("div",{class:"sidebar-settings-field-help"}," Put one Telegram user ID per line or separate them with commas. Use `*` to allow all Telegram users. Unauthorized users will see their own ID in the rejection message so they can copy it here. ",-1)),yn.value?(A(),D("div",Kj,ue(yn.value),1)):ge("",!0),_("div",Yj,[_("button",{class:"sidebar-settings-telegram-save",type:"button",disabled:Jr.value,onClick:lu},ue(Jr.value?"Saving…":"Save Telegram config"),9,Jj)])])):ge("",!0),Kc.value?(A(),D("div",{key:3,class:"sidebar-settings-row sidebar-settings-context-row","data-state":ul.value,title:Qc.value},[y[38]||(y[38]=_("span",{class:"sidebar-settings-label"},"Context",-1)),_("span",{class:"sidebar-settings-context-value","data-state":ul.value},[Fs(ue(Jc.value)+" ",1),_("span",Zj,ue(Xc.value),1)],8,Qj)],8,Xj)):ge("",!0),_("div",eF,[ze(WL,{snapshots:He(Pe)},null,8,["snapshots"])]),_("div",tF," WT "+ue(He(o))+" · v"+ue(He(s)),1)],512)):ge("",!0)]),_:1}),_("button",{ref_key:"settingsButtonRef",ref:gr,class:"sidebar-settings-button",type:"button",onClick:y[11]||(y[11]=ft(I=>wn.value=!wn.value,["stop"]))},[ze(pD,{class:"sidebar-settings-icon"}),y[39]||(y[39]=_("span",null,"Settings",-1)),_("span",nF,ue(He(o))+" · v"+ue(He(s)),1)],512)],512))])]),content:Ct(()=>[_("section",{class:"content-root",style:ko(iu.value)},[ze(U$,{title:ll.value},{leading:Ct(()=>[kt.value||He($)?(A(),ht(Sg,{key:0,class:"sidebar-thread-controls-header-host","is-sidebar-collapsed":kt.value,"show-new-thread-button":!0,onToggleSidebar:y[12]||(y[12]=I=>Be(!kt.value)),onStartNewThread:p},null,8,["is-sidebar-collapsed"])):ge("",!0)]),actions:Ct(()=>[He(xe).name==="thread"&&He(M)?(A(),ht(Os,{key:0,class:pt(["content-header-branch-dropdown",{"is-review-open":jn.value}]),"model-value":Zc.value,options:eu.value,disabled:qt.value||vr.value,"enable-search":!0,"search-placeholder":"Search branches...","onUpdate:modelValue":mo},null,8,["class","model-value","options","disabled"])):ge("",!0)]),_:1},8,["title"]),_("section",rF,[qo.value?(A(),ht(He(r),{key:0,onSkillsChanged:Qr})):Rn.value?(A(),D("div",oF,[_("div",sF,[y[46]||(y[46]=_("p",{class:"new-thread-hero"},"Let's build",-1)),ze(Os,{class:"new-thread-folder-dropdown","model-value":ot.value,options:zi.value,placeholder:"Choose folder","enable-search":!0,"search-placeholder":"Quick search project",disabled:!1,"onUpdate:modelValue":yl},null,8,["model-value","options"]),ot.value?(A(),D("p",{key:0,class:"new-thread-folder-selected",title:ot.value}," Selected folder: "+ue(ot.value),9,iF)):ge("",!0),_("div",{class:"new-thread-folder-actions"},[_("button",{class:"new-thread-folder-action new-thread-folder-action-primary",type:"button",onClick:Eb}," Select folder "),_("button",{class:"new-thread-folder-action",type:"button",onClick:Tb}," Create Project ")]),(A(),ht(ma,{to:"body"},[Dt.value?(A(),D("div",{key:0,class:"new-thread-open-folder-overlay",onClick:ft(na,["self"])},[_("div",{class:"new-thread-open-folder",role:"dialog","aria-modal":"true","aria-label":"Select folder",onKeydown:Zt(ft(na,["prevent"]),["esc"])},[_("div",{class:"new-thread-open-folder-header"},[y[40]||(y[40]=_("p",{class:"new-thread-open-folder-title"},"Select folder",-1)),_("button",{class:"new-thread-open-folder-close",type:"button",onClick:na}," Cancel ")]),y[42]||(y[42]=_("p",{class:"new-thread-open-folder-label"},"Current folder",-1)),_("div",lF,[_("p",{class:"new-thread-open-folder-path",title:S.value||"Unavailable"},ue(S.value||"Unavailable"),9,cF),_("button",{class:"new-thread-folder-action new-thread-folder-action-primary",type:"button",disabled:!S.value||!!W.value||w.value||P.value,onClick:y[13]||(y[13]=I=>kp())},ue(P.value?"Opening…":"Open"),9,uF)]),_("div",dF,[_("label",fF,[Kn(_("input",{"onUpdate:modelValue":y[14]||(y[14]=I=>z.value=I),class:"new-thread-open-folder-toggle-input",type:"checkbox",onChange:Ib},null,544),[[AT,z.value]]),y[41]||(y[41]=_("span",null,"Show hidden folders",-1))]),_("button",{class:pt(["new-thread-folder-action",{"new-thread-folder-action-primary":er.value}]),type:"button","aria-pressed":er.value,disabled:!S.value||w.value||P.value||ye.value||!!W.value&&!er.value,onClick:Ab}," New folder ",10,pF)]),er.value?(A(),D("div",hF,[_("div",mF,[Kn(_("input",{ref_key:"createFolderInputRef",ref:lr,"onUpdate:modelValue":y[15]||(y[15]=I=>ur.value=I),class:"new-thread-open-folder-create-input",type:"text",placeholder:"Folder name",onKeydown:[Zt(ft(Ip,["prevent"]),["enter"]),Zt(ft(ra,["prevent"]),["esc"])]},null,40,gF),[[rr,ur.value]]),_("button",{class:"new-thread-folder-action new-thread-folder-action-primary new-thread-open-folder-create-submit",type:"button",disabled:!tu.value||ye.value,onClick:Ip},ue(nu.value),9,vF)]),$e.value?(A(),D("p",yF,ue($e.value),1)):ge("",!0)])):ge("",!0),Kn(_("input",{ref_key:"existingFolderFilterInputRef",ref:Uo,"onUpdate:modelValue":y[16]||(y[16]=I=>be.value=I),class:"new-thread-open-folder-filter",type:"text",placeholder:"Filter folders...",onKeydown:Zt(ft(na,["prevent"]),["esc"])},null,40,_F),[[rr,be.value]]),W.value?(A(),D("div",bF,[_("p",wF,ue(W.value),1),_("button",{class:"new-thread-folder-action",type:"button",disabled:w.value||P.value,onClick:Cb}," Retry ",8,SF)])):ge("",!0),w.value?(A(),D("p",TF,"Loading folders…")):!W.value&&Ki.value.length===0?(A(),D("p",EF,ue(be.value.trim()?"No folders match this filter.":"No subfolders found here."),1)):Ki.value.length>0?(A(),D("ul",kF,[(A(!0),D(Qe,null,Bt(Ki.value,I=>(A(),D("li",{key:I.key,class:"new-thread-open-folder-item"},[_("button",{class:"new-thread-open-folder-item-main",type:"button",title:I.path,disabled:w.value||P.value,onClick:se=>kb(I.path)},[_("span",CF,ue(I.name),1)],8,IF),I.kind==="directory"?(A(),D("button",{key:0,class:"new-thread-open-folder-item-open",type:"button",disabled:w.value||P.value,onClick:se=>kp(I.path)}," Open ",8,AF)):ge("",!0)]))),128))])):ge("",!0)],40,aF)])):ge("",!0)])),ze(YL,{class:"new-thread-runtime-dropdown",modelValue:fn.value,"onUpdate:modelValue":y[17]||(y[17]=I=>fn.value=I)},null,8,["modelValue"]),fn.value==="worktree"?(A(),D("div",xF,[y[43]||(y[43]=_("p",{class:"new-thread-branch-select-label"},"Base branch",-1)),ze(Os,{class:"new-thread-branch-dropdown","model-value":Qt.value,options:Gi.value,placeholder:"Select branch","enable-search":!0,"search-placeholder":"Search branches...",disabled:ir.value||Gi.value.length===0,"onUpdate:modelValue":et},null,8,["model-value","options","disabled"]),_("p",RF,ue(ir.value?"Loading branches…":dl.value?`New worktree branch will start from ${dl.value}.`:"No Git branches found for this folder."),1)])):ge("",!0),y[47]||(y[47]=_("p",{class:"new-thread-runtime-help"},[_("code",null,"Local project"),Fs(" uses the selected folder directly. "),_("code",null,"New worktree"),Fs(" creates an isolated Git worktree before the first prompt. ")],-1)),zt.value.phase!=="idle"?(A(),D("div",{key:2,class:pt(["worktree-init-status",{"is-running":zt.value.phase==="running","is-error":zt.value.phase==="error"}])},[_("strong",MF,ue(zt.value.title),1),_("span",PF,ue(zt.value.message),1)],2)):ge("",!0),vn.value?(A(),D("div",$F,[_("div",NF,[y[44]||(y[44]=_("p",{class:"new-thread-trending-title"},"Trending GitHub projects",-1)),ze(Os,{class:"new-thread-trending-scope-dropdown","model-value":st.value,options:ou.value,"onUpdate:modelValue":Vo},null,8,["model-value","options"])]),We.value?(A(),D("p",OF,"Loading trending projects...")):Oe.value.length===0?(A(),D("p",LF," Trending repos are unavailable right now. ")):(A(),D("div",DF,[(A(!0),D(Qe,null,Bt(Oe.value,I=>(A(),D("button",{key:I.id,type:"button",class:"new-thread-trending-tip",onClick:se=>Ss(I)},[_("span",{class:"new-thread-trending-tip-name",title:I.fullName},[I.owner&&I.repo?(A(),D(Qe,{key:0},[_("span",BF,ue(I.owner),1),y[45]||(y[45]=_("span",{class:"new-thread-trending-tip-name-slash"},"/",-1)),_("span",UF,ue(I.repo),1)],64)):(A(),D("span",qF,ue(I.fullName),1))],8,FF),_("span",HF,ue(ws(I)),1),_("span",WF,ue(I.description||"No description available."),1)],8,jF))),128))]))])):ge("",!0)]),_("div",VF,[ze(wg,{ref_key:"homeThreadComposerRef",ref:F,"active-thread-id":Hi.value,cwd:$r.value,"collaboration-modes":He(O),"selected-collaboration-mode":He(K),models:He(V),"selected-model":He(de),"selected-reasoning-effort":He(oe),"selected-speed-mode":He(ee),"is-updating-speed-mode":He(_e),skills:He(ve),"thread-token-usage":He(m),"codex-quota":He(H),"is-turn-in-progress":!1,"is-stop-pending":!1,"is-interrupting-turn":!1,"send-with-enter":Bn.value,"in-progress-submit-mode":xn.value,"dictation-click-to-toggle":yr.value,"dictation-auto-send":Un.value,"dictation-language":cr.value,onSubmit:Wo,"onUpdate:selectedCollaborationMode":Np,"onUpdate:selectedModel":Rp,"onUpdate:selectedReasoningEffort":Mp,"onUpdate:selectedSpeedMode":Pp},null,8,["active-thread-id","cwd","collaboration-modes","selected-collaboration-mode","models","selected-model","selected-reasoning-effort","selected-speed-mode","is-updating-speed-mode","skills","thread-token-usage","codex-quota","send-with-enter","in-progress-submit-mode","dictation-click-to-toggle","dictation-auto-send","dictation-language"])])])):(A(),D("div",zF,[jn.value&&He(M)&&$r.value?(A(),ht(He(n),{key:0,"thread-id":He(M),cwd:$r.value,"is-thread-in-progress":Wi.value,onClose:y[18]||(y[18]=I=>jn.value=!1)},null,8,["thread-id","cwd","is-thread-in-progress"])):(A(),D(Qe,{key:1},[_("div",GF,[ze(He(t),{ref_key:"threadConversationRef",ref:ce,messages:gs.value,"is-loading":He(Q),"active-thread-id":Hi.value,cwd:$r.value,"scroll-state":He(v),"live-overlay":Gc.value,"pending-requests":He(E),onUpdateScrollState:U,onForkThread:je,onRollback:Pb,onRespondServerRequest:G},null,8,["messages","is-loading","active-thread-id","cwd","scroll-state","live-overlay","pending-requests"])]),_("div",KF,[ze(OL,{messages:He(he),onEdit:ni,onSteer:He(Ze),onDelete:He(Ue)},null,8,["messages","onSteer","onDelete"]),cl.value?(A(),ht(IL,{key:0,request:cl.value,"request-count":He(E).length,"has-queue-above":He(he).length>0,onRespondServerRequest:G},null,8,["request","request-count","has-queue-above"])):(A(),ht(wg,{key:1,ref_key:"threadComposerRef",ref:J,"active-thread-id":Hi.value,cwd:$r.value,"collaboration-modes":He(O),"selected-collaboration-mode":He(K),models:He(V),"selected-model":He(de),"selected-reasoning-effort":He(oe),"selected-speed-mode":He(ee),"is-updating-speed-mode":He(_e),skills:He(ve),"thread-token-usage":He(m),"codex-quota":He(H),"is-turn-in-progress":Wi.value,"is-stop-pending":He(qe),"is-interrupting-turn":He(Me),"has-queue-above":He(he).length>0,"send-with-enter":Bn.value,"in-progress-submit-mode":xn.value,"dictation-click-to-toggle":yr.value,"dictation-auto-send":Un.value,"dictation-language":cr.value,"onUpdate:selectedCollaborationMode":Np,onSubmit:Wo,"onUpdate:selectedModel":Rp,"onUpdate:selectedReasoningEffort":Mp,"onUpdate:selectedSpeedMode":Pp,onInterrupt:Mb},null,8,["active-thread-id","cwd","collaboration-modes","selected-collaboration-mode","models","selected-model","selected-reasoning-effort","selected-speed-mode","is-updating-speed-mode","skills","thread-token-usage","codex-quota","is-turn-in-progress","is-stop-pending","is-interrupting-turn","has-queue-above","send-with-enter","in-progress-submit-mode","dictation-click-to-toggle","dictation-auto-send","dictation-language"]))])],64))]))])],4)]),_:1},8,["is-sidebar-collapsed"]))}}),XF=Et(JF,[["__scopeId","data-v-8f736898"]]),Rd={render:()=>null},wb=cR({history:U1(),routes:[{path:"/",name:"home",component:Rd},{path:"/thread/:threadId",name:"thread",component:Rd},{path:"/skills",name:"skills",component:Rd},{path:"/new-thread",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});console.log("Welcome to codexui. npm: https://www.npmjs.com/package/@nervmor/codexui");const Sb=NT(XF);async function QF(){{ZF();return}}function ZF(e){Xx({app:Sb,dsn:"https://9b1c6357d134c512f8171518ec2cb18e@o4511194738982912.ingest.us.sentry.io/4511201728200704",release:"codexui@0.1.83",environment:"production",integrations:[e1({router:wb})],tracesSampleRate:.05,sendDefaultPii:!0,beforeSendTransaction(t){const n=t.transaction??"";return n.includes("/health")||n.includes("/favicon")||n.match(/\.(js|css|map|png|svg|ico|woff2?)$/)?null:t}})}QF();Sb.use(wb).mount("#app");"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(e=>{console.error("Service worker registration failed.",e)})});export{sM as A,Kn as B,e2 as C,n2 as D,o2 as E,Qe as F,s2 as G,t2 as H,Xl as I,r2 as J,Ep as K,ma as L,XM as M,Tg as N,rr as O,Zt as P,ey as T,Et as _,_ as a,ds as b,D as c,In as d,Vs as e,ge as f,Bt as g,pt as h,ht as i,Ct as j,Bf as k,ko as l,ze as m,Jt as n,A as o,G$ as p,vD as q,N as r,ft as s,ue as t,_p as u,He as v,ut as w,Fs as x,ie as y,ad as z};
92
- //# sourceMappingURL=index-BEf3759i.js.map
91
+ 987654321`,spellcheck:"false"},null,512),[[rr,br.value]])]),y[37]||(y[37]=_("div",{class:"sidebar-settings-field-help"}," Put one Telegram user ID per line or separate them with commas. Use `*` to allow all Telegram users. Unauthorized users will see their own ID in the rejection message so they can copy it here. ",-1)),yn.value?(A(),D("div",Kj,ue(yn.value),1)):ge("",!0),_("div",Yj,[_("button",{class:"sidebar-settings-telegram-save",type:"button",disabled:Jr.value,onClick:lu},ue(Jr.value?"Saving…":"Save Telegram config"),9,Jj)])])):ge("",!0),Kc.value?(A(),D("div",{key:3,class:"sidebar-settings-row sidebar-settings-context-row","data-state":ul.value,title:Qc.value},[y[38]||(y[38]=_("span",{class:"sidebar-settings-label"},"Context",-1)),_("span",{class:"sidebar-settings-context-value","data-state":ul.value},[Fs(ue(Jc.value)+" ",1),_("span",Zj,ue(Xc.value),1)],8,Qj)],8,Xj)):ge("",!0),_("div",eF,[ze(WL,{snapshots:He(Pe)},null,8,["snapshots"])]),_("div",tF," WT "+ue(He(o))+" · v"+ue(He(s)),1)],512)):ge("",!0)]),_:1}),_("button",{ref_key:"settingsButtonRef",ref:gr,class:"sidebar-settings-button",type:"button",onClick:y[11]||(y[11]=ft(I=>wn.value=!wn.value,["stop"]))},[ze(pD,{class:"sidebar-settings-icon"}),y[39]||(y[39]=_("span",null,"Settings",-1)),_("span",nF,ue(He(o))+" · v"+ue(He(s)),1)],512)],512))])]),content:Ct(()=>[_("section",{class:"content-root",style:ko(iu.value)},[ze(U$,{title:ll.value},{leading:Ct(()=>[kt.value||He($)?(A(),ht(Sg,{key:0,class:"sidebar-thread-controls-header-host","is-sidebar-collapsed":kt.value,"show-new-thread-button":!0,onToggleSidebar:y[12]||(y[12]=I=>Be(!kt.value)),onStartNewThread:p},null,8,["is-sidebar-collapsed"])):ge("",!0)]),actions:Ct(()=>[He(xe).name==="thread"&&He(M)?(A(),ht(Os,{key:0,class:pt(["content-header-branch-dropdown",{"is-review-open":jn.value}]),"model-value":Zc.value,options:eu.value,disabled:qt.value||vr.value,"enable-search":!0,"search-placeholder":"Search branches...","onUpdate:modelValue":mo},null,8,["class","model-value","options","disabled"])):ge("",!0)]),_:1},8,["title"]),_("section",rF,[qo.value?(A(),ht(He(r),{key:0,onSkillsChanged:Qr})):Rn.value?(A(),D("div",oF,[_("div",sF,[y[46]||(y[46]=_("p",{class:"new-thread-hero"},"Let's build",-1)),ze(Os,{class:"new-thread-folder-dropdown","model-value":ot.value,options:zi.value,placeholder:"Choose folder","enable-search":!0,"search-placeholder":"Quick search project",disabled:!1,"onUpdate:modelValue":yl},null,8,["model-value","options"]),ot.value?(A(),D("p",{key:0,class:"new-thread-folder-selected",title:ot.value}," Selected folder: "+ue(ot.value),9,iF)):ge("",!0),_("div",{class:"new-thread-folder-actions"},[_("button",{class:"new-thread-folder-action new-thread-folder-action-primary",type:"button",onClick:Eb}," Select folder "),_("button",{class:"new-thread-folder-action",type:"button",onClick:Tb}," Create Project ")]),(A(),ht(ma,{to:"body"},[Dt.value?(A(),D("div",{key:0,class:"new-thread-open-folder-overlay",onClick:ft(na,["self"])},[_("div",{class:"new-thread-open-folder",role:"dialog","aria-modal":"true","aria-label":"Select folder",onKeydown:Zt(ft(na,["prevent"]),["esc"])},[_("div",{class:"new-thread-open-folder-header"},[y[40]||(y[40]=_("p",{class:"new-thread-open-folder-title"},"Select folder",-1)),_("button",{class:"new-thread-open-folder-close",type:"button",onClick:na}," Cancel ")]),y[42]||(y[42]=_("p",{class:"new-thread-open-folder-label"},"Current folder",-1)),_("div",lF,[_("p",{class:"new-thread-open-folder-path",title:S.value||"Unavailable"},ue(S.value||"Unavailable"),9,cF),_("button",{class:"new-thread-folder-action new-thread-folder-action-primary",type:"button",disabled:!S.value||!!W.value||w.value||P.value,onClick:y[13]||(y[13]=I=>kp())},ue(P.value?"Opening…":"Open"),9,uF)]),_("div",dF,[_("label",fF,[Kn(_("input",{"onUpdate:modelValue":y[14]||(y[14]=I=>z.value=I),class:"new-thread-open-folder-toggle-input",type:"checkbox",onChange:Ib},null,544),[[AT,z.value]]),y[41]||(y[41]=_("span",null,"Show hidden folders",-1))]),_("button",{class:pt(["new-thread-folder-action",{"new-thread-folder-action-primary":er.value}]),type:"button","aria-pressed":er.value,disabled:!S.value||w.value||P.value||ye.value||!!W.value&&!er.value,onClick:Ab}," New folder ",10,pF)]),er.value?(A(),D("div",hF,[_("div",mF,[Kn(_("input",{ref_key:"createFolderInputRef",ref:lr,"onUpdate:modelValue":y[15]||(y[15]=I=>ur.value=I),class:"new-thread-open-folder-create-input",type:"text",placeholder:"Folder name",onKeydown:[Zt(ft(Ip,["prevent"]),["enter"]),Zt(ft(ra,["prevent"]),["esc"])]},null,40,gF),[[rr,ur.value]]),_("button",{class:"new-thread-folder-action new-thread-folder-action-primary new-thread-open-folder-create-submit",type:"button",disabled:!tu.value||ye.value,onClick:Ip},ue(nu.value),9,vF)]),$e.value?(A(),D("p",yF,ue($e.value),1)):ge("",!0)])):ge("",!0),Kn(_("input",{ref_key:"existingFolderFilterInputRef",ref:Uo,"onUpdate:modelValue":y[16]||(y[16]=I=>be.value=I),class:"new-thread-open-folder-filter",type:"text",placeholder:"Filter folders...",onKeydown:Zt(ft(na,["prevent"]),["esc"])},null,40,_F),[[rr,be.value]]),W.value?(A(),D("div",bF,[_("p",wF,ue(W.value),1),_("button",{class:"new-thread-folder-action",type:"button",disabled:w.value||P.value,onClick:Cb}," Retry ",8,SF)])):ge("",!0),w.value?(A(),D("p",TF,"Loading folders…")):!W.value&&Ki.value.length===0?(A(),D("p",EF,ue(be.value.trim()?"No folders match this filter.":"No subfolders found here."),1)):Ki.value.length>0?(A(),D("ul",kF,[(A(!0),D(Qe,null,Bt(Ki.value,I=>(A(),D("li",{key:I.key,class:"new-thread-open-folder-item"},[_("button",{class:"new-thread-open-folder-item-main",type:"button",title:I.path,disabled:w.value||P.value,onClick:se=>kb(I.path)},[_("span",CF,ue(I.name),1)],8,IF),I.kind==="directory"?(A(),D("button",{key:0,class:"new-thread-open-folder-item-open",type:"button",disabled:w.value||P.value,onClick:se=>kp(I.path)}," Open ",8,AF)):ge("",!0)]))),128))])):ge("",!0)],40,aF)])):ge("",!0)])),ze(YL,{class:"new-thread-runtime-dropdown",modelValue:fn.value,"onUpdate:modelValue":y[17]||(y[17]=I=>fn.value=I)},null,8,["modelValue"]),fn.value==="worktree"?(A(),D("div",xF,[y[43]||(y[43]=_("p",{class:"new-thread-branch-select-label"},"Base branch",-1)),ze(Os,{class:"new-thread-branch-dropdown","model-value":Qt.value,options:Gi.value,placeholder:"Select branch","enable-search":!0,"search-placeholder":"Search branches...",disabled:ir.value||Gi.value.length===0,"onUpdate:modelValue":et},null,8,["model-value","options","disabled"]),_("p",RF,ue(ir.value?"Loading branches…":dl.value?`New worktree branch will start from ${dl.value}.`:"No Git branches found for this folder."),1)])):ge("",!0),y[47]||(y[47]=_("p",{class:"new-thread-runtime-help"},[_("code",null,"Local project"),Fs(" uses the selected folder directly. "),_("code",null,"New worktree"),Fs(" creates an isolated Git worktree before the first prompt. ")],-1)),zt.value.phase!=="idle"?(A(),D("div",{key:2,class:pt(["worktree-init-status",{"is-running":zt.value.phase==="running","is-error":zt.value.phase==="error"}])},[_("strong",MF,ue(zt.value.title),1),_("span",PF,ue(zt.value.message),1)],2)):ge("",!0),vn.value?(A(),D("div",$F,[_("div",NF,[y[44]||(y[44]=_("p",{class:"new-thread-trending-title"},"Trending GitHub projects",-1)),ze(Os,{class:"new-thread-trending-scope-dropdown","model-value":st.value,options:ou.value,"onUpdate:modelValue":Vo},null,8,["model-value","options"])]),We.value?(A(),D("p",OF,"Loading trending projects...")):Oe.value.length===0?(A(),D("p",LF," Trending repos are unavailable right now. ")):(A(),D("div",DF,[(A(!0),D(Qe,null,Bt(Oe.value,I=>(A(),D("button",{key:I.id,type:"button",class:"new-thread-trending-tip",onClick:se=>Ss(I)},[_("span",{class:"new-thread-trending-tip-name",title:I.fullName},[I.owner&&I.repo?(A(),D(Qe,{key:0},[_("span",BF,ue(I.owner),1),y[45]||(y[45]=_("span",{class:"new-thread-trending-tip-name-slash"},"/",-1)),_("span",UF,ue(I.repo),1)],64)):(A(),D("span",qF,ue(I.fullName),1))],8,FF),_("span",HF,ue(ws(I)),1),_("span",WF,ue(I.description||"No description available."),1)],8,jF))),128))]))])):ge("",!0)]),_("div",VF,[ze(wg,{ref_key:"homeThreadComposerRef",ref:F,"active-thread-id":Hi.value,cwd:$r.value,"collaboration-modes":He(O),"selected-collaboration-mode":He(K),models:He(V),"selected-model":He(de),"selected-reasoning-effort":He(oe),"selected-speed-mode":He(ee),"is-updating-speed-mode":He(_e),skills:He(ve),"thread-token-usage":He(m),"codex-quota":He(H),"is-turn-in-progress":!1,"is-stop-pending":!1,"is-interrupting-turn":!1,"send-with-enter":Bn.value,"in-progress-submit-mode":xn.value,"dictation-click-to-toggle":yr.value,"dictation-auto-send":Un.value,"dictation-language":cr.value,onSubmit:Wo,"onUpdate:selectedCollaborationMode":Np,"onUpdate:selectedModel":Rp,"onUpdate:selectedReasoningEffort":Mp,"onUpdate:selectedSpeedMode":Pp},null,8,["active-thread-id","cwd","collaboration-modes","selected-collaboration-mode","models","selected-model","selected-reasoning-effort","selected-speed-mode","is-updating-speed-mode","skills","thread-token-usage","codex-quota","send-with-enter","in-progress-submit-mode","dictation-click-to-toggle","dictation-auto-send","dictation-language"])])])):(A(),D("div",zF,[jn.value&&He(M)&&$r.value?(A(),ht(He(n),{key:0,"thread-id":He(M),cwd:$r.value,"is-thread-in-progress":Wi.value,onClose:y[18]||(y[18]=I=>jn.value=!1)},null,8,["thread-id","cwd","is-thread-in-progress"])):(A(),D(Qe,{key:1},[_("div",GF,[ze(He(t),{ref_key:"threadConversationRef",ref:ce,messages:gs.value,"is-loading":He(Q),"active-thread-id":Hi.value,cwd:$r.value,"scroll-state":He(v),"live-overlay":Gc.value,"pending-requests":He(E),onUpdateScrollState:U,onForkThread:je,onRollback:Pb,onRespondServerRequest:G},null,8,["messages","is-loading","active-thread-id","cwd","scroll-state","live-overlay","pending-requests"])]),_("div",KF,[ze(OL,{messages:He(he),onEdit:ni,onSteer:He(Ze),onDelete:He(Ue)},null,8,["messages","onSteer","onDelete"]),cl.value?(A(),ht(IL,{key:0,request:cl.value,"request-count":He(E).length,"has-queue-above":He(he).length>0,onRespondServerRequest:G},null,8,["request","request-count","has-queue-above"])):(A(),ht(wg,{key:1,ref_key:"threadComposerRef",ref:J,"active-thread-id":Hi.value,cwd:$r.value,"collaboration-modes":He(O),"selected-collaboration-mode":He(K),models:He(V),"selected-model":He(de),"selected-reasoning-effort":He(oe),"selected-speed-mode":He(ee),"is-updating-speed-mode":He(_e),skills:He(ve),"thread-token-usage":He(m),"codex-quota":He(H),"is-turn-in-progress":Wi.value,"is-stop-pending":He(qe),"is-interrupting-turn":He(Me),"has-queue-above":He(he).length>0,"send-with-enter":Bn.value,"in-progress-submit-mode":xn.value,"dictation-click-to-toggle":yr.value,"dictation-auto-send":Un.value,"dictation-language":cr.value,"onUpdate:selectedCollaborationMode":Np,onSubmit:Wo,"onUpdate:selectedModel":Rp,"onUpdate:selectedReasoningEffort":Mp,"onUpdate:selectedSpeedMode":Pp,onInterrupt:Mb},null,8,["active-thread-id","cwd","collaboration-modes","selected-collaboration-mode","models","selected-model","selected-reasoning-effort","selected-speed-mode","is-updating-speed-mode","skills","thread-token-usage","codex-quota","is-turn-in-progress","is-stop-pending","is-interrupting-turn","has-queue-above","send-with-enter","in-progress-submit-mode","dictation-click-to-toggle","dictation-auto-send","dictation-language"]))])],64))]))])],4)]),_:1},8,["is-sidebar-collapsed"]))}}),XF=Et(JF,[["__scopeId","data-v-8f736898"]]),Rd={render:()=>null},wb=cR({history:U1(),routes:[{path:"/",name:"home",component:Rd},{path:"/thread/:threadId",name:"thread",component:Rd},{path:"/skills",name:"skills",component:Rd},{path:"/new-thread",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});console.log("Welcome to codexui. npm: https://www.npmjs.com/package/@nervmor/codexui");const Sb=NT(XF);async function QF(){{ZF();return}}function ZF(e){Xx({app:Sb,dsn:"https://9b1c6357d134c512f8171518ec2cb18e@o4511194738982912.ingest.us.sentry.io/4511201728200704",release:"codexui@0.1.85",environment:"production",integrations:[e1({router:wb})],tracesSampleRate:.05,sendDefaultPii:!0,beforeSendTransaction(t){const n=t.transaction??"";return n.includes("/health")||n.includes("/favicon")||n.match(/\.(js|css|map|png|svg|ico|woff2?)$/)?null:t}})}QF();Sb.use(wb).mount("#app");"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(e=>{console.error("Service worker registration failed.",e)})});export{sM as A,Kn as B,e2 as C,n2 as D,o2 as E,Qe as F,s2 as G,t2 as H,Xl as I,r2 as J,Ep as K,ma as L,XM as M,Tg as N,rr as O,Zt as P,ey as T,Et as _,_ as a,ds as b,D as c,In as d,Vs as e,ge as f,Bt as g,pt as h,ht as i,Ct as j,Bf as k,ko as l,ze as m,Jt as n,A as o,G$ as p,vD as q,N as r,ft as s,ue as t,_p as u,He as v,ut as w,Fs as x,ie as y,ad as z};
92
+ //# sourceMappingURL=index-CWwHJTfC.js.map