codex-mobile-re 0.1.104 → 0.1.106

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-Cq7_5T10.js","assets/sanitizeHtml-Bd3No2dT.js","assets/ThreadConversation-lQVNzD-y.css","assets/ThreadTerminalPanel-BGadHi4n.js","assets/ThreadTerminalPanel-O7IxAyfy.css","assets/ReviewPane-mi7B5jTv.js","assets/ReviewPane-ZrWfZEd_.css","assets/DirectoryHub-DOxPtme6.js","assets/DirectoryHub-DmZLEiwB.css","assets/AutomationsPanel-B_WavWrg.js","assets/AutomationsPanel-VRBbmMYW.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-DG3Dg6i5.js","assets/sanitizeHtml-Bd3No2dT.js","assets/ThreadConversation-lQVNzD-y.css","assets/ThreadTerminalPanel-BFJwAMy6.js","assets/ThreadTerminalPanel-O7IxAyfy.css","assets/ReviewPane-DzGrEQjS.js","assets/ReviewPane-ZrWfZEd_.css","assets/DirectoryHub-CLxgCy22.js","assets/DirectoryHub-DmZLEiwB.css","assets/AutomationsPanel-CKm-u9Pi.js","assets/AutomationsPanel-VRBbmMYW.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 r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&o(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function o(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();/**
3
3
  * @vue/shared v3.5.40
4
4
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -52,7 +52,7 @@ ${e}
52
52
  ...${e.length-Ld} more item(s)`:"";return`${t}:
53
53
  ${n.join(`
54
54
  `)||"empty"}${r}`}catch(n){return`${t}: unavailable (${gy(Jl(n))})`}}function F1(){return typeof window>"u"?"unknown":[`Path: ${window.location.pathname||"/"}`,`Hash: ${window.location.hash||"(none)"}`,`Search: ${window.location.search||"(none)"}`,`Online: ${typeof navigator>"u"?"unknown":String(navigator.onLine)}`,`Language: ${typeof navigator>"u"?"unknown":navigator.language}`,`Platform: ${typeof navigator>"u"?"unknown":navigator.platform}`,Im(window.localStorage,"localStorage"),Im(window.sessionStorage,"sessionStorage")].join(`
55
- `)}function xi(e){const t=e.message.trim();if(!t)return;const n=cl.value[0];if(n&&n.kind===e.kind&&n.message===t&&n.url===e.url&&n.method===e.method&&n.status===e.status)return;const o={...e,message:t,atIso:e.atIso??new Date().toISOString()};cl.value=[o,...cl.value].slice(0,M1)}function yy(e=cl.value){var h;const t=typeof window>"u"?"unknown":`${window.innerWidth}x${window.innerHeight} @${window.devicePixelRatio||1}x`,n=typeof window>"u"?"unknown":window.location.href,o=typeof navigator>"u"?"unknown":navigator.userAgent,r="0.1.104",a="codex-mobile",s=e.slice(0,12).map((p,g)=>[`${g+1}. [${p.atIso}] ${p.kind}`,p.method?`${p.method}`:"",p.url??"",typeof p.status=="number"?`${p.status} ${p.statusText??""}`.trim():"",p.message].filter(Boolean).join(" | ")).join(`
55
+ `)}function xi(e){const t=e.message.trim();if(!t)return;const n=cl.value[0];if(n&&n.kind===e.kind&&n.message===t&&n.url===e.url&&n.method===e.method&&n.status===e.status)return;const o={...e,message:t,atIso:e.atIso??new Date().toISOString()};cl.value=[o,...cl.value].slice(0,M1)}function yy(e=cl.value){var h;const t=typeof window>"u"?"unknown":`${window.innerWidth}x${window.innerHeight} @${window.devicePixelRatio||1}x`,n=typeof window>"u"?"unknown":window.location.href,o=typeof navigator>"u"?"unknown":navigator.userAgent,r="0.1.106",a="codex-mobile",s=e.slice(0,12).map((p,g)=>[`${g+1}. [${p.atIso}] ${p.kind}`,p.method?`${p.method}`:"",p.url??"",typeof p.status=="number"?`${p.status} ${p.statusText??""}`.trim():"",p.message].filter(Boolean).join(" | ")).join(`
56
56
  `),i=["What happened?","","","Context",`URL: ${n}`,`User agent: ${o}`,`Viewport: ${t}`,`App version: ${r}`,`Worktree: ${a}`,"","Browser/app state",F1(),"","Recent diagnostics",s||"No diagnostics captured.","","Visible page text",O1()].join(`
57
57
  `).slice(0,$1),u=`Codex Web feedback: ${gy((h=e[0])==null?void 0:h.message)}`;return`mailto:${vy}?subject=${Am(u)}&body=${Am(i)}`}function B1(){typeof window>"u"||(window.location.href=yy())}function U1(){if(!(typeof window>"u")&&(xm||(xm=!0,window.addEventListener("error",e=>{xi({kind:"window-error",message:e.error?Jl(e.error):e.message,url:e.filename||window.location.href})}),window.addEventListener("unhandledrejection",e=>{xi({kind:"unhandled-rejection",message:Jl(e.reason),url:window.location.href})})),!Nd)){if(typeof window.fetch!="function"){xi({kind:"fetch-error",message:"Feedback diagnostics could not monitor fetch: window.fetch is unavailable",url:window.location.href});return}try{Od=window.fetch.bind(window),window.fetch=async(e,t)=>{const n=j1(e),o=L1(e,t);try{const r=await Od(e,t);return r.ok||xi({kind:n.includes("/codex-api/")?"api-response":"fetch-error",message:`Request failed with HTTP ${r.status}`,url:n,method:o,status:r.status,statusText:r.statusText}),r}catch(r){throw xi({kind:"fetch-error",message:Jl(r),url:n,method:o}),r}},Nd=!0}catch(e){Od=null,Nd=!1;try{xi({kind:"fetch-error",message:`Feedback diagnostics could not monitor fetch: ${Jl(e)}`,url:window.location.href})}catch{}}}}function Zf(){const e=X(()=>cl.value.length>0);function t(n,o){xi({kind:"visible-error",message:n,url:o||(typeof window>"u"?void 0:window.location.href)})}return{diagnostics:cl,hasFeedbackDiagnostics:e,recordVisibleFailure:t,openFeedbackMail:B1,buildFeedbackMailto:yy,feedbackMailtoBase:N1}}const wy="codex-web-local.recycle-bin.v1";function by(){if(typeof window>"u")return[];try{const e=window.localStorage.getItem(wy);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>!!n&&typeof n.id=="string"&&typeof n.title=="string"):[]}catch{return[]}}function Pm(e){if(!(typeof window>"u"))try{window.localStorage.setItem(wy,JSON.stringify(e))}catch{}}const us=x(by());function q1(){function e(){us.value=by()}function t(r){us.value=[{...r,archivedAtIso:new Date().toISOString()},...us.value.filter(a=>a.id!==r.id)],Pm(us.value)}function n(r){us.value=us.value.filter(a=>a.id!==r),Pm(us.value)}async function o(r){if(!us.value.some(a=>a.id===r))return{ok:!1,error:"Thread is not in the recycle bin"};try{return await x_(r),n(r),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to restore thread"}}}return{records:us,loadRecords:e,recordArchivedThread:t,removeArchivedRecord:n,restoreArchivedThread:o}}const z1=["title","aria-label","disabled"],H1={key:1,class:"composer-dropdown-value"},W1={key:0,class:"composer-dropdown-search-wrap"},V1=["placeholder","onKeydown"],G1={class:"composer-dropdown-options",role:"listbox"},K1=["onClick"],Y1={key:0,class:"composer-dropdown-empty"},J1=en({__name:"ComposerDropdown",props:{modelValue:{},options:{},placeholder:{},disabled:{type:Boolean},selectedPrefixIcon:{},iconOnly:{type:Boolean},openDirection:{},menuAlign:{},enableSearch:{type:Boolean},searchPlaceholder:{},emptyLabel:{},variant:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,o=t,r=x(null),a=x(null),s=x(null),i=x(null),u=x(!1),h=x(""),p=x({});let g=!1;const w=X(()=>{var Pe;const _e=n.options.find(Re=>Re.value===n.modelValue);return _e?_e.label:((Pe=n.placeholder)==null?void 0:Pe.trim())||""}),A=X(()=>n.openDirection??"down"),M=X(()=>n.menuAlign??"start"),U=X(()=>n.iconOnly===!0),Y=X(()=>n.enableSearch===!0),ue=X(()=>n.variant==="pill"?"composer-dropdown-trigger--pill":""),F=X(()=>{var _e;return((_e=n.searchPlaceholder)==null?void 0:_e.trim())||"Quick search projects"}),H=X(()=>{var _e;return((_e=n.emptyLabel)==null?void 0:_e.trim())||"No results"}),q=X(()=>{var _e;return w.value||((_e=n.placeholder)==null?void 0:_e.trim())||"Select option"}),me=X(()=>{const _e=h.value.trim().toLowerCase();return _e?n.options.filter(Pe=>Pe.label.toLowerCase().includes(_e)||Pe.value.toLowerCase().includes(_e)):n.options});function we(){n.disabled||(u.value=!u.value)}function ve(_e,Pe,Re){return Math.min(Re,Math.max(Pe,_e))}function je(){var ee,te,V,$e;if(!u.value)return;const _e=r.value;if(!_e||typeof window>"u")return;const Pe=_e.getBoundingClientRect(),Re=window.innerWidth,Ue=window.innerHeight,Le=8,gt=8,ft=Math.max(0,Re-Le*2),at=((ee=s.value)==null?void 0:ee.offsetWidth)??((te=a.value)==null?void 0:te.offsetWidth)??224,it=((V=s.value)==null?void 0:V.offsetHeight)??(($e=a.value)==null?void 0:$e.offsetHeight)??0,wt=Math.min(at,ft),St=Math.max(Le,Re-wt-Le),Qe=M.value==="end"?Pe.right-wt:Pe.left,et=ve(Qe,Le,St);let re=A.value==="up"?Pe.top-it-gt:Pe.bottom+gt;it>0&&re+it>Ue-Le&&(re=Ue-it-Le),re=Math.max(Le,re),p.value={position:"fixed",left:`${et}px`,right:"auto",top:`${re}px`,bottom:"auto",width:`${wt}px`}}function ge(){g||typeof window>"u"||(window.addEventListener("resize",je),window.addEventListener("scroll",je,!0),g=!0)}function Ie(){!g||typeof window>"u"||(window.removeEventListener("resize",je),window.removeEventListener("scroll",je,!0),g=!1)}function De(_e){o("update:modelValue",_e),u.value=!1,h.value=""}function fe(){if(h.value.length>0){h.value="";return}u.value=!1}function Se(_e){if(!u.value)return;const Pe=r.value;if(!Pe)return;const Re=_e.target;Re instanceof Node&&(Pe.contains(Re)||(u.value=!1,h.value=""))}return tt(u,_e=>{if(!_e){Ie(),p.value={};return}ge(),Gt(()=>{var Pe;je(),window.requestAnimationFrame(je),Y.value&&((Pe=i.value)==null||Pe.focus())})}),Cs(()=>{window.addEventListener("pointerdown",Se)}),Ni(()=>{window.removeEventListener("pointerdown",Se),Ie()}),(_e,Pe)=>(C(),I("div",{ref_key:"rootRef",ref:r,class:"composer-dropdown"},[f("button",{class:Ye(["composer-dropdown-trigger",ue.value]),type:"button",title:q.value,"aria-label":q.value,disabled:e.disabled,onClick:we},[e.selectedPrefixIcon?(C(),Ze(Nf(e.selectedPrefixIcon),{key:0,class:"composer-dropdown-prefix-icon"})):Z("",!0),U.value?Z("",!0):(C(),I("span",H1,k(w.value),1)),Me(Js,{class:"composer-dropdown-chevron"})],10,z1),u.value?(C(),I("div",{key:0,ref_key:"menuWrapRef",ref:a,class:Ye(["composer-dropdown-menu-wrap",{"composer-dropdown-menu-wrap-up":A.value==="up","composer-dropdown-menu-wrap-down":A.value==="down"}]),style:kr(p.value)},[f("div",{ref_key:"menuRef",ref:s,class:"composer-dropdown-menu"},[Y.value?(C(),I("div",W1,[Nt(f("input",{ref_key:"searchInputRef",ref:i,"onUpdate:modelValue":Pe[0]||(Pe[0]=Re=>h.value=Re),class:"composer-dropdown-search-input",type:"text",placeholder:F.value,onKeydown:xn(st(fe,["prevent"]),["esc"])},null,40,V1),[[sn,h.value]])])):Z("",!0),f("ul",G1,[(C(!0),I(qe,null,At(me.value,Re=>(C(),I("li",{key:Re.value},[f("button",{class:Ye(["composer-dropdown-option",{"is-selected":Re.value===e.modelValue}]),type:"button",onClick:Ue=>De(Re.value)},k(Re.label),11,K1)]))),128)),me.value.length===0?(C(),I("li",Y1,k(H.value),1)):Z("",!0)])],512)],6)):Z("",!0)],512))}}),Zo=yt(J1,[["__scopeId","data-v-48e2516e"]]),Q1={},X1={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function Z1(e,t){return C(),I("svg",X1,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M18 6L6 18M6 6l12 12"},null,-1)])])}const ru=yt(Q1,[["render",Z1]]),eA=["aria-label","onKeydown"],tA={class:"app-dialog-header"},nA={class:"app-dialog-title-wrap"},oA={class:"app-dialog-title"},rA={key:0,class:"app-dialog-subtitle"},aA=["aria-label","title"],sA={class:"app-dialog-body"},iA={key:0,class:"app-dialog-footer"},lA=en({__name:"AppDialog",props:{open:{type:Boolean},title:{},subtitle:{default:""},ariaLabel:{default:""},size:{default:"sm"}},emits:["close"],setup(e,{emit:t}){const n=e,o=t,{t:r}=io();function a(){o("close")}function s(i){n.open&&i.key==="Escape"&&(i.preventDefault(),a())}return tt(()=>n.open,i=>{typeof window>"u"||(i?window.addEventListener("keydown",s):window.removeEventListener("keydown",s))},{immediate:!0}),Ni(()=>{typeof window>"u"||window.removeEventListener("keydown",s)}),(i,u)=>(C(),Ze(Qs,{to:"body"},[e.open?(C(),I("div",{key:0,class:"app-dialog-overlay",onClick:st(a,["self"])},[f("div",{class:Ye(["app-dialog-panel",`app-dialog-panel--${e.size}`]),role:"dialog","aria-modal":"true","aria-label":e.ariaLabel||e.title,onKeydown:xn(st(a,["prevent"]),["esc"])},[f("div",tA,[f("div",nA,[f("h3",oA,k(e.title),1),e.subtitle?(C(),I("p",rA,k(e.subtitle),1)):Z("",!0)]),f("button",{class:"app-dialog-close",type:"button","aria-label":v(r)("Close"),title:v(r)("Close"),onClick:a},[Me(ru,{class:"app-dialog-close-icon"})],8,aA)]),f("div",sA,[er(i.$slots,"default",{},void 0)]),i.$slots.footer?(C(),I("div",iA,[er(i.$slots,"footer",{},void 0)])):Z("",!0)],42,eA)])):Z("",!0)]))}}),Dd=yt(lA,[["__scopeId","data-v-0c988f32"]]),cA={key:0,class:"sidebar-menu-row-left"},uA={class:"sidebar-menu-row-main"},dA={key:1,class:"sidebar-menu-row-right"},fA={key:0,class:"sidebar-menu-row-right-default"},pA={key:1,class:"sidebar-menu-row-right-hover"},hA=en({inheritAttrs:!1,__name:"SidebarMenuRow",props:{as:{default:"div"},forceRightHover:{type:Boolean,default:!1}},setup(e){const t=e,n=ET(),o=X(()=>!!n.left),r=X(()=>!!n.right),a=X(()=>!!n["right-hover"]),s=X(()=>r.value||a.value);return(i,u)=>(C(),Ze(Nf(t.as),Ig({class:"sidebar-menu-row","data-has-left":o.value,"data-has-right":s.value,"data-has-right-hover":a.value,"data-force-right-hover":t.forceRightHover},i.$attrs),{default:mt(()=>[o.value?(C(),I("span",cA,[er(i.$slots,"left",{},void 0,!0)])):Z("",!0),f("span",uA,[er(i.$slots,"default",{},void 0,!0)]),s.value?(C(),I("span",dA,[r.value?(C(),I("span",fA,[er(i.$slots,"right",{},void 0,!0)])):Z("",!0),a.value?(C(),I("span",pA,[er(i.$slots,"right-hover",{},void 0,!0)])):Z("",!0)])):Z("",!0)]),_:3},16,["data-has-left","data-has-right","data-has-right-hover","data-force-right-hover"]))}}),zs=yt(hA,[["__scopeId","data-v-5fc666fb"]]),mA={},vA={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function gA(e,t){return C(),I("svg",vA,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 18v-6m0 0a4 4 0 0 1 4-4h2m-6 4a4 4 0 0 0-4-4H6m0-4a2 2 0 1 0 0 4a2 2 0 0 0 0-4m12 0a2 2 0 1 0 0 4a2 2 0 0 0 0-4m-6 14a2 2 0 1 0 0 4a2 2 0 0 0 0-4"},null,-1)])])}const bu=yt(mA,[["render",gA]]),yA={},wA={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function bA(e,t){return C(),I("svg",wA,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 7h16M10 11v6M14 11v6M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12M9 7V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3"},null,-1)])])}const Ty=yt(yA,[["render",bA]]),TA=["data-menu-open"],kA={class:"thread-left-stack"},CA=["data-state"],SA=["data-confirming","title"],_A={key:0,class:"thread-delete-confirm-label"},xA={class:"thread-row-title-wrap"},AA={class:"thread-row-title-line"},IA={class:"thread-row-title"},PA=["title"],RA={key:0,class:"thread-row-automation-count"},EA=["data-state"],MA={class:"thread-row-time"},$A=en({__name:"SidebarThreadRow",props:{thread:{},selected:{type:Boolean},pinned:{type:Boolean},menuOpen:{type:Boolean},showStatusIndicator:{type:Boolean},threadState:{},inlineDeleteConfirming:{type:Boolean},automationCount:{},automationTooltip:{},requestLabel:{},relativeTime:{},deleteLabel:{},confirmDeleteLabel:{},confirmLabel:{},worktreeLabel:{},setMenuWrapRef:{type:Function}},emits:["select","inline-delete","menu-toggle","row-leave","row-contextmenu"],setup(e,{emit:t}){const n=e,o=t;function r(a){n.setMenuWrapRef(a instanceof HTMLDivElement?a:null)}return(a,s)=>(C(),I("li",{class:"thread-row-item","data-menu-open":n.menuOpen?"true":"false"},[Me(zs,{class:"thread-row","data-active":n.selected,"data-pinned":n.pinned,"data-menu-open":n.menuOpen?"true":"false","force-right-hover":n.menuOpen,onClick:s[3]||(s[3]=i=>o("select")),onMouseleave:s[4]||(s[4]=i=>o("row-leave",i)),onContextmenu:s[5]||(s[5]=i=>o("row-contextmenu",i))},{left:mt(()=>[f("span",kA,[n.showStatusIndicator?(C(),I("span",{key:0,class:"thread-status-indicator","data-state":n.threadState},null,8,CA)):Z("",!0),f("button",{class:"thread-delete-button",type:"button","data-confirming":n.inlineDeleteConfirming,title:n.inlineDeleteConfirming?n.confirmDeleteLabel:n.deleteLabel,onClick:s[0]||(s[0]=st(i=>o("inline-delete"),["stop"]))},[n.inlineDeleteConfirming?(C(),I("span",_A,k(n.confirmLabel),1)):(C(),Ze(Ty,{key:1,class:"thread-icon"}))],8,SA)])]),right:mt(()=>[f("span",MA,k(n.relativeTime),1)]),"right-hover":mt(()=>[f("div",{ref:r,class:"thread-menu-wrap"},[f("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:s[2]||(s[2]=st(i=>o("menu-toggle"),["stop"]))},[Me(hf,{class:"thread-icon"})])])]),default:mt(()=>[f("button",{class:"thread-main-button",type:"button",onClick:s[1]||(s[1]=st(i=>o("select"),["stop"]))},[f("span",xA,[f("span",AA,[f("span",IA,k(n.thread.title),1),n.thread.hasWorktree?(C(),Ze(bu,{key:0,class:"thread-row-worktree-icon",title:n.worktreeLabel},null,8,["title"])):Z("",!0),n.automationCount>0?(C(),I("span",{key:1,class:"thread-row-automation-chip",title:n.automationTooltip},[Me(Gs,{class:"thread-row-automation-icon"}),n.automationCount>1?(C(),I("span",RA,k(n.automationCount),1)):Z("",!0)],8,PA)):Z("",!0),n.thread.pendingRequestState?(C(),I("span",{key:2,class:"thread-row-request-chip","data-state":n.thread.pendingRequestState},k(n.requestLabel),9,EA)):Z("",!0)])])])]),_:1},8,["data-active","data-pinned","data-menu-open","force-right-hover"])],8,TA))}}),Wc=yt($A,[["__scopeId","data-v-fac0242e"]]);function jA(e,t,n){return n.canPruneMissing?e.filter(o=>t.has(o)):e}const LA={key:0,class:"pinned-section"},NA={class:"thread-tree-header"},OA={key:0,class:"thread-list"},DA={class:"projects-section"},FA={class:"thread-tree-header"},BA=["aria-expanded","aria-label","title"],UA={class:"organize-menu-title"},qA=["data-active"],zA={key:0},HA=["data-active"],WA={key:0},VA=["data-active"],GA={key:0},KA={class:"organize-menu-title"},YA=["data-active"],JA={key:0},QA=["data-active"],XA={key:0},ZA={key:0,class:"thread-tree-action-error"},eI={key:1,class:"thread-tree-no-results"},tI={key:2,class:"thread-tree-loading"},nI={key:3,class:"thread-list thread-list-global"},oI=["data-project-name","data-expanded","data-dragging"],rI={class:"project-icon-stack"},aI={class:"project-icon-folder"},sI={class:"project-icon-chevron"},iI=["data-dragging-handle","onMousedown"],lI=["title"],cI=["title"],uI={key:0,class:"thread-row-automation-count"},dI={class:"project-hover-controls"},fI=["onClick"],pI=["data-open-direction"],hI=["onClick"],mI=["onClick"],vI=["onClick"],gI=["onClick"],yI=["onClick"],wI=["onClick"],bI={class:"project-menu-label"},TI=["onInput"],kI=["aria-label","title","onClick"],CI={key:0,class:"thread-list"},SI={class:"project-empty"},_I=["onClick"],xI={class:"chats-section"},AI={class:"thread-tree-header"},II={class:"chats-section-actions"},PI=["aria-label","title"],RI={key:0,class:"thread-tree-no-results"},EI={key:1,class:"thread-list thread-list-global"},MI=["data-open-direction"],$I=["disabled","title"],jI=["placeholder","onKeydown"],LI={key:0,class:"recycle-bin-empty"},NI={key:1,class:"recycle-bin-list"},OI={class:"recycle-bin-item-copy"},DI={class:"recycle-bin-item-title"},FI={key:0,class:"recycle-bin-item-meta"},BI={class:"recycle-bin-item-time"},UI={class:"recycle-bin-item-actions"},qI=["disabled","onClick"],zI=["onClick"],HI={key:2,class:"recycle-bin-error",role:"alert"},WI=["aria-label"],VI={class:"rename-thread-title"},GI={class:"rename-thread-subtitle"},KI={key:0,class:"automation-target-picker"},YI={class:"automation-target-mode-group",role:"radiogroup","aria-label":"Automation target type"},JI={class:"automation-target-dropdown"},QI=["aria-label"],XI=["onClick"],ZI={class:"automation-thread-field"},eP={class:"automation-thread-label"},tP=["placeholder"],nP={class:"automation-thread-field"},oP={class:"automation-thread-label"},rP=["placeholder"],aP={class:"automation-thread-field"},sP={class:"automation-thread-label"},iP={class:"automation-schedule-mode-group",role:"radiogroup","aria-label":"Automation schedule type"},lP={key:0,class:"automation-schedule-row"},cP={class:"automation-schedule-copy"},uP={key:1,class:"automation-schedule-row"},dP={class:"automation-schedule-copy"},fP={class:"automation-schedule-preview"},pP={class:"automation-thread-field"},hP={class:"automation-thread-label"},mP={key:2,class:"rename-thread-subtitle automation-thread-error"},vP={key:3,class:"rename-thread-subtitle automation-thread-notice"},gP={class:"rename-thread-actions"},yP=["disabled"],wP=["disabled"],bP=["disabled"],TP=["disabled"],kP=4,Rm=6,Em="codex-web-local.sidebar-section-expansion.v1",Mm="codex-web-local.sidebar-chats-first.v1",$m="codex-web-local.sidebar-chat-sort-mode.v1",jm="codex-web-local.thread-view-mode.v1",Lm="codex-web-local.collapsed-projects.v1",CP=en({__name:"SidebarThreadTree",props:{groups:{},projectDisplayNameById:{},projectGitRepoByName:{},projectCwdByName:{},selectedThreadId:{},isLoading:{type:Boolean},isThreadListFullyLoaded:{type:Boolean},searchQuery:{},searchMatchedThreadIds:{}},emits:["select","archive","start-new-thread","browse-thread-files","save-thread-project","browse-project-files","save-project","request-project-git-status","create-project-worktree","rename-project","rename-thread","remove-project","reorder-project","copy-thread-chat","fork-thread","start-new-chat","automations-changed","restore-thread"],setup(e,{expose:t,emit:n}){const o=e,{t:r}=io(),{recordVisibleFailure:a}=Zf(),s=n,{records:i,loadRecords:u,recordArchivedThread:h,removeArchivedRecord:p,restoreArchivedThread:g}=q1(),w=x(!1),A=x(""),M=x("");function U(){un.value=!1,A.value="",u(),w.value=!0}async function Y(y){if(!M.value){M.value=y,A.value="";try{const b=await g(y);b.ok?s("restore-thread",y):A.value=b.error??"Failed to restore thread"}finally{M.value=""}}}const ue=x({}),F=x({}),H=x(!0),q=x(!0),me=x(!0),we=x(!1),ve=x(or(Mm,!1)),je=x(Tt());let ge=!1;const Ie=x([]),De=x({}),fe=x(""),Se=x([]),_e=x(""),Pe=x(""),Re=x("hover"),Ue=x({}),Le=x({}),gt=x({}),ft=x("actions"),at=x(""),it=x(!1),wt=x(""),St=x(""),Qe=x(null),et=x(!1),re=x(""),ee=x(""),te=x({}),V=x({}),$e=x(!1),R=x("thread"),j=x(""),W=x(""),ce=x(""),le=x("create"),ne=x(!1),Ce=x("thread"),be=x(""),de=x(""),ie=x(""),Ge=x(""),Te=x(!1),Be=x(!1),Fe=x({name:"",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"}),ze=x({mode:"daily",dailyTime:"09:00",interval:1,intervalUnit:"hours"}),bt=X(()=>{if(R.value==="project"){const b=W.value;return b?V.value[b]??[]:[]}const y=j.value;return y?te.value[y]??[]:[]}),dt=X(()=>Mn(Fe.value.rrule)),pt=X(()=>ne.value&&le.value==="create"?Ce.value==="thread"?r("This creates a heartbeat automation attached to the selected chat."):r("This creates a project automation attached to the selected project folder."):R.value==="project"?r("This creates project automations attached to the selected project folder."):r("This creates heartbeat automations attached to the selected thread.")),Yt=X(()=>{var b;const y=[];for(const T of o.groups)for(const N of T.threads){const ke=((b=N.title)==null?void 0:b.trim())||N.id,ot=Vn(T.projectName);y.push({value:N.id,label:`${ke} · ${ot}`,searchText:`${ke} ${ot} ${N.id}`.toLowerCase()})}return y}),In=X(()=>{const y=[];for(const b of o.groups){const T=Vo(b.projectName);if(!T)continue;const N=Vn(b.projectName);y.push({value:T,label:N,searchText:`${N} ${T}`.toLowerCase()})}return y}),z=X(()=>(Ce.value==="project"?In.value:Yt.value).map(b=>({value:b.value,label:b.label}))),G=[{value:"minutes",label:r("minutes")},{value:"hours",label:r("hours")},{value:"days",label:r("days")}],K=X(()=>[{value:"ACTIVE",label:r("Active")},{value:"PAUSED",label:r("Paused")}]);tt(z,y=>{var b;ne.value&&(y.some(T=>T.value===be.value)||(be.value=((b=y[0])==null?void 0:b.value)??""))});const pe=x(null),Ne=x(null),We=x(null);let Xe=null,$t=null;const Lt=x(""),kn=x({}),Fo=new Map,tr=new Map,lo=new Map,It=new WeakMap,Kr=x(null),nr=x(null),un=x(!1),jn=x(Cn()),Pn=typeof window<"u"?new ResizeObserver(y=>{for(const b of y){const T=b.target,N=It.get(T);N&&wn(N,T)}}):null;function So(){if(typeof window>"u")return{};try{const y=window.localStorage.getItem(Lm);if(!y)return{};const b=JSON.parse(y);return!b||typeof b!="object"||Array.isArray(b)?{}:b}catch{return{}}}function Cn(){return typeof window>"u"?"project":window.localStorage.getItem(jm)==="chronological"?"chronological":"project"}function or(y,b){if(typeof window>"u")return b;const T=window.localStorage.getItem(y);return T==="true"?!0:T==="false"?!1:b}function Tt(){return typeof window>"u"?"updated":window.localStorage.getItem($m)==="created"?"created":"updated"}F.value=So();function zt(){if(!(typeof window>"u"))try{const y=JSON.parse(window.localStorage.getItem(Em)||"{}");typeof y.pinned=="boolean"&&(H.value=y.pinned),typeof y.projects=="boolean"&&(q.value=y.projects),typeof y.chats=="boolean"&&(me.value=y.chats)}catch{}}function Et(){typeof window>"u"||window.localStorage.setItem(Em,JSON.stringify({pinned:H.value,projects:q.value,chats:me.value}))}zt(),tt(F,y=>{typeof window>"u"||window.localStorage.setItem(Lm,JSON.stringify(y))},{deep:!0}),tt(jn,y=>{typeof window>"u"||window.localStorage.setItem(jm,y)}),tt(ve,y=>{typeof window>"u"||window.localStorage.setItem(Mm,String(y))}),tt(je,y=>{typeof window>"u"||window.localStorage.setItem($m,y)}),tt([H,q,me],Et);const Cr=X(()=>o.searchQuery.trim().toLowerCase()),hn=X(()=>Cr.value.length>0),ga=X(()=>o.searchMatchedThreadIds?new Set(o.searchMatchedThreadIds):null),Sr=X(()=>new Set(Ie.value)),Bo=X(()=>new Set(Se.value));function ya(y){if(Bo.value.has(y.id))return!1;if(!hn.value)return!0;if(ga.value)return ga.value.has(y.id);const b=Cr.value;return y.title.toLowerCase().includes(b)||y.preview.toLowerCase().includes(b)}const wa=X(()=>o.groups.flatMap(y=>{const b=y.threads.filter(T=>!wu(T.cwd)&&ya(T));return b.length>0?[{...y,threads:b}]:!hn.value&&y.threads.length===0?[{...y,threads:b}]:[]})),_r=X(()=>jn.value==="chronological"),tn=X(()=>{const y=[];for(const b of o.groups)for(const T of b.threads)Sr.value.has(T.id)||ya(T)&&y.push(T);return y.sort((b,T)=>{const N=new Date(b.updatedAtIso||b.createdAtIso).getTime();return new Date(T.updatedAtIso||T.createdAtIso).getTime()-N})}),Sn=X(()=>{const y=tn.value.filter(T=>wu(T.cwd)),b=je.value==="created"?"createdAtIso":"updatedAtIso";return y.sort((T,N)=>{const ke=new Date(T[b]||T.updatedAtIso||T.createdAtIso).getTime();return new Date(N[b]||N.updatedAtIso||N.createdAtIso).getTime()-ke})}),mn=X(()=>hn.value||we.value?Sn.value:Sn.value.slice(0,10)),xr=X(()=>hn.value?!1:Sn.value.length>10),Ln=X(()=>{const y=new Map;for(const b of o.groups)for(const T of b.threads)Bo.value.has(T.id)||y.set(T.id,T);return y});tt(Ie,y=>{ge&&ix(y)}),tt([Ln,()=>o.isThreadListFullyLoaded],([y])=>{const b=jA(Ie.value,new Set(y.keys()),{canPruneMissing:o.isThreadListFullyLoaded});if(b.length===Ie.value.length)return;const T=new Set(b),N=Object.fromEntries(Object.entries(De.value).filter(([ke])=>T.has(ke)));De.value=N,Ie.value=b});let co=0;async function Rn(){if(o.isLoading)return;const y=Ie.value.filter(ke=>!Ln.value.has(ke)&&!De.value[ke]);if(y.length===0)return;const b=co+=1,T=await Promise.all(y.map(async ke=>{try{return await C_(ke)}catch{return null}}));if(b!==co)return;const N={...De.value};for(const ke of T)ke&&(N[ke.id]=ke);De.value=N}tt([Ie,Ln,()=>o.isLoading],()=>{ge&&Rn()}),Cs(async()=>{const{threadIds:y}=await sx(),b=Array.isArray(y)?y.filter(T=>typeof T=="string").map(T=>T.trim()).filter((T,N,ke)=>T.length>0&&ke.indexOf(T)===N):[];b.length>0&&(Ie.value=b);try{te.value=await TS()}catch{te.value={}}try{await dr()}catch{V.value={}}ge=!0,Rn()});const rr=X(()=>Jr(re.value)),Ar=X(()=>{const y=ee.value;return rr.value?r('This will archive the thread "{title}" and remove the attached heartbeat automations.',{title:y}):r('This will archive the thread "{title}". You can find it later in archived threads.',{title:y})}),uo=X(()=>{const y=new Map;for(const b of o.groups)for(const T of b.threads)y.set(T.id,b.projectName);return y}),Uo=X(()=>{const y=new Map;for(const b of o.groups){const T=b.threads.filter(N=>!Sr.value.has(N.id)&&!Bo.value.has(N.id));y.set(b.projectName,T)}return y}),ar=X(()=>{const y=new Map;for(const b of o.groups)for(const T of b.threads){const N=new Date(T.updatedAtIso||T.createdAtIso).getTime();y.set(T.id,N)}return y}),kt=X(()=>{const y=Pe.value;return y?Ln.value.get(y)??null:null}),Ot=X(()=>Ie.value.map(y=>Ln.value.get(y)??De.value[y]??null).filter(y=>y!==null).filter(ya));function Zn(){H.value=!H.value}function _o(){q.value=!q.value}function Ir(){me.value=!me.value}const xo=X(()=>{const y=We.value;if(!y||y.dropTargetIndexFull===null||o.groups.length===0)return null;const b=Math.max(0,Math.min(y.dropTargetIndexFull,o.groups.length)),T=b>y.fromIndex?b-1:b,N=Math.max(0,Math.min(T,o.groups.length-1));return N===y.fromIndex?null:N}),Jn=X(()=>{const b=(hn.value?wa.value:o.groups).map(Pt=>Pt.projectName),T=We.value,N=xo.value;if(!T||N===null)return b;const ke=[...b],[ot]=ke.splice(T.fromIndex,1);return ot?(ke.splice(N,0,ot),ke):b}),Ao=X(()=>{const y={};let b=0;for(const T of Jn.value)y[T]=b,b+=vr(T);return y}),qo=X(()=>{let y=0;for(const b of Jn.value)y+=vr(b);return{height:`${Math.max(0,y)}px`}});function Yr(y){if(Number.isNaN(y))return"n/a";const b=Math.abs(Date.now()-y);if(b<6e4)return r("now");const T=Math.floor(b/6e4);if(T<60)return`${T}m`;const N=Math.floor(T/60);return N<24?`${N}h`:`${Math.floor(N/24)}d`}function Pr(y){const b=ar.value.get(y.id);return Yr(typeof b=="number"?b:new Date(y.updatedAtIso||y.createdAtIso).getTime())}function ni(y){const b=new Date(y).getTime();return Number.isNaN(b)?"":new Date(b).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Io(y){return Sr.value.has(y)}function Ha(y){if(Io(y)){Ie.value=Ie.value.filter(b=>b!==y);return}Ie.value=[y,...Ie.value]}function ba(y){Ha(y),Ve()}function sr(y){fe.value="",s("select",y)}function Jr(y){return nn(y)>0}function nn(y){var b;return((b=te.value[y])==null?void 0:b.length)??0}function Ct(y){return Nn(y)>0}function Nn(y){var T;const b=Vo(y);return b?((T=V.value[b])==null?void 0:T.length)??0:0}function vn(y){if(y.length===0)return"";if(y.length>1){const N=y.filter(ke=>ke.status==="ACTIVE").length;return`${y.length} ${r("automations")} • ${N} ${r("active")}`}const[b]=y,T=b.status==="PAUSED"?"-":b.nextRunAtMs?new Date(b.nextRunAtMs).toLocaleString():r("Not scheduled");return`${b.name} • ${r("Next run")}: ${T}`}function zo(y){return vn(te.value[y]??[])}function fo(y){const b=Vo(y);return vn(b?V.value[b]??[]:[])}function po(y){return String(Math.max(0,y)).padStart(2,"0")}function En(y,b){const T=typeof y=="number"?y:Number(y);return Number.isFinite(T)?Math.max(1,Math.floor(T)):b}function gn(y){const[b,T]=y.split(":"),N=Math.min(23,Math.max(0,Number(b)||0)),ke=Math.min(59,Math.max(0,Number(T)||0));return`FREQ=DAILY;BYHOUR=${N};BYMINUTE=${ke}`}function _t(y,b){const T=En(y,1);return b==="minutes"?`FREQ=MINUTELY;INTERVAL=${T}`:b==="hours"?`FREQ=HOURLY;INTERVAL=${T}`:`FREQ=DAILY;INTERVAL=${T}`}function Jt(y){return Object.fromEntries(y.split(";").map(b=>b.trim()).filter(Boolean).map(b=>{const[T,...N]=b.split("=");return[T.toUpperCase(),N.join("=").trim()]}).filter(([b,T])=>b&&T))}function Mt(y){var ke;const b=Jt(y),T=(ke=b.FREQ)==null?void 0:ke.toUpperCase(),N=En(b.INTERVAL,1);if(T==="DAILY"&&b.BYHOUR!==void 0&&b.BYMINUTE!==void 0&&N===1){const ot=Math.min(23,Math.max(0,Number(b.BYHOUR)||0)),Pt=Math.min(59,Math.max(0,Number(b.BYMINUTE)||0));return{mode:"daily",dailyTime:`${po(ot)}:${po(Pt)}`,interval:1,intervalUnit:"hours"}}return T==="MINUTELY"||T==="HOURLY"||T==="DAILY"&&b.INTERVAL!==void 0?{mode:"interval",dailyTime:"09:00",interval:N,intervalUnit:T==="MINUTELY"?"minutes":T==="HOURLY"?"hours":"days"}:{mode:"advanced",dailyTime:"09:00",interval:1,intervalUnit:"hours"}}function Mn(y){var ke;const b=Jt(y),T=(ke=b.FREQ)==null?void 0:ke.toUpperCase(),N=En(b.INTERVAL,1);if(T==="DAILY"&&b.BYHOUR!==void 0&&b.BYMINUTE!==void 0&&N===1){const ot=Math.min(23,Math.max(0,Number(b.BYHOUR)||0)),Pt=Math.min(59,Math.max(0,Number(b.BYMINUTE)||0));return`${r("RRULE")}: ${y} · ${r("runs daily at")} ${po(ot)}:${po(Pt)}`}return T==="MINUTELY"?`${r("RRULE")}: ${y} · ${r("runs every")} ${N} ${r("minute(s)")}`:T==="HOURLY"?`${r("RRULE")}: ${y} · ${r("runs every")} ${N} ${r("hour(s)")}`:T==="DAILY"&&b.INTERVAL!==void 0?`${r("RRULE")}: ${y} · ${r("runs every")} ${N} ${r("day(s)")}`:y?`${r("RRULE")}: ${y}`:r("RRULE is required.")}function Hn(){const y=ze.value;y.mode==="daily"?Fe.value.rrule=gn(y.dailyTime):y.mode==="interval"&&(Fe.value.rrule=_t(y.interval,y.intervalUnit))}function Wa(y){y!=="minutes"&&y!=="hours"&&y!=="days"||(ze.value={...ze.value,intervalUnit:y},Hn())}function Rr(y){y!=="ACTIVE"&&y!=="PAUSED"||(Fe.value={...Fe.value,status:y})}function Va(){ze.value=Mt(Fe.value.rrule)}function ir(y){ze.value={...ze.value,mode:y},Hn()}function Ho(y){y===o.selectedThreadId&&(s("copy-thread-chat",y),Ve())}function lr(y){s("fork-thread",y),Ve()}function ho(y){return`${r("start new thread")} ${Vn(y)}`}function Er(y){s("start-new-thread",y)}function cr(y){s("browse-thread-files",y),Ve()}function E(y){s("save-thread-project",y),Ve()}async function O(y){var T,N;const b=((N=(T=Ln.value.get(y))==null?void 0:T.cwd)==null?void 0:N.trim())??"";if(Ve(),!(!b||typeof navigator>"u"||!navigator.clipboard))try{await navigator.clipboard.writeText(b)}catch{}}function oe(y,b){if(Pe.value===y&&Re.value==="hover"){if(b){const T=b.relatedTarget,N=nr.value;if(T instanceof Node&&N&&N.contains(T))return}Ve()}}function Ee(y){return Pe.value===y}function Ve(){Pe.value="",Re.value="hover",gt.value={}}function Dt(y){if(fe.value="",Pe.value===y){Ve();return}Re.value="hover",Fn(),un.value=!1,Pe.value=y,Gt(()=>{Go(y)})}function yn(y,b){y.preventDefault(),fe.value="",Re.value="contextmenu",Pe.value=b}function on(y,b){wt.value=y,St.value=b,it.value=!0,Ve(),Gt(()=>{var T,N;(T=Qe.value)==null||T.focus(),(N=Qe.value)==null||N.select()})}function Ht(){it.value=!1,wt.value="",St.value=""}function Qr(){const y=wt.value,b=St.value.trim();!y||!b||(s("rename-thread",{threadId:y,title:b}),Ht())}function Po(y,b){fe.value="",re.value=y,ee.value=b,et.value=!0,Ve()}function dn(){et.value=!1,re.value="",ee.value=""}async function oi(){const y=re.value;y&&(Wo(y),dn())}function Mr(y){return fe.value===y}function Wn(y){if(fe.value!==y){fe.value=y,Ve();return}Wo(y),fe.value=""}function Wo(y){var T,N;const b=Ln.value.get(y)??null;Bo.value.has(y)||(Se.value=[y,...Se.value]),fe.value="",Ve(),h({id:y,title:((T=b==null?void 0:b.title)==null?void 0:T.trim())||"(untitled)",cwd:((N=b==null?void 0:b.cwd)==null?void 0:N.trim())??"",projectName:uo.value.get(y)??""}),Ie.value=Ie.value.filter(ke=>ke!==y),s("archive",y),Jr(y)&&(em(y).catch(()=>{}),te.value=jt(te.value,y))}function On(y){var T;R.value="thread",j.value=y,W.value="",ne.value=!1,de.value="",ie.value="";const b=(T=te.value[y])==null?void 0:T[0];b?ur(b.id):Xr(),$e.value=!0,Ve()}function ri(y){var N;const b=Vo(y);if(!b){R.value="project",j.value="",W.value="",ne.value=!1,de.value=r("Project automation requires a resolved absolute project path."),ie.value="",$e.value=!0,Fn();return}R.value="project",j.value="",W.value=b,ne.value=!1,de.value="",ie.value="";const T=(N=V.value[b])==null?void 0:N[0];T?ur(T.id):Xr(),$e.value=!0,Fn()}function bl(y){R.value=y.scope,j.value=y.scope==="thread"?y.target:"",W.value=y.scope==="project"?y.target:"",ne.value=!1,de.value="",ie.value="",y.scope==="project"?V.value=si(V.value,y.target,y.automation):te.value=Ft(te.value,y.target,y.automation),ur(y.automation.id),$e.value=!0,Fn(),Ve()}function ai(){var y;ne.value=!0,Ce.value="thread",be.value=((y=Yt.value[0])==null?void 0:y.value)??"",R.value="thread",j.value="",W.value="",de.value="",ie.value="",Xr(),$e.value=!0,Fn(),Ve()}function Dn(y){var b;Ce.value=y,be.value="",R.value=y==="project"?"project":"thread",be.value=((b=z.value[0])==null?void 0:b.value)??""}function Xr(){ce.value="",le.value="create",de.value="",ie.value="",Fe.value={name:R.value==="project"?"Project automation":"Thread automation",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"},ze.value=Mt(Fe.value.rrule)}function ur(y){const b=bt.value.find(T=>T.id===y);b&&(ce.value=b.id,le.value="edit",de.value="",ie.value="",Fe.value={name:b.name,prompt:b.prompt,rrule:b.rrule,status:b.status},ze.value=Mt(b.rrule))}function Qn(){$e.value=!1,R.value="thread",j.value="",W.value="",ce.value="",de.value="",ie.value="",Te.value=!1,Be.value=!1}function jt(y,b){return Object.fromEntries(Object.entries(y).filter(([T])=>T!==b))}function Ft(y,b,T){const N=y[b]??[],ke=N.findIndex(Pt=>Pt.id===T.id),ot=[...N];return ke>=0?ot.splice(ke,1,T):ot.push(T),{...y,[b]:ot}}function Ga(y,b,T){const N=(y[b]??[]).filter(ke=>ke.id!==T);return N.length>0?{...y,[b]:N}:jt(y,b)}function Ta(y,b){return Object.fromEntries(Object.entries(y).filter(([T])=>T!==b))}function si(y,b,T){const N=y[b]??[],ke=N.findIndex(Pt=>Pt.id===T.id),ot=[...N];return ke>=0?ot.splice(ke,1,T):ot.push(T),{...y,[b]:ot}}async function dr(){V.value=await kS()}async function Ka(){let y=j.value,b=W.value;Te.value=!0,de.value="",ie.value="";try{if(Hn(),ne.value&&le.value==="create"&&(Ce.value==="thread"?(y=be.value,b="",R.value="thread",j.value=y,W.value=""):(b=be.value,y="",R.value="project",j.value="",W.value=b)),R.value==="thread"&&!y)throw new Error(r("Select a chat target for this automation"));if(R.value==="project"&&!b)throw new Error(r("Select a project target for this automation"));const T={id:ce.value||void 0,name:Fe.value.name,prompt:Fe.value.prompt,rrule:Fe.value.rrule,status:Fe.value.status},N=R.value==="project"?await SS({...T,projectName:b}):await CS({...T,threadId:y});R.value==="project"?await dr():te.value=Ft(te.value,y,N),s("automations-changed"),ur(N.id),ie.value=r("Automation saved."),Te.value=!1}catch(T){de.value=T instanceof Error?T.message:r("Failed to save automation"),Te.value=!1}}async function fr(){const y=j.value,b=W.value,T=ce.value;if(T&&!(R.value==="thread"&&!y)&&!(R.value==="project"&&!b)){Te.value=!0,de.value="",ie.value="";try{R.value==="project"?(await tm(b,T),await dr()):(await em(y,T),te.value=Ga(te.value,y,T));const N=bt.value[0];N?ur(N.id):Xr(),s("automations-changed"),Te.value=!1}catch(N){de.value=N instanceof Error?N.message:r("Failed to remove automation"),Te.value=!1}}}async function Ss(){const y=j.value,b=ce.value;if(!(!y||!b)){Be.value=!0,de.value="",ie.value="";try{await _S(y,b),ie.value=r("Automation run queued.")}catch(T){de.value=T instanceof Error?T.message:r("Failed to run automation")}finally{Be.value=!1}}}function Vn(y){return o.projectDisplayNameById[y]??y}t({openAutomationEditorFromPanel:bl,openAutomationCreatorFromPanel:ai,openRenameThreadDialog:on,openRecycleBin:U});function $r(y){return y.includes("/")||y.includes("\\")}function _s(y){return $r(y)?y:Vn(y)}function xs(y){const b=Tr(y);if(!b)return!1;let T=0;for(const N of o.groups)if($r(N.projectName)&&Tr(N.projectName)===b&&(T+=1,T>1))return!0;return!1}function ii(y){const b=o.projectDisplayNameById[y.projectName],T=Vn(y.projectName),N=y.projectName;if(b&&!$r(N)&&N!==T)return T.includes(N)||/^[0-9a-f]{8}-[0-9a-f-]{27,}$/iu.test(N)?T:`${T} ${N}`;if(b&&$r(N)){const Pt=Tr(N),Mo=Tr(ll(N)),Qt=xs(N)?Mo:Pt;return Qt&&Qt!==T?`${T} ${Qt}`:T}if(!T.includes("/")&&!T.includes("\\"))return T;const ke=Tr(T)||T,ot=Tr(ll(T));return ot.startsWith(".")&&ot!==ke?`${ke} ${ot}`:y.threads.length>0||!xs(N)?ke:ot?`${ke} ${ot}`:ke}function Di(y){return _e.value===y}function Fn(){_e.value="",ft.value="actions",at.value=""}function li(){const y=!un.value;y&&(Fn(),Ve()),un.value=y}function As(y){jn.value=y,un.value=!1}function ka(){ve.value=!ve.value}function Ya(y){je.value=y}function Fi(y){s("request-project-git-status",y),Gt(()=>{xa(y)})}function Bi(y){if(_e.value===y){Fn();return}Ve(),un.value=!1,_e.value=y,ft.value="actions",at.value=Vn(y),Fi(y)}function Ui(y){Ve(),un.value=!1,_e.value=y,ft.value="actions",at.value=Vn(y),Fi(y)}function Ca(y){return o.projectDisplayNameById[y.projectName]??ii(y)}function pr(y){Ve();const b=y.projectName;_e.value=b,ft.value="rename",at.value=Ca(y),Gt(()=>{xa(b)})}function eo(y){s("browse-project-files",y),Fn()}function Ro(y){s("save-project",y),Fn()}function Sa(y){s("create-project-worktree",y),Fn()}function jr(y){s("rename-project",{projectName:y,displayName:at.value})}function _a(y){const b=Vo(y);if(s("remove-project",y),b&&Ct(y)){Ge.value="";const T=V.value;V.value=Ta(V.value,b),tm(b).then(dr).catch(async N=>{V.value=T;const ke=N instanceof Error?N.message:r("Failed to delete project automation");Ge.value=ke,a(ke);try{await dr()}catch{V.value=T}}).finally(()=>{s("automations-changed")})}Fn()}function Vo(y){var T;const b=((T=o.projectCwdByName[y])==null?void 0:T.trim())??"";return LS(b)?b:""}function Ja(y,b){if(!y.altKey||y.key!=="ArrowUp"&&y.key!=="ArrowDown")return;const T=o.groups.findIndex(ot=>ot.projectName===b);if(T<0)return;const N=y.key==="ArrowUp"?-1:1,ke=Math.max(0,Math.min(T+N,o.groups.length-1));ke!==T&&(y.preventDefault(),s("reorder-project",{projectName:b,toIndex:ke}))}function hr(y){return ue.value[y]===!0}function mo(y){return F.value[y]===!0}function Lr(y){ue.value={...ue.value,[y]:!hr(y)}}function Zr(){we.value=!we.value}function mr(y){if(Lt.value===y){Lt.value="";return}F.value={...F.value,[y]:!mo(y)}}function vr(y){const b=kn.value[y]??0,T=We.value,ke=((T==null?void 0:T.projectName)===y?T.groupHeight:null)??b,ot=mo(y)?0:Rm;return Math.max(0,ke+ot)}function Qa(y,b){const T=b instanceof HTMLElement?b:b&&"$el"in b&&b.$el instanceof HTMLElement?b.$el:null;if(T){tr.set(y,T);return}tr.delete(y)}function gr(y,b){const T=b instanceof HTMLElement?b:b&&"$el"in b&&b.$el instanceof HTMLElement?b.$el:null;if(T){lo.set(y,T);return}lo.delete(y)}function Is(y){let b=y.parentElement;for(;b;){const T=window.getComputedStyle(b),N=T.overflowY||T.overflow;if(N==="auto"||N==="scroll"||N==="hidden"||N==="clip")return b.getBoundingClientRect();b=b.parentElement}return new DOMRect(0,0,window.innerWidth,window.innerHeight)}function Xa(y,b){const T=y.getBoundingClientRect(),N=Is(y),ke=6,ot=N.bottom-T.bottom,Pt=T.top-N.top;return ot>=b+ke?"down":Pt>ot?"up":"down"}function ea(y,b){const T=lo.get(y);if(!T)return"down";const N=Xa(T,b);return Le.value={...Le.value,[y]:N},N}function Tl(y){return Le.value[y]??"down"}function xa(y){const b=tr.get(y);if(!b)return;const T=b.querySelector(".project-menu-panel"),N=(T==null?void 0:T.getBoundingClientRect().height)??0;Ue.value={...Ue.value,[y]:Xa(b,N)}}function Bn(y,b,T){return Math.min(Math.max(y,b),T)}function Go(y){const b=lo.get(y);if(!b)return;const T=nr.value,N=T==null?void 0:T.getBoundingClientRect(),ke=(N==null?void 0:N.height)||(T==null?void 0:T.offsetHeight)||112,ot=(N==null?void 0:N.width)||(T==null?void 0:T.offsetWidth)||160,Pt=ea(y,ke),Mo=b.getBoundingClientRect(),Qt=8,qn=4,Xt=Math.max(Qt,window.innerWidth-ot-Qt),to=Bn(Mo.right-ot,Qt,Xt),ja=Bn(Pt==="up"?Mo.top-ke-qn:Mo.bottom+qn,Qt,Math.max(Qt,window.innerHeight-ke-Qt));gt.value={left:`${Math.round(to)}px`,top:`${Math.round(ja)}px`}}function vo(){const y=Pe.value;y&&Go(y)}function Ko(){window.addEventListener("resize",vo),document.addEventListener("scroll",vo,!0)}function Un(){window.removeEventListener("resize",vo),document.removeEventListener("scroll",vo,!0)}function Za(y){const b=_e.value;if(!b)return!1;const T=tr.get(b);if(!T)return!1;if((typeof y.composedPath=="function"?y.composedPath():[]).includes(T))return!0;const ke=y.target;return ke instanceof Node?T.contains(ke):!1}function Aa(y){const b=Pe.value;if(!b)return!1;const T=lo.get(b);if(!T)return!1;const N=typeof y.composedPath=="function"?y.composedPath():[];if(N.includes(T))return!0;const ke=nr.value;if(ke&&N.includes(ke))return!0;const ot=y.target;return ot instanceof Node?!!(T.contains(ot)||ke&&ke.contains(ot)):!1}function Nr(y){if(un.value){const b=Kr.value,T=typeof y.composedPath=="function"?y.composedPath():[];!!b&&(T.includes(b)||y.target instanceof Node&&b.contains(y.target))||(un.value=!1)}_e.value&&(Za(y)||Fn(),Pe.value&&(Aa(y)||Ve()))}function ci(y){_e.value&&!Za(y)&&Fn(),Pe.value&&!Aa(y)&&Ve()}function Or(){un.value&&(un.value=!1),_e.value&&Fn(),Pe.value&&Ve()}function Yo(){window.addEventListener("pointerdown",Nr,{capture:!0}),window.addEventListener("focusin",ci,{capture:!0}),window.addEventListener("blur",Or)}function yr(){window.removeEventListener("pointerdown",Nr,{capture:!0}),window.removeEventListener("focusin",ci,{capture:!0}),window.removeEventListener("blur",Or)}function wn(y,b){const T=b.getBoundingClientRect().height;if(!Number.isFinite(T)||T<=0)return;const N=kn.value[y];N!==void 0&&Math.abs(N-T)<.5||(kn.value={...kn.value,[y]:T})}function Ia(y,b){const T=Fo.get(y);T&&T!==b&&Pn&&Pn.unobserve(T);const N=b instanceof HTMLElement?b:b&&"$el"in b&&b.$el instanceof HTMLElement?b.$el:null;if(N){Fo.set(y,N),It.set(N,y),wn(y,N),Pn==null||Pn.observe(N);return}T&&(Pn==null||Pn.unobserve(T)),Fo.delete(y)}function Pa(y,b){if(y.button!==0||hn.value||Ne.value||We.value)return;const T=o.groups.findIndex(Pt=>Pt.projectName===b),N=Fo.get(b);if(T<0||!N)return;const ke=N.getBoundingClientRect(),ot=mo(b)?0:Rm;Ne.value={projectName:b,fromIndex:T,startClientX:y.clientX,startClientY:y.clientY,pointerOffsetY:y.clientY-ke.top,groupLeft:ke.left,groupWidth:ke.width,groupHeight:ke.height,groupOuterHeight:ke.height+ot},y.preventDefault(),ta()}function ta(){window.addEventListener("mousemove",na),window.addEventListener("mouseup",Eo),window.addEventListener("keydown",Ea)}function Ra(){window.removeEventListener("mousemove",na),window.removeEventListener("mouseup",Eo),window.removeEventListener("keydown",Ea)}function na(y){Xe={clientX:y.clientX,clientY:y.clientY},kl()}function Eo(y){Ma({clientX:y.clientX,clientY:y.clientY});const b=We.value;if(b&&xo.value!==null){const T=o.groups.findIndex(N=>N.projectName===b.projectName);if(T>=0){const N=xo.value;N!==T&&s("reorder-project",{projectName:b.projectName,toIndex:N})}}Ps({preserveToggleSuppression:!!b})}function Ea(y){y.key==="Escape"&&(!Ne.value&&!We.value||(y.preventDefault(),Ps()))}function Ps(y={}){$t!==null&&(window.cancelAnimationFrame($t),$t=null),Xe=null,Ne.value=null,We.value=null,y.preserveToggleSuppression||(Lt.value=""),Ra()}function kl(){$t===null&&($t=window.requestAnimationFrame(()=>{if($t=null,!Xe)return;const y=Xe;Xe=null,Ma(y)}))}function Ma(y){const b=Ne.value;if(!We.value&&b){const T=y.clientX-b.startClientX,N=y.clientY-b.startClientY;if(Math.hypot(T,N)<kP)return;Fn(),Lt.value=b.projectName,We.value={projectName:b.projectName,fromIndex:b.fromIndex,pointerOffsetY:b.pointerOffsetY,groupLeft:b.groupLeft,groupWidth:b.groupWidth,groupHeight:b.groupHeight,groupOuterHeight:b.groupOuterHeight,ghostTop:y.clientY-b.pointerOffsetY,dropTargetIndexFull:null}}We.value&&$a(y)}function $a(y){const b=We.value;if(!b)return;if(b.ghostTop=y.clientY-b.pointerOffsetY,!wr(y)){b.dropTargetIndexFull=null;return}const T=y.clientY,N=pe.value;if(!N){b.dropTargetIndexFull=null;return}const ke=N.getBoundingClientRect(),ot=new Map(o.groups.map((qn,Xt)=>[qn.projectName,Xt])),Pt=o.groups.map(qn=>qn.projectName).filter(qn=>qn!==b.projectName);let Mo=0,Qt=o.groups.length;for(const qn of Pt){const Xt=ot.get(qn);if(Xt===void 0)continue;const to=vr(qn),ja=ke.top+Mo+to/2;if(T<ja){Qt=Xt;break}Mo+=to}b.dropTargetIndexFull=Qt}function wr(y){const b=pe.value;if(!b)return!1;const T=b.getBoundingClientRect(),N=y.clientX>=T.left&&y.clientX<=T.right,ke=y.clientY>=T.top-32&&y.clientY<=T.bottom+32;return N&&ke}function go(y){var b;return((b=We.value)==null?void 0:b.projectName)===y}function Gn(y){const b=We.value,T=Ao.value[y]??0,N=Pe.value?uo.value.get(Pe.value)??"":"",ke=_e.value===y||N===y;return!b||b.projectName!==y?{position:"absolute",top:"0",left:"0",right:"0",zIndex:ke?"40":"1",transform:`translate3d(0, ${T}px, 0)`,willChange:"transform",transition:"transform 180ms ease"}:{position:"fixed",top:"0",left:`${b.groupLeft}px`,width:`${b.groupWidth}px`,height:`${b.groupHeight}px`,zIndex:"50",pointerEvents:"none",transform:`translate3d(0, ${b.ghostTop}px, 0)`,willChange:"transform",transition:"transform 0ms linear"}}function es(y){return Uo.value.get(y.projectName)??[]}function ui(y){if(hn.value)return es(y);if(mo(y.projectName))return[];const b=es(y);return hr(y.projectName)?b:b.slice(0,10)}function Bt(y){return hn.value?!1:!mo(y.projectName)&&es(y).length>10}function Xn(y){return es(y).length>0}function bn(y){var b;return!!y.pendingRequestState||y.inProgress||y.unread||((b=y.externalSession)==null?void 0:b.active)===!0}function Rs(y){return y.pendingRequestState==="approval"?r("Awaiting approval"):r("Awaiting response")}function Jo(y){var b;return((b=y.externalSession)==null?void 0:b.active)===!0?"external":y.pendingRequestState==="approval"?"awaiting-approval":y.pendingRequestState==="response"?"awaiting-response":y.inProgress?"working":y.unread?"unread":"idle"}tt(()=>o.groups.map(y=>y.projectName),y=>{var ke,ot;const b=((ke=We.value)==null?void 0:ke.projectName)??((ot=Ne.value)==null?void 0:ot.projectName)??"";b&&!o.groups.some(Pt=>Pt.projectName===b)&&Ps();const T=new Set(y),N=Object.fromEntries(Object.entries(kn.value).filter(([Pt])=>T.has(Pt)));Object.keys(N).length!==Object.keys(kn.value).length&&(kn.value=N)}),tt(()=>{const y=_e.value;return y?o.projectGitRepoByName[y]:void 0},()=>{const y=_e.value;y&&Gt(()=>{_e.value===y&&xa(y)})});const ts=X(()=>un.value||_e.value!==""||Pe.value!=="");return tt(ts,y=>{if(y){Yo();return}yr()}),tt(Pe,y=>{if(!y){Un();return}Ko(),Gt(()=>{Go(y)})}),Ni(()=>{for(const y of Fo.values())Pn==null||Pn.unobserve(y);Fo.clear(),tr.clear(),Un(),yr(),Ps()}),(y,b)=>(C(),I("section",{class:Ye(["thread-tree-root",{"chats-first":ve.value}])},[Ot.value.length>0?(C(),I("section",LA,[Me(zs,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":H.value,onClick:Zn},{left:mt(()=>[H.value?(C(),Ze(Js,{key:1,class:"thread-icon"})):(C(),Ze(Hc,{key:0,class:"thread-icon"}))]),default:mt(()=>[f("span",NA,k(v(r)("Pinned")),1)]),_:1},8,["aria-expanded"]),H.value?(C(),I("ul",OA,[(C(!0),I(qe,null,At(Ot.value,T=>(C(),Ze(Wc,{key:T.id,thread:T,selected:T.id===e.selectedThreadId,pinned:Io(T.id),"menu-open":Ee(T.id),"show-status-indicator":bn(T),"thread-state":Jo(T),"inline-delete-confirming":Mr(T.id),"automation-count":nn(T.id),"automation-tooltip":zo(T.id),"request-label":Rs(T),"relative-time":Pr(T),"delete-label":v(r)("Delete thread"),"confirm-delete-label":v(r)("Confirm delete"),"confirm-label":v(r)("Confirm"),"worktree-label":v(r)("Worktree thread"),"set-menu-wrap-ref":N=>gr(T.id,N),onSelect:N=>sr(T.id),onInlineDelete:N=>Wn(T.id),onMenuToggle:N=>Dt(T.id),onRowLeave:N=>oe(T.id,N),onRowContextmenu:N=>yn(N,T.id)},null,8,["thread","selected","pinned","menu-open","show-status-indicator","thread-state","inline-delete-confirming","automation-count","automation-tooltip","request-label","relative-time","delete-label","confirm-delete-label","confirm-label","worktree-label","set-menu-wrap-ref","onSelect","onInlineDelete","onMenuToggle","onRowLeave","onRowContextmenu"]))),128))])):Z("",!0)])):Z("",!0),f("section",DA,[Me(zs,{as:"button",class:"thread-tree-header-row section-toggle-row",type:"button","aria-expanded":q.value,onClick:_o},{left:mt(()=>[q.value?(C(),Ze(Js,{key:1,class:"thread-icon"})):(C(),Ze(Hc,{key:0,class:"thread-icon"}))]),right:mt(()=>[f("div",{ref_key:"organizeMenuWrapRef",ref:Kr,class:"organize-menu-wrap"},[f("button",{class:"organize-menu-trigger",type:"button","aria-expanded":un.value,"aria-label":v(r)("Organize threads"),title:v(r)("Organize threads"),onClick:st(li,["stop"])},[Me(hf,{class:"thread-icon"})],8,BA),un.value?(C(),I("div",{key:0,class:"organize-menu-panel",onClick:b[4]||(b[4]=st(()=>{},["stop"]))},[f("p",UA,k(v(r)("Organize")),1),f("button",{class:"organize-menu-item","data-active":jn.value==="project",type:"button",onClick:b[0]||(b[0]=T=>As("project"))},[f("span",null,k(v(r)("By project")),1),jn.value==="project"?(C(),I("span",zA,"✓")):Z("",!0)],8,qA),f("button",{class:"organize-menu-item","data-active":jn.value==="chronological",type:"button",onClick:b[1]||(b[1]=T=>As("chronological"))},[f("span",null,k(v(r)("Chronological list")),1),jn.value==="chronological"?(C(),I("span",WA,"✓")):Z("",!0)],8,HA),f("button",{class:"organize-menu-item","data-active":ve.value,type:"button",onClick:ka},[f("span",null,k(v(r)("Chats first")),1),ve.value?(C(),I("span",GA,"✓")):Z("",!0)],8,VA),b[31]||(b[31]=f("div",{class:"organize-menu-separator"},null,-1)),f("p",KA,k(v(r)("Sort by")),1),f("button",{class:"organize-menu-item","data-active":je.value==="created",type:"button",onClick:b[2]||(b[2]=T=>Ya("created"))},[f("span",null,k(v(r)("Created")),1),je.value==="created"?(C(),I("span",JA,"✓")):Z("",!0)],8,YA),f("button",{class:"organize-menu-item","data-active":je.value==="updated",type:"button",onClick:b[3]||(b[3]=T=>Ya("updated"))},[f("span",null,k(v(r)("Updated")),1),je.value==="updated"?(C(),I("span",XA,"✓")):Z("",!0)],8,QA),b[32]||(b[32]=f("div",{class:"organize-menu-separator"},null,-1)),f("button",{class:"organize-menu-item",type:"button",onClick:U},[f("span",null,k(v(r)("Recycle bin")),1)])])):Z("",!0)],512)]),default:mt(()=>[f("span",FA,k(v(r)("Projects")),1)]),_:1},8,["aria-expanded"]),q.value?(C(),I(qe,{key:0},[Ge.value?(C(),I("p",ZA,k(Ge.value),1)):Z("",!0),hn.value&&wa.value.length===0?(C(),I("p",eI,k(v(r)("No matching threads")),1)):e.isLoading&&e.groups.length===0?(C(),I("p",tI,k(v(r)("Loading threads...")),1)):_r.value?(C(),I("ul",nI,[(C(!0),I(qe,null,At(tn.value,T=>(C(),Ze(Wc,{key:T.id,thread:T,selected:T.id===e.selectedThreadId,pinned:Io(T.id),"menu-open":Ee(T.id),"show-status-indicator":bn(T),"thread-state":Jo(T),"inline-delete-confirming":Mr(T.id),"automation-count":nn(T.id),"automation-tooltip":zo(T.id),"request-label":Rs(T),"relative-time":Pr(T),"delete-label":v(r)("Delete thread"),"confirm-delete-label":v(r)("Confirm delete"),"confirm-label":v(r)("Confirm"),"worktree-label":v(r)("Worktree thread"),"set-menu-wrap-ref":N=>gr(T.id,N),onSelect:N=>sr(T.id),onInlineDelete:N=>Wn(T.id),onMenuToggle:N=>Dt(T.id),onRowLeave:N=>oe(T.id,N),onRowContextmenu:N=>yn(N,T.id)},null,8,["thread","selected","pinned","menu-open","show-status-indicator","thread-state","inline-delete-confirming","automation-count","automation-tooltip","request-label","relative-time","delete-label","confirm-delete-label","confirm-label","worktree-label","set-menu-wrap-ref","onSelect","onInlineDelete","onMenuToggle","onRowLeave","onRowContextmenu"]))),128))])):(C(),I("div",{key:4,ref_key:"groupsContainerRef",ref:pe,class:"thread-tree-groups",style:kr(qo.value)},[(C(!0),I(qe,null,At(wa.value,T=>(C(),I("article",{key:T.projectName,ref_for:!0,ref:N=>Ia(T.projectName,N),class:"project-group","data-project-name":T.projectName,"data-expanded":!mo(T.projectName),"data-dragging":go(T.projectName),style:kr(Gn(T.projectName))},[Me(zs,{as:"div",class:"project-header-row",role:"button",tabindex:"0",onClick:N=>mr(T.projectName),onContextmenu:st(N=>Ui(T.projectName),["prevent"]),onKeydown:[N=>Ja(N,T.projectName),xn(st(N=>mr(T.projectName),["prevent"]),["enter"]),xn(st(N=>mr(T.projectName),["prevent"]),["space"])]},{left:mt(()=>[f("span",rI,[f("span",aI,[mo(T.projectName)?(C(),Ze(Xf,{key:0,class:"thread-icon"})):(C(),Ze(S1,{key:1,class:"thread-icon"}))]),f("span",sI,[mo(T.projectName)?(C(),Ze(Hc,{key:0,class:"thread-icon"})):(C(),Ze(Js,{key:1,class:"thread-icon"}))])])]),right:mt(()=>[f("div",dI,[f("div",{ref_for:!0,ref:N=>Qa(T.projectName,N),class:"project-menu-wrap"},[f("button",{class:"project-menu-trigger",type:"button",title:"project_menu",onClick:st(N=>Bi(T.projectName),["stop"])},[Me(hf,{class:"thread-icon"})],8,fI),Di(T.projectName)?(C(),I("div",{key:0,class:"project-menu-panel","data-open-direction":Ue.value[T.projectName]??"down",onClick:b[6]||(b[6]=st(()=>{},["stop"]))},[ft.value==="actions"?(C(),I(qe,{key:0},[f("button",{class:"project-menu-item",type:"button",onClick:N=>eo(T.projectName)},k(v(r)("Browse files")),9,hI),f("button",{class:"project-menu-item",type:"button",onClick:N=>Ro(T.projectName)},k(v(r)("Export Project")),9,mI),f("button",{class:"project-menu-item",type:"button",onClick:N=>ri(T.projectName)},k(Ct(T.projectName)?v(r)("Manage automations…"):v(r)("Add automation…")),9,vI),e.projectGitRepoByName[T.projectName]?(C(),I("button",{key:0,class:"project-menu-item",type:"button",onClick:N=>Sa(T.projectName)},k(v(r)("New worktree")),9,gI)):Z("",!0),f("button",{class:"project-menu-item",type:"button",onClick:N=>pr(T)},k(v(r)("Rename project")),9,yI),f("button",{class:"project-menu-item project-menu-item-danger",type:"button",onClick:N=>_a(T.projectName)},k(v(r)("Remove")),9,wI)],64)):(C(),I(qe,{key:1},[f("label",bI,k(v(r)("Project name")),1),Nt(f("input",{"onUpdate:modelValue":b[5]||(b[5]=N=>at.value=N),class:"project-menu-input",type:"text",onInput:N=>jr(T.projectName)},null,40,TI),[[sn,at.value]])],64))],8,pI)):Z("",!0)],512),f("button",{class:"thread-start-button",type:"button","aria-label":ho(T.projectName),title:ho(T.projectName),onClick:st(N=>Er(T.projectName),["stop"])},[Me(Li,{class:"thread-icon"})],8,kI)])]),default:mt(()=>[f("span",{class:"project-main-button","data-dragging-handle":go(T.projectName),onMousedown:st(N=>Pa(N,T.projectName),["left"])},[f("span",{class:"project-title",title:_s(T.projectName)},k(ii(T)),9,lI),Ct(T.projectName)?(C(),I("span",{key:0,class:"thread-row-automation-chip",title:fo(T.projectName)},[Me(Gs,{class:"thread-row-automation-icon"}),Nn(T.projectName)>1?(C(),I("span",uI,k(Nn(T.projectName)),1)):Z("",!0)],8,cI)):Z("",!0)],40,iI)]),_:2},1032,["onClick","onContextmenu","onKeydown"]),Xn(T)?(C(),I("ul",CI,[(C(!0),I(qe,null,At(ui(T),N=>(C(),Ze(Wc,{key:N.id,thread:N,selected:N.id===e.selectedThreadId,pinned:Io(N.id),"menu-open":Ee(N.id),"show-status-indicator":bn(N),"thread-state":Jo(N),"inline-delete-confirming":Mr(N.id),"automation-count":nn(N.id),"automation-tooltip":zo(N.id),"request-label":Rs(N),"relative-time":Pr(N),"delete-label":v(r)("Delete thread"),"confirm-delete-label":v(r)("Confirm delete"),"confirm-label":v(r)("Confirm"),"worktree-label":v(r)("Worktree thread"),"set-menu-wrap-ref":ke=>gr(N.id,ke),onSelect:ke=>sr(N.id),onInlineDelete:ke=>Wn(N.id),onMenuToggle:ke=>Dt(N.id),onRowLeave:ke=>oe(N.id,ke),onRowContextmenu:ke=>yn(ke,N.id)},null,8,["thread","selected","pinned","menu-open","show-status-indicator","thread-state","inline-delete-confirming","automation-count","automation-tooltip","request-label","relative-time","delete-label","confirm-delete-label","confirm-label","worktree-label","set-menu-wrap-ref","onSelect","onInlineDelete","onMenuToggle","onRowLeave","onRowContextmenu"]))),128))])):(C(),Ze(zs,{key:1,as:"p",class:"project-empty-row"},{left:mt(()=>[...b[33]||(b[33]=[f("span",{class:"project-empty-spacer"},null,-1)])]),default:mt(()=>[f("span",SI,k(v(r)("No threads")),1)]),_:1})),Bt(T)?(C(),Ze(zs,{key:2,class:"thread-show-more-row"},{left:mt(()=>[...b[34]||(b[34]=[f("span",{class:"thread-show-more-spacer"},null,-1)])]),default:mt(()=>[f("button",{class:"thread-show-more-button",type:"button",onClick:N=>Lr(T.projectName)},k(hr(T.projectName)?"Show less":"Show more"),9,_I)]),_:2},1024)):Z("",!0)],12,oI))),128))],4))],64)):Z("",!0)]),f("section",xI,[Me(zs,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":me.value,onClick:Ir},{left:mt(()=>[me.value?(C(),Ze(Js,{key:1,class:"thread-icon"})):(C(),Ze(Hc,{key:0,class:"thread-icon"}))]),right:mt(()=>[f("div",II,[f("button",{class:"chats-section-action",type:"button","aria-label":v(r)("New chat"),title:v(r)("New chat"),onClick:b[7]||(b[7]=st(T=>y.$emit("start-new-chat"),["stop"]))},[Me(Li,{class:"thread-icon"})],8,PI)])]),default:mt(()=>[f("span",AI,k(v(r)("Chats")),1)]),_:1},8,["aria-expanded"]),me.value&&Sn.value.length===0?(C(),I("p",RI,k(v(r)("No chats")),1)):me.value?(C(),I("ul",EI,[(C(!0),I(qe,null,At(mn.value,T=>(C(),Ze(Wc,{key:T.id,thread:T,selected:T.id===e.selectedThreadId,pinned:Io(T.id),"menu-open":Ee(T.id),"show-status-indicator":bn(T),"thread-state":Jo(T),"inline-delete-confirming":Mr(T.id),"automation-count":nn(T.id),"automation-tooltip":zo(T.id),"request-label":Rs(T),"relative-time":Pr(T),"delete-label":v(r)("Delete thread"),"confirm-delete-label":v(r)("Confirm delete"),"confirm-label":v(r)("Confirm"),"worktree-label":v(r)("Worktree thread"),"set-menu-wrap-ref":N=>gr(T.id,N),onSelect:N=>sr(T.id),onInlineDelete:N=>Wn(T.id),onMenuToggle:N=>Dt(T.id),onRowLeave:N=>oe(T.id,N),onRowContextmenu:N=>yn(N,T.id)},null,8,["thread","selected","pinned","menu-open","show-status-indicator","thread-state","inline-delete-confirming","automation-count","automation-tooltip","request-label","relative-time","delete-label","confirm-delete-label","confirm-label","worktree-label","set-menu-wrap-ref","onSelect","onInlineDelete","onMenuToggle","onRowLeave","onRowContextmenu"]))),128))])):Z("",!0),me.value&&xr.value?(C(),Ze(zs,{key:2,class:"thread-show-more-row"},{left:mt(()=>[...b[35]||(b[35]=[f("span",{class:"thread-show-more-spacer"},null,-1)])]),default:mt(()=>[f("button",{class:"thread-show-more-button",type:"button",onClick:Zr},k(we.value?"Show less":"Show more"),1)]),_:1})):Z("",!0)]),(C(),Ze(Qs,{to:"body"},[kt.value?(C(),I("div",{key:0,ref_key:"openThreadMenuPanelRef",ref:nr,class:"thread-menu-panel thread-menu-panel-fixed",style:kr(gt.value),"data-open-direction":Tl(kt.value.id),onClick:b[17]||(b[17]=st(()=>{},["stop"]))},[f("button",{class:"thread-menu-item",type:"button",onClick:b[8]||(b[8]=T=>On(kt.value.id))},k(Jr(kt.value.id)?v(r)("Manage automations…"):v(r)("Add automation…")),1),f("button",{class:"thread-menu-item",type:"button",onClick:b[9]||(b[9]=T=>cr(kt.value.id))},k(v(r)("Browse files")),1),f("button",{class:"thread-menu-item",type:"button",onClick:b[10]||(b[10]=T=>E(kt.value.id))},k(v(r)("Export Project")),1),f("button",{class:"thread-menu-item",type:"button",onClick:b[11]||(b[11]=T=>O(kt.value.id))},k(v(r)("Copy path")),1),f("button",{class:"thread-menu-item",type:"button",disabled:kt.value.id!==e.selectedThreadId,title:kt.value.id===e.selectedThreadId?v(r)("Copy chat"):v(r)("Open this chat before copying"),onClick:b[12]||(b[12]=T=>Ho(kt.value.id))},k(v(r)("Copy chat")),9,$I),f("button",{class:"thread-menu-item",type:"button",onClick:b[13]||(b[13]=T=>lr(kt.value.id))},k(v(r)("Create chat fork")),1),f("button",{class:"thread-menu-item",type:"button",onClick:b[14]||(b[14]=T=>ba(kt.value.id))},k(Io(kt.value.id)?v(r)("Unpin thread"):v(r)("Pin thread")),1),f("button",{class:"thread-menu-item",type:"button",onClick:b[15]||(b[15]=T=>on(kt.value.id,kt.value.title))},k(v(r)("Rename thread")),1),f("button",{class:"thread-menu-item thread-menu-item-danger",type:"button",onClick:b[16]||(b[16]=T=>Po(kt.value.id,kt.value.title))},k(v(r)("Delete thread")),1)],12,MI)):Z("",!0)])),Me(Dd,{open:it.value,title:v(r)("Rename thread"),subtitle:v(r)("Make it short and recognizable."),onClose:Ht},{footer:mt(()=>[f("button",{class:"rename-thread-button",type:"button",onClick:Ht},k(v(r)("Cancel")),1),f("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",onClick:Qr},k(v(r)("Save")),1)]),default:mt(()=>[Nt(f("input",{ref_key:"renameThreadInputRef",ref:Qe,"onUpdate:modelValue":b[18]||(b[18]=T=>St.value=T),class:"rename-thread-input",type:"text",placeholder:v(r)("Add title..."),onKeydown:xn(st(Qr,["prevent"]),["enter"])},null,40,jI),[[sn,St.value]])]),_:1},8,["open","title","subtitle"]),Me(Dd,{open:et.value,title:rr.value?v(r)("Archive chat and remove automations?"):v(r)("Delete thread?"),subtitle:Ar.value,onClose:dn},{footer:mt(()=>[f("button",{class:"rename-thread-button",type:"button",onClick:dn},k(v(r)("Cancel")),1),f("button",{class:"rename-thread-button rename-thread-button-danger",type:"button",onClick:oi},k(rr.value?v(r)("Archive and remove"):v(r)("Delete")),1)]),_:1},8,["open","title","subtitle"]),Me(Dd,{open:w.value,title:v(r)("Recycle bin"),subtitle:v(r)("Threads you removed are kept here so you can restore them."),size:"md",onClose:b[19]||(b[19]=T=>w.value=!1)},{default:mt(()=>[v(i).length===0?(C(),I("div",LI,k(v(r)("Recycle bin is empty.")),1)):(C(),I("ul",NI,[(C(!0),I(qe,null,At(v(i),T=>(C(),I("li",{key:T.id,class:"recycle-bin-item"},[f("div",OI,[f("span",DI,k(T.title),1),T.projectName?(C(),I("span",FI,k(T.projectName),1)):Z("",!0),f("span",BI,k(ni(T.archivedAtIso)),1)]),f("div",UI,[f("button",{class:"recycle-bin-button recycle-bin-button-primary",type:"button",disabled:M.value===T.id,onClick:N=>Y(T.id)},k(M.value===T.id?v(r)("Restoring…"):v(r)("Restore")),9,qI),f("button",{class:"recycle-bin-button recycle-bin-button-danger",type:"button",onClick:N=>v(p)(T.id)},k(v(r)("Delete permanently")),9,zI)])]))),128))])),A.value?(C(),I("p",HI,k(A.value),1)):Z("",!0)]),_:1},8,["open","title","subtitle"]),(C(),Ze(Qs,{to:"body"},[$e.value?(C(),I("div",{key:0,class:"rename-thread-overlay",onClick:st(Qn,["self"])},[f("div",{class:"rename-thread-panel automation-thread-panel",role:"dialog","aria-modal":"true","aria-label":R.value==="project"?v(r)("Project automation"):v(r)("Thread automation")},[f("h3",VI,k(le.value==="edit"?v(r)("Edit automation"):v(r)("Add automation")),1),f("p",GI,k(pt.value),1),ne.value&&le.value==="create"?(C(),I("div",KI,[b[36]||(b[36]=f("span",{class:"automation-thread-label"},"Target",-1)),f("div",YI,[f("button",{class:Ye(["automation-target-mode",{"is-active":Ce.value==="thread"}]),type:"button",onClick:b[20]||(b[20]=T=>Dn("thread"))}," Existing chat ",2),f("button",{class:Ye(["automation-target-mode",{"is-active":Ce.value==="project"}]),type:"button",onClick:b[21]||(b[21]=T=>Dn("project"))}," Project ",2)]),f("div",JI,[Me(Zo,{modelValue:be.value,"onUpdate:modelValue":b[22]||(b[22]=T=>be.value=T),class:"automation-thread-dropdown",options:z.value,placeholder:Ce.value==="project"?"Select project":"Select chat","enable-search":"","search-placeholder":Ce.value==="project"?"Search projects":"Search chats"},null,8,["modelValue","options","placeholder","search-placeholder"])])])):Z("",!0),bt.value.length>0?(C(),I("div",{key:1,class:"automation-thread-list","aria-label":R.value==="project"?"Project automations":"Thread automations"},[(C(!0),I(qe,null,At(bt.value,T=>(C(),I("button",{key:T.id,class:Ye(["automation-thread-list-item",{"is-active":T.id===ce.value}]),type:"button",onClick:N=>ur(T.id)},[f("span",null,k(T.name),1),f("small",null,k(T.status==="PAUSED"?"Paused":"Active"),1)],10,XI))),128)),f("button",{class:"automation-thread-list-item automation-thread-list-add",type:"button",onClick:Xr},k(v(r)("Add another automation")),1)],8,QI)):Z("",!0),f("label",ZI,[f("span",eP,k(v(r)("Name")),1),Nt(f("input",{"onUpdate:modelValue":b[23]||(b[23]=T=>Fe.value.name=T),class:"rename-thread-input",type:"text",placeholder:v(r)("Automation name")},null,8,tP),[[sn,Fe.value.name]])]),f("label",nP,[f("span",oP,k(v(r)("Prompt")),1),Nt(f("textarea",{"onUpdate:modelValue":b[24]||(b[24]=T=>Fe.value.prompt=T),class:"automation-thread-textarea",rows:"6",placeholder:v(r)("Describe what the automation should do")},null,8,rP),[[sn,Fe.value.prompt]])]),f("div",aP,[f("span",sP,k(v(r)("Schedule")),1),f("div",iP,[f("button",{class:Ye(["automation-schedule-mode",{"is-active":ze.value.mode==="daily"}]),type:"button",onClick:b[25]||(b[25]=T=>ir("daily"))},k(v(r)("Daily")),3),f("button",{class:Ye(["automation-schedule-mode",{"is-active":ze.value.mode==="interval"}]),type:"button",onClick:b[26]||(b[26]=T=>ir("interval"))},k(v(r)("Interval")),3),f("button",{class:Ye(["automation-schedule-mode",{"is-active":ze.value.mode==="advanced"}]),type:"button",onClick:b[27]||(b[27]=T=>ir("advanced"))}," RRULE ",2)]),ze.value.mode==="daily"?(C(),I("div",lP,[f("span",cP,k(v(r)("Run every day at")),1),Nt(f("input",{"onUpdate:modelValue":b[28]||(b[28]=T=>ze.value.dailyTime=T),class:"automation-schedule-time",type:"time",onInput:Hn},null,544),[[sn,ze.value.dailyTime]])])):ze.value.mode==="interval"?(C(),I("div",uP,[f("span",dP,k(v(r)("Run every")),1),Nt(f("input",{"onUpdate:modelValue":b[29]||(b[29]=T=>ze.value.interval=T),class:"automation-schedule-number",type:"number",min:"1",step:"1",onInput:Hn},null,544),[[sn,ze.value.interval,void 0,{number:!0}]]),Me(Zo,{class:"automation-schedule-unit-dropdown","model-value":ze.value.intervalUnit,options:G,placeholder:v(r)("Unit"),"onUpdate:modelValue":Wa},null,8,["model-value","placeholder"])])):Z("",!0),ze.value.mode==="advanced"?Nt((C(),I("input",{key:2,"onUpdate:modelValue":b[30]||(b[30]=T=>Fe.value.rrule=T),class:"rename-thread-input",type:"text",placeholder:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",onInput:Va},null,544)),[[sn,Fe.value.rrule]]):Z("",!0),f("p",fP,k(dt.value),1)]),f("div",pP,[f("span",hP,k(v(r)("Status")),1),Me(Zo,{class:"automation-thread-dropdown","model-value":Fe.value.status,options:K.value,placeholder:v(r)("Status"),"onUpdate:modelValue":Rr},null,8,["model-value","options","placeholder"])]),de.value?(C(),I("p",mP,k(de.value),1)):ie.value?(C(),I("p",vP,k(ie.value),1)):Z("",!0),f("div",gP,[le.value==="edit"&&R.value==="thread"?(C(),I("button",{key:0,class:"rename-thread-button",type:"button",disabled:Te.value||Be.value,onClick:Ss},k(Be.value?v(r)("Running…"):v(r)("Run now")),9,yP)):Z("",!0),le.value==="edit"?(C(),I("button",{key:1,class:"rename-thread-button rename-thread-button-danger",type:"button",disabled:Te.value||Be.value,onClick:fr},k(v(r)("Remove")),9,wP)):Z("",!0),f("button",{class:"rename-thread-button",type:"button",disabled:Te.value||Be.value,onClick:Qn},k(v(r)("Cancel")),9,bP),f("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",disabled:Te.value||Be.value,onClick:Ka},k(Te.value?v(r)("Saving…"):v(r)("Save")),9,TP)])],8,WI)])):Z("",!0)]))],2))}}),SP=yt(CP,[["__scopeId","data-v-58c24410"]]),_P={class:"content-header"},xP=["title"],AP={class:"content-actions"},IP=en({__name:"ContentHeader",props:{title:{},accent:{type:Boolean}},setup(e){return(t,n)=>(C(),I("header",_P,[f("div",{class:Ye(["content-leading",{"is-accent":e.accent}])},[er(t.$slots,"leading",{},void 0)],2),f("h1",{class:Ye(["content-title",{"is-accent":e.accent}]),title:e.title},k(e.title),11,xP),f("div",AP,[er(t.$slots,"actions",{},void 0)])]))}}),PP=yt(IP,[["__scopeId","data-v-61739409"]]),Nm=.0025,Fd=3,Om=2,RP=256;function EP(e){var De;const t=x("idle"),n=x(typeof navigator<"u"&&!!((De=navigator.mediaDevices)!=null&&De.getUserMedia)),o=x(0),r=x(null);let a=null,s=null,i=[],u=null,h=null,p=null,g=null,w=[],A=!1,M=!1,U=null;function Y(){U&&(U.abort(),U=null),t.value==="transcribing"&&(t.value="idle")}function ue(){const fe=r.value;if(!fe||typeof window>"u")return;const Se=fe.getContext("2d");if(!Se)return;const _e=Math.max(1,Math.floor(fe.clientWidth)),Pe=Math.max(1,Math.floor(fe.clientHeight||36)),Re=window.devicePixelRatio||1,Ue=Math.max(1,Math.floor(_e*Re)),Le=Math.max(1,Math.floor(Pe*Re));(fe.width!==Ue||fe.height!==Le)&&(fe.width=Ue,fe.height=Le),Se.setTransform(Re,0,0,Re,0,0),Se.clearRect(0,0,_e,Pe);const gt=Math.max(12,Math.floor(_e/(Fd+Om))),ft=w.slice(-gt),at=Math.max(0,gt-ft.length),it=Pe/2,wt=getComputedStyle(fe).color||"#000000";for(let St=0;St<gt;St+=1){const Qe=ft[St-at]??0,re=Math.max(.08,Math.min(1,Qe*18))*it,ee=St*(Fd+Om);Se.globalAlpha=Qe<=Nm?.35:1,Se.fillStyle=wt,Se.fillRect(ee,it-re,Fd,re*2)}Se.globalAlpha=1}function F(){w=[],o.value=0,ue()}function H(){p&&(p.disconnect(),p.onaudioprocess=null,p=null),h&&(h.disconnect(),h=null),u&&(u.close(),u=null),g=null}function q(fe){if(typeof window>"u")return;const Se=window.webkitAudioContext,_e=window.AudioContext??Se;_e&&(H(),F(),u=new _e,h=u.createMediaStreamSource(fe),p=u.createScriptProcessor(2048,1,1),g=performance.now(),p.onaudioprocess=Pe=>{const Re=Pe.inputBuffer.getChannelData(0);let Ue=0;for(let Le=0;Le<Re.length;Le+=1){const gt=Math.abs(Re[Le]??0);Ue+=gt<Nm?0:gt}w.push(Ue/Re.length),w.length>RP&&w.shift(),g!==null&&(o.value=Math.max(0,performance.now()-g)),ue()},h.connect(p),p.connect(u.destination),ue())}async function me(){var fe;if(t.value==="transcribing"&&Y(),!(t.value!=="idle"||!n.value||A)){A=!0,M=!1;try{s=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1}}),i=[],a=new MediaRecorder(s),a.ondataavailable=Se=>{Se.data.size>0&&i.push(Se.data)},a.onstop=()=>{var Pe;const Se=i,_e=(a==null?void 0:a.mimeType)||((Pe=Se[0])==null?void 0:Pe.type)||"audio/webm";ge(),je(Se,_e)},q(s),a.start(250),t.value="recording",M&&we()}catch(Se){ge(),t.value="idle",(fe=e.onError)==null||fe.call(e,Se)}finally{A=!1}}}function we(){if(A&&t.value==="idle"){M=!0;return}if(!(t.value!=="recording"||!a)&&a.state!=="inactive"){t.value="transcribing";try{a.requestData()}catch{}a.stop()}}function ve(){M=!1,Y(),ge(),t.value="idle"}async function je(fe,Se){var Re,Ue,Le,gt,ft;if(fe.length===0){(Re=e.onEmpty)==null||Re.call(e),t.value="idle";return}const _e=new Blob(fe,{type:Se});t.value="transcribing";let Pe=null;try{const at=Se.split(/[/;]/)[1]??"webm",it=new FormData;it.append("file",_e,`codex.${at}`);const wt=((Ue=e.getLanguage)==null?void 0:Ue.call(e).trim())??"";wt&&wt.toLowerCase()!=="auto"&&it.append("language",wt),Pe=new AbortController,U=Pe;const St=await fetch("/codex-api/transcribe",{method:"POST",body:it,signal:Pe.signal}),Qe=await St.text();let et=null;try{et=Qe.trim()?JSON.parse(Qe):null}catch{et=null}if(!St.ok){const ee=(Le=et==null?void 0:et.error)==null?void 0:Le.trim(),te=Qe.trim();throw new Error(ee||te||`Transcription failed: ${St.status}`)}const re=((et==null?void 0:et.text)??"").trim();re.length>0?e.onTranscript(re):(gt=e.onEmpty)==null||gt.call(e)}catch(at){if(at instanceof DOMException&&at.name==="AbortError")return;(ft=e.onError)==null||ft.call(e,at)}finally{Pe&&U===Pe&&(U=null),t.value==="transcribing"&&(t.value="idle")}}function ge(){H(),F(),a&&(a.ondataavailable=null,a.onstop=null,a=null),s&&(s.getTracks().forEach(fe=>fe.stop()),s=null),i=[]}Ni(()=>{ve()});function Ie(){if(t.value==="recording"){we();return}(t.value==="idle"||t.value==="transcribing")&&me()}return{state:t,isSupported:n,recordingDurationMs:o,waveformCanvasRef:r,startRecording:me,stopRecording:we,toggleRecording:Ie,cancel:ve}}const MP={},$P={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function jP(e,t){return C(),I("svg",$P,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m12 5l0 14m-6-8l6-6l6 6"},null,-1)])])}const LP=yt(MP,[["render",jP]]),NP={},OP={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function DP(e,t){return C(),I("svg",OP,[...t[0]||(t[0]=[f("path",{d:"M4 8V4h4"},null,-1),f("path",{d:"M20 8V4h-4"},null,-1),f("path",{d:"M4 16v4h4"},null,-1),f("path",{d:"M20 16v4h-4"},null,-1)])])}const FP=yt(NP,[["render",DP]]),BP={},UP={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function qP(e,t){return C(),I("svg",UP,[...t[0]||(t[0]=[f("path",{d:"M8 4v4H4"},null,-1),f("path",{d:"M16 4v4h4"},null,-1),f("path",{d:"M8 20v-4H4"},null,-1),f("path",{d:"M16 20v-4h4"},null,-1)])])}const zP=yt(BP,[["render",qP]]),HP={},WP={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function VP(e,t){return C(),I("svg",WP,[...t[0]||(t[0]=[f("path",{stroke:"none",fill:"none",d:"M0 0h24v24H0z"},null,-1),f("path",{fill:"currentColor",d:"M8 5a3 3 0 0 0 -3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3v-8a3 3 0 0 0 -3 -3h-8z"},null,-1)])])}const GP=yt(HP,[["render",VP]]),KP=["aria-label"],YP=en({__name:"ComposerPopover",props:{open:{type:Boolean},align:{},width:{},panelClass:{},ariaLabel:{}},emits:["update:open"],setup(e,{expose:t,emit:n}){const o=e,r=n,a=x(null),s=x(null),i=X(()=>o.open),u=X(()=>o.width==="lg"?"composer-popover-panel--lg":"composer-popover-panel--md");tt(i,async g=>{var w;g&&(await Gt(),(w=s.value)==null||w.focus())});function h(){r("update:open",!o.open)}function p(g){var ue,F,H;if(g.key==="Escape"){r("update:open",!1);return}const w=s.value;if(!w)return;const A=Array.from(w.querySelectorAll("button")).filter(q=>!q.disabled&&q.offsetParent!==null);if(A.length===0)return;if(g.key==="Home"){g.preventDefault(),(ue=A[0])==null||ue.focus();return}if(g.key==="End"){g.preventDefault(),(F=A[A.length-1])==null||F.focus();return}if(g.key!=="ArrowDown"&&g.key!=="ArrowUp")return;g.preventDefault();let M=A.findIndex(q=>q===document.activeElement);M<0&&(M=g.key==="ArrowDown"?-1:0);const U=g.key==="ArrowDown"?1:-1,Y=(M+U+A.length)%A.length;(H=A[Y])==null||H.focus()}return t({root:a}),(g,w)=>(C(),I("div",{ref_key:"rootRef",ref:a,class:Ye(["composer-popover-anchor",{"is-align-end":e.align==="end","is-align-center":e.align==="center"}])},[er(g.$slots,"trigger",{toggle:h,isOpen:i.value},void 0),Me(bc,{name:"composer-popover"},{default:mt(()=>[i.value?(C(),I("div",{key:0,ref_key:"panelRef",ref:s,class:Ye(["composer-popover-panel",[u.value,e.panelClass]]),role:"menu",tabindex:"-1","aria-label":e.ariaLabel,onKeydown:p},[er(g.$slots,"default",{},void 0,!0)],42,KP)):Z("",!0)]),_:3})],2))}}),Tu=yt(YP,[["__scopeId","data-v-bdd45c16"]]),JP=["aria-label"],QP={class:"composer-popover-group-label"},XP=["aria-selected","onMousedown"],ZP={class:"thread-composer-slash-body"},eR={class:"thread-composer-slash-name"},tR={class:"thread-composer-slash-desc"},nR={class:"thread-composer-slash-kind"},oR={class:"composer-popover-group-label composer-popover-group-label--skills"},rR=["aria-selected","onMousedown"],aR=["aria-label","title"],sR={class:"thread-composer-slash-body thread-composer-slash-body--skill"},iR={class:"thread-composer-slash-skill-name"},lR={class:"thread-composer-slash-desc thread-composer-slash-desc--skill"},cR=en({__name:"ComposerSlashMenu",props:{commands:{},highlightedIndex:{}},emits:["select"],setup(e,{emit:t}){const n=e,o=t,{t:r}=io(),a=x(null),s=X(()=>n.commands.filter(g=>g.group!=="skill")),i=X(()=>n.commands.filter(g=>g.group==="skill"));tt(()=>n.highlightedIndex,async()=>{var g,w;await Gt(),(w=(g=a.value)==null?void 0:g.querySelector(".is-active"))==null||w.scrollIntoView({block:"nearest"})});function u(g){return r(g==="rpc"?"Action":g==="text"?"Prompt":g==="skill"?"Skill":"Local")}function h(g){return g==="system"?"S":g==="repo"?"R":g==="plugin"?"P":"U"}function p(g){return r(g==="system"?"System":g==="repo"?"Repo":g==="plugin"?"Plugin":"User")}return(g,w)=>(C(),I("div",{ref_key:"rootRef",ref:a,class:"composer-popover",role:"listbox","aria-label":v(r)("Commands")},[s.value.length>0?(C(),I(qe,{key:0},[f("div",QP,k(v(r)("Commands")),1),(C(!0),I(qe,null,At(s.value,(A,M)=>(C(),I("button",{key:A.id,class:Ye(["thread-composer-slash-row",{"is-active":M===e.highlightedIndex}]),type:"button",role:"option","aria-selected":M===e.highlightedIndex,onMousedown:st(U=>o("select",A),["prevent"])},[w[0]||(w[0]=f("span",{class:"thread-composer-slash-prefix","aria-hidden":"true"},"/",-1)),f("span",ZP,[f("span",eR,k(A.id),1),f("span",tR,k(v(r)(A.description)),1)]),f("span",nR,k(u(A.kind)),1)],42,XP))),128))],64)):Z("",!0),i.value.length>0?(C(),I(qe,{key:1},[f("div",oR,k(v(r)("Skills")),1),(C(!0),I(qe,null,At(i.value,(A,M)=>(C(),I("button",{key:A.skillPath||A.id,class:Ye(["thread-composer-slash-row thread-composer-slash-row--skill",{"is-active":s.value.length+M===e.highlightedIndex}]),type:"button",role:"option","aria-selected":s.value.length+M===e.highlightedIndex,onMousedown:st(U=>o("select",A),["prevent"])},[f("span",{class:Ye(["thread-composer-slash-skill-icon",`is-${A.scope||"user"}`]),"aria-label":p(A.scope),title:p(A.scope)},k(h(A.scope)),11,aR),f("span",sR,[f("span",iR,k(A.displayName||A.id),1),f("span",lR,k(A.description),1)])],42,rR))),128))],64)):Z("",!0)],8,JP))}}),uR=yt(cR,[["__scopeId","data-v-ca16aa11"]]),dR=["data-streaming"],fR=["aria-expanded"],pR={class:"thread-composer-plan-panel-title"},hR={key:0,class:"thread-composer-plan-panel-badge"},mR={class:"thread-composer-plan-panel-progress"},vR=["title"],gR=["data-status"],yR={class:"thread-composer-plan-panel-latest-text"},wR={class:"thread-composer-plan-panel-popover-content"},bR={class:"thread-composer-plan-panel-popover-scroll"},TR={class:"thread-composer-plan-panel-popover-head"},kR={class:"thread-composer-plan-panel-title"},CR={class:"thread-composer-plan-panel-progress"},SR={key:0,class:"thread-composer-plan-panel-popover-section"},_R={class:"thread-composer-plan-panel-section-label"},xR=["title"],AR={class:"thread-composer-plan-panel-popover-section"},IR={class:"thread-composer-plan-panel-section-label"},PR={class:"thread-composer-plan-panel-steps"},RR=["data-status"],ER=["data-status"],MR=["title"],$R={class:"thread-composer-plan-panel-popover-footer"},jR=["disabled","data-state"],LR=en({__name:"ThreadComposerPlanPanel",props:{planPanel:{}},emits:["implement-plan"],setup(e,{emit:t}){const n=e,o=t,{t:r}=io(),a=x(!1),s=X(()=>{var w;return(((w=n.planPanel)==null?void 0:w.steps)??[]).filter(A=>A.status==="completed").length}),i=X(()=>{var w;const g=((w=n.planPanel)==null?void 0:w.steps)??[];if(g.length===0)return null;for(let A=g.length-1;A>=0;A-=1){const M=g[A];if(M.status==="inProgress")return M}return g[g.length-1]}),u=X(()=>{var M,U,Y;const g=((U=(M=n.planPanel)==null?void 0:M.explanation)==null?void 0:U.trim())??"";if(!g)return"";const w=((Y=g.split(/[。!?!?\n]/u)[0])==null?void 0:Y.trim())??"";if(!w)return g;const A=80;return w.length>A?`${w.slice(0,A)}…`:w});function h(g){switch(g){case"completed":return"✓";case"inProgress":return"•";default:return"○"}}function p(){a.value=!1,o("implement-plan")}return(g,w)=>(C(),I("div",{class:"thread-composer-plan-panel","data-streaming":e.planPanel.streaming},[Me(Tu,{open:a.value,align:"center",width:"lg","panel-class":"thread-composer-plan-panel-popover","aria-label":v(r)("Plan"),"onUpdate:open":w[1]||(w[1]=A=>a.value=A)},{trigger:mt(()=>{var A,M;return[f("button",{type:"button",class:"thread-composer-plan-panel-header","aria-expanded":a.value,onClick:w[0]||(w[0]=U=>a.value=!a.value)},[w[2]||(w[2]=f("span",{class:"thread-composer-plan-panel-icon","aria-hidden":"true"},"🗒",-1)),f("span",pR,k(v(r)("Plan")),1),e.planPanel.streaming?(C(),I("span",hR,k(v(r)("Updating")),1)):Z("",!0),f("span",mR,k(s.value)+"/"+k(e.planPanel.steps.length),1),f("span",{class:"thread-composer-plan-panel-latest",title:((A=i.value)==null?void 0:A.step)??""},[i.value?(C(),I("span",{key:0,class:"thread-composer-plan-panel-latest-status","data-status":i.value.status},k(h(i.value.status)),9,gR)):Z("",!0),f("span",yR,k(((M=i.value)==null?void 0:M.step)??""),1)],8,vR),Me(Js,{class:"thread-composer-plan-panel-chevron"})],8,fR)]}),default:mt(()=>[f("div",wR,[f("div",bR,[f("header",TR,[w[3]||(w[3]=f("span",{class:"thread-composer-plan-panel-icon","aria-hidden":"true"},"🗒",-1)),f("span",kR,k(v(r)("Plan")),1),f("span",CR,k(s.value)+"/"+k(e.planPanel.steps.length),1)]),e.planPanel.explanation?(C(),I("section",SR,[f("p",_R,k(v(r)("Summary")),1),f("p",{class:"thread-composer-plan-panel-explanation",title:e.planPanel.explanation},k(u.value),9,xR)])):Z("",!0),f("section",AR,[f("p",IR,k(v(r)("Steps"))+" ("+k(e.planPanel.steps.length)+")",1),f("ol",PR,[(C(!0),I(qe,null,At(e.planPanel.steps,(A,M)=>(C(),I("li",{key:`composer-plan-${e.planPanel.id}-${M}`,class:"thread-composer-plan-panel-step","data-status":A.status},[f("span",{class:"thread-composer-plan-panel-step-status","data-status":A.status},k(h(A.status)),9,ER),f("span",{class:"thread-composer-plan-panel-step-text",title:A.step},k(A.step),9,MR)],8,RR))),128))])])]),f("footer",$R,[f("button",{type:"button",class:"thread-composer-plan-panel-implement",disabled:e.planPanel.streaming||e.planPanel.implemented,"data-state":e.planPanel.implemented?"done":e.planPanel.streaming?"running":"idle",onClick:p},k(e.planPanel.implemented?v(r)("Plan executed"):e.planPanel.streaming?v(r)("Implementing…"):v(r)("Implement plan")),9,jR)])])]),_:1},8,["open","aria-label"])],8,dR))}}),NR=yt(LR,[["__scopeId","data-v-856e4361"]]),OR={key:0,class:"thread-composer-attachments"},DR=["src"],FR=["src","alt"],BR=["aria-label","disabled","onClick"],UR={key:1,class:"thread-composer-folder-chips"},qR=["title"],zR={class:"thread-composer-folder-chip-meta"},HR=["aria-label","disabled","onClick"],WR={key:2,class:"thread-composer-file-chips"},VR=["title"],GR=["aria-label","disabled","onClick"],KR={key:3,class:"thread-composer-skill-chips"},YR=["title","aria-label","onClick"],JR=["aria-label","onClick"],QR=en({__name:"ThreadComposerAttachments",props:{selectedImages:{},folderUploadGroups:{},standaloneFileAttachments:{},selectedSkills:{},isInteractionDisabled:{type:Boolean}},emits:["remove-image","remove-folder","remove-file","remove-skill"],setup(e,{emit:t}){const n=t,o=/\.(mp4|m4v|webm|mov|mkv|ogv|ogg|mpeg|avi)$/iu;function r(u){const h=u.trim();return h?!!(/^video\/|^data:video\//i.test(h)||o.test(h)):!1}function a(u){return u.total<=0?0:Math.round(u.processed/u.total*100)}function s(u){const h=u.trim();return h?h.endsWith("/SKILL.md")?h:`${h.replace(/\/+$/,"")}/SKILL.md`:""}function i(u){const h=s(u.path);!h||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(h)}`,"_blank","noopener,noreferrer")}return(u,h)=>(C(),I(qe,null,[e.selectedImages.length>0?(C(),I("div",OR,[(C(!0),I(qe,null,At(e.selectedImages,p=>(C(),I("div",{key:p.id,class:"thread-composer-attachment"},[r(p.url)?(C(),I("video",{key:0,class:"thread-composer-attachment-image",src:p.url,controls:"",preload:"metadata"},null,8,DR)):(C(),I("img",{key:1,class:"thread-composer-attachment-image",src:p.url,alt:p.name||"Selected image"},null,8,FR)),f("button",{class:"thread-composer-attachment-remove",type:"button","aria-label":`Remove ${p.name||"image"}`,disabled:e.isInteractionDisabled,onClick:g=>n("remove-image",p.id)}," x ",8,BR)]))),128))])):Z("",!0),e.folderUploadGroups.length>0?(C(),I("div",UR,[(C(!0),I(qe,null,At(e.folderUploadGroups,p=>(C(),I("span",{key:p.id,class:"thread-composer-folder-chip"},[Me(Xf,{class:"thread-composer-folder-chip-icon"}),f("span",{class:"thread-composer-folder-chip-name",title:p.name},k(p.name),9,qR),f("span",zR,[p.isUploading?(C(),I(qe,{key:0},[vs(k(a(p))+"% uploading ("+k(p.processed)+"/"+k(p.total)+") ",1)],64)):(C(),I(qe,{key:1},[vs(k(p.filePaths.length)+" file"+k(p.filePaths.length===1?"":"s"),1)],64))]),f("button",{class:"thread-composer-folder-chip-remove",type:"button","aria-label":`Remove folder ${p.name}`,disabled:e.isInteractionDisabled,onClick:g=>n("remove-folder",p.id)},"×",8,HR)]))),128))])):Z("",!0),e.standaloneFileAttachments.length>0?(C(),I("div",WR,[(C(!0),I(qe,null,At(e.standaloneFileAttachments,p=>(C(),I("span",{key:p.fsPath,class:"thread-composer-file-chip"},[Me(Li,{class:"thread-composer-file-chip-icon"}),f("span",{class:"thread-composer-file-chip-name",title:p.fsPath},k(p.label),9,VR),f("button",{class:"thread-composer-file-chip-remove",type:"button","aria-label":`Remove ${p.label}`,disabled:e.isInteractionDisabled,onClick:g=>n("remove-file",p.fsPath)},"×",8,GR)]))),128))])):Z("",!0),e.selectedSkills.length>0?(C(),I("div",KR,[(C(!0),I(qe,null,At(e.selectedSkills,p=>(C(),I("span",{key:p.path,class:"thread-composer-skill-chip"},[f("button",{class:"thread-composer-skill-chip-name",type:"button",title:s(p.path),"aria-label":`Open ${p.displayName||p.name} SKILL.md`,onClick:g=>i(p)},k(p.displayName||p.name),9,YR),f("button",{class:"thread-composer-skill-chip-remove",type:"button","aria-label":`Remove skill ${p.displayName||p.name}`,onClick:g=>n("remove-skill",p.path)},"×",8,JR)]))),128))])):Z("",!0)],64))}}),XR=yt(QR,[["__scopeId","data-v-67fd7144"]]),ZR=en({__name:"ThreadComposerModelControls",props:{models:{},selectedModel:{},modelReasoningEfforts:{},selectedReasoningEffort:{},selectedSpeedMode:{},disabled:{type:Boolean},activeThreadId:{}},emits:["update:selected-model","update:selected-reasoning-effort"],setup(e,{emit:t}){const n=e,o=t,{t:r}=io(),a=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}],s=X(()=>{var Y;const M=(Y=n.modelReasoningEfforts)==null?void 0:Y[n.selectedModel];if(M===void 0)return a;const U=new Set(M);return a.filter(ue=>U.has(ue.value))});function i(M){return M.trim().replace(/^gpt/i,"GPT")}const u=X(()=>n.models.map(M=>({value:M,label:i(M)}))),h=X(()=>n.disabled||!n.activeThreadId),p=X(()=>/^gpt-5\.(?:4|5)(?:$|-)/.test(n.selectedModel.trim())),g=X(()=>n.selectedSpeedMode==="fast"&&p.value);function w(M){o("update:selected-model",M)}function A(M){o("update:selected-reasoning-effort",M)}return(M,U)=>(C(),I(qe,null,[Me(Zo,{class:"thread-composer-control thread-composer-model-control","model-value":e.selectedModel,options:u.value,"selected-prefix-icon":g.value?Gs:null,placeholder:v(r)("Model"),"open-direction":"up",variant:"pill",disabled:h.value||e.models.length===0,"enable-search":"","search-placeholder":v(r)("Search models..."),"onUpdate:modelValue":w},null,8,["model-value","options","selected-prefix-icon","placeholder","disabled","search-placeholder"]),Me(Zo,{class:"thread-composer-control thread-composer-thinking-control","model-value":e.selectedReasoningEffort,options:s.value,placeholder:v(r)("Thinking"),"open-direction":"up",variant:"pill",disabled:h.value||s.value.length===0,"onUpdate:modelValue":A},null,8,["model-value","options","placeholder","disabled"])],64))}}),eE=yt(ZR,[["__scopeId","data-v-ad846e52"]]),tE=["aria-label","disabled"],nE=["disabled"],oE=["disabled"],rE=["disabled"],aE={class:"thread-composer-attach-mode"},sE={class:"thread-composer-attach-mode-label"},iE={class:"thread-composer-attach-mode-buttons"},lE=["disabled"],cE=["disabled"],uE={class:"thread-composer-attach-mode"},dE={class:"thread-composer-attach-mode-label"},fE={class:"thread-composer-attach-mode-buttons"},pE=["disabled","onClick"],hE={class:"thread-composer-attach-mode"},mE={class:"thread-composer-attach-mode-label"},vE={class:"thread-composer-attach-mode-buttons"},gE=["disabled","onClick"],yE={key:0,class:"thread-composer-menu-error",role:"alert"},wE={key:0,class:"thread-composer-approval-tip",role:"status"},bE=en({__name:"ThreadComposerAttachMenu",props:{open:{type:Boolean},isMobile:{type:Boolean},isInteractionDisabled:{type:Boolean},isComposerConfigDisabled:{type:Boolean},isApprovalPolicySaving:{type:Boolean},approvalPolicy:{},approvalPolicyError:{},approvalPolicyNotice:{},selectedCollaborationMode:{},collaborationModeChoices:{},approvalPolicyChoices:{},activeInProgressMode:{}},emits:["update:open","toggle","set-active-mode","select-photo","select-folder","capture-camera","select-collaboration-mode","select-approval-policy"],setup(e,{emit:t}){const n=t,{t:o}=io();function r(){n("toggle")}function a(g){n("set-active-mode",g)}function s(){n("select-photo")}function i(){n("select-folder")}function u(){n("capture-camera")}function h(g){n("select-collaboration-mode",g)}function p(g){n("select-approval-policy",g)}return(g,w)=>(C(),Ze(Tu,{open:e.open,align:"start",width:"lg","aria-label":v(o)("Add photos & files"),"onUpdate:open":w[2]||(w[2]=A=>n("update:open",A))},{trigger:mt(()=>[f("button",{class:"thread-composer-attach-trigger",type:"button","aria-label":v(o)("Add photos & files"),disabled:e.isInteractionDisabled,onClick:r}," + ",8,tE)]),default:mt(()=>[f("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:s},k(v(o)("Add photos & files")),9,nE),f("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:i},k(v(o)("Add folder")),9,oE),f("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:u},k(v(o)("Take photo")),9,rE),w[5]||(w[5]=f("div",{class:"thread-composer-attach-separator"},null,-1)),f("div",aE,[f("span",sE,k(v(o)("In-progress send")),1),f("div",iE,[f("button",{class:Ye(["thread-composer-attach-mode-button",{"is-active":e.activeInProgressMode==="steer"}]),type:"button",disabled:e.isInteractionDisabled,onClick:w[0]||(w[0]=A=>a("steer"))},k(v(o)("Steer")),11,lE),f("button",{class:Ye(["thread-composer-attach-mode-button",{"is-active":e.activeInProgressMode==="queue"}]),type:"button",disabled:e.isInteractionDisabled,onClick:w[1]||(w[1]=A=>a("queue"))},k(v(o)("Queue")),11,cE)])]),e.isMobile?(C(),I(qe,{key:0},[w[3]||(w[3]=f("div",{class:"thread-composer-attach-separator"},null,-1)),f("div",uE,[f("span",dE,k(v(o)("Plan mode")),1),f("div",fE,[(C(!0),I(qe,null,At(e.collaborationModeChoices,A=>(C(),I("button",{key:`mobile-plan-${A.value}`,class:Ye(["thread-composer-attach-mode-button",{"is-active":e.selectedCollaborationMode===A.value}]),type:"button",disabled:A.disabled||e.isComposerConfigDisabled,onClick:M=>h(A.value)},k(v(o)(A.labelKey)),11,pE))),128))])]),w[4]||(w[4]=f("div",{class:"thread-composer-attach-separator"},null,-1)),f("div",hE,[f("span",mE,k(v(o)("Approval policy")),1),f("div",vE,[(C(!0),I(qe,null,At(e.approvalPolicyChoices,A=>(C(),I("button",{key:`mobile-approval-${A.value}`,class:Ye(["thread-composer-attach-mode-button",{"is-active":e.approvalPolicy===A.value}]),type:"button",disabled:e.isApprovalPolicySaving,onClick:M=>p(A.value)},k(v(o)(A.label)),11,gE))),128))])]),e.approvalPolicyError?(C(),I("p",yE,k(e.approvalPolicyError),1)):Z("",!0),Me(bc,{name:"approval-tip"},{default:mt(()=>[e.approvalPolicyNotice?(C(),I("span",wE,k(e.approvalPolicyNotice),1)):Z("",!0)]),_:1})],64)):Z("",!0)]),_:1},8,["open","aria-label"]))}}),TE=yt(bE,[["__scopeId","data-v-93f4c279"]]),kE=/(^|\s)(\/[a-zA-Z]*)$/,Dm=[{id:"compact",description:"Compact the current thread context",kind:"rpc",group:"builtin"},{id:"review",description:"Open the code review pane",kind:"rpc",group:"builtin"},{id:"rename",description:"Rename the current thread",kind:"rpc",group:"builtin"},{id:"archive",description:"Archive the current thread",kind:"rpc",group:"builtin"},{id:"fork",description:"Fork the current thread",kind:"rpc",group:"builtin"},{id:"new",description:"Start a new thread",kind:"rpc",group:"builtin"},{id:"skills",description:"Open the skills page",kind:"rpc",group:"builtin"},{id:"init",description:"Generate or update AGENTS.md",kind:"text",group:"builtin",insertText:"Create or update the AGENTS.md file for this project: include an overview, architecture notes, development conventions, and a workflow guide based on the codebase."},{id:"help",description:"Show help about Codex",kind:"text",group:"builtin",insertText:"How do I use Codex? Point me to the official documentation and explain the available commands."},{id:"mention",description:"Mention files with @",kind:"text",group:"builtin",insertText:"Please review the files I mention with @, starting with: "},{id:"diff",description:"Show the current git diff",kind:"text",group:"builtin",insertText:"Show the current git diff of this project and summarize the changes."},{id:"clear",description:"Clear the input",kind:"local",group:"builtin"}];function CE(e){var o,r,a;const t=[],n=new Set;for(const s of e){const i=s.name.trim().replace(/^\//u,"").toLowerCase().replace(/\s+/gu,"-");if(!i)continue;const u=s.path.trim()||i;n.has(u)||(n.add(u),t.push({id:i,description:((o=s.description)==null?void 0:o.trim())||"Run this skill",kind:"skill",group:"skill",skillPath:s.path,displayName:((r=s.displayName)==null?void 0:r.trim())||s.name.trim(),scope:((a=s.scope)==null?void 0:a.trim())||"user"}))}return t.sort((s,i)=>s.id.localeCompare(i.id))}function SE(e){const t=e.match(kE);if(!t)return null;const n=t[2]??"";return{query:n.slice(1).toLowerCase(),token:n,startIndex:e.length-n.length}}function _E(e,t){const n=t.trim().toLowerCase();if(!n)return e;const o=e.filter(r=>r.id===n);return o.length>0?o:e.filter(r=>r.id.startsWith(n))}const xE={class:"thread-composer-main"},AE={class:"thread-composer-input-row"},IE={key:0,class:"thread-composer-drop-overlay","aria-hidden":"true"},PE={class:"thread-composer-drop-overlay-copy"},RE={key:1,class:"composer-popover"},EE=["onMousedown"],ME={key:1,class:"thread-composer-file-mention-icon-markdown"},$E={class:"thread-composer-file-mention-text"},jE={class:"thread-composer-file-mention-name"},LE={key:0,class:"thread-composer-file-mention-dir"},NE={key:1,class:"thread-composer-file-mention-empty"},OE={key:2,class:"thread-composer-file-mention-empty"},DE=["placeholder","disabled"],FE=["aria-label","title","disabled"],BE={class:"thread-composer-actions"},UE=["aria-label","title","disabled"],qE={key:0,class:"thread-composer-stop-spinner","aria-hidden":"true"},zE=["aria-label","title","disabled"],HE=["aria-label","disabled"],WE={class:"thread-composer-plan-trigger-label"},VE=["aria-checked","disabled","onClick"],GE={class:"thread-composer-menu-item-copy"},KE={class:"thread-composer-menu-item-title"},YE={key:0,class:"thread-composer-menu-item-sub"},JE={key:1,class:"thread-composer-menu-item-hint"},QE={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},XE=["aria-label","disabled"],ZE={class:"thread-composer-approval-trigger-label"},eM=["aria-checked","disabled","onClick"],tM={class:"thread-composer-menu-item-copy"},nM={class:"thread-composer-menu-item-title"},oM={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},rM={key:0,class:"thread-composer-menu-error",role:"alert"},aM={key:0,class:"thread-composer-approval-tip",role:"status"},sM=["title","aria-label"],iM={class:"thread-composer-context-usage-value"},lM={key:0,class:"thread-composer-context-usage-compact"},cM=["disabled"],uM=["disabled"],dM=["disabled"],Bd=12e3,fM=2e3,pM="codex-web-local.thread-draft.v1.",hM=en({__name:"ThreadComposer",props:{activeThreadId:{},cwd:{},fuzzyFileSearchResults:{},collaborationModes:{},selectedCollaborationMode:{},models:{},modelReasoningEfforts:{},selectedModel:{},selectedReasoningEffort:{},selectedSpeedMode:{},skills:{},threadTokenUsage:{},codexQuota:{},isTurnInProgress:{type:Boolean},isStopPending:{type:Boolean},isInterruptingTurn:{type:Boolean},isCompacting:{type:Boolean},externalSessionActive:{type:Boolean},isUpdatingSpeedMode:{type:Boolean},disabled:{type:Boolean},hasQueueAbove:{type:Boolean},sendWithEnter:{type:Boolean},inProgressSubmitMode:{},dictationClickToToggle:{type:Boolean},dictationAutoSend:{type:Boolean},dictationLanguage:{},approvalPolicy:{},isApprovalPolicySaving:{type:Boolean},approvalPolicyError:{},approvalPolicyNotice:{},planPanel:{}},emits:["submit","interrupt","register-fuzzy-session","slash-command","update:selected-collaboration-mode","update:selected-model","update:selected-reasoning-effort","update:selected-speed-mode","update:approval-policy","save-approval-policy","implement-plan","compact-context"],setup(e,{expose:t,emit:n}){const o=e,r=n,{t:a}=io(),s=x(""),i=x([]),u=x([]),h=x([]),p=x([]),g=x(""),w=x(0),A=x(null),M=x(!1),{state:U,cancel:Y}=EP({getLanguage:()=>o.dictationLanguage??"auto",onTranscript:E=>{if(s.value=s.value?`${s.value}
58
58
  ${E}`:E,g.value="",o.dictationAutoSend!==!1){const O=o.isTurnInProgress?Te.value:"steer";Xe(O);return}Gt(()=>{var O;return(O=q.value)==null?void 0:O.focus()})},onEmpty:()=>{g.value=o.dictationClickToToggle?"No speech detected. Click again after speaking.":"No speech detected. Hold the mic and speak."},onError:E=>{if(E instanceof DOMException&&E.name==="NotAllowedError"){g.value="Microphone access was denied.";return}g.value=E instanceof Error?E.message:"Dictation failed."}}),ue=x(null),F=x(null),H=x(null),q=x(null),{isMobile:me}=Wf(),we=x(!1),ve=x(!1),je=x(!1),ge=x(null),Ie=x(""),De=x([]),fe=x(!1),Se=x(0),_e=x(!1),Pe=x(null),Re=x(""),Ue=x(0),Le=x(Dm),gt=X(()=>[...Dm,...CE(o.skills??[])]),ft=x(!1),at=x(!1);let it=!1;const wt=x(0);let St=0,Qe=null,et="",re=!1,ee=0,te=0;const V=typeof navigator<"u"&&/Android/i.test(navigator.userAgent);let $e="";const R=X(()=>{const E=new Set((o.collaborationModes??[]).map(O=>O.value));return[{value:"default",labelKey:"Default",subLabel:"",disabled:!1},{value:"plan",labelKey:"Plan mode",subLabel:a("Agent proposes a plan before acting"),disabled:!1},{value:"execplans",labelKey:"Execution plans",subLabel:"",disabled:!E.has("execplans")}]}),j=[{value:"on-request",label:"When Codex requests it"},{value:"untrusted",label:"Unless trusted"},{value:"never",label:"Never"}],W=X(()=>{const E=R.value.find(O=>O.value===o.selectedCollaborationMode);return a(E?E.labelKey:"Plan mode")}),ce=X(()=>{const E=j.find(O=>O.value===o.approvalPolicy);return a(E?E.label:"Approval policy")}),le=X(()=>o.selectedCollaborationMode==="plan"&&o.selectedModel.trim().length===0),ne=X(()=>o.disabled||o.isUpdatingSpeedMode||!o.activeThreadId||le.value||w.value>0?!1:s.value.trim().length>0||i.value.length>0||h.value.length>0),Ce=X(()=>s.value.trim().length>0||i.value.length>0||u.value.length>0||h.value.length>0||p.value.length>0),be=X(()=>{const E=new Set;for(const O of p.value)for(const oe of O.filePaths)E.add(oe);return h.value.filter(O=>!E.has(O.fsPath))}),de=X(()=>o.disabled||!o.activeThreadId||o.externalSessionActive===!0),ie=X(()=>o.disabled||!o.activeThreadId),Ge=X(()=>o.inProgressSubmitMode==="steer"?"steer":"queue"),Te=x(Ge.value),Be=X(()=>U.value==="recording"),Fe=X(()=>o.activeThreadId?le.value?a("Loading models for plan mode..."):a("Ask Codex anything, @ to add files, / for commands"):a("Select a thread to send a message")),ze=X(()=>s.value.trim().length>0||i.value.length>0||h.value.length>0),bt=X(()=>s.value.split(`
@@ -77,7 +77,7 @@ ${O}`:O,Gt(()=>{var oe;(oe=q.value)==null||oe.focus(),un()}))}function Va(E){con
77
77
 
78
78
  `)&&Di(P,`${xe}
79
79
 
80
- `)}FO(c);const Oa=Xa(c);Oa&&(xa(P,Oa),jt(P,{label:"Running command",details:[((Hi=Oa.commandExecution)==null?void 0:Hi.command)??""]}));const mi=KO(c);if(mi){const xe=(M.value[P]??[]).find(Ut=>Ut.id===mi.itemId);xe!=null&&xe.commandExecution&&xa(P,{...xe,commandExecution:{...xe.commandExecution,aggregatedOutput:`${xe.commandExecution.aggregatedOutput}${mi.delta}`}})}const _n=ea(c);_n&&xa(P,_n);const vi=Tl(c);if(vi&&ii(P,vi),vo(c)&&ka(P,!0),c.method==="turn/completed"){kt=!1,ka(P),av(Ce),M.value[P]&&(M.value=xt(M.value,P));const xe=ro(c);xe&&(yn(xe),On(xe,!1),jt(xe,null),Qn(xe),He||(ho(xe),os(xe)))}}function Or(c){if(c.method==="thread/tokenUsage/updated"||c.method.startsWith("thread/realtime/"))return;const m=c.method,S=m==="turn/started"||m==="turn/completed"||m==="error",P=m.startsWith("thread/")||m==="turn/completed";if(!S&&!P)return;const L=ro(c);L&&S&&mn.add(L),P&&(tn=!0,Sn=!0),!(Cn!==null||typeof window>"u")&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}async function Yo(c,m){if(!ar){ar=!0;try{if(!m)return;const S=[];for(const P of zu(m)){const L=ji(P);S.includes(L)||S.push(L)}if(S.length>0){const P=m.projectOrder.length>0?Qi(S,c):Qi(Qe.value,c);ps(Qe.value,P)||(Qe.value=P)}if(Object.keys(m.labels).length>0||(m.remoteProjects??[]).length>0){const P={...et.value};let L=!1;for(const[D,B]of Object.entries(m.labels)){const J=nt(D).trim(),se=[ji(D)];J&&se.push(J);for(const ye of se)P[ye]!==B&&(P[ye]=B,L=!0)}for(const D of m.order){const B=ji(D),J=Wr(ll(D));if(!J.startsWith(".")||J===B)continue;const se=`${B} ${J}`;P[B]!==void 0||P[B]===se||(P[B]=se,L=!0)}for(const D of m.remoteProjects??[]){const B=ZN(D);P[D.id]!==B&&(P[D.id]=B,L=!0)}L&&(et.value=P)}}catch{}}}async function yr(c={}){if(!(c.force!==!0&&Object.keys(pt.value).length>0))try{const m=await ox();if(Object.keys(m.titles).length>0){const S={};for(const[P,L]of Object.entries(m.titles))S[P]=Us(L);pt.value=S}}catch{}}async function wn(){try{return await el()}catch{return null}}function Ia(c,m,S){const P=c.trim();if(P)return Us(P);const L=S.map(D=>D.label.trim()).find(D=>D.length>0);return L?Us(L):m.length>0?Us("[Image]"):"Untitled thread"}async function Pa(c,m,S,P=[],L=[]){if(pt.value[c])return;const D=m.trim();if(!D){const J=Ia(m,P,L);pt.value={...pt.value,[c]:J},dn(),Bc(c,J);return}const B=D.length>300?D.slice(0,300):D;try{const J=await ux(B,S);if(!J||pt.value[c])return;const se=J.length>yf?J.slice(0,yf):J;pt.value={...pt.value,[c]:se},dn(),Bc(c,se)}catch{}}function ta(c,m){const S=gf(c,m),P=oO(c,m),L=rO(P,m,S);if(!m||m.order.length===0&&(m.remoteProjects??[]).length===0)return L;const D=new Set;for(const J of vf(m,S))D.add(J);const B=L.filter(J=>D.has(J.projectName)?!0:wf(J));return nO(B,m,S)}function Ra(c,m){const S=ta(c,m),P=!!(m&&(m.order.length>0||m.projectOrder.length>0||(m.remoteProjects??[]).length>0)),L=m!=null&&m.projectOrder.length?Qi(vf(m,gf(c,m)),S):Qi(Qe.value,S);ps(Qe.value,L)||(Qe.value=L,P||Vl(Qe.value));const D=Ud(S,Qe.value);Xr(new Set(wo(D).map(se=>se.id)));const B=QN(t.value,D,Y.value);t.value=Yc(t.value,B),Y.value=Tn(Y.value,new Set(wo(t.value).map(se=>se.id))),new Set(wo(t.value).map(se=>se.id));const J={};for(const se of wo(t.value))J[se.id]=se.externalSession??H.value[se.id]??null;H.value=J,dn()}function na(c){const m={};for(const[S,P]of Object.entries(c)){const L=S.trim();!L||P.length===0||(m[L]=P.map(D=>({id:D.id,text:D.text,imageUrls:[...D.imageUrls],skills:D.skills.map(B=>({name:B.name,path:B.path})),fileAttachments:D.fileAttachments.map(B=>({label:B.label,path:B.path,fsPath:B.fsPath})),collaborationMode:D.collaborationMode})))}return m}function Eo(){Z_(na(q.value)).catch(()=>{})}async function Ea(){if(!ge){ge=!0;try{q.value=await ym()}catch{}}}function Ps(c){uo=Jm(uo,c),t.value=Jm(t.value,c),Y.value=xt(Y.value,c),dn()}function kl(c,m){if(c.length===0)return m;if(m.length===0)return c;const S=new Map;for(const L of wo(c))S.set(L.id,L);for(const L of wo(m))S.set(L.id,L);const P=new Map;for(const L of S.values()){const D=P.get(L.projectName);D?D.push(L):P.set(L.projectName,[L])}return Array.from(P.entries()).map(([L,D])=>({projectName:L,threads:D.sort((B,J)=>new Date(J.updatedAtIso).getTime()-new Date(B.updatedAtIso).getTime())})).sort((L,D)=>{var se,ye;const B=new Date(((se=L.threads[0])==null?void 0:se.updatedAtIso)??0).getTime();return new Date(((ye=D.threads[0])==null?void 0:ye.updatedAtIso)??0).getTime()-B})}function Ma(){return Object.values(Y.value).some(c=>c===!0)}function $a(c=Uo){if(!(!co||rr||Ma())){if(Uo=c,typeof window>"u"){wr(c);return}Rn!==null&&window.clearTimeout(Rn),Rn=window.setTimeout(()=>{Rn=null,!(!co||Ma())&&wr(Uo)},O2)}}async function wr(c){if(!(rr||!co||Ma())){rr=!0;try{const m=await im(co,Y_());co=m.nextCursor,Ar=m.nextCursor===null,Ne.value=Ar,uo=kl(uo,m.groups),Ra(uo,c)}catch{}finally{rr=!1,co&&!Ma()&&$a(c)}}}async function go(c={}){if(zt){await zt;return}c.force!==!0&&nr.value&&Date.now()-ga<B2||(zt=(async()=>{var m;nr.value||(K.value=!0);try{const[S,P]=await Promise.all([im(),wn(),yr({force:c.force===!0})]);Uo=P;const L=S.groups;uo=L,co=S.nextCursor,Ar=S.nextCursor===null,Ne.value=Ar,await Yo(L,P),Ra(uo,P),nr.value=!0,ga=Date.now(),Ar||$a(P);const D=wo(e.value);Mr(D),!D.some(J=>J.id===n.value)&&!n.value&&gn(((m=D[0])==null?void 0:m.id)??"")}finally{K.value=!1}})().finally(()=>{zt=null}),await zt)}async function Gn(c,m={}){var J;if(!c)return;const S=Date.now()-(Ln.get(c)??0)<cv;if((J=le.value[c])!=null&&J.transient&&(m.silent===!0||S))return;const P=Et.get(c);if(P&&m.force!==!0){await P;return}const L=ee.value[c]===!0,D=m.silent!==!0&&!L;D&&(pe.value=!0);const B=(async()=>{try{const se=si(c),ye=re.value[c]??"",He=Date.now()-(xr.get(c)??0)<cv;if(m.force===!0?!1:L&&(He||(se.length===0||ye===se)&&Y.value[c]!==!0)){Wn(c);return}const ht=$e.value[c]!==!0?await Ed(c):null,Rt=ht??await Rd(c);Rt.modelProvider&&Mn(c,Rt.modelProvider),Rt.model&&Mt(c,Hn(c,Rt.model,Rt.modelProvider)),ht&&($e.value={...$e.value,[c]:!0});const{messages:Ur,inProgress:$s,activeTurnId:hi,turnIndexByTurnId:js}=Rt;te.value={...te.value,[c]:Rt.hasMoreOlder===!0},ur(c,Ur),Zr(c,js),vr(c);const Qo=o.value[c]??[],Pl=Ym(Qo,Ur,{preserveMissing:m.silent===!0||ON(Qo)});fr(c,Pl);const Oa=s.value[c]??[];if($s){const mi=BN(Oa,Ur);Vn(c,mi)}else $r(c);Bn(c,Ur),Go(c,Ur),ee.value={...ee.value,[c]:!0},xr.set(c,Date.now()),Ln.delete(c),se&&(re.value={...re.value,[c]:se}),On(c,$s),Rt.externalSession&&(H.value={...H.value,[c]:Rt.externalSession}),Ga(c),hi?ne.value={...ne.value,[c]:hi}:ne.value[c]&&(ne.value=xt(ne.value,c)),$s||Bi(c),Wn(c)}catch(se){const ye=se instanceof Error?se.message:"Unknown application error";throw n.value===c&&Ft(c,ye,{transient:!0}),Ln.set(c,Date.now()),se}finally{D&&(pe.value=!1)}})().finally(()=>{Et.delete(c)});Et.set(c,B),await B}async function es(c=n.value){if(!c||V.value[c]===!0||te.value[c]!==!0)return;const m=Jr(c);if(!m){te.value={...te.value,[c]:!1};return}V.value={...V.value,[c]:!0};try{const S=await S_(c,m),P=o.value[c]??[],L=Ym(S.messages,P,{preserveMissing:!0});fr(c,L),Zr(c,{...R.value[c]??{},...S.turnIndexByTurnId}),vr(c),te.value={...te.value,[c]:S.hasMoreOlder}}catch(S){throw It.value=S instanceof Error?S.message:"Failed to load earlier messages",S}finally{V.value={...V.value,[c]:!1}}}async function ui(c,m={}){var S;c&&ee.value[c]!==!0&&(m.silent===!0&&((S=le.value[c])!=null&&S.transient)||await Gn(c,m))}async function Bt(c={}){var P,L;const m=((L=(P=Ir.value)==null?void 0:P.cwd)==null?void 0:L.trim())??"",S=m||"__global__";if(Cr){await Cr;return}c.force!==!0&&Sr&&wa===S&&Date.now()-ya<U2||(Cr=(async()=>{try{Yt.value=await fx(m?[m]:void 0),Sr=!0,ya=Date.now(),wa=S}catch{}finally{Cr=null}})(),await Cr)}async function Xn(c={}){if(hn){await hn;return}c.force!==!0&&Bo||(G.value=!0,hn=(async()=>{try{z.value=await q_(),Bo=!0}catch{}finally{G.value=!1,hn=null}})(),await hn)}async function bn(c={}){await Promise.allSettled([Ee({providerChanged:c.providerChanged,includeProviderModels:c.includeProviderModels}),Ve(),O(),Bt()])}function Rs(c={}){const m=()=>{bn(c)};if(typeof window>"u"){m();return}window.setTimeout(m,0)}async function Jo(c={}){It.value="",it.value="";const m=c.includeSelectedThreadMessages!==!1,S=c.awaitAncillaryRefreshes===!0;try{if(await Ea(),await go({force:c.forceThreadRefresh===!0}),m)try{await Gn(n.value)}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}S?await bn({providerChanged:c.providerChanged,includeProviderModels:c.providerChanged===!0||S}):Rs({providerChanged:c.providerChanged,includeProviderModels:!1})}catch(P){It.value=P instanceof Error?P.message:"Unknown application error",Hm(P)?it.value=lv:it.value=""}}async function ts(c){gn(c);try{return await Gn(c),await Ee({includeProviderModels:!0}),Bt(),"ok"}catch(m){const S=m instanceof Error?m.message:"Unknown application error";It.value=S;const P=AN(m)?"not-found":"error";return c.trim()&&Ft(c,S,{transient:!0}),P}}async function y(c){const m=n.value===c,S=m?xN(wo(e.value),c):"";m&&(gn(S),S&&Gn(S,{silent:!0}));try{await __(c),Ps(c),await go(),m&&S&&n.value===S&&await ui(S,{silent:!0})}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}}async function b(c,m){const S=m.trim();if(!(!c||!S))try{await I_(c,S),pt.value={...pt.value,[c]:S},dn(),Bc(c,S)}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}}async function T(c){var B,J;const m=c.trim();if(!m)return"";const S=wo(t.value).find(se=>se.id===m),P=((B=S==null?void 0:S.cwd)==null?void 0:B.trim())??"",L=((J=S==null?void 0:S.title)==null?void 0:J.trim())??"Forked chat",D=nn(m);It.value="";try{const se=await cm(m,P||void 0,D||void 0),ye=se.threadId.trim();return ye?(oi(ye,P,L),Mt(ye,se.model),$e.value={...$e.value,[ye]:!0},gn(ye),await go(),await Gn(ye),ye):""}catch(se){return It.value=se instanceof Error?se.message:"Unknown application error",""}}async function N(c,m){var B;const S=c.trim();if(!S||!Number.isInteger(m)||m<0)return"";if(Y.value[S]===!0)return It.value="Finish the current turn before forking from a response.","";if(ee.value[S]!==!0)try{await Gn(S)}catch(J){return It.value=J instanceof Error?J.message:"Unknown application error",""}const P=o.value[S]??[];let L=-1;for(const J of P)typeof J.turnIndex=="number"&&Number.isFinite(J.turnIndex)&&(L=Math.max(L,J.turnIndex));if(L>=0&&m>L)return"";const D=wo(t.value).find(J=>J.id===S)??null;try{It.value="";const J=await cm(S),se=J.threadId.trim();if(!se)return"";const ye=J.cwd.trim()||((B=D==null?void 0:D.cwd)==null?void 0:B.trim())||"",He=aO((D==null?void 0:D.title)||(D==null?void 0:D.preview)||"Untitled thread");oi(se,ye,He),Mt(se,J.model),fr(se,J.messages),ee.value={...ee.value,[se]:!0},$e.value={...$e.value,[se]:!0},Ya(se),Vn(se,[]),ka(se),M.value[se]&&(M.value=xt(M.value,se)),Wo(se,null),jt(se,null),Ft(se,null),On(se,!1);const rt=L-m;if(rt>0){const ct=await Md(se,rt);fr(se,ct)}return await b(se,He),gn(se),go().catch(()=>{}),se}catch(J){return It.value=J instanceof Error?J.message:"Unknown application error",""}}async function ke(c,m,S=[],P=[],L=[]){if(!c||!m.trim()||S.length>0||P.length>0||L.length>0)return!1;const B=(Te.value[c]??[]).filter(ye=>ye.method==="item/tool/requestUserInput");if(B.length!==1)return!1;const[J]=B,se=o2(J);return se.length!==1?!1:br({id:J.id,result:{answers:{[se[0]]:{answers:[m.trim()]}}}})}function ot(){if(typeof window>"u")return{};try{const c=window.localStorage.getItem(sv);if(!c)return{};const m=JSON.parse(c);if(!m||typeof m!="object"||Array.isArray(m))return{};const S={};for(const[P,L]of Object.entries(m)){if(!P||!Array.isArray(L))continue;const D=L.filter(B=>!!B&&typeof B=="object"&&typeof B.id=="string"&&typeof B.text=="string");D.length>0&&(S[P]=D)}return S}catch{return{}}}function Pt(){typeof window>"u"||window.localStorage.setItem(sv,JSON.stringify(we.value))}function Mo(){if(typeof window>"u")return Qc;try{const c=window.localStorage.getItem(iv);if(c===null)return Qc;const m=Number(c);return Number.isFinite(m)&&m>=0?Math.round(m):Qc}catch{return Qc}}function Qt(c){const m=Number.isFinite(c)&&c>0?Math.round(c):0;m!==ve.value&&(ve.value=m,!(typeof window>"u")&&window.localStorage.setItem(iv,String(m)))}async function qn(c,m,S,P,L,D){if(je||ve.value<=0||Y.value[c]===!0)return!1;const B=ze.value[c];if(!B||B.remainingContextPercent===null||B.remainingContextPercent>ve.value)return!1;const J=we.value[c]??[],se=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ye=D==="plan"?"plan":D==="default"?"default":Ue.value;return we.value={...we.value,[c]:[...J,{id:se,text:m,imageUrls:S,skills:P,fileAttachments:L,collaborationMode:ye}]},Pt(),kn.value.has(c)||Dr(c),!0}async function Xt(c){const m=we.value[c];if(!m||m.length===0||Y.value[c]===!0)return;const S=[...m];we.value=xt(we.value,c),Pt(),je=!0;try{for(const P of S)try{await to(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments,void 0,P.collaborationMode)}catch{}}finally{je=!1}}async function to(c,m=[],S=[],P="steer",L=[],D,B){if($t.value)return;const J=n.value,se=c.trim();if(!J||!se&&m.length===0&&L.length===0||await ke(J,se,m,S,L)||await qn(J,se,m,S,L,B))return;const ye=Y.value[J]===!0;if(ye&&P==="queue"){const He=q.value[J]??[],rt=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ct=[...He],ht=typeof D=="number"?Math.max(0,Math.min(D,ct.length)):ct.length;ct.splice(ht,0,{id:rt,text:se,imageUrls:m,skills:S,fileAttachments:L,collaborationMode:B==="plan"?"plan":B==="default"?"default":Ue.value}),q.value={...q.value,[J]:ct},Eo();return}if(ye){kt=!0,no(J,se,m,S,L,B).catch(He=>{const rt=He instanceof Error?He.message:"Unknown application error";Ft(J,rt),It.value=rt});return}It.value="",kt=!0,Wo(J,null),jt(J,{label:"Thinking",details:oe(nn(J),gt.value,B==="plan"?"plan":B==="default"?"default":Ue.value)}),Ft(J,null),On(J,!0);try{await no(J,se,m,S,L,B)}catch(He){kt=!1,On(J,!1),jt(J,null);const rt=He instanceof Error?He.message:"Unknown application error";throw Ft(J,rt),It.value=rt,He}}async function ja(c,m,S=[],P=[],L=[]){if($t.value)return"";const D=c.trim(),B=m.trim(),J=nn(Xs).trim(),se=Ue.value;if(!D&&S.length===0&&L.length===0)return"";We.value=!0,It.value="";let ye="";try{try{const ht=await lm(B||void 0,J||void 0);ye=ht.threadId,Mt(ye,ht.model),Mn(ye,ht.modelProvider||at.value),Va(ye,se)}catch(ht){if(J&&J!==sa&&Kc(ht)){await Ho();const Rt=await lm(B||void 0,sa);ye=Rt.threadId,Mt(ye,Rt.model),Mn(ye,Rt.modelProvider||at.value),Va(ye,se)}else throw ht}if(!ye)return"";oi(ye,B,D||"[Image]"),Ss(ye,D,S,P,L),bl(ye),$e.value={...$e.value,[ye]:!0},gn(ye),kt=!0,Wo(ye,null),jt(ye,{label:"Thinking",details:oe(nn(ye),gt.value,se)}),Ft(ye,null),On(ye,!0);const He=ye,rt=B||null,ct=D;return no(ye,D,S,P,L,se).catch(ht=>{kt=!1,On(ye,!1),jt(ye,null);const Rt=ht instanceof Error?ht.message:"Unknown application error";Ft(ye,Rt),It.value=Rt}).finally(()=>{We.value=!1}),Pa(He,ct,rt,S,L),ye}catch(He){kt=!1,ye&&(On(ye,!1),jt(ye,null));const rt=He instanceof Error?He.message:"Unknown application error";throw ye&&Ft(ye,rt),It.value=rt,We.value=!1,He}}async function no(c,m,S=[],P=[],L=[],D){const B=gt.value,J=D==="plan"?"plan":D==="default"?"default":Ue.value,se=m.trim(),ye=[...S];if(ye.length===0&&jn(se)){const ct=Pn(c);ct&&ye.push(ct)}const He=P.map(ct=>({name:ct.name,path:ct.path})),rt=L.map(ct=>({...ct}));lr(c,{text:se,imageUrls:[...ye],skills:He,fileAttachments:rt,effort:B,collaborationMode:J,fallbackRetried:!1});try{if($e.value[c]!==!0){const Rt=await Ed(c);Rt.model&&Mt(c,Hn(c,Rt.model,Rt.modelProvider)),Rt.modelProvider&&Mn(c,Rt.modelProvider),$e.value={...$e.value,[c]:!0}}const ct=nn(c);let ht="";try{ht=await $d(c,m,ye,ct||void 0,B||void 0,P.length>0?P:void 0,L,J)}catch(Rt){if(ct&&ct!==sa&&Kc(Rt))await Ho(c),lr(c,{text:se,imageUrls:[...ye],skills:He,fileAttachments:rt,effort:B,collaborationMode:J,fallbackRetried:!0}),ht=await $d(c,m,ye,sa,B||void 0,P.length>0?P:void 0,L,J);else throw Rt}ht&&(ne.value={...ne.value,[c]:ht},Dn(c,ht)),mn.add(c),await fn(),on(c)}catch(ct){throw ct}}async function ns(c){if(me.value[c]!==!0){me.value={...me.value,[c]:!0};try{q.value=await ym()}catch{}finally{me.value=xt(me.value,c)}}}function os(c){ns(c),!(typeof window>"u")&&window.setTimeout(()=>{ns(c)},650)}async function Es(){const c=n.value;if(!c||Y.value[c]!==!0||be.value[c]===!0)return;let m=ne.value[c];if(!m){const{activeTurnId:D}=await Rd(c);m=D,m&&(ne.value={...ne.value,[c]:m})}if(!m)throw new Error("Could not determine active turn id for interrupt");const S=Io.value.filter(D=>D.turnId===m),P=S.find(D=>D.role==="user"),L=S.some(D=>{if(D.role==="assistant")return!0;const B=D.messageType??"";return B==="commandExecution"||B==="toolCall"||B==="worked"||B==="fileChange"||B==="plan"||B==="plan.live"||B==="compaction.done"||B==="turnError"});Xe.value=!0,It.value="";try{if(await P_(c,m),On(c,!1),jt(c,null),Ft(c,null),ne.value[c]&&(ne.value=xt(ne.value,c)),mn.add(c),tn=!0,await fn(),P&&!L){const D=(o.value[c]??[]).filter(J=>J.turnId!==m);fr(c,D);const B=u.value[c];if(B){const J=B.filter(se=>se.turnId!==m);J.length!==B.length&&(u.value={...u.value,[c]:J},zd(u.value))}Ge.value={...Ge.value,[c]:{text:P.text??"",imageUrls:P.images??[],fileAttachments:(P.fileAttachments??[]).map(J=>({label:J.label,path:J.path,fsPath:J.fsPath??J.path})),skills:P.skills??[]}}}}catch(D){const B=D instanceof Error?D.message:"Failed to interrupt active turn";Ft(c,B),It.value=B}finally{Xe.value=!1}}function Ms(c){c&&Ge.value[c]&&(Ge.value=xt(Ge.value,c))}async function La(c){var S,P;const m=n.value;if(m&&!Lt.value&&c.trim()){Lt.value=!0,It.value="";try{Y.value[m]===!0&&await Es();const L=o.value[m]??[],D=L.find(rt=>rt.turnId===c),B=typeof(D==null?void 0:D.turnIndex)=="number"?D.turnIndex:-1;if(B<0)return;const J=L.reduce((rt,ct)=>typeof ct.turnIndex=="number"&&ct.turnIndex>rt?ct.turnIndex:rt,-1);if(J<0||B>J)return;const se=J-B+1;if(se<1)return;const ye=((P=(S=Ir.value)==null?void 0:S.cwd)==null?void 0:P.trim())??"";ye&&await a1(m,c,ye);const He=await Md(m,se);fr(m,He),Vn(m,[]),ka(m),M.value[m]&&(M.value=xt(M.value,m)),Wo(m,null),jt(m,null),Ft(m,null),tn=!0,await fn()}catch(L){It.value=L instanceof Error?L.message:"Failed to rollback thread"}finally{Lt.value=!1}}}function Kn(c,m){const P=(i.value[c]??[]).filter(L=>L.messageType!=="compaction.pending"&&L.messageType!=="compaction.done");P.push({id:`compaction:${m}:${c}:${Date.now()}`,role:"system",text:"",messageType:m==="pending"?"compaction.pending":"compaction.done"}),i.value={...i.value,[c]:P}}function rs(c,m){const S=new Set(kn.value);m?S.add(c):S.delete(c),kn.value=S}function kc(c){lo=c.trim(),tr.value=[]}async function Dr(c){const m=c.trim();if(!(!m||kn.value.has(m))){rs(m,!0),Kn(m,"pending");try{await A_(m);const S=2e3,P=14,L=Date.now()+Fo;let D=0;for(;Date.now()<L&&D<P&&kn.value.has(m);){if((await Rd(m)).messages.some(se=>se.messageType==="compaction.done")){rs(m,!1),n.value===m&&await Gn(m,{silent:!0,force:!0}),Kn(m,"done"),Xt(m);break}D+=1,await _N(S)}kn.value.has(m)&&(rs(m,!1),Kn(m,"done"),Xt(m))}catch(S){It.value=S instanceof Error?S.message:"Failed to compact thread",rs(m,!1),Kn(m,"done"),Xt(m)}}}let di=null;async function Hu(c,m){try{const S=await el(),P={...S.labels};let L=!1;for(const D of S.order){if(!su(D,c))continue;const B=m.trim();B.length===0?P[D]!==void 0&&(delete P[D],L=!0):P[D]!==B&&(P[D]=B,L=!0)}L&&await jd({order:S.order,labels:P,active:S.active,projectOrder:S.projectOrder})}catch{}}function as(c,m){c.length===0||(et.value[c]??"")===m||(et.value={...et.value,[c]:m},tv(et.value),di!==null&&clearTimeout(di),di=setTimeout(()=>{di=null,Hu(c,m)},500))}async function Fr(c){var D;if(c.length===0)return;const m=Qe.value.filter(B=>B!==c);if(ps(Qe.value,m)||(Qe.value=m,Vl(Qe.value)),t.value=t.value.filter(B=>B.projectName!==c),et.value[c]!==void 0){const B={...et.value};delete B[c],et.value=B,tv(B)}dn();const S=wo(e.value);Mr(S),S.some(B=>B.id===n.value)||gn(((D=S[0])==null?void 0:D.id)??"");const L=new Set;try{const B=await el();eO(B,c).forEach(J=>{L.add(J)})}catch{}if(L.size>0)try{const B=await el(),J=B.order.filter(He=>!L.has(He)),se=B.active.filter(He=>!L.has(He)),ye=se.length===0&&J.length>0?[J[0]]:se;await jd({order:J,labels:GN(B.labels,L),active:ye,projectOrder:B.projectOrder.filter(He=>He!==c&&!L.has(He))});return}catch{}await $n()}function fi(c,m){if(c.length===0||t.value.length===0)return;const S=t.value.map(se=>se.projectName),P=S.indexOf(c);if(P===-1)return;const L=Math.max(0,Math.min(m,S.length-1)),D=MN(S,P,L);if(D===S)return;const B=Qi(D,t.value);Qe.value=B,Vl(Qe.value);const J=Ud(t.value,Qe.value);t.value=Yc(t.value,J),dn(),$n()}function Cl(c){const m=c.trim();if(!m)return;const S=[m,...Qe.value.filter(L=>L!==m)];if(ps(Qe.value,S))return;Qe.value=S,Vl(Qe.value);const P=Ud(t.value,Qe.value);t.value=Yc(t.value,P),dn(),$n()}async function $n(){try{const c=await el(),m=tO(c,Qe.value,t.value);await jd({order:m.order,labels:c.labels,active:m.active,projectOrder:m.projectOrder})}catch{}}async function fn(){if(Kr.value){typeof window<"u"&&Cn===null&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc));return}Kr.value=!0;const c=tn,m=Sn,S=new Set(mn);tn=!1,Sn=!1,mn.clear();try{c&&await go({force:m});const P=n.value;if(!P)return;const L=S.has(P),D=Y.value[P]===!0,B=si(P),J=re.value[P]??"";(B.length>0&&B!==J||L||D&&ee.value[P]!==!0||c&&ee.value[P]!==!0)&&await Gn(P,{silent:!0,force:L})}catch{}finally{Kr.value=!1,(tn||mn.size>0)&&typeof window<"u"&&Cn===null&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}}async function Br(){await _l(),tn=!nr.value,n.value&&ee.value[n.value]!==!0&&mn.add(n.value),await fn()}function Sl(c){const m=Ke(c.params),S=typeof(m==null?void 0:m.threadId)=="string"?m.threadId.trim():"";if(!S)return;const P=Ke(m==null?void 0:m.externalSession),L=P&&typeof P.origin=="string"&&P.origin.trim().length>0?{origin:P.origin.trim(),active:P.active===!0,lastWriteAt:typeof P.lastWriteAt=="string"?P.lastWriteAt:null}:null;H.value={...H.value,[S]:L},On(S,(L==null?void 0:L.active)===!0),dn(),tn=!0,n.value===S&&mn.add(S),Cn===null&&typeof window<"u"&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}function oa(){typeof window>"u"||So||(_l(),Wu(),So=J_(c=>{if(c.method==="ready"){Ta(),Br();return}if(c.method==="externalSessionChanged"){Sl(c);return}ci(c),Or(c)}))}async function _l(){try{const m=(await gm()).map(S=>ov(S)).filter(S=>S!==null);Vo(m)}catch{}}async function Wu(){try{const c=await rx(),m=Object.entries(c);if(m.length===0)return;const S={...u.value};let P=!1;for(const[L,D]of m){const B=D.filter(He=>!!He&&typeof He.id=="string");if(B.length===0)continue;const J=S[L]??[],se=new Set(J.map(He=>He.text)),ye=[...J];for(const He of B)se.has(He.text)||(ye.push(He),se.add(He.text));S[L]=ye.slice(-20),P=!0}P&&(u.value=S,zd(S))}catch{}}async function br(c){try{return await Q_(c.id,{result:c.result,error:c.error}),jr(c.id),ce.value=xt(ce.value,String(c.id)),!0}catch(m){const S=m instanceof Error?m.message:"Failed to reply to server request";return await qi(c.id)?(It.value=S,ce.value={...ce.value,[String(c.id)]:S},!1):(jr(c.id),ce.value=xt(ce.value,String(c.id)),!0)}}async function qi(c){try{const m=await gm();for(const S of m){const P=Ke(S);if((P==null?void 0:P.id)===c)return!0}return!1}catch{return!0}}function xl(){if(So&&(So(),So=null),tn=!1,mn.clear(),Ot.clear(),Cn!==null&&typeof window<"u"&&(window.clearTimeout(Cn),Cn=null),or!==null&&typeof window<"u"&&(window.clearTimeout(or),or=null),Rn!==null&&typeof window<"u"&&(window.clearTimeout(Rn),Rn=null),typeof window<"u")for(const c of Tt.values())window.clearTimeout(c);Tt.clear(),kt=!1,o.value={},r.value={},s.value={},h.value={},u.value={},M.value={},U.value={},R.value={},W.value={},j.value={},le.value={},ne.value={},A.clear(),av(Ce),w.clear(),iO(),be.value={},de.value={},ie.value={},q.value={},me.value={},we.value={},Pt(),Eo(),Fe.value=null,ze.value={}}const Al=X(()=>{const c=n.value;if(!c)return[];const m=q.value[c]??[];return[...(we.value[c]??[]).map(L=>({...L,awaitingCompaction:!0})),...m]});function ra(c){const m=n.value;if(!m)return;const S=we.value[m];if(S!=null&&S.some(D=>D.id===c)){const D=S.filter(B=>B.id!==c);we.value=D.length>0?{...we.value,[m]:D}:xt(we.value,m),Pt();return}const P=q.value[m];if(!P)return;const L=P.filter(D=>D.id!==c);q.value=L.length>0?{...q.value,[m]:L}:xt(q.value,m),Eo()}function Il(c,m){const S=n.value;if(!S)return;const P=q.value[S];if(!P)return;const L=we.value[S];if(L!=null&&L.some(ye=>ye.id===c||ye.id===m))return;const D=P.findIndex(ye=>ye.id===c),B=P.findIndex(ye=>ye.id===m);if(D<0||B<0||D===B)return;const J=[...P],[se]=J.splice(D,1);J.splice(B,0,se),q.value={...q.value,[S]:J},Eo()}function pi(c){const m=n.value;if(!m)return;const S=we.value[m],P=S==null?void 0:S.find(B=>B.id===c);if(P){ra(c),Rr(P.collaborationMode),je=!0,to(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments).finally(()=>{je=!1});return}const L=q.value[m];if(!L)return;const D=L.find(B=>B.id===c);D&&(ra(c),Rr(D.collaborationMode),to(D.text,D.imageUrls,D.skills,"steer",D.fileAttachments))}function Na(c,m={}){gn(c,m)}return{projectGroups:e,projectDisplayNameById:et,selectedThread:Ir,selectedThreadTokenUsage:ni,selectedThreadTerminalOpen:xo,isSelectedThreadInterruptPending:Jn,selectedThreadServerRequests:Ao,selectedLiveOverlay:Yr,selectedActiveTurnId:qo,lastPlanByThreadId:a,resolveThreadTurnIndex:mr,codexQuota:Pr,selectedThreadId:n,availableCollaborationModes:_e,availableModelIds:De,availableModelReasoningEfforts:fe,selectedCollaborationMode:Ue,selectedModelId:Le,selectedReasoningEffort:gt,selectedSpeedMode:ft,codexCliMissingError:it,installedSkills:Yt,accountRateLimitSnapshots:In,messages:Io,hasMoreOlderMessages:ba,isLoadingThreads:K,isThreadListFullyLoaded:Ne,isLoadingMessages:pe,isLoadingOlderMessages:sr,isSendingMessage:We,isInterruptingTurn:Xe,isUpdatingSpeedMode:$t,isRollingBack:Lt,compactingThreadIds:kn,fuzzyFileSearchResults:tr,registerFuzzyFileSearchSession:kc,error:It,refreshAll:Jo,refreshSkills:Bt,refreshHooks:Xn,hooksList:z,isHooksLoading:G,onRealtimeEvent:Za,selectThread:ts,loadMessages:Gn,loadOlderMessages:es,ensureThreadMessagesLoaded:ui,setThreadTerminalOpen:dr,toggleSelectedThreadTerminal:Ka,archiveThreadById:y,compactThreadById:Dr,renameThreadById:b,forkThreadById:T,forkThreadFromTurn:N,rollbackSelectedThread:La,sendMessageToSelectedThread:to,sendMessageToNewThread:ja,interruptSelectedThreadTurn:Es,interruptedUnsubmittedMessage:Ha,clearInterruptedUnsubmittedMessage:Ms,selectedThreadQueuedMessages:Al,removeQueuedMessage:ra,reorderQueuedMessage:Il,steerQueuedMessage:pi,autoCompactThreshold:ve,setAutoCompactThreshold:Qt,setSelectedCollaborationMode:Rr,readModelIdForThread:nn,setSelectedModelIdForThread:_t,setSelectedModelId:Jt,setSelectedReasoningEffort:cr,updateSelectedSpeedMode:E,respondToPendingServerRequest:br,pendingReplyErrorForRequest:_a,renameProject:as,removeProject:Fr,reorderProject:fi,pinProjectToTop:Cl,startPolling:oa,stopPolling:xl,primeSelectedThread:Na}}const H2={class:"sidebar-root"},W2=["aria-pressed","aria-label","title"],V2={key:1,class:"sidebar-search-bar"},G2=["placeholder"],K2=["aria-label"],Y2={class:"sidebar-skills-link-icon","aria-hidden":"true"},J2={class:"sidebar-skills-link-copy"},Q2={class:"sidebar-skills-link-title"},X2={class:"sidebar-skills-link-subtitle"},Z2={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},eD={class:"sidebar-skills-link-copy"},tD={class:"sidebar-skills-link-title"},nD={class:"sidebar-skills-link-subtitle"},oD=["aria-label"],rD={class:"settings-dialog-header"},aD={class:"settings-dialog-title"},sD=["aria-label","title"],iD={class:"settings-dialog-body"},lD=["aria-label"],cD=["aria-current","onClick"],uD={class:"settings-group-content"},dD=["title"],fD={class:"sidebar-settings-label"},pD=["title"],hD={class:"sidebar-settings-label"},mD={class:"sidebar-settings-value"},vD=["title"],gD={class:"sidebar-settings-label"},yD={class:"sidebar-settings-value"},wD=["title"],bD={class:"sidebar-settings-label"},TD=["title"],kD={class:"sidebar-settings-label"},CD={class:"sidebar-settings-value"},SD=["title"],_D={class:"sidebar-settings-label"},xD=["title"],AD={class:"sidebar-settings-label"},ID=["title"],PD={class:"sidebar-settings-label"},RD=["title"],ED={class:"sidebar-settings-label"},MD=["href"],$D={class:"sidebar-settings-label"},jD={class:"sidebar-settings-value"},LD=["title"],ND={class:"sidebar-settings-label"},OD={key:0,class:"sidebar-settings-row sidebar-settings-error"},DD=["href"],FD={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},BD={class:"sidebar-settings-provider-info"},UD={class:"sidebar-settings-label"},qD={class:"sidebar-settings-provider-link",href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer"},zD={class:"sidebar-settings-key-group"},HD={class:"sidebar-settings-key-masked"},WD=["disabled","title"],VD=["placeholder"],GD=["disabled"],KD={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},YD={class:"sidebar-settings-label"},JD=["aria-label"],QD=["disabled"],XD=["disabled"],ZD={key:2,class:"sidebar-settings-row sidebar-settings-row--input"},eF={class:"sidebar-settings-provider-info"},tF={class:"sidebar-settings-label"},nF={class:"sidebar-settings-provider-link",href:"https://opencode.ai/auth",target:"_blank",rel:"noopener noreferrer"},oF={class:"sidebar-settings-key-group"},rF=["placeholder"],aF=["disabled"],sF={key:3,class:"sidebar-settings-row sidebar-settings-row--input"},iF={class:"sidebar-settings-label"},lF={class:"sidebar-settings-key-group"},cF=["placeholder"],uF={class:"sidebar-settings-label",style:{"margin-top":"4px"}},dF={class:"sidebar-settings-key-group"},fF=["placeholder"],pF=["disabled"],hF={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},mF={class:"sidebar-settings-label"},vF=["aria-label"],gF={class:"sidebar-settings-label"},yF={class:"sidebar-settings-value"},wF={key:0,class:"sidebar-settings-telegram-panel"},bF={class:"sidebar-settings-field"},TF={class:"sidebar-settings-field-label"},kF={class:"sidebar-settings-field"},CF={class:"sidebar-settings-field-label"},SF={class:"sidebar-settings-field-help"},_F={key:0,class:"sidebar-settings-telegram-error"},xF=["href"],AF={class:"sidebar-settings-telegram-actions"},IF=["disabled"],PF={class:"sidebar-settings-hooks-section"},RF={class:"sidebar-settings-hooks-header"},EF={class:"sidebar-settings-hooks-title"},MF=["disabled","title"],$F={key:0,class:"sidebar-settings-hooks-empty"},jF={key:0,class:"sidebar-settings-hooks-empty"},LF={key:1,class:"sidebar-settings-hooks-empty"},NF={key:2,class:"sidebar-settings-hooks-list"},OF={class:"sidebar-settings-hooks-cwd"},DF={class:"sidebar-settings-hooks-event"},FF={class:"sidebar-settings-hooks-command"},BF={class:"sidebar-settings-remote-section"},UF={class:"sidebar-settings-remote-header"},qF={class:"sidebar-settings-remote-title"},zF=["disabled","title"],HF={class:"sidebar-settings-remote-toggle-label"},WF={key:0,class:"sidebar-settings-remote-empty"},VF={key:0,class:"sidebar-settings-remote-error"},GF={key:1,class:"sidebar-settings-remote-notice"},KF={key:2,class:"sidebar-settings-remote-empty"},YF=["disabled"],JF={class:"sidebar-settings-remote-label"},QF={class:"sidebar-settings-remote-value"},XF={class:"sidebar-settings-remote-clients"},ZF={class:"sidebar-settings-remote-clients-header"},eB={class:"sidebar-settings-remote-label"},tB=["disabled"],nB={key:0,class:"sidebar-settings-remote-empty"},oB={class:"sidebar-settings-remote-client-name"},rB=["disabled","onClick"],aB={class:"sidebar-settings-rate-limits"},sB=["aria-label"],iB={class:"sidebar-settings-actions"},lB=["title","aria-label"],cB=["title","aria-label"],uB={class:"content-root-wrap"},dB={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},fB={key:1,class:"skills-route-header-icon","aria-hidden":"true"},pB={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},hB=["aria-label","title"],mB={class:"content-body"},vB={key:2,class:"content-grid content-grid-home"},gB={class:"new-thread-empty"},yB={class:"new-thread-hero"},wB=["title"],bB={class:"new-thread-folder-actions"},TB=["disabled"],kB={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},CB={class:"new-thread-launch-card-copy"},SB={class:"new-thread-launch-card-topline"},_B={class:"new-thread-launch-card-badge","aria-hidden":"true"},xB={class:"new-thread-launch-card-eyebrow"},AB={class:"new-thread-launch-card-title"},IB={class:"new-thread-launch-card-text"},PB={class:"new-thread-launch-card-actions"},RB=["aria-label","onKeydown"],EB={class:"new-thread-open-folder-header"},MB={class:"new-thread-open-folder-title"},$B={class:"new-thread-open-folder-label"},jB={class:"new-thread-open-folder-current"},LB=["placeholder","title","disabled","onKeydown"],NB=["disabled"],OB={class:"new-thread-open-folder-actions"},DB={class:"new-thread-open-folder-toggle"},FB=["aria-pressed","disabled"],BB={key:0,class:"new-thread-open-folder-create"},UB={class:"new-thread-open-folder-create-composer"},qB=["placeholder","onKeydown"],zB=["disabled"],HB={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},WB=["href"],VB=["placeholder","onKeydown"],GB={key:1,class:"new-thread-open-folder-error-actions"},KB={class:"new-thread-open-folder-error visible-error-with-feedback"},YB=["href"],JB=["disabled"],QB={key:2,class:"new-thread-open-folder-status"},XB={key:3,class:"new-thread-open-folder-status"},ZB={key:4,class:"new-thread-open-folder-list"},eU=["title","disabled","onClick"],tU={class:"new-thread-open-folder-item-name"},nU=["disabled","onClick"],oU=["aria-label","onKeydown"],rU={class:"new-thread-open-folder-header"},aU={class:"new-thread-open-folder-title"},sU=["disabled"],iU=["aria-label"],lU=["aria-selected","disabled"],cU=["aria-selected","disabled"],uU={class:"new-thread-project-field"},dU={class:"new-thread-open-folder-label"},fU=["disabled","placeholder"],pU={key:0,class:"new-thread-project-field"},hU={class:"new-thread-open-folder-label"},mU=["disabled","placeholder","onKeydown"],vU={key:1,class:"new-thread-project-field"},gU={class:"new-thread-open-folder-label"},yU=["disabled","onKeydown"],wU={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},bU=["href"],TU={class:"new-thread-project-modal-actions"},kU=["disabled"],CU=["disabled"],SU={key:3,class:"new-thread-branch-select"},_U={class:"new-thread-branch-select-label"},xU={class:"new-thread-branch-select-help"},AU={key:4,class:"new-thread-runtime-help"},IU={class:"worktree-init-status-title"},PU={class:"worktree-init-status-message"},RU={class:"composer-with-queue"},EU={key:0,class:"composer-runtime-error",role:"alert"},MU=["href"],$U={key:3,class:"content-grid"},jU={class:"content-thread"},LU={key:0,class:"external-session-banner",role:"alert"},NU={key:1,class:"composer-runtime-error",role:"alert"},OU=["href"],DU={key:2,class:"interrupt-recovered-banner",role:"status"},FU=["aria-label"],BU={class:"content-right-panel-header"},UU={class:"content-right-panel-tabs",role:"tablist"},qU=["aria-selected"],zU=["aria-selected"],HU=["aria-selected","title","onClick"],WU={class:"content-right-panel-tab-label"},VU=["aria-label","title","onClick"],GU={class:"content-right-panel-actions"},KU={class:"content-right-panel-add-wrap"},YU=["aria-label","title"],JU={key:0,class:"content-right-panel-menu"},QU=["aria-label","title"],XU={class:"content-right-panel-body"},ZU={key:0,class:"project-zip-modal-backdrop",role:"presentation"},e4=["aria-label"],t4={class:"project-zip-modal-header"},n4={class:"project-zip-modal-title"},o4=["aria-label","disabled"],r4={class:"project-zip-modal-copy"},a4={class:"project-zip-progress-label",role:"status","aria-live":"polite"},s4={class:"project-zip-progress-track"},i4={key:0,class:"project-zip-modal-error",role:"alert"},l4={class:"project-zip-modal-actions"},c4=["disabled"],u4=["disabled"],d4=["disabled"],f4=["aria-label"],p4={class:"codex-login-modal-header"},h4={class:"codex-login-modal-title"},m4=["aria-label","disabled"],v4={class:"codex-login-modal-copy"},g4=["href"],y4=["placeholder","disabled"],w4={key:1,class:"codex-login-modal-error visible-error-with-feedback"},b4=["href"],T4={class:"codex-login-modal-actions"},k4=["disabled"],C4=["disabled"],uv="codex-web-local.sidebar-collapsed.v1",dv="codex-web-local.accounts-section-collapsed.v1",fv="codex-web-local.right-panel-width.v1",S4=260,_4=640,pv=320,x4=400,hv="codex-web-local.send-with-enter.v1",mv="codex-web-local.in-progress-send-mode.v1",vv="codex-web-local.dark-mode.v1",gv="codex-web-local.dictation-click-to-toggle.v1",yv="codex-web-local.dictation-auto-send.v1",wv="codex-web-local.dictation-language.v1",bv="codex-web-local.chat-width.v1",A4=400,I4=en({__name:"App",setup(e){var zp,Hp;const t=Ul(()=>Hl(()=>import("./ThreadConversation-Cq7_5T10.js"),__vite__mapDeps([0,1,2]))),n=Ul(()=>Hl(()=>import("./ThreadTerminalPanel-BGadHi4n.js"),__vite__mapDeps([3,4]))),o=Ul(()=>Hl(()=>import("./ReviewPane-mi7B5jTv.js"),__vite__mapDeps([5,6]))),r=Ul(()=>Hl(()=>import("./DirectoryHub-DOxPtme6.js"),__vite__mapDeps([7,1,8]))),a=Ul(()=>Hl(()=>import("./AutomationsPanel-B_WavWrg.js"),__vite__mapDeps([9,10]))),{t:s,uiLanguage:i,uiLanguageOptions:u,setUiLanguage:h}=io(),p="codex-mobile",g="0.1.104",w={sendWithEnter:s("When enabled, press Enter to send. When disabled, use Command+Enter to send."),inProgressSendMode:s("If a turn is still running, choose whether a new prompt should steer the current turn or be queued."),appearance:s("Switch between system theme, light mode, and dark mode."),chatWidth:s("Choose how wide the conversation column and composer can grow on desktop screens."),dictationClickToToggle:s("Use click-to-start and click-to-stop dictation instead of hold-to-talk."),dictationAutoSend:s("Automatically send transcribed dictation when recording stops."),dictationLanguage:s("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"}},M={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:Y,selectedThread:ue,selectedThreadTokenUsage:F,selectedThreadServerRequests:H,selectedLiveOverlay:q,lastPlanByThreadId:me,resolveThreadTurnIndex:we,selectedActiveTurnId:ve,codexQuota:je,selectedThreadId:ge,availableCollaborationModes:Ie,availableModelIds:De,availableModelReasoningEfforts:fe,selectedCollaborationMode:Se,selectedReasoningEffort:_e,selectedSpeedMode:Pe,codexCliMissingError:Re,installedSkills:Ue,accountRateLimitSnapshots:Le,messages:gt,hasMoreOlderMessages:ft,isLoadingThreads:at,isThreadListFullyLoaded:it,isLoadingMessages:wt,isLoadingOlderMessages:St,isSendingMessage:Qe,isInterruptingTurn:et,isSelectedThreadInterruptPending:re,isUpdatingSpeedMode:ee,error:te,refreshAll:V,refreshSkills:$e,refreshHooks:R,hooksList:j,isHooksLoading:W,onRealtimeEvent:ce,selectThread:le,ensureThreadMessagesLoaded:ne,loadMessages:Ce,loadOlderMessages:be,archiveThreadById:de,compactThreadById:ie,compactingThreadIds:Ge,fuzzyFileSearchResults:Te,registerFuzzyFileSearchSession:Be,forkThreadById:Fe,renameThreadById:ze,forkThreadFromTurn:bt,sendMessageToSelectedThread:dt,sendMessageToNewThread:pt,interruptSelectedThreadTurn:Yt,interruptedUnsubmittedMessage:In,clearInterruptedUnsubmittedMessage:z,selectedThreadQueuedMessages:G,removeQueuedMessage:K,reorderQueuedMessage:pe,steerQueuedMessage:Ne,autoCompactThreshold:We,setAutoCompactThreshold:Xe,setSelectedCollaborationMode:$t,readModelIdForThread:Lt,setSelectedModelIdForThread:kn,setSelectedReasoningEffort:Fo,updateSelectedSpeedMode:tr,respondToPendingServerRequest:lo,pendingReplyErrorForRequest:It,renameProject:Kr,removeProject:nr,reorderProject:un,pinProjectToTop:jn,startPolling:Pn,stopPolling:So,primeSelectedThread:Cn,rollbackSelectedThread:or}=z2(),Tt=lS(),zt=iS(),{isMobile:Et}=Wf();function Cr(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const hn=x(null),ga=x(null),Sr=x(null);let Bo=null;const{buildFeedbackMailto:ya,feedbackMailtoBase:wa,recordVisibleFailure:_r}=Zf(),tn=wa();function Sn(l,d){d&&_r(d);const _=l.currentTarget;_ instanceof HTMLAnchorElement&&(_.href=ya())}const mn=x(null),xr=x(null),Ln=x(null),co=x(0);let Rn=null;function rr(){const l=Ln.value;if(!l)return;const d=window.getComputedStyle(l),_=Number.parseFloat(d.paddingLeft)+Number.parseFloat(d.paddingRight),$=Math.max(0,l.clientWidth-(Number.isFinite(_)?_:0)),Q=window.getComputedStyle(l).getPropertyValue("--chat-column-max").trim(),he=Number.parseFloat(Q)*(Q.endsWith("rem")?16:1),Oe=Number.isFinite(he)&&he>0?Math.min($,he):$;co.value=Oe}const Ar=x(null),uo=x(null),Uo=x(!1),ar=x(!1),kt=x(!0),Ot=x("git"),Zn=x([]),_o=x(""),Ir=X(()=>Zn.value.find(l=>l.key===_o.value)??null),xo=x(!1),Jn=x(!1),Ao=x(!1),qo=x(Pr());function Yr(l){return Math.min(_4,Math.max(S4,l))}function Pr(){if(typeof window>"u")return pv;const l=window.localStorage.getItem(fv),d=Number(l);return Number.isFinite(d)?Yr(d):pv}function ni(l){typeof window>"u"||window.localStorage.setItem(fv,String(l))}function Io(l){l.preventDefault();const d=l.clientX,_=qo.value,$=he=>{const Oe=d-he.clientX;qo.value=Yr(_+Oe)},Q=()=>{ni(qo.value),window.removeEventListener("mousemove",$),window.removeEventListener("mouseup",Q)};window.addEventListener("mousemove",$),window.addEventListener("mouseup",Q)}const Ha=x(null),ba=x(!1),sr=x("");let Jr=!1;const nn=x(!1),Ct=x(""),Nn=x("local"),vn=x({}),zo=new Map,fo=x(""),po=x([]),En=x(!1),gn=x({order:[],labels:{},projectOrder:[]}),_t=x({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),Jt=x({phase:"idle",title:"",message:""}),Mt=x(c0()),Mn=x(""),Hn=x(!1),Wa=x(null),Rr=x(null),Va=x(null),ir=x(null),Ho=x(null),lr=x(null);let ho=null,Er=null,cr=0,E=0,O=!1,oe=0,Ee=0,Ve=0,Dt=0;const yn=x("New Project (1)"),on=x(""),Ht=x(!1),Qr=[{id:"general",label:"General settings"},{id:"models",label:"Models & providers"},{id:"integrations",label:"Integrations"},{id:"usage",label:"Usage & about"}],Po=x("general");let dn=0;function oi(){if(Ht.value){dn=Date.now(),Ht.value=!1;return}Date.now()-dn<x4||(Ht.value=!0)}const Mr=x(d0()),Wn=x(!1),Wo=x(!1),On=x(new Set);async function ri(){try{On.value=new Set(await B_())}catch{}finally{Wo.value=!0}}const bl=X(()=>!Wo.value||On.value.has("hooks/list")),ai=X(()=>!Wo.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(l=>On.value.has(l)));tt(Ht,l=>{l&&(R(),ii(),ai.value&&As())});const Dn=x({enabled:!1,clients:[]}),Xr=x(null),ur=x(!1),Qn=x(!1),jt=x(""),Ft=x(""),Ga=x("");let Ta=null,si=!1,dr=null;const Ka=x("never"),fr=x(!1),Ss=x(!1),Vn=x(""),$r=x("");let _s=!1;const xs=x(!1);async function ii(l={}){if(!(l.force!==!0&&_s)){fr.value=!0,Vn.value="";try{Ka.value=await wx(),_s=!0}catch(d){Vn.value=d instanceof Error?d.message:"Failed to load approval policy"}finally{fr.value=!1}}}function Di(l){Ka.value=l}async function Fn(){Ss.value=!0,Vn.value="",$r.value="";try{await bx(Ka.value),xs.value=!0,$r.value=s("Approval policy saved"),li&&clearTimeout(li),li=setTimeout(()=>{$r.value=""},2200)}catch(l){Vn.value=l instanceof Error?l.message:"Failed to save approval policy"}finally{Ss.value=!1}}let li=null;async function As(l={}){if(!(l.force!==!0&&si)){ur.value=!0,Ft.value="";try{const d=await yx();Dn.value=d,si=!0}catch(d){Ft.value=d instanceof Error?d.message:"Failed to load remote control status"}finally{ur.value=!1}}}async function ka(){const l=!Dn.value.enabled;Qn.value=!0,jt.value=l?"enable":"disable";try{await Tx(l),Dn.value={...Dn.value,enabled:l},Ui(l?"Remote control enabled":"Remote control disabled")}catch(d){Ft.value=d instanceof Error?d.message:"Failed to update remote control"}finally{Qn.value=!1,jt.value=""}}async function Ya(){Qn.value=!0,jt.value="pairing";try{Xr.value=await kx()}catch(l){Ft.value=l instanceof Error?l.message:"Failed to start pairing"}finally{Qn.value=!1,jt.value=""}}async function Fi(){Qn.value=!0,jt.value="clients";try{Dn.value={...Dn.value,clients:await Cx()}}catch(l){Ft.value=l instanceof Error?l.message:"Failed to load remote clients"}finally{Qn.value=!1,jt.value=""}}async function Bi(l){Qn.value=!0,jt.value=`revoke:${l}`;try{await Sx(l),Dn.value={...Dn.value,clients:Dn.value.clients.filter(d=>d.clientId!==l)},Ui("Remote client removed")}catch(d){Ft.value=d instanceof Error?d.message:"Failed to remove remote client"}finally{Qn.value=!1,jt.value=""}}function Ui(l){Ga.value=l,Ta&&clearTimeout(Ta),Ta=setTimeout(()=>{Ga.value=""},3e3)}const Ca=x(""),pr=x(""),eo=x([]),Ro=x(null),Sa=x(null),jr=x(null),_a=x(null),Vo=x(!1),Ja=x(!1),hr=x({addedLineCount:0,removedLineCount:0}),mo=x([]),Lr=x(""),Zr=x({}),mr=x(""),vr=x(""),Qa=x({}),gr=x(""),Is=x(""),Xa=x(!1),ea=x(!1);function Tl(l,d){return`${l}\0${d?"with-reset-history":"without-reset-history"}`}const xa=x(null),Bn=x([]),Go=x(!1),vo=x(!1),Ko=x(!1),Un=x(!1),Za=x(!1),Aa=x(""),Nr=x(""),ci=x(null),Or=x(""),Yo=x(""),yr=x(""),wn=x(""),Ia=x(id(hv,!0)),Pa=x(Kb()),ta=x(Gb()),Ra=x(Yb()),na=x(id(gv,!1)),Eo=x(id(yv,!0)),Ea=x(i0()),Ps=X(()=>l0()),kl=X(()=>{const{loaded:l,total:d}=_t.value,_=mp(l);return d&&d>0?`${_} / ${mp(d)}`:l>0?_:s("Preparing...")}),Ma=X(()=>{const{loaded:l,total:d,phase:_}=_t.value;return _==="ready"?"100%":!d||d<=0?l>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(l/d*100)))}%`}),$a=x(!1),wr=x(!1),go=x(!1),Gn=x(""),es=x(!1),ui=x(null),Bt=x(!1),Xn=x(""),bn=x("codex"),Rs=X(()=>[{value:"codex",label:s("Codex")},{value:"openrouter",label:s("OpenRouter")},{value:"opencode-zen",label:s("OpenCode Zen")},{value:"custom",label:s("Custom endpoint")}]),Jo=x(""),ts=x(""),y=x("responses"),b=x("responses"),T=x(""),N=x(!1),ke=x(""),ot=x(""),Pt=x(""),Mo=x(!1),Qt=x(!1),qn=x(""),Xt=x(""),to=x(!1),ja=x(!1),no=x("create"),ns=x(""),os=x(""),Es=x(""),Ms=x(!1),La=x(""),Kn=x(!1),rs=x(null),kc=x(null),Dr=x(!1),di=x(null),Hu=x(null),as=x(""),Fr=x(""),fi=x(""),Cl=x([]),$n=x(""),fn=x(!1),Br=x(!1),Sl=x(!1),oa=x(""),_l=[te,Re,Lr,vr,wn,Xn,Pt,Xt,La,$n],Wu=X(()=>_l.some(l=>l.value.trim().length>0)),br=x({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),qi=x(null),xl=x(!1),Al=x(!1),ra=x(typeof window<"u"?((zp=window.visualViewport)==null?void 0:zp.height)??window.innerHeight:0),Il=x(typeof window<"u"?((Hp=window.visualViewport)==null?void 0:Hp.offsetTop)??0:0),pi=x(typeof window<"u"?window.innerHeight:0);let Na=null,c=!1,m=!1,S=!1,P=0;const L=X(()=>{const l=Tt.params.threadId;return typeof l=="string"?l:""}),D=X(()=>Tt.name==="home"),B=X(()=>Tt.name==="skills"),J=X(()=>Tt.name==="automations"),se=X(()=>{const l=Tt.query.automationId;return typeof l=="string"?l:""}),ye=X(()=>{var l;return J.value?s("Automations"):B.value?s("Skills"):D.value?s("Start new thread"):((l=ue.value)==null?void 0:l.title)??s("Choose a thread")}),He=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",rt=X(()=>{var d,_;return(((_=(d=ue.value)==null?void 0:d.title)==null?void 0:_.trim())??"")||He}),ct=X(()=>gt.value.filter(l=>{const d=p0(l.messageType,l.role);return d==="worked"?!0:!(d==="turnActivity.live"||d==="turnError.live"||d==="agentReasoning.live")})),ht=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Rt=x(null);function Ur(l,d,_){const $=typeof d.turnIndex=="number"?d.turnIndex:-1;return $<0?!1:l.some((Q,he)=>he>_&&typeof Q.turnIndex=="number"&&Q.turnIndex>=$&&ht.has(Q.messageType??""))}function $s(l,d){return l.some(_=>typeof _.turnIndex=="number"&&_.turnIndex>=d&&ht.has(_.messageType??""))}const hi=X(()=>{const l=ct.value,d=wt.value;for(let he=l.length-1;he>=0;he-=1){const Oe=l[he];if(Oe.messageType!=="plan"&&Oe.messageType!=="plan.live")continue;const rn=zm(Oe);if(!rn||Rt.value!==null&&Oe.id===Rt.value)return null;const w0=d?!0:Ur(l,Oe,he);return{id:Oe.id,streaming:Oe.messageType==="plan.live",explanation:rn.explanation,steps:rn.steps,implemented:w0}}const _=ge.value?me.value[ge.value]??null:null;if(!_)return null;const $=zm(_);if(!$)return null;const Q=typeof _.turnIndex=="number"?_.turnIndex:_.turnId?we(ge.value,_.turnId)??-1:-1;return{id:_.id,streaming:_.messageType==="plan.live",explanation:$.explanation,steps:$.steps,implemented:d?!0:Q>=0?$s(l,Q):!1}}),js=X(()=>q.value),Qo=X(()=>D.value?"__new-thread__":ge.value),Pl=X(()=>Lt(Qo.value)),Oa=X(()=>{const l=H.value;return l.length>0?l[l.length-1]:null}),mi=X(()=>Oa.value?It(Oa.value.id):""),_n=X(()=>{var l,d;return D.value?Ct.value.trim():((d=(l=ue.value)==null?void 0:l.cwd)==null?void 0:d.trim())??""}),vi=X(()=>kt.value&&(D.value&&_n.value.length>0||Tt.name==="thread"&&ge.value.length>0)),Cc=X(()=>vi.value&&Ot.value==="terminal"),Ls=X(()=>!Et.value||ra.value<=0||pi.value<=0?!1:pi.value-ra.value>120),Sc=X(()=>Ls.value||Cc.value&&ar.value),Rl=X(()=>{var l,d;return((d=(l=ue.value)==null?void 0:l.cwd)==null?void 0:d.trim())??Ct.value.trim()}),zi=X(()=>{var l;return!D.value&&((l=ue.value)==null?void 0:l.inProgress)===!0}),_c=X(()=>{const l=ge.value;return!!l&&Ge.value.has(l)}),El=X(()=>{var l,d;return!D.value&&((d=(l=ue.value)==null?void 0:l.externalSession)==null?void 0:d.active)===!0}),Hi=X(()=>Qe.value||et.value||zi.value||H.value.length>0);function xe(){$a.value&&($a.value=!1,cx(!0))}function Ut(){xe(),zt.push({name:"skills",query:{tab:"plugins"}})}function Da(){const l=ge.value;l&&ie(l)}function ss(l,d){const _=nt(l).trim(),$=Tr(_);return!_||!$?!1:d.some(Q=>{const he=nt(Q).trim();return he!==_&&Tr(he)===$})}function Ml(l,d=""){const _=nt(l).trim(),$=d.trim();if($)return $;const Q=Tr(_),he=[...gn.value.order,...U.value.map(Oe=>{var rn,Xo;return((Xo=(rn=Oe.threads[0])==null?void 0:rn.cwd)==null?void 0:Xo.trim())??""}).filter(Boolean)];return ss(_,he)?_:Q}function Uy(){const l=new Set(gn.value.order),d=gn.value.projectOrder.filter(_=>l.has(_));for(const _ of gn.value.order)d.includes(_)||d.push(_);return d}function $l(l){const d=nt(l).trim(),_=[...gn.value.order,...U.value.map($=>{var Q,he;return((he=(Q=$.threads[0])==null?void 0:Q.cwd)==null?void 0:he.trim())??""}).filter(Boolean)];return ss(d,_)?d:Tr(d)}function np(l){const d=nt(l).trim();if(!d)return"";const _=[...gn.value.order,...U.value.map($=>{var Q,he;return((he=(Q=$.threads[0])==null?void 0:Q.cwd)==null?void 0:he.trim())??""}).filter(Boolean)];for(const $ of gn.value.order){const Q=nt($).trim();if(!Q)continue;const he=Tr(Q),Oe=ss(Q,_)?Q:he;if(Q===d||Oe===d||he===d)return Q}return""}const Vu=X(()=>{var $,Q;const l=[],d=new Set;for(const he of Uy()){const Oe=he.trim();!Oe||d.has(Oe)||(d.add(Oe),l.push({value:Oe,label:Ml(Oe,gn.value.labels[Oe])}))}for(const he of U.value){const Oe=((Q=($=he.threads[0])==null?void 0:$.cwd)==null?void 0:Q.trim())??"";!Oe||d.has(Oe)||wu(Oe)||(d.add(Oe),l.push({value:Oe,label:Ml(Oe,Y.value[he.projectName])}))}const _=Ct.value.trim();return _&&!d.has(_)&&l.unshift({value:_,label:Ml(_)}),l}),gi=X(()=>{const l=Ct.value.trim();return l?vn.value[l]===!0:!1}),qy=X(()=>{var d,_;const l={};for(const $ of U.value){const Q=Vi($.projectName,((_=(d=$.threads[0])==null?void 0:d.cwd)==null?void 0:_.trim())??"");l[$.projectName]=Q?vn.value[Q]===!0:!1}return l}),Gu=X(()=>{const l=fo.value.trim(),d=[...po.value];return l&&!d.some(_=>_.value===l)&&d.unshift({value:l,label:l}),d}),op=X(()=>{const l=fo.value.trim();if(!l)return"";const d=Gu.value.find(_=>_.value===l);return(d==null?void 0:d.label)??l}),rp=X(()=>Fr.value.trim()),ap=X(()=>{const l=qn.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),zy=X(()=>ap.value&&rp.value.trim().length>0&&!$n.value),sp=X(()=>{const l=os.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),ip=X(()=>ns.value.trim()?no.value==="create"?sp.value:Es.value.trim().length>0:!1),jl=X(()=>{const l=nt(as.value).trim();return l||Fr.value.trim()}),Hy=X(()=>to.value?"Creating…":"Create"),Wy=X(()=>Kn.value?no.value==="clone"?s("Cloning…"):s("Creating…"):no.value==="clone"?s("Clone repository"):s("Create project")),Vy=X(()=>{const l=Fr.value.trim(),d=fi.value.trim();return!!(l&&d&&l!==d)}),lp=X(()=>{const l=[];Vy.value&&l.push({key:`parent:${fi.value}`,name:"..",path:fi.value,kind:"parent"});for(const d of Cl.value)l.push({key:`directory:${d.path}`,name:d.name,path:d.path,kind:"directory"});return l}),Ku=X(()=>{const l=oa.value.trim().toLowerCase();return l?lp.value.filter(d=>d.kind==="parent"||d.name.toLowerCase().includes(l)):lp.value}),Wi=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,Gy=X(()=>s(A[Ra.value].label)),Ky=X(()=>{const l=A[Ra.value],d=Math.max(0,pi.value-ra.value-Il.value);return{"--chat-column-max":l.columnMax,"--chat-card-max":l.cardMax,"--visual-viewport-height":ra.value>0?`${ra.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Il.value)}px`,"--virtual-keyboard-inset":`${d}px`}}),Yy=X(()=>{if(!br.value.configured)return s("Not configured");const l=br.value.active?s("Online"):s("Configured (offline)"),d=br.value.allowAllUsers?s("allow all users"):`${br.value.allowedUsers} ${s("allowed user(s)")}`,_=`${br.value.mappedChats} ${s("chat(s)")}, ${br.value.mappedThreads} ${s("thread(s)")}, ${d}`,$=br.value.lastError?`, ${s("error")}: ${br.value.lastError}`:"";return`${l}, ${_}${$}`});Cs(()=>{var l,d;document.addEventListener("pointerdown",kp),window.addEventListener("keydown",wp),document.addEventListener("visibilitychange",Cp),window.addEventListener("pageshow",Sp),window.addEventListener("focus",_p),window.addEventListener("resize",yi),(l=window.visualViewport)==null||l.addEventListener("resize",yi),(d=window.visualViewport)==null||d.addEventListener("scroll",yi),yi(),$c(),Wi==null||Wi.addEventListener("change",$c),Bo=ce(_=>{Sr.value&&Sr.value.refreshFromNotification(_)}),dr=ce(_=>{_==="remoteControl/status/changed"&&As({force:!0})}),h0(),Fb(),ri(),Xy(),Os(),aa(),up(),Yu(),cd(),sb(),ii()}),tt(_l,(l,d)=>{l.forEach((_,$)=>{if(_===d[$])return;const Q=_.trim();Q&&_r(Q)})}),tt(Ln,l=>{Rn&&(Rn.disconnect(),Rn=null),typeof ResizeObserver<"u"&&(Rn=new ResizeObserver(rr),l&&Rn.observe(l)),rr()},{immediate:!0}),yc(()=>{var l,d;document.removeEventListener("pointerdown",kp),window.removeEventListener("keydown",wp),document.removeEventListener("visibilitychange",Cp),window.removeEventListener("pageshow",Sp),window.removeEventListener("focus",_p),window.removeEventListener("resize",yi),(l=window.visualViewport)==null||l.removeEventListener("resize",yi),(d=window.visualViewport)==null||d.removeEventListener("scroll",yi),Wi==null||Wi.removeEventListener("change",$c),Rn&&(Rn.disconnect(),Rn=null),Na!==null&&(window.clearInterval(Na),Na=null),ho&&(clearTimeout(ho),ho=null),Pc(),So(),Bo&&(Bo(),Bo=null),dr&&(dr(),dr=null),Ta&&(clearTimeout(Ta),Ta=null)});function yi(){var l,d;typeof window>"u"||(pi.value=Math.max(pi.value,window.innerHeight),ra.value=((l=window.visualViewport)==null?void 0:l.height)??window.innerHeight,Il.value=((d=window.visualViewport)==null?void 0:d.offsetTop)??0)}tt(Mn,l=>{const d=l.trim();if(ho&&(clearTimeout(ho),ho=null),!d){lr.value=null;return}ho=setTimeout(()=>{ES(d,1e3).then(_=>{Mn.value.trim()===d&&(lr.value=_.threadIds)}).catch(()=>{Mn.value.trim()===d&&(lr.value=null)})},220)}),tt(Ls,l=>{l||(ar.value=!1)}),tt(Bn,()=>{if(typeof window>"u")return;if(!Bn.value.some(d=>d.quotaStatus==="loading")){Na!==null&&(window.clearInterval(Na),Na=null);return}Na===null&&(Na=window.setInterval(()=>{c||(c=!0,Ll({silent:!0}).finally(()=>{c=!1}))},1500))},{deep:!0}),tt(Le,()=>{cp().then(l=>{l&&V({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function cp(){if(!m||S||bn.value!=="codex"||Bn.value.length>0||Le.value.length===0)return!1;S=!0;const l=JSON.stringify(Bn.value.map(_=>_.accountId).sort());try{const _=await bm();Bn.value=_.accounts}catch{await Ll({silent:!0})}const d=JSON.stringify(Bn.value.map(_=>_.accountId).sort());return l!==d}function Jy(){$e({force:!0})}function Qy(l){l&&Ce(l,{silent:!0,force:!0})}async function Yu(){try{br.value=await nx()}catch(l){const d=l instanceof Error?l.message:"Failed to load Telegram status";br.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:d}}}async function up(){try{const l=await tx();ke.value=l.botToken,ot.value=l.allowedUserIds.map(d=>String(d)).join(`
80
+ `)}FO(c);const Oa=Xa(c);Oa&&(xa(P,Oa),jt(P,{label:"Running command",details:[((Hi=Oa.commandExecution)==null?void 0:Hi.command)??""]}));const mi=KO(c);if(mi){const xe=(M.value[P]??[]).find(Ut=>Ut.id===mi.itemId);xe!=null&&xe.commandExecution&&xa(P,{...xe,commandExecution:{...xe.commandExecution,aggregatedOutput:`${xe.commandExecution.aggregatedOutput}${mi.delta}`}})}const _n=ea(c);_n&&xa(P,_n);const vi=Tl(c);if(vi&&ii(P,vi),vo(c)&&ka(P,!0),c.method==="turn/completed"){kt=!1,ka(P),av(Ce),M.value[P]&&(M.value=xt(M.value,P));const xe=ro(c);xe&&(yn(xe),On(xe,!1),jt(xe,null),Qn(xe),He||(ho(xe),os(xe)))}}function Or(c){if(c.method==="thread/tokenUsage/updated"||c.method.startsWith("thread/realtime/"))return;const m=c.method,S=m==="turn/started"||m==="turn/completed"||m==="error",P=m.startsWith("thread/")||m==="turn/completed";if(!S&&!P)return;const L=ro(c);L&&S&&mn.add(L),P&&(tn=!0,Sn=!0),!(Cn!==null||typeof window>"u")&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}async function Yo(c,m){if(!ar){ar=!0;try{if(!m)return;const S=[];for(const P of zu(m)){const L=ji(P);S.includes(L)||S.push(L)}if(S.length>0){const P=m.projectOrder.length>0?Qi(S,c):Qi(Qe.value,c);ps(Qe.value,P)||(Qe.value=P)}if(Object.keys(m.labels).length>0||(m.remoteProjects??[]).length>0){const P={...et.value};let L=!1;for(const[D,B]of Object.entries(m.labels)){const J=nt(D).trim(),se=[ji(D)];J&&se.push(J);for(const ye of se)P[ye]!==B&&(P[ye]=B,L=!0)}for(const D of m.order){const B=ji(D),J=Wr(ll(D));if(!J.startsWith(".")||J===B)continue;const se=`${B} ${J}`;P[B]!==void 0||P[B]===se||(P[B]=se,L=!0)}for(const D of m.remoteProjects??[]){const B=ZN(D);P[D.id]!==B&&(P[D.id]=B,L=!0)}L&&(et.value=P)}}catch{}}}async function yr(c={}){if(!(c.force!==!0&&Object.keys(pt.value).length>0))try{const m=await ox();if(Object.keys(m.titles).length>0){const S={};for(const[P,L]of Object.entries(m.titles))S[P]=Us(L);pt.value=S}}catch{}}async function wn(){try{return await el()}catch{return null}}function Ia(c,m,S){const P=c.trim();if(P)return Us(P);const L=S.map(D=>D.label.trim()).find(D=>D.length>0);return L?Us(L):m.length>0?Us("[Image]"):"Untitled thread"}async function Pa(c,m,S,P=[],L=[]){if(pt.value[c])return;const D=m.trim();if(!D){const J=Ia(m,P,L);pt.value={...pt.value,[c]:J},dn(),Bc(c,J);return}const B=D.length>300?D.slice(0,300):D;try{const J=await ux(B,S);if(!J||pt.value[c])return;const se=J.length>yf?J.slice(0,yf):J;pt.value={...pt.value,[c]:se},dn(),Bc(c,se)}catch{}}function ta(c,m){const S=gf(c,m),P=oO(c,m),L=rO(P,m,S);if(!m||m.order.length===0&&(m.remoteProjects??[]).length===0)return L;const D=new Set;for(const J of vf(m,S))D.add(J);const B=L.filter(J=>D.has(J.projectName)?!0:wf(J));return nO(B,m,S)}function Ra(c,m){const S=ta(c,m),P=!!(m&&(m.order.length>0||m.projectOrder.length>0||(m.remoteProjects??[]).length>0)),L=m!=null&&m.projectOrder.length?Qi(vf(m,gf(c,m)),S):Qi(Qe.value,S);ps(Qe.value,L)||(Qe.value=L,P||Vl(Qe.value));const D=Ud(S,Qe.value);Xr(new Set(wo(D).map(se=>se.id)));const B=QN(t.value,D,Y.value);t.value=Yc(t.value,B),Y.value=Tn(Y.value,new Set(wo(t.value).map(se=>se.id))),new Set(wo(t.value).map(se=>se.id));const J={};for(const se of wo(t.value))J[se.id]=se.externalSession??H.value[se.id]??null;H.value=J,dn()}function na(c){const m={};for(const[S,P]of Object.entries(c)){const L=S.trim();!L||P.length===0||(m[L]=P.map(D=>({id:D.id,text:D.text,imageUrls:[...D.imageUrls],skills:D.skills.map(B=>({name:B.name,path:B.path})),fileAttachments:D.fileAttachments.map(B=>({label:B.label,path:B.path,fsPath:B.fsPath})),collaborationMode:D.collaborationMode})))}return m}function Eo(){Z_(na(q.value)).catch(()=>{})}async function Ea(){if(!ge){ge=!0;try{q.value=await ym()}catch{}}}function Ps(c){uo=Jm(uo,c),t.value=Jm(t.value,c),Y.value=xt(Y.value,c),dn()}function kl(c,m){if(c.length===0)return m;if(m.length===0)return c;const S=new Map;for(const L of wo(c))S.set(L.id,L);for(const L of wo(m))S.set(L.id,L);const P=new Map;for(const L of S.values()){const D=P.get(L.projectName);D?D.push(L):P.set(L.projectName,[L])}return Array.from(P.entries()).map(([L,D])=>({projectName:L,threads:D.sort((B,J)=>new Date(J.updatedAtIso).getTime()-new Date(B.updatedAtIso).getTime())})).sort((L,D)=>{var se,ye;const B=new Date(((se=L.threads[0])==null?void 0:se.updatedAtIso)??0).getTime();return new Date(((ye=D.threads[0])==null?void 0:ye.updatedAtIso)??0).getTime()-B})}function Ma(){return Object.values(Y.value).some(c=>c===!0)}function $a(c=Uo){if(!(!co||rr||Ma())){if(Uo=c,typeof window>"u"){wr(c);return}Rn!==null&&window.clearTimeout(Rn),Rn=window.setTimeout(()=>{Rn=null,!(!co||Ma())&&wr(Uo)},O2)}}async function wr(c){if(!(rr||!co||Ma())){rr=!0;try{const m=await im(co,Y_());co=m.nextCursor,Ar=m.nextCursor===null,Ne.value=Ar,uo=kl(uo,m.groups),Ra(uo,c)}catch{}finally{rr=!1,co&&!Ma()&&$a(c)}}}async function go(c={}){if(zt){await zt;return}c.force!==!0&&nr.value&&Date.now()-ga<B2||(zt=(async()=>{var m;nr.value||(K.value=!0);try{const[S,P]=await Promise.all([im(),wn(),yr({force:c.force===!0})]);Uo=P;const L=S.groups;uo=L,co=S.nextCursor,Ar=S.nextCursor===null,Ne.value=Ar,await Yo(L,P),Ra(uo,P),nr.value=!0,ga=Date.now(),Ar||$a(P);const D=wo(e.value);Mr(D),!D.some(J=>J.id===n.value)&&!n.value&&gn(((m=D[0])==null?void 0:m.id)??"")}finally{K.value=!1}})().finally(()=>{zt=null}),await zt)}async function Gn(c,m={}){var J;if(!c)return;const S=Date.now()-(Ln.get(c)??0)<cv;if((J=le.value[c])!=null&&J.transient&&(m.silent===!0||S))return;const P=Et.get(c);if(P&&m.force!==!0){await P;return}const L=ee.value[c]===!0,D=m.silent!==!0&&!L;D&&(pe.value=!0);const B=(async()=>{try{const se=si(c),ye=re.value[c]??"",He=Date.now()-(xr.get(c)??0)<cv;if(m.force===!0?!1:L&&(He||(se.length===0||ye===se)&&Y.value[c]!==!0)){Wn(c);return}const ht=$e.value[c]!==!0?await Ed(c):null,Rt=ht??await Rd(c);Rt.modelProvider&&Mn(c,Rt.modelProvider),Rt.model&&Mt(c,Hn(c,Rt.model,Rt.modelProvider)),ht&&($e.value={...$e.value,[c]:!0});const{messages:Ur,inProgress:$s,activeTurnId:hi,turnIndexByTurnId:js}=Rt;te.value={...te.value,[c]:Rt.hasMoreOlder===!0},ur(c,Ur),Zr(c,js),vr(c);const Qo=o.value[c]??[],Pl=Ym(Qo,Ur,{preserveMissing:m.silent===!0||ON(Qo)});fr(c,Pl);const Oa=s.value[c]??[];if($s){const mi=BN(Oa,Ur);Vn(c,mi)}else $r(c);Bn(c,Ur),Go(c,Ur),ee.value={...ee.value,[c]:!0},xr.set(c,Date.now()),Ln.delete(c),se&&(re.value={...re.value,[c]:se}),On(c,$s),Rt.externalSession&&(H.value={...H.value,[c]:Rt.externalSession}),Ga(c),hi?ne.value={...ne.value,[c]:hi}:ne.value[c]&&(ne.value=xt(ne.value,c)),$s||Bi(c),Wn(c)}catch(se){const ye=se instanceof Error?se.message:"Unknown application error";throw n.value===c&&Ft(c,ye,{transient:!0}),Ln.set(c,Date.now()),se}finally{D&&(pe.value=!1)}})().finally(()=>{Et.delete(c)});Et.set(c,B),await B}async function es(c=n.value){if(!c||V.value[c]===!0||te.value[c]!==!0)return;const m=Jr(c);if(!m){te.value={...te.value,[c]:!1};return}V.value={...V.value,[c]:!0};try{const S=await S_(c,m),P=o.value[c]??[],L=Ym(S.messages,P,{preserveMissing:!0});fr(c,L),Zr(c,{...R.value[c]??{},...S.turnIndexByTurnId}),vr(c),te.value={...te.value,[c]:S.hasMoreOlder}}catch(S){throw It.value=S instanceof Error?S.message:"Failed to load earlier messages",S}finally{V.value={...V.value,[c]:!1}}}async function ui(c,m={}){var S;c&&ee.value[c]!==!0&&(m.silent===!0&&((S=le.value[c])!=null&&S.transient)||await Gn(c,m))}async function Bt(c={}){var P,L;const m=((L=(P=Ir.value)==null?void 0:P.cwd)==null?void 0:L.trim())??"",S=m||"__global__";if(Cr){await Cr;return}c.force!==!0&&Sr&&wa===S&&Date.now()-ya<U2||(Cr=(async()=>{try{Yt.value=await fx(m?[m]:void 0),Sr=!0,ya=Date.now(),wa=S}catch{}finally{Cr=null}})(),await Cr)}async function Xn(c={}){if(hn){await hn;return}c.force!==!0&&Bo||(G.value=!0,hn=(async()=>{try{z.value=await q_(),Bo=!0}catch{}finally{G.value=!1,hn=null}})(),await hn)}async function bn(c={}){await Promise.allSettled([Ee({providerChanged:c.providerChanged,includeProviderModels:c.includeProviderModels}),Ve(),O(),Bt()])}function Rs(c={}){const m=()=>{bn(c)};if(typeof window>"u"){m();return}window.setTimeout(m,0)}async function Jo(c={}){It.value="",it.value="";const m=c.includeSelectedThreadMessages!==!1,S=c.awaitAncillaryRefreshes===!0;try{if(await Ea(),await go({force:c.forceThreadRefresh===!0}),m)try{await Gn(n.value)}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}S?await bn({providerChanged:c.providerChanged,includeProviderModels:c.providerChanged===!0||S}):Rs({providerChanged:c.providerChanged,includeProviderModels:!1})}catch(P){It.value=P instanceof Error?P.message:"Unknown application error",Hm(P)?it.value=lv:it.value=""}}async function ts(c){gn(c);try{return await Gn(c),await Ee({includeProviderModels:!0}),Bt(),"ok"}catch(m){const S=m instanceof Error?m.message:"Unknown application error";It.value=S;const P=AN(m)?"not-found":"error";return c.trim()&&Ft(c,S,{transient:!0}),P}}async function y(c){const m=n.value===c,S=m?xN(wo(e.value),c):"";m&&(gn(S),S&&Gn(S,{silent:!0}));try{await __(c),Ps(c),await go(),m&&S&&n.value===S&&await ui(S,{silent:!0})}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}}async function b(c,m){const S=m.trim();if(!(!c||!S))try{await I_(c,S),pt.value={...pt.value,[c]:S},dn(),Bc(c,S)}catch(P){It.value=P instanceof Error?P.message:"Unknown application error"}}async function T(c){var B,J;const m=c.trim();if(!m)return"";const S=wo(t.value).find(se=>se.id===m),P=((B=S==null?void 0:S.cwd)==null?void 0:B.trim())??"",L=((J=S==null?void 0:S.title)==null?void 0:J.trim())??"Forked chat",D=nn(m);It.value="";try{const se=await cm(m,P||void 0,D||void 0),ye=se.threadId.trim();return ye?(oi(ye,P,L),Mt(ye,se.model),$e.value={...$e.value,[ye]:!0},gn(ye),await go(),await Gn(ye),ye):""}catch(se){return It.value=se instanceof Error?se.message:"Unknown application error",""}}async function N(c,m){var B;const S=c.trim();if(!S||!Number.isInteger(m)||m<0)return"";if(Y.value[S]===!0)return It.value="Finish the current turn before forking from a response.","";if(ee.value[S]!==!0)try{await Gn(S)}catch(J){return It.value=J instanceof Error?J.message:"Unknown application error",""}const P=o.value[S]??[];let L=-1;for(const J of P)typeof J.turnIndex=="number"&&Number.isFinite(J.turnIndex)&&(L=Math.max(L,J.turnIndex));if(L>=0&&m>L)return"";const D=wo(t.value).find(J=>J.id===S)??null;try{It.value="";const J=await cm(S),se=J.threadId.trim();if(!se)return"";const ye=J.cwd.trim()||((B=D==null?void 0:D.cwd)==null?void 0:B.trim())||"",He=aO((D==null?void 0:D.title)||(D==null?void 0:D.preview)||"Untitled thread");oi(se,ye,He),Mt(se,J.model),fr(se,J.messages),ee.value={...ee.value,[se]:!0},$e.value={...$e.value,[se]:!0},Ya(se),Vn(se,[]),ka(se),M.value[se]&&(M.value=xt(M.value,se)),Wo(se,null),jt(se,null),Ft(se,null),On(se,!1);const rt=L-m;if(rt>0){const ct=await Md(se,rt);fr(se,ct)}return await b(se,He),gn(se),go().catch(()=>{}),se}catch(J){return It.value=J instanceof Error?J.message:"Unknown application error",""}}async function ke(c,m,S=[],P=[],L=[]){if(!c||!m.trim()||S.length>0||P.length>0||L.length>0)return!1;const B=(Te.value[c]??[]).filter(ye=>ye.method==="item/tool/requestUserInput");if(B.length!==1)return!1;const[J]=B,se=o2(J);return se.length!==1?!1:br({id:J.id,result:{answers:{[se[0]]:{answers:[m.trim()]}}}})}function ot(){if(typeof window>"u")return{};try{const c=window.localStorage.getItem(sv);if(!c)return{};const m=JSON.parse(c);if(!m||typeof m!="object"||Array.isArray(m))return{};const S={};for(const[P,L]of Object.entries(m)){if(!P||!Array.isArray(L))continue;const D=L.filter(B=>!!B&&typeof B=="object"&&typeof B.id=="string"&&typeof B.text=="string");D.length>0&&(S[P]=D)}return S}catch{return{}}}function Pt(){typeof window>"u"||window.localStorage.setItem(sv,JSON.stringify(we.value))}function Mo(){if(typeof window>"u")return Qc;try{const c=window.localStorage.getItem(iv);if(c===null)return Qc;const m=Number(c);return Number.isFinite(m)&&m>=0?Math.round(m):Qc}catch{return Qc}}function Qt(c){const m=Number.isFinite(c)&&c>0?Math.round(c):0;m!==ve.value&&(ve.value=m,!(typeof window>"u")&&window.localStorage.setItem(iv,String(m)))}async function qn(c,m,S,P,L,D){if(je||ve.value<=0||Y.value[c]===!0)return!1;const B=ze.value[c];if(!B||B.remainingContextPercent===null||B.remainingContextPercent>ve.value)return!1;const J=we.value[c]??[],se=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ye=D==="plan"?"plan":D==="default"?"default":Ue.value;return we.value={...we.value,[c]:[...J,{id:se,text:m,imageUrls:S,skills:P,fileAttachments:L,collaborationMode:ye}]},Pt(),kn.value.has(c)||Dr(c),!0}async function Xt(c){const m=we.value[c];if(!m||m.length===0||Y.value[c]===!0)return;const S=[...m];we.value=xt(we.value,c),Pt(),je=!0;try{for(const P of S)try{await to(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments,void 0,P.collaborationMode)}catch{}}finally{je=!1}}async function to(c,m=[],S=[],P="steer",L=[],D,B){if($t.value)return;const J=n.value,se=c.trim();if(!J||!se&&m.length===0&&L.length===0||await ke(J,se,m,S,L)||await qn(J,se,m,S,L,B))return;const ye=Y.value[J]===!0;if(ye&&P==="queue"){const He=q.value[J]??[],rt=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ct=[...He],ht=typeof D=="number"?Math.max(0,Math.min(D,ct.length)):ct.length;ct.splice(ht,0,{id:rt,text:se,imageUrls:m,skills:S,fileAttachments:L,collaborationMode:B==="plan"?"plan":B==="default"?"default":Ue.value}),q.value={...q.value,[J]:ct},Eo();return}if(ye){kt=!0,no(J,se,m,S,L,B).catch(He=>{const rt=He instanceof Error?He.message:"Unknown application error";Ft(J,rt),It.value=rt});return}It.value="",kt=!0,Wo(J,null),jt(J,{label:"Thinking",details:oe(nn(J),gt.value,B==="plan"?"plan":B==="default"?"default":Ue.value)}),Ft(J,null),On(J,!0);try{await no(J,se,m,S,L,B)}catch(He){kt=!1,On(J,!1),jt(J,null);const rt=He instanceof Error?He.message:"Unknown application error";throw Ft(J,rt),It.value=rt,He}}async function ja(c,m,S=[],P=[],L=[]){if($t.value)return"";const D=c.trim(),B=m.trim(),J=nn(Xs).trim(),se=Ue.value;if(!D&&S.length===0&&L.length===0)return"";We.value=!0,It.value="";let ye="";try{try{const ht=await lm(B||void 0,J||void 0);ye=ht.threadId,Mt(ye,ht.model),Mn(ye,ht.modelProvider||at.value),Va(ye,se)}catch(ht){if(J&&J!==sa&&Kc(ht)){await Ho();const Rt=await lm(B||void 0,sa);ye=Rt.threadId,Mt(ye,Rt.model),Mn(ye,Rt.modelProvider||at.value),Va(ye,se)}else throw ht}if(!ye)return"";oi(ye,B,D||"[Image]"),Ss(ye,D,S,P,L),bl(ye),$e.value={...$e.value,[ye]:!0},gn(ye),kt=!0,Wo(ye,null),jt(ye,{label:"Thinking",details:oe(nn(ye),gt.value,se)}),Ft(ye,null),On(ye,!0);const He=ye,rt=B||null,ct=D;return no(ye,D,S,P,L,se).catch(ht=>{kt=!1,On(ye,!1),jt(ye,null);const Rt=ht instanceof Error?ht.message:"Unknown application error";Ft(ye,Rt),It.value=Rt}).finally(()=>{We.value=!1}),Pa(He,ct,rt,S,L),ye}catch(He){kt=!1,ye&&(On(ye,!1),jt(ye,null));const rt=He instanceof Error?He.message:"Unknown application error";throw ye&&Ft(ye,rt),It.value=rt,We.value=!1,He}}async function no(c,m,S=[],P=[],L=[],D){const B=gt.value,J=D==="plan"?"plan":D==="default"?"default":Ue.value,se=m.trim(),ye=[...S];if(ye.length===0&&jn(se)){const ct=Pn(c);ct&&ye.push(ct)}const He=P.map(ct=>({name:ct.name,path:ct.path})),rt=L.map(ct=>({...ct}));lr(c,{text:se,imageUrls:[...ye],skills:He,fileAttachments:rt,effort:B,collaborationMode:J,fallbackRetried:!1});try{if($e.value[c]!==!0){const Rt=await Ed(c);Rt.model&&Mt(c,Hn(c,Rt.model,Rt.modelProvider)),Rt.modelProvider&&Mn(c,Rt.modelProvider),$e.value={...$e.value,[c]:!0}}const ct=nn(c);let ht="";try{ht=await $d(c,m,ye,ct||void 0,B||void 0,P.length>0?P:void 0,L,J)}catch(Rt){if(ct&&ct!==sa&&Kc(Rt))await Ho(c),lr(c,{text:se,imageUrls:[...ye],skills:He,fileAttachments:rt,effort:B,collaborationMode:J,fallbackRetried:!0}),ht=await $d(c,m,ye,sa,B||void 0,P.length>0?P:void 0,L,J);else throw Rt}ht&&(ne.value={...ne.value,[c]:ht},Dn(c,ht)),mn.add(c),await fn(),on(c)}catch(ct){throw ct}}async function ns(c){if(me.value[c]!==!0){me.value={...me.value,[c]:!0};try{q.value=await ym()}catch{}finally{me.value=xt(me.value,c)}}}function os(c){ns(c),!(typeof window>"u")&&window.setTimeout(()=>{ns(c)},650)}async function Es(){const c=n.value;if(!c||Y.value[c]!==!0||be.value[c]===!0)return;let m=ne.value[c];if(!m){const{activeTurnId:D}=await Rd(c);m=D,m&&(ne.value={...ne.value,[c]:m})}if(!m)throw new Error("Could not determine active turn id for interrupt");const S=Io.value.filter(D=>D.turnId===m),P=S.find(D=>D.role==="user"),L=S.some(D=>{if(D.role==="assistant")return!0;const B=D.messageType??"";return B==="commandExecution"||B==="toolCall"||B==="worked"||B==="fileChange"||B==="plan"||B==="plan.live"||B==="compaction.done"||B==="turnError"});Xe.value=!0,It.value="";try{if(await P_(c,m),On(c,!1),jt(c,null),Ft(c,null),ne.value[c]&&(ne.value=xt(ne.value,c)),mn.add(c),tn=!0,await fn(),P&&!L){const D=(o.value[c]??[]).filter(J=>J.turnId!==m);fr(c,D);const B=u.value[c];if(B){const J=B.filter(se=>se.turnId!==m);J.length!==B.length&&(u.value={...u.value,[c]:J},zd(u.value))}Ge.value={...Ge.value,[c]:{text:P.text??"",imageUrls:P.images??[],fileAttachments:(P.fileAttachments??[]).map(J=>({label:J.label,path:J.path,fsPath:J.fsPath??J.path})),skills:P.skills??[]}}}}catch(D){const B=D instanceof Error?D.message:"Failed to interrupt active turn";Ft(c,B),It.value=B}finally{Xe.value=!1}}function Ms(c){c&&Ge.value[c]&&(Ge.value=xt(Ge.value,c))}async function La(c){var S,P;const m=n.value;if(m&&!Lt.value&&c.trim()){Lt.value=!0,It.value="";try{Y.value[m]===!0&&await Es();const L=o.value[m]??[],D=L.find(rt=>rt.turnId===c),B=typeof(D==null?void 0:D.turnIndex)=="number"?D.turnIndex:-1;if(B<0)return;const J=L.reduce((rt,ct)=>typeof ct.turnIndex=="number"&&ct.turnIndex>rt?ct.turnIndex:rt,-1);if(J<0||B>J)return;const se=J-B+1;if(se<1)return;const ye=((P=(S=Ir.value)==null?void 0:S.cwd)==null?void 0:P.trim())??"";ye&&await a1(m,c,ye);const He=await Md(m,se);fr(m,He),Vn(m,[]),ka(m),M.value[m]&&(M.value=xt(M.value,m)),Wo(m,null),jt(m,null),Ft(m,null),tn=!0,await fn()}catch(L){It.value=L instanceof Error?L.message:"Failed to rollback thread"}finally{Lt.value=!1}}}function Kn(c,m){const P=(i.value[c]??[]).filter(L=>L.messageType!=="compaction.pending"&&L.messageType!=="compaction.done");P.push({id:`compaction:${m}:${c}:${Date.now()}`,role:"system",text:"",messageType:m==="pending"?"compaction.pending":"compaction.done"}),i.value={...i.value,[c]:P}}function rs(c,m){const S=new Set(kn.value);m?S.add(c):S.delete(c),kn.value=S}function kc(c){lo=c.trim(),tr.value=[]}async function Dr(c){const m=c.trim();if(!(!m||kn.value.has(m))){rs(m,!0),Kn(m,"pending");try{await A_(m);const S=2e3,P=14,L=Date.now()+Fo;let D=0;for(;Date.now()<L&&D<P&&kn.value.has(m);){if((await Rd(m)).messages.some(se=>se.messageType==="compaction.done")){rs(m,!1),n.value===m&&await Gn(m,{silent:!0,force:!0}),Kn(m,"done"),Xt(m);break}D+=1,await _N(S)}kn.value.has(m)&&(rs(m,!1),Kn(m,"done"),Xt(m))}catch(S){It.value=S instanceof Error?S.message:"Failed to compact thread",rs(m,!1),Kn(m,"done"),Xt(m)}}}let di=null;async function Hu(c,m){try{const S=await el(),P={...S.labels};let L=!1;for(const D of S.order){if(!su(D,c))continue;const B=m.trim();B.length===0?P[D]!==void 0&&(delete P[D],L=!0):P[D]!==B&&(P[D]=B,L=!0)}L&&await jd({order:S.order,labels:P,active:S.active,projectOrder:S.projectOrder})}catch{}}function as(c,m){c.length===0||(et.value[c]??"")===m||(et.value={...et.value,[c]:m},tv(et.value),di!==null&&clearTimeout(di),di=setTimeout(()=>{di=null,Hu(c,m)},500))}async function Fr(c){var D;if(c.length===0)return;const m=Qe.value.filter(B=>B!==c);if(ps(Qe.value,m)||(Qe.value=m,Vl(Qe.value)),t.value=t.value.filter(B=>B.projectName!==c),et.value[c]!==void 0){const B={...et.value};delete B[c],et.value=B,tv(B)}dn();const S=wo(e.value);Mr(S),S.some(B=>B.id===n.value)||gn(((D=S[0])==null?void 0:D.id)??"");const L=new Set;try{const B=await el();eO(B,c).forEach(J=>{L.add(J)})}catch{}if(L.size>0)try{const B=await el(),J=B.order.filter(He=>!L.has(He)),se=B.active.filter(He=>!L.has(He)),ye=se.length===0&&J.length>0?[J[0]]:se;await jd({order:J,labels:GN(B.labels,L),active:ye,projectOrder:B.projectOrder.filter(He=>He!==c&&!L.has(He))});return}catch{}await $n()}function fi(c,m){if(c.length===0||t.value.length===0)return;const S=t.value.map(se=>se.projectName),P=S.indexOf(c);if(P===-1)return;const L=Math.max(0,Math.min(m,S.length-1)),D=MN(S,P,L);if(D===S)return;const B=Qi(D,t.value);Qe.value=B,Vl(Qe.value);const J=Ud(t.value,Qe.value);t.value=Yc(t.value,J),dn(),$n()}function Cl(c){const m=c.trim();if(!m)return;const S=[m,...Qe.value.filter(L=>L!==m)];if(ps(Qe.value,S))return;Qe.value=S,Vl(Qe.value);const P=Ud(t.value,Qe.value);t.value=Yc(t.value,P),dn(),$n()}async function $n(){try{const c=await el(),m=tO(c,Qe.value,t.value);await jd({order:m.order,labels:c.labels,active:m.active,projectOrder:m.projectOrder})}catch{}}async function fn(){if(Kr.value){typeof window<"u"&&Cn===null&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc));return}Kr.value=!0;const c=tn,m=Sn,S=new Set(mn);tn=!1,Sn=!1,mn.clear();try{c&&await go({force:m});const P=n.value;if(!P)return;const L=S.has(P),D=Y.value[P]===!0,B=si(P),J=re.value[P]??"";(B.length>0&&B!==J||L||D&&ee.value[P]!==!0||c&&ee.value[P]!==!0)&&await Gn(P,{silent:!0,force:L})}catch{}finally{Kr.value=!1,(tn||mn.size>0)&&typeof window<"u"&&Cn===null&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}}async function Br(){await _l(),tn=!nr.value,n.value&&ee.value[n.value]!==!0&&mn.add(n.value),await fn()}function Sl(c){const m=Ke(c.params),S=typeof(m==null?void 0:m.threadId)=="string"?m.threadId.trim():"";if(!S)return;const P=Ke(m==null?void 0:m.externalSession),L=P&&typeof P.origin=="string"&&P.origin.trim().length>0?{origin:P.origin.trim(),active:P.active===!0,lastWriteAt:typeof P.lastWriteAt=="string"?P.lastWriteAt:null}:null;H.value={...H.value,[S]:L},On(S,(L==null?void 0:L.active)===!0),dn(),tn=!0,n.value===S&&mn.add(S),Cn===null&&typeof window<"u"&&(Cn=window.setTimeout(()=>{Cn=null,fn()},Xc))}function oa(){typeof window>"u"||So||(_l(),Wu(),So=J_(c=>{if(c.method==="ready"){Ta(),Br();return}if(c.method==="externalSessionChanged"){Sl(c);return}ci(c),Or(c)}))}async function _l(){try{const m=(await gm()).map(S=>ov(S)).filter(S=>S!==null);Vo(m)}catch{}}async function Wu(){try{const c=await rx(),m=Object.entries(c);if(m.length===0)return;const S={...u.value};let P=!1;for(const[L,D]of m){const B=D.filter(He=>!!He&&typeof He.id=="string");if(B.length===0)continue;const J=S[L]??[],se=new Set(J.map(He=>He.text)),ye=[...J];for(const He of B)se.has(He.text)||(ye.push(He),se.add(He.text));S[L]=ye.slice(-20),P=!0}P&&(u.value=S,zd(S))}catch{}}async function br(c){try{return await Q_(c.id,{result:c.result,error:c.error}),jr(c.id),ce.value=xt(ce.value,String(c.id)),!0}catch(m){const S=m instanceof Error?m.message:"Failed to reply to server request";return await qi(c.id)?(It.value=S,ce.value={...ce.value,[String(c.id)]:S},!1):(jr(c.id),ce.value=xt(ce.value,String(c.id)),!0)}}async function qi(c){try{const m=await gm();for(const S of m){const P=Ke(S);if((P==null?void 0:P.id)===c)return!0}return!1}catch{return!0}}function xl(){if(So&&(So(),So=null),tn=!1,mn.clear(),Ot.clear(),Cn!==null&&typeof window<"u"&&(window.clearTimeout(Cn),Cn=null),or!==null&&typeof window<"u"&&(window.clearTimeout(or),or=null),Rn!==null&&typeof window<"u"&&(window.clearTimeout(Rn),Rn=null),typeof window<"u")for(const c of Tt.values())window.clearTimeout(c);Tt.clear(),kt=!1,o.value={},r.value={},s.value={},h.value={},u.value={},M.value={},U.value={},R.value={},W.value={},j.value={},le.value={},ne.value={},A.clear(),av(Ce),w.clear(),iO(),be.value={},de.value={},ie.value={},q.value={},me.value={},we.value={},Pt(),Eo(),Fe.value=null,ze.value={}}const Al=X(()=>{const c=n.value;if(!c)return[];const m=q.value[c]??[];return[...(we.value[c]??[]).map(L=>({...L,awaitingCompaction:!0})),...m]});function ra(c){const m=n.value;if(!m)return;const S=we.value[m];if(S!=null&&S.some(D=>D.id===c)){const D=S.filter(B=>B.id!==c);we.value=D.length>0?{...we.value,[m]:D}:xt(we.value,m),Pt();return}const P=q.value[m];if(!P)return;const L=P.filter(D=>D.id!==c);q.value=L.length>0?{...q.value,[m]:L}:xt(q.value,m),Eo()}function Il(c,m){const S=n.value;if(!S)return;const P=q.value[S];if(!P)return;const L=we.value[S];if(L!=null&&L.some(ye=>ye.id===c||ye.id===m))return;const D=P.findIndex(ye=>ye.id===c),B=P.findIndex(ye=>ye.id===m);if(D<0||B<0||D===B)return;const J=[...P],[se]=J.splice(D,1);J.splice(B,0,se),q.value={...q.value,[S]:J},Eo()}function pi(c){const m=n.value;if(!m)return;const S=we.value[m],P=S==null?void 0:S.find(B=>B.id===c);if(P){ra(c),Rr(P.collaborationMode),je=!0,to(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments).finally(()=>{je=!1});return}const L=q.value[m];if(!L)return;const D=L.find(B=>B.id===c);D&&(ra(c),Rr(D.collaborationMode),to(D.text,D.imageUrls,D.skills,"steer",D.fileAttachments))}function Na(c,m={}){gn(c,m)}return{projectGroups:e,projectDisplayNameById:et,selectedThread:Ir,selectedThreadTokenUsage:ni,selectedThreadTerminalOpen:xo,isSelectedThreadInterruptPending:Jn,selectedThreadServerRequests:Ao,selectedLiveOverlay:Yr,selectedActiveTurnId:qo,lastPlanByThreadId:a,resolveThreadTurnIndex:mr,codexQuota:Pr,selectedThreadId:n,availableCollaborationModes:_e,availableModelIds:De,availableModelReasoningEfforts:fe,selectedCollaborationMode:Ue,selectedModelId:Le,selectedReasoningEffort:gt,selectedSpeedMode:ft,codexCliMissingError:it,installedSkills:Yt,accountRateLimitSnapshots:In,messages:Io,hasMoreOlderMessages:ba,isLoadingThreads:K,isThreadListFullyLoaded:Ne,isLoadingMessages:pe,isLoadingOlderMessages:sr,isSendingMessage:We,isInterruptingTurn:Xe,isUpdatingSpeedMode:$t,isRollingBack:Lt,compactingThreadIds:kn,fuzzyFileSearchResults:tr,registerFuzzyFileSearchSession:kc,error:It,refreshAll:Jo,refreshSkills:Bt,refreshHooks:Xn,hooksList:z,isHooksLoading:G,onRealtimeEvent:Za,selectThread:ts,loadMessages:Gn,loadOlderMessages:es,ensureThreadMessagesLoaded:ui,setThreadTerminalOpen:dr,toggleSelectedThreadTerminal:Ka,archiveThreadById:y,compactThreadById:Dr,renameThreadById:b,forkThreadById:T,forkThreadFromTurn:N,rollbackSelectedThread:La,sendMessageToSelectedThread:to,sendMessageToNewThread:ja,interruptSelectedThreadTurn:Es,interruptedUnsubmittedMessage:Ha,clearInterruptedUnsubmittedMessage:Ms,selectedThreadQueuedMessages:Al,removeQueuedMessage:ra,reorderQueuedMessage:Il,steerQueuedMessage:pi,autoCompactThreshold:ve,setAutoCompactThreshold:Qt,setSelectedCollaborationMode:Rr,readModelIdForThread:nn,setSelectedModelIdForThread:_t,setSelectedModelId:Jt,setSelectedReasoningEffort:cr,updateSelectedSpeedMode:E,respondToPendingServerRequest:br,pendingReplyErrorForRequest:_a,renameProject:as,removeProject:Fr,reorderProject:fi,pinProjectToTop:Cl,startPolling:oa,stopPolling:xl,primeSelectedThread:Na}}const H2={class:"sidebar-root"},W2=["aria-pressed","aria-label","title"],V2={key:1,class:"sidebar-search-bar"},G2=["placeholder"],K2=["aria-label"],Y2={class:"sidebar-skills-link-icon","aria-hidden":"true"},J2={class:"sidebar-skills-link-copy"},Q2={class:"sidebar-skills-link-title"},X2={class:"sidebar-skills-link-subtitle"},Z2={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},eD={class:"sidebar-skills-link-copy"},tD={class:"sidebar-skills-link-title"},nD={class:"sidebar-skills-link-subtitle"},oD=["aria-label"],rD={class:"settings-dialog-header"},aD={class:"settings-dialog-title"},sD=["aria-label","title"],iD={class:"settings-dialog-body"},lD=["aria-label"],cD=["aria-current","onClick"],uD={class:"settings-group-content"},dD=["title"],fD={class:"sidebar-settings-label"},pD=["title"],hD={class:"sidebar-settings-label"},mD={class:"sidebar-settings-value"},vD=["title"],gD={class:"sidebar-settings-label"},yD={class:"sidebar-settings-value"},wD=["title"],bD={class:"sidebar-settings-label"},TD=["title"],kD={class:"sidebar-settings-label"},CD={class:"sidebar-settings-value"},SD=["title"],_D={class:"sidebar-settings-label"},xD=["title"],AD={class:"sidebar-settings-label"},ID=["title"],PD={class:"sidebar-settings-label"},RD=["title"],ED={class:"sidebar-settings-label"},MD=["href"],$D={class:"sidebar-settings-label"},jD={class:"sidebar-settings-value"},LD=["title"],ND={class:"sidebar-settings-label"},OD={key:0,class:"sidebar-settings-row sidebar-settings-error"},DD=["href"],FD={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},BD={class:"sidebar-settings-provider-info"},UD={class:"sidebar-settings-label"},qD={class:"sidebar-settings-provider-link",href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer"},zD={class:"sidebar-settings-key-group"},HD={class:"sidebar-settings-key-masked"},WD=["disabled","title"],VD=["placeholder"],GD=["disabled"],KD={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},YD={class:"sidebar-settings-label"},JD=["aria-label"],QD=["disabled"],XD=["disabled"],ZD={key:2,class:"sidebar-settings-row sidebar-settings-row--input"},eF={class:"sidebar-settings-provider-info"},tF={class:"sidebar-settings-label"},nF={class:"sidebar-settings-provider-link",href:"https://opencode.ai/auth",target:"_blank",rel:"noopener noreferrer"},oF={class:"sidebar-settings-key-group"},rF=["placeholder"],aF=["disabled"],sF={key:3,class:"sidebar-settings-row sidebar-settings-row--input"},iF={class:"sidebar-settings-label"},lF={class:"sidebar-settings-key-group"},cF=["placeholder"],uF={class:"sidebar-settings-label",style:{"margin-top":"4px"}},dF={class:"sidebar-settings-key-group"},fF=["placeholder"],pF=["disabled"],hF={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},mF={class:"sidebar-settings-label"},vF=["aria-label"],gF={class:"sidebar-settings-label"},yF={class:"sidebar-settings-value"},wF={key:0,class:"sidebar-settings-telegram-panel"},bF={class:"sidebar-settings-field"},TF={class:"sidebar-settings-field-label"},kF={class:"sidebar-settings-field"},CF={class:"sidebar-settings-field-label"},SF={class:"sidebar-settings-field-help"},_F={key:0,class:"sidebar-settings-telegram-error"},xF=["href"],AF={class:"sidebar-settings-telegram-actions"},IF=["disabled"],PF={class:"sidebar-settings-hooks-section"},RF={class:"sidebar-settings-hooks-header"},EF={class:"sidebar-settings-hooks-title"},MF=["disabled","title"],$F={key:0,class:"sidebar-settings-hooks-empty"},jF={key:0,class:"sidebar-settings-hooks-empty"},LF={key:1,class:"sidebar-settings-hooks-empty"},NF={key:2,class:"sidebar-settings-hooks-list"},OF={class:"sidebar-settings-hooks-cwd"},DF={class:"sidebar-settings-hooks-event"},FF={class:"sidebar-settings-hooks-command"},BF={class:"sidebar-settings-remote-section"},UF={class:"sidebar-settings-remote-header"},qF={class:"sidebar-settings-remote-title"},zF=["disabled","title"],HF={class:"sidebar-settings-remote-toggle-label"},WF={key:0,class:"sidebar-settings-remote-empty"},VF={key:0,class:"sidebar-settings-remote-error"},GF={key:1,class:"sidebar-settings-remote-notice"},KF={key:2,class:"sidebar-settings-remote-empty"},YF=["disabled"],JF={class:"sidebar-settings-remote-label"},QF={class:"sidebar-settings-remote-value"},XF={class:"sidebar-settings-remote-clients"},ZF={class:"sidebar-settings-remote-clients-header"},eB={class:"sidebar-settings-remote-label"},tB=["disabled"],nB={key:0,class:"sidebar-settings-remote-empty"},oB={class:"sidebar-settings-remote-client-name"},rB=["disabled","onClick"],aB={class:"sidebar-settings-rate-limits"},sB=["aria-label"],iB={class:"sidebar-settings-actions"},lB=["title","aria-label"],cB=["title","aria-label"],uB={class:"content-root-wrap"},dB={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},fB={key:1,class:"skills-route-header-icon","aria-hidden":"true"},pB={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},hB=["aria-label","title"],mB={class:"content-body"},vB={key:2,class:"content-grid content-grid-home"},gB={class:"new-thread-empty"},yB={class:"new-thread-hero"},wB=["title"],bB={class:"new-thread-folder-actions"},TB=["disabled"],kB={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},CB={class:"new-thread-launch-card-copy"},SB={class:"new-thread-launch-card-topline"},_B={class:"new-thread-launch-card-badge","aria-hidden":"true"},xB={class:"new-thread-launch-card-eyebrow"},AB={class:"new-thread-launch-card-title"},IB={class:"new-thread-launch-card-text"},PB={class:"new-thread-launch-card-actions"},RB=["aria-label","onKeydown"],EB={class:"new-thread-open-folder-header"},MB={class:"new-thread-open-folder-title"},$B={class:"new-thread-open-folder-label"},jB={class:"new-thread-open-folder-current"},LB=["placeholder","title","disabled","onKeydown"],NB=["disabled"],OB={class:"new-thread-open-folder-actions"},DB={class:"new-thread-open-folder-toggle"},FB=["aria-pressed","disabled"],BB={key:0,class:"new-thread-open-folder-create"},UB={class:"new-thread-open-folder-create-composer"},qB=["placeholder","onKeydown"],zB=["disabled"],HB={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},WB=["href"],VB=["placeholder","onKeydown"],GB={key:1,class:"new-thread-open-folder-error-actions"},KB={class:"new-thread-open-folder-error visible-error-with-feedback"},YB=["href"],JB=["disabled"],QB={key:2,class:"new-thread-open-folder-status"},XB={key:3,class:"new-thread-open-folder-status"},ZB={key:4,class:"new-thread-open-folder-list"},eU=["title","disabled","onClick"],tU={class:"new-thread-open-folder-item-name"},nU=["disabled","onClick"],oU=["aria-label","onKeydown"],rU={class:"new-thread-open-folder-header"},aU={class:"new-thread-open-folder-title"},sU=["disabled"],iU=["aria-label"],lU=["aria-selected","disabled"],cU=["aria-selected","disabled"],uU={class:"new-thread-project-field"},dU={class:"new-thread-open-folder-label"},fU=["disabled","placeholder"],pU={key:0,class:"new-thread-project-field"},hU={class:"new-thread-open-folder-label"},mU=["disabled","placeholder","onKeydown"],vU={key:1,class:"new-thread-project-field"},gU={class:"new-thread-open-folder-label"},yU=["disabled","onKeydown"],wU={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},bU=["href"],TU={class:"new-thread-project-modal-actions"},kU=["disabled"],CU=["disabled"],SU={key:3,class:"new-thread-branch-select"},_U={class:"new-thread-branch-select-label"},xU={class:"new-thread-branch-select-help"},AU={key:4,class:"new-thread-runtime-help"},IU={class:"worktree-init-status-title"},PU={class:"worktree-init-status-message"},RU={class:"composer-with-queue"},EU={key:0,class:"composer-runtime-error",role:"alert"},MU=["href"],$U={key:3,class:"content-grid"},jU={class:"content-thread"},LU={key:0,class:"external-session-banner",role:"alert"},NU={key:1,class:"composer-runtime-error",role:"alert"},OU=["href"],DU={key:2,class:"interrupt-recovered-banner",role:"status"},FU=["aria-label"],BU={class:"content-right-panel-header"},UU={class:"content-right-panel-tabs",role:"tablist"},qU=["aria-selected"],zU=["aria-selected"],HU=["aria-selected","title","onClick"],WU={class:"content-right-panel-tab-label"},VU=["aria-label","title","onClick"],GU={class:"content-right-panel-actions"},KU={class:"content-right-panel-add-wrap"},YU=["aria-label","title"],JU={key:0,class:"content-right-panel-menu"},QU=["aria-label","title"],XU={class:"content-right-panel-body"},ZU={key:0,class:"project-zip-modal-backdrop",role:"presentation"},e4=["aria-label"],t4={class:"project-zip-modal-header"},n4={class:"project-zip-modal-title"},o4=["aria-label","disabled"],r4={class:"project-zip-modal-copy"},a4={class:"project-zip-progress-label",role:"status","aria-live":"polite"},s4={class:"project-zip-progress-track"},i4={key:0,class:"project-zip-modal-error",role:"alert"},l4={class:"project-zip-modal-actions"},c4=["disabled"],u4=["disabled"],d4=["disabled"],f4=["aria-label"],p4={class:"codex-login-modal-header"},h4={class:"codex-login-modal-title"},m4=["aria-label","disabled"],v4={class:"codex-login-modal-copy"},g4=["href"],y4=["placeholder","disabled"],w4={key:1,class:"codex-login-modal-error visible-error-with-feedback"},b4=["href"],T4={class:"codex-login-modal-actions"},k4=["disabled"],C4=["disabled"],uv="codex-web-local.sidebar-collapsed.v1",dv="codex-web-local.accounts-section-collapsed.v1",fv="codex-web-local.right-panel-width.v1",S4=260,_4=640,pv=320,x4=400,hv="codex-web-local.send-with-enter.v1",mv="codex-web-local.in-progress-send-mode.v1",vv="codex-web-local.dark-mode.v1",gv="codex-web-local.dictation-click-to-toggle.v1",yv="codex-web-local.dictation-auto-send.v1",wv="codex-web-local.dictation-language.v1",bv="codex-web-local.chat-width.v1",A4=400,I4=en({__name:"App",setup(e){var zp,Hp;const t=Ul(()=>Hl(()=>import("./ThreadConversation-DG3Dg6i5.js"),__vite__mapDeps([0,1,2]))),n=Ul(()=>Hl(()=>import("./ThreadTerminalPanel-BFJwAMy6.js"),__vite__mapDeps([3,4]))),o=Ul(()=>Hl(()=>import("./ReviewPane-DzGrEQjS.js"),__vite__mapDeps([5,6]))),r=Ul(()=>Hl(()=>import("./DirectoryHub-CLxgCy22.js"),__vite__mapDeps([7,1,8]))),a=Ul(()=>Hl(()=>import("./AutomationsPanel-CKm-u9Pi.js"),__vite__mapDeps([9,10]))),{t:s,uiLanguage:i,uiLanguageOptions:u,setUiLanguage:h}=io(),p="codex-mobile",g="0.1.106",w={sendWithEnter:s("When enabled, press Enter to send. When disabled, use Command+Enter to send."),inProgressSendMode:s("If a turn is still running, choose whether a new prompt should steer the current turn or be queued."),appearance:s("Switch between system theme, light mode, and dark mode."),chatWidth:s("Choose how wide the conversation column and composer can grow on desktop screens."),dictationClickToToggle:s("Use click-to-start and click-to-stop dictation instead of hold-to-talk."),dictationAutoSend:s("Automatically send transcribed dictation when recording stops."),dictationLanguage:s("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"}},M={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:Y,selectedThread:ue,selectedThreadTokenUsage:F,selectedThreadServerRequests:H,selectedLiveOverlay:q,lastPlanByThreadId:me,resolveThreadTurnIndex:we,selectedActiveTurnId:ve,codexQuota:je,selectedThreadId:ge,availableCollaborationModes:Ie,availableModelIds:De,availableModelReasoningEfforts:fe,selectedCollaborationMode:Se,selectedReasoningEffort:_e,selectedSpeedMode:Pe,codexCliMissingError:Re,installedSkills:Ue,accountRateLimitSnapshots:Le,messages:gt,hasMoreOlderMessages:ft,isLoadingThreads:at,isThreadListFullyLoaded:it,isLoadingMessages:wt,isLoadingOlderMessages:St,isSendingMessage:Qe,isInterruptingTurn:et,isSelectedThreadInterruptPending:re,isUpdatingSpeedMode:ee,error:te,refreshAll:V,refreshSkills:$e,refreshHooks:R,hooksList:j,isHooksLoading:W,onRealtimeEvent:ce,selectThread:le,ensureThreadMessagesLoaded:ne,loadMessages:Ce,loadOlderMessages:be,archiveThreadById:de,compactThreadById:ie,compactingThreadIds:Ge,fuzzyFileSearchResults:Te,registerFuzzyFileSearchSession:Be,forkThreadById:Fe,renameThreadById:ze,forkThreadFromTurn:bt,sendMessageToSelectedThread:dt,sendMessageToNewThread:pt,interruptSelectedThreadTurn:Yt,interruptedUnsubmittedMessage:In,clearInterruptedUnsubmittedMessage:z,selectedThreadQueuedMessages:G,removeQueuedMessage:K,reorderQueuedMessage:pe,steerQueuedMessage:Ne,autoCompactThreshold:We,setAutoCompactThreshold:Xe,setSelectedCollaborationMode:$t,readModelIdForThread:Lt,setSelectedModelIdForThread:kn,setSelectedReasoningEffort:Fo,updateSelectedSpeedMode:tr,respondToPendingServerRequest:lo,pendingReplyErrorForRequest:It,renameProject:Kr,removeProject:nr,reorderProject:un,pinProjectToTop:jn,startPolling:Pn,stopPolling:So,primeSelectedThread:Cn,rollbackSelectedThread:or}=z2(),Tt=lS(),zt=iS(),{isMobile:Et}=Wf();function Cr(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const hn=x(null),ga=x(null),Sr=x(null);let Bo=null;const{buildFeedbackMailto:ya,feedbackMailtoBase:wa,recordVisibleFailure:_r}=Zf(),tn=wa();function Sn(l,d){d&&_r(d);const _=l.currentTarget;_ instanceof HTMLAnchorElement&&(_.href=ya())}const mn=x(null),xr=x(null),Ln=x(null),co=x(0);let Rn=null;function rr(){const l=Ln.value;if(!l)return;const d=window.getComputedStyle(l),_=Number.parseFloat(d.paddingLeft)+Number.parseFloat(d.paddingRight),$=Math.max(0,l.clientWidth-(Number.isFinite(_)?_:0)),Q=window.getComputedStyle(l).getPropertyValue("--chat-column-max").trim(),he=Number.parseFloat(Q)*(Q.endsWith("rem")?16:1),Oe=Number.isFinite(he)&&he>0?Math.min($,he):$;co.value=Oe}const Ar=x(null),uo=x(null),Uo=x(!1),ar=x(!1),kt=x(!0),Ot=x("git"),Zn=x([]),_o=x(""),Ir=X(()=>Zn.value.find(l=>l.key===_o.value)??null),xo=x(!1),Jn=x(!1),Ao=x(!1),qo=x(Pr());function Yr(l){return Math.min(_4,Math.max(S4,l))}function Pr(){if(typeof window>"u")return pv;const l=window.localStorage.getItem(fv),d=Number(l);return Number.isFinite(d)?Yr(d):pv}function ni(l){typeof window>"u"||window.localStorage.setItem(fv,String(l))}function Io(l){l.preventDefault();const d=l.clientX,_=qo.value,$=he=>{const Oe=d-he.clientX;qo.value=Yr(_+Oe)},Q=()=>{ni(qo.value),window.removeEventListener("mousemove",$),window.removeEventListener("mouseup",Q)};window.addEventListener("mousemove",$),window.addEventListener("mouseup",Q)}const Ha=x(null),ba=x(!1),sr=x("");let Jr=!1;const nn=x(!1),Ct=x(""),Nn=x("local"),vn=x({}),zo=new Map,fo=x(""),po=x([]),En=x(!1),gn=x({order:[],labels:{},projectOrder:[]}),_t=x({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),Jt=x({phase:"idle",title:"",message:""}),Mt=x(c0()),Mn=x(""),Hn=x(!1),Wa=x(null),Rr=x(null),Va=x(null),ir=x(null),Ho=x(null),lr=x(null);let ho=null,Er=null,cr=0,E=0,O=!1,oe=0,Ee=0,Ve=0,Dt=0;const yn=x("New Project (1)"),on=x(""),Ht=x(!1),Qr=[{id:"general",label:"General settings"},{id:"models",label:"Models & providers"},{id:"integrations",label:"Integrations"},{id:"usage",label:"Usage & about"}],Po=x("general");let dn=0;function oi(){if(Ht.value){dn=Date.now(),Ht.value=!1;return}Date.now()-dn<x4||(Ht.value=!0)}const Mr=x(d0()),Wn=x(!1),Wo=x(!1),On=x(new Set);async function ri(){try{On.value=new Set(await B_())}catch{}finally{Wo.value=!0}}const bl=X(()=>!Wo.value||On.value.has("hooks/list")),ai=X(()=>!Wo.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(l=>On.value.has(l)));tt(Ht,l=>{l&&(R(),ii(),ai.value&&As())});const Dn=x({enabled:!1,clients:[]}),Xr=x(null),ur=x(!1),Qn=x(!1),jt=x(""),Ft=x(""),Ga=x("");let Ta=null,si=!1,dr=null;const Ka=x("never"),fr=x(!1),Ss=x(!1),Vn=x(""),$r=x("");let _s=!1;const xs=x(!1);async function ii(l={}){if(!(l.force!==!0&&_s)){fr.value=!0,Vn.value="";try{Ka.value=await wx(),_s=!0}catch(d){Vn.value=d instanceof Error?d.message:"Failed to load approval policy"}finally{fr.value=!1}}}function Di(l){Ka.value=l}async function Fn(){Ss.value=!0,Vn.value="",$r.value="";try{await bx(Ka.value),xs.value=!0,$r.value=s("Approval policy saved"),li&&clearTimeout(li),li=setTimeout(()=>{$r.value=""},2200)}catch(l){Vn.value=l instanceof Error?l.message:"Failed to save approval policy"}finally{Ss.value=!1}}let li=null;async function As(l={}){if(!(l.force!==!0&&si)){ur.value=!0,Ft.value="";try{const d=await yx();Dn.value=d,si=!0}catch(d){Ft.value=d instanceof Error?d.message:"Failed to load remote control status"}finally{ur.value=!1}}}async function ka(){const l=!Dn.value.enabled;Qn.value=!0,jt.value=l?"enable":"disable";try{await Tx(l),Dn.value={...Dn.value,enabled:l},Ui(l?"Remote control enabled":"Remote control disabled")}catch(d){Ft.value=d instanceof Error?d.message:"Failed to update remote control"}finally{Qn.value=!1,jt.value=""}}async function Ya(){Qn.value=!0,jt.value="pairing";try{Xr.value=await kx()}catch(l){Ft.value=l instanceof Error?l.message:"Failed to start pairing"}finally{Qn.value=!1,jt.value=""}}async function Fi(){Qn.value=!0,jt.value="clients";try{Dn.value={...Dn.value,clients:await Cx()}}catch(l){Ft.value=l instanceof Error?l.message:"Failed to load remote clients"}finally{Qn.value=!1,jt.value=""}}async function Bi(l){Qn.value=!0,jt.value=`revoke:${l}`;try{await Sx(l),Dn.value={...Dn.value,clients:Dn.value.clients.filter(d=>d.clientId!==l)},Ui("Remote client removed")}catch(d){Ft.value=d instanceof Error?d.message:"Failed to remove remote client"}finally{Qn.value=!1,jt.value=""}}function Ui(l){Ga.value=l,Ta&&clearTimeout(Ta),Ta=setTimeout(()=>{Ga.value=""},3e3)}const Ca=x(""),pr=x(""),eo=x([]),Ro=x(null),Sa=x(null),jr=x(null),_a=x(null),Vo=x(!1),Ja=x(!1),hr=x({addedLineCount:0,removedLineCount:0}),mo=x([]),Lr=x(""),Zr=x({}),mr=x(""),vr=x(""),Qa=x({}),gr=x(""),Is=x(""),Xa=x(!1),ea=x(!1);function Tl(l,d){return`${l}\0${d?"with-reset-history":"without-reset-history"}`}const xa=x(null),Bn=x([]),Go=x(!1),vo=x(!1),Ko=x(!1),Un=x(!1),Za=x(!1),Aa=x(""),Nr=x(""),ci=x(null),Or=x(""),Yo=x(""),yr=x(""),wn=x(""),Ia=x(id(hv,!0)),Pa=x(Kb()),ta=x(Gb()),Ra=x(Yb()),na=x(id(gv,!1)),Eo=x(id(yv,!0)),Ea=x(i0()),Ps=X(()=>l0()),kl=X(()=>{const{loaded:l,total:d}=_t.value,_=mp(l);return d&&d>0?`${_} / ${mp(d)}`:l>0?_:s("Preparing...")}),Ma=X(()=>{const{loaded:l,total:d,phase:_}=_t.value;return _==="ready"?"100%":!d||d<=0?l>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(l/d*100)))}%`}),$a=x(!1),wr=x(!1),go=x(!1),Gn=x(""),es=x(!1),ui=x(null),Bt=x(!1),Xn=x(""),bn=x("codex"),Rs=X(()=>[{value:"codex",label:s("Codex")},{value:"openrouter",label:s("OpenRouter")},{value:"opencode-zen",label:s("OpenCode Zen")},{value:"custom",label:s("Custom endpoint")}]),Jo=x(""),ts=x(""),y=x("responses"),b=x("responses"),T=x(""),N=x(!1),ke=x(""),ot=x(""),Pt=x(""),Mo=x(!1),Qt=x(!1),qn=x(""),Xt=x(""),to=x(!1),ja=x(!1),no=x("create"),ns=x(""),os=x(""),Es=x(""),Ms=x(!1),La=x(""),Kn=x(!1),rs=x(null),kc=x(null),Dr=x(!1),di=x(null),Hu=x(null),as=x(""),Fr=x(""),fi=x(""),Cl=x([]),$n=x(""),fn=x(!1),Br=x(!1),Sl=x(!1),oa=x(""),_l=[te,Re,Lr,vr,wn,Xn,Pt,Xt,La,$n],Wu=X(()=>_l.some(l=>l.value.trim().length>0)),br=x({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),qi=x(null),xl=x(!1),Al=x(!1),ra=x(typeof window<"u"?((zp=window.visualViewport)==null?void 0:zp.height)??window.innerHeight:0),Il=x(typeof window<"u"?((Hp=window.visualViewport)==null?void 0:Hp.offsetTop)??0:0),pi=x(typeof window<"u"?window.innerHeight:0);let Na=null,c=!1,m=!1,S=!1,P=0;const L=X(()=>{const l=Tt.params.threadId;return typeof l=="string"?l:""}),D=X(()=>Tt.name==="home"),B=X(()=>Tt.name==="skills"),J=X(()=>Tt.name==="automations"),se=X(()=>{const l=Tt.query.automationId;return typeof l=="string"?l:""}),ye=X(()=>{var l;return J.value?s("Automations"):B.value?s("Skills"):D.value?s("Start new thread"):((l=ue.value)==null?void 0:l.title)??s("Choose a thread")}),He=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",rt=X(()=>{var d,_;return(((_=(d=ue.value)==null?void 0:d.title)==null?void 0:_.trim())??"")||He}),ct=X(()=>gt.value.filter(l=>{const d=p0(l.messageType,l.role);return d==="worked"?!0:!(d==="turnActivity.live"||d==="turnError.live"||d==="agentReasoning.live")})),ht=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Rt=x(null);function Ur(l,d,_){const $=typeof d.turnIndex=="number"?d.turnIndex:-1;return $<0?!1:l.some((Q,he)=>he>_&&typeof Q.turnIndex=="number"&&Q.turnIndex>=$&&ht.has(Q.messageType??""))}function $s(l,d){return l.some(_=>typeof _.turnIndex=="number"&&_.turnIndex>=d&&ht.has(_.messageType??""))}const hi=X(()=>{const l=ct.value,d=wt.value;for(let he=l.length-1;he>=0;he-=1){const Oe=l[he];if(Oe.messageType!=="plan"&&Oe.messageType!=="plan.live")continue;const rn=zm(Oe);if(!rn||Rt.value!==null&&Oe.id===Rt.value)return null;const w0=d?!0:Ur(l,Oe,he);return{id:Oe.id,streaming:Oe.messageType==="plan.live",explanation:rn.explanation,steps:rn.steps,implemented:w0}}const _=ge.value?me.value[ge.value]??null:null;if(!_)return null;const $=zm(_);if(!$)return null;const Q=typeof _.turnIndex=="number"?_.turnIndex:_.turnId?we(ge.value,_.turnId)??-1:-1;return{id:_.id,streaming:_.messageType==="plan.live",explanation:$.explanation,steps:$.steps,implemented:d?!0:Q>=0?$s(l,Q):!1}}),js=X(()=>q.value),Qo=X(()=>D.value?"__new-thread__":ge.value),Pl=X(()=>Lt(Qo.value)),Oa=X(()=>{const l=H.value;return l.length>0?l[l.length-1]:null}),mi=X(()=>Oa.value?It(Oa.value.id):""),_n=X(()=>{var l,d;return D.value?Ct.value.trim():((d=(l=ue.value)==null?void 0:l.cwd)==null?void 0:d.trim())??""}),vi=X(()=>kt.value&&(D.value&&_n.value.length>0||Tt.name==="thread"&&ge.value.length>0)),Cc=X(()=>vi.value&&Ot.value==="terminal"),Ls=X(()=>!Et.value||ra.value<=0||pi.value<=0?!1:pi.value-ra.value>120),Sc=X(()=>Ls.value||Cc.value&&ar.value),Rl=X(()=>{var l,d;return((d=(l=ue.value)==null?void 0:l.cwd)==null?void 0:d.trim())??Ct.value.trim()}),zi=X(()=>{var l;return!D.value&&((l=ue.value)==null?void 0:l.inProgress)===!0}),_c=X(()=>{const l=ge.value;return!!l&&Ge.value.has(l)}),El=X(()=>{var l,d;return!D.value&&((d=(l=ue.value)==null?void 0:l.externalSession)==null?void 0:d.active)===!0}),Hi=X(()=>Qe.value||et.value||zi.value||H.value.length>0);function xe(){$a.value&&($a.value=!1,cx(!0))}function Ut(){xe(),zt.push({name:"skills",query:{tab:"plugins"}})}function Da(){const l=ge.value;l&&ie(l)}function ss(l,d){const _=nt(l).trim(),$=Tr(_);return!_||!$?!1:d.some(Q=>{const he=nt(Q).trim();return he!==_&&Tr(he)===$})}function Ml(l,d=""){const _=nt(l).trim(),$=d.trim();if($)return $;const Q=Tr(_),he=[...gn.value.order,...U.value.map(Oe=>{var rn,Xo;return((Xo=(rn=Oe.threads[0])==null?void 0:rn.cwd)==null?void 0:Xo.trim())??""}).filter(Boolean)];return ss(_,he)?_:Q}function Uy(){const l=new Set(gn.value.order),d=gn.value.projectOrder.filter(_=>l.has(_));for(const _ of gn.value.order)d.includes(_)||d.push(_);return d}function $l(l){const d=nt(l).trim(),_=[...gn.value.order,...U.value.map($=>{var Q,he;return((he=(Q=$.threads[0])==null?void 0:Q.cwd)==null?void 0:he.trim())??""}).filter(Boolean)];return ss(d,_)?d:Tr(d)}function np(l){const d=nt(l).trim();if(!d)return"";const _=[...gn.value.order,...U.value.map($=>{var Q,he;return((he=(Q=$.threads[0])==null?void 0:Q.cwd)==null?void 0:he.trim())??""}).filter(Boolean)];for(const $ of gn.value.order){const Q=nt($).trim();if(!Q)continue;const he=Tr(Q),Oe=ss(Q,_)?Q:he;if(Q===d||Oe===d||he===d)return Q}return""}const Vu=X(()=>{var $,Q;const l=[],d=new Set;for(const he of Uy()){const Oe=he.trim();!Oe||d.has(Oe)||(d.add(Oe),l.push({value:Oe,label:Ml(Oe,gn.value.labels[Oe])}))}for(const he of U.value){const Oe=((Q=($=he.threads[0])==null?void 0:$.cwd)==null?void 0:Q.trim())??"";!Oe||d.has(Oe)||wu(Oe)||(d.add(Oe),l.push({value:Oe,label:Ml(Oe,Y.value[he.projectName])}))}const _=Ct.value.trim();return _&&!d.has(_)&&l.unshift({value:_,label:Ml(_)}),l}),gi=X(()=>{const l=Ct.value.trim();return l?vn.value[l]===!0:!1}),qy=X(()=>{var d,_;const l={};for(const $ of U.value){const Q=Vi($.projectName,((_=(d=$.threads[0])==null?void 0:d.cwd)==null?void 0:_.trim())??"");l[$.projectName]=Q?vn.value[Q]===!0:!1}return l}),Gu=X(()=>{const l=fo.value.trim(),d=[...po.value];return l&&!d.some(_=>_.value===l)&&d.unshift({value:l,label:l}),d}),op=X(()=>{const l=fo.value.trim();if(!l)return"";const d=Gu.value.find(_=>_.value===l);return(d==null?void 0:d.label)??l}),rp=X(()=>Fr.value.trim()),ap=X(()=>{const l=qn.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),zy=X(()=>ap.value&&rp.value.trim().length>0&&!$n.value),sp=X(()=>{const l=os.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),ip=X(()=>ns.value.trim()?no.value==="create"?sp.value:Es.value.trim().length>0:!1),jl=X(()=>{const l=nt(as.value).trim();return l||Fr.value.trim()}),Hy=X(()=>to.value?"Creating…":"Create"),Wy=X(()=>Kn.value?no.value==="clone"?s("Cloning…"):s("Creating…"):no.value==="clone"?s("Clone repository"):s("Create project")),Vy=X(()=>{const l=Fr.value.trim(),d=fi.value.trim();return!!(l&&d&&l!==d)}),lp=X(()=>{const l=[];Vy.value&&l.push({key:`parent:${fi.value}`,name:"..",path:fi.value,kind:"parent"});for(const d of Cl.value)l.push({key:`directory:${d.path}`,name:d.name,path:d.path,kind:"directory"});return l}),Ku=X(()=>{const l=oa.value.trim().toLowerCase();return l?lp.value.filter(d=>d.kind==="parent"||d.name.toLowerCase().includes(l)):lp.value}),Wi=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,Gy=X(()=>s(A[Ra.value].label)),Ky=X(()=>{const l=A[Ra.value],d=Math.max(0,pi.value-ra.value-Il.value);return{"--chat-column-max":l.columnMax,"--chat-card-max":l.cardMax,"--visual-viewport-height":ra.value>0?`${ra.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Il.value)}px`,"--virtual-keyboard-inset":`${d}px`}}),Yy=X(()=>{if(!br.value.configured)return s("Not configured");const l=br.value.active?s("Online"):s("Configured (offline)"),d=br.value.allowAllUsers?s("allow all users"):`${br.value.allowedUsers} ${s("allowed user(s)")}`,_=`${br.value.mappedChats} ${s("chat(s)")}, ${br.value.mappedThreads} ${s("thread(s)")}, ${d}`,$=br.value.lastError?`, ${s("error")}: ${br.value.lastError}`:"";return`${l}, ${_}${$}`});Cs(()=>{var l,d;document.addEventListener("pointerdown",kp),window.addEventListener("keydown",wp),document.addEventListener("visibilitychange",Cp),window.addEventListener("pageshow",Sp),window.addEventListener("focus",_p),window.addEventListener("resize",yi),(l=window.visualViewport)==null||l.addEventListener("resize",yi),(d=window.visualViewport)==null||d.addEventListener("scroll",yi),yi(),$c(),Wi==null||Wi.addEventListener("change",$c),Bo=ce(_=>{Sr.value&&Sr.value.refreshFromNotification(_)}),dr=ce(_=>{_==="remoteControl/status/changed"&&As({force:!0})}),h0(),Fb(),ri(),Xy(),Os(),aa(),up(),Yu(),cd(),sb(),ii()}),tt(_l,(l,d)=>{l.forEach((_,$)=>{if(_===d[$])return;const Q=_.trim();Q&&_r(Q)})}),tt(Ln,l=>{Rn&&(Rn.disconnect(),Rn=null),typeof ResizeObserver<"u"&&(Rn=new ResizeObserver(rr),l&&Rn.observe(l)),rr()},{immediate:!0}),yc(()=>{var l,d;document.removeEventListener("pointerdown",kp),window.removeEventListener("keydown",wp),document.removeEventListener("visibilitychange",Cp),window.removeEventListener("pageshow",Sp),window.removeEventListener("focus",_p),window.removeEventListener("resize",yi),(l=window.visualViewport)==null||l.removeEventListener("resize",yi),(d=window.visualViewport)==null||d.removeEventListener("scroll",yi),Wi==null||Wi.removeEventListener("change",$c),Rn&&(Rn.disconnect(),Rn=null),Na!==null&&(window.clearInterval(Na),Na=null),ho&&(clearTimeout(ho),ho=null),Pc(),So(),Bo&&(Bo(),Bo=null),dr&&(dr(),dr=null),Ta&&(clearTimeout(Ta),Ta=null)});function yi(){var l,d;typeof window>"u"||(pi.value=Math.max(pi.value,window.innerHeight),ra.value=((l=window.visualViewport)==null?void 0:l.height)??window.innerHeight,Il.value=((d=window.visualViewport)==null?void 0:d.offsetTop)??0)}tt(Mn,l=>{const d=l.trim();if(ho&&(clearTimeout(ho),ho=null),!d){lr.value=null;return}ho=setTimeout(()=>{ES(d,1e3).then(_=>{Mn.value.trim()===d&&(lr.value=_.threadIds)}).catch(()=>{Mn.value.trim()===d&&(lr.value=null)})},220)}),tt(Ls,l=>{l||(ar.value=!1)}),tt(Bn,()=>{if(typeof window>"u")return;if(!Bn.value.some(d=>d.quotaStatus==="loading")){Na!==null&&(window.clearInterval(Na),Na=null);return}Na===null&&(Na=window.setInterval(()=>{c||(c=!0,Ll({silent:!0}).finally(()=>{c=!1}))},1500))},{deep:!0}),tt(Le,()=>{cp().then(l=>{l&&V({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function cp(){if(!m||S||bn.value!=="codex"||Bn.value.length>0||Le.value.length===0)return!1;S=!0;const l=JSON.stringify(Bn.value.map(_=>_.accountId).sort());try{const _=await bm();Bn.value=_.accounts}catch{await Ll({silent:!0})}const d=JSON.stringify(Bn.value.map(_=>_.accountId).sort());return l!==d}function Jy(){$e({force:!0})}function Qy(l){l&&Ce(l,{silent:!0,force:!0})}async function Yu(){try{br.value=await nx()}catch(l){const d=l instanceof Error?l.message:"Failed to load Telegram status";br.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:d}}}async function up(){try{const l=await tx();ke.value=l.botToken,ot.value=l.allowedUserIds.map(d=>String(d)).join(`
81
81
  `),Pt.value=""}catch(l){Pt.value=l instanceof Error?l.message:"Failed to load Telegram configuration"}}async function Xy(){const l=await lx();$a.value=l.dismissed!==!0}function Zy(l){const d=l.split(/[\n,]/).map(Q=>Q.trim().replace(/^(telegram|tg):/i,"").trim()).filter(Boolean),_=d.includes("*"),$=Array.from(new Set(d.filter(Q=>/^-?\d+$/.test(Q)).map(Q=>Number.parseInt(Q,10))));return _?["*",...$]:$}async function ew(){const l=ke.value.trim(),d=Zy(ot.value);if(!l){Pt.value=s("Telegram bot token is required.");return}if(d.length===0){Pt.value=s("At least one allowed Telegram user ID or * is required.");return}Mo.value=!0,Pt.value="";try{await ex(l,d),ot.value=d.map(_=>String(_)).join(`
82
82
  `),await Promise.all([up(),Yu()]),window.alert(s("Telegram bot configured. Only allowlisted Telegram users can use the bridge."))}catch(_){Pt.value=_ instanceof Error?_.message:s("Failed to connect Telegram bot"),Yu()}finally{Mo.value=!1}}function tw(){Hn.value=!Hn.value,Hn.value?Gt(()=>{var l;return(l=Rr.value)==null?void 0:l.focus()}):Mn.value=""}function nw(){var l;Mn.value="",(l=Rr.value)==null||l.focus()}function Ju(){return Wa.value?Wa.value:typeof document>"u"?null:document.querySelector(".mobile-drawer .sidebar-scrollable, .sidebar-scrollable")}function ow(l){if(Mt.value||O)return;const d=l==null?void 0:l.currentTarget,_=d instanceof HTMLElement?d:Ju();cr=(_==null?void 0:_.scrollTop)??cr}function rw(){const l=++E,d=cr,_=90;O=!0;const $=()=>{l===E&&(cr=d,O=!1)},Q=he=>{if(l!==E)return;if(Mt.value){$();return}const Oe=Ju();if(Oe&&(Oe.scrollTop=d,Math.abs(Oe.scrollTop-d)<=1||he>=_)){$();return}if(he>=_||typeof window>"u"){$();return}window.requestAnimationFrame(()=>Q(he+1))};Gt(()=>Q(0))}function aw(l){l.key==="Escape"&&(Hn.value=!1,Mn.value="")}function sw(l){l&&(Tt.name==="thread"&&L.value===l||(zt.push({name:"thread",params:{threadId:l}}),Et.value&&yo(!0)))}function iw(l){Tt.name==="automations"&&se.value!==l&&zt.replace({name:"automations",query:l?{automationId:l}:{}})}async function lw(l){var d;Mt.value&&(yo(!1),await Gt()),(d=hn.value)==null||d.openAutomationEditorFromPanel(l)}async function cw(){var l;Mt.value&&(yo(!1),await Gt()),(l=hn.value)==null||l.openAutomationCreatorFromPanel()}function uw(){var l;Tt.name==="automations"&&((l=ga.value)==null||l.loadAutomations())}async function dw(l){l&&ge.value===l&&await Hb()}function fw(l){return l.length>8?l.slice(-8):l}function dp(l){const d=[l.planType||s("unknown")];return l.authMode&&d.unshift(l.authMode),d.join(" · ")}function pw(l){if(!l)return!1;const d=l.toLowerCase();return d.includes("payment required")||/\b402\b/.test(d)}function xc(l){return l.unavailableReason==="payment_required"||pw(l.quotaError)}function hw(l){return Go.value||vo.value||Ko.value||Un.value||Or.value.length>0||l.isActive&&Or.value!==l.storageId&&Hi.value}function Qu(l){return Yo.value===l.storageId}function mw(l){return yr.value===l.storageId||Qu(l)}function vw(l){return xc(l)?s("Unavailable"):l.isActive?s("Active"):vo.value?s("Switching…"):s("Switch")}function gw(l){return Or.value===l.storageId?s("Removing…"):Qu(l)?s("Click again to remove"):s("Remove")}function yw(l){yr.value=l}function ww(l){yr.value===l&&(yr.value=""),Or.value!==l&&Yo.value===l&&(Yo.value="")}function bw(l){const d=l.quotaSnapshot;if(!d)return null;const _=[d==null?void 0:d.primary,d==null?void 0:d.secondary].filter(he=>he!==null),$=_.find(he=>he.windowMinutes===7*24*60);if($)return $;const Q=_.filter(he=>typeof he.windowMinutes=="number"&&he.windowMinutes>=7*24*60).sort((he,Oe)=>(he.windowMinutes??0)-(Oe.windowMinutes??0))[0]??null;return Q||(d.secondary??null)}function Tw(l){if(typeof l!="number"||!Number.isFinite(l))return"";const d=new Date(l*1e3);return`${d.getMonth()+1}月${d.getDate()}日`}function fp(l){var he,Oe;if(xc(l))return l.quotaError||s("402 Payment Required");const d=l.quotaSnapshot,_=bw(l),$=(d==null?void 0:d.primary)??(d==null?void 0:d.secondary)??null,Q=_??$;if(Q){const rn=Math.max(0,Math.min(100,100-Math.round(Q.usedPercent))),Xo=Tw(Q.resetsAt);return Xo?`${rn}% ${s("weekly remaining")} · ${Xo}`:`${rn}% ${s("weekly remaining")}`}return(he=d==null?void 0:d.credits)!=null&&he.unlimited?s("Unlimited credits"):(Oe=d==null?void 0:d.credits)!=null&&Oe.hasCredits&&d.credits.balance?`${d.credits.balance} ${s("credits")}`:l.quotaStatus==="loading"?s("Loading quota…"):l.quotaStatus==="error"?l.quotaError||s("Quota unavailable"):l.quotaStatus==="ready"||l.quotaStatus==="idle"?s("Quota unavailable"):s("Fetching account details…")}function kw(l){return[l.email||s("Account"),dp(l),xc(l)?s("Unavailable account"):null,fp(l),`${s("Workspace")} ${l.accountId}`].filter(Boolean).join(`
83
83
  `)}async function Ll(l={}){try{const d=await xx();Bn.value=d.accounts,d.accounts.some(_=>_.storageId===yr.value)||(yr.value=""),d.accounts.some(_=>_.storageId===Yo.value)||(Yo.value="")}catch(d){if(l.silent===!0)return;wn.value=d instanceof Error?d.message:s("Failed to load accounts")}}async function Cw(){if(!(Go.value||vo.value||Ko.value||Un.value)){wn.value="",yr.value="",Yo.value="",Go.value=!0;try{const l=await bm();Bn.value=l.accounts,So(),Pn(),V({includeSelectedThreadMessages:!0})}catch(l){wn.value=l instanceof Error?l.message:s("Failed to refresh accounts")}finally{Go.value=!1}}}async function Sw(l){if(!(vo.value||Go.value||Ko.value||Un.value)){if(Hi.value){wn.value=s("Finish the current turn and pending requests before switching accounts.");return}wn.value="",yr.value="",Yo.value="",vo.value=!0;try{const d=await Px(l);Bn.value=Bn.value.map(_=>_.storageId===l?d:{..._,isActive:!1}),So(),Pn(),V({includeSelectedThreadMessages:!0}),Ll({silent:!0})}catch(d){wn.value=d instanceof Error?d.message:s("Failed to switch account")}finally{vo.value=!1}}}async function _w(){var l;if(!(Go.value||vo.value||Ko.value||Un.value)){wn.value="",Nr.value="",Ko.value=!0;try{const d=await Ax();Aa.value=d,Za.value=!0,window.open(d,"_blank","noopener,noreferrer"),await Gt(),(l=ci.value)==null||l.focus()}catch(d){wn.value=d instanceof Error?d.message:s("Failed to start Codex login")}finally{Ko.value=!1}}}function Xu(){Un.value||(Za.value=!1,Nr.value="")}async function xw(){const l=Nr.value.trim();l&&await Aw(l)}async function Aw(l){if(!(Un.value||l.length===0)){wn.value="",Un.value=!0;try{const d=await Ix(l);Bn.value=d.accounts,Aa.value="",Nr.value="",Za.value=!1,So(),Pn(),V({includeSelectedThreadMessages:!0})}catch(d){wn.value=d instanceof Error?d.message:s("Failed to complete Codex login")}finally{Un.value=!1}}}async function Iw(l){if(Go.value||vo.value||Ko.value||Un.value||Or.value.length>0)return;const d=Bn.value.find($=>$.storageId===l)??null;if(!d)return;if(Yo.value!==l){Yo.value=l;return}if(d.isActive&&Hi.value){wn.value=s("Finish the current turn and pending requests before removing the active account.");return}const _=d.isActive;wn.value="",Yo.value="",Or.value=l;try{const $=await Rx(l);Bn.value=$.accounts,So(),Pn(),_&&V({includeSelectedThreadMessages:!0}),Ll({silent:!0})}catch($){wn.value=$ instanceof Error?$.message:s("Failed to remove account")}finally{Or.value=""}}function Pw(l){de(l)}function Rw(l){V({includeSelectedThreadMessages:!1,forceThreadRefresh:!0})}async function Ew(l){const d=await Fe(l);d&&(D.value?await zt.replace({name:"thread",params:{threadId:d}}):await zt.push({name:"thread",params:{threadId:d}}),Et.value&&yo(!0))}function pp(l){const d=l.trim().replace(/\\/gu,"/");return d?d.includes("/.codex/worktrees/")||d.includes("/.git/worktrees/"):!1}function Vi(l,d=""){var he,Oe,rn;const _=U.value.find(Xo=>Xo.projectName===l);if(!_)return np(l)||d.trim();const $=_.threads.find(Xo=>!pp(Xo.cwd));return(((he=$==null?void 0:$.cwd)==null?void 0:he.trim())??((rn=(Oe=_.threads[0])==null?void 0:Oe.cwd)==null?void 0:rn.trim())??"")||np(l)||d.trim()}function Mw(l){var $,Q;const d=U.value.find(he=>he.projectName===l),_=Vi(l,((Q=($=d==null?void 0:d.threads[0])==null?void 0:$.cwd)==null?void 0:Q.trim())??"");_&&(Ct.value=_),Et.value&&yo(!0),!D.value&&zt.push({name:"home"})}function $w(l){var _;let d="";for(const $ of U.value){const Q=$.threads.find(he=>he.id===l);if((_=Q==null?void 0:Q.cwd)!=null&&_.trim()){d=Q.cwd.trim();break}}!d||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(d)}`,"_blank","noopener,noreferrer")}function Ac(l){var _,$;const d=U.value.find(Q=>Q.projectName===l);return Vi(l,(($=(_=d==null?void 0:d.threads[0])==null?void 0:_.cwd)==null?void 0:$.trim())??"")}const hp=X(()=>Object.fromEntries(U.value.map(l=>[l.projectName,Ac(l.projectName).trim()]).filter(([,l])=>l.length>0)));function jw(l){return(Y.value[l]??l).trim()||l}function Lw(l){return jw(l).replace(/[\\/]+/gu,"-").replace(/[\u0000-\u001f]+/gu,"").trim()||"worktree"}function Nw(l){const d=Ac(l);!d||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(d)}`,"_blank","noopener,noreferrer")}async function Ow(l){const d=Ac(l);await gp(d)}async function Dw(l){const d=Fw(l);await gp(d)}function Fw(l){var d;for(const _ of U.value){const $=_.threads.find(Q=>Q.id===l);if((d=$==null?void 0:$.cwd)!=null&&d.trim())return $.cwd.trim()}return""}function mp(l){if(!Number.isFinite(l)||l<=0)return"0 B";const d=["B","KB","MB","GB"];let _=l,$=0;for(;_>=1024&&$<d.length-1;)_/=1024,$+=1;return`${_>=10||$===0?_.toFixed(0):_.toFixed(1)} ${d[$]}`}function Bw(l,d){const _=URL.createObjectURL(l),$=document.createElement("a");$.href=_,$.download=d,document.body.appendChild($),$.click(),document.body.removeChild($),window.setTimeout(()=>URL.revokeObjectURL(_),3e4)}async function Uw(l,d){const $={files:[new File([l],d,{type:l.type||"application/zip"})],title:d};if(!(typeof navigator<"u"&&typeof navigator.share=="function"&&(typeof navigator.canShare!="function"||navigator.canShare($))))throw new Error("File sharing is not supported in this browser.");await navigator.share($)}function vp(){_t.value.phase!=="exporting"&&(_t.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""})}function qw(){const{blob:l,fileName:d}=_t.value;!l||!d||(_t.value={..._t.value,error:""},Bw(l,d))}async function zw(){const{blob:l,fileName:d}=_t.value;if(!(!l||!d))try{_t.value={..._t.value,error:""},await Uw(l,d)}catch(_){if(_ instanceof DOMException&&_.name==="AbortError")return;const $=_ instanceof Error?_.message:"",Q=_ instanceof DOMException&&_.name==="NotAllowedError"||/permission denied|notallowed|not allowed|gesture/iu.test($);_t.value={..._t.value,error:Q?s("This browser blocked sharing the ZIP. Use Download instead."):$||s("Failed to share project. Use Download instead.")}}}async function gp(l){if(!(!l||typeof document>"u")){_t.value={phase:"exporting",loaded:0,total:null,blob:null,fileName:"",error:""};try{const{blob:d,fileName:_}=await Hx(l,({loaded:$,total:Q})=>{_t.value={..._t.value,phase:"exporting",loaded:$,total:Q}});_t.value={phase:"ready",loaded:d.size,total:d.size,blob:d,fileName:_,error:""}}catch(d){if(_t.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""},d instanceof DOMException&&d.name==="AbortError")return;const _=d instanceof Error?d.message:"Failed to export project.";window.alert(_)}}}async function Hw(l){const d=Ac(l);if(!d||typeof window>"u"||(await Ic(d),vn.value[d]!==!0))return;const _=`${Lw(l)}-`,$=window.prompt("New worktree folder name",_);if($===null)return;const Q=$.trim();if(Q){if(Q.includes("/")||Q.includes("\\")||Q==="."||Q===".."){window.alert("Worktree name must be a single folder name.");return}try{const he=await jx(d,Q),Oe=await zc(he.cwd,{createIfMissing:!1,label:""});if(!Oe)return;Ct.value=Oe,Nn.value="local",jn($l(Oe)),await Os(),await aa(),Et.value&&yo(!0),D.value||await zt.push({name:"home"})}catch(he){const Oe=he instanceof Error?he.message:"Failed to create worktree.";window.alert(Oe)}}}function Ww(){var _,$,Q;const l=ue.value;if(!l)return"";const d=((_=l.projectName)==null?void 0:_.trim())??"";return d?Vi(d,((Q=l.cwd)==null?void 0:Q.trim())??""):(($=l.cwd)==null?void 0:$.trim())??""}function Zu(){const l=Ww();l&&(Ct.value=l),Nn.value="local",Et.value&&yo(!0),!D.value&&zt.push({name:"home"})}function Vw(){Ct.value="",Nn.value="local",Et.value&&yo(!0),!D.value&&zt.push({name:"home"})}async function Ic(l){const d=l.trim();if(!d||Object.prototype.hasOwnProperty.call(vn.value,d))return;const _=zo.get(d);if(_){const he=await _;Object.prototype.hasOwnProperty.call(vn.value,d)||(vn.value={...vn.value,[d]:he});return}const $=Ox(d).then(he=>he.isGitRepo).catch(()=>!1).finally(()=>{zo.delete(d)});zo.set(d,$);const Q=await $;Object.prototype.hasOwnProperty.call(vn.value,d)||(vn.value={...vn.value,[d]:Q})}function Gw(l){Kr(l.projectName,l.displayName)}function Kw(l){ze(l.threadId,l.title)}async function Yw(l){await nr(l),await Os(),aa()}function Jw(l){un(l.projectName,l.toIndex)}function Qw(l){var $,Q;const d=U.value.find(he=>he.projectName===l),_=Vi(l,((Q=($=d==null?void 0:d.threads[0])==null?void 0:$.cwd)==null?void 0:Q.trim())??"");Ic(_)}function yp(l){Xw(l)}async function Xw(l){var $;const d=await lo(l),_=(($=l.followUpMessageText)==null?void 0:$.trim())??"";if(!(!d||!_||D.value))try{await dt(_,[],[],"steer",[])}catch{}}async function Zw(l){const d=await bt(l.threadId,l.turnIndex);d&&(await zt.push({name:"thread",params:{threadId:d}}),ge.value!==d&&await le(d),Et.value&&yo(!0))}function yo(l){var d;if(Mt.value!==l){if(l){const _=(d=Ju())==null?void 0:d.scrollTop;typeof _=="number"&&(_>0||cr===0)&&(cr=_)}Mt.value=l,u0(l),l||rw()}}function wp(l){if(l.defaultPrevented)return;if(l.key==="Escape"&&Ht.value){Ht.value=!1;return}if(!l.ctrlKey&&!l.metaKey||l.shiftKey||l.altKey)return;const d=l.key.toLowerCase();if(d==="b"){if(!(Cr()?l.metaKey&&!l.ctrlKey:l.ctrlKey&&!l.metaKey))return;l.preventDefault(),yo(!Mt.value);return}if(d==="j"&&Tt.name==="thread"&&ge.value){l.preventDefault(),bp();return}d==="j"&&D.value&&_n.value&&(l.preventDefault(),bp())}function bp(){vi.value&&(Et.value&&!Jn.value&&(Jn.value=!0),Et.value||(Ao.value=!1),Ot.value=Ot.value==="terminal"?"git":"terminal",Ot.value!=="terminal"&&bi())}function wi(l){Ot.value=l,xo.value=!1,Et.value||(Ao.value=!1),Et.value&&(Jn.value=!0),l!=="terminal"&&bi()}function eb(l){const d=Zn.value.find(_=>_.path===l.path);if(d)_o.value=d.key;else{const _={key:`preview-${Date.now()}`,path:l.path,label:l.label};Zn.value=[...Zn.value,_],_o.value=_.key}wi("preview")}function tb(l){Zn.value.some(d=>d.key===l)&&(_o.value=l,wi("preview"))}function nb(l){const d=Zn.value.findIndex(Q=>Q.key===l);if(d<0)return;const _=Zn.value.filter(Q=>Q.key!==l);if(Zn.value=_,_o.value!==l)return;if(_.length===0){_o.value="",Ot.value="files";return}const $=_[Math.min(d,_.length-1)];_o.value=$.key}function Tp(){if(Et.value){Jn.value=!1;return}Ao.value=!0,xo.value=!1,bi()}function ob(){if(Et.value){Jn.value=!Jn.value;return}Ao.value=!Ao.value,Ao.value&&(xo.value=!1,bi())}function rb(){Ot.value="git",Et.value&&(Jn.value=!1),bi()}function ab(l){if(Uo.value=l,!l){ar.value=!1,Pc();return}ar.value=!0,Pc(),Er=setTimeout(()=>{Er=null,Ls.value||(ar.value=!1)},1500)}function bi(){Uo.value=!1,ar.value=!1,Pc()}function Pc(){Er&&(clearTimeout(Er),Er=null)}async function sb(){try{const l=await $S();kt.value=l.available,!l.available&&Ot.value==="terminal"&&(Ot.value="git",bi())}catch{kt.value=!1,Ot.value==="terminal"&&(Ot.value="git")}}function kp(l){var _,$;const d=l.target;if(d instanceof Node){if(Uo.value){const Q=d instanceof Element?d:d.parentElement;Q!=null&&Q.closest(".thread-terminal-panel")||bi()}Ht.value&&((_=ir.value)!=null&&_.contains(d)||($=Ho.value)!=null&&$.contains(d)||(dn=Date.now(),Ht.value=!1))}}function ib(l){var _,$;if(!Ht.value)return;const d=l.target;d instanceof Node&&((_=ir.value)!=null&&_.contains(d)||($=Ho.value)!=null&&$.contains(d)||(dn=Date.now(),Ht.value=!1))}function lb(){var l;(l=hn.value)==null||l.openRecycleBin()}function Cp(){if(!(typeof document>"u")&&Et.value){if(document.visibilityState==="hidden"){qi.value=Date.now(),xl.value=!1;return}ed()}}function Sp(l){l.persisted&&ed()}function _p(){Tt.name==="home"&&(Os(),aa()),ed()}function ed(){typeof window>"u"||typeof document>"u"||!Et.value||document.visibilityState!=="visible"||xl.value||qi.value===null||Date.now()-qi.value<A4||(xl.value=!0,qi.value=null,cb())}async function cb(){if(!Al.value){Al.value=!0;try{await V({includeSelectedThreadMessages:!0}),await dd()}finally{Al.value=!1}}}function xp(l){const d=l.text;Rc();const _=Ha.value,$=l.mode==="queue"&&_&&_.threadId===ge.value?_.queueIndex:void 0;if(Ha.value=null,D.value){m0(d,l.imageUrls,l.skills,l.fileAttachments);return}dt(d,l.imageUrls,l.skills,l.mode,l.fileAttachments,$)}function ub(l){const d=G.value.findIndex(he=>he.id===l),_=d>=0?G.value[d]:void 0,$=xr.value;if(!_||!$||$.hasUnsavedDraft()&&!window.confirm("Replace the current draft with this queued message for editing?"))return;Ha.value=ge.value?{threadId:ge.value,queueIndex:d}:null;const Q={text:_.text,imageUrls:[..._.imageUrls],fileAttachments:_.fileAttachments.map(he=>({...he})),skills:_.skills.map(he=>({...he}))};$.hydrateDraft(Q),K(l)}function Rc(){if(!Et.value||D.value)return;const l=()=>{var d;(d=Ar.value)==null||d.jumpToLatest()};l(),Gt(()=>{l(),!(typeof window>"u")&&window.requestAnimationFrame(()=>{l(),window.requestAnimationFrame(l)})})}function db(l){Ct.value=l.trim(),Xt.value=""}function fb(l){fo.value=l.trim()}function Ns(l){const d=_n.value.trim();return!l||d!==l?!1:Tt.name==="thread"||Tt.name==="home"&&gi.value}function Ap(){oe+=1,Ee+=1,Ve+=1,Dt+=1,eo.value=[],Ro.value=null,Sa.value=null,jr.value=null,_a.value=null,Vo.value=!1,Ja.value=!1,hr.value={addedLineCount:0,removedLineCount:0},mo.value=[],Zr.value={},mr.value="",vr.value="",Qa.value={},gr.value="",Is.value="",Lr.value="",Xa.value=!1}function Ip(l){const d=l.trim();if(!d){hr.value={addedLineCount:0,removedLineCount:0};return}const _=++Dt;o1(d,"unstaged").then($=>{_!==Dt||!Ns(d)||(hr.value={addedLineCount:$.addedLineCount,removedLineCount:$.removedLineCount})}).catch(()=>{_!==Dt||!Ns(d)||(hr.value={addedLineCount:0,removedLineCount:0})})}async function Nl(l){var $,Q,he;const d=l.trim();if(!d){Ap();return}const _=++oe;Xa.value=!0,Lr.value="";try{const Oe=await Nx(d);if(_!==oe||!Ns(d))return;eo.value=Oe.options,Ro.value=Oe.currentBranch,Sa.value=Oe.headSha,jr.value=Oe.headSubject,_a.value=Oe.headDate,Vo.value=Oe.detached,Ja.value=Oe.dirty,mo.value=Oe.changedFiles,Ip(d);const rn=(($=Oe.currentBranch)==null?void 0:$.trim())||((he=(Q=Oe.options[0])==null?void 0:Q.value)==null?void 0:he.trim())||"";rn&&Pp({branch:rn,includeResetHistory:!0})}catch{if(_!==oe||!Ns(d))return;eo.value=[],Ro.value=null,Sa.value=null,jr.value=null,_a.value=null,Vo.value=!1,Ja.value=!1,hr.value={addedLineCount:0,removedLineCount:0},mo.value=[]}finally{_===oe&&(Xa.value=!1)}}function pb(l){Ro.value=l.currentBranch,Sa.value=l.headSha,jr.value=l.headSubject,_a.value=l.headDate,Vo.value=l.detached,Ja.value=l.dirty,mo.value=l.changedFiles,Ip(_n.value)}function hb(l){if(ea.value)return;const d=l.trim();if(!d||d===(Ro.value??""))return;const _=_n.value.trim();_&&(ea.value=!0,Lr.value="",Dx(_,d).then($=>(Ro.value=$||d,Sa.value=null,jr.value=null,_a.value=null,Vo.value=!1,Wn.value=!1,Nl(_))).catch($=>{const Q=$ instanceof Error?$.message:"Failed to switch branch";Nl(_).finally(()=>{Lr.value=Q})}).finally(()=>{ea.value=!1}))}function mb(l){if(ea.value)return;const d=l.branch.trim(),_=l.sha.trim(),$=_n.value.trim();!d||!_||!$||(ea.value=!0,Lr.value="",Ux($,d,_).then(Q=>(pb(Q),Wn.value=!1,Nl($))).catch(Q=>{const he=Q instanceof Error?Q.message:"Failed to reset branch to commit";Nl($).finally(()=>{Lr.value=he})}).finally(()=>{ea.value=!1}))}function Pp(l){const d=(typeof l=="string"?l:l.branch).trim(),_=typeof l=="string"?!0:l.includeResetHistory!==!1,$=_n.value.trim(),Q=Tl(d,_);if(!d||!$||mr.value===Q||(vr.value="",Zr.value[Q]))return;const he=++Ee;mr.value=Q,Fx($,d,{includeResetHistory:_}).then(Oe=>{he!==Ee||!Ns($)||(Zr.value={...Zr.value,[Q]:Oe})}).catch(Oe=>{he!==Ee||!Ns($)||(vr.value=Oe instanceof Error?Oe.message:"Failed to load branch commits")}).finally(()=>{he===Ee&&mr.value===Q&&(mr.value="")})}function vb(l){const d=l.trim(),_=_n.value.trim();if(!d||!_||gr.value===d||(Is.value="",Qa.value[d]))return;const $=++Ve;gr.value=d,Bx(_,d).then(Q=>{$!==Ve||!Ns(_)||(Qa.value={...Qa.value,[d]:Q})}).catch(Q=>{$!==Ve||!Ns(_)||(Is.value=Q instanceof Error?Q.message:"Failed to load commit files")}).finally(()=>{$===Ve&&gr.value===d&&(gr.value="")})}function gb(l){const d=l.path.trim(),_=l.sha.trim();!d||!_||(Ca.value=d,pr.value=_,Wn.value=!0)}function yb(){Ca.value="",pr.value="",Wn.value=!Wn.value}function wb(){!Ca.value&&!pr.value||(Ca.value="",pr.value="",Wn.value=!1)}async function bb(){const l=await Mc();l&&(await aa(),ns.value=l,os.value=yn.value.trim()||"New Project (1)",Es.value="",La.value="",no.value="create",ja.value=!0,Gt(()=>{var d;return(d=rs.value)==null?void 0:d.focus()}))}function Ec(){Kn.value||(ja.value=!1,La.value="")}let td=!1,nd=!1;function Tb(){td=!0}function kb(){td&&(td=!1,Gi())}function Cb(){nd=!0}function Sb(){nd&&(nd=!1,Ec())}async function _b(){const l=ns.value.trim(),d=os.value.trim();if(!sp.value)throw new Error("Enter a single project folder name.");const _=$p(Mp(l,d));return _?zc(_,{createIfMissing:!0,label:""}):""}async function xb(){const l=ns.value.trim(),d=Es.value.trim();return d?Jx(d,l):""}async function od(){if(!(!ip.value||Kn.value)){La.value="",Kn.value=!0;try{const l=no.value==="clone"?await xb():await _b();if(!l)return;Ct.value=l,jn($l(l)),await Os(),await aa(),ja.value=!1}catch(l){La.value=l instanceof Error?l.message:"Failed to create or clone project."}finally{Kn.value=!1}}}function Ab(){Ib(kc.value)}function Ib(l){Ms.value||!l||(l.value="",l.click())}async function Pb(l,d,_){Ms.value=!0;try{const $=await Mc();if(!$)return;const Q=await d($);if(!Q.path)return;Ct.value=Q.path,jn($l(Q.path)),await Os(),await V({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await aa()}catch($){const Q=$ instanceof Error?$.message:_;window.alert(Q)}finally{Ms.value=!1,l&&(l.value="")}}async function Rb(l){var $;const d=l.target instanceof HTMLInputElement?l.target:null,_=(($=d==null?void 0:d.files)==null?void 0:$[0])??null;!_||Ms.value||await Pb(d,Q=>Wx(_,Q),"Failed to import project.")}async function Eb(){const l=Ct.value.trim()||await Mc();l&&(Qt.value=!1,Dr.value=!0,oa.value="",await Ds(l),$n.value||Gt(()=>{var d;return(d=di.value)==null?void 0:d.focus()}))}function Gi(){P+=1,Dr.value=!1,fn.value=!1,$n.value="",oa.value="",as.value="",Ol()}async function Mb(l){!l||fn.value||(oa.value="",await Ds(l))}function $b(){const l=Fr.value.trim();!Dr.value||!l||Ds(l)}function jb(){const l=jl.value;!Dr.value||!l||fn.value||Ds(l)}function Lb(){if(!Dr.value||fn.value||Br.value)return;const l=jl.value,d=Fr.value.trim();!l||l===d||Ds(l)}function Nb(){const l=jl.value,d=Fr.value.trim();if(l){if(l!==d){Ds(l);return}rd(l)}}async function rd(l=jl.value){const d=nt(l).trim();if(d){$n.value="",Br.value=!0;try{const _=await zc(d,{createIfMissing:!1,label:""});if(!_){$n.value="Failed to open the selected folder.";return}Ct.value=_,jn($l(_)),await Os(),await V({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await aa(),Gi()}catch(_){$n.value=_ instanceof Error?_.message:"Failed to open the selected folder."}finally{Br.value=!1}}}async function Ob(){if(Xt.value="",Qt.value){Ol();return}if(!Dr.value){const l=Ct.value.trim()||await Mc();if(!l||(Dr.value=!0,oa.value="",await Ds(l),$n.value))return}$n.value||(qn.value=yn.value,Qt.value=!0,Gt(()=>{var l;return(l=xa.value)==null?void 0:l.focus()}))}function Ol(){Xt.value="",qn.value="",Qt.value=!1}async function Rp(){const l=qn.value.trim();if(!l)return;if(Xt.value="",$n.value){Xt.value="Reload the current folder before creating a new one.";return}to.value=!0;const d=rp.value.trim(),_=$p(Mp(d,l));if(!_){Xt.value="Unable to determine where the new folder should be created.",to.value=!1;return}if(!ap.value){Xt.value="Enter a single folder name.",to.value=!1;return}try{const $=await Yx(_);if(!$){Xt.value="Failed to create the folder.";return}Xt.value="",oa.value="",await Ds($),Ol()}catch($){Xt.value=$ instanceof Error?$.message:"Failed to create folder."}finally{to.value=!1}}async function Db(){var d;if(typeof window>"u")return!1;const l=((d=new URLSearchParams(window.location.search).get("openProjectPath"))==null?void 0:d.trim())??"";if(!l)return!1;try{const _=await zc(l,{createIfMissing:!1,label:""});if(!_)return!1;Ct.value=_,jn($l(_)),await zt.replace({name:"home"}),await Os();const $=new URL(window.location.href);return $.searchParams.delete("openProjectPath"),window.history.replaceState({},"",$.toString()),!0}catch{return!1}}async function Mc(){const l=Ep();if(l)return l;try{const d=await Tm();if(d)return on.value=d,d}catch{}return""}async function aa(){const l=Ep();if(!l){yn.value="New Project (1)";return}try{const d=await Xx(l);yn.value=d.name||"New Project (1)"}catch{yn.value="New Project (1)"}}function Ep(){var _,$;const l=Ct.value.trim();if(l)return ll(l);const d=(($=(_=Vu.value[0])==null?void 0:_.value)==null?void 0:$.trim())??"";return d?ll(d):on.value.trim()}async function Fb(){try{on.value=await Tm()}catch{on.value=""}}async function Os(){try{const l=await el();gn.value={order:[...l.order],labels:{...l.labels},projectOrder:[...l.projectOrder]}}catch{gn.value={order:[],labels:{},projectOrder:[]}}}async function Ds(l){const d=++P,_=nt(l).trim();as.value=_,Fr.value=_,$n.value="",fn.value=!0;try{const $=await Vx(l,{showHidden:Sl.value});if(d!==P)return;as.value=$.path,Fr.value=$.path,fi.value=$.parentPath,Cl.value=$.entries}catch($){if(d!==P)return;$n.value=$ instanceof Error?$.message:"Failed to load local folders.",fi.value=ll(Fr.value),Cl.value=[],Ol()}finally{d===P&&(fn.value=!1)}}function Mp(l,d){const _=nt(l).trim(),$=nt(d).trim().replace(/^[\\/]+/u,"");if(!_||!$)return"";const Q=_.includes("\\")&&!_.includes("/")?"\\":"/";if(/^[a-zA-Z]:[\\/]?$/u.test(_))return`${_.slice(0,2)}${Q}${$}`;if(/^\/+$/u.test(_))return`/${$}`;const he=_.replace(/[\\/]+$/u,"");return he?`${he}${Q}${$}`:""}function $p(l){const d=nt(l).trim();if(!d)return"";const _=d.match(/^\\\\([^\\/]+)[\\/]+([^\\/]+)([\\/].*)?$/u);if(_){const[,Q,he,Oe=""]=_,rn=ad(Oe.split(/[\\/]+/u));return rn.length>0?`\\\\${Q}\\${he}\\${rn.join("\\")}`:`\\\\${Q}\\${he}`}const $=d.match(/^([a-zA-Z]:)([\\/].*)?$/u);if($){const[,Q,he=""]=$,Oe=d.includes("\\")&&!d.includes("/")?"\\":"/",rn=ad(he.split(/[\\/]+/u));return rn.length>0?`${Q}${Oe}${rn.join(Oe)}`:`${Q}${Oe}`}if(d.startsWith("/")){const Q=ad(d.split("/"));return Q.length>0?`/${Q.join("/")}`:"/"}return d}function ad(l){const d=[];for(const _ of l){const $=_.trim();if(!(!$||$===".")){if($===".."){d.length>0&&d.pop();continue}d.push($)}}return d}function Bb(l){pe(l.draggedId,l.targetId)}function jp(l){kn(Qo.value,l)}function Lp(l){Fo(l)}function Np(l){tr(l)}function Ub(){Yt()}const Dl=x("");let sd=null;tt(In,l=>{var d;l&&(l.text&&((d=xr.value)==null||d.hydrateDraft({text:l.text,imageUrls:l.imageUrls,fileAttachments:l.fileAttachments,skills:l.skills})),Dl.value=l.text?s("Stopped: message not submitted, restored to input."):s("Stopped: message not submitted."),sd&&clearTimeout(sd),sd=setTimeout(()=>{Dl.value=""},6e3),z(Qo.value))});function Op(l){var _,$;const d=ge.value.trim();switch(l){case"compact":d&&ie(d);break;case"review":if(!d)return;Ca.value="",pr.value="",Wn.value=!0;break;case"rename":d&&(($=hn.value)==null||$.openRenameThreadDialog(d,((_=ue.value)==null?void 0:_.title)??""));break;case"archive":d&&de(d);break;case"fork":d&&Fe(d);break;case"new":Zu();break;case"skills":B.value||zt.push({name:"skills"});break}}function qb(l){const d=l.turnId.trim();if(d.length>0){const _=[...ct.value].reverse().find($=>{var Q;return $.role==="user"&&(((Q=$.turnId)==null?void 0:Q.trim())??"")===d&&$.text.trim().length>0});_!=null&&_.text&&xr.value&&xr.value.appendTextToDraft(_.text)}or(l.turnId)}function zb(){D.value||!ge.value||(hi.value&&(Rt.value=hi.value.id),$t("default"),Rc(),dt("Implement",[],[],"steer",[],void 0,"default"))}async function Hb(){if(D.value||B.value||J.value||!ue.value||ct.value.length===0)return;const l=Wb();try{await Cy(l)}catch{}}function Wb(){var _,$,Q;const l=[],d=(($=(_=ue.value)==null?void 0:_.title)==null?void 0:$.trim())||"Untitled thread";l.push(`# ${Vb(d)}`),l.push(""),l.push(`- Exported: ${new Date().toISOString()}`),l.push(`- Thread ID: ${((Q=ue.value)==null?void 0:Q.id)??""}`),l.push(""),l.push("---"),l.push("");for(const he of ct.value){const Oe=he.role?he.role.toUpperCase():"MESSAGE";l.push(`## ${Oe}`),l.push("");const rn=he.text.trim();if(rn&&(l.push(rn),l.push("")),he.commandExecution&&(l.push("```text"),l.push(`command: ${he.commandExecution.command}`),l.push(`status: ${he.commandExecution.status}`),he.commandExecution.cwd&&l.push(`cwd: ${he.commandExecution.cwd}`),he.commandExecution.exitCode!==null&&l.push(`exitCode: ${he.commandExecution.exitCode}`),l.push(he.commandExecution.aggregatedOutput||"(no output)"),l.push("```"),l.push("")),he.fileAttachments&&he.fileAttachments.length>0){l.push("Attachments:");for(const Xo of he.fileAttachments)l.push(`- ${Xo.path}`);l.push("")}if(he.images&&he.images.length>0){l.push("Images:");for(const Xo of he.images)l.push(`- ${Xo}`);l.push("")}}return`${l.join(`