codex-mobile-re 0.1.112 → 0.1.113

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-Cb1IJ_NG.js","assets/sanitizeHtml-Bd3No2dT.js","assets/ThreadConversation-Ccm62p-Y.css","assets/ThreadTerminalPanel-CRA1VSKP.js","assets/ThreadTerminalPanel-O7IxAyfy.css","assets/ReviewPane-B-qMww8k.js","assets/ReviewPane-ZrWfZEd_.css","assets/DirectoryHub-BbqdG8Yo.js","assets/DirectoryHub-DmZLEiwB.css","assets/AutomationsPanel-D7JDy9_y.js","assets/AutomationsPanel-VRBbmMYW.css","assets/SettingsDialog-CW2-XQYY.js","assets/SettingsDialog-CfChVi0L.css","assets/RightGitPanel-DBNy_7HG.js","assets/RightGitPanel-BTq9Wdmr.css","assets/RightFilesPanel-TscoYCDr.js","assets/RightFilesPanel-l-aqQaW6.css","assets/RightFilePreview-BVfHIj4j.js","assets/RightFilePreview-BythLbi1.css","assets/ThreadPendingRequestPanel-CSjLyFZs.js","assets/ThreadPendingRequestPanel-BptJdqbc.css","assets/QueuedMessages-CPX5Rnub.js","assets/QueuedMessages-BM1najM7.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-B4NZvuHw.js","assets/sanitizeHtml-Bd3No2dT.js","assets/ThreadConversation-Ccm62p-Y.css","assets/ThreadTerminalPanel-BLHMQWJI.js","assets/ThreadTerminalPanel-O7IxAyfy.css","assets/ReviewPane-qS7hOyaM.js","assets/ReviewPane-ZrWfZEd_.css","assets/DirectoryHub-sS2h3U_D.js","assets/DirectoryHub-DmZLEiwB.css","assets/AutomationsPanel-DlBkLmKR.js","assets/AutomationsPanel-VRBbmMYW.css","assets/SettingsDialog-C4aE-PFC.js","assets/SettingsDialog-CfChVi0L.css","assets/RightGitPanel-K_jp1qHA.js","assets/RightGitPanel-BTq9Wdmr.css","assets/RightFilesPanel-B5AIrAU3.js","assets/RightFilesPanel-l-aqQaW6.css","assets/RightFilePreview-D1LmPrpY.js","assets/RightFilePreview-BythLbi1.css","assets/ThreadPendingRequestPanel-DNTrk7uR.js","assets/ThreadPendingRequestPanel-BptJdqbc.css","assets/QueuedMessages-D_o6pC9F.js","assets/QueuedMessages-BM1najM7.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-Sd} more item(s)`:"";return`${t}:
53
53
  ${n.join(`
54
54
  `)||"empty"}${r}`}catch(n){return`${t}: unavailable (${ey(_l(n))})`}}function FA(){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}`,Sm(window.localStorage,"localStorage"),Sm(window.sessionStorage,"sessionStorage")].join(`
55
- `)}function oi(e){const t=e.message.trim();if(!t)return;const n=Wi.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()};Wi.value=[o,...Wi.value].slice(0,MA)}function ty(e=Wi.value){var d;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.112",a="codex-mobile",s=e.slice(0,12).map((c,v)=>[`${v+1}. [${c.atIso}] ${c.kind}`,c.method?`${c.method}`:"",c.url??"",typeof c.status=="number"?`${c.status} ${c.statusText??""}`.trim():"",c.message].filter(Boolean).join(" | ")).join(`
55
+ `)}function oi(e){const t=e.message.trim();if(!t)return;const n=Wi.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()};Wi.value=[o,...Wi.value].slice(0,MA)}function ty(e=Wi.value){var d;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.113",a="codex-mobile",s=e.slice(0,12).map((c,v)=>[`${v+1}. [${c.atIso}] ${c.kind}`,c.method?`${c.method}`:"",c.url??"",typeof c.status=="number"?`${c.status} ${c.statusText??""}`.trim():"",c.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",FA(),"","Recent diagnostics",s||"No diagnostics captured.","","Visible page text",OA()].join(`
57
57
  `).slice(0,jA),l=`Codex Web feedback: ${ey((d=e[0])==null?void 0:d.message)}`;return`mailto:${Zg}?subject=${Tm(l)}&body=${Tm(i)}`}function BA(){typeof window>"u"||(window.location.href=ty())}function UA(){if(!(typeof window>"u")&&(bm||(bm=!0,window.addEventListener("error",e=>{oi({kind:"window-error",message:e.error?_l(e.error):e.message,url:e.filename||window.location.href})}),window.addEventListener("unhandledrejection",e=>{oi({kind:"unhandled-rejection",message:_l(e.reason),url:window.location.href})})),!Cd)){if(typeof window.fetch!="function"){oi({kind:"fetch-error",message:"Feedback diagnostics could not monitor fetch: window.fetch is unavailable",url:window.location.href});return}try{xd=window.fetch.bind(window),window.fetch=async(e,t)=>{const n=LA(e),o=NA(e,t);try{const r=await xd(e,t);return r.ok||oi({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 oi({kind:"fetch-error",message:_l(r),url:n,method:o}),r}},Cd=!0}catch(e){xd=null,Cd=!1;try{oi({kind:"fetch-error",message:`Feedback diagnostics could not monitor fetch: ${_l(e)}`,url:window.location.href})}catch{}}}}function ny(){const e=K(()=>Wi.value.length>0);function t(n,o){oi({kind:"visible-error",message:n,url:o||(typeof window>"u"?void 0:window.location.href)})}return{diagnostics:Wi,hasFeedbackDiagnostics:e,recordVisibleFailure:t,openFeedbackMail:BA,buildFeedbackMailto:ty,feedbackMailtoBase:$A}}const oy="codex-web-local.recycle-bin.v1";function ry(){if(typeof window>"u")return[];try{const e=window.localStorage.getItem(oy);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 Cm(e){if(!(typeof window>"u"))try{window.localStorage.setItem(oy,JSON.stringify(e))}catch{}}const Ea=S(ry());function zA(){function e(){Ea.value=ry()}function t(r){Ea.value=[{...r,archivedAtIso:new Date().toISOString()},...Ea.value.filter(a=>a.id!==r.id)],Cm(Ea.value)}function n(r){Ea.value=Ea.value.filter(a=>a.id!==r),Cm(Ea.value)}async function o(r){if(!Ea.value.some(a=>a.id===r))return{ok:!1,error:"Thread is not in the recycle bin"};try{return await kk(r),n(r),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to restore thread"}}}return{records:Ea,loadRecords:e,recordArchivedThread:t,removeArchivedRecord:n,restoreArchivedThread:o}}const HA=["title","aria-label","disabled"],qA={key:1,class:"composer-dropdown-value"},WA={key:0,class:"composer-dropdown-search-wrap"},GA=["placeholder","onKeydown"],VA={class:"composer-dropdown-options",role:"listbox"},KA=["onClick"],YA={key:0,class:"composer-dropdown-empty"},JA=hn({__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=S(null),a=S(null),s=S(null),i=S(null),l=S(!1),d=S(""),c=S({});let v=!1;const f=K(()=>{var xe;const ne=n.options.find($e=>$e.value===n.modelValue);return ne?ne.label:((xe=n.placeholder)==null?void 0:xe.trim())||""}),b=K(()=>n.openDirection??"down"),y=K(()=>n.menuAlign??"start"),P=K(()=>n.iconOnly===!0),B=K(()=>n.enableSearch===!0),L=K(()=>n.variant==="pill"?"composer-dropdown-trigger--pill":""),j=K(()=>{var ne;return((ne=n.searchPlaceholder)==null?void 0:ne.trim())||"Quick search projects"}),U=K(()=>{var ne;return((ne=n.emptyLabel)==null?void 0:ne.trim())||"No results"}),H=K(()=>{var ne;return f.value||((ne=n.placeholder)==null?void 0:ne.trim())||"Select option"}),be=K(()=>{const ne=d.value.trim().toLowerCase();return ne?n.options.filter(xe=>xe.label.toLowerCase().includes(ne)||xe.value.toLowerCase().includes(ne)):n.options});function le(){n.disabled||(l.value=!l.value)}function W(ne,xe,$e){return Math.min($e,Math.max(xe,ne))}function he(){var oe,ue,Ee,Be;if(!l.value)return;const ne=r.value;if(!ne||typeof window>"u")return;const xe=ne.getBoundingClientRect(),$e=window.innerWidth,te=window.innerHeight,de=8,Le=8,Ae=Math.max(0,$e-de*2),Fe=((oe=s.value)==null?void 0:oe.offsetWidth)??((ue=a.value)==null?void 0:ue.offsetWidth)??224,Ke=((Ee=s.value)==null?void 0:Ee.offsetHeight)??((Be=a.value)==null?void 0:Be.offsetHeight)??0,lt=Math.min(Fe,Ae),Ze=Math.max(de,$e-lt-de),ut=y.value==="end"?xe.right-lt:xe.left,fe=W(ut,de,Ze);let N=b.value==="up"?xe.top-Ke-Le:xe.bottom+Le;Ke>0&&N+Ke>te-de&&(N=te-Ke-de),N=Math.max(de,N),c.value={position:"fixed",left:`${fe}px`,right:"auto",top:`${N}px`,bottom:"auto",width:`${lt}px`}}function Se(){v||typeof window>"u"||(window.addEventListener("resize",he),window.addEventListener("scroll",he,!0),v=!0)}function Pe(){!v||typeof window>"u"||(window.removeEventListener("resize",he),window.removeEventListener("scroll",he,!0),v=!1)}function ge(ne){o("update:modelValue",ne),l.value=!1,d.value=""}function Y(){if(d.value.length>0){d.value="";return}l.value=!1}function pe(ne){if(!l.value)return;const xe=r.value;if(!xe)return;const $e=ne.target;$e instanceof Node&&(xe.contains($e)||(l.value=!1,d.value=""))}return tt(l,ne=>{if(!ne){Pe(),c.value={};return}Se(),Nt(()=>{var xe;he(),window.requestAnimationFrame(he),B.value&&((xe=i.value)==null||xe.focus())})}),pi(()=>{window.addEventListener("pointerdown",pe)}),_s(()=>{window.removeEventListener("pointerdown",pe),Pe()}),(ne,xe)=>(_(),F("div",{ref_key:"rootRef",ref:r,class:"composer-dropdown"},[w("button",{class:at(["composer-dropdown-trigger",L.value]),type:"button",title:H.value,"aria-label":H.value,disabled:e.disabled,onClick:le},[e.selectedPrefixIcon?(_(),Qe(_f(e.selectedPrefixIcon),{key:0,class:"composer-dropdown-prefix-icon"})):ve("",!0),P.value?ve("",!0):(_(),F("span",qA,D(f.value),1)),Oe(Cs,{class:"composer-dropdown-chevron"})],10,HA),l.value?(_(),F("div",{key:0,ref_key:"menuWrapRef",ref:a,class:at(["composer-dropdown-menu-wrap",{"composer-dropdown-menu-wrap-up":b.value==="up","composer-dropdown-menu-wrap-down":b.value==="down"}]),style:er(c.value)},[w("div",{ref_key:"menuRef",ref:s,class:"composer-dropdown-menu"},[B.value?(_(),F("div",WA,[xn(w("input",{ref_key:"searchInputRef",ref:i,"onUpdate:modelValue":xe[0]||(xe[0]=$e=>d.value=$e),class:"composer-dropdown-search-input",type:"text",placeholder:j.value,onKeydown:Ao(gt(Y,["prevent"]),["esc"])},null,40,GA),[[Nn,d.value]])])):ve("",!0),w("ul",VA,[(_(!0),F(ot,null,Zt(be.value,$e=>(_(),F("li",{key:$e.value},[w("button",{class:at(["composer-dropdown-option",{"is-selected":$e.value===e.modelValue}]),type:"button",onClick:te=>ge($e.value)},D($e.label),11,KA)]))),128)),be.value.length===0?(_(),F("li",YA,D(U.value),1)):ve("",!0)])],512)],6)):ve("",!0)],512))}}),ci=It(JA,[["__scopeId","data-v-48e2516e"]]),QA={},XA={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function ZA(e,t){return _(),F("svg",XA,[...t[0]||(t[0]=[w("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M18 6L6 18M6 6l12 12"},null,-1)])])}const of=It(QA,[["render",ZA]]),e_=["aria-label","onKeydown"],t_={class:"app-dialog-header"},n_={class:"app-dialog-title-wrap"},o_={class:"app-dialog-title"},r_={key:0,class:"app-dialog-subtitle"},a_=["aria-label","title"],s_={class:"app-dialog-body"},i_={key:0,class:"app-dialog-footer"},l_=hn({__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}=da();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}),_s(()=>{typeof window>"u"||window.removeEventListener("keydown",s)}),(i,l)=>(_(),Qe(Ki,{to:"body"},[e.open?(_(),F("div",{key:0,class:"app-dialog-overlay",onClick:gt(a,["self"])},[w("div",{class:at(["app-dialog-panel",`app-dialog-panel--${e.size}`]),role:"dialog","aria-modal":"true","aria-label":e.ariaLabel||e.title,onKeydown:Ao(gt(a,["prevent"]),["esc"])},[w("div",t_,[w("div",n_,[w("h3",o_,D(e.title),1),e.subtitle?(_(),F("p",r_,D(e.subtitle),1)):ve("",!0)]),w("button",{class:"app-dialog-close",type:"button","aria-label":h(r)("Close"),title:h(r)("Close"),onClick:a},[Oe(of,{class:"app-dialog-close-icon"})],8,a_)]),w("div",s_,[_o(i.$slots,"default",{},void 0)]),i.$slots.footer?(_(),F("div",i_,[_o(i.$slots,"footer",{},void 0)])):ve("",!0)],42,e_)])):ve("",!0)]))}}),kd=It(l_,[["__scopeId","data-v-0c988f32"]]),u_={key:0,class:"sidebar-menu-row-left"},c_={class:"sidebar-menu-row-main"},d_={key:1,class:"sidebar-menu-row-right"},f_={key:0,class:"sidebar-menu-row-right-default"},p_={key:1,class:"sidebar-menu-row-right-hover"},h_=hn({inheritAttrs:!1,__name:"SidebarMenuRow",props:{as:{default:"div"},forceRightHover:{type:Boolean,default:!1}},setup(e){const t=e,n=PS(),o=K(()=>!!n.left),r=K(()=>!!n.right),a=K(()=>!!n["right-hover"]),s=K(()=>r.value||a.value);return(i,l)=>(_(),Qe(_f(t.as),jf({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:dt(()=>[o.value?(_(),F("span",u_,[_o(i.$slots,"left",{},void 0,!0)])):ve("",!0),w("span",c_,[_o(i.$slots,"default",{},void 0,!0)]),s.value?(_(),F("span",d_,[r.value?(_(),F("span",f_,[_o(i.$slots,"right",{},void 0,!0)])):ve("",!0),a.value?(_(),F("span",p_,[_o(i.$slots,"right-hover",{},void 0,!0)])):ve("",!0)])):ve("",!0)]),_:3},16,["data-has-left","data-has-right","data-has-right-hover","data-force-right-hover"]))}}),hs=It(h_,[["__scopeId","data-v-5fc666fb"]]),m_={},v_={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function g_(e,t){return _(),F("svg",v_,[...t[0]||(t[0]=[w("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 Ju=It(m_,[["render",g_]]),y_={},w_={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function b_(e,t){return _(),F("svg",w_,[...t[0]||(t[0]=[w("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 ay=It(y_,[["render",b_]]),T_=["data-menu-open"],S_={class:"thread-left-stack"},C_=["data-state"],x_=["data-confirming","title"],k_={key:0,class:"thread-delete-confirm-label"},I_={class:"thread-row-title-wrap"},A_={class:"thread-row-title-line"},__={class:"thread-row-title"},P_=["title"],R_={key:0,class:"thread-row-automation-count"},E_=["data-state"],M_={class:"thread-row-time"},j_=hn({__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)=>(_(),F("li",{class:"thread-row-item","data-menu-open":n.menuOpen?"true":"false"},[Oe(hs,{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:dt(()=>[w("span",S_,[n.showStatusIndicator?(_(),F("span",{key:0,class:"thread-status-indicator","data-state":n.threadState},null,8,C_)):ve("",!0),w("button",{class:"thread-delete-button",type:"button","data-confirming":n.inlineDeleteConfirming,title:n.inlineDeleteConfirming?n.confirmDeleteLabel:n.deleteLabel,onClick:s[0]||(s[0]=gt(i=>o("inline-delete"),["stop"]))},[n.inlineDeleteConfirming?(_(),F("span",k_,D(n.confirmLabel),1)):(_(),Qe(ay,{key:1,class:"thread-icon"}))],8,x_)])]),right:dt(()=>[w("span",M_,D(n.relativeTime),1)]),"right-hover":dt(()=>[w("div",{ref:r,class:"thread-menu-wrap"},[w("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:s[2]||(s[2]=gt(i=>o("menu-toggle"),["stop"]))},[Oe(nf,{class:"thread-icon"})])])]),default:dt(()=>[w("button",{class:"thread-main-button",type:"button",onClick:s[1]||(s[1]=gt(i=>o("select"),["stop"]))},[w("span",I_,[w("span",A_,[w("span",__,D(n.thread.title),1),n.thread.hasWorktree?(_(),Qe(Ju,{key:0,class:"thread-row-worktree-icon",title:n.worktreeLabel},null,8,["title"])):ve("",!0),n.automationCount>0?(_(),F("span",{key:1,class:"thread-row-automation-chip",title:n.automationTooltip},[Oe(bs,{class:"thread-row-automation-icon"}),n.automationCount>1?(_(),F("span",R_,D(n.automationCount),1)):ve("",!0)],8,P_)):ve("",!0),n.thread.pendingRequestState?(_(),F("span",{key:2,class:"thread-row-request-chip","data-state":n.thread.pendingRequestState},D(n.requestLabel),9,E_)):ve("",!0)])])])]),_:1},8,["data-active","data-pinned","data-menu-open","force-right-hover"])],8,T_))}}),Cu=It(j_,[["__scopeId","data-v-fac0242e"]]);function L_(e,t,n){return n.canPruneMissing?e.filter(o=>t.has(o)):e}function N_(e){const{getGroups:t,t:n}=e,o=S({}),r=S({}),a=S(!1),s=S("thread"),i=S(""),l=S(""),d=S(""),c=S("create"),v=S(!1),f=S("thread"),b=S(""),y=S(""),P=S(""),B=S(""),L=S(!1),j=S(!1),U=S({name:"",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"}),H=S({mode:"daily",dailyTime:"09:00",interval:1,intervalUnit:"hours"}),be=K(()=>{if(s.value==="project"){const ae=l.value;return ae?r.value[ae]??[]:[]}const q=i.value;return q?o.value[q]??[]:[]}),le=K(()=>fe(U.value.rrule)),W=K(()=>v.value&&c.value==="create"?f.value==="thread"?n("This creates a heartbeat automation attached to the selected chat."):n("This creates a project automation attached to the selected project folder."):s.value==="project"?n("This creates project automations attached to the selected project folder."):n("This creates heartbeat automations attached to the selected thread.")),he=K(()=>{var ae;const q=[];for(const _e of t())for(const Ye of _e.threads){const bt=((ae=Ye.title)==null?void 0:ae.trim())||Ye.id,Tt=e.getProjectDisplayName(_e.projectName);q.push({value:Ye.id,label:`${bt} · ${Tt}`,searchText:`${bt} ${Tt} ${Ye.id}`.toLowerCase()})}return q}),Se=K(()=>{const q=[];for(const ae of t()){const _e=e.getProjectAutomationKey(ae.projectName);if(!_e)continue;const Ye=e.getProjectDisplayName(ae.projectName);q.push({value:_e,label:Ye,searchText:`${Ye} ${_e}`.toLowerCase()})}return q}),Pe=K(()=>(f.value==="project"?Se.value:he.value).map(ae=>({value:ae.value,label:ae.label}))),ge=[{value:"minutes",label:n("minutes")},{value:"hours",label:n("hours")},{value:"days",label:n("days")}],Y=K(()=>[{value:"ACTIVE",label:n("Active")},{value:"PAUSED",label:n("Paused")}]);tt(Pe,q=>{var ae;v.value&&(q.some(_e=>_e.value===b.value)||(b.value=((ae=q[0])==null?void 0:ae.value)??""))});function pe(q){var ae;return((ae=o.value[q])==null?void 0:ae.length)??0}function ne(q){return pe(q)>0}function xe(q){var _e;const ae=e.getProjectAutomationKey(q);return ae?((_e=r.value[ae])==null?void 0:_e.length)??0:0}function $e(q){return xe(q)>0}function te(q){if(q.length===0)return"";if(q.length>1){const Ye=q.filter(bt=>bt.status==="ACTIVE").length;return`${q.length} ${n("automations")} • ${Ye} ${n("active")}`}const[ae]=q,_e=ae.status==="PAUSED"?"-":ae.nextRunAtMs?new Date(ae.nextRunAtMs).toLocaleString():n("Not scheduled");return`${ae.name} • ${n("Next run")}: ${_e}`}function de(q){return te(o.value[q]??[])}function Le(q){const ae=e.getProjectAutomationKey(q);return te(ae?r.value[ae]??[]:[])}function Ae(q){return String(Math.max(0,q)).padStart(2,"0")}function Fe(q,ae){const _e=typeof q=="number"?q:Number(q);return Number.isFinite(_e)?Math.max(1,Math.floor(_e)):ae}function Ke(q){const[ae,_e]=q.split(":"),Ye=Math.min(23,Math.max(0,Number(ae)||0)),bt=Math.min(59,Math.max(0,Number(_e)||0));return`FREQ=DAILY;BYHOUR=${Ye};BYMINUTE=${bt}`}function lt(q,ae){const _e=Fe(q,1);return ae==="minutes"?`FREQ=MINUTELY;INTERVAL=${_e}`:ae==="hours"?`FREQ=HOURLY;INTERVAL=${_e}`:`FREQ=DAILY;INTERVAL=${_e}`}function Ze(q){return Object.fromEntries(q.split(";").map(ae=>ae.trim()).filter(Boolean).map(ae=>{const[_e,...Ye]=ae.split("=");return[_e.toUpperCase(),Ye.join("=").trim()]}).filter(([ae,_e])=>ae&&_e))}function ut(q){var bt;const ae=Ze(q),_e=(bt=ae.FREQ)==null?void 0:bt.toUpperCase(),Ye=Fe(ae.INTERVAL,1);if(_e==="DAILY"&&ae.BYHOUR!==void 0&&ae.BYMINUTE!==void 0&&Ye===1){const Tt=Math.min(23,Math.max(0,Number(ae.BYHOUR)||0)),At=Math.min(59,Math.max(0,Number(ae.BYMINUTE)||0));return{mode:"daily",dailyTime:`${Ae(Tt)}:${Ae(At)}`,interval:1,intervalUnit:"hours"}}return _e==="MINUTELY"||_e==="HOURLY"||_e==="DAILY"&&ae.INTERVAL!==void 0?{mode:"interval",dailyTime:"09:00",interval:Ye,intervalUnit:_e==="MINUTELY"?"minutes":_e==="HOURLY"?"hours":"days"}:{mode:"advanced",dailyTime:"09:00",interval:1,intervalUnit:"hours"}}function fe(q){var bt;const ae=Ze(q),_e=(bt=ae.FREQ)==null?void 0:bt.toUpperCase(),Ye=Fe(ae.INTERVAL,1);if(_e==="DAILY"&&ae.BYHOUR!==void 0&&ae.BYMINUTE!==void 0&&Ye===1){const Tt=Math.min(23,Math.max(0,Number(ae.BYHOUR)||0)),At=Math.min(59,Math.max(0,Number(ae.BYMINUTE)||0));return`${n("RRULE")}: ${q} · ${n("runs daily at")} ${Ae(Tt)}:${Ae(At)}`}return _e==="MINUTELY"?`${n("RRULE")}: ${q} · ${n("runs every")} ${Ye} ${n("minute(s)")}`:_e==="HOURLY"?`${n("RRULE")}: ${q} · ${n("runs every")} ${Ye} ${n("hour(s)")}`:_e==="DAILY"&&ae.INTERVAL!==void 0?`${n("RRULE")}: ${q} · ${n("runs every")} ${Ye} ${n("day(s)")}`:q?`${n("RRULE")}: ${q}`:n("RRULE is required.")}function N(){const q=H.value;q.mode==="daily"?U.value.rrule=Ke(q.dailyTime):q.mode==="interval"&&(U.value.rrule=lt(q.interval,q.intervalUnit))}function oe(q){q!=="minutes"&&q!=="hours"&&q!=="days"||(H.value={...H.value,intervalUnit:q},N())}function ue(q){q!=="ACTIVE"&&q!=="PAUSED"||(U.value={...U.value,status:q})}function Ee(){H.value=ut(U.value.rrule)}function Be(q){H.value={...H.value,mode:q},N()}function A(q){var _e;s.value="thread",i.value=q,l.value="",v.value=!1,y.value="",P.value="";const ae=(_e=o.value[q])==null?void 0:_e[0];ae?je(ae.id):re(),a.value=!0,e.closeThreadMenu()}function M(q){var Ye;const ae=e.getProjectAutomationKey(q);if(!ae){s.value="project",i.value="",l.value="",v.value=!1,y.value=n("Project automation requires a resolved absolute project path."),P.value="",a.value=!0,e.closeProjectMenu();return}s.value="project",i.value="",l.value=ae,v.value=!1,y.value="",P.value="";const _e=(Ye=r.value[ae])==null?void 0:Ye[0];_e?je(_e.id):re(),a.value=!0,e.closeProjectMenu()}function z(q){s.value=q.scope,i.value=q.scope==="thread"?q.target:"",l.value=q.scope==="project"?q.target:"",v.value=!1,y.value="",P.value="",q.scope==="project"?r.value=He(r.value,q.target,q.automation):o.value=me(o.value,q.target,q.automation),je(q.automation.id),a.value=!0,e.closeProjectMenu(),e.closeThreadMenu()}function Z(){var q;v.value=!0,f.value="thread",b.value=((q=he.value[0])==null?void 0:q.value)??"",s.value="thread",i.value="",l.value="",y.value="",P.value="",re(),a.value=!0,e.closeProjectMenu(),e.closeThreadMenu()}function ce(q){var ae;f.value=q,b.value="",s.value=q==="project"?"project":"thread",b.value=((ae=Pe.value[0])==null?void 0:ae.value)??""}function re(){d.value="",c.value="create",y.value="",P.value="",U.value={name:s.value==="project"?"Project automation":"Thread automation",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"},H.value=ut(U.value.rrule)}function je(q){const ae=be.value.find(_e=>_e.id===q);ae&&(d.value=ae.id,c.value="edit",y.value="",P.value="",U.value={name:ae.name,prompt:ae.prompt,rrule:ae.rrule,status:ae.status},H.value=ut(ae.rrule))}function Re(){a.value=!1,s.value="thread",i.value="",l.value="",d.value="",y.value="",P.value="",L.value=!1,j.value=!1}function ke(q,ae){return Object.fromEntries(Object.entries(q).filter(([_e])=>_e!==ae))}function me(q,ae,_e){const Ye=q[ae]??[],bt=Ye.findIndex(At=>At.id===_e.id),Tt=[...Ye];return bt>=0?Tt.splice(bt,1,_e):Tt.push(_e),{...q,[ae]:Tt}}function Ve(q,ae,_e){const Ye=(q[ae]??[]).filter(bt=>bt.id!==_e);return Ye.length>0?{...q,[ae]:Ye}:ke(q,ae)}function Ne(q,ae){return Object.fromEntries(Object.entries(q).filter(([_e])=>_e!==ae))}function He(q,ae,_e){const Ye=q[ae]??[],bt=Ye.findIndex(At=>At.id===_e.id),Tt=[...Ye];return bt>=0?Tt.splice(bt,1,_e):Tt.push(_e),{...q,[ae]:Tt}}async function Ue(){r.value=await Tx()}async function Je(q){await Kh(q).catch(()=>{}),o.value=ke(o.value,q)}async function et(){let q=i.value,ae=l.value;L.value=!0,y.value="",P.value="";try{if(N(),v.value&&c.value==="create"&&(f.value==="thread"?(q=b.value,ae="",s.value="thread",i.value=q,l.value=""):(ae=b.value,q="",s.value="project",i.value="",l.value=ae)),s.value==="thread"&&!q)throw new Error(n("Select a chat target for this automation"));if(s.value==="project"&&!ae)throw new Error(n("Select a project target for this automation"));const _e={id:d.value||void 0,name:U.value.name,prompt:U.value.prompt,rrule:U.value.rrule,status:U.value.status},Ye=s.value==="project"?await Cx({..._e,projectName:ae}):await Sx({..._e,threadId:q});s.value==="project"?await Ue():o.value=me(o.value,q,Ye),e.onAutomationsChanged(),je(Ye.id),P.value=n("Automation saved."),L.value=!1}catch(_e){y.value=_e instanceof Error?_e.message:n("Failed to save automation"),L.value=!1}}async function st(){const q=i.value,ae=l.value,_e=d.value;if(_e&&!(s.value==="thread"&&!q)&&!(s.value==="project"&&!ae)){L.value=!0,y.value="",P.value="";try{s.value==="project"?(await jg(ae,_e),await Ue()):(await Kh(q,_e),o.value=Ve(o.value,q,_e));const Ye=be.value[0];Ye?je(Ye.id):re(),e.onAutomationsChanged(),L.value=!1}catch(Ye){y.value=Ye instanceof Error?Ye.message:n("Failed to remove automation"),L.value=!1}}}async function mt(){const q=i.value,ae=d.value;if(!(!q||!ae)){j.value=!0,y.value="",P.value="";try{await xx(q,ae),P.value=n("Automation run queued.")}catch(_e){y.value=_e instanceof Error?_e.message:n("Failed to run automation")}finally{j.value=!1}}}return{automationByThreadId:o,automationByProjectName:r,automationDialogVisible:a,automationDialogScope:s,automationDialogThreadId:i,automationDialogProjectName:l,automationDialogAutomationId:d,automationDialogMode:c,automationTargetPickerVisible:v,automationTargetMode:f,automationTargetValue:b,automationDialogError:y,automationDialogNotice:P,projectAutomationActionError:B,isSavingAutomation:L,isRunningAutomation:j,automationDraft:U,automationScheduleDraft:H,automationDialogAutomations:be,automationSchedulePreview:le,automationDialogSubtitle:W,automationThreadTargetOptions:he,automationProjectTargetOptions:Se,automationTargetDropdownOptions:Pe,automationIntervalUnitOptions:ge,automationStatusOptions:Y,threadAutomationCount:pe,threadHasAutomation:ne,projectAutomationCount:xe,projectHasAutomation:$e,threadAutomationTooltip:de,projectAutomationTooltip:Le,syncAutomationRruleFromScheduleDraft:N,onAutomationIntervalUnitChange:oe,onAutomationStatusChange:ue,syncAutomationScheduleDraftFromRrule:Ee,setAutomationScheduleMode:Be,openAutomationDialog:A,openProjectAutomationDialog:M,openAutomationEditorFromPanel:z,openAutomationCreatorFromPanel:Z,setAutomationTargetMode:ce,startNewAutomationDraft:re,selectAutomationForEditing:je,closeAutomationDialog:Re,omitAutomationProject:Ne,reloadProjectAutomations:Ue,removeAutomationsForThread:Je,submitAutomationDialog:et,onDeleteAutomationFromDialog:st,onRunAutomationFromDialog:mt}}const $_=4,xm=6;function O_(e,t,n){if(e===null||n===0)return null;const o=Math.max(0,Math.min(e,n)),r=o>t?o-1:o,a=Math.max(0,Math.min(r,n-1));return a===t?null:a}function D_(e){const{getGroups:t,getFilteredGroups:n,isSearchActive:o,isCollapsed:r,getElevatedProjectName:a,onReorderProject:s,closeProjectMenu:i}=e,l=S(null),d=S(null),c=S(null);let v=null,f=null;const b=S(""),y=S({}),P=new Map,B=new WeakMap,L=typeof window<"u"?new ResizeObserver(fe=>{for(const N of fe){const oe=N.target,ue=B.get(oe);ue&&U(ue,oe)}}):null,j=()=>{var fe,N;return((fe=c.value)==null?void 0:fe.projectName)??((N=d.value)==null?void 0:N.projectName)??""};function U(fe,N){const oe=N.getBoundingClientRect().height;if(!Number.isFinite(oe)||oe<=0)return;const ue=y.value[fe];ue!==void 0&&Math.abs(ue-oe)<.5||(y.value={...y.value,[fe]:oe})}function H(fe,N){const oe=P.get(fe);oe&&oe!==N&&L&&L.unobserve(oe);const ue=N instanceof HTMLElement?N:N&&"$el"in N&&N.$el instanceof HTMLElement?N.$el:null;if(ue){P.set(fe,ue),B.set(ue,fe),U(fe,ue),L==null||L.observe(ue);return}oe&&(L==null||L.unobserve(oe)),P.delete(fe)}function be(fe){const N=y.value[fe]??0,oe=c.value,Ee=((oe==null?void 0:oe.projectName)===fe?oe.groupHeight:null)??N,Be=r(fe)?0:xm;return Math.max(0,Ee+Be)}const le=K(()=>{const fe=c.value;return fe?O_(fe.dropTargetIndexFull,fe.fromIndex,t().length):null}),W=K(()=>{const N=(o()?n():t()).map(A=>A.projectName),oe=c.value,ue=le.value;if(!oe||ue===null)return N;const Ee=[...N],[Be]=Ee.splice(oe.fromIndex,1);return Be?(Ee.splice(ue,0,Be),Ee):N}),he=K(()=>{const fe={};let N=0;for(const oe of W.value)fe[oe]=N,N+=be(oe);return fe}),Se=K(()=>{let fe=0;for(const N of W.value)fe+=be(N);return{height:`${Math.max(0,fe)}px`}});function Pe(fe,N){if(fe.button!==0||o()||d.value||c.value)return;const ue=t().findIndex(M=>M.projectName===N),Ee=P.get(N);if(ue<0||!Ee)return;const Be=Ee.getBoundingClientRect(),A=r(N)?0:xm;d.value={projectName:N,fromIndex:ue,startClientX:fe.clientX,startClientY:fe.clientY,pointerOffsetY:fe.clientY-Be.top,groupLeft:Be.left,groupWidth:Be.width,groupHeight:Be.height,groupOuterHeight:Be.height+A},fe.preventDefault(),ge()}function ge(){window.addEventListener("mousemove",pe),window.addEventListener("mouseup",ne),window.addEventListener("keydown",xe)}function Y(){window.removeEventListener("mousemove",pe),window.removeEventListener("mouseup",ne),window.removeEventListener("keydown",xe)}function pe(fe){v={clientX:fe.clientX,clientY:fe.clientY},te()}function ne(fe){de({clientX:fe.clientX,clientY:fe.clientY});const N=c.value;if(N&&le.value!==null){const oe=t().findIndex(ue=>ue.projectName===N.projectName);if(oe>=0){const ue=le.value;ue!==oe&&s(N.projectName,ue)}}$e({preserveToggleSuppression:!!N})}function xe(fe){fe.key==="Escape"&&(!d.value&&!c.value||(fe.preventDefault(),$e()))}function $e(fe={}){f!==null&&(window.cancelAnimationFrame(f),f=null),v=null,d.value=null,c.value=null,fe.preserveToggleSuppression||(b.value=""),Y()}function te(){f===null&&(f=window.requestAnimationFrame(()=>{if(f=null,!v)return;const fe=v;v=null,de(fe)}))}function de(fe){const N=d.value;if(!c.value&&N){const oe=fe.clientX-N.startClientX,ue=fe.clientY-N.startClientY;if(Math.hypot(oe,ue)<$_)return;i(),b.value=N.projectName,c.value={projectName:N.projectName,fromIndex:N.fromIndex,pointerOffsetY:N.pointerOffsetY,groupLeft:N.groupLeft,groupWidth:N.groupWidth,groupHeight:N.groupHeight,groupOuterHeight:N.groupOuterHeight,ghostTop:fe.clientY-N.pointerOffsetY,dropTargetIndexFull:null}}c.value&&Le(fe)}function Le(fe){const N=c.value;if(!N)return;if(N.ghostTop=fe.clientY-N.pointerOffsetY,!Ae(fe)){N.dropTargetIndexFull=null;return}const oe=fe.clientY,ue=l.value;if(!ue){N.dropTargetIndexFull=null;return}const Ee=t(),Be=ue.getBoundingClientRect(),A=new Map(Ee.map((ce,re)=>[ce.projectName,re])),M=Ee.map(ce=>ce.projectName).filter(ce=>ce!==N.projectName);let z=0,Z=Ee.length;for(const ce of M){const re=A.get(ce);if(re===void 0)continue;const je=be(ce),Re=Be.top+z+je/2;if(oe<Re){Z=re;break}z+=je}N.dropTargetIndexFull=Z}function Ae(fe){const N=l.value;if(!N)return!1;const oe=N.getBoundingClientRect(),ue=fe.clientX>=oe.left&&fe.clientX<=oe.right,Ee=fe.clientY>=oe.top-32&&fe.clientY<=oe.bottom+32;return ue&&Ee}function Fe(fe){var N;return((N=c.value)==null?void 0:N.projectName)===fe}function Ke(fe){const N=c.value,oe=he.value[fe]??0,ue=a()===fe;return!N||N.projectName!==fe?{position:"absolute",top:"0",left:"0",right:"0",zIndex:ue?"40":"1",transform:`translate3d(0, ${oe}px, 0)`,willChange:"transform",transition:"transform 180ms ease"}:{position:"fixed",top:"0",left:`${N.groupLeft}px`,width:`${N.groupWidth}px`,height:`${N.groupHeight}px`,zIndex:"50",pointerEvents:"none",transform:`translate3d(0, ${N.ghostTop}px, 0)`,willChange:"transform",transition:"transform 0ms linear"}}function lt(fe){return b.value===fe?(b.value="",!0):!1}function Ze(fe){const N=j();N&&!fe.includes(N)&&$e();const oe=new Set(fe),ue=Object.fromEntries(Object.entries(y.value).filter(([Ee])=>oe.has(Ee)));Object.keys(ue).length!==Object.keys(y.value).length&&(y.value=ue)}function ut(){for(const fe of P.values())L==null||L.unobserve(fe);P.clear(),$e()}return{groupsContainerRef:l,groupsContainerStyle:Se,setProjectGroupRef:H,isDraggingProject:Fe,projectGroupStyle:Ke,onProjectHandleMouseDown:Pe,takeToggleSuppression:lt,pruneProjectGroups:Ze,dispose:ut}}const F_={key:0,class:"pinned-section"},B_={class:"thread-tree-header"},U_={key:0,class:"thread-list"},z_={class:"projects-section"},H_={class:"thread-tree-header"},q_=["aria-expanded","aria-label","title"],W_={class:"organize-menu-title"},G_=["data-active"],V_={key:0},K_=["data-active"],Y_={key:0},J_=["data-active"],Q_={key:0},X_={class:"organize-menu-title"},Z_=["data-active"],eP={key:0},tP=["data-active"],nP={key:0},oP={key:0,class:"thread-tree-action-error"},rP={key:1,class:"thread-tree-no-results"},aP={key:2,class:"thread-tree-loading"},sP={key:3,class:"thread-list thread-list-global"},iP=["data-project-name","data-expanded","data-dragging"],lP={class:"project-icon-stack"},uP={class:"project-icon-folder"},cP={class:"project-icon-chevron"},dP=["data-dragging-handle","onMousedown"],fP=["title"],pP=["title"],hP={key:0,class:"thread-row-automation-count"},mP={class:"project-hover-controls"},vP=["onClick"],gP=["data-open-direction"],yP=["onClick"],wP=["onClick"],bP=["onClick"],TP=["onClick"],SP=["onClick"],CP=["onClick"],xP={class:"project-menu-label"},kP=["onInput"],IP=["aria-label","title","onClick"],AP={key:0,class:"thread-list"},_P={class:"project-empty"},PP=["onClick"],RP={class:"chats-section"},EP={class:"thread-tree-header"},MP={class:"chats-section-actions"},jP=["aria-label","title"],LP={key:0,class:"thread-tree-no-results"},NP={key:1,class:"thread-list thread-list-global"},$P=["data-open-direction"],OP=["disabled","title"],DP=["placeholder","onKeydown"],FP={class:"recycle-bin-content"},BP={key:0,class:"recycle-bin-empty"},UP={key:1,class:"recycle-bin-list"},zP={class:"recycle-bin-item-copy"},HP={class:"recycle-bin-item-title"},qP={key:0,class:"recycle-bin-item-meta"},WP={class:"recycle-bin-item-time"},GP={class:"recycle-bin-item-actions"},VP=["disabled","onClick"],KP=["onClick"],YP={key:2,class:"recycle-bin-error",role:"alert"},JP=["aria-label"],QP={class:"rename-thread-title"},XP={class:"rename-thread-subtitle"},ZP={key:0,class:"automation-target-picker"},eR={class:"automation-target-mode-group",role:"radiogroup","aria-label":"Automation target type"},tR={class:"automation-target-dropdown"},nR=["aria-label"],oR=["onClick"],rR={class:"automation-thread-field"},aR={class:"automation-thread-label"},sR=["placeholder"],iR={class:"automation-thread-field"},lR={class:"automation-thread-label"},uR=["placeholder"],cR={class:"automation-thread-field"},dR={class:"automation-thread-label"},fR={class:"automation-schedule-mode-group",role:"radiogroup","aria-label":"Automation schedule type"},pR={key:0,class:"automation-schedule-row"},hR={class:"automation-schedule-copy"},mR={key:1,class:"automation-schedule-row"},vR={class:"automation-schedule-copy"},gR={class:"automation-schedule-preview"},yR={class:"automation-thread-field"},wR={class:"automation-thread-label"},bR={key:2,class:"rename-thread-subtitle automation-thread-error"},TR={key:3,class:"rename-thread-subtitle automation-thread-notice"},SR={class:"rename-thread-actions"},CR=["disabled"],xR=["disabled"],kR=["disabled"],IR=["disabled"],km="codex-web-local.sidebar-section-expansion.v1",Im="codex-web-local.sidebar-chats-first.v1",Am="codex-web-local.sidebar-chat-sort-mode.v1",_m="codex-web-local.thread-view-mode.v1",Pm="codex-web-local.collapsed-projects.v1",AR=hn({__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}=da(),{recordVisibleFailure:a}=ny(),s=n,{records:i,loadRecords:l,recordArchivedThread:d,removeArchivedRecord:c,restoreArchivedThread:v}=zA(),f=S(!1),b=S(""),y=S("");function P(){xt.value=!1,b.value="",l(),f.value=!0}async function B(x){if(!y.value){y.value=x,b.value="";try{const R=await v(x);R.ok?s("restore-thread",x):b.value=R.error??"Failed to restore thread"}finally{y.value=""}}}const L=S({}),j=S({}),U=S(!0),H=S(!0),be=S(!0),le=S(!1),W=S(Mo(Im,!1)),he=S(en());let Se=!1;const Pe=S([]),ge=S({}),Y=S(""),pe=S([]),ne=S(""),xe=S(""),$e=S("hover"),te=S({}),de=S({}),Le=S({}),Ae=S("actions"),Fe=S(""),Ke=S(!1),lt=S(""),Ze=S(""),ut=S(null),fe=S(!1),N=S(""),oe=S(""),ue=N_({getGroups:()=>o.groups,t:r,getProjectDisplayName:mr,getProjectAutomationKey:qn,closeThreadMenu:ye,closeProjectMenu:$t,onAutomationsChanged:()=>s("automations-changed")}),{automationByThreadId:Ee,automationByProjectName:Be,automationDialogVisible:A,automationDialogScope:M,automationDialogAutomationId:z,automationDialogMode:Z,automationTargetPickerVisible:ce,automationTargetMode:re,automationTargetValue:je,automationDialogError:Re,automationDialogNotice:ke,projectAutomationActionError:me,isSavingAutomation:Ve,isRunningAutomation:Ne,automationDraft:He,automationScheduleDraft:Ue,automationDialogAutomations:Je,automationSchedulePreview:et,automationDialogSubtitle:st,automationTargetDropdownOptions:mt,automationIntervalUnitOptions:q,automationStatusOptions:ae,threadAutomationCount:_e,threadHasAutomation:Ye,projectAutomationCount:bt,projectHasAutomation:Tt,threadAutomationTooltip:At,projectAutomationTooltip:Br,syncAutomationRruleFromScheduleDraft:zt,onAutomationIntervalUnitChange:Ha,onAutomationStatusChange:fa,syncAutomationScheduleDraftFromRrule:pa,setAutomationScheduleMode:ar,openAutomationDialog:Ur,openProjectAutomationDialog:zr,openAutomationEditorFromPanel:Ps,openAutomationCreatorFromPanel:qa,setAutomationTargetMode:Wa,startNewAutomationDraft:Uo,selectAutomationForEditing:sr,closeAutomationDialog:Zn,omitAutomationProject:Rs,reloadProjectAutomations:ha,removeAutomationsForThread:Es,submitAutomationDialog:zo,onDeleteAutomationFromDialog:Po,onRunAutomationFromDialog:Dn}=ue,Ga=D_({getGroups:()=>o.groups,getFilteredGroups:()=>Lt.value,isSearchActive:()=>bn.value,isCollapsed:un,getElevatedProjectName:()=>ne.value?ne.value:xe.value?Gr.value.get(xe.value)??"":"",onReorderProject:(x,R)=>s("reorder-project",{projectName:x,toIndex:R}),closeProjectMenu:$t}),{groupsContainerRef:Ms,groupsContainerStyle:vt,setProjectGroupRef:Ct,isDraggingProject:kt,projectGroupStyle:mn,onProjectHandleMouseDown:Fn,takeToggleSuppression:ho,pruneProjectGroups:Hr,dispose:qr}=Ga,mo=new Map,Ho=new Map,Ro=S(null),Bn=S(null),xt=S(!1),eo=S(Eo());function vo(){if(typeof window>"u")return{};try{const x=window.localStorage.getItem(Pm);if(!x)return{};const R=JSON.parse(x);return!R||typeof R!="object"||Array.isArray(R)?{}:R}catch{return{}}}function Eo(){return typeof window>"u"?"project":window.localStorage.getItem(_m)==="chronological"?"chronological":"project"}function Mo(x,R){if(typeof window>"u")return R;const k=window.localStorage.getItem(x);return k==="true"?!0:k==="false"?!1:R}function en(){return typeof window>"u"?"updated":window.localStorage.getItem(Am)==="created"?"created":"updated"}j.value=vo();function Un(){if(!(typeof window>"u"))try{const x=JSON.parse(window.localStorage.getItem(km)||"{}");typeof x.pinned=="boolean"&&(U.value=x.pinned),typeof x.projects=="boolean"&&(H.value=x.projects),typeof x.chats=="boolean"&&(be.value=x.chats)}catch{}}function ir(){typeof window>"u"||window.localStorage.setItem(km,JSON.stringify({pinned:U.value,projects:H.value,chats:be.value}))}Un(),tt(j,x=>{typeof window>"u"||window.localStorage.setItem(Pm,JSON.stringify(x))},{deep:!0}),tt(eo,x=>{typeof window>"u"||window.localStorage.setItem(_m,x)}),tt(W,x=>{typeof window>"u"||window.localStorage.setItem(Im,String(x))}),tt(he,x=>{typeof window>"u"||window.localStorage.setItem(Am,x)}),tt([U,H,be],ir);const lr=K(()=>o.searchQuery.trim().toLowerCase()),bn=K(()=>lr.value.length>0),ma=K(()=>o.searchMatchedThreadIds?new Set(o.searchMatchedThreadIds):null),tn=K(()=>new Set(Pe.value)),Wr=K(()=>new Set(pe.value));function go(x){if(Wr.value.has(x.id))return!1;if(!bn.value)return!0;if(ma.value)return ma.value.has(x.id);const R=lr.value;return x.title.toLowerCase().includes(R)||x.preview.toLowerCase().includes(R)}const Lt=K(()=>o.groups.flatMap(x=>{const R=x.threads.filter(k=>!Ku(k.cwd)&&go(k));return R.length>0?[{...x,threads:R}]:!bn.value&&x.threads.length===0?[{...x,threads:R}]:[]})),zn=K(()=>eo.value==="chronological"),sn=K(()=>{const x=[];for(const R of o.groups)for(const k of R.threads)tn.value.has(k.id)||go(k)&&x.push(k);return x.sort((R,k)=>{const G=new Date(R.updatedAtIso||R.createdAtIso).getTime();return new Date(k.updatedAtIso||k.createdAtIso).getTime()-G})}),to=K(()=>{const x=sn.value.filter(k=>Ku(k.cwd)),R=he.value==="created"?"createdAtIso":"updatedAtIso";return x.sort((k,G)=>{const We=new Date(k[R]||k.updatedAtIso||k.createdAtIso).getTime();return new Date(G[R]||G.updatedAtIso||G.createdAtIso).getTime()-We})}),nn=K(()=>bn.value||le.value?to.value:to.value.slice(0,10)),Va=K(()=>bn.value?!1:to.value.length>10),on=K(()=>{const x=new Map;for(const R of o.groups)for(const k of R.threads)Wr.value.has(k.id)||x.set(k.id,k);return x});tt(Pe,x=>{Se&&uI(x)}),tt([on,()=>o.isThreadListFullyLoaded],([x])=>{const R=L_(Pe.value,new Set(x.keys()),{canPruneMissing:o.isThreadListFullyLoaded});if(R.length===Pe.value.length)return;const k=new Set(R),G=Object.fromEntries(Object.entries(ge.value).filter(([We])=>k.has(We)));ge.value=G,Pe.value=R});let qo=0;async function ur(){if(o.isLoading)return;const x=Pe.value.filter(We=>!on.value.has(We)&&!ge.value[We]);if(x.length===0)return;const R=qo+=1,k=await Promise.all(x.map(async We=>{try{return await Sk(We)}catch{return null}}));if(R!==qo)return;const G={...ge.value};for(const We of k)We&&(G[We.id]=We);ge.value=G}tt([Pe,on,()=>o.isLoading],()=>{Se&&ur()}),pi(async()=>{const{threadIds:x}=await lI(),R=Array.isArray(x)?x.filter(k=>typeof k=="string").map(k=>k.trim()).filter((k,G,We)=>k.length>0&&We.indexOf(k)===G):[];R.length>0&&(Pe.value=R);try{Ee.value=await bx()}catch{Ee.value={}}try{await ha()}catch{Be.value={}}Se=!0,ur()});const Ht=K(()=>Ye(N.value)),js=K(()=>{const x=oe.value;return Ht.value?r('This will archive the thread "{title}" and remove the attached heartbeat automations.',{title:x}):r('This will archive the thread "{title}". You can find it later in archived threads.',{title:x})}),Gr=K(()=>{const x=new Map;for(const R of o.groups)for(const k of R.threads)x.set(k.id,R.projectName);return x}),Wo=K(()=>{const x=new Map;for(const R of o.groups){const k=R.threads.filter(G=>!tn.value.has(G.id)&&!Wr.value.has(G.id));x.set(R.projectName,k)}return x}),yo=K(()=>{const x=new Map;for(const R of o.groups)for(const k of R.threads){const G=new Date(k.updatedAtIso||k.createdAtIso).getTime();x.set(k.id,G)}return x}),qt=K(()=>{const x=xe.value;return x?on.value.get(x)??null:null}),Ka=K(()=>Pe.value.map(x=>on.value.get(x)??ge.value[x]??null).filter(x=>x!==null).filter(go));function no(){U.value=!U.value}function Ya(){H.value=!H.value}function wo(){be.value=!be.value}function Vr(x){if(Number.isNaN(x))return"n/a";const R=Math.abs(Date.now()-x);if(R<6e4)return r("now");const k=Math.floor(R/6e4);if(k<60)return`${k}m`;const G=Math.floor(k/60);return G<24?`${G}h`:`${Math.floor(G/24)}d`}function bo(x){const R=yo.value.get(x.id);return Vr(typeof R=="number"?R:new Date(x.updatedAtIso||x.createdAtIso).getTime())}function jo(x){const R=new Date(x).getTime();return Number.isNaN(R)?"":new Date(R).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function oo(x){return tn.value.has(x)}function cr(x){if(oo(x)){Pe.value=Pe.value.filter(R=>R!==x);return}Pe.value=[x,...Pe.value]}function St(x){cr(x),ye()}function ln(x){Y.value="",s("select",x)}function In(x){x===o.selectedThreadId&&(s("copy-thread-chat",x),ye())}function dr(x){s("fork-thread",x),ye()}function An(x){return`${r("start new thread")} ${mr(x)}`}function Kr(x){s("start-new-thread",x)}function fr(x){s("browse-thread-files",x),ye()}function dn(x){s("save-thread-project",x),ye()}async function C(x){var k,G;const R=((G=(k=on.value.get(x))==null?void 0:k.cwd)==null?void 0:G.trim())??"";if(ye(),!(!R||typeof navigator>"u"||!navigator.clipboard))try{await navigator.clipboard.writeText(R)}catch{}}function E(x,R){if(xe.value===x&&$e.value==="hover"){if(R){const k=R.relatedTarget,G=Bn.value;if(k instanceof Node&&G&&G.contains(k))return}ye()}}function Q(x){return xe.value===x}function ye(){xe.value="",$e.value="hover",Le.value={}}function ct(x){if(Y.value="",xe.value===x){ye();return}$e.value="hover",$t(),xt.value=!1,xe.value=x,Nt(()=>{Xa(x)})}function _t(x,R){x.preventDefault(),Y.value="",$e.value="contextmenu",xe.value=R}function _n(x,R){lt.value=x,Ze.value=R,Ke.value=!0,ye(),Nt(()=>{var k,G;(k=ut.value)==null||k.focus(),(G=ut.value)==null||G.select()})}function Kt(){Ke.value=!1,lt.value="",Ze.value=""}function Pn(){const x=lt.value,R=Ze.value.trim();!x||!R||(s("rename-thread",{threadId:x,title:R}),Kt())}function Wt(x,R){Y.value="",N.value=x,oe.value=R,fe.value=!0,ye()}function vn(){fe.value=!1,N.value="",oe.value=""}async function mi(){const x=N.value;x&&(Ls(x),vn())}function pr(x){return Y.value===x}function hr(x){if(Y.value!==x){Y.value=x,ye();return}Ls(x),Y.value=""}function Ls(x){var k,G;const R=on.value.get(x)??null;Wr.value.has(x)||(pe.value=[x,...pe.value]),Y.value="",ye(),d({id:x,title:((k=R==null?void 0:R.title)==null?void 0:k.trim())||"(untitled)",cwd:((G=R==null?void 0:R.cwd)==null?void 0:G.trim())??"",projectName:Gr.value.get(x)??""}),Pe.value=Pe.value.filter(We=>We!==x),s("archive",x),Ye(x)&&Es(x)}function mr(x){return o.projectDisplayNameById[x]??x}t({openAutomationEditorFromPanel:Ps,openAutomationCreatorFromPanel:qa,openRenameThreadDialog:_n,openRecycleBin:P});function Yr(x){return x.includes("/")||x.includes("\\")}function Tn(x){return Yr(x)?x:mr(x)}function vr(x){const R=Bo(x);if(!R)return!1;let k=0;for(const G of o.groups)if(Yr(G.projectName)&&Bo(G.projectName)===R&&(k+=1,k>1))return!0;return!1}function Lo(x){const R=o.projectDisplayNameById[x.projectName],k=mr(x.projectName),G=x.projectName;if(R&&!Yr(G)&&G!==k)return k.includes(G)||/^[0-9a-f]{8}-[0-9a-f-]{27,}$/iu.test(G)?k:`${k} ${G}`;if(R&&Yr(G)){const ao=Bo(G),Co=Bo(qi(G)),cn=vr(G)?Co:ao;return cn&&cn!==k?`${k} ${cn}`:k}if(!k.includes("/")&&!k.includes("\\"))return k;const We=Bo(k)||k,Ot=Bo(qi(k));return Ot.startsWith(".")&&Ot!==We?`${We} ${Ot}`:x.threads.length>0||!vr(G)?We:Ot?`${We} ${Ot}`:We}function va(x){return ne.value===x}function $t(){ne.value="",Ae.value="actions",Fe.value=""}function ga(){const x=!xt.value;x&&($t(),ye()),xt.value=x}function rn(x){eo.value=x,xt.value=!1}function gr(){W.value=!W.value}function ya(x){he.value=x}function Sn(x){s("request-project-git-status",x),Nt(()=>{Rn(x)})}function Ns(x){if(ne.value===x){$t();return}ye(),xt.value=!1,ne.value=x,Ae.value="actions",Fe.value=mr(x),Sn(x)}function Ja(x){ye(),xt.value=!1,ne.value=x,Ae.value="actions",Fe.value=mr(x),Sn(x)}function rl(x){return o.projectDisplayNameById[x.projectName]??Lo(x)}function Hn(x){ye();const R=x.projectName;ne.value=R,Ae.value="rename",Fe.value=rl(x),Nt(()=>{Rn(R)})}function Yt(x){s("browse-project-files",x),$t()}function Gt(x){s("save-project",x),$t()}function vi(x){s("create-project-worktree",x),$t()}function al(x){s("rename-project",{projectName:x,displayName:Fe.value})}function $s(x){const R=qn(x);if(s("remove-project",x),R&&Tt(x)){me.value="";const k=Be.value;Be.value=Rs(Be.value,R),jg(R).then(ha).catch(async G=>{Be.value=k;const We=G instanceof Error?G.message:r("Failed to delete project automation");me.value=We,a(We);try{await ha()}catch{Be.value=k}}).finally(()=>{s("automations-changed")})}$t()}function qn(x){var k;const R=((k=o.projectCwdByName[x])==null?void 0:k.trim())??"";return Lx(R)?R:""}function gi(x,R){if(!x.altKey||x.key!=="ArrowUp"&&x.key!=="ArrowDown")return;const k=o.groups.findIndex(Ot=>Ot.projectName===R);if(k<0)return;const G=x.key==="ArrowUp"?-1:1,We=Math.max(0,Math.min(k+G,o.groups.length-1));We!==k&&(x.preventDefault(),s("reorder-project",{projectName:R,toIndex:We}))}function ro(x){return L.value[x]===!0}function un(x){return j.value[x]===!0}function Wn(x){L.value={...L.value,[x]:!ro(x)}}function yr(){le.value=!le.value}function wr(x){ho(x)||(j.value={...j.value,[x]:!un(x)})}function Go(x,R){const k=R instanceof HTMLElement?R:R&&"$el"in R&&R.$el instanceof HTMLElement?R.$el:null;if(k){mo.set(x,k);return}mo.delete(x)}function wa(x,R){const k=R instanceof HTMLElement?R:R&&"$el"in R&&R.$el instanceof HTMLElement?R.$el:null;if(k){Ho.set(x,k);return}Ho.delete(x)}function Qa(x){let R=x.parentElement;for(;R;){const k=window.getComputedStyle(R),G=k.overflowY||k.overflow;if(G==="auto"||G==="scroll"||G==="hidden"||G==="clip")return R.getBoundingClientRect();R=R.parentElement}return new DOMRect(0,0,window.innerWidth,window.innerHeight)}function Jr(x,R){const k=x.getBoundingClientRect(),G=Qa(x),We=6,Ot=G.bottom-k.bottom,ao=k.top-G.top;return Ot>=R+We?"down":ao>Ot?"up":"down"}function yi(x,R){const k=Ho.get(x);if(!k)return"down";const G=Jr(k,R);return de.value={...de.value,[x]:G},G}function ba(x){return de.value[x]??"down"}function Rn(x){const R=mo.get(x);if(!R)return;const k=R.querySelector(".project-menu-panel"),G=(k==null?void 0:k.getBoundingClientRect().height)??0;te.value={...te.value,[x]:Jr(R,G)}}function To(x,R,k){return Math.min(Math.max(x,R),k)}function Xa(x){const R=Ho.get(x);if(!R)return;const k=Bn.value,G=k==null?void 0:k.getBoundingClientRect(),We=(G==null?void 0:G.height)||(k==null?void 0:k.offsetHeight)||112,Ot=(G==null?void 0:G.width)||(k==null?void 0:k.offsetWidth)||160,ao=yi(x,We),Co=R.getBoundingClientRect(),cn=8,br=4,es=Math.max(cn,window.innerWidth-Ot-cn),ts=To(Co.right-Ot,cn,es),Tr=To(ao==="up"?Co.top-We-br:Co.bottom+br,cn,Math.max(cn,window.innerHeight-We-cn));Le.value={left:`${Math.round(ts)}px`,top:`${Math.round(Tr)}px`}}function Ta(){const x=xe.value;x&&Xa(x)}function wi(){window.addEventListener("resize",Ta),document.addEventListener("scroll",Ta,!0)}function Os(){window.removeEventListener("resize",Ta),document.removeEventListener("scroll",Ta,!0)}function Gn(x){const R=ne.value;if(!R)return!1;const k=mo.get(R);if(!k)return!1;if((typeof x.composedPath=="function"?x.composedPath():[]).includes(k))return!0;const We=x.target;return We instanceof Node?k.contains(We):!1}function Vo(x){const R=xe.value;if(!R)return!1;const k=Ho.get(R);if(!k)return!1;const G=typeof x.composedPath=="function"?x.composedPath():[];if(G.includes(k))return!0;const We=Bn.value;if(We&&G.includes(We))return!0;const Ot=x.target;return Ot instanceof Node?!!(k.contains(Ot)||We&&We.contains(Ot)):!1}function Ds(x){if(xt.value){const R=Ro.value,k=typeof x.composedPath=="function"?x.composedPath():[];!!R&&(k.includes(R)||x.target instanceof Node&&R.contains(x.target))||(xt.value=!1)}ne.value&&(Gn(x)||$t(),xe.value&&(Vo(x)||ye()))}function Fs(x){ne.value&&!Gn(x)&&$t(),xe.value&&!Vo(x)&&ye()}function bi(){xt.value&&(xt.value=!1),ne.value&&$t(),xe.value&&ye()}function sl(){window.addEventListener("pointerdown",Ds,{capture:!0}),window.addEventListener("focusin",Fs,{capture:!0}),window.addEventListener("blur",bi)}function Ti(){window.removeEventListener("pointerdown",Ds,{capture:!0}),window.removeEventListener("focusin",Fs,{capture:!0}),window.removeEventListener("blur",bi)}function Sa(x){return Wo.value.get(x.projectName)??[]}function Qr(x){if(bn.value)return Sa(x);if(un(x.projectName))return[];const R=Sa(x);return ro(x.projectName)?R:R.slice(0,10)}function Xr(x){return bn.value?!1:!un(x.projectName)&&Sa(x).length>10}function Za(x){return Sa(x).length>0}function So(x){var R;return!!x.pendingRequestState||x.inProgress||x.unread||((R=x.externalSession)==null?void 0:R.active)===!0}function No(x){return x.pendingRequestState==="approval"?r("Awaiting approval"):r("Awaiting response")}function $o(x){var R;return((R=x.externalSession)==null?void 0:R.active)===!0?"external":x.pendingRequestState==="approval"?"awaiting-approval":x.pendingRequestState==="response"?"awaiting-response":x.inProgress?"working":x.unread?"unread":"idle"}tt(()=>o.groups.map(x=>x.projectName),x=>{Hr(x)}),tt(()=>{const x=ne.value;return x?o.projectGitRepoByName[x]:void 0},()=>{const x=ne.value;x&&Nt(()=>{ne.value===x&&Rn(x)})});const Zr=K(()=>xt.value||ne.value!==""||xe.value!=="");return tt(Zr,x=>{if(x){sl();return}Ti()}),tt(xe,x=>{if(!x){Os();return}wi(),Nt(()=>{Xa(x)})}),_s(()=>{mo.clear(),Os(),Ti(),qr()}),(x,R)=>(_(),F("section",{class:at(["thread-tree-root",{"chats-first":W.value}])},[Ka.value.length>0?(_(),F("section",F_,[Oe(hs,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":U.value,onClick:no},{left:dt(()=>[U.value?(_(),Qe(Cs,{key:1,class:"thread-icon"})):(_(),Qe(Su,{key:0,class:"thread-icon"}))]),default:dt(()=>[w("span",B_,D(h(r)("Pinned")),1)]),_:1},8,["aria-expanded"]),U.value?(_(),F("ul",U_,[(_(!0),F(ot,null,Zt(Ka.value,k=>(_(),Qe(Cu,{key:k.id,thread:k,selected:k.id===e.selectedThreadId,pinned:oo(k.id),"menu-open":Q(k.id),"show-status-indicator":So(k),"thread-state":$o(k),"inline-delete-confirming":pr(k.id),"automation-count":h(_e)(k.id),"automation-tooltip":h(At)(k.id),"request-label":No(k),"relative-time":bo(k),"delete-label":h(r)("Delete thread"),"confirm-delete-label":h(r)("Confirm delete"),"confirm-label":h(r)("Confirm"),"worktree-label":h(r)("Worktree thread"),"set-menu-wrap-ref":G=>wa(k.id,G),onSelect:G=>ln(k.id),onInlineDelete:G=>hr(k.id),onMenuToggle:G=>ct(k.id),onRowLeave:G=>E(k.id,G),onRowContextmenu:G=>_t(G,k.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))])):ve("",!0)])):ve("",!0),w("section",z_,[Oe(hs,{as:"button",class:"thread-tree-header-row section-toggle-row",type:"button","aria-expanded":H.value,onClick:Ya},{left:dt(()=>[H.value?(_(),Qe(Cs,{key:1,class:"thread-icon"})):(_(),Qe(Su,{key:0,class:"thread-icon"}))]),right:dt(()=>[w("div",{ref_key:"organizeMenuWrapRef",ref:Ro,class:"organize-menu-wrap"},[w("button",{class:"organize-menu-trigger",type:"button","aria-expanded":xt.value,"aria-label":h(r)("Organize threads"),title:h(r)("Organize threads"),onClick:gt(ga,["stop"])},[Oe(nf,{class:"thread-icon"})],8,q_),xt.value?(_(),F("div",{key:0,class:"organize-menu-panel",onClick:R[4]||(R[4]=gt(()=>{},["stop"]))},[w("p",W_,D(h(r)("Organize")),1),w("button",{class:"organize-menu-item","data-active":eo.value==="project",type:"button",onClick:R[0]||(R[0]=k=>rn("project"))},[w("span",null,D(h(r)("By project")),1),eo.value==="project"?(_(),F("span",V_,"✓")):ve("",!0)],8,G_),w("button",{class:"organize-menu-item","data-active":eo.value==="chronological",type:"button",onClick:R[1]||(R[1]=k=>rn("chronological"))},[w("span",null,D(h(r)("Chronological list")),1),eo.value==="chronological"?(_(),F("span",Y_,"✓")):ve("",!0)],8,K_),w("button",{class:"organize-menu-item","data-active":W.value,type:"button",onClick:gr},[w("span",null,D(h(r)("Chats first")),1),W.value?(_(),F("span",Q_,"✓")):ve("",!0)],8,J_),R[40]||(R[40]=w("div",{class:"organize-menu-separator"},null,-1)),w("p",X_,D(h(r)("Sort by")),1),w("button",{class:"organize-menu-item","data-active":he.value==="created",type:"button",onClick:R[2]||(R[2]=k=>ya("created"))},[w("span",null,D(h(r)("Created")),1),he.value==="created"?(_(),F("span",eP,"✓")):ve("",!0)],8,Z_),w("button",{class:"organize-menu-item","data-active":he.value==="updated",type:"button",onClick:R[3]||(R[3]=k=>ya("updated"))},[w("span",null,D(h(r)("Updated")),1),he.value==="updated"?(_(),F("span",nP,"✓")):ve("",!0)],8,tP),R[41]||(R[41]=w("div",{class:"organize-menu-separator"},null,-1)),w("button",{class:"organize-menu-item",type:"button",onClick:P},[w("span",null,D(h(r)("Recycle bin")),1)])])):ve("",!0)],512)]),default:dt(()=>[w("span",H_,D(h(r)("Projects")),1)]),_:1},8,["aria-expanded"]),H.value?(_(),F(ot,{key:0},[h(me)?(_(),F("p",oP,D(h(me)),1)):ve("",!0),bn.value&&Lt.value.length===0?(_(),F("p",rP,D(h(r)("No matching threads")),1)):e.isLoading&&e.groups.length===0?(_(),F("p",aP,D(h(r)("Loading threads...")),1)):zn.value?(_(),F("ul",sP,[(_(!0),F(ot,null,Zt(sn.value,k=>(_(),Qe(Cu,{key:k.id,thread:k,selected:k.id===e.selectedThreadId,pinned:oo(k.id),"menu-open":Q(k.id),"show-status-indicator":So(k),"thread-state":$o(k),"inline-delete-confirming":pr(k.id),"automation-count":h(_e)(k.id),"automation-tooltip":h(At)(k.id),"request-label":No(k),"relative-time":bo(k),"delete-label":h(r)("Delete thread"),"confirm-delete-label":h(r)("Confirm delete"),"confirm-label":h(r)("Confirm"),"worktree-label":h(r)("Worktree thread"),"set-menu-wrap-ref":G=>wa(k.id,G),onSelect:G=>ln(k.id),onInlineDelete:G=>hr(k.id),onMenuToggle:G=>ct(k.id),onRowLeave:G=>E(k.id,G),onRowContextmenu:G=>_t(G,k.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))])):(_(),F("div",{key:4,ref_key:"groupsContainerRef",ref:Ms,class:"thread-tree-groups",style:er(h(vt))},[(_(!0),F(ot,null,Zt(Lt.value,k=>(_(),F("article",{key:k.projectName,ref_for:!0,ref:G=>h(Ct)(k.projectName,G),class:"project-group","data-project-name":k.projectName,"data-expanded":!un(k.projectName),"data-dragging":h(kt)(k.projectName),style:er(h(mn)(k.projectName))},[Oe(hs,{as:"div",class:"project-header-row",role:"button",tabindex:"0",onClick:G=>wr(k.projectName),onContextmenu:gt(G=>Ja(k.projectName),["prevent"]),onKeydown:[G=>gi(G,k.projectName),Ao(gt(G=>wr(k.projectName),["prevent"]),["enter"]),Ao(gt(G=>wr(k.projectName),["prevent"]),["space"])]},{left:dt(()=>[w("span",lP,[w("span",uP,[un(k.projectName)?(_(),Qe(Wf,{key:0,class:"thread-icon"})):(_(),Qe(xA,{key:1,class:"thread-icon"}))]),w("span",cP,[un(k.projectName)?(_(),Qe(Su,{key:0,class:"thread-icon"})):(_(),Qe(Cs,{key:1,class:"thread-icon"}))])])]),right:dt(()=>[w("div",mP,[w("div",{ref_for:!0,ref:G=>Go(k.projectName,G),class:"project-menu-wrap"},[w("button",{class:"project-menu-trigger",type:"button",title:"project_menu",onClick:gt(G=>Ns(k.projectName),["stop"])},[Oe(nf,{class:"thread-icon"})],8,vP),va(k.projectName)?(_(),F("div",{key:0,class:"project-menu-panel","data-open-direction":te.value[k.projectName]??"down",onClick:R[6]||(R[6]=gt(()=>{},["stop"]))},[Ae.value==="actions"?(_(),F(ot,{key:0},[w("button",{class:"project-menu-item",type:"button",onClick:G=>Yt(k.projectName)},D(h(r)("Browse files")),9,yP),w("button",{class:"project-menu-item",type:"button",onClick:G=>Gt(k.projectName)},D(h(r)("Export Project")),9,wP),w("button",{class:"project-menu-item",type:"button",onClick:G=>h(zr)(k.projectName)},D(h(Tt)(k.projectName)?h(r)("Manage automations…"):h(r)("Add automation…")),9,bP),e.projectGitRepoByName[k.projectName]?(_(),F("button",{key:0,class:"project-menu-item",type:"button",onClick:G=>vi(k.projectName)},D(h(r)("New worktree")),9,TP)):ve("",!0),w("button",{class:"project-menu-item",type:"button",onClick:G=>Hn(k)},D(h(r)("Rename project")),9,SP),w("button",{class:"project-menu-item project-menu-item-danger",type:"button",onClick:G=>$s(k.projectName)},D(h(r)("Remove")),9,CP)],64)):(_(),F(ot,{key:1},[w("label",xP,D(h(r)("Project name")),1),xn(w("input",{"onUpdate:modelValue":R[5]||(R[5]=G=>Fe.value=G),class:"project-menu-input",type:"text",onInput:G=>al(k.projectName)},null,40,kP),[[Nn,Fe.value]])],64))],8,gP)):ve("",!0)],512),w("button",{class:"thread-start-button",type:"button","aria-label":An(k.projectName),title:An(k.projectName),onClick:gt(G=>Kr(k.projectName),["stop"])},[Oe(el,{class:"thread-icon"})],8,IP)])]),default:dt(()=>[w("span",{class:"project-main-button","data-dragging-handle":h(kt)(k.projectName),onMousedown:gt(G=>h(Fn)(G,k.projectName),["left"])},[w("span",{class:"project-title",title:Tn(k.projectName)},D(Lo(k)),9,fP),h(Tt)(k.projectName)?(_(),F("span",{key:0,class:"thread-row-automation-chip",title:h(Br)(k.projectName)},[Oe(bs,{class:"thread-row-automation-icon"}),h(bt)(k.projectName)>1?(_(),F("span",hP,D(h(bt)(k.projectName)),1)):ve("",!0)],8,pP)):ve("",!0)],40,dP)]),_:2},1032,["onClick","onContextmenu","onKeydown"]),Za(k)?(_(),F("ul",AP,[(_(!0),F(ot,null,Zt(Qr(k),G=>(_(),Qe(Cu,{key:G.id,thread:G,selected:G.id===e.selectedThreadId,pinned:oo(G.id),"menu-open":Q(G.id),"show-status-indicator":So(G),"thread-state":$o(G),"inline-delete-confirming":pr(G.id),"automation-count":h(_e)(G.id),"automation-tooltip":h(At)(G.id),"request-label":No(G),"relative-time":bo(G),"delete-label":h(r)("Delete thread"),"confirm-delete-label":h(r)("Confirm delete"),"confirm-label":h(r)("Confirm"),"worktree-label":h(r)("Worktree thread"),"set-menu-wrap-ref":We=>wa(G.id,We),onSelect:We=>ln(G.id),onInlineDelete:We=>hr(G.id),onMenuToggle:We=>ct(G.id),onRowLeave:We=>E(G.id,We),onRowContextmenu:We=>_t(We,G.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))])):(_(),Qe(hs,{key:1,as:"p",class:"project-empty-row"},{left:dt(()=>[...R[42]||(R[42]=[w("span",{class:"project-empty-spacer"},null,-1)])]),default:dt(()=>[w("span",_P,D(h(r)("No threads")),1)]),_:1})),Xr(k)?(_(),Qe(hs,{key:2,class:"thread-show-more-row"},{left:dt(()=>[...R[43]||(R[43]=[w("span",{class:"thread-show-more-spacer"},null,-1)])]),default:dt(()=>[w("button",{class:"thread-show-more-button",type:"button",onClick:G=>Wn(k.projectName)},D(ro(k.projectName)?"Show less":"Show more"),9,PP)]),_:2},1024)):ve("",!0)],12,iP))),128))],4))],64)):ve("",!0)]),w("section",RP,[Oe(hs,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":be.value,onClick:wo},{left:dt(()=>[be.value?(_(),Qe(Cs,{key:1,class:"thread-icon"})):(_(),Qe(Su,{key:0,class:"thread-icon"}))]),right:dt(()=>[w("div",MP,[w("button",{class:"chats-section-action",type:"button","aria-label":h(r)("New chat"),title:h(r)("New chat"),onClick:R[7]||(R[7]=gt(k=>x.$emit("start-new-chat"),["stop"]))},[Oe(el,{class:"thread-icon"})],8,jP)])]),default:dt(()=>[w("span",EP,D(h(r)("Chats")),1)]),_:1},8,["aria-expanded"]),be.value&&to.value.length===0?(_(),F("p",LP,D(h(r)("No chats")),1)):be.value?(_(),F("ul",NP,[(_(!0),F(ot,null,Zt(nn.value,k=>(_(),Qe(Cu,{key:k.id,thread:k,selected:k.id===e.selectedThreadId,pinned:oo(k.id),"menu-open":Q(k.id),"show-status-indicator":So(k),"thread-state":$o(k),"inline-delete-confirming":pr(k.id),"automation-count":h(_e)(k.id),"automation-tooltip":h(At)(k.id),"request-label":No(k),"relative-time":bo(k),"delete-label":h(r)("Delete thread"),"confirm-delete-label":h(r)("Confirm delete"),"confirm-label":h(r)("Confirm"),"worktree-label":h(r)("Worktree thread"),"set-menu-wrap-ref":G=>wa(k.id,G),onSelect:G=>ln(k.id),onInlineDelete:G=>hr(k.id),onMenuToggle:G=>ct(k.id),onRowLeave:G=>E(k.id,G),onRowContextmenu:G=>_t(G,k.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))])):ve("",!0),be.value&&Va.value?(_(),Qe(hs,{key:2,class:"thread-show-more-row"},{left:dt(()=>[...R[44]||(R[44]=[w("span",{class:"thread-show-more-spacer"},null,-1)])]),default:dt(()=>[w("button",{class:"thread-show-more-button",type:"button",onClick:yr},D(le.value?"Show less":"Show more"),1)]),_:1})):ve("",!0)]),(_(),Qe(Ki,{to:"body"},[qt.value?(_(),F("div",{key:0,ref_key:"openThreadMenuPanelRef",ref:Bn,class:"thread-menu-panel thread-menu-panel-fixed",style:er(Le.value),"data-open-direction":ba(qt.value.id),onClick:R[17]||(R[17]=gt(()=>{},["stop"]))},[w("button",{class:"thread-menu-item",type:"button",onClick:R[8]||(R[8]=k=>h(Ur)(qt.value.id))},D(h(Ye)(qt.value.id)?h(r)("Manage automations…"):h(r)("Add automation…")),1),w("button",{class:"thread-menu-item",type:"button",onClick:R[9]||(R[9]=k=>fr(qt.value.id))},D(h(r)("Browse files")),1),w("button",{class:"thread-menu-item",type:"button",onClick:R[10]||(R[10]=k=>dn(qt.value.id))},D(h(r)("Export Project")),1),w("button",{class:"thread-menu-item",type:"button",onClick:R[11]||(R[11]=k=>C(qt.value.id))},D(h(r)("Copy path")),1),w("button",{class:"thread-menu-item",type:"button",disabled:qt.value.id!==e.selectedThreadId,title:qt.value.id===e.selectedThreadId?h(r)("Copy chat"):h(r)("Open this chat before copying"),onClick:R[12]||(R[12]=k=>In(qt.value.id))},D(h(r)("Copy chat")),9,OP),w("button",{class:"thread-menu-item",type:"button",onClick:R[13]||(R[13]=k=>dr(qt.value.id))},D(h(r)("Create chat fork")),1),w("button",{class:"thread-menu-item",type:"button",onClick:R[14]||(R[14]=k=>St(qt.value.id))},D(oo(qt.value.id)?h(r)("Unpin thread"):h(r)("Pin thread")),1),w("button",{class:"thread-menu-item",type:"button",onClick:R[15]||(R[15]=k=>_n(qt.value.id,qt.value.title))},D(h(r)("Rename thread")),1),w("button",{class:"thread-menu-item thread-menu-item-danger",type:"button",onClick:R[16]||(R[16]=k=>Wt(qt.value.id,qt.value.title))},D(h(r)("Delete thread")),1)],12,$P)):ve("",!0)])),Oe(kd,{open:Ke.value,title:h(r)("Rename thread"),subtitle:h(r)("Make it short and recognizable."),onClose:Kt},{footer:dt(()=>[w("button",{class:"rename-thread-button",type:"button",onClick:Kt},D(h(r)("Cancel")),1),w("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",onClick:Pn},D(h(r)("Save")),1)]),default:dt(()=>[xn(w("input",{ref_key:"renameThreadInputRef",ref:ut,"onUpdate:modelValue":R[18]||(R[18]=k=>Ze.value=k),class:"rename-thread-input",type:"text",placeholder:h(r)("Add title..."),onKeydown:Ao(gt(Pn,["prevent"]),["enter"])},null,40,DP),[[Nn,Ze.value]])]),_:1},8,["open","title","subtitle"]),Oe(kd,{open:fe.value,title:Ht.value?h(r)("Archive chat and remove automations?"):h(r)("Delete thread?"),subtitle:js.value,onClose:vn},{footer:dt(()=>[w("button",{class:"rename-thread-button",type:"button",onClick:vn},D(h(r)("Cancel")),1),w("button",{class:"rename-thread-button rename-thread-button-danger",type:"button",onClick:mi},D(Ht.value?h(r)("Archive and remove"):h(r)("Delete")),1)]),_:1},8,["open","title","subtitle"]),Oe(kd,{open:f.value,title:h(r)("Recycle bin"),subtitle:h(r)("Threads you removed are kept here so you can restore them."),size:"md",onClose:R[19]||(R[19]=k=>f.value=!1)},{default:dt(()=>[w("div",FP,[h(i).length===0?(_(),F("div",BP,D(h(r)("Recycle bin is empty.")),1)):(_(),F("ul",UP,[(_(!0),F(ot,null,Zt(h(i),k=>(_(),F("li",{key:k.id,class:"recycle-bin-item"},[w("div",zP,[w("span",HP,D(k.title),1),k.projectName?(_(),F("span",qP,D(k.projectName),1)):ve("",!0),w("span",WP,D(jo(k.archivedAtIso)),1)]),w("div",GP,[w("button",{class:"recycle-bin-button recycle-bin-button-primary",type:"button",disabled:y.value===k.id,onClick:G=>B(k.id)},D(y.value===k.id?h(r)("Restoring…"):h(r)("Restore")),9,VP),w("button",{class:"recycle-bin-button recycle-bin-button-danger",type:"button",onClick:G=>h(c)(k.id)},D(h(r)("Delete permanently")),9,KP)])]))),128))])),b.value?(_(),F("p",YP,D(b.value),1)):ve("",!0)])]),_:1},8,["open","title","subtitle"]),(_(),Qe(Ki,{to:"body"},[h(A)?(_(),F("div",{key:0,class:"rename-thread-overlay",onClick:R[39]||(R[39]=gt((...k)=>h(Zn)&&h(Zn)(...k),["self"]))},[w("div",{class:"rename-thread-panel automation-thread-panel",role:"dialog","aria-modal":"true","aria-label":h(M)==="project"?h(r)("Project automation"):h(r)("Thread automation")},[w("h3",QP,D(h(Z)==="edit"?h(r)("Edit automation"):h(r)("Add automation")),1),w("p",XP,D(h(st)),1),h(ce)&&h(Z)==="create"?(_(),F("div",ZP,[R[45]||(R[45]=w("span",{class:"automation-thread-label"},"Target",-1)),w("div",eR,[w("button",{class:at(["automation-target-mode",{"is-active":h(re)==="thread"}]),type:"button",onClick:R[20]||(R[20]=k=>h(Wa)("thread"))}," Existing chat ",2),w("button",{class:at(["automation-target-mode",{"is-active":h(re)==="project"}]),type:"button",onClick:R[21]||(R[21]=k=>h(Wa)("project"))}," Project ",2)]),w("div",tR,[Oe(ci,{modelValue:h(je),"onUpdate:modelValue":R[22]||(R[22]=k=>kn(je)?je.value=k:null),class:"automation-thread-dropdown",options:h(mt),placeholder:h(re)==="project"?"Select project":"Select chat","enable-search":"","search-placeholder":h(re)==="project"?"Search projects":"Search chats"},null,8,["modelValue","options","placeholder","search-placeholder"])])])):ve("",!0),h(Je).length>0?(_(),F("div",{key:1,class:"automation-thread-list","aria-label":h(M)==="project"?"Project automations":"Thread automations"},[(_(!0),F(ot,null,Zt(h(Je),k=>(_(),F("button",{key:k.id,class:at(["automation-thread-list-item",{"is-active":k.id===h(z)}]),type:"button",onClick:G=>h(sr)(k.id)},[w("span",null,D(k.name),1),w("small",null,D(k.status==="PAUSED"?"Paused":"Active"),1)],10,oR))),128)),w("button",{class:"automation-thread-list-item automation-thread-list-add",type:"button",onClick:R[23]||(R[23]=(...k)=>h(Uo)&&h(Uo)(...k))},D(h(r)("Add another automation")),1)],8,nR)):ve("",!0),w("label",rR,[w("span",aR,D(h(r)("Name")),1),xn(w("input",{"onUpdate:modelValue":R[24]||(R[24]=k=>h(He).name=k),class:"rename-thread-input",type:"text",placeholder:h(r)("Automation name")},null,8,sR),[[Nn,h(He).name]])]),w("label",iR,[w("span",lR,D(h(r)("Prompt")),1),xn(w("textarea",{"onUpdate:modelValue":R[25]||(R[25]=k=>h(He).prompt=k),class:"automation-thread-textarea",rows:"6",placeholder:h(r)("Describe what the automation should do")},null,8,uR),[[Nn,h(He).prompt]])]),w("div",cR,[w("span",dR,D(h(r)("Schedule")),1),w("div",fR,[w("button",{class:at(["automation-schedule-mode",{"is-active":h(Ue).mode==="daily"}]),type:"button",onClick:R[26]||(R[26]=k=>h(ar)("daily"))},D(h(r)("Daily")),3),w("button",{class:at(["automation-schedule-mode",{"is-active":h(Ue).mode==="interval"}]),type:"button",onClick:R[27]||(R[27]=k=>h(ar)("interval"))},D(h(r)("Interval")),3),w("button",{class:at(["automation-schedule-mode",{"is-active":h(Ue).mode==="advanced"}]),type:"button",onClick:R[28]||(R[28]=k=>h(ar)("advanced"))}," RRULE ",2)]),h(Ue).mode==="daily"?(_(),F("div",pR,[w("span",hR,D(h(r)("Run every day at")),1),xn(w("input",{"onUpdate:modelValue":R[29]||(R[29]=k=>h(Ue).dailyTime=k),class:"automation-schedule-time",type:"time",onInput:R[30]||(R[30]=(...k)=>h(zt)&&h(zt)(...k))},null,544),[[Nn,h(Ue).dailyTime]])])):h(Ue).mode==="interval"?(_(),F("div",mR,[w("span",vR,D(h(r)("Run every")),1),xn(w("input",{"onUpdate:modelValue":R[31]||(R[31]=k=>h(Ue).interval=k),class:"automation-schedule-number",type:"number",min:"1",step:"1",onInput:R[32]||(R[32]=(...k)=>h(zt)&&h(zt)(...k))},null,544),[[Nn,h(Ue).interval,void 0,{number:!0}]]),Oe(ci,{class:"automation-schedule-unit-dropdown","model-value":h(Ue).intervalUnit,options:h(q),placeholder:h(r)("Unit"),"onUpdate:modelValue":h(Ha)},null,8,["model-value","options","placeholder","onUpdate:modelValue"])])):ve("",!0),h(Ue).mode==="advanced"?xn((_(),F("input",{key:2,"onUpdate:modelValue":R[33]||(R[33]=k=>h(He).rrule=k),class:"rename-thread-input",type:"text",placeholder:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",onInput:R[34]||(R[34]=(...k)=>h(pa)&&h(pa)(...k))},null,544)),[[Nn,h(He).rrule]]):ve("",!0),w("p",gR,D(h(et)),1)]),w("div",yR,[w("span",wR,D(h(r)("Status")),1),Oe(ci,{class:"automation-thread-dropdown","model-value":h(He).status,options:h(ae),placeholder:h(r)("Status"),"onUpdate:modelValue":h(fa)},null,8,["model-value","options","placeholder","onUpdate:modelValue"])]),h(Re)?(_(),F("p",bR,D(h(Re)),1)):h(ke)?(_(),F("p",TR,D(h(ke)),1)):ve("",!0),w("div",SR,[h(Z)==="edit"&&h(M)==="thread"?(_(),F("button",{key:0,class:"rename-thread-button",type:"button",disabled:h(Ve)||h(Ne),onClick:R[35]||(R[35]=(...k)=>h(Dn)&&h(Dn)(...k))},D(h(Ne)?h(r)("Running…"):h(r)("Run now")),9,CR)):ve("",!0),h(Z)==="edit"?(_(),F("button",{key:1,class:"rename-thread-button rename-thread-button-danger",type:"button",disabled:h(Ve)||h(Ne),onClick:R[36]||(R[36]=(...k)=>h(Po)&&h(Po)(...k))},D(h(r)("Remove")),9,xR)):ve("",!0),w("button",{class:"rename-thread-button",type:"button",disabled:h(Ve)||h(Ne),onClick:R[37]||(R[37]=(...k)=>h(Zn)&&h(Zn)(...k))},D(h(r)("Cancel")),9,kR),w("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",disabled:h(Ve)||h(Ne),onClick:R[38]||(R[38]=(...k)=>h(zo)&&h(zo)(...k))},D(h(Ve)?h(r)("Saving…"):h(r)("Save")),9,IR)])],8,JP)])):ve("",!0)]))],2))}}),_R=It(AR,[["__scopeId","data-v-e9f9e36a"]]),PR={class:"content-header"},RR=["title"],ER={class:"content-actions"},MR=hn({__name:"ContentHeader",props:{title:{},accent:{type:Boolean}},setup(e){return(t,n)=>(_(),F("header",PR,[w("div",{class:at(["content-leading",{"is-accent":e.accent}])},[_o(t.$slots,"leading",{},void 0)],2),w("h1",{class:at(["content-title",{"is-accent":e.accent}]),title:e.title},D(e.title),11,RR),w("div",ER,[_o(t.$slots,"actions",{},void 0)])]))}}),jR=It(MR,[["__scopeId","data-v-61739409"]]),Rm=.0025,Id=3,Em=2,LR=256;function NR(e){var ge;const t=S("idle"),n=S(typeof navigator<"u"&&!!((ge=navigator.mediaDevices)!=null&&ge.getUserMedia)),o=S(0),r=S(null);let a=null,s=null,i=[],l=null,d=null,c=null,v=null,f=[],b=!1,y=!1,P=null;function B(){P&&(P.abort(),P=null),t.value==="transcribing"&&(t.value="idle")}function L(){const Y=r.value;if(!Y||typeof window>"u")return;const pe=Y.getContext("2d");if(!pe)return;const ne=Math.max(1,Math.floor(Y.clientWidth)),xe=Math.max(1,Math.floor(Y.clientHeight||36)),$e=window.devicePixelRatio||1,te=Math.max(1,Math.floor(ne*$e)),de=Math.max(1,Math.floor(xe*$e));(Y.width!==te||Y.height!==de)&&(Y.width=te,Y.height=de),pe.setTransform($e,0,0,$e,0,0),pe.clearRect(0,0,ne,xe);const Le=Math.max(12,Math.floor(ne/(Id+Em))),Ae=f.slice(-Le),Fe=Math.max(0,Le-Ae.length),Ke=xe/2,lt=getComputedStyle(Y).color||"#000000";for(let Ze=0;Ze<Le;Ze+=1){const ut=Ae[Ze-Fe]??0,N=Math.max(.08,Math.min(1,ut*18))*Ke,oe=Ze*(Id+Em);pe.globalAlpha=ut<=Rm?.35:1,pe.fillStyle=lt,pe.fillRect(oe,Ke-N,Id,N*2)}pe.globalAlpha=1}function j(){f=[],o.value=0,L()}function U(){c&&(c.disconnect(),c.onaudioprocess=null,c=null),d&&(d.disconnect(),d=null),l&&(l.close(),l=null),v=null}function H(Y){if(typeof window>"u")return;const pe=window.webkitAudioContext,ne=window.AudioContext??pe;ne&&(U(),j(),l=new ne,d=l.createMediaStreamSource(Y),c=l.createScriptProcessor(2048,1,1),v=performance.now(),c.onaudioprocess=xe=>{const $e=xe.inputBuffer.getChannelData(0);let te=0;for(let de=0;de<$e.length;de+=1){const Le=Math.abs($e[de]??0);te+=Le<Rm?0:Le}f.push(te/$e.length),f.length>LR&&f.shift(),v!==null&&(o.value=Math.max(0,performance.now()-v)),L()},d.connect(c),c.connect(l.destination),L())}async function be(){var Y;if(t.value==="transcribing"&&B(),!(t.value!=="idle"||!n.value||b)){b=!0,y=!1;try{s=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1}}),i=[],a=new MediaRecorder(s),a.ondataavailable=pe=>{pe.data.size>0&&i.push(pe.data)},a.onstop=()=>{var xe;const pe=i,ne=(a==null?void 0:a.mimeType)||((xe=pe[0])==null?void 0:xe.type)||"audio/webm";Se(),he(pe,ne)},H(s),a.start(250),t.value="recording",y&&le()}catch(pe){Se(),t.value="idle",(Y=e.onError)==null||Y.call(e,pe)}finally{b=!1}}}function le(){if(b&&t.value==="idle"){y=!0;return}if(!(t.value!=="recording"||!a)&&a.state!=="inactive"){t.value="transcribing";try{a.requestData()}catch{}a.stop()}}function W(){y=!1,B(),Se(),t.value="idle"}async function he(Y,pe){var $e,te,de,Le,Ae;if(Y.length===0){($e=e.onEmpty)==null||$e.call(e),t.value="idle";return}const ne=new Blob(Y,{type:pe});t.value="transcribing";let xe=null;try{const Fe=pe.split(/[/;]/)[1]??"webm",Ke=new FormData;Ke.append("file",ne,`codex.${Fe}`);const lt=((te=e.getLanguage)==null?void 0:te.call(e).trim())??"";lt&&lt.toLowerCase()!=="auto"&&Ke.append("language",lt),xe=new AbortController,P=xe;const Ze=await fetch("/codex-api/transcribe",{method:"POST",body:Ke,signal:xe.signal}),ut=await Ze.text();let fe=null;try{fe=ut.trim()?JSON.parse(ut):null}catch{fe=null}if(!Ze.ok){const oe=(de=fe==null?void 0:fe.error)==null?void 0:de.trim(),ue=ut.trim();throw new Error(oe||ue||`Transcription failed: ${Ze.status}`)}const N=((fe==null?void 0:fe.text)??"").trim();N.length>0?e.onTranscript(N):(Le=e.onEmpty)==null||Le.call(e)}catch(Fe){if(Fe instanceof DOMException&&Fe.name==="AbortError")return;(Ae=e.onError)==null||Ae.call(e,Fe)}finally{xe&&P===xe&&(P=null),t.value==="transcribing"&&(t.value="idle")}}function Se(){U(),j(),a&&(a.ondataavailable=null,a.onstop=null,a=null),s&&(s.getTracks().forEach(Y=>Y.stop()),s=null),i=[]}_s(()=>{W()});function Pe(){if(t.value==="recording"){le();return}(t.value==="idle"||t.value==="transcribing")&&be()}return{state:t,isSupported:n,recordingDurationMs:o,waveformCanvasRef:r,startRecording:be,stopRecording:le,toggleRecording:Pe,cancel:W}}const $R={},OR={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function DR(e,t){return _(),F("svg",OR,[...t[0]||(t[0]=[w("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 FR=It($R,[["render",DR]]),BR={},UR={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function zR(e,t){return _(),F("svg",UR,[...t[0]||(t[0]=[w("path",{d:"M4 8V4h4"},null,-1),w("path",{d:"M20 8V4h-4"},null,-1),w("path",{d:"M4 16v4h4"},null,-1),w("path",{d:"M20 16v4h-4"},null,-1)])])}const HR=It(BR,[["render",zR]]),qR={},WR={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function GR(e,t){return _(),F("svg",WR,[...t[0]||(t[0]=[w("path",{d:"M8 4v4H4"},null,-1),w("path",{d:"M16 4v4h4"},null,-1),w("path",{d:"M8 20v-4H4"},null,-1),w("path",{d:"M16 20v-4h4"},null,-1)])])}const VR=It(qR,[["render",GR]]),KR={},YR={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function JR(e,t){return _(),F("svg",YR,[...t[0]||(t[0]=[w("path",{stroke:"none",fill:"none",d:"M0 0h24v24H0z"},null,-1),w("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 QR=It(KR,[["render",JR]]),XR=["aria-label"],ZR=8,ti=8,eE=hn({__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=S(null),s=S(null),i=S({});let l=!1;const d=K(()=>o.open),c=K(()=>o.width==="lg"?"composer-popover-panel--lg":"composer-popover-panel--md");function v(L,j,U){return Math.min(Math.max(j,L),U)}function f(){var Pe,ge;if(!d.value)return;const L=a.value;if(!L||typeof window>"u")return;const j=L.getBoundingClientRect(),U=window.innerWidth,H=window.innerHeight,be=Math.max(0,U-ti*2),le=Math.min(((Pe=s.value)==null?void 0:Pe.offsetWidth)??288,be),W=((ge=s.value)==null?void 0:ge.offsetHeight)??0;let he;o.align==="end"?he=j.right-le:o.align==="center"?he=j.left+(j.width-le)/2:he=j.left,he=v(he,ti,Math.max(ti,U-le-ti));let Se=j.top-W-ZR;Se=v(Se,ti,Math.max(ti,H-W-ti)),i.value={position:"fixed",left:`${he}px`,right:"auto",top:`${Se}px`,bottom:"auto",width:`${le}px`}}function b(){l||typeof window>"u"||(window.addEventListener("resize",f),window.addEventListener("scroll",f,!0),window.addEventListener("orientationchange",f),l=!0)}function y(){!l||typeof window>"u"||(window.removeEventListener("resize",f),window.removeEventListener("scroll",f,!0),window.removeEventListener("orientationchange",f),l=!1)}tt(d,L=>{if(!L){y(),i.value={};return}b(),Nt(()=>{var j;(j=s.value)==null||j.focus(),f(),window.requestAnimationFrame(f)})}),_s(()=>{y()});function P(){r("update:open",!o.open)}function B(L){var W,he,Se;if(L.key==="Escape"){r("update:open",!1);return}const j=s.value;if(!j)return;const U=Array.from(j.querySelectorAll("button")).filter(Pe=>!Pe.disabled&&Pe.offsetParent!==null);if(U.length===0)return;if(L.key==="Home"){L.preventDefault(),(W=U[0])==null||W.focus();return}if(L.key==="End"){L.preventDefault(),(he=U[U.length-1])==null||he.focus();return}if(L.key!=="ArrowDown"&&L.key!=="ArrowUp")return;L.preventDefault();let H=U.findIndex(Pe=>Pe===document.activeElement);H<0&&(H=L.key==="ArrowDown"?-1:0);const be=L.key==="ArrowDown"?1:-1,le=(H+be+U.length)%U.length;(Se=U[le])==null||Se.focus()}return t({root:a}),(L,j)=>(_(),F("div",{ref_key:"rootRef",ref:a,class:"composer-popover-anchor"},[_o(L.$slots,"trigger",{toggle:P,isOpen:d.value},void 0),Oe(Xl,{name:"composer-popover"},{default:dt(()=>[d.value?(_(),F("div",{key:0,ref_key:"panelRef",ref:s,class:at(["composer-popover-panel",[c.value,e.panelClass]]),style:er(i.value),role:"menu",tabindex:"-1","aria-label":e.ariaLabel,onKeydown:B},[_o(L.$slots,"default",{},void 0,!0)],46,XR)):ve("",!0)]),_:3})],512))}}),Qu=It(eE,[["__scopeId","data-v-f7444b02"]]),tE=["aria-label"],nE={class:"composer-popover-group-label"},oE=["aria-selected","onMousedown"],rE={class:"thread-composer-slash-body"},aE={class:"thread-composer-slash-name"},sE={class:"thread-composer-slash-desc"},iE={class:"thread-composer-slash-kind"},lE={class:"composer-popover-group-label composer-popover-group-label--skills"},uE=["aria-selected","onMousedown"],cE=["aria-label","title"],dE={class:"thread-composer-slash-body thread-composer-slash-body--skill"},fE={class:"thread-composer-slash-skill-name"},pE={class:"thread-composer-slash-desc thread-composer-slash-desc--skill"},hE=hn({__name:"ComposerSlashMenu",props:{commands:{},highlightedIndex:{}},emits:["select"],setup(e,{emit:t}){const n=e,o=t,{t:r}=da(),a=S(null),s=K(()=>n.commands.filter(v=>v.group!=="skill")),i=K(()=>n.commands.filter(v=>v.group==="skill"));tt(()=>n.highlightedIndex,async()=>{var v,f;await Nt(),(f=(v=a.value)==null?void 0:v.querySelector(".is-active"))==null||f.scrollIntoView({block:"nearest"})});function l(v){return r(v==="rpc"?"Action":v==="text"?"Prompt":v==="skill"?"Skill":"Local")}function d(v){return v==="system"?"S":v==="repo"?"R":v==="plugin"?"P":"U"}function c(v){return r(v==="system"?"System":v==="repo"?"Repo":v==="plugin"?"Plugin":"User")}return(v,f)=>(_(),F("div",{ref_key:"rootRef",ref:a,class:"composer-popover",role:"listbox","aria-label":h(r)("Commands")},[s.value.length>0?(_(),F(ot,{key:0},[w("div",nE,D(h(r)("Commands")),1),(_(!0),F(ot,null,Zt(s.value,(b,y)=>(_(),F("button",{key:b.id,class:at(["thread-composer-slash-row",{"is-active":y===e.highlightedIndex}]),type:"button",role:"option","aria-selected":y===e.highlightedIndex,onMousedown:gt(P=>o("select",b),["prevent"])},[f[0]||(f[0]=w("span",{class:"thread-composer-slash-prefix","aria-hidden":"true"},"/",-1)),w("span",rE,[w("span",aE,D(b.id),1),w("span",sE,D(h(r)(b.description)),1)]),w("span",iE,D(l(b.kind)),1)],42,oE))),128))],64)):ve("",!0),i.value.length>0?(_(),F(ot,{key:1},[w("div",lE,D(h(r)("Skills")),1),(_(!0),F(ot,null,Zt(i.value,(b,y)=>(_(),F("button",{key:b.skillPath||b.id,class:at(["thread-composer-slash-row thread-composer-slash-row--skill",{"is-active":s.value.length+y===e.highlightedIndex}]),type:"button",role:"option","aria-selected":s.value.length+y===e.highlightedIndex,onMousedown:gt(P=>o("select",b),["prevent"])},[w("span",{class:at(["thread-composer-slash-skill-icon",`is-${b.scope||"user"}`]),"aria-label":c(b.scope),title:c(b.scope)},D(d(b.scope)),11,cE),w("span",dE,[w("span",fE,D(b.displayName||b.id),1),w("span",pE,D(b.description),1)])],42,uE))),128))],64)):ve("",!0)],8,tE))}}),mE=It(hE,[["__scopeId","data-v-ca16aa11"]]),vE=["data-streaming"],gE=["aria-expanded"],yE={class:"thread-composer-plan-panel-title"},wE={key:0,class:"thread-composer-plan-panel-badge"},bE={class:"thread-composer-plan-panel-progress"},TE=["title"],SE=["data-status"],CE={class:"thread-composer-plan-panel-latest-text"},xE={class:"thread-composer-plan-panel-popover-content"},kE={class:"thread-composer-plan-panel-popover-scroll"},IE={class:"thread-composer-plan-panel-popover-head"},AE={class:"thread-composer-plan-panel-title"},_E={class:"thread-composer-plan-panel-progress"},PE={key:0,class:"thread-composer-plan-panel-popover-section"},RE={class:"thread-composer-plan-panel-section-label"},EE=["title"],ME={class:"thread-composer-plan-panel-popover-section"},jE={class:"thread-composer-plan-panel-section-label"},LE={class:"thread-composer-plan-panel-steps"},NE=["data-status"],$E=["data-status"],OE=["title"],DE={class:"thread-composer-plan-panel-popover-footer"},FE=["disabled","data-state"],BE=hn({__name:"ThreadComposerPlanPanel",props:{planPanel:{}},emits:["implement-plan"],setup(e,{emit:t}){const n=e,o=t,{t:r}=da(),a=S(!1),s=K(()=>{var f;return(((f=n.planPanel)==null?void 0:f.steps)??[]).filter(b=>b.status==="completed").length}),i=K(()=>{var f;const v=((f=n.planPanel)==null?void 0:f.steps)??[];if(v.length===0)return null;for(let b=v.length-1;b>=0;b-=1){const y=v[b];if(y.status==="inProgress")return y}return v[v.length-1]}),l=K(()=>{var y,P,B;const v=((P=(y=n.planPanel)==null?void 0:y.explanation)==null?void 0:P.trim())??"";if(!v)return"";const f=((B=v.split(/[。!?!?\n]/u)[0])==null?void 0:B.trim())??"";if(!f)return v;const b=80;return f.length>b?`${f.slice(0,b)}…`:f});function d(v){switch(v){case"completed":return"✓";case"inProgress":return"•";default:return"○"}}function c(){a.value=!1,o("implement-plan")}return(v,f)=>(_(),F("div",{class:"thread-composer-plan-panel","data-streaming":e.planPanel.streaming},[Oe(Qu,{open:a.value,align:"center",width:"lg","panel-class":"thread-composer-plan-panel-popover","aria-label":h(r)("Plan"),"onUpdate:open":f[1]||(f[1]=b=>a.value=b)},{trigger:dt(()=>{var b,y;return[w("button",{type:"button",class:"thread-composer-plan-panel-header","aria-expanded":a.value,onClick:f[0]||(f[0]=P=>a.value=!a.value)},[f[2]||(f[2]=w("span",{class:"thread-composer-plan-panel-icon","aria-hidden":"true"},"🗒",-1)),w("span",yE,D(h(r)("Plan")),1),e.planPanel.streaming?(_(),F("span",wE,D(h(r)("Updating")),1)):ve("",!0),w("span",bE,D(s.value)+"/"+D(e.planPanel.steps.length),1),w("span",{class:"thread-composer-plan-panel-latest",title:((b=i.value)==null?void 0:b.step)??""},[i.value?(_(),F("span",{key:0,class:"thread-composer-plan-panel-latest-status","data-status":i.value.status},D(d(i.value.status)),9,SE)):ve("",!0),w("span",CE,D(((y=i.value)==null?void 0:y.step)??""),1)],8,TE),Oe(Cs,{class:"thread-composer-plan-panel-chevron"})],8,gE)]}),default:dt(()=>[w("div",xE,[w("div",kE,[w("header",IE,[f[3]||(f[3]=w("span",{class:"thread-composer-plan-panel-icon","aria-hidden":"true"},"🗒",-1)),w("span",AE,D(h(r)("Plan")),1),w("span",_E,D(s.value)+"/"+D(e.planPanel.steps.length),1)]),e.planPanel.explanation?(_(),F("section",PE,[w("p",RE,D(h(r)("Summary")),1),w("p",{class:"thread-composer-plan-panel-explanation",title:e.planPanel.explanation},D(l.value),9,EE)])):ve("",!0),w("section",ME,[w("p",jE,D(h(r)("Steps"))+" ("+D(e.planPanel.steps.length)+")",1),w("ol",LE,[(_(!0),F(ot,null,Zt(e.planPanel.steps,(b,y)=>(_(),F("li",{key:`composer-plan-${e.planPanel.id}-${y}`,class:"thread-composer-plan-panel-step","data-status":b.status},[w("span",{class:"thread-composer-plan-panel-step-status","data-status":b.status},D(d(b.status)),9,$E),w("span",{class:"thread-composer-plan-panel-step-text",title:b.step},D(b.step),9,OE)],8,NE))),128))])])]),w("footer",DE,[w("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:c},D(e.planPanel.implemented?h(r)("Plan executed"):e.planPanel.streaming?h(r)("Implementing…"):h(r)("Implement plan")),9,FE)])])]),_:1},8,["open","aria-label"])],8,vE))}}),UE=It(BE,[["__scopeId","data-v-856e4361"]]),zE={key:0,class:"thread-composer-attachments"},HE=["src"],qE=["src","alt"],WE=["aria-label","disabled","onClick"],GE={key:1,class:"thread-composer-folder-chips"},VE=["title"],KE={class:"thread-composer-folder-chip-meta"},YE=["aria-label","disabled","onClick"],JE={key:2,class:"thread-composer-file-chips"},QE=["title"],XE=["aria-label","disabled","onClick"],ZE={key:3,class:"thread-composer-skill-chips"},eM=["title","aria-label","onClick"],tM=["aria-label","onClick"],nM=hn({__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(l){const d=l.trim();return d?!!(/^video\/|^data:video\//i.test(d)||o.test(d)):!1}function a(l){return l.total<=0?0:Math.round(l.processed/l.total*100)}function s(l){const d=l.trim();return d?d.endsWith("/SKILL.md")?d:`${d.replace(/\/+$/,"")}/SKILL.md`:""}function i(l){const d=s(l.path);!d||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(d)}`,"_blank","noopener,noreferrer")}return(l,d)=>(_(),F(ot,null,[e.selectedImages.length>0?(_(),F("div",zE,[(_(!0),F(ot,null,Zt(e.selectedImages,c=>(_(),F("div",{key:c.id,class:"thread-composer-attachment"},[r(c.url)?(_(),F("video",{key:0,class:"thread-composer-attachment-image",src:c.url,controls:"",preload:"metadata"},null,8,HE)):(_(),F("img",{key:1,class:"thread-composer-attachment-image",src:c.url,alt:c.name||"Selected image"},null,8,qE)),w("button",{class:"thread-composer-attachment-remove",type:"button","aria-label":`Remove ${c.name||"image"}`,disabled:e.isInteractionDisabled,onClick:v=>n("remove-image",c.id)}," x ",8,WE)]))),128))])):ve("",!0),e.folderUploadGroups.length>0?(_(),F("div",GE,[(_(!0),F(ot,null,Zt(e.folderUploadGroups,c=>(_(),F("span",{key:c.id,class:"thread-composer-folder-chip"},[Oe(Wf,{class:"thread-composer-folder-chip-icon"}),w("span",{class:"thread-composer-folder-chip-name",title:c.name},D(c.name),9,VE),w("span",KE,[c.isUploading?(_(),F(ot,{key:0},[ws(D(a(c))+"% uploading ("+D(c.processed)+"/"+D(c.total)+") ",1)],64)):(_(),F(ot,{key:1},[ws(D(c.filePaths.length)+" file"+D(c.filePaths.length===1?"":"s"),1)],64))]),w("button",{class:"thread-composer-folder-chip-remove",type:"button","aria-label":`Remove folder ${c.name}`,disabled:e.isInteractionDisabled,onClick:v=>n("remove-folder",c.id)},"×",8,YE)]))),128))])):ve("",!0),e.standaloneFileAttachments.length>0?(_(),F("div",JE,[(_(!0),F(ot,null,Zt(e.standaloneFileAttachments,c=>(_(),F("span",{key:c.fsPath,class:"thread-composer-file-chip"},[Oe(el,{class:"thread-composer-file-chip-icon"}),w("span",{class:"thread-composer-file-chip-name",title:c.fsPath},D(c.label),9,QE),w("button",{class:"thread-composer-file-chip-remove",type:"button","aria-label":`Remove ${c.label}`,disabled:e.isInteractionDisabled,onClick:v=>n("remove-file",c.fsPath)},"×",8,XE)]))),128))])):ve("",!0),e.selectedSkills.length>0?(_(),F("div",ZE,[(_(!0),F(ot,null,Zt(e.selectedSkills,c=>(_(),F("span",{key:c.path,class:"thread-composer-skill-chip"},[w("button",{class:"thread-composer-skill-chip-name",type:"button",title:s(c.path),"aria-label":`Open ${c.displayName||c.name} SKILL.md`,onClick:v=>i(c)},D(c.displayName||c.name),9,eM),w("button",{class:"thread-composer-skill-chip-remove",type:"button","aria-label":`Remove skill ${c.displayName||c.name}`,onClick:v=>n("remove-skill",c.path)},"×",8,tM)]))),128))])):ve("",!0)],64))}}),oM=It(nM,[["__scopeId","data-v-67fd7144"]]),rM=hn({__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}=da(),a=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}],s=K(()=>{var B;const y=(B=n.modelReasoningEfforts)==null?void 0:B[n.selectedModel];if(y===void 0)return a;const P=new Set(y);return a.filter(L=>P.has(L.value))});function i(y){return y.trim().replace(/^gpt/i,"GPT")}const l=K(()=>n.models.map(y=>({value:y,label:i(y)}))),d=K(()=>n.disabled||!n.activeThreadId),c=K(()=>/^gpt-5\.(?:4|5)(?:$|-)/.test(n.selectedModel.trim())),v=K(()=>n.selectedSpeedMode==="fast"&&c.value);function f(y){o("update:selected-model",y)}function b(y){o("update:selected-reasoning-effort",y)}return(y,P)=>(_(),F(ot,null,[Oe(ci,{class:"thread-composer-control thread-composer-model-control","model-value":e.selectedModel,options:l.value,"selected-prefix-icon":v.value?bs:null,placeholder:h(r)("Model"),"open-direction":"up",variant:"pill",disabled:d.value||e.models.length===0,"enable-search":"","search-placeholder":h(r)("Search models..."),"onUpdate:modelValue":f},null,8,["model-value","options","selected-prefix-icon","placeholder","disabled","search-placeholder"]),Oe(ci,{class:"thread-composer-control thread-composer-thinking-control","model-value":e.selectedReasoningEffort,options:s.value,placeholder:h(r)("Thinking"),"open-direction":"up",variant:"pill",disabled:d.value||s.value.length===0,"onUpdate:modelValue":b},null,8,["model-value","options","placeholder","disabled"])],64))}}),aM=It(rM,[["__scopeId","data-v-ad846e52"]]),sM=["aria-label","disabled"],iM=["disabled"],lM=["disabled"],uM=["disabled"],cM={class:"thread-composer-attach-mode"},dM={class:"thread-composer-attach-mode-label"},fM={class:"thread-composer-attach-mode-buttons"},pM=["disabled"],hM=["disabled"],mM={class:"thread-composer-attach-mode"},vM={class:"thread-composer-attach-mode-label"},gM={class:"thread-composer-attach-mode-buttons"},yM=["disabled","onClick"],wM={class:"thread-composer-attach-mode"},bM={class:"thread-composer-attach-mode-label"},TM={class:"thread-composer-attach-mode-buttons"},SM=["disabled","onClick"],CM={key:0,class:"thread-composer-menu-error",role:"alert"},xM={key:0,class:"thread-composer-approval-tip",role:"status"},kM=hn({__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}=da();function r(){n("toggle")}function a(v){n("set-active-mode",v)}function s(){n("select-photo")}function i(){n("select-folder")}function l(){n("capture-camera")}function d(v){n("select-collaboration-mode",v)}function c(v){n("select-approval-policy",v)}return(v,f)=>(_(),Qe(Qu,{open:e.open,align:"start",width:"lg","aria-label":h(o)("Add photos & files"),"onUpdate:open":f[2]||(f[2]=b=>n("update:open",b))},{trigger:dt(()=>[w("button",{class:"thread-composer-attach-trigger",type:"button","aria-label":h(o)("Add photos & files"),disabled:e.isInteractionDisabled,onClick:r}," + ",8,sM)]),default:dt(()=>[w("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:s},D(h(o)("Add photos & files")),9,iM),w("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:i},D(h(o)("Add folder")),9,lM),w("button",{class:"thread-composer-attach-item",type:"button",disabled:e.isInteractionDisabled,onClick:l},D(h(o)("Take photo")),9,uM),f[5]||(f[5]=w("div",{class:"thread-composer-attach-separator"},null,-1)),w("div",cM,[w("span",dM,D(h(o)("In-progress send")),1),w("div",fM,[w("button",{class:at(["thread-composer-attach-mode-button",{"is-active":e.activeInProgressMode==="steer"}]),type:"button",disabled:e.isInteractionDisabled,onClick:f[0]||(f[0]=b=>a("steer"))},D(h(o)("Steer")),11,pM),w("button",{class:at(["thread-composer-attach-mode-button",{"is-active":e.activeInProgressMode==="queue"}]),type:"button",disabled:e.isInteractionDisabled,onClick:f[1]||(f[1]=b=>a("queue"))},D(h(o)("Queue")),11,hM)])]),e.isMobile?(_(),F(ot,{key:0},[f[3]||(f[3]=w("div",{class:"thread-composer-attach-separator"},null,-1)),w("div",mM,[w("span",vM,D(h(o)("Plan mode")),1),w("div",gM,[(_(!0),F(ot,null,Zt(e.collaborationModeChoices,b=>(_(),F("button",{key:`mobile-plan-${b.value}`,class:at(["thread-composer-attach-mode-button",{"is-active":e.selectedCollaborationMode===b.value}]),type:"button",disabled:b.disabled||e.isComposerConfigDisabled,onClick:y=>d(b.value)},D(h(o)(b.labelKey)),11,yM))),128))])]),f[4]||(f[4]=w("div",{class:"thread-composer-attach-separator"},null,-1)),w("div",wM,[w("span",bM,D(h(o)("Approval policy")),1),w("div",TM,[(_(!0),F(ot,null,Zt(e.approvalPolicyChoices,b=>(_(),F("button",{key:`mobile-approval-${b.value}`,class:at(["thread-composer-attach-mode-button",{"is-active":e.approvalPolicy===b.value}]),type:"button",disabled:e.isApprovalPolicySaving,onClick:y=>c(b.value)},D(h(o)(b.label)),11,SM))),128))])]),e.approvalPolicyError?(_(),F("p",CM,D(e.approvalPolicyError),1)):ve("",!0),Oe(Xl,{name:"approval-tip"},{default:dt(()=>[e.approvalPolicyNotice?(_(),F("span",xM,D(e.approvalPolicyNotice),1)):ve("",!0)]),_:1})],64)):ve("",!0)]),_:1},8,["open","aria-label"]))}}),IM=It(kM,[["__scopeId","data-v-93f4c279"]]),AM=/(^|\s)(\/[a-zA-Z]*)$/,Mm=[{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 _M(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 l=s.path.trim()||i;n.has(l)||(n.add(l),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 PM(e){const t=e.match(AM);if(!t)return null;const n=t[2]??"";return{query:n.slice(1).toLowerCase(),token:n,startIndex:e.length-n.length}}function RM(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 EM={class:"thread-composer-main"},MM={class:"thread-composer-input-row"},jM={key:0,class:"thread-composer-drop-overlay","aria-hidden":"true"},LM={class:"thread-composer-drop-overlay-copy"},NM={key:1,class:"composer-popover"},$M=["onMousedown"],OM={key:1,class:"thread-composer-file-mention-icon-markdown"},DM={class:"thread-composer-file-mention-text"},FM={class:"thread-composer-file-mention-name"},BM={key:0,class:"thread-composer-file-mention-dir"},UM={key:1,class:"thread-composer-file-mention-empty"},zM={key:2,class:"thread-composer-file-mention-empty"},HM=["placeholder","disabled"],qM=["aria-label","title","disabled"],WM={class:"thread-composer-actions"},GM=["aria-label","title","disabled"],VM={key:0,class:"thread-composer-stop-spinner","aria-hidden":"true"},KM=["aria-label","title","disabled"],YM=["aria-label","disabled"],JM={class:"thread-composer-plan-trigger-label"},QM=["aria-checked","disabled","onClick"],XM={class:"thread-composer-menu-item-copy"},ZM={class:"thread-composer-menu-item-title"},e1={key:0,class:"thread-composer-menu-item-sub"},t1={key:1,class:"thread-composer-menu-item-hint"},n1={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},o1=["aria-label","disabled"],r1={class:"thread-composer-approval-trigger-label"},a1=["aria-checked","disabled","onClick"],s1={class:"thread-composer-menu-item-copy"},i1={class:"thread-composer-menu-item-title"},l1={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},u1={key:0,class:"thread-composer-menu-error",role:"alert"},c1={key:0,class:"thread-composer-approval-tip",role:"status"},d1=["title","aria-label"],f1={class:"thread-composer-context-usage-value"},p1={key:0,class:"thread-composer-context-usage-compact"},h1=["disabled"],m1=["disabled"],v1=["disabled"],Ad=12e3,g1=2e3,y1="codex-web-local.thread-draft.v1.",w1=hn({__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}=da(),s=S(""),i=S([]),l=S([]),d=S([]),c=S([]),v=S(""),f=S(0),b=S(null),y=S(!1),{state:P,cancel:B}=NR({getLanguage:()=>o.dictationLanguage??"auto",onTranscript:C=>{if(s.value=s.value?`${s.value}
58
58
  ${C}`:C,v.value="",o.dictationAutoSend!==!1){const E=o.isTurnInProgress?Ne.value:"steer";zt(E);return}Nt(()=>{var E;return(E=H.value)==null?void 0:E.focus()})},onEmpty:()=>{v.value=o.dictationClickToToggle?"No speech detected. Click again after speaking.":"No speech detected. Hold the mic and speak."},onError:C=>{if(C instanceof DOMException&&C.name==="NotAllowedError"){v.value="Microphone access was denied.";return}v.value=C instanceof Error?C.message:"Dictation failed."}}),L=S(null),j=S(null),U=S(null),H=S(null),{isMobile:be}=Df(),le=S(!1),W=S(!1),he=S(!1),Se=S(null),Pe=S(""),ge=S([]),Y=S(!1),pe=S(0),ne=S(!1),xe=S(null),$e=S(""),te=S(0),de=S(Mm),Le=K(()=>[...Mm,..._M(o.skills??[])]),Ae=S(!1),Fe=S(!1);let Ke=!1;const lt=S(0);let Ze=0,ut=null,fe="",N=!1,oe=0,ue=0;const Ee=typeof navigator<"u"&&/Android/i.test(navigator.userAgent);let Be="";const A=K(()=>{const C=new Set((o.collaborationModes??[]).map(E=>E.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:!C.has("execplans")}]}),M=[{value:"on-request",label:"When Codex requests it"},{value:"untrusted",label:"Unless trusted"},{value:"never",label:"Never"}],z=K(()=>{const C=A.value.find(E=>E.value===o.selectedCollaborationMode);return a(C?C.labelKey:"Plan mode")}),Z=K(()=>{const C=M.find(E=>E.value===o.approvalPolicy);return a(C?C.label:"Approval policy")}),ce=K(()=>o.selectedCollaborationMode==="plan"&&o.selectedModel.trim().length===0),re=K(()=>o.disabled||o.isUpdatingSpeedMode||!o.activeThreadId||ce.value||f.value>0?!1:s.value.trim().length>0||i.value.length>0||d.value.length>0),je=K(()=>s.value.trim().length>0||i.value.length>0||l.value.length>0||d.value.length>0||c.value.length>0),Re=K(()=>{const C=new Set;for(const E of c.value)for(const Q of E.filePaths)C.add(Q);return d.value.filter(E=>!C.has(E.fsPath))}),ke=K(()=>o.disabled||!o.activeThreadId||o.externalSessionActive===!0),me=K(()=>o.disabled||!o.activeThreadId),Ve=K(()=>o.inProgressSubmitMode==="steer"?"steer":"queue"),Ne=S(Ve.value),He=K(()=>P.value==="recording"),Ue=K(()=>o.activeThreadId?ce.value?a("Loading models for plan mode..."):a("Ask Codex anything, @ to add files, / for commands"):a("Select a thread to send a message")),Je=K(()=>s.value.trim().length>0||i.value.length>0||d.value.length>0),et=K(()=>s.value.split(`
@@ -75,7 +75,7 @@ ${E}`:E,Nt(()=>{var Q;(Q=H.value)==null||Q.focus(),Uo()}))}function ln(C){const
75
75
 
76
76
  `)&&Qa($,`${Ce}
77
77
 
78
- `)}mL(m);const Qo=No(m);Qo&&(x($,Qo),Yt($,{label:"Running command",details:[((fn=Qo.commandExecution)==null?void 0:fn.command)??""]}));const Mn=xL(m);if(Mn){const Ce=(B.value[$]??[]).find(wt=>wt.id===Mn.itemId);Ce!=null&&Ce.commandExecution&&x($,{...Ce,commandExecution:{...Ce.commandExecution,aggregatedOutput:`${Ce.commandExecution.aggregatedOutput}${Mn.delta}`}})}const xi=$o(m);xi&&x($,xi);const ul=Zr(m);if(ul&&wa($,ul),G(m)&&Rn($,!0),m.method==="turn/completed"){on=!1,Rn($),Ym(vt),B.value[$]&&(B.value=yt(B.value,$));const Ce=Ln(m);Ce&&(mr(Ce),rn(Ce,!1),Yt(Ce,null),Hn(Ce),ze||(hr(Ce),cr(Ce)))}}function es(m){if(m.method==="thread/tokenUsage/updated"||m.method.startsWith("thread/realtime/"))return;const g=m.method,I=g==="turn/started"||g==="turn/completed"||g==="error",$=g.startsWith("thread/")||g==="turn/completed";if(!I&&!$)return;const J=Ln(m);J&&I&&nn.add(J),$&&(sn=!0,to=!0),!(Lt!==null||typeof window>"u")&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}async function ts(m,g){if(!Va){Va=!0;try{if(!g)return;const I=[];for(const $ of bc(g)){const J=fi($);I.includes(J)||I.push(J)}if(I.length>0){const $=g.projectOrder.length>0?$i(I,m):$i(Re.value,m);Oa(Re.value,$)||Ue($,{persist:!1})}if(Object.keys(g.labels).length>0||(g.remoteProjects??[]).length>0){const $={...je.value};let J=!1;for(const[ie,X]of Object.entries(g.labels)){const se=Xe(ie).trim(),we=[fi(ie)];se&&we.push(se);for(const Ie of we)$[Ie]!==X&&($[Ie]=X,J=!0)}for(const ie of g.order){const X=fi(ie),se=nr(qi(ie));if(!se.startsWith(".")||se===X)continue;const we=`${X} ${se}`;$[X]!==void 0||$[X]===we||($[X]=we,J=!0)}for(const ie of g.remoteProjects??[]){const X=Ij(ie);$[ie.id]!==X&&($[ie.id]=X,J=!0)}J&&He($,{persist:!1})}}catch{}}}async function Tr(){try{return await Oi()}catch{return null}}function Tc(m,g){const I=lf(m,g),$=Rj(m,g),J=Ej($,g,I);if(!g||g.order.length===0&&(g.remoteProjects??[]).length===0)return J;const ie=new Set;for(const se of sf(g,I))ie.add(se);const X=J.filter(se=>ie.has(se.projectName)?!0:cf(se));return Pj(X,g,I)}function eu(m,g){const I=Tc(m,g),$=!!(g&&(g.order.length>0||g.projectOrder.length>0||(g.remoteProjects??[]).length>0)),J=g!=null&&g.projectOrder.length?$i(sf(g,lf(m,g)),I):$i(Re.value,I);Oa(Re.value,J)||Ue(J,{persist:!$});const ie=rf(I,Re.value);Ja(new Set(Yn(ie).map(we=>we.id)));const X=xj(t.value,ie,j.value);t.value=Xu(t.value,X),j.value=Xt(j.value,new Set(Yn(t.value).map(we=>we.id))),new Set(Yn(t.value).map(we=>we.id));const se={};for(const we of Yn(t.value))se[we.id]=we.externalSession??be.value[we.id]??null;be.value=se,Tn()}function Vn(m){Ht.removeThreadFromLoadedLists(m),t.value=hy(t.value,m),j.value=yt(j.value,m),Tn()}async function Sr(m={}){await Promise.allSettled([Ae({providerChanged:m.providerChanged,includeProviderModels:m.includeProviderModels}),mo(),A(),dn()])}function Cr(m={}){const g=()=>{Sr(m)};if(typeof window>"u"){g();return}window.setTimeout(g,0)}async function ea(m={}){o.value="",ge.value="";const g=m.includeSelectedThreadMessages!==!1,I=m.awaitAncillaryRefreshes===!0;try{if(await Vr(),await Ht.loadThreads({force:m.forceThreadRefresh===!0}),g)try{await At(n.value)}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}I?await Sr({providerChanged:m.providerChanged,includeProviderModels:m.providerChanged===!0||I}):Cr({providerChanged:m.providerChanged,includeProviderModels:!1})}catch($){o.value=$ instanceof Error?$.message:"Unknown application error",dy($)?ge.value=_y:ge.value=""}}async function En(m){vn(m);try{return await At(m),await Ae({includeProviderModels:!0}),dn(),"ok"}catch(g){const I=g instanceof Error?g.message:"Unknown application error";o.value=I;const $=tj(g)?"not-found":"error";return m.trim()&&Gt(m,I,{transient:!0}),$}}async function Si(m){const g=n.value===m,I=g?ej(Yn(e.value),m):"";g&&(vn(I),I&&At(I,{silent:!0}));try{await xk(m),Vn(m),await Ht.loadThreads(),g&&I&&n.value===I&&await Ye(I,{silent:!0})}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}}async function ns(m,g){const I=g.trim();if(!(!m||!I))try{await Ak(m,I),Ur.value={...Ur.value,[m]:I},Tn(),Yu(m,I)}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}}async function Ca(m){var X,se;const g=m.trim();if(!g)return"";const I=Yn(t.value).find(we=>we.id===g),$=((X=I==null?void 0:I.cwd)==null?void 0:X.trim())??"",J=((se=I==null?void 0:I.title)==null?void 0:se.trim())??"Forked chat",ie=Le(g);o.value="";try{const we=await nm(g,$||void 0,ie||void 0),Ie=we.threadId.trim();return Ie?(vr(Ie,$,J),ut(Ie,we.model),Je.value={...Je.value,[Ie]:!0},vn(Ie),await Ht.loadThreads(),await At(Ie),Ie):""}catch(we){return o.value=we instanceof Error?we.message:"Unknown application error",""}}async function tu(m,g){var X;const I=m.trim();if(!I||!Number.isInteger(g)||g<0)return"";if(j.value[I]===!0)return o.value="Finish the current turn before forking from a response.","";if(zt.value[I]!==!0)try{await At(I)}catch(se){return o.value=se instanceof Error?se.message:"Unknown application error",""}const $=r.value[I]??[];let J=-1;for(const se of $)typeof se.turnIndex=="number"&&Number.isFinite(se.turnIndex)&&(J=Math.max(J,se.turnIndex));if(J>=0&&g>J)return"";const ie=Yn(t.value).find(se=>se.id===I)??null;try{o.value="";const se=await nm(I),we=se.threadId.trim();if(!we)return"";const Ie=se.cwd.trim()||((X=ie==null?void 0:ie.cwd)==null?void 0:X.trim())||"",ze=Mj((ie==null?void 0:ie.title)||(ie==null?void 0:ie.preview)||"Untitled thread");vr(we,Ie,ze),ut(we,se.model),ro(we,se.messages),zt.value={...zt.value,[we]:!0},Je.value={...Je.value,[we]:!0},To(we),Wn(we,[]),Rn(we),B.value[we]&&(B.value=yt(B.value,we)),$t(we,null),Yt(we,null),Gt(we,null),rn(we,!1);const pt=J-g;if(pt>0){const ht=await wd(we,pt);ro(we,ht)}return await ns(we,ze),vn(we),Ht.loadThreads().catch(()=>{}),we}catch(se){return o.value=se instanceof Error?se.message:"Unknown application error",""}}async function xa(m,g,I=[],$=[],J=[]){if(!m||!g.trim()||I.length>0||$.length>0||J.length>0)return!1;const X=(Es.value[m]??[]).filter(Ie=>Ie.method==="item/tool/requestUserInput");if(X.length!==1)return!1;const[se]=X,we=jL(se);return we.length!==1?!1:ll({id:se.id,result:{answers:{[we[0]]:{answers:[g.trim()]}}}})}async function Ko(m,g,I,$,J,ie){if(le||yo.value<=0||j.value[m]===!0)return!1;const X=xt.value[m];if(!X||X.remainingContextPercent===null||X.remainingContextPercent>yo.value)return!1;const se=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,we=ie==="plan"?"plan":ie==="default"?"default":Ee.value;return Wo(m,{id:se,text:g,imageUrls:I,skills:$,fileAttachments:J,collaborationMode:we}),en.value.has(m)||il(m),!0}async function xo(m){const g=wo(m);if(!g||g.length===0||j.value[m]===!0)return;const I=In(m);le=!0;try{for(const $ of I)try{await Qt($.text,$.imageUrls,$.skills,"steer",$.fileAttachments,void 0,$.collaborationMode)}catch{}}finally{le=!1}}async function Qt(m,g=[],I=[],$="steer",J=[],ie,X){if(Y.value)return;const se=n.value,we=m.trim();if(!se||!we&&g.length===0&&J.length===0||await xa(se,we,g,I,J)||await Ko(se,we,g,I,J,X))return;const Ie=j.value[se]===!0;if(Ie&&$==="queue"){const ze=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;Ka(se,{id:ze,text:we,imageUrls:g,skills:I,fileAttachments:J,collaborationMode:X==="plan"?"plan":X==="default"?"default":Ee.value},ie);return}if(Ie){on=!0,un(se,we,g,I,J),ta(se,we,g,I,J,X).catch(ze=>{const pt=ze instanceof Error?ze.message:"Unknown application error";Gt(se,pt),o.value=pt});return}o.value="",on=!0,$t(se,null),un(se,we,g,I,J),Yt(se,{label:"Thinking",details:te(Le(se),ne.value,X==="plan"?"plan":X==="default"?"default":Ee.value)}),Gt(se,null),rn(se,!0);try{await ta(se,we,g,I,J,X)}catch(ze){on=!1,rn(se,!1),Yt(se,null);const pt=ze instanceof Error?ze.message:"Unknown application error";throw Gt(se,pt),o.value=pt,ze}}async function os(m,g,I=[],$=[],J=[]){if(Y.value)return"";const ie=m.trim(),X=g.trim(),se=Le(Is).trim(),we=Ee.value;if(!ie&&I.length===0&&J.length===0)return"";vo.value=!0,o.value="";let Ie="";try{try{const it=await tm(X||void 0,se||void 0);Ie=it.threadId,ut(Ie,it.model),fe(Ie,it.modelProvider||he.value),z(Ie,we)}catch(it){if(se&&se!==Pr&&ku(it)){await $e();const Pt=await tm(X||void 0,Pr);Ie=Pt.threadId,ut(Ie,Pt.model),fe(Ie,Pt.modelProvider||he.value),z(Ie,we)}else throw it}if(!Ie)return"";vr(Ie,X,ie||"[Image]"),un(Ie,ie,I,$,J),ya(Ie),Je.value={...Je.value,[Ie]:!0},vn(Ie),on=!0,$t(Ie,null),Yt(Ie,{label:"Thinking",details:te(Le(Ie),ne.value,we)}),Gt(Ie,null),rn(Ie,!0);const ze=Ie,pt=X||null,ht=ie;return ta(Ie,ie,I,$,J,we).catch(it=>{on=!1,rn(Ie,!1),Yt(Ie,null);const Pt=it instanceof Error?it.message:"Unknown application error";Gt(Ie,Pt),o.value=Pt}).finally(()=>{vo.value=!1}),qa(ze,ht,pt,I,J),Ie}catch(ze){on=!1,Ie&&(rn(Ie,!1),Yt(Ie,null));const pt=ze instanceof Error?ze.message:"Unknown application error";throw Ie&&Gt(Ie,pt),o.value=pt,vo.value=!1,ze}}async function ta(m,g,I=[],$=[],J=[],ie){const X=ne.value,se=ie==="plan"?"plan":ie==="default"?"default":Ee.value,we=g.trim(),Ie=[...I];if(Ie.length===0&&tn(we)){const ht=Wr(m);ht&&Ie.push(ht)}const ze=$.map(ht=>({name:ht.name,path:ht.path})),pt=J.map(ht=>({...ht}));pr(m,{text:we,imageUrls:[...Ie],skills:ze,fileAttachments:pt,effort:X,collaborationMode:se,fallbackRetried:!1});try{if(Je.value[m]!==!0){const Pt=await Zd(m);Pt.model&&ut(m,Fe(m,Pt.model,Pt.modelProvider)),Pt.modelProvider&&fe(m,Pt.modelProvider),Je.value={...Je.value,[m]:!0}}const ht=Le(m);let it="";try{it=await bd(m,g,Ie,ht||void 0,X||void 0,$.length>0?$:void 0,J,se)}catch(Pt){if(ht&&ht!==Pr&&ku(Pt))await $e(m),pr(m,{text:we,imageUrls:[...Ie],skills:ze,fileAttachments:pt,effort:X,collaborationMode:se,fallbackRetried:!0}),it=await bd(m,g,Ie,Pr,X||void 0,$.length>0?$:void 0,J,se);else throw Pt}it&&(ae.value={...ae.value,[m]:it},Ns(m,it)),nn.add(m),await Jo(),Yr(m)}catch(ht){throw ht}}async function ka(){const m=n.value;if(!m||j.value[m]!==!0||Ct.value[m]===!0)return;let g=ae.value[m];if(!g){const{activeTurnId:ie}=await Xd(m);g=ie,g&&(ae.value={...ae.value,[m]:g})}if(!g)throw new Error("Could not determine active turn id for interrupt");const I=_t.value.filter(ie=>ie.turnId===g),$=I.find(ie=>ie.role==="user"),J=I.some(ie=>{if(ie.role==="assistant")return!0;const X=ie.messageType??"";return X==="commandExecution"||X==="toolCall"||X==="worked"||X==="fileChange"||X==="plan"||X==="plan.live"||X==="compaction.done"||X==="turnError"});Eo.value=!0,o.value="";try{if(await _k(m,g),rn(m,!1),Yt(m,null),Gt(m,null),ae.value[m]&&(ae.value=yt(ae.value,m)),nn.add(m),sn=!0,await Jo(),$&&!J){const ie=(r.value[m]??[]).filter(se=>se.turnId!==g);ro(m,ie);const X=d.value[m];if(X){const se=X.filter(we=>we.turnId!==g);se.length!==X.length&&(d.value={...d.value,[m]:se},Rd(d.value))}Fn.value={...Fn.value,[m]:{text:$.text??"",imageUrls:$.images??[],fileAttachments:($.fileAttachments??[]).map(se=>({label:se.label,path:se.path,fsPath:se.fsPath??se.path})),skills:$.skills??[]}}}}catch(ie){const X=ie instanceof Error?ie.message:"Failed to interrupt active turn";Gt(m,X),o.value=X}finally{Eo.value=!1}}function Bs(m){m&&Fn.value[m]&&(Fn.value=yt(Fn.value,m))}async function rs(m){var I,$,J;const g=n.value;if(g&&!Mo.value&&m.trim()){Mo.value=!0,o.value="";try{j.value[g]===!0&&await ka();const ie=r.value[g]??[],X=ie.find(ht=>ht.turnId===m),se=typeof(X==null?void 0:X.turnIndex)=="number"?X.turnIndex:((I=et.value[g])==null?void 0:I[m])??-1;if(se<0)return;const we=ie.reduce((ht,it)=>typeof it.turnIndex=="number"&&it.turnIndex>ht?it.turnIndex:ht,-1);if(we<0||se>we)return;const Ie=Math.max(1,we-se),ze=((J=($=Gr.value)==null?void 0:$.cwd)==null?void 0:J.trim())??"";ze&&await aA(g,m,ze);const pt=await wd(g,Ie);ro(g,pt),Wn(g,[]),Rn(g),B.value[g]&&(B.value=yt(B.value,g)),$t(g,null),Yt(g,null),Gt(g,null),sn=!0,await Jo()}catch(ie){o.value=ie instanceof Error?ie.message:"Failed to rollback thread"}finally{Mo.value=!1}}}function Yo(m,g){const $=(l.value[m]??[]).filter(J=>J.messageType!=="compaction.pending"&&J.messageType!=="compaction.done");$.push({id:`compaction:${g}:${m}:${Date.now()}`,role:"system",text:"",messageType:g==="pending"?"compaction.pending":"compaction.done"}),l.value={...l.value,[m]:$}}function xr(m,g){const I=new Set(en.value);g?I.add(m):I.delete(m),en.value=I}function Sc(m){lr=m.trim(),ir.value=[]}async function il(m){const g=m.trim();if(!(!g||en.value.has(g))){xr(g,!0),Yo(g,"pending");try{await Ik(g);const I=2e3,$=14,J=Date.now()+Un;let ie=0;for(;Date.now()<J&&ie<$&&en.value.has(g);){if((await Xd(g)).messages.some(we=>we.messageType==="compaction.done")){xr(g,!1),n.value===g&&await At(g,{silent:!0,force:!0}),Yo(g,"done"),xo(g);break}ie+=1,await Z1(I)}en.value.has(g)&&(xr(g,!1),Yo(g,"done"),xo(g))}catch(I){o.value=I instanceof Error?I.message:"Failed to compact thread",xr(g,!1),Yo(g,"done"),xo(g)}}}async function Jo(){if(bn.value){typeof window<"u"&&Lt===null&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u));return}bn.value=!0;const m=sn,g=to,I=new Set(nn);sn=!1,to=!1,nn.clear();try{m&&await Ht.loadThreads({force:g});const $=n.value;if(!$)return;const J=I.has($),ie=j.value[$]===!0,X=$s($),se=Ha.value[$]??"";(X.length>0&&X!==se||J||ie&&zt.value[$]!==!0||m&&zt.value[$]!==!0)&&await At($,{silent:!0,force:J})}catch{}finally{bn.value=!1,(sn||nn.size>0)&&typeof window<"u"&&Lt===null&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}}async function Ci(){await sr(),sn=!Ht.hasLoadedThreads.value,n.value&&zt.value[n.value]!==!0&&nn.add(n.value),await Jo()}function na(m){const g=qe(m.params),I=typeof(g==null?void 0:g.threadId)=="string"?g.threadId.trim():"";if(!I)return;const $=qe(g==null?void 0:g.externalSession),J=$&&typeof $.origin=="string"&&$.origin.trim().length>0?{origin:$.origin.trim(),active:$.active===!0,lastWriteAt:typeof $.lastWriteAt=="string"?$.lastWriteAt:null}:null;be.value={...be.value,[I]:J},rn(I,(J==null?void 0:J.active)===!0),Tn(),sn=!0,n.value===I&&nn.add(I),Lt===null&&typeof window<"u"&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}function Us(){typeof window>"u"||go||(sr(),zs(),nu(),go=Jk(m=>{if(m.method==="ready"){al(),Ci();return}if(m.method==="externalSessionChanged"){na(m);return}br(m),es(m)}))}async function zs(){try{const m=await rI(),g=Object.entries(m);if(g.length===0)return;const I={...d.value};let $=!1;for(const[J,ie]of g){const X=ie.filter(ze=>!!ze&&typeof ze.id=="string");if(X.length===0)continue;const se=I[J]??[],we=new Set(se.map(ze=>ze.text)),Ie=[...se];for(const ze of X)we.has(ze.text)||(Ie.push(ze),we.add(ze.text));I[J]=Ie.slice(-20),$=!0}$&&(d.value=I,Rd(I))}catch{}}async function nu(){try{const m=await sI(),g=Object.entries(m);if(g.length===0)return;const I={...c.value};let $=!1;for(const[J,ie]of g){if(!J||!ie||typeof ie!="object"||Array.isArray(ie))continue;const X={};for(const[Ie,ze]of Object.entries(ie))!Ie||typeof ze!="number"||!Number.isFinite(ze)||ze<=0||(X[Ie]=Math.round(ze));if(Object.keys(X).length===0)continue;const se={...I[J]??{},...X},we=Object.keys(se);I[J]=we.length>200?Object.fromEntries(we.slice(-200).map(Ie=>[Ie,se[Ie]])):se,$=!0}$&&(c.value=I,Wm(I))}catch{}}async function ll(m){try{return await Qk(m.id,{result:m.result,error:m.error}),Dn(m.id),Zn.value=yt(Zn.value,String(m.id)),!0}catch(g){const I=g instanceof Error?g.message:"Failed to reply to server request";return await ha(m.id)?(o.value=I,Zn.value={...Zn.value,[String(m.id)]:I},!1):(Dn(m.id),Zn.value=yt(Zn.value,String(m.id)),!0)}}function Cn(){if(go&&(go(),go=null),sn=!1,nn.clear(),qo.clear(),Lt!==null&&typeof window<"u"&&(window.clearTimeout(Lt),Lt=null),Bn(),Ht.dispose(),typeof window<"u")for(const m of zn.values())window.clearTimeout(m);zn.clear(),on=!1,r.value={},a.value={},i.value={},v.value={},d.value={},c.value={},B.value={},L.value={},et.value={},mt.value={},st.value={},q.value={},ae.value={},P.clear(),Ym(vt),y.clear(),Lj(),Ct.value={},kt.value={},mn.value={},qt(),Ro(null),xt.value={}}function Oo(m){const g=n.value;if(!g)return;const I=Ya(g,m);if(I){jo(m),M(I.collaborationMode),le=!0,Qt(I.text,I.imageUrls,I.skills,"steer",I.fileAttachments).finally(()=>{le=!1});return}const $=no(g,m);$&&(jo(m),M($.collaborationMode),Qt($.text,$.imageUrls,$.skills,"steer",$.fileAttachments))}function ko(m,g={}){vn(m,g)}return{projectGroups:e,projectDisplayNameById:je,selectedThread:Gr,selectedThreadTokenUsage:ct,selectedThreadTerminalOpen:C,isSelectedThreadInterruptPending:E,selectedThreadServerRequests:Ga,selectedLiveOverlay:ye,selectedActiveTurnId:Q,lastPlanByThreadId:s,resolveThreadTurnIndex:Sa,codexQuota:qr,selectedThreadId:n,availableCollaborationModes:ue,availableModelIds:Se,availableModelReasoningEfforts:Pe,selectedCollaborationMode:Ee,selectedModelId:pe,selectedReasoningEffort:ne,selectedSpeedMode:xe,codexCliMissingError:ge,installedSkills:An,accountRateLimitSnapshots:Hr,messages:_t,hasMoreOlderMessages:Kt,isLoadingThreads:Ht.isLoadingThreads,isThreadListFullyLoaded:Ht.isThreadListFullyLoaded,isLoadingMessages:Tt,isLoadingOlderMessages:Pn,isSendingMessage:vo,isInterruptingTurn:Eo,isUpdatingSpeedMode:Y,isRollingBack:Mo,compactingThreadIds:en,fuzzyFileSearchResults:ir,registerFuzzyFileSearchSession:Sc,error:o,refreshAll:ea,refreshSkills:dn,refreshHooks:fr,hooksList:dr,isHooksLoading:Kr,onRealtimeEvent:ao,selectThread:En,loadMessages:At,loadOlderMessages:Br,ensureThreadMessagesLoaded:Ye,setThreadTerminalOpen:qn,toggleSelectedThreadTerminal:gi,archiveThreadById:Si,compactThreadById:il,renameThreadById:ns,forkThreadById:Ca,forkThreadFromTurn:tu,rollbackSelectedThread:rs,sendMessageToSelectedThread:Qt,sendMessageToNewThread:os,interruptSelectedThreadTurn:ka,interruptedUnsubmittedMessage:_n,clearInterruptedUnsubmittedMessage:Bs,selectedThreadQueuedMessages:St,removeQueuedMessage:jo,reorderQueuedMessage:oo,steerQueuedMessage:Oo,autoCompactThreshold:yo,setAutoCompactThreshold:ln,setSelectedCollaborationMode:M,readModelIdForThread:Le,setSelectedModelIdForThread:lt,setSelectedModelId:Ke,setSelectedReasoningEffort:Ze,updateSelectedSpeedMode:oe,respondToPendingServerRequest:ll,pendingReplyErrorForRequest:Rs,renameProject:Ve,removeProject:me,reorderProject:Ne,pinProjectToTop:ke,startPolling:Us,stopPolling:Cn,primeSelectedThread:ko}}const Ey="codex-web-local.sidebar-collapsed.v1",My="codex-web-local.accounts-section-collapsed.v1";function LN(){return typeof window>"u"?!1:window.localStorage.getItem(Ey)==="1"}function NN(e){typeof window>"u"||window.localStorage.setItem(Ey,e?"1":"0")}function $N(){if(typeof window>"u")return!0;const e=window.localStorage.getItem(My);return e===null?!0:e==="1"}function ON(){const e=S(LN()),t=S($N()),n=S(""),o=S(!1),r=S(null),a=S(null);let s=0,i=0,l=!1;function d(L){var j;if(e.value!==L){if(L){const U=(j=f())==null?void 0:j.scrollTop;typeof U=="number"&&(U>0||s===0)&&(s=U)}e.value=L,NN(L),L||y()}}function c(){o.value=!o.value,o.value?Nt(()=>{var L;return(L=a.value)==null?void 0:L.focus()}):n.value=""}function v(){var L;n.value="",(L=a.value)==null||L.focus()}function f(){return r.value?r.value:typeof document>"u"?null:document.querySelector(".mobile-drawer .sidebar-scrollable, .sidebar-scrollable")}function b(L){if(e.value||l)return;const U=(L==null?void 0:L.currentTarget)&&typeof HTMLElement<"u"&&L.currentTarget instanceof HTMLElement?L.currentTarget:f();s=(U==null?void 0:U.scrollTop)??s}function y(){const L=++i,j=s,U=90;l=!0;const H=()=>{L===i&&(s=j,l=!1)},be=le=>{if(L!==i)return;if(e.value){H();return}const W=f();if(W&&(W.scrollTop=j,Math.abs(W.scrollTop-j)<=1||le>=U)){H();return}if(le>=U||typeof window>"u"){H();return}window.requestAnimationFrame(()=>be(le+1))};Nt(()=>be(0))}function P(L){L.key==="Escape"&&(o.value=!1,n.value="")}function B(){t.value=!t.value,!(typeof window>"u")&&window.localStorage.setItem(My,t.value?"1":"0")}return{isSidebarCollapsed:e,isAccountsSectionCollapsed:t,sidebarSearchQuery:n,isSidebarSearchVisible:o,sidebarScrollableRef:r,sidebarSearchInputRef:a,setSidebarCollapsed:d,toggleSidebarSearch:c,clearSidebarSearch:v,onSidebarScroll:b,onSidebarSearchKeydown:P,restoreSidebarScrollPosition:y,toggleAccountsSectionCollapsed:B}}const jy="codex-web-local.right-panel-width.v1",DN=260,FN=640,Qm=320;function Ly(e){return Math.min(FN,Math.max(DN,e))}function BN(){if(typeof window>"u")return Qm;const e=window.localStorage.getItem(jy),t=Number(e);return Number.isFinite(t)?Ly(t):Qm}function UN(e){typeof window>"u"||window.localStorage.setItem(jy,String(e))}function zN(e){const{isMobile:t,canShowRightPanel:n,isVirtualKeyboardOpen:o}=e,r=S("git"),a=S([]),s=S(""),i=K(()=>a.value.find(ge=>ge.key===s.value)??null),l=S(!1),d=S(!1),c=S(!1),v=S(BN()),f=S(!1),b=S(!1);let y=null;function P(){y&&(clearTimeout(y),y=null)}function B(){f.value=!1,b.value=!1,P()}function L(ge){ge.preventDefault();const Y=ge.clientX,pe=v.value,ne=$e=>{const te=Y-$e.clientX;v.value=Ly(pe+te)},xe=()=>{UN(v.value),window.removeEventListener("mousemove",ne),window.removeEventListener("mouseup",xe)};window.addEventListener("mousemove",ne),window.addEventListener("mouseup",xe)}function j(){n()&&(t()&&!d.value&&(d.value=!0),t()||(c.value=!1),r.value=r.value==="terminal"?"git":"terminal",r.value!=="terminal"&&B())}function U(ge){r.value=ge,l.value=!1,t()||(c.value=!1),t()&&(d.value=!0),ge!=="terminal"&&B()}function H(ge){const Y=a.value.find(pe=>pe.path===ge.path);if(Y)s.value=Y.key;else{const pe={key:`preview-${Date.now()}`,path:ge.path,label:ge.label};a.value=[...a.value,pe],s.value=pe.key}U("preview")}function be(ge){a.value.some(Y=>Y.key===ge)&&(s.value=ge,U("preview"))}function le(ge){const Y=a.value.findIndex(xe=>xe.key===ge);if(Y<0)return;const pe=a.value.filter(xe=>xe.key!==ge);if(a.value=pe,s.value!==ge)return;if(pe.length===0){s.value="",r.value="files";return}const ne=pe[Math.min(Y,pe.length-1)];s.value=ne.key}function W(){if(t()){d.value=!1;return}c.value=!0,l.value=!1,B()}function he(){if(t()){d.value=!d.value;return}c.value=!c.value,c.value&&(l.value=!1,B())}function Se(){r.value="git",t()&&(d.value=!1),B()}function Pe(ge){if(f.value=ge,!ge){b.value=!1,P();return}b.value=!0,P(),y=setTimeout(()=>{y=null,o()||(b.value=!1)},1500)}return{activeRightPanelTab:r,filePreviewTabs:a,activeFilePreviewTabKey:s,activeFilePreviewTab:i,isRightPanelMenuOpen:l,isMobileRightPanelOpen:d,isRightPanelCollapsed:c,rightPanelWidth:v,isTerminalInputFocused:f,isTerminalKeyboardFocusFallbackActive:b,onRightResizeHandleMouseDown:L,toggleRightPanelTerminal:j,selectRightPanelTab:U,onOpenFilePreview:H,selectFilePreviewTab:be,closeFilePreviewTab:le,onCloseRightPanel:W,onToggleRightPanelToggle:he,onHideRightPanelTerminal:Se,onTerminalFocusChange:Pe,resetTerminalKeyboardFocusState:B,clearTerminalKeyboardFocusFallbackTimer:P}}function HN(e){if(typeof document>"u")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.left="-9999px",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.focus(),t.select(),t.setSelectionRange(0,e.length);try{return document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(t)}}async function qN(e){var t;if(typeof navigator<"u"&&((t=navigator.clipboard)!=null&&t.writeText))try{await navigator.clipboard.writeText(e);return}catch{}if(!HN(e))throw new Error("Copy failed")}const WN=400;function GN(e,t,n,o){return e==="visible"&&!n&&t!==null&&o-t>=WN}const VN={class:"sidebar-root"},KN=["aria-pressed","aria-label","title"],YN={key:1,class:"sidebar-search-bar"},JN=["placeholder"],QN=["aria-label"],XN={class:"sidebar-skills-link-icon","aria-hidden":"true"},ZN={class:"sidebar-skills-link-copy"},e$={class:"sidebar-skills-link-title"},t$={class:"sidebar-skills-link-subtitle"},n$={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},o$={class:"sidebar-skills-link-copy"},r$={class:"sidebar-skills-link-title"},a$={class:"sidebar-skills-link-subtitle"},s$={class:"sidebar-settings-actions"},i$=["title","aria-label"],l$=["title","aria-label"],u$={class:"content-root-wrap"},c$={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},d$={key:1,class:"skills-route-header-icon","aria-hidden":"true"},f$={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},p$=["aria-label","title"],h$={class:"content-body"},m$={key:2,class:"content-grid content-grid-home"},v$={class:"new-thread-empty"},g$={class:"new-thread-hero"},y$=["title"],w$={class:"new-thread-folder-actions"},b$=["disabled"],T$={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},S$={class:"new-thread-launch-card-copy"},C$={class:"new-thread-launch-card-topline"},x$={class:"new-thread-launch-card-badge","aria-hidden":"true"},k$={class:"new-thread-launch-card-eyebrow"},I$={class:"new-thread-launch-card-title"},A$={class:"new-thread-launch-card-text"},_$={class:"new-thread-launch-card-actions"},P$=["aria-label","onKeydown"],R$={class:"new-thread-open-folder-header"},E$={class:"new-thread-open-folder-title"},M$={class:"new-thread-open-folder-label"},j$={class:"new-thread-open-folder-current"},L$=["placeholder","title","disabled","onKeydown"],N$=["disabled"],$$={class:"new-thread-open-folder-actions"},O$={class:"new-thread-open-folder-toggle"},D$=["aria-pressed","disabled"],F$={key:0,class:"new-thread-open-folder-create"},B$={class:"new-thread-open-folder-create-composer"},U$=["placeholder","onKeydown"],z$=["disabled"],H$={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},q$=["href"],W$=["placeholder","onKeydown"],G$={key:1,class:"new-thread-open-folder-error-actions"},V$={class:"new-thread-open-folder-error visible-error-with-feedback"},K$=["href"],Y$=["disabled"],J$={key:2,class:"new-thread-open-folder-status"},Q$={key:3,class:"new-thread-open-folder-status"},X$={key:4,class:"new-thread-open-folder-list"},Z$=["title","disabled","onClick"],eO={class:"new-thread-open-folder-item-name"},tO=["disabled","onClick"],nO=["aria-label","onKeydown"],oO={class:"new-thread-open-folder-header"},rO={class:"new-thread-open-folder-title"},aO=["disabled"],sO=["aria-label"],iO=["aria-selected","disabled"],lO=["aria-selected","disabled"],uO={class:"new-thread-project-field"},cO={class:"new-thread-open-folder-label"},dO=["disabled","placeholder"],fO={key:0,class:"new-thread-project-field"},pO={class:"new-thread-open-folder-label"},hO=["disabled","placeholder","onKeydown"],mO={key:1,class:"new-thread-project-field"},vO={class:"new-thread-open-folder-label"},gO=["disabled","onKeydown"],yO={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},wO=["href"],bO={class:"new-thread-project-modal-actions"},TO=["disabled"],SO=["disabled"],CO={key:3,class:"new-thread-branch-select"},xO={class:"new-thread-branch-select-label"},kO={class:"new-thread-branch-select-help"},IO={key:4,class:"new-thread-runtime-help"},AO={class:"worktree-init-status-title"},_O={class:"worktree-init-status-message"},PO={class:"composer-with-queue"},RO={key:0,class:"composer-runtime-error",role:"alert"},EO=["href"],MO={key:3,class:"content-grid"},jO={class:"content-thread"},LO={key:0,class:"external-session-banner",role:"alert"},NO={key:1,class:"composer-runtime-error",role:"alert"},$O=["href"],OO={key:2,class:"interrupt-recovered-banner",role:"status"},DO=["aria-label"],FO={class:"content-right-panel-header"},BO={class:"content-right-panel-tabs",role:"tablist"},UO=["aria-selected"],zO=["aria-selected"],HO=["aria-selected","title","onClick"],qO={class:"content-right-panel-tab-label"},WO=["aria-label","title","onClick"],GO={class:"content-right-panel-actions"},VO={class:"content-right-panel-add-wrap"},KO=["aria-label","title"],YO={key:0,class:"content-right-panel-menu"},JO=["aria-label","title"],QO={class:"content-right-panel-body"},XO={key:0,class:"project-zip-modal-backdrop",role:"presentation"},ZO=["aria-label"],eD={class:"project-zip-modal-header"},tD={class:"project-zip-modal-title"},nD=["aria-label","disabled"],oD={class:"project-zip-modal-copy"},rD={class:"project-zip-progress-label",role:"status","aria-live":"polite"},aD={class:"project-zip-progress-track"},sD={key:0,class:"project-zip-modal-error",role:"alert"},iD={class:"project-zip-modal-actions"},lD=["disabled"],uD=["disabled"],cD=["disabled"],dD=["aria-label"],fD={class:"codex-login-modal-header"},pD={class:"codex-login-modal-title"},hD=["aria-label","disabled"],mD={class:"codex-login-modal-copy"},vD=["href"],gD=["placeholder","disabled"],yD={key:1,class:"codex-login-modal-error visible-error-with-feedback"},wD=["href"],bD={class:"codex-login-modal-actions"},TD=["disabled"],SD=["disabled"],CD=400,Xm="codex-web-local.send-with-enter.v1",Zm="codex-web-local.in-progress-send-mode.v1",ev="codex-web-local.dark-mode.v1",tv="codex-web-local.dictation-click-to-toggle.v1",nv="codex-web-local.dictation-auto-send.v1",ov="codex-web-local.dictation-language.v1",rv="codex-web-local.chat-width.v1",xD=hn({__name:"App",setup(e){var Op,Dp;const t=Ar(()=>_r(()=>import("./ThreadConversation-Cb1IJ_NG.js"),__vite__mapDeps([0,1,2]))),n=Ar(()=>_r(()=>import("./ThreadTerminalPanel-CRA1VSKP.js"),__vite__mapDeps([3,4]))),o=Ar(()=>_r(()=>import("./ReviewPane-B-qMww8k.js"),__vite__mapDeps([5,6]))),r=Ar(()=>_r(()=>import("./DirectoryHub-BbqdG8Yo.js"),__vite__mapDeps([7,1,8]))),a=Ar(()=>_r(()=>import("./AutomationsPanel-D7JDy9_y.js"),__vite__mapDeps([9,10]))),s=Ar(()=>_r(()=>import("./SettingsDialog-CW2-XQYY.js"),__vite__mapDeps([11,12]))),i=Ar(()=>_r(()=>import("./RightGitPanel-DBNy_7HG.js"),__vite__mapDeps([13,14]))),l=Ar(()=>_r(()=>import("./RightFilesPanel-TscoYCDr.js"),__vite__mapDeps([15,16]))),d=Ar(()=>_r(()=>import("./RightFilePreview-BVfHIj4j.js"),__vite__mapDeps([17,18]))),c=Ar(()=>_r(()=>import("./ThreadPendingRequestPanel-CSjLyFZs.js"),__vite__mapDeps([19,20]))),v=Ar(()=>_r(()=>import("./QueuedMessages-CPX5Rnub.js"),__vite__mapDeps([21,22]))),{t:f,uiLanguage:b,uiLanguageOptions:y,setUiLanguage:P}=da(),B="codex-mobile",L="0.1.112",j={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},U={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:H,projectDisplayNameById:be,selectedThread:le,selectedThreadTokenUsage:W,selectedThreadServerRequests:he,selectedLiveOverlay:Se,lastPlanByThreadId:Pe,resolveThreadTurnIndex:ge,selectedActiveTurnId:Y,codexQuota:pe,selectedThreadId:ne,availableCollaborationModes:xe,availableModelIds:$e,availableModelReasoningEfforts:te,selectedCollaborationMode:de,selectedReasoningEffort:Le,selectedSpeedMode:Ae,codexCliMissingError:Fe,installedSkills:Ke,accountRateLimitSnapshots:lt,messages:Ze,hasMoreOlderMessages:ut,isLoadingThreads:fe,isThreadListFullyLoaded:N,isLoadingMessages:oe,isLoadingOlderMessages:ue,isSendingMessage:Ee,isInterruptingTurn:Be,isSelectedThreadInterruptPending:A,isUpdatingSpeedMode:M,error:z,refreshAll:Z,refreshSkills:ce,refreshHooks:re,hooksList:je,isHooksLoading:Re,onRealtimeEvent:ke,selectThread:me,ensureThreadMessagesLoaded:Ve,loadMessages:Ne,loadOlderMessages:He,archiveThreadById:Ue,compactThreadById:Je,compactingThreadIds:et,fuzzyFileSearchResults:st,registerFuzzyFileSearchSession:mt,forkThreadById:q,renameThreadById:ae,forkThreadFromTurn:_e,sendMessageToSelectedThread:Ye,sendMessageToNewThread:bt,interruptSelectedThreadTurn:Tt,interruptedUnsubmittedMessage:At,clearInterruptedUnsubmittedMessage:Br,selectedThreadQueuedMessages:zt,removeQueuedMessage:Ha,reorderQueuedMessage:fa,steerQueuedMessage:pa,autoCompactThreshold:ar,setAutoCompactThreshold:Ur,setSelectedCollaborationMode:zr,readModelIdForThread:Ps,setSelectedModelIdForThread:qa,setSelectedReasoningEffort:Wa,updateSelectedSpeedMode:Uo,respondToPendingServerRequest:sr,pendingReplyErrorForRequest:Zn,renameProject:Rs,removeProject:ha,reorderProject:Es,pinProjectToTop:zo,startPolling:Po,stopPolling:Dn,primeSelectedThread:Ga,rollbackSelectedThread:Ms}=jN(),vt=ix(),Ct=sx(),{isMobile:kt}=Df();function mn(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const Fn=S(null),ho=S(null),Hr=S(null);let qr=null;const{buildFeedbackMailto:mo,feedbackMailtoBase:Ho,recordVisibleFailure:Ro}=ny(),Bn=Ho();function xt(u,p){p&&Ro(p);const T=u.currentTarget;T instanceof HTMLAnchorElement&&(T.href=mo())}const eo=S(null),vo=S(null),Eo=S(null),Mo=S(0);let en=null;function Un(){const u=Eo.value;if(!u)return;const p=window.getComputedStyle(u),T=Number.parseFloat(p.paddingLeft)+Number.parseFloat(p.paddingRight),O=Math.max(0,u.clientWidth-(Number.isFinite(T)?T:0)),V=window.getComputedStyle(u).getPropertyValue("--chat-column-max").trim(),Te=Number.parseFloat(V)*(V.endsWith("rem")?16:1),De=Number.isFinite(Te)&&Te>0?Math.min(O,Te):O;Mo.value=De}const ir=S(null),lr=S(null),bn=S(!0),ma=zN({isMobile:()=>kt.value,canShowRightPanel:()=>su.value,isVirtualKeyboardOpen:()=>pl.value}),{activeRightPanelTab:tn,filePreviewTabs:Wr,activeFilePreviewTabKey:go,activeFilePreviewTab:Lt,isRightPanelMenuOpen:zn,isMobileRightPanelOpen:sn,isRightPanelCollapsed:to,rightPanelWidth:nn,isTerminalInputFocused:Va,isTerminalKeyboardFocusFallbackActive:on,onRightResizeHandleMouseDown:qo,toggleRightPanelTerminal:ur,selectRightPanelTab:Ht,onOpenFilePreview:js,selectFilePreviewTab:Gr,closeFilePreviewTab:Wo,onCloseRightPanel:yo,onToggleRightPanelToggle:qt,onHideRightPanelTerminal:Ka,onTerminalFocusChange:no,resetTerminalKeyboardFocusState:Ya,clearTerminalKeyboardFocusFallbackTimer:wo}=ma,Vr=S(null),bo=S(!1),jo=S("");let oo=!1;const cr=S(!1),St=S(""),ln=S("local"),In=S({}),dr=new Map,An=S(""),Kr=S([]),fr=S(!1),dn=S({order:[],labels:{},projectOrder:[]}),C=S({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),E=S({phase:"idle",title:"",message:""}),Q=ON(),{isSidebarCollapsed:ye,isAccountsSectionCollapsed:ct,sidebarSearchQuery:_t,isSidebarSearchVisible:_n,sidebarScrollableRef:Kt,sidebarSearchInputRef:Pn,setSidebarCollapsed:Wt,toggleSidebarSearch:vn,clearSidebarSearch:mi,onSidebarScroll:pr,onSidebarSearchKeydown:hr,toggleAccountsSectionCollapsed:Ls}=Q,mr=S(null),Yr=S(null),Tn=S(null),vr=S(null);let Lo=null,va=0,$t=0,ga=0,rn=0;const gr=S("New Project (1)"),ya=S(""),Sn=S(!1),Ns=S("general");let Ja=0;function rl(){if(Sn.value){Ja=Date.now(),Sn.value=!1;return}Date.now()-Ja<CD||(Sn.value=!0)}const Hn=S(!1),Yt=S(!1),Gt=S(new Set);async function vi(){try{Gt.value=new Set(await Bk())}catch{}finally{Yt.value=!0}}const al=K(()=>!Yt.value||Gt.value.has("hooks/list")),$s=K(()=>!Yt.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(u=>Gt.value.has(u)));tt(Sn,u=>{u&&(re(),wi(),$s.value&&Ds())});const qn=S({enabled:!1,clients:[]}),gi=S(null),ro=S(!1),un=S(!1),Wn=S(""),yr=S(""),wr=S("");let Go=null,wa=!1,Qa=null;const Jr=S("never"),yi=S(!1),ba=S(!1),Rn=S(""),To=S("");let Xa=!1;const Ta=S(!1);async function wi(u={}){if(!(u.force!==!0&&Xa)){yi.value=!0,Rn.value="";try{Jr.value=await TI(),Xa=!0}catch(p){Rn.value=p instanceof Error?p.message:"Failed to load approval policy"}finally{yi.value=!1}}}function Os(u){Jr.value=u}async function Gn(){ba.value=!0,Rn.value="",To.value="";try{await SI(Jr.value),Ta.value=!0,To.value=f("Approval policy saved"),Vo&&clearTimeout(Vo),Vo=setTimeout(()=>{To.value=""},2200)}catch(u){Rn.value=u instanceof Error?u.message:"Failed to save approval policy"}finally{ba.value=!1}}let Vo=null;async function Ds(u={}){if(!(u.force!==!0&&wa)){ro.value=!0,yr.value="";try{const p=await bI();qn.value=p,wa=!0}catch(p){yr.value=p instanceof Error?p.message:"Failed to load remote control status"}finally{ro.value=!1}}}async function Fs(){const u=!qn.value.enabled;un.value=!0,Wn.value=u?"enable":"disable";try{await CI(u),qn.value={...qn.value,enabled:u},Sa(u?"Remote control enabled":"Remote control disabled")}catch(p){yr.value=p instanceof Error?p.message:"Failed to update remote control"}finally{un.value=!1,Wn.value=""}}async function bi(){un.value=!0,Wn.value="pairing";try{gi.value=await xI()}catch(u){yr.value=u instanceof Error?u.message:"Failed to start pairing"}finally{un.value=!1,Wn.value=""}}async function sl(){un.value=!0,Wn.value="clients";try{qn.value={...qn.value,clients:await kI()}}catch(u){yr.value=u instanceof Error?u.message:"Failed to load remote clients"}finally{un.value=!1,Wn.value=""}}async function Ti(u){un.value=!0,Wn.value=`revoke:${u}`;try{await II(u),qn.value={...qn.value,clients:qn.value.clients.filter(p=>p.clientId!==u)},Sa("Remote client removed")}catch(p){yr.value=p instanceof Error?p.message:"Failed to remove remote client"}finally{un.value=!1,Wn.value=""}}function Sa(u){wr.value=u,Go&&clearTimeout(Go),Go=setTimeout(()=>{wr.value=""},3e3)}const Qr=S(""),Xr=S(""),Za=S([]),So=S(null),No=S(null),$o=S(null),Zr=S(null),x=S(!1),R=S(!1),k=S({addedLineCount:0,removedLineCount:0}),G=S([]),We=S(""),Ot=S({}),ao=S(""),Co=S(""),cn=S({}),br=S(""),es=S(""),ts=S(!1),Tr=S(!1);function Tc(u,p){return`${u}\0${p?"with-reset-history":"without-reset-history"}`}const eu=S(null),Vn=S([]),Sr=S(!1),Cr=S(!1),ea=S(!1),En=S(!1),Si=S(!1),ns=S(""),Ca=S(""),tu=S(null),xa=S(""),Ko=S(""),xo=S(""),Qt=S(""),os=S(Qc(Xm,!0)),ta=S(Wb()),ka=S(qb()),Bs=S(Gb()),rs=S(Qc(tv,!1)),Yo=S(Qc(nv,!0)),xr=S(lT()),Sc=K(()=>uT()),il=K(()=>{const{loaded:u,total:p}=C.value,T=hp(u);return p&&p>0?`${T} / ${hp(p)}`:u>0?T:f("Preparing...")}),Jo=K(()=>{const{loaded:u,total:p,phase:T}=C.value;return T==="ready"?"100%":!p||p<=0?u>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(u/p*100)))}%`}),Ci=S(!1),na=S(!1),Us=S(!1),zs=S(""),nu=S(!1),ll=S(null),Cn=S(!1),Oo=S(""),ko=S("codex"),m=K(()=>[{value:"codex",label:f("Codex")},{value:"openrouter",label:f("OpenRouter")},{value:"opencode-zen",label:f("OpenCode Zen")},{value:"custom",label:f("Custom endpoint")}]),g=S(""),I=S(""),$=S("responses"),J=S("responses"),ie=S(""),X=S(!1),se=S(""),we=S(""),Ie=S(""),ze=S(!1),pt=S(!1),ht=S(""),it=S(""),Pt=S(!1),Ia=S(!1),Kn=S("create"),Hs=S(""),oa=S(""),Aa=S(""),qs=S(!1),Qo=S(""),Mn=S(!1),xi=S(null),ul=S(null),kr=S(!1),cl=S(null),ou=S(null),ra=S(""),Do=S(""),as=S(""),ki=S([]),fn=S(""),Ce=S(!1),wt=S(!1),Fo=S(!1),so=S(""),ru=[z,Fe,We,Co,Qt,Oo,Ie,it,Qo,fn],Ny=K(()=>ru.some(u=>u.value.trim().length>0)),aa=S({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),Cc=S(null),xc=S(!1),kc=S(!1),Ws=S(typeof window<"u"?((Op=window.visualViewport)==null?void 0:Op.height)??window.innerHeight:0),Ic=S(typeof window<"u"?((Dp=window.visualViewport)==null?void 0:Dp.offsetTop)??0:0),dl=S(typeof window<"u"?window.innerHeight:0);let ss=null,Ac=!1,_c=!1,Pc=!1,fl=0;const Gs=K(()=>{const u=vt.params.threadId;return typeof u=="string"?u:""}),gn=K(()=>vt.name==="home"),is=K(()=>vt.name==="skills"),Vs=K(()=>vt.name==="automations"),Yf=K(()=>{const u=vt.query.automationId;return typeof u=="string"?u:""}),$y=K(()=>{var u;return Vs.value?f("Automations"):is.value?f("Skills"):gn.value?f("Start new thread"):((u=le.value)==null?void 0:u.title)??f("Choose a thread")}),Oy=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",Dy=K(()=>{var p,T;return(((T=(p=le.value)==null?void 0:p.title)==null?void 0:T.trim())??"")||Oy}),Ii=K(()=>Ze.value.filter(u=>{const p=dT(u.messageType,u.role);return p==="worked"?!0:!(p==="turnActivity.live"||p==="turnError.live"||p==="agentReasoning.live")})),Rc=S([]);tt(()=>[Ii.value,oe.value],([u,p])=>{p||(Rc.value=u)},{immediate:!0});const Fy=K(()=>oe.value&&Rc.value.length>0?Rc.value:Ii.value),Jf=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Ec=S(null);function By(u,p,T){const O=typeof p.turnIndex=="number"?p.turnIndex:-1;return O<0?!1:u.some((V,Te)=>Te>T&&typeof V.turnIndex=="number"&&V.turnIndex>=O&&Jf.has(V.messageType??""))}function Uy(u,p){return u.some(T=>typeof T.turnIndex=="number"&&T.turnIndex>=p&&Jf.has(T.messageType??""))}const Mc=K(()=>{const u=Ii.value,p=oe.value;for(let Te=u.length-1;Te>=0;Te-=1){const De=u[Te];if(De.messageType!=="plan"&&De.messageType!=="plan.live")continue;const Ft=Om(De);if(!Ft||Ec.value!==null&&De.id===Ec.value)return null;const gT=p?!0:By(u,De,Te);return{id:De.id,streaming:De.messageType==="plan.live",explanation:Ft.explanation,steps:Ft.steps,implemented:gT}}const T=ne.value?Pe.value[ne.value]??null:null;if(!T)return null;const O=Om(T);if(!O)return null;const V=typeof T.turnIndex=="number"?T.turnIndex:T.turnId?ge(ne.value,T.turnId)??-1:-1;return{id:T.id,streaming:T.messageType==="plan.live",explanation:O.explanation,steps:O.steps,implemented:p?!0:V>=0?Uy(u,V):!1}}),zy=K(()=>Se.value),Ks=K(()=>gn.value?"__new-thread__":ne.value),Qf=K(()=>Ps(Ks.value)),au=K(()=>{const u=he.value;return u.length>0?u[u.length-1]:null}),Hy=K(()=>au.value?Zn(au.value.id):""),yn=K(()=>{var u,p;return gn.value?St.value.trim():((p=(u=le.value)==null?void 0:u.cwd)==null?void 0:p.trim())??""}),su=K(()=>bn.value&&(gn.value&&yn.value.length>0||vt.name==="thread"&&ne.value.length>0)),qy=K(()=>su.value&&tn.value==="terminal"),pl=K(()=>!kt.value||Ws.value<=0||dl.value<=0?!1:dl.value-Ws.value>120),Wy=K(()=>pl.value||qy.value&&on.value),Xf=K(()=>{var u,p;return((p=(u=le.value)==null?void 0:u.cwd)==null?void 0:p.trim())??St.value.trim()}),jc=K(()=>{var u;return!gn.value&&((u=le.value)==null?void 0:u.inProgress)===!0}),Gy=K(()=>{const u=ne.value;return!!u&&et.value.has(u)}),Zf=K(()=>{var u,p;return!gn.value&&((p=(u=le.value)==null?void 0:u.externalSession)==null?void 0:p.active)===!0}),Lc=K(()=>Ee.value||Be.value||jc.value||he.value.length>0);function ep(){Ci.value&&(Ci.value=!1,dI(!0))}function Vy(){ep(),Ct.push({name:"skills",query:{tab:"plugins"}})}function Ky(){const u=ne.value;u&&Je(u)}function Nc(u,p){const T=Xe(u).trim(),O=Bo(T);return!T||!O?!1:p.some(V=>{const Te=Xe(V).trim();return Te!==T&&Bo(Te)===O})}function $c(u,p=""){const T=Xe(u).trim(),O=p.trim();if(O)return O;const V=Bo(T),Te=[...dn.value.order,...H.value.map(De=>{var Ft,Io;return((Io=(Ft=De.threads[0])==null?void 0:Ft.cwd)==null?void 0:Io.trim())??""}).filter(Boolean)];return Nc(T,Te)?T:V}function Yy(){const u=new Set(dn.value.order),p=dn.value.projectOrder.filter(T=>u.has(T));for(const T of dn.value.order)p.includes(T)||p.push(T);return p}function hl(u){const p=Xe(u).trim(),T=[...dn.value.order,...H.value.map(O=>{var V,Te;return((Te=(V=O.threads[0])==null?void 0:V.cwd)==null?void 0:Te.trim())??""}).filter(Boolean)];return Nc(p,T)?p:Bo(p)}function tp(u){const p=Xe(u).trim();if(!p)return"";const T=[...dn.value.order,...H.value.map(O=>{var V,Te;return((Te=(V=O.threads[0])==null?void 0:V.cwd)==null?void 0:Te.trim())??""}).filter(Boolean)];for(const O of dn.value.order){const V=Xe(O).trim();if(!V)continue;const Te=Bo(V),De=Nc(V,T)?V:Te;if(V===p||De===p||Te===p)return V}return""}const Oc=K(()=>{var O,V;const u=[],p=new Set;for(const Te of Yy()){const De=Te.trim();!De||p.has(De)||(p.add(De),u.push({value:De,label:$c(De,dn.value.labels[De])}))}for(const Te of H.value){const De=((V=(O=Te.threads[0])==null?void 0:O.cwd)==null?void 0:V.trim())??"";!De||p.has(De)||Ku(De)||(p.add(De),u.push({value:De,label:$c(De,be.value[Te.projectName])}))}const T=St.value.trim();return T&&!p.has(T)&&u.unshift({value:T,label:$c(T)}),u}),Ys=K(()=>{const u=St.value.trim();return u?In.value[u]===!0:!1}),Jy=K(()=>{var p,T;const u={};for(const O of H.value){const V=_i(O.projectName,((T=(p=O.threads[0])==null?void 0:p.cwd)==null?void 0:T.trim())??"");u[O.projectName]=V?In.value[V]===!0:!1}return u}),Dc=K(()=>{const u=An.value.trim(),p=[...Kr.value];return u&&!p.some(T=>T.value===u)&&p.unshift({value:u,label:u}),p}),np=K(()=>{const u=An.value.trim();if(!u)return"";const p=Dc.value.find(T=>T.value===u);return(p==null?void 0:p.label)??u}),op=K(()=>Do.value.trim()),rp=K(()=>{const u=ht.value.trim();return!u||u==="."||u===".."?!1:!/[\\/]/u.test(u)}),Qy=K(()=>rp.value&&op.value.trim().length>0&&!fn.value),ap=K(()=>{const u=oa.value.trim();return!u||u==="."||u===".."?!1:!/[\\/]/u.test(u)}),sp=K(()=>Hs.value.trim()?Kn.value==="create"?ap.value:Aa.value.trim().length>0:!1),ml=K(()=>{const u=Xe(ra.value).trim();return u||Do.value.trim()}),Xy=K(()=>Pt.value?"Creating…":"Create"),Zy=K(()=>Mn.value?Kn.value==="clone"?f("Cloning…"):f("Creating…"):Kn.value==="clone"?f("Clone repository"):f("Create project")),ew=K(()=>{const u=Do.value.trim(),p=as.value.trim();return!!(u&&p&&u!==p)}),ip=K(()=>{const u=[];ew.value&&u.push({key:`parent:${as.value}`,name:"..",path:as.value,kind:"parent"});for(const p of ki.value)u.push({key:`directory:${p.path}`,name:p.name,path:p.path,kind:"directory"});return u}),Fc=K(()=>{const u=so.value.trim().toLowerCase();return u?ip.value.filter(p=>p.kind==="parent"||p.name.toLowerCase().includes(u)):ip.value}),Ai=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,tw=K(()=>f(j[Bs.value].label)),nw=K(()=>{const u=j[Bs.value],p=Math.max(0,dl.value-Ws.value-Ic.value);return{"--chat-column-max":u.columnMax,"--chat-card-max":u.cardMax,"--visual-viewport-height":Ws.value>0?`${Ws.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Ic.value)}px`,"--virtual-keyboard-inset":`${p}px`}}),ow=K(()=>{if(!aa.value.configured)return f("Not configured");const u=aa.value.active?f("Online"):f("Configured (offline)"),p=aa.value.allowAllUsers?f("allow all users"):`${aa.value.allowedUsers} ${f("allowed user(s)")}`,T=`${aa.value.mappedChats} ${f("chat(s)")}, ${aa.value.mappedThreads} ${f("thread(s)")}, ${p}`,O=aa.value.lastError?`, ${f("error")}: ${aa.value.lastError}`:"";return`${u}, ${T}${O}`});pi(()=>{var u,p;document.addEventListener("pointerdown",wp),window.addEventListener("keydown",yp),document.addEventListener("visibilitychange",bp),window.addEventListener("pageshow",Tp),window.addEventListener("focus",Sp),window.addEventListener("resize",Js),(u=window.visualViewport)==null||u.addEventListener("resize",Js),(p=window.visualViewport)==null||p.addEventListener("scroll",Js),Js(),pu(),Ai==null||Ai.addEventListener("change",pu),qr=ke(T=>{Hr.value&&Hr.value.refreshFromNotification(T)}),Qa=ke(T=>{T==="remoteControl/status/changed"&&Ds({force:!0})}),fT(),$b(),vi(),sw(),us(),Ir(),up(),Bc(),Xc(),ob(),wi()}),tt(ru,(u,p)=>{u.forEach((T,O)=>{if(T===p[O])return;const V=T.trim();V&&Ro(V)})}),tt(Eo,u=>{en&&(en.disconnect(),en=null),typeof ResizeObserver<"u"&&(en=new ResizeObserver(Un),u&&en.observe(u)),Un()},{immediate:!0}),Jl(()=>{var u,p;document.removeEventListener("pointerdown",wp),window.removeEventListener("keydown",yp),document.removeEventListener("visibilitychange",bp),window.removeEventListener("pageshow",Tp),window.removeEventListener("focus",Sp),window.removeEventListener("resize",Js),(u=window.visualViewport)==null||u.removeEventListener("resize",Js),(p=window.visualViewport)==null||p.removeEventListener("scroll",Js),Ai==null||Ai.removeEventListener("change",pu),en&&(en.disconnect(),en=null),ss!==null&&(window.clearInterval(ss),ss=null),Lo&&(clearTimeout(Lo),Lo=null),wo(),Dn(),qr&&(qr(),qr=null),Qa&&(Qa(),Qa=null),Go&&(clearTimeout(Go),Go=null)});function Js(){var u,p;typeof window>"u"||(dl.value=Math.max(dl.value,window.innerHeight),Ws.value=((u=window.visualViewport)==null?void 0:u.height)??window.innerHeight,Ic.value=((p=window.visualViewport)==null?void 0:p.offsetTop)??0)}tt(_t,u=>{const p=u.trim();if(Lo&&(clearTimeout(Lo),Lo=null),!p){vr.value=null;return}Lo=setTimeout(()=>{Rx(p,1e3).then(T=>{_t.value.trim()===p&&(vr.value=T.threadIds)}).catch(()=>{_t.value.trim()===p&&(vr.value=null)})},220)}),tt(pl,u=>{u||(on.value=!1)}),tt(Vn,()=>{if(typeof window>"u")return;if(!Vn.value.some(p=>p.quotaStatus==="loading")){ss!==null&&(window.clearInterval(ss),ss=null);return}ss===null&&(ss=window.setInterval(()=>{Ac||(Ac=!0,vl({silent:!0}).finally(()=>{Ac=!1}))},1500))},{deep:!0}),tt(lt,()=>{lp().then(u=>{u&&Z({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function lp(){if(!_c||Pc||ko.value!=="codex"||Vn.value.length>0||lt.value.length===0)return!1;Pc=!0;const u=JSON.stringify(Vn.value.map(T=>T.accountId).sort());try{const T=await hm();Vn.value=T.accounts}catch{await vl({silent:!0})}const p=JSON.stringify(Vn.value.map(T=>T.accountId).sort());return u!==p}function rw(){ce({force:!0})}function aw(u){u&&Ne(u,{silent:!0,force:!0})}async function Bc(){try{aa.value=await nI()}catch(u){const p=u instanceof Error?u.message:"Failed to load Telegram status";aa.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:p}}}async function up(){try{const u=await tI();se.value=u.botToken,we.value=u.allowedUserIds.map(p=>String(p)).join(`
78
+ `)}mL(m);const Qo=No(m);Qo&&(x($,Qo),Yt($,{label:"Running command",details:[((fn=Qo.commandExecution)==null?void 0:fn.command)??""]}));const Mn=xL(m);if(Mn){const Ce=(B.value[$]??[]).find(wt=>wt.id===Mn.itemId);Ce!=null&&Ce.commandExecution&&x($,{...Ce,commandExecution:{...Ce.commandExecution,aggregatedOutput:`${Ce.commandExecution.aggregatedOutput}${Mn.delta}`}})}const xi=$o(m);xi&&x($,xi);const ul=Zr(m);if(ul&&wa($,ul),G(m)&&Rn($,!0),m.method==="turn/completed"){on=!1,Rn($),Ym(vt),B.value[$]&&(B.value=yt(B.value,$));const Ce=Ln(m);Ce&&(mr(Ce),rn(Ce,!1),Yt(Ce,null),Hn(Ce),ze||(hr(Ce),cr(Ce)))}}function es(m){if(m.method==="thread/tokenUsage/updated"||m.method.startsWith("thread/realtime/"))return;const g=m.method,I=g==="turn/started"||g==="turn/completed"||g==="error",$=g.startsWith("thread/")||g==="turn/completed";if(!I&&!$)return;const J=Ln(m);J&&I&&nn.add(J),$&&(sn=!0,to=!0),!(Lt!==null||typeof window>"u")&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}async function ts(m,g){if(!Va){Va=!0;try{if(!g)return;const I=[];for(const $ of bc(g)){const J=fi($);I.includes(J)||I.push(J)}if(I.length>0){const $=g.projectOrder.length>0?$i(I,m):$i(Re.value,m);Oa(Re.value,$)||Ue($,{persist:!1})}if(Object.keys(g.labels).length>0||(g.remoteProjects??[]).length>0){const $={...je.value};let J=!1;for(const[ie,X]of Object.entries(g.labels)){const se=Xe(ie).trim(),we=[fi(ie)];se&&we.push(se);for(const Ie of we)$[Ie]!==X&&($[Ie]=X,J=!0)}for(const ie of g.order){const X=fi(ie),se=nr(qi(ie));if(!se.startsWith(".")||se===X)continue;const we=`${X} ${se}`;$[X]!==void 0||$[X]===we||($[X]=we,J=!0)}for(const ie of g.remoteProjects??[]){const X=Ij(ie);$[ie.id]!==X&&($[ie.id]=X,J=!0)}J&&He($,{persist:!1})}}catch{}}}async function Tr(){try{return await Oi()}catch{return null}}function Tc(m,g){const I=lf(m,g),$=Rj(m,g),J=Ej($,g,I);if(!g||g.order.length===0&&(g.remoteProjects??[]).length===0)return J;const ie=new Set;for(const se of sf(g,I))ie.add(se);const X=J.filter(se=>ie.has(se.projectName)?!0:cf(se));return Pj(X,g,I)}function eu(m,g){const I=Tc(m,g),$=!!(g&&(g.order.length>0||g.projectOrder.length>0||(g.remoteProjects??[]).length>0)),J=g!=null&&g.projectOrder.length?$i(sf(g,lf(m,g)),I):$i(Re.value,I);Oa(Re.value,J)||Ue(J,{persist:!$});const ie=rf(I,Re.value);Ja(new Set(Yn(ie).map(we=>we.id)));const X=xj(t.value,ie,j.value);t.value=Xu(t.value,X),j.value=Xt(j.value,new Set(Yn(t.value).map(we=>we.id))),new Set(Yn(t.value).map(we=>we.id));const se={};for(const we of Yn(t.value))se[we.id]=we.externalSession??be.value[we.id]??null;be.value=se,Tn()}function Vn(m){Ht.removeThreadFromLoadedLists(m),t.value=hy(t.value,m),j.value=yt(j.value,m),Tn()}async function Sr(m={}){await Promise.allSettled([Ae({providerChanged:m.providerChanged,includeProviderModels:m.includeProviderModels}),mo(),A(),dn()])}function Cr(m={}){const g=()=>{Sr(m)};if(typeof window>"u"){g();return}window.setTimeout(g,0)}async function ea(m={}){o.value="",ge.value="";const g=m.includeSelectedThreadMessages!==!1,I=m.awaitAncillaryRefreshes===!0;try{if(await Vr(),await Ht.loadThreads({force:m.forceThreadRefresh===!0}),g)try{await At(n.value)}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}I?await Sr({providerChanged:m.providerChanged,includeProviderModels:m.providerChanged===!0||I}):Cr({providerChanged:m.providerChanged,includeProviderModels:!1})}catch($){o.value=$ instanceof Error?$.message:"Unknown application error",dy($)?ge.value=_y:ge.value=""}}async function En(m){vn(m);try{return await At(m),await Ae({includeProviderModels:!0}),dn(),"ok"}catch(g){const I=g instanceof Error?g.message:"Unknown application error";o.value=I;const $=tj(g)?"not-found":"error";return m.trim()&&Gt(m,I,{transient:!0}),$}}async function Si(m){const g=n.value===m,I=g?ej(Yn(e.value),m):"";g&&(vn(I),I&&At(I,{silent:!0}));try{await xk(m),Vn(m),await Ht.loadThreads(),g&&I&&n.value===I&&await Ye(I,{silent:!0})}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}}async function ns(m,g){const I=g.trim();if(!(!m||!I))try{await Ak(m,I),Ur.value={...Ur.value,[m]:I},Tn(),Yu(m,I)}catch($){o.value=$ instanceof Error?$.message:"Unknown application error"}}async function Ca(m){var X,se;const g=m.trim();if(!g)return"";const I=Yn(t.value).find(we=>we.id===g),$=((X=I==null?void 0:I.cwd)==null?void 0:X.trim())??"",J=((se=I==null?void 0:I.title)==null?void 0:se.trim())??"Forked chat",ie=Le(g);o.value="";try{const we=await nm(g,$||void 0,ie||void 0),Ie=we.threadId.trim();return Ie?(vr(Ie,$,J),ut(Ie,we.model),Je.value={...Je.value,[Ie]:!0},vn(Ie),await Ht.loadThreads(),await At(Ie),Ie):""}catch(we){return o.value=we instanceof Error?we.message:"Unknown application error",""}}async function tu(m,g){var X;const I=m.trim();if(!I||!Number.isInteger(g)||g<0)return"";if(j.value[I]===!0)return o.value="Finish the current turn before forking from a response.","";if(zt.value[I]!==!0)try{await At(I)}catch(se){return o.value=se instanceof Error?se.message:"Unknown application error",""}const $=r.value[I]??[];let J=-1;for(const se of $)typeof se.turnIndex=="number"&&Number.isFinite(se.turnIndex)&&(J=Math.max(J,se.turnIndex));if(J>=0&&g>J)return"";const ie=Yn(t.value).find(se=>se.id===I)??null;try{o.value="";const se=await nm(I),we=se.threadId.trim();if(!we)return"";const Ie=se.cwd.trim()||((X=ie==null?void 0:ie.cwd)==null?void 0:X.trim())||"",ze=Mj((ie==null?void 0:ie.title)||(ie==null?void 0:ie.preview)||"Untitled thread");vr(we,Ie,ze),ut(we,se.model),ro(we,se.messages),zt.value={...zt.value,[we]:!0},Je.value={...Je.value,[we]:!0},To(we),Wn(we,[]),Rn(we),B.value[we]&&(B.value=yt(B.value,we)),$t(we,null),Yt(we,null),Gt(we,null),rn(we,!1);const pt=J-g;if(pt>0){const ht=await wd(we,pt);ro(we,ht)}return await ns(we,ze),vn(we),Ht.loadThreads().catch(()=>{}),we}catch(se){return o.value=se instanceof Error?se.message:"Unknown application error",""}}async function xa(m,g,I=[],$=[],J=[]){if(!m||!g.trim()||I.length>0||$.length>0||J.length>0)return!1;const X=(Es.value[m]??[]).filter(Ie=>Ie.method==="item/tool/requestUserInput");if(X.length!==1)return!1;const[se]=X,we=jL(se);return we.length!==1?!1:ll({id:se.id,result:{answers:{[we[0]]:{answers:[g.trim()]}}}})}async function Ko(m,g,I,$,J,ie){if(le||yo.value<=0||j.value[m]===!0)return!1;const X=xt.value[m];if(!X||X.remainingContextPercent===null||X.remainingContextPercent>yo.value)return!1;const se=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,we=ie==="plan"?"plan":ie==="default"?"default":Ee.value;return Wo(m,{id:se,text:g,imageUrls:I,skills:$,fileAttachments:J,collaborationMode:we}),en.value.has(m)||il(m),!0}async function xo(m){const g=wo(m);if(!g||g.length===0||j.value[m]===!0)return;const I=In(m);le=!0;try{for(const $ of I)try{await Qt($.text,$.imageUrls,$.skills,"steer",$.fileAttachments,void 0,$.collaborationMode)}catch{}}finally{le=!1}}async function Qt(m,g=[],I=[],$="steer",J=[],ie,X){if(Y.value)return;const se=n.value,we=m.trim();if(!se||!we&&g.length===0&&J.length===0||await xa(se,we,g,I,J)||await Ko(se,we,g,I,J,X))return;const Ie=j.value[se]===!0;if(Ie&&$==="queue"){const ze=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;Ka(se,{id:ze,text:we,imageUrls:g,skills:I,fileAttachments:J,collaborationMode:X==="plan"?"plan":X==="default"?"default":Ee.value},ie);return}if(Ie){on=!0,un(se,we,g,I,J),ta(se,we,g,I,J,X).catch(ze=>{const pt=ze instanceof Error?ze.message:"Unknown application error";Gt(se,pt),o.value=pt});return}o.value="",on=!0,$t(se,null),un(se,we,g,I,J),Yt(se,{label:"Thinking",details:te(Le(se),ne.value,X==="plan"?"plan":X==="default"?"default":Ee.value)}),Gt(se,null),rn(se,!0);try{await ta(se,we,g,I,J,X)}catch(ze){on=!1,rn(se,!1),Yt(se,null);const pt=ze instanceof Error?ze.message:"Unknown application error";throw Gt(se,pt),o.value=pt,ze}}async function os(m,g,I=[],$=[],J=[]){if(Y.value)return"";const ie=m.trim(),X=g.trim(),se=Le(Is).trim(),we=Ee.value;if(!ie&&I.length===0&&J.length===0)return"";vo.value=!0,o.value="";let Ie="";try{try{const it=await tm(X||void 0,se||void 0);Ie=it.threadId,ut(Ie,it.model),fe(Ie,it.modelProvider||he.value),z(Ie,we)}catch(it){if(se&&se!==Pr&&ku(it)){await $e();const Pt=await tm(X||void 0,Pr);Ie=Pt.threadId,ut(Ie,Pt.model),fe(Ie,Pt.modelProvider||he.value),z(Ie,we)}else throw it}if(!Ie)return"";vr(Ie,X,ie||"[Image]"),un(Ie,ie,I,$,J),ya(Ie),Je.value={...Je.value,[Ie]:!0},vn(Ie),on=!0,$t(Ie,null),Yt(Ie,{label:"Thinking",details:te(Le(Ie),ne.value,we)}),Gt(Ie,null),rn(Ie,!0);const ze=Ie,pt=X||null,ht=ie;return ta(Ie,ie,I,$,J,we).catch(it=>{on=!1,rn(Ie,!1),Yt(Ie,null);const Pt=it instanceof Error?it.message:"Unknown application error";Gt(Ie,Pt),o.value=Pt}).finally(()=>{vo.value=!1}),qa(ze,ht,pt,I,J),Ie}catch(ze){on=!1,Ie&&(rn(Ie,!1),Yt(Ie,null));const pt=ze instanceof Error?ze.message:"Unknown application error";throw Ie&&Gt(Ie,pt),o.value=pt,vo.value=!1,ze}}async function ta(m,g,I=[],$=[],J=[],ie){const X=ne.value,se=ie==="plan"?"plan":ie==="default"?"default":Ee.value,we=g.trim(),Ie=[...I];if(Ie.length===0&&tn(we)){const ht=Wr(m);ht&&Ie.push(ht)}const ze=$.map(ht=>({name:ht.name,path:ht.path})),pt=J.map(ht=>({...ht}));pr(m,{text:we,imageUrls:[...Ie],skills:ze,fileAttachments:pt,effort:X,collaborationMode:se,fallbackRetried:!1});try{if(Je.value[m]!==!0){const Pt=await Zd(m);Pt.model&&ut(m,Fe(m,Pt.model,Pt.modelProvider)),Pt.modelProvider&&fe(m,Pt.modelProvider),Je.value={...Je.value,[m]:!0}}const ht=Le(m);let it="";try{it=await bd(m,g,Ie,ht||void 0,X||void 0,$.length>0?$:void 0,J,se)}catch(Pt){if(ht&&ht!==Pr&&ku(Pt))await $e(m),pr(m,{text:we,imageUrls:[...Ie],skills:ze,fileAttachments:pt,effort:X,collaborationMode:se,fallbackRetried:!0}),it=await bd(m,g,Ie,Pr,X||void 0,$.length>0?$:void 0,J,se);else throw Pt}it&&(ae.value={...ae.value,[m]:it},Ns(m,it)),nn.add(m),await Jo(),Yr(m)}catch(ht){throw ht}}async function ka(){const m=n.value;if(!m||j.value[m]!==!0||Ct.value[m]===!0)return;let g=ae.value[m];if(!g){const{activeTurnId:ie}=await Xd(m);g=ie,g&&(ae.value={...ae.value,[m]:g})}if(!g)throw new Error("Could not determine active turn id for interrupt");const I=_t.value.filter(ie=>ie.turnId===g),$=I.find(ie=>ie.role==="user"),J=I.some(ie=>{if(ie.role==="assistant")return!0;const X=ie.messageType??"";return X==="commandExecution"||X==="toolCall"||X==="worked"||X==="fileChange"||X==="plan"||X==="plan.live"||X==="compaction.done"||X==="turnError"});Eo.value=!0,o.value="";try{if(await _k(m,g),rn(m,!1),Yt(m,null),Gt(m,null),ae.value[m]&&(ae.value=yt(ae.value,m)),nn.add(m),sn=!0,await Jo(),$&&!J){const ie=(r.value[m]??[]).filter(se=>se.turnId!==g);ro(m,ie);const X=d.value[m];if(X){const se=X.filter(we=>we.turnId!==g);se.length!==X.length&&(d.value={...d.value,[m]:se},Rd(d.value))}Fn.value={...Fn.value,[m]:{text:$.text??"",imageUrls:$.images??[],fileAttachments:($.fileAttachments??[]).map(se=>({label:se.label,path:se.path,fsPath:se.fsPath??se.path})),skills:$.skills??[]}}}}catch(ie){const X=ie instanceof Error?ie.message:"Failed to interrupt active turn";Gt(m,X),o.value=X}finally{Eo.value=!1}}function Bs(m){m&&Fn.value[m]&&(Fn.value=yt(Fn.value,m))}async function rs(m){var I,$,J;const g=n.value;if(g&&!Mo.value&&m.trim()){Mo.value=!0,o.value="";try{j.value[g]===!0&&await ka();const ie=r.value[g]??[],X=ie.find(ht=>ht.turnId===m),se=typeof(X==null?void 0:X.turnIndex)=="number"?X.turnIndex:((I=et.value[g])==null?void 0:I[m])??-1;if(se<0)return;const we=ie.reduce((ht,it)=>typeof it.turnIndex=="number"&&it.turnIndex>ht?it.turnIndex:ht,-1);if(we<0||se>we)return;const Ie=we-se+1,ze=((J=($=Gr.value)==null?void 0:$.cwd)==null?void 0:J.trim())??"";ze&&await aA(g,m,ze);const pt=await wd(g,Ie);ro(g,pt),Wn(g,[]),Rn(g),B.value[g]&&(B.value=yt(B.value,g)),$t(g,null),Yt(g,null),Gt(g,null),sn=!0,await Jo()}catch(ie){o.value=ie instanceof Error?ie.message:"Failed to rollback thread"}finally{Mo.value=!1}}}function Yo(m,g){const $=(l.value[m]??[]).filter(J=>J.messageType!=="compaction.pending"&&J.messageType!=="compaction.done");$.push({id:`compaction:${g}:${m}:${Date.now()}`,role:"system",text:"",messageType:g==="pending"?"compaction.pending":"compaction.done"}),l.value={...l.value,[m]:$}}function xr(m,g){const I=new Set(en.value);g?I.add(m):I.delete(m),en.value=I}function Sc(m){lr=m.trim(),ir.value=[]}async function il(m){const g=m.trim();if(!(!g||en.value.has(g))){xr(g,!0),Yo(g,"pending");try{await Ik(g);const I=2e3,$=14,J=Date.now()+Un;let ie=0;for(;Date.now()<J&&ie<$&&en.value.has(g);){if((await Xd(g)).messages.some(we=>we.messageType==="compaction.done")){xr(g,!1),n.value===g&&await At(g,{silent:!0,force:!0}),Yo(g,"done"),xo(g);break}ie+=1,await Z1(I)}en.value.has(g)&&(xr(g,!1),Yo(g,"done"),xo(g))}catch(I){o.value=I instanceof Error?I.message:"Failed to compact thread",xr(g,!1),Yo(g,"done"),xo(g)}}}async function Jo(){if(bn.value){typeof window<"u"&&Lt===null&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u));return}bn.value=!0;const m=sn,g=to,I=new Set(nn);sn=!1,to=!1,nn.clear();try{m&&await Ht.loadThreads({force:g});const $=n.value;if(!$)return;const J=I.has($),ie=j.value[$]===!0,X=$s($),se=Ha.value[$]??"";(X.length>0&&X!==se||J||ie&&zt.value[$]!==!0||m&&zt.value[$]!==!0)&&await At($,{silent:!0,force:J})}catch{}finally{bn.value=!1,(sn||nn.size>0)&&typeof window<"u"&&Lt===null&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}}async function Ci(){await sr(),sn=!Ht.hasLoadedThreads.value,n.value&&zt.value[n.value]!==!0&&nn.add(n.value),await Jo()}function na(m){const g=qe(m.params),I=typeof(g==null?void 0:g.threadId)=="string"?g.threadId.trim():"";if(!I)return;const $=qe(g==null?void 0:g.externalSession),J=$&&typeof $.origin=="string"&&$.origin.trim().length>0?{origin:$.origin.trim(),active:$.active===!0,lastWriteAt:typeof $.lastWriteAt=="string"?$.lastWriteAt:null}:null;be.value={...be.value,[I]:J},rn(I,(J==null?void 0:J.active)===!0),Tn(),sn=!0,n.value===I&&nn.add(I),Lt===null&&typeof window<"u"&&(Lt=window.setTimeout(()=>{Lt=null,Jo()},_u))}function Us(){typeof window>"u"||go||(sr(),zs(),nu(),go=Jk(m=>{if(m.method==="ready"){al(),Ci();return}if(m.method==="externalSessionChanged"){na(m);return}br(m),es(m)}))}async function zs(){try{const m=await rI(),g=Object.entries(m);if(g.length===0)return;const I={...d.value};let $=!1;for(const[J,ie]of g){const X=ie.filter(ze=>!!ze&&typeof ze.id=="string");if(X.length===0)continue;const se=I[J]??[],we=new Set(se.map(ze=>ze.text)),Ie=[...se];for(const ze of X)we.has(ze.text)||(Ie.push(ze),we.add(ze.text));I[J]=Ie.slice(-20),$=!0}$&&(d.value=I,Rd(I))}catch{}}async function nu(){try{const m=await sI(),g=Object.entries(m);if(g.length===0)return;const I={...c.value};let $=!1;for(const[J,ie]of g){if(!J||!ie||typeof ie!="object"||Array.isArray(ie))continue;const X={};for(const[Ie,ze]of Object.entries(ie))!Ie||typeof ze!="number"||!Number.isFinite(ze)||ze<=0||(X[Ie]=Math.round(ze));if(Object.keys(X).length===0)continue;const se={...I[J]??{},...X},we=Object.keys(se);I[J]=we.length>200?Object.fromEntries(we.slice(-200).map(Ie=>[Ie,se[Ie]])):se,$=!0}$&&(c.value=I,Wm(I))}catch{}}async function ll(m){try{return await Qk(m.id,{result:m.result,error:m.error}),Dn(m.id),Zn.value=yt(Zn.value,String(m.id)),!0}catch(g){const I=g instanceof Error?g.message:"Failed to reply to server request";return await ha(m.id)?(o.value=I,Zn.value={...Zn.value,[String(m.id)]:I},!1):(Dn(m.id),Zn.value=yt(Zn.value,String(m.id)),!0)}}function Cn(){if(go&&(go(),go=null),sn=!1,nn.clear(),qo.clear(),Lt!==null&&typeof window<"u"&&(window.clearTimeout(Lt),Lt=null),Bn(),Ht.dispose(),typeof window<"u")for(const m of zn.values())window.clearTimeout(m);zn.clear(),on=!1,r.value={},a.value={},i.value={},v.value={},d.value={},c.value={},B.value={},L.value={},et.value={},mt.value={},st.value={},q.value={},ae.value={},P.clear(),Ym(vt),y.clear(),Lj(),Ct.value={},kt.value={},mn.value={},qt(),Ro(null),xt.value={}}function Oo(m){const g=n.value;if(!g)return;const I=Ya(g,m);if(I){jo(m),M(I.collaborationMode),le=!0,Qt(I.text,I.imageUrls,I.skills,"steer",I.fileAttachments).finally(()=>{le=!1});return}const $=no(g,m);$&&(jo(m),M($.collaborationMode),Qt($.text,$.imageUrls,$.skills,"steer",$.fileAttachments))}function ko(m,g={}){vn(m,g)}return{projectGroups:e,projectDisplayNameById:je,selectedThread:Gr,selectedThreadTokenUsage:ct,selectedThreadTerminalOpen:C,isSelectedThreadInterruptPending:E,selectedThreadServerRequests:Ga,selectedLiveOverlay:ye,selectedActiveTurnId:Q,lastPlanByThreadId:s,resolveThreadTurnIndex:Sa,codexQuota:qr,selectedThreadId:n,availableCollaborationModes:ue,availableModelIds:Se,availableModelReasoningEfforts:Pe,selectedCollaborationMode:Ee,selectedModelId:pe,selectedReasoningEffort:ne,selectedSpeedMode:xe,codexCliMissingError:ge,installedSkills:An,accountRateLimitSnapshots:Hr,messages:_t,hasMoreOlderMessages:Kt,isLoadingThreads:Ht.isLoadingThreads,isThreadListFullyLoaded:Ht.isThreadListFullyLoaded,isLoadingMessages:Tt,isLoadingOlderMessages:Pn,isSendingMessage:vo,isInterruptingTurn:Eo,isUpdatingSpeedMode:Y,isRollingBack:Mo,compactingThreadIds:en,fuzzyFileSearchResults:ir,registerFuzzyFileSearchSession:Sc,error:o,refreshAll:ea,refreshSkills:dn,refreshHooks:fr,hooksList:dr,isHooksLoading:Kr,onRealtimeEvent:ao,selectThread:En,loadMessages:At,loadOlderMessages:Br,ensureThreadMessagesLoaded:Ye,setThreadTerminalOpen:qn,toggleSelectedThreadTerminal:gi,archiveThreadById:Si,compactThreadById:il,renameThreadById:ns,forkThreadById:Ca,forkThreadFromTurn:tu,rollbackSelectedThread:rs,sendMessageToSelectedThread:Qt,sendMessageToNewThread:os,interruptSelectedThreadTurn:ka,interruptedUnsubmittedMessage:_n,clearInterruptedUnsubmittedMessage:Bs,selectedThreadQueuedMessages:St,removeQueuedMessage:jo,reorderQueuedMessage:oo,steerQueuedMessage:Oo,autoCompactThreshold:yo,setAutoCompactThreshold:ln,setSelectedCollaborationMode:M,readModelIdForThread:Le,setSelectedModelIdForThread:lt,setSelectedModelId:Ke,setSelectedReasoningEffort:Ze,updateSelectedSpeedMode:oe,respondToPendingServerRequest:ll,pendingReplyErrorForRequest:Rs,renameProject:Ve,removeProject:me,reorderProject:Ne,pinProjectToTop:ke,startPolling:Us,stopPolling:Cn,primeSelectedThread:ko}}const Ey="codex-web-local.sidebar-collapsed.v1",My="codex-web-local.accounts-section-collapsed.v1";function LN(){return typeof window>"u"?!1:window.localStorage.getItem(Ey)==="1"}function NN(e){typeof window>"u"||window.localStorage.setItem(Ey,e?"1":"0")}function $N(){if(typeof window>"u")return!0;const e=window.localStorage.getItem(My);return e===null?!0:e==="1"}function ON(){const e=S(LN()),t=S($N()),n=S(""),o=S(!1),r=S(null),a=S(null);let s=0,i=0,l=!1;function d(L){var j;if(e.value!==L){if(L){const U=(j=f())==null?void 0:j.scrollTop;typeof U=="number"&&(U>0||s===0)&&(s=U)}e.value=L,NN(L),L||y()}}function c(){o.value=!o.value,o.value?Nt(()=>{var L;return(L=a.value)==null?void 0:L.focus()}):n.value=""}function v(){var L;n.value="",(L=a.value)==null||L.focus()}function f(){return r.value?r.value:typeof document>"u"?null:document.querySelector(".mobile-drawer .sidebar-scrollable, .sidebar-scrollable")}function b(L){if(e.value||l)return;const U=(L==null?void 0:L.currentTarget)&&typeof HTMLElement<"u"&&L.currentTarget instanceof HTMLElement?L.currentTarget:f();s=(U==null?void 0:U.scrollTop)??s}function y(){const L=++i,j=s,U=90;l=!0;const H=()=>{L===i&&(s=j,l=!1)},be=le=>{if(L!==i)return;if(e.value){H();return}const W=f();if(W&&(W.scrollTop=j,Math.abs(W.scrollTop-j)<=1||le>=U)){H();return}if(le>=U||typeof window>"u"){H();return}window.requestAnimationFrame(()=>be(le+1))};Nt(()=>be(0))}function P(L){L.key==="Escape"&&(o.value=!1,n.value="")}function B(){t.value=!t.value,!(typeof window>"u")&&window.localStorage.setItem(My,t.value?"1":"0")}return{isSidebarCollapsed:e,isAccountsSectionCollapsed:t,sidebarSearchQuery:n,isSidebarSearchVisible:o,sidebarScrollableRef:r,sidebarSearchInputRef:a,setSidebarCollapsed:d,toggleSidebarSearch:c,clearSidebarSearch:v,onSidebarScroll:b,onSidebarSearchKeydown:P,restoreSidebarScrollPosition:y,toggleAccountsSectionCollapsed:B}}const jy="codex-web-local.right-panel-width.v1",DN=260,FN=640,Qm=320;function Ly(e){return Math.min(FN,Math.max(DN,e))}function BN(){if(typeof window>"u")return Qm;const e=window.localStorage.getItem(jy),t=Number(e);return Number.isFinite(t)?Ly(t):Qm}function UN(e){typeof window>"u"||window.localStorage.setItem(jy,String(e))}function zN(e){const{isMobile:t,canShowRightPanel:n,isVirtualKeyboardOpen:o}=e,r=S("git"),a=S([]),s=S(""),i=K(()=>a.value.find(ge=>ge.key===s.value)??null),l=S(!1),d=S(!1),c=S(!1),v=S(BN()),f=S(!1),b=S(!1);let y=null;function P(){y&&(clearTimeout(y),y=null)}function B(){f.value=!1,b.value=!1,P()}function L(ge){ge.preventDefault();const Y=ge.clientX,pe=v.value,ne=$e=>{const te=Y-$e.clientX;v.value=Ly(pe+te)},xe=()=>{UN(v.value),window.removeEventListener("mousemove",ne),window.removeEventListener("mouseup",xe)};window.addEventListener("mousemove",ne),window.addEventListener("mouseup",xe)}function j(){n()&&(t()&&!d.value&&(d.value=!0),t()||(c.value=!1),r.value=r.value==="terminal"?"git":"terminal",r.value!=="terminal"&&B())}function U(ge){r.value=ge,l.value=!1,t()||(c.value=!1),t()&&(d.value=!0),ge!=="terminal"&&B()}function H(ge){const Y=a.value.find(pe=>pe.path===ge.path);if(Y)s.value=Y.key;else{const pe={key:`preview-${Date.now()}`,path:ge.path,label:ge.label};a.value=[...a.value,pe],s.value=pe.key}U("preview")}function be(ge){a.value.some(Y=>Y.key===ge)&&(s.value=ge,U("preview"))}function le(ge){const Y=a.value.findIndex(xe=>xe.key===ge);if(Y<0)return;const pe=a.value.filter(xe=>xe.key!==ge);if(a.value=pe,s.value!==ge)return;if(pe.length===0){s.value="",r.value="files";return}const ne=pe[Math.min(Y,pe.length-1)];s.value=ne.key}function W(){if(t()){d.value=!1;return}c.value=!0,l.value=!1,B()}function he(){if(t()){d.value=!d.value;return}c.value=!c.value,c.value&&(l.value=!1,B())}function Se(){r.value="git",t()&&(d.value=!1),B()}function Pe(ge){if(f.value=ge,!ge){b.value=!1,P();return}b.value=!0,P(),y=setTimeout(()=>{y=null,o()||(b.value=!1)},1500)}return{activeRightPanelTab:r,filePreviewTabs:a,activeFilePreviewTabKey:s,activeFilePreviewTab:i,isRightPanelMenuOpen:l,isMobileRightPanelOpen:d,isRightPanelCollapsed:c,rightPanelWidth:v,isTerminalInputFocused:f,isTerminalKeyboardFocusFallbackActive:b,onRightResizeHandleMouseDown:L,toggleRightPanelTerminal:j,selectRightPanelTab:U,onOpenFilePreview:H,selectFilePreviewTab:be,closeFilePreviewTab:le,onCloseRightPanel:W,onToggleRightPanelToggle:he,onHideRightPanelTerminal:Se,onTerminalFocusChange:Pe,resetTerminalKeyboardFocusState:B,clearTerminalKeyboardFocusFallbackTimer:P}}function HN(e){if(typeof document>"u")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.left="-9999px",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.focus(),t.select(),t.setSelectionRange(0,e.length);try{return document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(t)}}async function qN(e){var t;if(typeof navigator<"u"&&((t=navigator.clipboard)!=null&&t.writeText))try{await navigator.clipboard.writeText(e);return}catch{}if(!HN(e))throw new Error("Copy failed")}const WN=400;function GN(e,t,n,o){return e==="visible"&&!n&&t!==null&&o-t>=WN}const VN={class:"sidebar-root"},KN=["aria-pressed","aria-label","title"],YN={key:1,class:"sidebar-search-bar"},JN=["placeholder"],QN=["aria-label"],XN={class:"sidebar-skills-link-icon","aria-hidden":"true"},ZN={class:"sidebar-skills-link-copy"},e$={class:"sidebar-skills-link-title"},t$={class:"sidebar-skills-link-subtitle"},n$={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},o$={class:"sidebar-skills-link-copy"},r$={class:"sidebar-skills-link-title"},a$={class:"sidebar-skills-link-subtitle"},s$={class:"sidebar-settings-actions"},i$=["title","aria-label"],l$=["title","aria-label"],u$={class:"content-root-wrap"},c$={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},d$={key:1,class:"skills-route-header-icon","aria-hidden":"true"},f$={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},p$=["aria-label","title"],h$={class:"content-body"},m$={key:2,class:"content-grid content-grid-home"},v$={class:"new-thread-empty"},g$={class:"new-thread-hero"},y$=["title"],w$={class:"new-thread-folder-actions"},b$=["disabled"],T$={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},S$={class:"new-thread-launch-card-copy"},C$={class:"new-thread-launch-card-topline"},x$={class:"new-thread-launch-card-badge","aria-hidden":"true"},k$={class:"new-thread-launch-card-eyebrow"},I$={class:"new-thread-launch-card-title"},A$={class:"new-thread-launch-card-text"},_$={class:"new-thread-launch-card-actions"},P$=["aria-label","onKeydown"],R$={class:"new-thread-open-folder-header"},E$={class:"new-thread-open-folder-title"},M$={class:"new-thread-open-folder-label"},j$={class:"new-thread-open-folder-current"},L$=["placeholder","title","disabled","onKeydown"],N$=["disabled"],$$={class:"new-thread-open-folder-actions"},O$={class:"new-thread-open-folder-toggle"},D$=["aria-pressed","disabled"],F$={key:0,class:"new-thread-open-folder-create"},B$={class:"new-thread-open-folder-create-composer"},U$=["placeholder","onKeydown"],z$=["disabled"],H$={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},q$=["href"],W$=["placeholder","onKeydown"],G$={key:1,class:"new-thread-open-folder-error-actions"},V$={class:"new-thread-open-folder-error visible-error-with-feedback"},K$=["href"],Y$=["disabled"],J$={key:2,class:"new-thread-open-folder-status"},Q$={key:3,class:"new-thread-open-folder-status"},X$={key:4,class:"new-thread-open-folder-list"},Z$=["title","disabled","onClick"],eO={class:"new-thread-open-folder-item-name"},tO=["disabled","onClick"],nO=["aria-label","onKeydown"],oO={class:"new-thread-open-folder-header"},rO={class:"new-thread-open-folder-title"},aO=["disabled"],sO=["aria-label"],iO=["aria-selected","disabled"],lO=["aria-selected","disabled"],uO={class:"new-thread-project-field"},cO={class:"new-thread-open-folder-label"},dO=["disabled","placeholder"],fO={key:0,class:"new-thread-project-field"},pO={class:"new-thread-open-folder-label"},hO=["disabled","placeholder","onKeydown"],mO={key:1,class:"new-thread-project-field"},vO={class:"new-thread-open-folder-label"},gO=["disabled","onKeydown"],yO={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},wO=["href"],bO={class:"new-thread-project-modal-actions"},TO=["disabled"],SO=["disabled"],CO={key:3,class:"new-thread-branch-select"},xO={class:"new-thread-branch-select-label"},kO={class:"new-thread-branch-select-help"},IO={key:4,class:"new-thread-runtime-help"},AO={class:"worktree-init-status-title"},_O={class:"worktree-init-status-message"},PO={class:"composer-with-queue"},RO={key:0,class:"composer-runtime-error",role:"alert"},EO=["href"],MO={key:3,class:"content-grid"},jO={class:"content-thread"},LO={key:0,class:"external-session-banner",role:"alert"},NO={key:1,class:"composer-runtime-error",role:"alert"},$O=["href"],OO={key:2,class:"interrupt-recovered-banner",role:"status"},DO=["aria-label"],FO={class:"content-right-panel-header"},BO={class:"content-right-panel-tabs",role:"tablist"},UO=["aria-selected"],zO=["aria-selected"],HO=["aria-selected","title","onClick"],qO={class:"content-right-panel-tab-label"},WO=["aria-label","title","onClick"],GO={class:"content-right-panel-actions"},VO={class:"content-right-panel-add-wrap"},KO=["aria-label","title"],YO={key:0,class:"content-right-panel-menu"},JO=["aria-label","title"],QO={class:"content-right-panel-body"},XO={key:0,class:"project-zip-modal-backdrop",role:"presentation"},ZO=["aria-label"],eD={class:"project-zip-modal-header"},tD={class:"project-zip-modal-title"},nD=["aria-label","disabled"],oD={class:"project-zip-modal-copy"},rD={class:"project-zip-progress-label",role:"status","aria-live":"polite"},aD={class:"project-zip-progress-track"},sD={key:0,class:"project-zip-modal-error",role:"alert"},iD={class:"project-zip-modal-actions"},lD=["disabled"],uD=["disabled"],cD=["disabled"],dD=["aria-label"],fD={class:"codex-login-modal-header"},pD={class:"codex-login-modal-title"},hD=["aria-label","disabled"],mD={class:"codex-login-modal-copy"},vD=["href"],gD=["placeholder","disabled"],yD={key:1,class:"codex-login-modal-error visible-error-with-feedback"},wD=["href"],bD={class:"codex-login-modal-actions"},TD=["disabled"],SD=["disabled"],CD=400,Xm="codex-web-local.send-with-enter.v1",Zm="codex-web-local.in-progress-send-mode.v1",ev="codex-web-local.dark-mode.v1",tv="codex-web-local.dictation-click-to-toggle.v1",nv="codex-web-local.dictation-auto-send.v1",ov="codex-web-local.dictation-language.v1",rv="codex-web-local.chat-width.v1",xD=hn({__name:"App",setup(e){var Op,Dp;const t=Ar(()=>_r(()=>import("./ThreadConversation-B4NZvuHw.js"),__vite__mapDeps([0,1,2]))),n=Ar(()=>_r(()=>import("./ThreadTerminalPanel-BLHMQWJI.js"),__vite__mapDeps([3,4]))),o=Ar(()=>_r(()=>import("./ReviewPane-qS7hOyaM.js"),__vite__mapDeps([5,6]))),r=Ar(()=>_r(()=>import("./DirectoryHub-sS2h3U_D.js"),__vite__mapDeps([7,1,8]))),a=Ar(()=>_r(()=>import("./AutomationsPanel-DlBkLmKR.js"),__vite__mapDeps([9,10]))),s=Ar(()=>_r(()=>import("./SettingsDialog-C4aE-PFC.js"),__vite__mapDeps([11,12]))),i=Ar(()=>_r(()=>import("./RightGitPanel-K_jp1qHA.js"),__vite__mapDeps([13,14]))),l=Ar(()=>_r(()=>import("./RightFilesPanel-B5AIrAU3.js"),__vite__mapDeps([15,16]))),d=Ar(()=>_r(()=>import("./RightFilePreview-D1LmPrpY.js"),__vite__mapDeps([17,18]))),c=Ar(()=>_r(()=>import("./ThreadPendingRequestPanel-DNTrk7uR.js"),__vite__mapDeps([19,20]))),v=Ar(()=>_r(()=>import("./QueuedMessages-D_o6pC9F.js"),__vite__mapDeps([21,22]))),{t:f,uiLanguage:b,uiLanguageOptions:y,setUiLanguage:P}=da(),B="codex-mobile",L="0.1.113",j={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},U={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:H,projectDisplayNameById:be,selectedThread:le,selectedThreadTokenUsage:W,selectedThreadServerRequests:he,selectedLiveOverlay:Se,lastPlanByThreadId:Pe,resolveThreadTurnIndex:ge,selectedActiveTurnId:Y,codexQuota:pe,selectedThreadId:ne,availableCollaborationModes:xe,availableModelIds:$e,availableModelReasoningEfforts:te,selectedCollaborationMode:de,selectedReasoningEffort:Le,selectedSpeedMode:Ae,codexCliMissingError:Fe,installedSkills:Ke,accountRateLimitSnapshots:lt,messages:Ze,hasMoreOlderMessages:ut,isLoadingThreads:fe,isThreadListFullyLoaded:N,isLoadingMessages:oe,isLoadingOlderMessages:ue,isSendingMessage:Ee,isInterruptingTurn:Be,isSelectedThreadInterruptPending:A,isUpdatingSpeedMode:M,error:z,refreshAll:Z,refreshSkills:ce,refreshHooks:re,hooksList:je,isHooksLoading:Re,onRealtimeEvent:ke,selectThread:me,ensureThreadMessagesLoaded:Ve,loadMessages:Ne,loadOlderMessages:He,archiveThreadById:Ue,compactThreadById:Je,compactingThreadIds:et,fuzzyFileSearchResults:st,registerFuzzyFileSearchSession:mt,forkThreadById:q,renameThreadById:ae,forkThreadFromTurn:_e,sendMessageToSelectedThread:Ye,sendMessageToNewThread:bt,interruptSelectedThreadTurn:Tt,interruptedUnsubmittedMessage:At,clearInterruptedUnsubmittedMessage:Br,selectedThreadQueuedMessages:zt,removeQueuedMessage:Ha,reorderQueuedMessage:fa,steerQueuedMessage:pa,autoCompactThreshold:ar,setAutoCompactThreshold:Ur,setSelectedCollaborationMode:zr,readModelIdForThread:Ps,setSelectedModelIdForThread:qa,setSelectedReasoningEffort:Wa,updateSelectedSpeedMode:Uo,respondToPendingServerRequest:sr,pendingReplyErrorForRequest:Zn,renameProject:Rs,removeProject:ha,reorderProject:Es,pinProjectToTop:zo,startPolling:Po,stopPolling:Dn,primeSelectedThread:Ga,rollbackSelectedThread:Ms}=jN(),vt=ix(),Ct=sx(),{isMobile:kt}=Df();function mn(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const Fn=S(null),ho=S(null),Hr=S(null);let qr=null;const{buildFeedbackMailto:mo,feedbackMailtoBase:Ho,recordVisibleFailure:Ro}=ny(),Bn=Ho();function xt(u,p){p&&Ro(p);const T=u.currentTarget;T instanceof HTMLAnchorElement&&(T.href=mo())}const eo=S(null),vo=S(null),Eo=S(null),Mo=S(0);let en=null;function Un(){const u=Eo.value;if(!u)return;const p=window.getComputedStyle(u),T=Number.parseFloat(p.paddingLeft)+Number.parseFloat(p.paddingRight),O=Math.max(0,u.clientWidth-(Number.isFinite(T)?T:0)),V=window.getComputedStyle(u).getPropertyValue("--chat-column-max").trim(),Te=Number.parseFloat(V)*(V.endsWith("rem")?16:1),De=Number.isFinite(Te)&&Te>0?Math.min(O,Te):O;Mo.value=De}const ir=S(null),lr=S(null),bn=S(!0),ma=zN({isMobile:()=>kt.value,canShowRightPanel:()=>su.value,isVirtualKeyboardOpen:()=>pl.value}),{activeRightPanelTab:tn,filePreviewTabs:Wr,activeFilePreviewTabKey:go,activeFilePreviewTab:Lt,isRightPanelMenuOpen:zn,isMobileRightPanelOpen:sn,isRightPanelCollapsed:to,rightPanelWidth:nn,isTerminalInputFocused:Va,isTerminalKeyboardFocusFallbackActive:on,onRightResizeHandleMouseDown:qo,toggleRightPanelTerminal:ur,selectRightPanelTab:Ht,onOpenFilePreview:js,selectFilePreviewTab:Gr,closeFilePreviewTab:Wo,onCloseRightPanel:yo,onToggleRightPanelToggle:qt,onHideRightPanelTerminal:Ka,onTerminalFocusChange:no,resetTerminalKeyboardFocusState:Ya,clearTerminalKeyboardFocusFallbackTimer:wo}=ma,Vr=S(null),bo=S(!1),jo=S("");let oo=!1;const cr=S(!1),St=S(""),ln=S("local"),In=S({}),dr=new Map,An=S(""),Kr=S([]),fr=S(!1),dn=S({order:[],labels:{},projectOrder:[]}),C=S({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),E=S({phase:"idle",title:"",message:""}),Q=ON(),{isSidebarCollapsed:ye,isAccountsSectionCollapsed:ct,sidebarSearchQuery:_t,isSidebarSearchVisible:_n,sidebarScrollableRef:Kt,sidebarSearchInputRef:Pn,setSidebarCollapsed:Wt,toggleSidebarSearch:vn,clearSidebarSearch:mi,onSidebarScroll:pr,onSidebarSearchKeydown:hr,toggleAccountsSectionCollapsed:Ls}=Q,mr=S(null),Yr=S(null),Tn=S(null),vr=S(null);let Lo=null,va=0,$t=0,ga=0,rn=0;const gr=S("New Project (1)"),ya=S(""),Sn=S(!1),Ns=S("general");let Ja=0;function rl(){if(Sn.value){Ja=Date.now(),Sn.value=!1;return}Date.now()-Ja<CD||(Sn.value=!0)}const Hn=S(!1),Yt=S(!1),Gt=S(new Set);async function vi(){try{Gt.value=new Set(await Bk())}catch{}finally{Yt.value=!0}}const al=K(()=>!Yt.value||Gt.value.has("hooks/list")),$s=K(()=>!Yt.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(u=>Gt.value.has(u)));tt(Sn,u=>{u&&(re(),wi(),$s.value&&Ds())});const qn=S({enabled:!1,clients:[]}),gi=S(null),ro=S(!1),un=S(!1),Wn=S(""),yr=S(""),wr=S("");let Go=null,wa=!1,Qa=null;const Jr=S("never"),yi=S(!1),ba=S(!1),Rn=S(""),To=S("");let Xa=!1;const Ta=S(!1);async function wi(u={}){if(!(u.force!==!0&&Xa)){yi.value=!0,Rn.value="";try{Jr.value=await TI(),Xa=!0}catch(p){Rn.value=p instanceof Error?p.message:"Failed to load approval policy"}finally{yi.value=!1}}}function Os(u){Jr.value=u}async function Gn(){ba.value=!0,Rn.value="",To.value="";try{await SI(Jr.value),Ta.value=!0,To.value=f("Approval policy saved"),Vo&&clearTimeout(Vo),Vo=setTimeout(()=>{To.value=""},2200)}catch(u){Rn.value=u instanceof Error?u.message:"Failed to save approval policy"}finally{ba.value=!1}}let Vo=null;async function Ds(u={}){if(!(u.force!==!0&&wa)){ro.value=!0,yr.value="";try{const p=await bI();qn.value=p,wa=!0}catch(p){yr.value=p instanceof Error?p.message:"Failed to load remote control status"}finally{ro.value=!1}}}async function Fs(){const u=!qn.value.enabled;un.value=!0,Wn.value=u?"enable":"disable";try{await CI(u),qn.value={...qn.value,enabled:u},Sa(u?"Remote control enabled":"Remote control disabled")}catch(p){yr.value=p instanceof Error?p.message:"Failed to update remote control"}finally{un.value=!1,Wn.value=""}}async function bi(){un.value=!0,Wn.value="pairing";try{gi.value=await xI()}catch(u){yr.value=u instanceof Error?u.message:"Failed to start pairing"}finally{un.value=!1,Wn.value=""}}async function sl(){un.value=!0,Wn.value="clients";try{qn.value={...qn.value,clients:await kI()}}catch(u){yr.value=u instanceof Error?u.message:"Failed to load remote clients"}finally{un.value=!1,Wn.value=""}}async function Ti(u){un.value=!0,Wn.value=`revoke:${u}`;try{await II(u),qn.value={...qn.value,clients:qn.value.clients.filter(p=>p.clientId!==u)},Sa("Remote client removed")}catch(p){yr.value=p instanceof Error?p.message:"Failed to remove remote client"}finally{un.value=!1,Wn.value=""}}function Sa(u){wr.value=u,Go&&clearTimeout(Go),Go=setTimeout(()=>{wr.value=""},3e3)}const Qr=S(""),Xr=S(""),Za=S([]),So=S(null),No=S(null),$o=S(null),Zr=S(null),x=S(!1),R=S(!1),k=S({addedLineCount:0,removedLineCount:0}),G=S([]),We=S(""),Ot=S({}),ao=S(""),Co=S(""),cn=S({}),br=S(""),es=S(""),ts=S(!1),Tr=S(!1);function Tc(u,p){return`${u}\0${p?"with-reset-history":"without-reset-history"}`}const eu=S(null),Vn=S([]),Sr=S(!1),Cr=S(!1),ea=S(!1),En=S(!1),Si=S(!1),ns=S(""),Ca=S(""),tu=S(null),xa=S(""),Ko=S(""),xo=S(""),Qt=S(""),os=S(Qc(Xm,!0)),ta=S(Wb()),ka=S(qb()),Bs=S(Gb()),rs=S(Qc(tv,!1)),Yo=S(Qc(nv,!0)),xr=S(lT()),Sc=K(()=>uT()),il=K(()=>{const{loaded:u,total:p}=C.value,T=hp(u);return p&&p>0?`${T} / ${hp(p)}`:u>0?T:f("Preparing...")}),Jo=K(()=>{const{loaded:u,total:p,phase:T}=C.value;return T==="ready"?"100%":!p||p<=0?u>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(u/p*100)))}%`}),Ci=S(!1),na=S(!1),Us=S(!1),zs=S(""),nu=S(!1),ll=S(null),Cn=S(!1),Oo=S(""),ko=S("codex"),m=K(()=>[{value:"codex",label:f("Codex")},{value:"openrouter",label:f("OpenRouter")},{value:"opencode-zen",label:f("OpenCode Zen")},{value:"custom",label:f("Custom endpoint")}]),g=S(""),I=S(""),$=S("responses"),J=S("responses"),ie=S(""),X=S(!1),se=S(""),we=S(""),Ie=S(""),ze=S(!1),pt=S(!1),ht=S(""),it=S(""),Pt=S(!1),Ia=S(!1),Kn=S("create"),Hs=S(""),oa=S(""),Aa=S(""),qs=S(!1),Qo=S(""),Mn=S(!1),xi=S(null),ul=S(null),kr=S(!1),cl=S(null),ou=S(null),ra=S(""),Do=S(""),as=S(""),ki=S([]),fn=S(""),Ce=S(!1),wt=S(!1),Fo=S(!1),so=S(""),ru=[z,Fe,We,Co,Qt,Oo,Ie,it,Qo,fn],Ny=K(()=>ru.some(u=>u.value.trim().length>0)),aa=S({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),Cc=S(null),xc=S(!1),kc=S(!1),Ws=S(typeof window<"u"?((Op=window.visualViewport)==null?void 0:Op.height)??window.innerHeight:0),Ic=S(typeof window<"u"?((Dp=window.visualViewport)==null?void 0:Dp.offsetTop)??0:0),dl=S(typeof window<"u"?window.innerHeight:0);let ss=null,Ac=!1,_c=!1,Pc=!1,fl=0;const Gs=K(()=>{const u=vt.params.threadId;return typeof u=="string"?u:""}),gn=K(()=>vt.name==="home"),is=K(()=>vt.name==="skills"),Vs=K(()=>vt.name==="automations"),Yf=K(()=>{const u=vt.query.automationId;return typeof u=="string"?u:""}),$y=K(()=>{var u;return Vs.value?f("Automations"):is.value?f("Skills"):gn.value?f("Start new thread"):((u=le.value)==null?void 0:u.title)??f("Choose a thread")}),Oy=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",Dy=K(()=>{var p,T;return(((T=(p=le.value)==null?void 0:p.title)==null?void 0:T.trim())??"")||Oy}),Ii=K(()=>Ze.value.filter(u=>{const p=dT(u.messageType,u.role);return p==="worked"?!0:!(p==="turnActivity.live"||p==="turnError.live"||p==="agentReasoning.live")})),Rc=S([]);tt(()=>[Ii.value,oe.value],([u,p])=>{p||(Rc.value=u)},{immediate:!0});const Fy=K(()=>oe.value&&Rc.value.length>0?Rc.value:Ii.value),Jf=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Ec=S(null);function By(u,p,T){const O=typeof p.turnIndex=="number"?p.turnIndex:-1;return O<0?!1:u.some((V,Te)=>Te>T&&typeof V.turnIndex=="number"&&V.turnIndex>=O&&Jf.has(V.messageType??""))}function Uy(u,p){return u.some(T=>typeof T.turnIndex=="number"&&T.turnIndex>=p&&Jf.has(T.messageType??""))}const Mc=K(()=>{const u=Ii.value,p=oe.value;for(let Te=u.length-1;Te>=0;Te-=1){const De=u[Te];if(De.messageType!=="plan"&&De.messageType!=="plan.live")continue;const Ft=Om(De);if(!Ft||Ec.value!==null&&De.id===Ec.value)return null;const gT=p?!0:By(u,De,Te);return{id:De.id,streaming:De.messageType==="plan.live",explanation:Ft.explanation,steps:Ft.steps,implemented:gT}}const T=ne.value?Pe.value[ne.value]??null:null;if(!T)return null;const O=Om(T);if(!O)return null;const V=typeof T.turnIndex=="number"?T.turnIndex:T.turnId?ge(ne.value,T.turnId)??-1:-1;return{id:T.id,streaming:T.messageType==="plan.live",explanation:O.explanation,steps:O.steps,implemented:p?!0:V>=0?Uy(u,V):!1}}),zy=K(()=>Se.value),Ks=K(()=>gn.value?"__new-thread__":ne.value),Qf=K(()=>Ps(Ks.value)),au=K(()=>{const u=he.value;return u.length>0?u[u.length-1]:null}),Hy=K(()=>au.value?Zn(au.value.id):""),yn=K(()=>{var u,p;return gn.value?St.value.trim():((p=(u=le.value)==null?void 0:u.cwd)==null?void 0:p.trim())??""}),su=K(()=>bn.value&&(gn.value&&yn.value.length>0||vt.name==="thread"&&ne.value.length>0)),qy=K(()=>su.value&&tn.value==="terminal"),pl=K(()=>!kt.value||Ws.value<=0||dl.value<=0?!1:dl.value-Ws.value>120),Wy=K(()=>pl.value||qy.value&&on.value),Xf=K(()=>{var u,p;return((p=(u=le.value)==null?void 0:u.cwd)==null?void 0:p.trim())??St.value.trim()}),jc=K(()=>{var u;return!gn.value&&((u=le.value)==null?void 0:u.inProgress)===!0}),Gy=K(()=>{const u=ne.value;return!!u&&et.value.has(u)}),Zf=K(()=>{var u,p;return!gn.value&&((p=(u=le.value)==null?void 0:u.externalSession)==null?void 0:p.active)===!0}),Lc=K(()=>Ee.value||Be.value||jc.value||he.value.length>0);function ep(){Ci.value&&(Ci.value=!1,dI(!0))}function Vy(){ep(),Ct.push({name:"skills",query:{tab:"plugins"}})}function Ky(){const u=ne.value;u&&Je(u)}function Nc(u,p){const T=Xe(u).trim(),O=Bo(T);return!T||!O?!1:p.some(V=>{const Te=Xe(V).trim();return Te!==T&&Bo(Te)===O})}function $c(u,p=""){const T=Xe(u).trim(),O=p.trim();if(O)return O;const V=Bo(T),Te=[...dn.value.order,...H.value.map(De=>{var Ft,Io;return((Io=(Ft=De.threads[0])==null?void 0:Ft.cwd)==null?void 0:Io.trim())??""}).filter(Boolean)];return Nc(T,Te)?T:V}function Yy(){const u=new Set(dn.value.order),p=dn.value.projectOrder.filter(T=>u.has(T));for(const T of dn.value.order)p.includes(T)||p.push(T);return p}function hl(u){const p=Xe(u).trim(),T=[...dn.value.order,...H.value.map(O=>{var V,Te;return((Te=(V=O.threads[0])==null?void 0:V.cwd)==null?void 0:Te.trim())??""}).filter(Boolean)];return Nc(p,T)?p:Bo(p)}function tp(u){const p=Xe(u).trim();if(!p)return"";const T=[...dn.value.order,...H.value.map(O=>{var V,Te;return((Te=(V=O.threads[0])==null?void 0:V.cwd)==null?void 0:Te.trim())??""}).filter(Boolean)];for(const O of dn.value.order){const V=Xe(O).trim();if(!V)continue;const Te=Bo(V),De=Nc(V,T)?V:Te;if(V===p||De===p||Te===p)return V}return""}const Oc=K(()=>{var O,V;const u=[],p=new Set;for(const Te of Yy()){const De=Te.trim();!De||p.has(De)||(p.add(De),u.push({value:De,label:$c(De,dn.value.labels[De])}))}for(const Te of H.value){const De=((V=(O=Te.threads[0])==null?void 0:O.cwd)==null?void 0:V.trim())??"";!De||p.has(De)||Ku(De)||(p.add(De),u.push({value:De,label:$c(De,be.value[Te.projectName])}))}const T=St.value.trim();return T&&!p.has(T)&&u.unshift({value:T,label:$c(T)}),u}),Ys=K(()=>{const u=St.value.trim();return u?In.value[u]===!0:!1}),Jy=K(()=>{var p,T;const u={};for(const O of H.value){const V=_i(O.projectName,((T=(p=O.threads[0])==null?void 0:p.cwd)==null?void 0:T.trim())??"");u[O.projectName]=V?In.value[V]===!0:!1}return u}),Dc=K(()=>{const u=An.value.trim(),p=[...Kr.value];return u&&!p.some(T=>T.value===u)&&p.unshift({value:u,label:u}),p}),np=K(()=>{const u=An.value.trim();if(!u)return"";const p=Dc.value.find(T=>T.value===u);return(p==null?void 0:p.label)??u}),op=K(()=>Do.value.trim()),rp=K(()=>{const u=ht.value.trim();return!u||u==="."||u===".."?!1:!/[\\/]/u.test(u)}),Qy=K(()=>rp.value&&op.value.trim().length>0&&!fn.value),ap=K(()=>{const u=oa.value.trim();return!u||u==="."||u===".."?!1:!/[\\/]/u.test(u)}),sp=K(()=>Hs.value.trim()?Kn.value==="create"?ap.value:Aa.value.trim().length>0:!1),ml=K(()=>{const u=Xe(ra.value).trim();return u||Do.value.trim()}),Xy=K(()=>Pt.value?"Creating…":"Create"),Zy=K(()=>Mn.value?Kn.value==="clone"?f("Cloning…"):f("Creating…"):Kn.value==="clone"?f("Clone repository"):f("Create project")),ew=K(()=>{const u=Do.value.trim(),p=as.value.trim();return!!(u&&p&&u!==p)}),ip=K(()=>{const u=[];ew.value&&u.push({key:`parent:${as.value}`,name:"..",path:as.value,kind:"parent"});for(const p of ki.value)u.push({key:`directory:${p.path}`,name:p.name,path:p.path,kind:"directory"});return u}),Fc=K(()=>{const u=so.value.trim().toLowerCase();return u?ip.value.filter(p=>p.kind==="parent"||p.name.toLowerCase().includes(u)):ip.value}),Ai=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,tw=K(()=>f(j[Bs.value].label)),nw=K(()=>{const u=j[Bs.value],p=Math.max(0,dl.value-Ws.value-Ic.value);return{"--chat-column-max":u.columnMax,"--chat-card-max":u.cardMax,"--visual-viewport-height":Ws.value>0?`${Ws.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Ic.value)}px`,"--virtual-keyboard-inset":`${p}px`}}),ow=K(()=>{if(!aa.value.configured)return f("Not configured");const u=aa.value.active?f("Online"):f("Configured (offline)"),p=aa.value.allowAllUsers?f("allow all users"):`${aa.value.allowedUsers} ${f("allowed user(s)")}`,T=`${aa.value.mappedChats} ${f("chat(s)")}, ${aa.value.mappedThreads} ${f("thread(s)")}, ${p}`,O=aa.value.lastError?`, ${f("error")}: ${aa.value.lastError}`:"";return`${u}, ${T}${O}`});pi(()=>{var u,p;document.addEventListener("pointerdown",wp),window.addEventListener("keydown",yp),document.addEventListener("visibilitychange",bp),window.addEventListener("pageshow",Tp),window.addEventListener("focus",Sp),window.addEventListener("resize",Js),(u=window.visualViewport)==null||u.addEventListener("resize",Js),(p=window.visualViewport)==null||p.addEventListener("scroll",Js),Js(),pu(),Ai==null||Ai.addEventListener("change",pu),qr=ke(T=>{Hr.value&&Hr.value.refreshFromNotification(T)}),Qa=ke(T=>{T==="remoteControl/status/changed"&&Ds({force:!0})}),fT(),$b(),vi(),sw(),us(),Ir(),up(),Bc(),Xc(),ob(),wi()}),tt(ru,(u,p)=>{u.forEach((T,O)=>{if(T===p[O])return;const V=T.trim();V&&Ro(V)})}),tt(Eo,u=>{en&&(en.disconnect(),en=null),typeof ResizeObserver<"u"&&(en=new ResizeObserver(Un),u&&en.observe(u)),Un()},{immediate:!0}),Jl(()=>{var u,p;document.removeEventListener("pointerdown",wp),window.removeEventListener("keydown",yp),document.removeEventListener("visibilitychange",bp),window.removeEventListener("pageshow",Tp),window.removeEventListener("focus",Sp),window.removeEventListener("resize",Js),(u=window.visualViewport)==null||u.removeEventListener("resize",Js),(p=window.visualViewport)==null||p.removeEventListener("scroll",Js),Ai==null||Ai.removeEventListener("change",pu),en&&(en.disconnect(),en=null),ss!==null&&(window.clearInterval(ss),ss=null),Lo&&(clearTimeout(Lo),Lo=null),wo(),Dn(),qr&&(qr(),qr=null),Qa&&(Qa(),Qa=null),Go&&(clearTimeout(Go),Go=null)});function Js(){var u,p;typeof window>"u"||(dl.value=Math.max(dl.value,window.innerHeight),Ws.value=((u=window.visualViewport)==null?void 0:u.height)??window.innerHeight,Ic.value=((p=window.visualViewport)==null?void 0:p.offsetTop)??0)}tt(_t,u=>{const p=u.trim();if(Lo&&(clearTimeout(Lo),Lo=null),!p){vr.value=null;return}Lo=setTimeout(()=>{Rx(p,1e3).then(T=>{_t.value.trim()===p&&(vr.value=T.threadIds)}).catch(()=>{_t.value.trim()===p&&(vr.value=null)})},220)}),tt(pl,u=>{u||(on.value=!1)}),tt(Vn,()=>{if(typeof window>"u")return;if(!Vn.value.some(p=>p.quotaStatus==="loading")){ss!==null&&(window.clearInterval(ss),ss=null);return}ss===null&&(ss=window.setInterval(()=>{Ac||(Ac=!0,vl({silent:!0}).finally(()=>{Ac=!1}))},1500))},{deep:!0}),tt(lt,()=>{lp().then(u=>{u&&Z({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function lp(){if(!_c||Pc||ko.value!=="codex"||Vn.value.length>0||lt.value.length===0)return!1;Pc=!0;const u=JSON.stringify(Vn.value.map(T=>T.accountId).sort());try{const T=await hm();Vn.value=T.accounts}catch{await vl({silent:!0})}const p=JSON.stringify(Vn.value.map(T=>T.accountId).sort());return u!==p}function rw(){ce({force:!0})}function aw(u){u&&Ne(u,{silent:!0,force:!0})}async function Bc(){try{aa.value=await nI()}catch(u){const p=u instanceof Error?u.message:"Failed to load Telegram status";aa.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:p}}}async function up(){try{const u=await tI();se.value=u.botToken,we.value=u.allowedUserIds.map(p=>String(p)).join(`
79
79
  `),Ie.value=""}catch(u){Ie.value=u instanceof Error?u.message:"Failed to load Telegram configuration"}}async function sw(){const u=await cI();Ci.value=u.dismissed!==!0}function iw(u){const p=u.split(/[\n,]/).map(V=>V.trim().replace(/^(telegram|tg):/i,"").trim()).filter(Boolean),T=p.includes("*"),O=Array.from(new Set(p.filter(V=>/^-?\d+$/.test(V)).map(V=>Number.parseInt(V,10))));return T?["*",...O]:O}async function lw(){const u=se.value.trim(),p=iw(we.value);if(!u){Ie.value=f("Telegram bot token is required.");return}if(p.length===0){Ie.value=f("At least one allowed Telegram user ID or * is required.");return}ze.value=!0,Ie.value="";try{await eI(u,p),we.value=p.map(T=>String(T)).join(`
80
80
  `),await Promise.all([up(),Bc()]),window.alert(f("Telegram bot configured. Only allowlisted Telegram users can use the bridge."))}catch(T){Ie.value=T instanceof Error?T.message:f("Failed to connect Telegram bot"),Bc()}finally{ze.value=!1}}function uw(u){u&&(vt.name==="thread"&&Gs.value===u||(Ct.push({name:"thread",params:{threadId:u}}),kt.value&&Wt(!0)))}function cw(u){vt.name==="automations"&&Yf.value!==u&&Ct.replace({name:"automations",query:u?{automationId:u}:{}})}async function dw(u){var p;ye.value&&(Wt(!1),await Nt()),(p=Fn.value)==null||p.openAutomationEditorFromPanel(u)}async function fw(){var u;ye.value&&(Wt(!1),await Nt()),(u=Fn.value)==null||u.openAutomationCreatorFromPanel()}function pw(){var u;vt.name==="automations"&&((u=ho.value)==null||u.loadAutomations())}async function hw(u){u&&ne.value===u&&await Ub()}function mw(u){return u.length>8?u.slice(-8):u}function cp(u){const p=[u.planType||f("unknown")];return u.authMode&&p.unshift(u.authMode),p.join(" · ")}function vw(u){if(!u)return!1;const p=u.toLowerCase();return p.includes("payment required")||/\b402\b/.test(p)}function iu(u){return u.unavailableReason==="payment_required"||vw(u.quotaError)}function gw(u){return Sr.value||Cr.value||ea.value||En.value||xa.value.length>0||u.isActive&&xa.value!==u.storageId&&Lc.value}function Uc(u){return Ko.value===u.storageId}function yw(u){return xo.value===u.storageId||Uc(u)}function ww(u){return iu(u)?f("Unavailable"):u.isActive?f("Active"):Cr.value?f("Switching…"):f("Switch")}function bw(u){return xa.value===u.storageId?f("Removing…"):Uc(u)?f("Click again to remove"):f("Remove")}function Tw(u){xo.value=u}function Sw(u){xo.value===u&&(xo.value=""),xa.value!==u&&Ko.value===u&&(Ko.value="")}function Cw(u){const p=u.quotaSnapshot;if(!p)return null;const T=[p==null?void 0:p.primary,p==null?void 0:p.secondary].filter(Te=>Te!==null),O=T.find(Te=>Te.windowMinutes===7*24*60);if(O)return O;const V=T.filter(Te=>typeof Te.windowMinutes=="number"&&Te.windowMinutes>=7*24*60).sort((Te,De)=>(Te.windowMinutes??0)-(De.windowMinutes??0))[0]??null;return V||(p.secondary??null)}function xw(u){if(typeof u!="number"||!Number.isFinite(u))return"";const p=new Date(u*1e3);return`${p.getMonth()+1}月${p.getDate()}日`}function dp(u){var Te,De;if(iu(u))return u.quotaError||f("402 Payment Required");const p=u.quotaSnapshot,T=Cw(u),O=(p==null?void 0:p.primary)??(p==null?void 0:p.secondary)??null,V=T??O;if(V){const Ft=Math.max(0,Math.min(100,100-Math.round(V.usedPercent))),Io=xw(V.resetsAt);return Io?`${Ft}% ${f("weekly remaining")} · ${Io}`:`${Ft}% ${f("weekly remaining")}`}return(Te=p==null?void 0:p.credits)!=null&&Te.unlimited?f("Unlimited credits"):(De=p==null?void 0:p.credits)!=null&&De.hasCredits&&p.credits.balance?`${p.credits.balance} ${f("credits")}`:u.quotaStatus==="loading"?f("Loading quota…"):u.quotaStatus==="error"?u.quotaError||f("Quota unavailable"):u.quotaStatus==="ready"||u.quotaStatus==="idle"?f("Quota unavailable"):f("Fetching account details…")}function kw(u){return[u.email||f("Account"),cp(u),iu(u)?f("Unavailable account"):null,dp(u),`${f("Workspace")} ${u.accountId}`].filter(Boolean).join(`
81
81
  `)}async function vl(u={}){try{const p=await _I();Vn.value=p.accounts,p.accounts.some(T=>T.storageId===xo.value)||(xo.value=""),p.accounts.some(T=>T.storageId===Ko.value)||(Ko.value="")}catch(p){if(u.silent===!0)return;Qt.value=p instanceof Error?p.message:f("Failed to load accounts")}}async function Iw(){if(!(Sr.value||Cr.value||ea.value||En.value)){Qt.value="",xo.value="",Ko.value="",Sr.value=!0;try{const u=await hm();Vn.value=u.accounts,Dn(),Po(),Z({includeSelectedThreadMessages:!0})}catch(u){Qt.value=u instanceof Error?u.message:f("Failed to refresh accounts")}finally{Sr.value=!1}}}async function Aw(u){if(!(Cr.value||Sr.value||ea.value||En.value)){if(Lc.value){Qt.value=f("Finish the current turn and pending requests before switching accounts.");return}Qt.value="",xo.value="",Ko.value="",Cr.value=!0;try{const p=await EI(u);Vn.value=Vn.value.map(T=>T.storageId===u?p:{...T,isActive:!1}),Dn(),Po(),Z({includeSelectedThreadMessages:!0}),vl({silent:!0})}catch(p){Qt.value=p instanceof Error?p.message:f("Failed to switch account")}finally{Cr.value=!1}}}async function _w(){var u;if(!(Sr.value||Cr.value||ea.value||En.value)){Qt.value="",Ca.value="",ea.value=!0;try{const p=await PI();ns.value=p,Si.value=!0,window.open(p,"_blank","noopener,noreferrer"),await Nt(),(u=tu.value)==null||u.focus()}catch(p){Qt.value=p instanceof Error?p.message:f("Failed to start Codex login")}finally{ea.value=!1}}}function zc(){En.value||(Si.value=!1,Ca.value="")}async function Pw(){const u=Ca.value.trim();u&&await Rw(u)}async function Rw(u){if(!(En.value||u.length===0)){Qt.value="",En.value=!0;try{const p=await RI(u);Vn.value=p.accounts,ns.value="",Ca.value="",Si.value=!1,Dn(),Po(),Z({includeSelectedThreadMessages:!0})}catch(p){Qt.value=p instanceof Error?p.message:f("Failed to complete Codex login")}finally{En.value=!1}}}async function Ew(u){if(Sr.value||Cr.value||ea.value||En.value||xa.value.length>0)return;const p=Vn.value.find(O=>O.storageId===u)??null;if(!p)return;if(Ko.value!==u){Ko.value=u;return}if(p.isActive&&Lc.value){Qt.value=f("Finish the current turn and pending requests before removing the active account.");return}const T=p.isActive;Qt.value="",Ko.value="",xa.value=u;try{const O=await MI(u);Vn.value=O.accounts,Dn(),Po(),T&&Z({includeSelectedThreadMessages:!0}),vl({silent:!0})}catch(O){Qt.value=O instanceof Error?O.message:f("Failed to remove account")}finally{xa.value=""}}function Mw(u){Ue(u)}function jw(u){Z({includeSelectedThreadMessages:!1,forceThreadRefresh:!0})}async function Lw(u){const p=await q(u);p&&(gn.value?await Ct.replace({name:"thread",params:{threadId:p}}):await Ct.push({name:"thread",params:{threadId:p}}),kt.value&&Wt(!0))}function fp(u){const p=u.trim().replace(/\\/gu,"/");return p?p.includes("/.codex/worktrees/")||p.includes("/.git/worktrees/"):!1}function _i(u,p=""){var Te,De,Ft;const T=H.value.find(Io=>Io.projectName===u);if(!T)return tp(u)||p.trim();const O=T.threads.find(Io=>!fp(Io.cwd));return(((Te=O==null?void 0:O.cwd)==null?void 0:Te.trim())??((Ft=(De=T.threads[0])==null?void 0:De.cwd)==null?void 0:Ft.trim())??"")||tp(u)||p.trim()}function Nw(u){var O,V;const p=H.value.find(Te=>Te.projectName===u),T=_i(u,((V=(O=p==null?void 0:p.threads[0])==null?void 0:O.cwd)==null?void 0:V.trim())??"");T&&(St.value=T),kt.value&&Wt(!0),!gn.value&&Ct.push({name:"home"})}function $w(u){var T;let p="";for(const O of H.value){const V=O.threads.find(Te=>Te.id===u);if((T=V==null?void 0:V.cwd)!=null&&T.trim()){p=V.cwd.trim();break}}!p||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(p)}`,"_blank","noopener,noreferrer")}function lu(u){var T,O;const p=H.value.find(V=>V.projectName===u);return _i(u,((O=(T=p==null?void 0:p.threads[0])==null?void 0:T.cwd)==null?void 0:O.trim())??"")}const pp=K(()=>Object.fromEntries(H.value.map(u=>[u.projectName,lu(u.projectName).trim()]).filter(([,u])=>u.length>0)));function Ow(u){return(be.value[u]??u).trim()||u}function Dw(u){return Ow(u).replace(/[\\/]+/gu,"-").replace(/[\u0000-\u001f]+/gu,"").trim()||"worktree"}function Fw(u){const p=lu(u);!p||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(p)}`,"_blank","noopener,noreferrer")}async function Bw(u){const p=lu(u);await vp(p)}async function Uw(u){const p=zw(u);await vp(p)}function zw(u){var p;for(const T of H.value){const O=T.threads.find(V=>V.id===u);if((p=O==null?void 0:O.cwd)!=null&&p.trim())return O.cwd.trim()}return""}function hp(u){if(!Number.isFinite(u)||u<=0)return"0 B";const p=["B","KB","MB","GB"];let T=u,O=0;for(;T>=1024&&O<p.length-1;)T/=1024,O+=1;return`${T>=10||O===0?T.toFixed(0):T.toFixed(1)} ${p[O]}`}function Hw(u,p){const T=URL.createObjectURL(u),O=document.createElement("a");O.href=T,O.download=p,document.body.appendChild(O),O.click(),document.body.removeChild(O),window.setTimeout(()=>URL.revokeObjectURL(T),3e4)}async function qw(u,p){const O={files:[new File([u],p,{type:u.type||"application/zip"})],title:p};if(!(typeof navigator<"u"&&typeof navigator.share=="function"&&(typeof navigator.canShare!="function"||navigator.canShare(O))))throw new Error("File sharing is not supported in this browser.");await navigator.share(O)}function mp(){C.value.phase!=="exporting"&&(C.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""})}function Ww(){const{blob:u,fileName:p}=C.value;!u||!p||(C.value={...C.value,error:""},Hw(u,p))}async function Gw(){const{blob:u,fileName:p}=C.value;if(!(!u||!p))try{C.value={...C.value,error:""},await qw(u,p)}catch(T){if(T instanceof DOMException&&T.name==="AbortError")return;const O=T instanceof Error?T.message:"",V=T instanceof DOMException&&T.name==="NotAllowedError"||/permission denied|notallowed|not allowed|gesture/iu.test(O);C.value={...C.value,error:V?f("This browser blocked sharing the ZIP. Use Download instead."):O||f("Failed to share project. Use Download instead.")}}}async function vp(u){if(!(!u||typeof document>"u")){C.value={phase:"exporting",loaded:0,total:null,blob:null,fileName:"",error:""};try{const{blob:p,fileName:T}=await GI(u,({loaded:O,total:V})=>{C.value={...C.value,phase:"exporting",loaded:O,total:V}});C.value={phase:"ready",loaded:p.size,total:p.size,blob:p,fileName:T,error:""}}catch(p){if(C.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""},p instanceof DOMException&&p.name==="AbortError")return;const T=p instanceof Error?p.message:"Failed to export project.";window.alert(T)}}}async function Vw(u){const p=lu(u);if(!p||typeof window>"u"||(await uu(p),In.value[p]!==!0))return;const T=`${Dw(u)}-`,O=window.prompt("New worktree folder name",T);if(O===null)return;const V=O.trim();if(V){if(V.includes("/")||V.includes("\\")||V==="."||V===".."){window.alert("Worktree name must be a single folder name.");return}try{const Te=await $I(p,V),De=await Tu(Te.cwd,{createIfMissing:!1,label:""});if(!De)return;St.value=De,ln.value="local",zo(hl(De)),await us(),await Ir(),kt.value&&Wt(!0),gn.value||await Ct.push({name:"home"})}catch(Te){const De=Te instanceof Error?Te.message:"Failed to create worktree.";window.alert(De)}}}function Kw(){var T,O,V;const u=le.value;if(!u)return"";const p=((T=u.projectName)==null?void 0:T.trim())??"";return p?_i(p,((V=u.cwd)==null?void 0:V.trim())??""):((O=u.cwd)==null?void 0:O.trim())??""}function Hc(){const u=Kw();u&&(St.value=u),ln.value="local",kt.value&&Wt(!0),!gn.value&&Ct.push({name:"home"})}function Yw(){St.value="",ln.value="local",kt.value&&Wt(!0),!gn.value&&Ct.push({name:"home"})}async function uu(u){const p=u.trim();if(!p||Object.prototype.hasOwnProperty.call(In.value,p))return;const T=dr.get(p);if(T){const Te=await T;Object.prototype.hasOwnProperty.call(In.value,p)||(In.value={...In.value,[p]:Te});return}const O=FI(p).then(Te=>Te.isGitRepo).catch(()=>!1).finally(()=>{dr.delete(p)});dr.set(p,O);const V=await O;Object.prototype.hasOwnProperty.call(In.value,p)||(In.value={...In.value,[p]:V})}function Jw(u){Rs(u.projectName,u.displayName)}function Qw(u){ae(u.threadId,u.title)}async function Xw(u){await ha(u),await us(),Ir()}function Zw(u){Es(u.projectName,u.toIndex)}function eb(u){var O,V;const p=H.value.find(Te=>Te.projectName===u),T=_i(u,((V=(O=p==null?void 0:p.threads[0])==null?void 0:O.cwd)==null?void 0:V.trim())??"");uu(T)}function gp(u){tb(u)}async function tb(u){var O;const p=await sr(u),T=((O=u.followUpMessageText)==null?void 0:O.trim())??"";if(!(!p||!T||gn.value))try{await Ye(T,[],[],"steer",[])}catch{}}async function nb(u){const p=await _e(u.threadId,u.turnIndex);p&&(await Ct.push({name:"thread",params:{threadId:p}}),ne.value!==p&&await me(p),kt.value&&Wt(!0))}function yp(u){if(u.defaultPrevented)return;if(u.key==="Escape"&&Sn.value){Sn.value=!1;return}if(!u.ctrlKey&&!u.metaKey||u.shiftKey||u.altKey)return;const p=u.key.toLowerCase();if(p==="b"){if(!(mn()?u.metaKey&&!u.ctrlKey:u.ctrlKey&&!u.metaKey))return;u.preventDefault(),Wt(!ye.value);return}if(p==="j"&&vt.name==="thread"&&ne.value){u.preventDefault(),ur();return}p==="j"&&gn.value&&yn.value&&(u.preventDefault(),ur())}async function ob(){try{const u=await Mx();bn.value=u.available,!u.available&&tn.value==="terminal"&&(tn.value="git",Ya())}catch{bn.value=!1,tn.value==="terminal"&&(tn.value="git")}}function wp(u){var T,O;const p=u.target;if(p instanceof Node){if(Va.value){const V=p instanceof Element?p:p.parentElement;V!=null&&V.closest(".thread-terminal-panel")||Ya()}Sn.value&&((T=Yr.value)!=null&&T.containsTarget(p)||(O=Tn.value)!=null&&O.contains(p)||(Ja=Date.now(),Sn.value=!1))}}function rb(u){var T,O;if(!Sn.value)return;const p=u.target;p instanceof Node&&((T=Yr.value)!=null&&T.containsTarget(p)||(O=Tn.value)!=null&&O.contains(p)||(Ja=Date.now(),Sn.value=!1))}function ab(){var u;(u=Fn.value)==null||u.openRecycleBin()}function bp(){if(!(typeof document>"u")){if(document.visibilityState==="hidden"){Cc.value=Date.now(),xc.value=!1;return}qc()}}function Tp(u){u.persisted&&qc()}function Sp(){vt.name==="home"&&(us(),Ir()),qc()}function qc(){typeof window>"u"||typeof document>"u"||GN(document.visibilityState,Cc.value,xc.value,Date.now())&&(xc.value=!0,Cc.value=null,sb())}async function sb(){if(!kc.value){kc.value=!0;try{await Z({includeSelectedThreadMessages:!0}),await ed()}finally{kc.value=!1}}}function Cp(u){const p=u.text;cu();const T=Vr.value,O=u.mode==="queue"&&T&&T.threadId===ne.value?T.queueIndex:void 0;if(Vr.value=null,gn.value){pT(p,u.imageUrls,u.skills,u.fileAttachments);return}Ye(p,u.imageUrls,u.skills,u.mode,u.fileAttachments,O)}function ib(u){const p=zt.value.findIndex(Te=>Te.id===u),T=p>=0?zt.value[p]:void 0,O=vo.value;if(!T||!O||O.hasUnsavedDraft()&&!window.confirm("Replace the current draft with this queued message for editing?"))return;Vr.value=ne.value?{threadId:ne.value,queueIndex:p}:null;const V={text:T.text,imageUrls:[...T.imageUrls],fileAttachments:T.fileAttachments.map(Te=>({...Te})),skills:T.skills.map(Te=>({...Te}))};O.hydrateDraft(V),Ha(u)}function cu(){if(!kt.value||gn.value)return;const u=()=>{var p;(p=ir.value)==null||p.jumpToLatest()};u(),Nt(()=>{u(),!(typeof window>"u")&&window.requestAnimationFrame(()=>{u(),window.requestAnimationFrame(u)})})}function lb(u){St.value=u.trim(),it.value=""}function ub(u){An.value=u.trim()}function ls(u){const p=yn.value.trim();return!u||p!==u?!1:vt.name==="thread"||vt.name==="home"&&Ys.value}function xp(){va+=1,$t+=1,ga+=1,rn+=1,Za.value=[],So.value=null,No.value=null,$o.value=null,Zr.value=null,x.value=!1,R.value=!1,k.value={addedLineCount:0,removedLineCount:0},G.value=[],Ot.value={},ao.value="",Co.value="",cn.value={},br.value="",es.value="",We.value="",ts.value=!1}function kp(u){const p=u.trim();if(!p){k.value={addedLineCount:0,removedLineCount:0};return}const T=++rn;oA(p,"unstaged").then(O=>{T!==rn||!ls(p)||(k.value={addedLineCount:O.addedLineCount,removedLineCount:O.removedLineCount})}).catch(()=>{T!==rn||!ls(p)||(k.value={addedLineCount:0,removedLineCount:0})})}async function gl(u){var O,V,Te;const p=u.trim();if(!p){xp();return}const T=++va;ts.value=!0,We.value="";try{const De=await DI(p);if(T!==va||!ls(p))return;Za.value=De.options,So.value=De.currentBranch,No.value=De.headSha,$o.value=De.headSubject,Zr.value=De.headDate,x.value=De.detached,R.value=De.dirty,G.value=De.changedFiles,kp(p);const Ft=((O=De.currentBranch)==null?void 0:O.trim())||((Te=(V=De.options[0])==null?void 0:V.value)==null?void 0:Te.trim())||"";Ft&&Ip({branch:Ft,includeResetHistory:!0})}catch{if(T!==va||!ls(p))return;Za.value=[],So.value=null,No.value=null,$o.value=null,Zr.value=null,x.value=!1,R.value=!1,k.value={addedLineCount:0,removedLineCount:0},G.value=[]}finally{T===va&&(ts.value=!1)}}function cb(u){So.value=u.currentBranch,No.value=u.headSha,$o.value=u.headSubject,Zr.value=u.headDate,x.value=u.detached,R.value=u.dirty,G.value=u.changedFiles,kp(yn.value)}function db(u){if(Tr.value)return;const p=u.trim();if(!p||p===(So.value??""))return;const T=yn.value.trim();T&&(Tr.value=!0,We.value="",BI(T,p).then(O=>(So.value=O||p,No.value=null,$o.value=null,Zr.value=null,x.value=!1,Hn.value=!1,gl(T))).catch(O=>{const V=O instanceof Error?O.message:"Failed to switch branch";gl(T).finally(()=>{We.value=V})}).finally(()=>{Tr.value=!1}))}function fb(u){if(Tr.value)return;const p=u.branch.trim(),T=u.sha.trim(),O=yn.value.trim();!p||!T||!O||(Tr.value=!0,We.value="",HI(O,p,T).then(V=>(cb(V),Hn.value=!1,gl(O))).catch(V=>{const Te=V instanceof Error?V.message:"Failed to reset branch to commit";gl(O).finally(()=>{We.value=Te})}).finally(()=>{Tr.value=!1}))}function Ip(u){const p=(typeof u=="string"?u:u.branch).trim(),T=typeof u=="string"?!0:u.includeResetHistory!==!1,O=yn.value.trim(),V=Tc(p,T);if(!p||!O||ao.value===V||(Co.value="",Ot.value[V]))return;const Te=++$t;ao.value=V,UI(O,p,{includeResetHistory:T}).then(De=>{Te!==$t||!ls(O)||(Ot.value={...Ot.value,[V]:De})}).catch(De=>{Te!==$t||!ls(O)||(Co.value=De instanceof Error?De.message:"Failed to load branch commits")}).finally(()=>{Te===$t&&ao.value===V&&(ao.value="")})}function pb(u){const p=u.trim(),T=yn.value.trim();if(!p||!T||br.value===p||(es.value="",cn.value[p]))return;const O=++ga;br.value=p,zI(T,p).then(V=>{O!==ga||!ls(T)||(cn.value={...cn.value,[p]:V})}).catch(V=>{O!==ga||!ls(T)||(es.value=V instanceof Error?V.message:"Failed to load commit files")}).finally(()=>{O===ga&&br.value===p&&(br.value="")})}function hb(u){const p=u.path.trim(),T=u.sha.trim();!p||!T||(Qr.value=p,Xr.value=T,Hn.value=!0)}function mb(){Qr.value="",Xr.value="",Hn.value=!Hn.value}function vb(){!Qr.value&&!Xr.value||(Qr.value="",Xr.value="",Hn.value=!1)}async function gb(){const u=await fu();u&&(await Ir(),Hs.value=u,oa.value=gr.value.trim()||"New Project (1)",Aa.value="",Qo.value="",Kn.value="create",Ia.value=!0,Nt(()=>{var p;return(p=xi.value)==null?void 0:p.focus()}))}function du(){Mn.value||(Ia.value=!1,Qo.value="")}let Wc=!1,Gc=!1;function yb(){Wc=!0}function wb(){Wc&&(Wc=!1,Pi())}function bb(){Gc=!0}function Tb(){Gc&&(Gc=!1,du())}async function Sb(){const u=Hs.value.trim(),p=oa.value.trim();if(!ap.value)throw new Error("Enter a single project folder name.");const T=Rp(Pp(u,p));return T?Tu(T,{createIfMissing:!0,label:""}):""}async function Cb(){const u=Hs.value.trim(),p=Aa.value.trim();return p?JI(p,u):""}async function Vc(){if(!(!sp.value||Mn.value)){Qo.value="",Mn.value=!0;try{const u=Kn.value==="clone"?await Cb():await Sb();if(!u)return;St.value=u,zo(hl(u)),await us(),await Ir(),Ia.value=!1}catch(u){Qo.value=u instanceof Error?u.message:"Failed to create or clone project."}finally{Mn.value=!1}}}function xb(){kb(ul.value)}function kb(u){qs.value||!u||(u.value="",u.click())}async function Ib(u,p,T){qs.value=!0;try{const O=await fu();if(!O)return;const V=await p(O);if(!V.path)return;St.value=V.path,zo(hl(V.path)),await us(),await Z({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await Ir()}catch(O){const V=O instanceof Error?O.message:T;window.alert(V)}finally{qs.value=!1,u&&(u.value="")}}async function Ab(u){var O;const p=u.target instanceof HTMLInputElement?u.target:null,T=((O=p==null?void 0:p.files)==null?void 0:O[0])??null;!T||qs.value||await Ib(p,V=>VI(T,V),"Failed to import project.")}async function _b(){const u=St.value.trim()||await fu();u&&(pt.value=!1,kr.value=!0,so.value="",await cs(u),fn.value||Nt(()=>{var p;return(p=cl.value)==null?void 0:p.focus()}))}function Pi(){fl+=1,kr.value=!1,Ce.value=!1,fn.value="",so.value="",ra.value="",yl()}async function Pb(u){!u||Ce.value||(so.value="",await cs(u))}function Rb(){const u=Do.value.trim();!kr.value||!u||cs(u)}function Eb(){const u=ml.value;!kr.value||!u||Ce.value||cs(u)}function Mb(){if(!kr.value||Ce.value||wt.value)return;const u=ml.value,p=Do.value.trim();!u||u===p||cs(u)}function jb(){const u=ml.value,p=Do.value.trim();if(u){if(u!==p){cs(u);return}Kc(u)}}async function Kc(u=ml.value){const p=Xe(u).trim();if(p){fn.value="",wt.value=!0;try{const T=await Tu(p,{createIfMissing:!1,label:""});if(!T){fn.value="Failed to open the selected folder.";return}St.value=T,zo(hl(T)),await us(),await Z({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await Ir(),Pi()}catch(T){fn.value=T instanceof Error?T.message:"Failed to open the selected folder."}finally{wt.value=!1}}}async function Lb(){if(it.value="",pt.value){yl();return}if(!kr.value){const u=St.value.trim()||await fu();if(!u||(kr.value=!0,so.value="",await cs(u),fn.value))return}fn.value||(ht.value=gr.value,pt.value=!0,Nt(()=>{var u;return(u=eu.value)==null?void 0:u.focus()}))}function yl(){it.value="",ht.value="",pt.value=!1}async function Ap(){const u=ht.value.trim();if(!u)return;if(it.value="",fn.value){it.value="Reload the current folder before creating a new one.";return}Pt.value=!0;const p=op.value.trim(),T=Rp(Pp(p,u));if(!T){it.value="Unable to determine where the new folder should be created.",Pt.value=!1;return}if(!rp.value){it.value="Enter a single folder name.",Pt.value=!1;return}try{const O=await YI(T);if(!O){it.value="Failed to create the folder.";return}it.value="",so.value="",await cs(O),yl()}catch(O){it.value=O instanceof Error?O.message:"Failed to create folder."}finally{Pt.value=!1}}async function Nb(){var p;if(typeof window>"u")return!1;const u=((p=new URLSearchParams(window.location.search).get("openProjectPath"))==null?void 0:p.trim())??"";if(!u)return!1;try{const T=await Tu(u,{createIfMissing:!1,label:""});if(!T)return!1;St.value=T,zo(hl(T)),await Ct.replace({name:"home"}),await us();const O=new URL(window.location.href);return O.searchParams.delete("openProjectPath"),window.history.replaceState({},"",O.toString()),!0}catch{return!1}}async function fu(){const u=_p();if(u)return u;try{const p=await mm();if(p)return ya.value=p,p}catch{}return""}async function Ir(){const u=_p();if(!u){gr.value="New Project (1)";return}try{const p=await XI(u);gr.value=p.name||"New Project (1)"}catch{gr.value="New Project (1)"}}function _p(){var T,O;const u=St.value.trim();if(u)return qi(u);const p=((O=(T=Oc.value[0])==null?void 0:T.value)==null?void 0:O.trim())??"";return p?qi(p):ya.value.trim()}async function $b(){try{ya.value=await mm()}catch{ya.value=""}}async function us(){try{const u=await Oi();dn.value={order:[...u.order],labels:{...u.labels},projectOrder:[...u.projectOrder]}}catch{dn.value={order:[],labels:{},projectOrder:[]}}}async function cs(u){const p=++fl,T=Xe(u).trim();ra.value=T,Do.value=T,fn.value="",Ce.value=!0;try{const O=await KI(u,{showHidden:Fo.value});if(p!==fl)return;ra.value=O.path,Do.value=O.path,as.value=O.parentPath,ki.value=O.entries}catch(O){if(p!==fl)return;fn.value=O instanceof Error?O.message:"Failed to load local folders.",as.value=qi(Do.value),ki.value=[],yl()}finally{p===fl&&(Ce.value=!1)}}function Pp(u,p){const T=Xe(u).trim(),O=Xe(p).trim().replace(/^[\\/]+/u,"");if(!T||!O)return"";const V=T.includes("\\")&&!T.includes("/")?"\\":"/";if(/^[a-zA-Z]:[\\/]?$/u.test(T))return`${T.slice(0,2)}${V}${O}`;if(/^\/+$/u.test(T))return`/${O}`;const Te=T.replace(/[\\/]+$/u,"");return Te?`${Te}${V}${O}`:""}function Rp(u){const p=Xe(u).trim();if(!p)return"";const T=p.match(/^\\\\([^\\/]+)[\\/]+([^\\/]+)([\\/].*)?$/u);if(T){const[,V,Te,De=""]=T,Ft=Yc(De.split(/[\\/]+/u));return Ft.length>0?`\\\\${V}\\${Te}\\${Ft.join("\\")}`:`\\\\${V}\\${Te}`}const O=p.match(/^([a-zA-Z]:)([\\/].*)?$/u);if(O){const[,V,Te=""]=O,De=p.includes("\\")&&!p.includes("/")?"\\":"/",Ft=Yc(Te.split(/[\\/]+/u));return Ft.length>0?`${V}${De}${Ft.join(De)}`:`${V}${De}`}if(p.startsWith("/")){const V=Yc(p.split("/"));return V.length>0?`/${V.join("/")}`:"/"}return p}function Yc(u){const p=[];for(const T of u){const O=T.trim();if(!(!O||O===".")){if(O===".."){p.length>0&&p.pop();continue}p.push(O)}}return p}function Ob(u){fa(u.draggedId,u.targetId)}function Ep(u){qa(Ks.value,u)}function Mp(u){Wa(u)}function jp(u){Uo(u)}function Db(){Tt()}const wl=S("");let Jc=null;tt(At,u=>{var p;u&&(u.text&&((p=vo.value)==null||p.hydrateDraft({text:u.text,imageUrls:u.imageUrls,fileAttachments:u.fileAttachments,skills:u.skills})),wl.value=u.text?f("Stopped: message not submitted, restored to input."):f("Stopped: message not submitted."),Jc&&clearTimeout(Jc),Jc=setTimeout(()=>{wl.value=""},6e3),Br(Ks.value))});function Lp(u){var T,O;const p=ne.value.trim();switch(u){case"compact":p&&Je(p);break;case"review":if(!p)return;Qr.value="",Xr.value="",Hn.value=!0;break;case"rename":p&&((O=Fn.value)==null||O.openRenameThreadDialog(p,((T=le.value)==null?void 0:T.title)??""));break;case"archive":p&&Ue(p);break;case"fork":p&&q(p);break;case"new":Hc();break;case"skills":is.value||Ct.push({name:"skills"});break}}function Fb(u){const p=u.turnId.trim();if(p.length>0){const T=[...Ii.value].reverse().find(O=>{var V;return O.role==="user"&&(((V=O.turnId)==null?void 0:V.trim())??"")===p&&O.text.trim().length>0});T!=null&&T.text&&vo.value&&vo.value.appendTextToDraft(T.text)}Ms(u.turnId)}function Bb(){gn.value||!ne.value||(Mc.value&&(Ec.value=Mc.value.id),zr("default"),cu(),Ye("Implement",[],[],"steer",[],void 0,"default"))}async function Ub(){if(gn.value||is.value||Vs.value||!le.value||Ii.value.length===0)return;const u=zb();try{await qN(u)}catch{}}function zb(){var T,O,V;const u=[],p=((O=(T=le.value)==null?void 0:T.title)==null?void 0:O.trim())||"Untitled thread";u.push(`# ${Hb(p)}`),u.push(""),u.push(`- Exported: ${new Date().toISOString()}`),u.push(`- Thread ID: ${((V=le.value)==null?void 0:V.id)??""}`),u.push(""),u.push("---"),u.push("");for(const Te of Ii.value){const De=Te.role?Te.role.toUpperCase():"MESSAGE";u.push(`## ${De}`),u.push("");const Ft=Te.text.trim();if(Ft&&(u.push(Ft),u.push("")),Te.commandExecution&&(u.push("```text"),u.push(`command: ${Te.commandExecution.command}`),u.push(`status: ${Te.commandExecution.status}`),Te.commandExecution.cwd&&u.push(`cwd: ${Te.commandExecution.cwd}`),Te.commandExecution.exitCode!==null&&u.push(`exitCode: ${Te.commandExecution.exitCode}`),u.push(Te.commandExecution.aggregatedOutput||"(no output)"),u.push("```"),u.push("")),Te.fileAttachments&&Te.fileAttachments.length>0){u.push("Attachments:");for(const Io of Te.fileAttachments)u.push(`- ${Io.path}`);u.push("")}if(Te.images&&Te.images.length>0){u.push("Images:");for(const Io of Te.images)u.push(`- ${Io}`);u.push("")}}return`${u.join(`