codex-mobile-re 0.1.91 → 0.1.92
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.
- package/dist/assets/{AutomationsPanel-DPyx78VB.js → AutomationsPanel-DoiJu1FG.js} +1 -1
- package/dist/assets/{DirectoryHub-qdoRipfo.js → DirectoryHub-C00lAjDE.js} +1 -1
- package/dist/assets/{ReviewPane-d8B-VWFC.js → ReviewPane-BRSFXiGm.js} +1 -1
- package/dist/assets/ThreadConversation-B_MGLI-Z.css +1 -0
- package/dist/assets/{ThreadConversation-CfozD14u.js → ThreadConversation-CRNknojN.js} +2 -2
- package/dist/assets/{ThreadTerminalPanel-hWwS8_eX.js → ThreadTerminalPanel-CO2WH2DS.js} +1 -1
- package/dist/assets/{index-D7o45WlH.js → index-CHwKrUR0.js} +3 -3
- package/dist/index.html +1 -1
- package/dist-cli/index.js +6 -1
- package/dist-cli/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/ThreadConversation-BSeUPSAG.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ThreadConversation-CRNknojN.js","assets/sanitizeHtml-LuNwludj.js","assets/ThreadConversation-B_MGLI-Z.css","assets/ThreadTerminalPanel-CO2WH2DS.js","assets/ThreadTerminalPanel-O7IxAyfy.css","assets/ReviewPane-BRSFXiGm.js","assets/ReviewPane-Q55bhcnB.css","assets/DirectoryHub-C00lAjDE.js","assets/DirectoryHub-CIkiWzxh.css","assets/AutomationsPanel-DoiJu1FG.js","assets/AutomationsPanel-VRBbmMYW.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();/**
|
|
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-uf} more item(s)`:"";return`${t}:
|
|
53
53
|
${n.join(`
|
|
54
54
|
`)||"empty"}${r}`}catch(n){return`${t}: unavailable (${$y(fu(n))})`}}function kx(){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}`,zm(window.localStorage,"localStorage"),zm(window.sessionStorage,"sessionStorage")].join(`
|
|
55
|
-
`)}function Mi(e){const t=e.message.trim();if(!t)return;const n=Sl.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()};Sl.value=[o,...Sl.value].slice(0,mx)}function jy(e=Sl.value){var m;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.
|
|
55
|
+
`)}function Mi(e){const t=e.message.trim();if(!t)return;const n=Sl.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()};Sl.value=[o,...Sl.value].slice(0,mx)}function jy(e=Sl.value){var m;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.92",s="codex-mobile",a=e.slice(0,12).map((g,w)=>[`${w+1}. [${g.atIso}] ${g.kind}`,g.method?`${g.method}`:"",g.url??"",typeof g.status=="number"?`${g.status} ${g.statusText??""}`.trim():"",g.message].filter(Boolean).join(" | ")).join(`
|
|
56
56
|
`),u=["What happened?","","","Context",`URL: ${n}`,`User agent: ${o}`,`Viewport: ${t}`,`App version: ${r}`,`Worktree: ${s}`,"","Browser/app state",kx(),"","Recent diagnostics",a||"No diagnostics captured.","","Visible page text",bx()].join(`
|
|
57
57
|
`).slice(0,vx),d=`Codex Web feedback: ${$y((m=e[0])==null?void 0:m.message)}`;return`mailto:${My}?subject=${qm(d)}&body=${qm(u)}`}function Cx(){typeof window>"u"||(window.location.href=jy())}function Tx(){if(!(typeof window>"u")&&(Bm||(Bm=!0,window.addEventListener("error",e=>{Mi({kind:"window-error",message:e.error?fu(e.error):e.message,url:e.filename||window.location.href})}),window.addEventListener("unhandledrejection",e=>{Mi({kind:"unhandled-rejection",message:fu(e.reason),url:window.location.href})})),!cf)){if(typeof window.fetch!="function"){Mi({kind:"fetch-error",message:"Feedback diagnostics could not monitor fetch: window.fetch is unavailable",url:window.location.href});return}try{df=window.fetch.bind(window),window.fetch=async(e,t)=>{const n=gx(e),o=yx(e,t);try{const r=await df(e,t);return r.ok||Mi({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 Mi({kind:"fetch-error",message:fu(r),url:n,method:o}),r}},cf=!0}catch(e){df=null,cf=!1;try{Mi({kind:"fetch-error",message:`Feedback diagnostics could not monitor fetch: ${fu(e)}`,url:window.location.href})}catch{}}}}function xp(){const e=ee(()=>Sl.value.length>0);function t(n,o){Mi({kind:"visible-error",message:n,url:o||(typeof window>"u"?void 0:window.location.href)})}return{diagnostics:Sl,hasFeedbackDiagnostics:e,recordVisibleFailure:t,openFeedbackMail:Cx,buildFeedbackMailto:jy,feedbackMailtoBase:wx}}const Ny="codex-web-local.recycle-bin.v1";function Ly(){if(typeof window>"u")return[];try{const e=window.localStorage.getItem(Ny);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 Hm(e){if(!(typeof window>"u"))try{window.localStorage.setItem(Ny,JSON.stringify(e))}catch{}}const vs=S(Ly());function Sx(){function e(){vs.value=Ly()}function t(r){vs.value=[{...r,archivedAtIso:new Date().toISOString()},...vs.value.filter(s=>s.id!==r.id)],Hm(vs.value)}function n(r){vs.value=vs.value.filter(s=>s.id!==r),Hm(vs.value)}async function o(r){if(!vs.value.some(s=>s.id===r))return{ok:!1,error:"Thread is not in the recycle bin"};try{return await R1(r),n(r),{ok:!0}}catch(s){return{ok:!1,error:s instanceof Error?s.message:"Failed to restore thread"}}}return{records:vs,loadRecords:e,recordArchivedThread:t,removeArchivedRecord:n,restoreArchivedThread:o}}const xx=["title","aria-label","disabled"],Ax={key:1,class:"composer-dropdown-value"},Px={key:0,class:"composer-dropdown-search-wrap"},Ex=["placeholder","onKeydown"],Ix={class:"composer-dropdown-options",role:"listbox"},Rx=["onClick"],Mx={key:0,class:"composer-dropdown-empty"},$x=Nn({__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),s=S(null),a=S(null),u=S(null),d=S(!1),m=S(""),g=S({});let w=!1;const x=ee(()=>{var Pe;const Ae=n.options.find(De=>De.value===n.modelValue);return Ae?Ae.label:((Pe=n.placeholder)==null?void 0:Pe.trim())||""}),R=ee(()=>n.openDirection??"down"),L=ee(()=>n.menuAlign??"start"),B=ee(()=>n.iconOnly===!0),Y=ee(()=>n.enableSearch===!0),ae=ee(()=>n.variant==="pill"?"composer-dropdown-trigger--pill":""),z=ee(()=>{var Ae;return((Ae=n.searchPlaceholder)==null?void 0:Ae.trim())||"Quick search projects"}),Z=ee(()=>{var Ae;return((Ae=n.emptyLabel)==null?void 0:Ae.trim())||"No results"}),X=ee(()=>{var Ae;return x.value||((Ae=n.placeholder)==null?void 0:Ae.trim())||"Select option"}),ye=ee(()=>{const Ae=m.value.trim().toLowerCase();return Ae?n.options.filter(Pe=>Pe.label.toLowerCase().includes(Ae)||Pe.value.toLowerCase().includes(Ae)):n.options});function Me(){n.disabled||(d.value=!d.value)}function Se(Ae,Pe,De){return Math.min(De,Math.max(Pe,Ae))}function Fe(){var ne,re,H,Be;if(!d.value)return;const Ae=r.value;if(!Ae||typeof window>"u")return;const Pe=Ae.getBoundingClientRect(),De=window.innerWidth,Ye=window.innerHeight,He=8,St=8,ct=Math.max(0,De-He*2),Ge=((ne=a.value)==null?void 0:ne.offsetWidth)??((re=s.value)==null?void 0:re.offsetWidth)??224,nt=((H=a.value)==null?void 0:H.offsetHeight)??((Be=s.value)==null?void 0:Be.offsetHeight)??0,dt=Math.min(Ge,ct),_t=Math.max(He,De-dt-He),Tt=L.value==="end"?Pe.right-dt:Pe.left,gt=Se(Tt,He,_t);let se=R.value==="up"?Pe.top-nt-St:Pe.bottom+St;nt>0&&se+nt>Ye-He&&(se=Ye-nt-He),se=Math.max(He,se),g.value={position:"fixed",left:`${gt}px`,right:"auto",top:`${se}px`,bottom:"auto",width:`${dt}px`}}function pe(){w||typeof window>"u"||(window.addEventListener("resize",Fe),window.addEventListener("scroll",Fe,!0),w=!0)}function Ue(){!w||typeof window>"u"||(window.removeEventListener("resize",Fe),window.removeEventListener("scroll",Fe,!0),w=!1)}function $e(Ae){o("update:modelValue",Ae),d.value=!1,m.value=""}function he(){if(m.value.length>0){m.value="";return}d.value=!1}function Te(Ae){if(!d.value)return;const Pe=r.value;if(!Pe)return;const De=Ae.target;De instanceof Node&&(Pe.contains(De)||(d.value=!1,m.value=""))}return rt(d,Ae=>{if(!Ae){Ue(),g.value={};return}pe(),zt(()=>{var Pe;Fe(),window.requestAnimationFrame(Fe),Y.value&&((Pe=u.value)==null||Pe.focus())})}),Ps(()=>{window.addEventListener("pointerdown",Te)}),zi(()=>{window.removeEventListener("pointerdown",Te),Ue()}),(Ae,Pe)=>(T(),A("div",{ref_key:"rootRef",ref:r,class:"composer-dropdown"},[f("button",{class:Ke(["composer-dropdown-trigger",ae.value]),type:"button",title:X.value,"aria-label":X.value,disabled:e.disabled,onClick:Me},[e.selectedPrefixIcon?(T(),at(up(e.selectedPrefixIcon),{key:0,class:"composer-dropdown-prefix-icon"})):J("",!0),B.value?J("",!0):(T(),A("span",Ax,k(x.value),1)),xe(ni,{class:"composer-dropdown-chevron"})],10,xx),d.value?(T(),A("div",{key:0,ref_key:"menuWrapRef",ref:s,class:Ke(["composer-dropdown-menu-wrap",{"composer-dropdown-menu-wrap-up":R.value==="up","composer-dropdown-menu-wrap-down":R.value==="down"}]),style:Vr(g.value)},[f("div",{ref_key:"menuRef",ref:a,class:"composer-dropdown-menu"},[Y.value?(T(),A("div",Px,[Nt(f("input",{ref_key:"searchInputRef",ref:u,"onUpdate:modelValue":Pe[0]||(Pe[0]=De=>m.value=De),class:"composer-dropdown-search-input",type:"text",placeholder:z.value,onKeydown:Pn(Qe(he,["prevent"]),["esc"])},null,40,Ex),[[an,m.value]])])):J("",!0),f("ul",Ix,[(T(!0),A(ze,null,kt(ye.value,De=>(T(),A("li",{key:De.value},[f("button",{class:Ke(["composer-dropdown-option",{"is-selected":De.value===e.modelValue}]),type:"button",onClick:Ye=>$e(De.value)},k(De.label),11,Rx)]))),128)),ye.value.length===0?(T(),A("li",Mx,k(Z.value),1)):J("",!0)])],512)],6)):J("",!0)],512))}}),lr=At($x,[["__scopeId","data-v-48e2516e"]]),jx={},Nx={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function Lx(e,t){return T(),A("svg",Nx,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M18 6L6 18M6 6l12 12"},null,-1)])])}const jc=At(jx,[["render",Lx]]),Ox=["aria-label","onKeydown"],Dx={class:"app-dialog-header"},Fx={class:"app-dialog-title-wrap"},Ux={class:"app-dialog-title"},Bx={key:0,class:"app-dialog-subtitle"},qx=["aria-label","title"],zx={class:"app-dialog-body"},Hx={key:0,class:"app-dialog-footer"},Wx=Nn({__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}=Ar();function s(){o("close")}function a(u){n.open&&u.key==="Escape"&&(u.preventDefault(),s())}return rt(()=>n.open,u=>{typeof window>"u"||(u?window.addEventListener("keydown",a):window.removeEventListener("keydown",a))},{immediate:!0}),zi(()=>{typeof window>"u"||window.removeEventListener("keydown",a)}),(u,d)=>(T(),at(Bi,{to:"body"},[e.open?(T(),A("div",{key:0,class:"app-dialog-overlay",onClick:Qe(s,["self"])},[f("div",{class:Ke(["app-dialog-panel",`app-dialog-panel--${e.size}`]),role:"dialog","aria-modal":"true","aria-label":e.ariaLabel||e.title,onKeydown:Pn(Qe(s,["prevent"]),["esc"])},[f("div",Dx,[f("div",Fx,[f("h3",Ux,k(e.title),1),e.subtitle?(T(),A("p",Bx,k(e.subtitle),1)):J("",!0)]),f("button",{class:"app-dialog-close",type:"button","aria-label":v(r)("Close"),title:v(r)("Close"),onClick:s},[xe(jc,{class:"app-dialog-close-icon"})],8,qx)]),f("div",zx,[ur(u.$slots,"default",{},void 0)]),u.$slots.footer?(T(),A("div",Hx,[ur(u.$slots,"footer",{},void 0)])):J("",!0)],42,Ox)])):J("",!0)]))}}),ff=At(Wx,[["__scopeId","data-v-3d93f67e"]]),Vx={key:0,class:"sidebar-menu-row-left"},Gx={class:"sidebar-menu-row-main"},Kx={key:1,class:"sidebar-menu-row-right"},Yx={key:0,class:"sidebar-menu-row-right-default"},Jx={key:1,class:"sidebar-menu-row-right-hover"},Qx=Nn({inheritAttrs:!1,__name:"SidebarMenuRow",props:{as:{default:"div"},forceRightHover:{type:Boolean,default:!1}},setup(e){const t=e,n=w0(),o=ee(()=>!!n.left),r=ee(()=>!!n.right),s=ee(()=>!!n["right-hover"]),a=ee(()=>r.value||s.value);return(u,d)=>(T(),at(up(t.as),zg({class:"sidebar-menu-row","data-has-left":o.value,"data-has-right":a.value,"data-has-right-hover":s.value,"data-force-right-hover":t.forceRightHover},u.$attrs),{default:tt(()=>[o.value?(T(),A("span",Vx,[ur(u.$slots,"left",{},void 0,!0)])):J("",!0),f("span",Gx,[ur(u.$slots,"default",{},void 0,!0)]),a.value?(T(),A("span",Kx,[r.value?(T(),A("span",Yx,[ur(u.$slots,"right",{},void 0,!0)])):J("",!0),s.value?(T(),A("span",Jx,[ur(u.$slots,"right-hover",{},void 0,!0)])):J("",!0)])):J("",!0)]),_:3},16,["data-has-left","data-has-right","data-has-right-hover","data-force-right-hover"]))}}),ha=At(Qx,[["__scopeId","data-v-5fc666fb"]]);function Xx(e,t,n){return n.canPruneMissing?e.filter(o=>t.has(o)):e}const Zx={key:0,class:"pinned-section"},eA={class:"thread-tree-header"},tA={key:0,class:"thread-list"},nA=["data-menu-open"],oA={class:"thread-left-stack"},rA=["data-state"],aA=["data-confirming","title","onClick"],sA={key:0,class:"thread-delete-confirm-label"},iA=["onClick"],lA={class:"thread-row-title-wrap"},uA={class:"thread-row-title-line"},cA={class:"thread-row-title"},dA=["title"],fA={key:0,class:"thread-row-automation-count"},pA=["data-state"],hA={class:"thread-row-time"},mA=["onClick"],vA={class:"projects-section"},gA={class:"thread-tree-header"},yA=["aria-expanded","aria-label","title"],wA={class:"organize-menu-title"},bA=["data-active"],_A={key:0},kA=["data-active"],CA={key:0},TA=["data-active"],SA={key:0},xA={class:"organize-menu-title"},AA=["data-active"],PA={key:0},EA=["data-active"],IA={key:0},RA={key:0,class:"thread-tree-action-error"},MA={key:1,class:"thread-tree-no-results"},$A={key:2,class:"thread-tree-loading"},jA={key:3,class:"thread-list thread-list-global"},NA=["data-menu-open"],LA={class:"thread-left-stack"},OA=["data-state"],DA=["data-confirming","title","onClick"],FA={key:0,class:"thread-delete-confirm-label"},UA=["onClick"],BA={class:"thread-row-title-wrap"},qA={class:"thread-row-title-line"},zA={class:"thread-row-title"},HA=["title"],WA={key:0,class:"thread-row-automation-count"},VA=["data-state"],GA={class:"thread-row-time"},KA=["onClick"],YA=["data-project-name","data-expanded","data-dragging"],JA={class:"project-icon-stack"},QA={class:"project-icon-folder"},XA={class:"project-icon-chevron"},ZA=["data-dragging-handle","onMousedown"],eP=["title"],tP=["title"],nP={key:0,class:"thread-row-automation-count"},oP={class:"project-hover-controls"},rP=["onClick"],aP=["data-open-direction"],sP=["onClick"],iP=["onClick"],lP=["onClick"],uP=["onClick"],cP=["onClick"],dP=["onClick"],fP={class:"project-menu-label"},pP=["onInput"],hP=["aria-label","title","onClick"],mP={key:0,class:"thread-list"},vP=["data-menu-open"],gP={class:"thread-left-stack"},yP=["data-state"],wP=["data-confirming","title","onClick"],bP={key:0,class:"thread-delete-confirm-label"},_P=["onClick"],kP={class:"thread-row-title-wrap"},CP={class:"thread-row-title-line"},TP={class:"thread-row-title"},SP=["title"],xP={key:0,class:"thread-row-automation-count"},AP=["data-state"],PP={class:"thread-row-time"},EP=["onClick"],IP={class:"project-empty"},RP=["onClick"],MP={class:"chats-section"},$P={class:"thread-tree-header"},jP={class:"chats-section-actions"},NP=["aria-label","title"],LP={key:0,class:"thread-tree-no-results"},OP={key:1,class:"thread-list thread-list-global"},DP=["data-menu-open"],FP={class:"thread-left-stack"},UP=["data-state"],BP=["data-confirming","title","onClick"],qP={key:0,class:"thread-delete-confirm-label"},zP=["onClick"],HP={class:"thread-row-title-wrap"},WP={class:"thread-row-title-line"},VP={class:"thread-row-title"},GP=["title"],KP={key:0,class:"thread-row-automation-count"},YP=["data-state"],JP={class:"thread-row-time"},QP=["onClick"],XP=["data-open-direction"],ZP=["disabled","title"],eE=["placeholder","onKeydown"],tE={key:0,class:"recycle-bin-empty"},nE={key:1,class:"recycle-bin-list"},oE={class:"recycle-bin-item-copy"},rE={class:"recycle-bin-item-title"},aE={key:0,class:"recycle-bin-item-meta"},sE={class:"recycle-bin-item-time"},iE={class:"recycle-bin-item-actions"},lE=["disabled","onClick"],uE=["onClick"],cE={key:2,class:"recycle-bin-error",role:"alert"},dE=["aria-label"],fE={class:"rename-thread-title"},pE={class:"rename-thread-subtitle"},hE={key:0,class:"automation-target-picker"},mE={class:"automation-target-mode-group",role:"radiogroup","aria-label":"Automation target type"},vE={class:"automation-target-dropdown"},gE=["aria-label"],yE=["onClick"],wE={class:"automation-thread-field"},bE={class:"automation-thread-label"},_E=["placeholder"],kE={class:"automation-thread-field"},CE={class:"automation-thread-label"},TE=["placeholder"],SE={class:"automation-thread-field"},xE={class:"automation-thread-label"},AE={class:"automation-schedule-mode-group",role:"radiogroup","aria-label":"Automation schedule type"},PE={key:0,class:"automation-schedule-row"},EE={class:"automation-schedule-copy"},IE={key:1,class:"automation-schedule-row"},RE={class:"automation-schedule-copy"},ME={class:"automation-schedule-preview"},$E={class:"automation-thread-field"},jE={class:"automation-thread-label"},NE={key:2,class:"rename-thread-subtitle automation-thread-error"},LE={key:3,class:"rename-thread-subtitle automation-thread-notice"},OE={class:"rename-thread-actions"},DE=["disabled"],FE=["disabled"],UE=["disabled"],BE=["disabled"],qE=4,Wm=6,Vm="codex-web-local.sidebar-section-expansion.v1",Gm="codex-web-local.sidebar-chats-first.v1",Km="codex-web-local.sidebar-chat-sort-mode.v1",Ym="codex-web-local.thread-view-mode.v1",Jm="codex-web-local.collapsed-projects.v1",zE=Nn({__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}=Ar(),{recordVisibleFailure:s}=xp(),a=n,{records:u,loadRecords:d,recordArchivedThread:m,removeArchivedRecord:g,restoreArchivedThread:w}=Sx(),x=S(!1),R=S(""),L=S("");function B(){gn.value=!1,R.value="",d(),x.value=!0}async function Y(y){if(!L.value){L.value=y,R.value="";try{const C=await w(y);C.ok?a("restore-thread",y):R.value=C.error??"Failed to restore thread"}finally{L.value=""}}}const ae=S({}),z=S({}),Z=S(!0),X=S(!0),ye=S(!0),Me=S(!1),Se=S(Es(Gm,!1)),Fe=S(xt());let pe=!1;const Ue=S([]),$e=S({}),he=S(""),Te=S([]),Ae=S(""),Pe=S(""),De=S("hover"),Ye=S({}),He=S({}),St=S({}),ct=S("actions"),Ge=S(""),nt=S(!1),dt=S(""),_t=S(""),Tt=S(null),gt=S(!1),se=S(""),ne=S(""),re=S({}),H=S({}),Be=S(!1),$=S("thread"),D=S(""),G=S(""),ie=S(""),le=S("create"),oe=S(!1),Ce=S("thread"),we=S(""),ve=S(""),ce=S(""),Ee=S(""),be=S(!1),Oe=S(!1),Re=S({name:"",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"}),Ve=S({mode:"daily",dailyTime:"09:00",interval:1,intervalUnit:"hours"}),it=ee(()=>{if($.value==="project"){const C=G.value;return C?H.value[C]??[]:[]}const y=D.value;return y?re.value[y]??[]:[]}),yt=ee(()=>bn(Re.value.rrule)),It=ee(()=>oe.value&&le.value==="create"?Ce.value==="thread"?r("This creates a heartbeat automation attached to the selected chat."):r("This creates a project automation attached to the selected project folder."):$.value==="project"?r("This creates project automations attached to the selected project folder."):r("This creates heartbeat automations attached to the selected thread.")),Ze=ee(()=>{var C;const y=[];for(const _ of o.groups)for(const F of _.threads){const _e=((C=F.title)==null?void 0:C.trim())||F.id,lt=co(_.projectName);y.push({value:F.id,label:`${_e} · ${lt}`,searchText:`${_e} ${lt} ${F.id}`.toLowerCase()})}return y}),Wt=ee(()=>{const y=[];for(const C of o.groups){const _=Uo(C.projectName);if(!_)continue;const F=co(C.projectName);y.push({value:_,label:F,searchText:`${F} ${_}`.toLowerCase()})}return y}),W=ee(()=>(Ce.value==="project"?Wt.value:Ze.value).map(C=>({value:C.value,label:C.label}))),K=[{value:"minutes",label:r("minutes")},{value:"hours",label:r("hours")},{value:"days",label:r("days")}],Q=ee(()=>[{value:"ACTIVE",label:r("Active")},{value:"PAUSED",label:r("Paused")}]);rt(W,y=>{var C;oe.value&&(y.some(_=>_.value===we.value)||(we.value=((C=y[0])==null?void 0:C.value)??""))});const de=S(null),Le=S(null),We=S(null);let ot=null,Ft=null;const Vt=S(""),Bn=S({}),Jo=new Map,vo=new Map,Qn=new Map,go=new WeakMap,Qo=S(null),dr=S(null),gn=S(!1),mt=S(Aa()),nn=typeof window<"u"?new ResizeObserver(y=>{for(const C of y){const _=C.target,F=go.get(_);F&&cn(F,_)}}):null;function Xn(){if(typeof window>"u")return{};try{const y=window.localStorage.getItem(Jm);if(!y)return{};const C=JSON.parse(y);return!C||typeof C!="object"||Array.isArray(C)?{}:C}catch{return{}}}function Aa(){return typeof window>"u"?"project":window.localStorage.getItem(Ym)==="chronological"?"chronological":"project"}function Es(y,C){if(typeof window>"u")return C;const _=window.localStorage.getItem(y);return _==="true"?!0:_==="false"?!1:C}function xt(){return typeof window>"u"?"updated":window.localStorage.getItem(Km)==="created"?"created":"updated"}z.value=Xn();function Gt(){if(!(typeof window>"u"))try{const y=JSON.parse(window.localStorage.getItem(Vm)||"{}");typeof y.pinned=="boolean"&&(Z.value=y.pinned),typeof y.projects=="boolean"&&(X.value=y.projects),typeof y.chats=="boolean"&&(ye.value=y.chats)}catch{}}function ht(){typeof window>"u"||window.localStorage.setItem(Vm,JSON.stringify({pinned:Z.value,projects:X.value,chats:ye.value}))}Gt(),rt(z,y=>{typeof window>"u"||window.localStorage.setItem(Jm,JSON.stringify(y))},{deep:!0}),rt(mt,y=>{typeof window>"u"||window.localStorage.setItem(Ym,y)}),rt(Se,y=>{typeof window>"u"||window.localStorage.setItem(Gm,String(y))}),rt(Fe,y=>{typeof window>"u"||window.localStorage.setItem(Km,y)}),rt([Z,X,ye],ht);const Xo=ee(()=>o.searchQuery.trim().toLowerCase()),sn=ee(()=>Xo.value.length>0),fr=ee(()=>o.searchMatchedThreadIds?new Set(o.searchMatchedThreadIds):null),yo=ee(()=>new Set(Ue.value)),Ln=ee(()=>new Set(Te.value));function pr(y){if(Ln.value.has(y.id))return!1;if(!sn.value)return!0;if(fr.value)return fr.value.has(y.id);const C=Xo.value;return y.title.toLowerCase().includes(C)||y.preview.toLowerCase().includes(C)}const Pa=ee(()=>o.groups.flatMap(y=>{const C=y.threads.filter(_=>!Kc(_.cwd)&&pr(_));return C.length>0?[{...y,threads:C}]:!sn.value&&y.threads.length===0?[{...y,threads:C}]:[]})),Ja=ee(()=>mt.value==="chronological"),Kn=ee(()=>{const y=[];for(const C of o.groups)for(const _ of C.threads)yo.value.has(_.id)||pr(_)&&y.push(_);return y.sort((C,_)=>{const F=new Date(C.updatedAtIso||C.createdAtIso).getTime();return new Date(_.updatedAtIso||_.createdAtIso).getTime()-F})}),In=ee(()=>{const y=Kn.value.filter(_=>Kc(_.cwd)),C=Fe.value==="created"?"createdAtIso":"updatedAtIso";return y.sort((_,F)=>{const _e=new Date(_[C]||_.updatedAtIso||_.createdAtIso).getTime();return new Date(F[C]||F.updatedAtIso||F.createdAtIso).getTime()-_e})}),Qa=ee(()=>sn.value||Me.value?In.value:In.value.slice(0,10)),Zn=ee(()=>sn.value?!1:In.value.length>10),yn=ee(()=>{const y=new Map;for(const C of o.groups)for(const _ of C.threads)Ln.value.has(_.id)||y.set(_.id,_);return y});rt(Ue,y=>{pe&&IS(y)}),rt([yn,()=>o.isThreadListFullyLoaded],([y])=>{const C=Xx(Ue.value,new Set(y.keys()),{canPruneMissing:o.isThreadListFullyLoaded});if(C.length===Ue.value.length)return;const _=new Set(C),F=Object.fromEntries(Object.entries($e.value).filter(([_e])=>_.has(_e)));$e.value=F,Ue.value=C});let Qr=0;async function Xt(){if(o.isLoading)return;const y=Ue.value.filter(_e=>!yn.value.has(_e)&&!$e.value[_e]);if(y.length===0)return;const C=Qr+=1,_=await Promise.all(y.map(async _e=>{try{return await QT(_e)}catch{return null}}));if(C!==Qr)return;const F={...$e.value};for(const _e of _)_e&&(F[_e.id]=_e);$e.value=F}rt([Ue,yn,()=>o.isLoading],()=>{pe&&Xt()}),Ps(async()=>{const{threadIds:y}=await ES(),C=Array.isArray(y)?y.filter(_=>typeof _=="string").map(_=>_.trim()).filter((_,F,_e)=>_.length>0&&_e.indexOf(_)===F):[];C.length>0&&(Ue.value=C);try{re.value=await h1()}catch{re.value={}}try{await Jt()}catch{H.value={}}pe=!0,Xt()});const Xr=ee(()=>_o(se.value)),Ea=ee(()=>{const y=ne.value;return Xr.value?r('This will archive the thread "{title}" and remove the attached heartbeat automations.',{title:y}):r('This will archive the thread "{title}". You can find it later in archived threads.',{title:y})}),wo=ee(()=>{const y=new Map;for(const C of o.groups)for(const _ of C.threads)y.set(_.id,C.projectName);return y}),$o=ee(()=>{const y=new Map;for(const C of o.groups){const _=C.threads.filter(F=>!yo.value.has(F.id)&&!Ln.value.has(F.id));y.set(C.projectName,_)}return y}),jo=ee(()=>{const y=new Map;for(const C of o.groups)for(const _ of C.threads){const F=new Date(_.updatedAtIso||_.createdAtIso).getTime();y.set(_.id,F)}return y}),Lt=ee(()=>{const y=Pe.value;return y?yn.value.get(y)??null:null}),Rt=ee(()=>Ue.value.map(y=>yn.value.get(y)??$e.value[y]??null).filter(y=>y!==null).filter(pr));function Yn(){Z.value=!Z.value}function bo(){X.value=!X.value}function eo(){ye.value=!ye.value}const qn=ee(()=>{const y=We.value;if(!y||y.dropTargetIndexFull===null||o.groups.length===0)return null;const C=Math.max(0,Math.min(y.dropTargetIndexFull,o.groups.length)),_=C>y.fromIndex?C-1:C,F=Math.max(0,Math.min(_,o.groups.length-1));return F===y.fromIndex?null:F}),On=ee(()=>{const C=(sn.value?Pa.value:o.groups).map(Pt=>Pt.projectName),_=We.value,F=qn.value;if(!_||F===null)return C;const _e=[...C],[lt]=_e.splice(_.fromIndex,1);return lt?(_e.splice(F,0,lt),_e):C}),No=ee(()=>{const y={};let C=0;for(const _ of On.value)y[_]=C,C+=Wn(_);return y}),hr=ee(()=>{let y=0;for(const C of On.value)y+=Wn(C);return{height:`${Math.max(0,y)}px`}});function Zr(y){if(Number.isNaN(y))return"n/a";const C=Math.abs(Date.now()-y);if(C<6e4)return r("now");const _=Math.floor(C/6e4);if(_<60)return`${_}m`;const F=Math.floor(_/60);return F<24?`${F}h`:`${Math.floor(F/24)}d`}function Ia(y){const C=jo.value.get(y.id);return Zr(typeof C=="number"?C:new Date(y.updatedAtIso||y.createdAtIso).getTime())}function Pr(y){const C=new Date(y).getTime();return Number.isNaN(C)?"":new Date(C).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Er(y){return yo.value.has(y)}function Xa(y){if(Er(y)){Ue.value=Ue.value.filter(C=>C!==y);return}Ue.value=[y,...Ue.value]}function Ra(y){Xa(y),$t()}function to(y){he.value="",a("select",y)}function _o(y){return no(y)>0}function no(y){var C;return((C=re.value[y])==null?void 0:C.length)??0}function wt(y){return Rn(y)>0}function Rn(y){var _;const C=Uo(y);return C?((_=H.value[C])==null?void 0:_.length)??0:0}function zn(y){if(y.length===0)return"";if(y.length>1){const F=y.filter(_e=>_e.status==="ACTIVE").length;return`${y.length} ${r("automations")} • ${F} ${r("active")}`}const[C]=y,_=C.status==="PAUSED"?"-":C.nextRunAtMs?new Date(C.nextRunAtMs).toLocaleString():r("Not scheduled");return`${C.name} • ${r("Next run")}: ${_}`}function ln(y){return zn(re.value[y]??[])}function oo(y){const C=Uo(y);return zn(C?H.value[C]??[]:[])}function Zo(y){return String(Math.max(0,y)).padStart(2,"0")}function mr(y,C){const _=typeof y=="number"?y:Number(y);return Number.isFinite(_)?Math.max(1,Math.floor(_)):C}function Jn(y){const[C,_]=y.split(":"),F=Math.min(23,Math.max(0,Number(C)||0)),_e=Math.min(59,Math.max(0,Number(_)||0));return`FREQ=DAILY;BYHOUR=${F};BYMINUTE=${_e}`}function Mt(y,C){const _=mr(y,1);return C==="minutes"?`FREQ=MINUTELY;INTERVAL=${_}`:C==="hours"?`FREQ=HOURLY;INTERVAL=${_}`:`FREQ=DAILY;INTERVAL=${_}`}function wn(y){return Object.fromEntries(y.split(";").map(C=>C.trim()).filter(Boolean).map(C=>{const[_,...F]=C.split("=");return[_.toUpperCase(),F.join("=").trim()]}).filter(([C,_])=>C&&_))}function Kt(y){var _e;const C=wn(y),_=(_e=C.FREQ)==null?void 0:_e.toUpperCase(),F=mr(C.INTERVAL,1);if(_==="DAILY"&&C.BYHOUR!==void 0&&C.BYMINUTE!==void 0&&F===1){const lt=Math.min(23,Math.max(0,Number(C.BYHOUR)||0)),Pt=Math.min(59,Math.max(0,Number(C.BYMINUTE)||0));return{mode:"daily",dailyTime:`${Zo(lt)}:${Zo(Pt)}`,interval:1,intervalUnit:"hours"}}return _==="MINUTELY"||_==="HOURLY"||_==="DAILY"&&C.INTERVAL!==void 0?{mode:"interval",dailyTime:"09:00",interval:F,intervalUnit:_==="MINUTELY"?"minutes":_==="HOURLY"?"hours":"days"}:{mode:"advanced",dailyTime:"09:00",interval:1,intervalUnit:"hours"}}function bn(y){var _e;const C=wn(y),_=(_e=C.FREQ)==null?void 0:_e.toUpperCase(),F=mr(C.INTERVAL,1);if(_==="DAILY"&&C.BYHOUR!==void 0&&C.BYMINUTE!==void 0&&F===1){const lt=Math.min(23,Math.max(0,Number(C.BYHOUR)||0)),Pt=Math.min(59,Math.max(0,Number(C.BYMINUTE)||0));return`${r("RRULE")}: ${y} · ${r("runs daily at")} ${Zo(lt)}:${Zo(Pt)}`}return _==="MINUTELY"?`${r("RRULE")}: ${y} · ${r("runs every")} ${F} ${r("minute(s)")}`:_==="HOURLY"?`${r("RRULE")}: ${y} · ${r("runs every")} ${F} ${r("hour(s)")}`:_==="DAILY"&&C.INTERVAL!==void 0?`${r("RRULE")}: ${y} · ${r("runs every")} ${F} ${r("day(s)")}`:y?`${r("RRULE")}: ${y}`:r("RRULE is required.")}function Sn(){const y=Ve.value;y.mode==="daily"?Re.value.rrule=Jn(y.dailyTime):y.mode==="interval"&&(Re.value.rrule=Mt(y.interval,y.intervalUnit))}function ro(y){y!=="minutes"&&y!=="hours"&&y!=="days"||(Ve.value={...Ve.value,intervalUnit:y},Sn())}function ao(y){y!=="ACTIVE"&&y!=="PAUSED"||(Re.value={...Re.value,status:y})}function ea(){Ve.value=Kt(Re.value.rrule)}function Mn(y){Ve.value={...Ve.value,mode:y},Sn()}function Za(y){y===o.selectedThreadId&&(a("copy-thread-chat",y),$t())}function Hn(y){a("fork-thread",y),$t()}function Lo(y){return`${r("start new thread")} ${co(y)}`}function vr(y){a("start-new-thread",y)}function ko(y){a("browse-thread-files",y),$t()}function Ir(y){a("save-thread-project",y),$t()}async function ta(y){var _,F;const C=((F=(_=yn.value.get(y))==null?void 0:_.cwd)==null?void 0:F.trim())??"";if($t(),!(!C||typeof navigator>"u"||!navigator.clipboard))try{await navigator.clipboard.writeText(C)}catch{}}function Oo(y,C){if(Pe.value===y&&De.value==="hover"){if(C){const _=C.relatedTarget,F=dr.value;if(_ instanceof Node&&F&&F.contains(_))return}$t()}}function fn(y){return Pe.value===y}function $t(){Pe.value="",De.value="hover",St.value={}}function Do(y){if(he.value="",Pe.value===y){$t();return}De.value="hover",Dn(),gn.value=!1,Pe.value=y,zt(()=>{To(y)})}function so(y,C){y.preventDefault(),he.value="",De.value="contextmenu",Pe.value=C}function Rr(y,C){dt.value=y,_t.value=C,nt.value=!0,$t(),zt(()=>{var _,F;(_=Tt.value)==null||_.focus(),(F=Tt.value)==null||F.select()})}function _n(){nt.value=!1,dt.value="",_t.value=""}function Ma(){const y=dt.value,C=_t.value.trim();!y||!C||(a("rename-thread",{threadId:y,title:C}),_n())}function I(y,C){he.value="",se.value=y,ne.value=C,gt.value=!0,$t()}function O(){gt.value=!1,se.value="",ne.value=""}async function V(){const y=se.value;y&&(Ut(y),O())}function ge(y){return he.value===y}function et(y){if(he.value!==y){he.value=y,$t();return}Ut(y),he.value=""}function Ut(y){var _,F;Ln.value.has(y)||(Te.value=[y,...Te.value]),he.value="",$t();const C=yn.value.get(y)??null;m({id:y,title:((_=C==null?void 0:C.title)==null?void 0:_.trim())||"(untitled)",cwd:((F=C==null?void 0:C.cwd)==null?void 0:F.trim())??"",projectName:wo.value.get(y)??""}),Ue.value=Ue.value.filter(_e=>_e!==y),a("archive",y),_o(y)&&(Tm(y).catch(()=>{}),re.value=uo(re.value,y))}function jt(y){var _;$.value="thread",D.value=y,G.value="",oe.value=!1,ve.value="",ce.value="";const C=(_=re.value[y])==null?void 0:_[0];C?Fo(C.id):hn(),Be.value=!0,$t()}function pn(y){var F;const C=Uo(y);if(!C){$.value="project",D.value="",G.value="",oe.value=!1,ve.value=r("Project automation requires a resolved absolute project path."),ce.value="",Be.value=!0,Dn();return}$.value="project",D.value="",G.value=C,oe.value=!1,ve.value="",ce.value="";const _=(F=H.value[C])==null?void 0:F[0];_?Fo(_.id):hn(),Be.value=!0,Dn()}function io(y){$.value=y.scope,D.value=y.scope==="thread"?y.target:"",G.value=y.scope==="project"?y.target:"",oe.value=!1,ve.value="",ce.value="",y.scope==="project"?H.value=ii(H.value,y.target,y.automation):re.value=er(re.value,y.target,y.automation),Fo(y.automation.id),Be.value=!0,Dn(),$t()}function Mr(){var y;oe.value=!0,Ce.value="thread",we.value=((y=Ze.value[0])==null?void 0:y.value)??"",$.value="thread",D.value="",G.value="",ve.value="",ce.value="",hn(),Be.value=!0,Dn(),$t()}function Yt(y){var C;Ce.value=y,we.value="",$.value=y==="project"?"project":"thread",we.value=((C=W.value[0])==null?void 0:C.value)??""}function hn(){ie.value="",le.value="create",ve.value="",ce.value="",Re.value={name:$.value==="project"?"Project automation":"Thread automation",prompt:"",rrule:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",status:"ACTIVE"},Ve.value=Kt(Re.value.rrule)}function Fo(y){const C=it.value.find(_=>_.id===y);C&&(ie.value=C.id,le.value="edit",ve.value="",ce.value="",Re.value={name:C.name,prompt:C.prompt,rrule:C.rrule,status:C.status},Ve.value=Kt(C.rrule))}function lo(){Be.value=!1,$.value="thread",D.value="",G.value="",ie.value="",ve.value="",ce.value="",be.value=!1,Oe.value=!1}function uo(y,C){return Object.fromEntries(Object.entries(y).filter(([_])=>_!==C))}function er(y,C,_){const F=y[C]??[],_e=F.findIndex(Pt=>Pt.id===_.id),lt=[...F];return _e>=0?lt.splice(_e,1,_):lt.push(_),{...y,[C]:lt}}function Is(y,C,_){const F=(y[C]??[]).filter(_e=>_e.id!==_);return F.length>0?{...y,[C]:F}:uo(y,C)}function $a(y,C){return Object.fromEntries(Object.entries(y).filter(([_])=>_!==C))}function ii(y,C,_){const F=y[C]??[],_e=F.findIndex(Pt=>Pt.id===_.id),lt=[...F];return _e>=0?lt.splice(_e,1,_):lt.push(_),{...y,[C]:lt}}async function Jt(){H.value=await m1()}async function en(){let y=D.value,C=G.value;be.value=!0,ve.value="",ce.value="";try{if(Sn(),oe.value&&le.value==="create"&&(Ce.value==="thread"?(y=we.value,C="",$.value="thread",D.value=y,G.value=""):(C=we.value,y="",$.value="project",D.value="",G.value=C)),$.value==="thread"&&!y)throw new Error(r("Select a chat target for this automation"));if($.value==="project"&&!C)throw new Error(r("Select a project target for this automation"));const _={id:ie.value||void 0,name:Re.value.name,prompt:Re.value.prompt,rrule:Re.value.rrule,status:Re.value.status},F=$.value==="project"?await g1({..._,projectName:C}):await v1({..._,threadId:y});$.value==="project"?await Jt():re.value=er(re.value,y,F),a("automations-changed"),Fo(F.id),ce.value=r("Automation saved."),be.value=!1}catch(_){ve.value=_ instanceof Error?_.message:r("Failed to save automation"),be.value=!1}}async function li(){const y=D.value,C=G.value,_=ie.value;if(_&&!($.value==="thread"&&!y)&&!($.value==="project"&&!C)){be.value=!0,ve.value="",ce.value="";try{$.value==="project"?(await Sm(C,_),await Jt()):(await Tm(y,_),re.value=Is(re.value,y,_));const F=it.value[0];F?Fo(F.id):hn(),a("automations-changed"),be.value=!1}catch(F){ve.value=F instanceof Error?F.message:r("Failed to remove automation"),be.value=!1}}}async function Rs(){const y=D.value,C=ie.value;if(!(!y||!C)){Oe.value=!0,ve.value="",ce.value="";try{await y1(y,C),ce.value=r("Automation run queued.")}catch(_){ve.value=_ instanceof Error?_.message:r("Failed to run automation")}finally{Oe.value=!1}}}function co(y){return o.projectDisplayNameById[y]??y}t({openAutomationEditorFromPanel:io,openAutomationCreatorFromPanel:Mr,openRenameThreadDialog:Rr,openRecycleBin:B});function gr(y){return y.includes("/")||y.includes("\\")}function Wi(y){return gr(y)?y:co(y)}function yr(y){const C=xr(y);if(!C)return!1;let _=0;for(const F of o.groups)if(gr(F.projectName)&&xr(F.projectName)===C&&(_+=1,_>1))return!0;return!1}function ui(y){const C=o.projectDisplayNameById[y.projectName],_=co(y.projectName),F=y.projectName;if(C&&!gr(F)&&F!==_)return _.includes(F)||/^[0-9a-f]{8}-[0-9a-f-]{27,}$/iu.test(F)?_:`${_} ${F}`;if(C&&gr(F)){const Pt=xr(F),Bo=xr(Tl(F)),Qt=yr(F)?Bo:Pt;return Qt&&Qt!==_?`${_} ${Qt}`:_}if(!_.includes("/")&&!_.includes("\\"))return _;const _e=xr(_)||_,lt=xr(Tl(_));return lt.startsWith(".")&<!==_e?`${_e} ${lt}`:y.threads.length>0||!yr(F)?_e:lt?`${_e} ${lt}`:_e}function ja(y){return Ae.value===y}function Dn(){Ae.value="",ct.value="actions",Ge.value=""}function es(){const y=!gn.value;y&&(Dn(),$t()),gn.value=y}function ci(y){mt.value=y,gn.value=!1}function di(){Se.value=!Se.value}function Vi(y){Fe.value=y}function Ms(y){a("request-project-git-status",y),zt(()=>{ns(y)})}function Nl(y){if(Ae.value===y){Dn();return}$t(),gn.value=!1,Ae.value=y,ct.value="actions",Ge.value=co(y),Ms(y)}function fi(y){$t(),gn.value=!1,Ae.value=y,ct.value="actions",Ge.value=co(y),Ms(y)}function $r(y){return o.projectDisplayNameById[y.projectName]??ui(y)}function na(y){$t();const C=y.projectName;Ae.value=C,ct.value="rename",Ge.value=$r(y),zt(()=>{ns(C)})}function wr(y){a("browse-project-files",y),Dn()}function oa(y){a("save-project",y),Dn()}function Na(y){a("create-project-worktree",y),Dn()}function br(y){a("rename-project",{projectName:y,displayName:Ge.value})}function La(y){const C=Uo(y);if(a("remove-project",y),C&&wt(y)){Ee.value="";const _=H.value;H.value=$a(H.value,C),Sm(C).then(Jt).catch(async F=>{H.value=_;const _e=F instanceof Error?F.message:r("Failed to delete project automation");Ee.value=_e,s(_e);try{await Jt()}catch{H.value=_}}).finally(()=>{a("automations-changed")})}Dn()}function Uo(y){var _;const C=((_=o.projectCwdByName[y])==null?void 0:_.trim())??"";return cT(C)?C:""}function ts(y,C){if(!y.altKey||y.key!=="ArrowUp"&&y.key!=="ArrowDown")return;const _=o.groups.findIndex(lt=>lt.projectName===C);if(_<0)return;const F=y.key==="ArrowUp"?-1:1,_e=Math.max(0,Math.min(_+F,o.groups.length-1));_e!==_&&(y.preventDefault(),a("reorder-project",{projectName:C,toIndex:_e}))}function jr(y){return ae.value[y]===!0}function Co(y){return z.value[y]===!0}function Nr(y){ae.value={...ae.value,[y]:!jr(y)}}function qe(){Me.value=!Me.value}function ke(y){if(Vt.value===y){Vt.value="";return}z.value={...z.value,[y]:!Co(y)}}function Wn(y){const C=Bn.value[y]??0,_=We.value,_e=((_==null?void 0:_.projectName)===y?_.groupHeight:null)??C,lt=Co(y)?0:Wm;return Math.max(0,_e+lt)}function Oa(y,C){const _=C instanceof HTMLElement?C:C&&"$el"in C&&C.$el instanceof HTMLElement?C.$el:null;if(_){vo.set(y,_);return}vo.delete(y)}function _r(y,C){const _=C instanceof HTMLElement?C:C&&"$el"in C&&C.$el instanceof HTMLElement?C.$el:null;if(_){Qn.set(y,_);return}Qn.delete(y)}function $s(y){let C=y.parentElement;for(;C;){const _=window.getComputedStyle(C),F=_.overflowY||_.overflow;if(F==="auto"||F==="scroll"||F==="hidden"||F==="clip")return C.getBoundingClientRect();C=C.parentElement}return new DOMRect(0,0,window.innerWidth,window.innerHeight)}function un(y,C){const _=y.getBoundingClientRect(),F=$s(y),_e=6,lt=F.bottom-_.bottom,Pt=_.top-F.top;return lt>=C+_e?"down":Pt>lt?"up":"down"}function ra(y,C){const _=Qn.get(y);if(!_)return"down";const F=un(_,C);return He.value={...He.value,[y]:F},F}function Ll(y){return He.value[y]??"down"}function ns(y){const C=vo.get(y);if(!C)return;const _=C.querySelector(".project-menu-panel"),F=(_==null?void 0:_.getBoundingClientRect().height)??0;Ye.value={...Ye.value,[y]:un(C,F)}}function xn(y,C,_){return Math.min(Math.max(y,C),_)}function To(y){const C=Qn.get(y);if(!C)return;const _=dr.value,F=_==null?void 0:_.getBoundingClientRect(),_e=(F==null?void 0:F.height)||(_==null?void 0:_.offsetHeight)||112,lt=(F==null?void 0:F.width)||(_==null?void 0:_.offsetWidth)||160,Pt=ra(y,_e),Bo=C.getBoundingClientRect(),Qt=8,Fn=4,kn=Math.max(Qt,window.innerWidth-lt-Qt),sr=xn(Bo.right-lt,Qt,kn),Fr=xn(Pt==="up"?Bo.top-_e-Fn:Bo.bottom+Fn,Qt,Math.max(Qt,window.innerHeight-_e-Qt));St.value={left:`${Math.round(sr)}px`,top:`${Math.round(Fr)}px`}}function fo(){const y=Pe.value;y&&To(y)}function tr(){window.addEventListener("resize",fo),document.addEventListener("scroll",fo,!0)}function $n(){window.removeEventListener("resize",fo),document.removeEventListener("scroll",fo,!0)}function os(y){const C=Ae.value;if(!C)return!1;const _=vo.get(C);if(!_)return!1;if((typeof y.composedPath=="function"?y.composedPath():[]).includes(_))return!0;const _e=y.target;return _e instanceof Node?_.contains(_e):!1}function aa(y){const C=Pe.value;if(!C)return!1;const _=Qn.get(C);if(!_)return!1;const F=typeof y.composedPath=="function"?y.composedPath():[];if(F.includes(_))return!0;const _e=dr.value;if(_e&&F.includes(_e))return!0;const lt=y.target;return lt instanceof Node?!!(_.contains(lt)||_e&&_e.contains(lt)):!1}function Lr(y){if(gn.value){const C=Qo.value,_=typeof y.composedPath=="function"?y.composedPath():[];!!C&&(_.includes(C)||y.target instanceof Node&&C.contains(y.target))||(gn.value=!1)}Ae.value&&(os(y)||Dn(),Pe.value&&(aa(y)||$t()))}function pi(y){Ae.value&&!os(y)&&Dn(),Pe.value&&!aa(y)&&$t()}function nr(){gn.value&&(gn.value=!1),Ae.value&&Dn(),Pe.value&&$t()}function or(){window.addEventListener("pointerdown",Lr,{capture:!0}),window.addEventListener("focusin",pi,{capture:!0}),window.addEventListener("blur",nr)}function kr(){window.removeEventListener("pointerdown",Lr,{capture:!0}),window.removeEventListener("focusin",pi,{capture:!0}),window.removeEventListener("blur",nr)}function cn(y,C){const _=C.getBoundingClientRect().height;if(!Number.isFinite(_)||_<=0)return;const F=Bn.value[y];F!==void 0&&Math.abs(F-_)<.5||(Bn.value={...Bn.value,[y]:_})}function sa(y,C){const _=Jo.get(y);_&&_!==C&&nn&&nn.unobserve(_);const F=C instanceof HTMLElement?C:C&&"$el"in C&&C.$el instanceof HTMLElement?C.$el:null;if(F){Jo.set(y,F),go.set(F,y),cn(y,F),nn==null||nn.observe(F);return}_&&(nn==null||nn.unobserve(_)),Jo.delete(y)}function Da(y,C){if(y.button!==0||sn.value||Le.value||We.value)return;const _=o.groups.findIndex(Pt=>Pt.projectName===C),F=Jo.get(C);if(_<0||!F)return;const _e=F.getBoundingClientRect(),lt=Co(C)?0:Wm;Le.value={projectName:C,fromIndex:_,startClientX:y.clientX,startClientY:y.clientY,pointerOffsetY:y.clientY-_e.top,groupLeft:_e.left,groupWidth:_e.width,groupHeight:_e.height,groupOuterHeight:_e.height+lt},y.preventDefault(),ia()}function ia(){window.addEventListener("mousemove",rr),window.addEventListener("mouseup",la),window.addEventListener("keydown",Fa)}function rs(){window.removeEventListener("mousemove",rr),window.removeEventListener("mouseup",la),window.removeEventListener("keydown",Fa)}function rr(y){ot={clientX:y.clientX,clientY:y.clientY},Ol()}function la(y){hi({clientX:y.clientX,clientY:y.clientY});const C=We.value;if(C&&qn.value!==null){const _=o.groups.findIndex(F=>F.projectName===C.projectName);if(_>=0){const F=qn.value;F!==_&&a("reorder-project",{projectName:C.projectName,toIndex:F})}}as({preserveToggleSuppression:!!C})}function Fa(y){y.key==="Escape"&&(!Le.value&&!We.value||(y.preventDefault(),as()))}function as(y={}){Ft!==null&&(window.cancelAnimationFrame(Ft),Ft=null),ot=null,Le.value=null,We.value=null,y.preserveToggleSuppression||(Vt.value=""),rs()}function Ol(){Ft===null&&(Ft=window.requestAnimationFrame(()=>{if(Ft=null,!ot)return;const y=ot;ot=null,hi(y)}))}function hi(y){const C=Le.value;if(!We.value&&C){const _=y.clientX-C.startClientX,F=y.clientY-C.startClientY;if(Math.hypot(_,F)<qE)return;Dn(),Vt.value=C.projectName,We.value={projectName:C.projectName,fromIndex:C.fromIndex,pointerOffsetY:C.pointerOffsetY,groupLeft:C.groupLeft,groupWidth:C.groupWidth,groupHeight:C.groupHeight,groupOuterHeight:C.groupOuterHeight,ghostTop:y.clientY-C.pointerOffsetY,dropTargetIndexFull:null}}We.value&&js(y)}function js(y){const C=We.value;if(!C)return;if(C.ghostTop=y.clientY-C.pointerOffsetY,!Or(y)){C.dropTargetIndexFull=null;return}const _=y.clientY,F=de.value;if(!F){C.dropTargetIndexFull=null;return}const _e=F.getBoundingClientRect(),lt=new Map(o.groups.map((Fn,kn)=>[Fn.projectName,kn])),Pt=o.groups.map(Fn=>Fn.projectName).filter(Fn=>Fn!==C.projectName);let Bo=0,Qt=o.groups.length;for(const Fn of Pt){const kn=lt.get(Fn);if(kn===void 0)continue;const sr=Wn(Fn),Fr=_e.top+Bo+sr/2;if(_<Fr){Qt=kn;break}Bo+=sr}C.dropTargetIndexFull=Qt}function Or(y){const C=de.value;if(!C)return!1;const _=C.getBoundingClientRect(),F=y.clientX>=_.left&&y.clientX<=_.right,_e=y.clientY>=_.top-32&&y.clientY<=_.bottom+32;return F&&_e}function Dr(y){var C;return((C=We.value)==null?void 0:C.projectName)===y}function ua(y){const C=We.value,_=No.value[y]??0,F=Pe.value?wo.value.get(Pe.value)??"":"",_e=Ae.value===y||F===y;return!C||C.projectName!==y?{position:"absolute",top:"0",left:"0",right:"0",zIndex:_e?"40":"1",transform:`translate3d(0, ${_}px, 0)`,willChange:"transform",transition:"transform 180ms ease"}:{position:"fixed",top:"0",left:`${C.groupLeft}px`,width:`${C.groupWidth}px`,height:`${C.groupHeight}px`,zIndex:"50",pointerEvents:"none",transform:`translate3d(0, ${C.ghostTop}px, 0)`,willChange:"transform",transition:"transform 0ms linear"}}function ss(y){return $o.value.get(y.projectName)??[]}function Gi(y){if(sn.value)return ss(y);if(Co(y.projectName))return[];const C=ss(y);return jr(y.projectName)?C:C.slice(0,10)}function Zt(y){return sn.value?!1:!Co(y.projectName)&&ss(y).length>10}function So(y){return ss(y).length>0}function An(y){var C;return!!y.pendingRequestState||y.inProgress||y.unread||((C=y.externalSession)==null?void 0:C.active)===!0}function Ns(y){return y.pendingRequestState==="approval"?r("Awaiting approval"):r("Awaiting response")}function ar(y){var C;return((C=y.externalSession)==null?void 0:C.active)===!0?"external":y.pendingRequestState==="approval"?"awaiting-approval":y.pendingRequestState==="response"?"awaiting-response":y.inProgress?"working":y.unread?"unread":"idle"}rt(()=>o.groups.map(y=>y.projectName),y=>{var _e,lt;const C=((_e=We.value)==null?void 0:_e.projectName)??((lt=Le.value)==null?void 0:lt.projectName)??"";C&&!o.groups.some(Pt=>Pt.projectName===C)&&as();const _=new Set(y),F=Object.fromEntries(Object.entries(Bn.value).filter(([Pt])=>_.has(Pt)));Object.keys(F).length!==Object.keys(Bn.value).length&&(Bn.value=F)}),rt(()=>{const y=Ae.value;return y?o.projectGitRepoByName[y]:void 0},()=>{const y=Ae.value;y&&zt(()=>{Ae.value===y&&ns(y)})});const is=ee(()=>gn.value||Ae.value!==""||Pe.value!=="");return rt(is,y=>{if(y){or();return}kr()}),rt(Pe,y=>{if(!y){$n();return}tr(),zt(()=>{To(y)})}),zi(()=>{for(const y of Jo.values())nn==null||nn.unobserve(y);Jo.clear(),vo.clear(),$n(),kr(),as()}),(y,C)=>(T(),A("section",{class:Ke(["thread-tree-root",{"chats-first":Se.value}])},[Rt.value.length>0?(T(),A("section",Zx,[xe(ha,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":Z.value,onClick:Yn},{left:tt(()=>[Z.value?(T(),at(ni,{key:1,class:"thread-icon"})):(T(),at(yc,{key:0,class:"thread-icon"}))]),default:tt(()=>[f("span",eA,k(v(r)("Pinned")),1)]),_:1},8,["aria-expanded"]),Z.value?(T(),A("ul",tA,[(T(!0),A(ze,null,kt(Rt.value,_=>(T(),A("li",{key:_.id,class:"thread-row-item","data-menu-open":fn(_.id)?"true":"false"},[xe(ha,{class:"thread-row","data-active":_.id===e.selectedThreadId,"data-pinned":Er(_.id),"data-menu-open":fn(_.id)?"true":"false","force-right-hover":fn(_.id),onClick:F=>to(_.id),onMouseleave:F=>Oo(_.id,F),onContextmenu:F=>so(F,_.id)},{left:tt(()=>[f("span",oA,[An(_)?(T(),A("span",{key:0,class:"thread-status-indicator","data-state":ar(_)},null,8,rA)):J("",!0),f("button",{class:"thread-delete-button",type:"button","data-confirming":ge(_.id),title:ge(_.id)?v(r)("Confirm delete"):v(r)("Delete thread"),onClick:Qe(F=>et(_.id),["stop"])},[ge(_.id)?(T(),A("span",sA,k(v(r)("Confirm")),1)):(T(),at(du,{key:1,class:"thread-icon"}))],8,aA)])]),right:tt(()=>[f("span",hA,k(Ia(_)),1)]),"right-hover":tt(()=>[f("div",{ref_for:!0,ref:F=>_r(_.id,F),class:"thread-menu-wrap"},[f("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:Qe(F=>Do(_.id),["stop"])},[xe(cl,{class:"thread-icon"})],8,mA)],512)]),default:tt(()=>[f("button",{class:"thread-main-button",type:"button",onClick:Qe(F=>to(_.id),["stop"])},[f("span",lA,[f("span",uA,[f("span",cA,k(_.title),1),_.hasWorktree?(T(),at(Oi,{key:0,class:"thread-row-worktree-icon",title:v(r)("Worktree thread")},null,8,["title"])):J("",!0),_o(_.id)?(T(),A("span",{key:1,class:"thread-row-automation-chip",title:ln(_.id)},[xe(ga,{class:"thread-row-automation-icon"}),no(_.id)>1?(T(),A("span",fA,k(no(_.id)),1)):J("",!0)],8,dA)):J("",!0),_.pendingRequestState?(T(),A("span",{key:2,class:"thread-row-request-chip","data-state":_.pendingRequestState},k(Ns(_)),9,pA)):J("",!0)])])],8,iA)]),_:2},1032,["data-active","data-pinned","data-menu-open","force-right-hover","onClick","onMouseleave","onContextmenu"])],8,nA))),128))])):J("",!0)])):J("",!0),f("section",vA,[xe(ha,{as:"button",class:"thread-tree-header-row section-toggle-row",type:"button","aria-expanded":X.value,onClick:bo},{left:tt(()=>[X.value?(T(),at(ni,{key:1,class:"thread-icon"})):(T(),at(yc,{key:0,class:"thread-icon"}))]),right:tt(()=>[f("div",{ref_key:"organizeMenuWrapRef",ref:Qo,class:"organize-menu-wrap"},[f("button",{class:"organize-menu-trigger",type:"button","aria-expanded":gn.value,"aria-label":v(r)("Organize threads"),title:v(r)("Organize threads"),onClick:Qe(es,["stop"])},[xe(cl,{class:"thread-icon"})],8,yA),gn.value?(T(),A("div",{key:0,class:"organize-menu-panel",onClick:C[4]||(C[4]=Qe(()=>{},["stop"]))},[f("p",wA,k(v(r)("Organize")),1),f("button",{class:"organize-menu-item","data-active":mt.value==="project",type:"button",onClick:C[0]||(C[0]=_=>ci("project"))},[f("span",null,k(v(r)("By project")),1),mt.value==="project"?(T(),A("span",_A,"✓")):J("",!0)],8,bA),f("button",{class:"organize-menu-item","data-active":mt.value==="chronological",type:"button",onClick:C[1]||(C[1]=_=>ci("chronological"))},[f("span",null,k(v(r)("Chronological list")),1),mt.value==="chronological"?(T(),A("span",CA,"✓")):J("",!0)],8,kA),f("button",{class:"organize-menu-item","data-active":Se.value,type:"button",onClick:di},[f("span",null,k(v(r)("Chats first")),1),Se.value?(T(),A("span",SA,"✓")):J("",!0)],8,TA),C[31]||(C[31]=f("div",{class:"organize-menu-separator"},null,-1)),f("p",xA,k(v(r)("Sort by")),1),f("button",{class:"organize-menu-item","data-active":Fe.value==="created",type:"button",onClick:C[2]||(C[2]=_=>Vi("created"))},[f("span",null,k(v(r)("Created")),1),Fe.value==="created"?(T(),A("span",PA,"✓")):J("",!0)],8,AA),f("button",{class:"organize-menu-item","data-active":Fe.value==="updated",type:"button",onClick:C[3]||(C[3]=_=>Vi("updated"))},[f("span",null,k(v(r)("Updated")),1),Fe.value==="updated"?(T(),A("span",IA,"✓")):J("",!0)],8,EA),C[32]||(C[32]=f("div",{class:"organize-menu-separator"},null,-1)),f("button",{class:"organize-menu-item",type:"button",onClick:B},[f("span",null,k(v(r)("Recycle bin")),1)])])):J("",!0)],512)]),default:tt(()=>[f("span",gA,k(v(r)("Projects")),1)]),_:1},8,["aria-expanded"]),X.value?(T(),A(ze,{key:0},[Ee.value?(T(),A("p",RA,k(Ee.value),1)):J("",!0),sn.value&&Pa.value.length===0?(T(),A("p",MA,k(v(r)("No matching threads")),1)):e.isLoading&&e.groups.length===0?(T(),A("p",$A,k(v(r)("Loading threads...")),1)):Ja.value?(T(),A("ul",jA,[(T(!0),A(ze,null,kt(Kn.value,_=>(T(),A("li",{key:_.id,class:"thread-row-item","data-menu-open":fn(_.id)?"true":"false"},[xe(ha,{class:"thread-row","data-active":_.id===e.selectedThreadId,"data-pinned":Er(_.id),"data-menu-open":fn(_.id)?"true":"false","force-right-hover":fn(_.id),onClick:F=>to(_.id),onMouseleave:F=>Oo(_.id,F),onContextmenu:F=>so(F,_.id)},{left:tt(()=>[f("span",LA,[An(_)?(T(),A("span",{key:0,class:"thread-status-indicator","data-state":ar(_)},null,8,OA)):J("",!0),f("button",{class:"thread-delete-button",type:"button","data-confirming":ge(_.id),title:ge(_.id)?v(r)("Confirm delete"):v(r)("Delete thread"),onClick:Qe(F=>et(_.id),["stop"])},[ge(_.id)?(T(),A("span",FA,k(v(r)("Confirm")),1)):(T(),at(du,{key:1,class:"thread-icon"}))],8,DA)])]),right:tt(()=>[f("span",GA,k(Ia(_)),1)]),"right-hover":tt(()=>[f("div",{ref_for:!0,ref:F=>_r(_.id,F),class:"thread-menu-wrap"},[f("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:Qe(F=>Do(_.id),["stop"])},[xe(cl,{class:"thread-icon"})],8,KA)],512)]),default:tt(()=>[f("button",{class:"thread-main-button",type:"button",onClick:Qe(F=>to(_.id),["stop"])},[f("span",BA,[f("span",qA,[f("span",zA,k(_.title),1),_.hasWorktree?(T(),at(Oi,{key:0,class:"thread-row-worktree-icon",title:v(r)("Worktree thread")},null,8,["title"])):J("",!0),_o(_.id)?(T(),A("span",{key:1,class:"thread-row-automation-chip",title:ln(_.id)},[xe(ga,{class:"thread-row-automation-icon"}),no(_.id)>1?(T(),A("span",WA,k(no(_.id)),1)):J("",!0)],8,HA)):J("",!0),_.pendingRequestState?(T(),A("span",{key:2,class:"thread-row-request-chip","data-state":_.pendingRequestState},k(Ns(_)),9,VA)):J("",!0)])])],8,UA)]),_:2},1032,["data-active","data-pinned","data-menu-open","force-right-hover","onClick","onMouseleave","onContextmenu"])],8,NA))),128))])):(T(),A("div",{key:4,ref_key:"groupsContainerRef",ref:de,class:"thread-tree-groups",style:Vr(hr.value)},[(T(!0),A(ze,null,kt(Pa.value,_=>(T(),A("article",{key:_.projectName,ref_for:!0,ref:F=>sa(_.projectName,F),class:"project-group","data-project-name":_.projectName,"data-expanded":!Co(_.projectName),"data-dragging":Dr(_.projectName),style:Vr(ua(_.projectName))},[xe(ha,{as:"div",class:"project-header-row",role:"button",tabindex:"0",onClick:F=>ke(_.projectName),onContextmenu:Qe(F=>fi(_.projectName),["prevent"]),onKeydown:[F=>ts(F,_.projectName),Pn(Qe(F=>ke(_.projectName),["prevent"]),["enter"]),Pn(Qe(F=>ke(_.projectName),["prevent"]),["space"])]},{left:tt(()=>[f("span",JA,[f("span",QA,[Co(_.projectName)?(T(),at(Sp,{key:0,class:"thread-icon"})):(T(),at(tx,{key:1,class:"thread-icon"}))]),f("span",XA,[Co(_.projectName)?(T(),at(yc,{key:0,class:"thread-icon"})):(T(),at(ni,{key:1,class:"thread-icon"}))])])]),right:tt(()=>[f("div",oP,[f("div",{ref_for:!0,ref:F=>Oa(_.projectName,F),class:"project-menu-wrap"},[f("button",{class:"project-menu-trigger",type:"button",title:"project_menu",onClick:Qe(F=>Nl(_.projectName),["stop"])},[xe(cl,{class:"thread-icon"})],8,rP),ja(_.projectName)?(T(),A("div",{key:0,class:"project-menu-panel","data-open-direction":Ye.value[_.projectName]??"down",onClick:C[6]||(C[6]=Qe(()=>{},["stop"]))},[ct.value==="actions"?(T(),A(ze,{key:0},[f("button",{class:"project-menu-item",type:"button",onClick:F=>wr(_.projectName)},k(v(r)("Browse files")),9,sP),f("button",{class:"project-menu-item",type:"button",onClick:F=>oa(_.projectName)},k(v(r)("Export Project")),9,iP),f("button",{class:"project-menu-item",type:"button",onClick:F=>pn(_.projectName)},k(wt(_.projectName)?v(r)("Manage automations…"):v(r)("Add automation…")),9,lP),e.projectGitRepoByName[_.projectName]?(T(),A("button",{key:0,class:"project-menu-item",type:"button",onClick:F=>Na(_.projectName)},k(v(r)("New worktree")),9,uP)):J("",!0),f("button",{class:"project-menu-item",type:"button",onClick:F=>na(_)},k(v(r)("Rename project")),9,cP),f("button",{class:"project-menu-item project-menu-item-danger",type:"button",onClick:F=>La(_.projectName)},k(v(r)("Remove")),9,dP)],64)):(T(),A(ze,{key:1},[f("label",fP,k(v(r)("Project name")),1),Nt(f("input",{"onUpdate:modelValue":C[5]||(C[5]=F=>Ge.value=F),class:"project-menu-input",type:"text",onInput:F=>br(_.projectName)},null,40,pP),[[an,Ge.value]])],64))],8,aP)):J("",!0)],512),f("button",{class:"thread-start-button",type:"button","aria-label":Lo(_.projectName),title:Lo(_.projectName),onClick:Qe(F=>vr(_.projectName),["stop"])},[xe(Rl,{class:"thread-icon"})],8,hP)])]),default:tt(()=>[f("span",{class:"project-main-button","data-dragging-handle":Dr(_.projectName),onMousedown:Qe(F=>Da(F,_.projectName),["left"])},[f("span",{class:"project-title",title:Wi(_.projectName)},k(ui(_)),9,eP),wt(_.projectName)?(T(),A("span",{key:0,class:"thread-row-automation-chip",title:oo(_.projectName)},[xe(ga,{class:"thread-row-automation-icon"}),Rn(_.projectName)>1?(T(),A("span",nP,k(Rn(_.projectName)),1)):J("",!0)],8,tP)):J("",!0)],40,ZA)]),_:2},1032,["onClick","onContextmenu","onKeydown"]),So(_)?(T(),A("ul",mP,[(T(!0),A(ze,null,kt(Gi(_),F=>(T(),A("li",{key:F.id,class:"thread-row-item","data-menu-open":fn(F.id)?"true":"false"},[xe(ha,{class:"thread-row","data-active":F.id===e.selectedThreadId,"data-pinned":Er(F.id),"data-menu-open":fn(F.id)?"true":"false","force-right-hover":fn(F.id),onClick:_e=>to(F.id),onMouseleave:_e=>Oo(F.id,_e),onContextmenu:_e=>so(_e,F.id)},{left:tt(()=>[f("span",gP,[An(F)?(T(),A("span",{key:0,class:"thread-status-indicator","data-state":ar(F)},null,8,yP)):J("",!0),f("button",{class:"thread-delete-button",type:"button","data-confirming":ge(F.id),title:ge(F.id)?v(r)("Confirm delete"):v(r)("Delete thread"),onClick:Qe(_e=>et(F.id),["stop"])},[ge(F.id)?(T(),A("span",bP,k(v(r)("Confirm")),1)):(T(),at(du,{key:1,class:"thread-icon"}))],8,wP)])]),right:tt(()=>[f("span",PP,k(Ia(F)),1)]),"right-hover":tt(()=>[f("div",{ref_for:!0,ref:_e=>_r(F.id,_e),class:"thread-menu-wrap"},[f("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:Qe(_e=>Do(F.id),["stop"])},[xe(cl,{class:"thread-icon"})],8,EP)],512)]),default:tt(()=>[f("button",{class:"thread-main-button",type:"button",onClick:Qe(_e=>to(F.id),["stop"])},[f("span",kP,[f("span",CP,[f("span",TP,k(F.title),1),F.hasWorktree?(T(),at(Oi,{key:0,class:"thread-row-worktree-icon",title:v(r)("Worktree thread")},null,8,["title"])):J("",!0),_o(F.id)?(T(),A("span",{key:1,class:"thread-row-automation-chip",title:ln(F.id)},[xe(ga,{class:"thread-row-automation-icon"}),no(F.id)>1?(T(),A("span",xP,k(no(F.id)),1)):J("",!0)],8,SP)):J("",!0),F.pendingRequestState?(T(),A("span",{key:2,class:"thread-row-request-chip","data-state":F.pendingRequestState},k(Ns(F)),9,AP)):J("",!0)])])],8,_P)]),_:2},1032,["data-active","data-pinned","data-menu-open","force-right-hover","onClick","onMouseleave","onContextmenu"])],8,vP))),128))])):(T(),at(ha,{key:1,as:"p",class:"project-empty-row"},{left:tt(()=>[...C[33]||(C[33]=[f("span",{class:"project-empty-spacer"},null,-1)])]),default:tt(()=>[f("span",IP,k(v(r)("No threads")),1)]),_:1})),Zt(_)?(T(),at(ha,{key:2,class:"thread-show-more-row"},{left:tt(()=>[...C[34]||(C[34]=[f("span",{class:"thread-show-more-spacer"},null,-1)])]),default:tt(()=>[f("button",{class:"thread-show-more-button",type:"button",onClick:F=>Nr(_.projectName)},k(jr(_.projectName)?"Show less":"Show more"),9,RP)]),_:2},1024)):J("",!0)],12,YA))),128))],4))],64)):J("",!0)]),f("section",MP,[xe(ha,{as:"button",class:"section-toggle-row",type:"button","aria-expanded":ye.value,onClick:eo},{left:tt(()=>[ye.value?(T(),at(ni,{key:1,class:"thread-icon"})):(T(),at(yc,{key:0,class:"thread-icon"}))]),right:tt(()=>[f("div",jP,[f("button",{class:"chats-section-action",type:"button","aria-label":v(r)("New chat"),title:v(r)("New chat"),onClick:C[7]||(C[7]=Qe(_=>y.$emit("start-new-chat"),["stop"]))},[xe(Rl,{class:"thread-icon"})],8,NP)])]),default:tt(()=>[f("span",$P,k(v(r)("Chats")),1)]),_:1},8,["aria-expanded"]),ye.value&&In.value.length===0?(T(),A("p",LP,k(v(r)("No chats")),1)):ye.value?(T(),A("ul",OP,[(T(!0),A(ze,null,kt(Qa.value,_=>(T(),A("li",{key:_.id,class:"thread-row-item","data-menu-open":fn(_.id)?"true":"false"},[xe(ha,{class:"thread-row","data-active":_.id===e.selectedThreadId,"data-pinned":Er(_.id),"data-menu-open":fn(_.id)?"true":"false","force-right-hover":fn(_.id),onClick:F=>to(_.id),onMouseleave:F=>Oo(_.id,F),onContextmenu:F=>so(F,_.id)},{left:tt(()=>[f("span",FP,[An(_)?(T(),A("span",{key:0,class:"thread-status-indicator","data-state":ar(_)},null,8,UP)):J("",!0),f("button",{class:"thread-delete-button",type:"button","data-confirming":ge(_.id),title:ge(_.id)?v(r)("Confirm delete"):v(r)("Delete thread"),onClick:Qe(F=>et(_.id),["stop"])},[ge(_.id)?(T(),A("span",qP,k(v(r)("Confirm")),1)):(T(),at(du,{key:1,class:"thread-icon"}))],8,BP)])]),right:tt(()=>[f("span",JP,k(Ia(_)),1)]),"right-hover":tt(()=>[f("div",{ref_for:!0,ref:F=>_r(_.id,F),class:"thread-menu-wrap"},[f("button",{class:"thread-menu-trigger",type:"button",title:"thread_menu",onClick:Qe(F=>Do(_.id),["stop"])},[xe(cl,{class:"thread-icon"})],8,QP)],512)]),default:tt(()=>[f("button",{class:"thread-main-button",type:"button",onClick:Qe(F=>to(_.id),["stop"])},[f("span",HP,[f("span",WP,[f("span",VP,k(_.title),1),_.hasWorktree?(T(),at(Oi,{key:0,class:"thread-row-worktree-icon",title:v(r)("Worktree thread")},null,8,["title"])):J("",!0),_o(_.id)?(T(),A("span",{key:1,class:"thread-row-automation-chip",title:ln(_.id)},[xe(ga,{class:"thread-row-automation-icon"}),no(_.id)>1?(T(),A("span",KP,k(no(_.id)),1)):J("",!0)],8,GP)):J("",!0),_.pendingRequestState?(T(),A("span",{key:2,class:"thread-row-request-chip","data-state":_.pendingRequestState},k(Ns(_)),9,YP)):J("",!0)])])],8,zP)]),_:2},1032,["data-active","data-pinned","data-menu-open","force-right-hover","onClick","onMouseleave","onContextmenu"])],8,DP))),128))])):J("",!0),ye.value&&Zn.value?(T(),at(ha,{key:2,class:"thread-show-more-row"},{left:tt(()=>[...C[35]||(C[35]=[f("span",{class:"thread-show-more-spacer"},null,-1)])]),default:tt(()=>[f("button",{class:"thread-show-more-button",type:"button",onClick:qe},k(Me.value?"Show less":"Show more"),1)]),_:1})):J("",!0)]),(T(),at(Bi,{to:"body"},[Lt.value?(T(),A("div",{key:0,ref_key:"openThreadMenuPanelRef",ref:dr,class:"thread-menu-panel thread-menu-panel-fixed",style:Vr(St.value),"data-open-direction":Ll(Lt.value.id),onClick:C[17]||(C[17]=Qe(()=>{},["stop"]))},[f("button",{class:"thread-menu-item",type:"button",onClick:C[8]||(C[8]=_=>jt(Lt.value.id))},k(_o(Lt.value.id)?v(r)("Manage automations…"):v(r)("Add automation…")),1),f("button",{class:"thread-menu-item",type:"button",onClick:C[9]||(C[9]=_=>ko(Lt.value.id))},k(v(r)("Browse files")),1),f("button",{class:"thread-menu-item",type:"button",onClick:C[10]||(C[10]=_=>Ir(Lt.value.id))},k(v(r)("Export Project")),1),f("button",{class:"thread-menu-item",type:"button",onClick:C[11]||(C[11]=_=>ta(Lt.value.id))},k(v(r)("Copy path")),1),f("button",{class:"thread-menu-item",type:"button",disabled:Lt.value.id!==e.selectedThreadId,title:Lt.value.id===e.selectedThreadId?v(r)("Copy chat"):v(r)("Open this chat before copying"),onClick:C[12]||(C[12]=_=>Za(Lt.value.id))},k(v(r)("Copy chat")),9,ZP),f("button",{class:"thread-menu-item",type:"button",onClick:C[13]||(C[13]=_=>Hn(Lt.value.id))},k(v(r)("Create chat fork")),1),f("button",{class:"thread-menu-item",type:"button",onClick:C[14]||(C[14]=_=>Ra(Lt.value.id))},k(Er(Lt.value.id)?v(r)("Unpin thread"):v(r)("Pin thread")),1),f("button",{class:"thread-menu-item",type:"button",onClick:C[15]||(C[15]=_=>Rr(Lt.value.id,Lt.value.title))},k(v(r)("Rename thread")),1),f("button",{class:"thread-menu-item thread-menu-item-danger",type:"button",onClick:C[16]||(C[16]=_=>I(Lt.value.id,Lt.value.title))},k(v(r)("Delete thread")),1)],12,XP)):J("",!0)])),xe(ff,{open:nt.value,title:v(r)("Rename thread"),subtitle:v(r)("Make it short and recognizable."),onClose:_n},{footer:tt(()=>[f("button",{class:"rename-thread-button",type:"button",onClick:_n},k(v(r)("Cancel")),1),f("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",onClick:Ma},k(v(r)("Save")),1)]),default:tt(()=>[Nt(f("input",{ref_key:"renameThreadInputRef",ref:Tt,"onUpdate:modelValue":C[18]||(C[18]=_=>_t.value=_),class:"rename-thread-input",type:"text",placeholder:v(r)("Add title..."),onKeydown:Pn(Qe(Ma,["prevent"]),["enter"])},null,40,eE),[[an,_t.value]])]),_:1},8,["open","title","subtitle"]),xe(ff,{open:gt.value,title:Xr.value?v(r)("Archive chat and remove automations?"):v(r)("Delete thread?"),subtitle:Ea.value,onClose:O},{footer:tt(()=>[f("button",{class:"rename-thread-button",type:"button",onClick:O},k(v(r)("Cancel")),1),f("button",{class:"rename-thread-button rename-thread-button-danger",type:"button",onClick:V},k(Xr.value?v(r)("Archive and remove"):v(r)("Delete")),1)]),_:1},8,["open","title","subtitle"]),xe(ff,{open:x.value,title:v(r)("Recycle bin"),subtitle:v(r)("Threads you removed are kept here so you can restore them."),size:"md",onClose:C[19]||(C[19]=_=>x.value=!1)},{default:tt(()=>[v(u).length===0?(T(),A("div",tE,k(v(r)("Recycle bin is empty.")),1)):(T(),A("ul",nE,[(T(!0),A(ze,null,kt(v(u),_=>(T(),A("li",{key:_.id,class:"recycle-bin-item"},[f("div",oE,[f("span",rE,k(_.title),1),_.projectName?(T(),A("span",aE,k(_.projectName),1)):J("",!0),f("span",sE,k(Pr(_.archivedAtIso)),1)]),f("div",iE,[f("button",{class:"recycle-bin-button recycle-bin-button-primary",type:"button",disabled:L.value===_.id,onClick:F=>Y(_.id)},k(L.value===_.id?v(r)("Restoring…"):v(r)("Restore")),9,lE),f("button",{class:"recycle-bin-button recycle-bin-button-danger",type:"button",onClick:F=>v(g)(_.id)},k(v(r)("Delete permanently")),9,uE)])]))),128))])),R.value?(T(),A("p",cE,k(R.value),1)):J("",!0)]),_:1},8,["open","title","subtitle"]),(T(),at(Bi,{to:"body"},[Be.value?(T(),A("div",{key:0,class:"rename-thread-overlay",onClick:Qe(lo,["self"])},[f("div",{class:"rename-thread-panel automation-thread-panel",role:"dialog","aria-modal":"true","aria-label":$.value==="project"?v(r)("Project automation"):v(r)("Thread automation")},[f("h3",fE,k(le.value==="edit"?v(r)("Edit automation"):v(r)("Add automation")),1),f("p",pE,k(It.value),1),oe.value&&le.value==="create"?(T(),A("div",hE,[C[36]||(C[36]=f("span",{class:"automation-thread-label"},"Target",-1)),f("div",mE,[f("button",{class:Ke(["automation-target-mode",{"is-active":Ce.value==="thread"}]),type:"button",onClick:C[20]||(C[20]=_=>Yt("thread"))}," Existing chat ",2),f("button",{class:Ke(["automation-target-mode",{"is-active":Ce.value==="project"}]),type:"button",onClick:C[21]||(C[21]=_=>Yt("project"))}," Project ",2)]),f("div",vE,[xe(lr,{modelValue:we.value,"onUpdate:modelValue":C[22]||(C[22]=_=>we.value=_),class:"automation-thread-dropdown",options:W.value,placeholder:Ce.value==="project"?"Select project":"Select chat","enable-search":"","search-placeholder":Ce.value==="project"?"Search projects":"Search chats"},null,8,["modelValue","options","placeholder","search-placeholder"])])])):J("",!0),it.value.length>0?(T(),A("div",{key:1,class:"automation-thread-list","aria-label":$.value==="project"?"Project automations":"Thread automations"},[(T(!0),A(ze,null,kt(it.value,_=>(T(),A("button",{key:_.id,class:Ke(["automation-thread-list-item",{"is-active":_.id===ie.value}]),type:"button",onClick:F=>Fo(_.id)},[f("span",null,k(_.name),1),f("small",null,k(_.status==="PAUSED"?"Paused":"Active"),1)],10,yE))),128)),f("button",{class:"automation-thread-list-item automation-thread-list-add",type:"button",onClick:hn},k(v(r)("Add another automation")),1)],8,gE)):J("",!0),f("label",wE,[f("span",bE,k(v(r)("Name")),1),Nt(f("input",{"onUpdate:modelValue":C[23]||(C[23]=_=>Re.value.name=_),class:"rename-thread-input",type:"text",placeholder:v(r)("Automation name")},null,8,_E),[[an,Re.value.name]])]),f("label",kE,[f("span",CE,k(v(r)("Prompt")),1),Nt(f("textarea",{"onUpdate:modelValue":C[24]||(C[24]=_=>Re.value.prompt=_),class:"automation-thread-textarea",rows:"6",placeholder:v(r)("Describe what the automation should do")},null,8,TE),[[an,Re.value.prompt]])]),f("div",SE,[f("span",xE,k(v(r)("Schedule")),1),f("div",AE,[f("button",{class:Ke(["automation-schedule-mode",{"is-active":Ve.value.mode==="daily"}]),type:"button",onClick:C[25]||(C[25]=_=>Mn("daily"))},k(v(r)("Daily")),3),f("button",{class:Ke(["automation-schedule-mode",{"is-active":Ve.value.mode==="interval"}]),type:"button",onClick:C[26]||(C[26]=_=>Mn("interval"))},k(v(r)("Interval")),3),f("button",{class:Ke(["automation-schedule-mode",{"is-active":Ve.value.mode==="advanced"}]),type:"button",onClick:C[27]||(C[27]=_=>Mn("advanced"))}," RRULE ",2)]),Ve.value.mode==="daily"?(T(),A("div",PE,[f("span",EE,k(v(r)("Run every day at")),1),Nt(f("input",{"onUpdate:modelValue":C[28]||(C[28]=_=>Ve.value.dailyTime=_),class:"automation-schedule-time",type:"time",onInput:Sn},null,544),[[an,Ve.value.dailyTime]])])):Ve.value.mode==="interval"?(T(),A("div",IE,[f("span",RE,k(v(r)("Run every")),1),Nt(f("input",{"onUpdate:modelValue":C[29]||(C[29]=_=>Ve.value.interval=_),class:"automation-schedule-number",type:"number",min:"1",step:"1",onInput:Sn},null,544),[[an,Ve.value.interval,void 0,{number:!0}]]),xe(lr,{class:"automation-schedule-unit-dropdown","model-value":Ve.value.intervalUnit,options:K,placeholder:v(r)("Unit"),"onUpdate:modelValue":ro},null,8,["model-value","placeholder"])])):J("",!0),Ve.value.mode==="advanced"?Nt((T(),A("input",{key:2,"onUpdate:modelValue":C[30]||(C[30]=_=>Re.value.rrule=_),class:"rename-thread-input",type:"text",placeholder:"FREQ=DAILY;BYHOUR=9;BYMINUTE=0",onInput:ea},null,544)),[[an,Re.value.rrule]]):J("",!0),f("p",ME,k(yt.value),1)]),f("div",$E,[f("span",jE,k(v(r)("Status")),1),xe(lr,{class:"automation-thread-dropdown","model-value":Re.value.status,options:Q.value,placeholder:v(r)("Status"),"onUpdate:modelValue":ao},null,8,["model-value","options","placeholder"])]),ve.value?(T(),A("p",NE,k(ve.value),1)):ce.value?(T(),A("p",LE,k(ce.value),1)):J("",!0),f("div",OE,[le.value==="edit"&&$.value==="thread"?(T(),A("button",{key:0,class:"rename-thread-button",type:"button",disabled:be.value||Oe.value,onClick:Rs},k(Oe.value?v(r)("Running…"):v(r)("Run now")),9,DE)):J("",!0),le.value==="edit"?(T(),A("button",{key:1,class:"rename-thread-button rename-thread-button-danger",type:"button",disabled:be.value||Oe.value,onClick:li},k(v(r)("Remove")),9,FE)):J("",!0),f("button",{class:"rename-thread-button",type:"button",disabled:be.value||Oe.value,onClick:lo},k(v(r)("Cancel")),9,UE),f("button",{class:"rename-thread-button rename-thread-button-primary",type:"button",disabled:be.value||Oe.value,onClick:en},k(be.value?v(r)("Saving…"):v(r)("Save")),9,BE)])],8,dE)])):J("",!0)]))],2))}}),HE=At(zE,[["__scopeId","data-v-b0e1b136"]]),WE={class:"content-header"},VE=["title"],GE={class:"content-actions"},KE=Nn({__name:"ContentHeader",props:{title:{},accent:{type:Boolean}},setup(e){return(t,n)=>(T(),A("header",WE,[f("div",{class:Ke(["content-leading",{"is-accent":e.accent}])},[ur(t.$slots,"leading",{},void 0)],2),f("h1",{class:Ke(["content-title",{"is-accent":e.accent}]),title:e.title},k(e.title),11,VE),f("div",GE,[ur(t.$slots,"actions",{},void 0)])]))}}),YE=At(KE,[["__scopeId","data-v-61739409"]]),Qm=.0025,pf=3,Xm=2,JE=256;function QE(e){var $e;const t=S("idle"),n=S(typeof navigator<"u"&&!!(($e=navigator.mediaDevices)!=null&&$e.getUserMedia)),o=S(0),r=S(null);let s=null,a=null,u=[],d=null,m=null,g=null,w=null,x=[],R=!1,L=!1,B=null;function Y(){B&&(B.abort(),B=null),t.value==="transcribing"&&(t.value="idle")}function ae(){const he=r.value;if(!he||typeof window>"u")return;const Te=he.getContext("2d");if(!Te)return;const Ae=Math.max(1,Math.floor(he.clientWidth)),Pe=Math.max(1,Math.floor(he.clientHeight||36)),De=window.devicePixelRatio||1,Ye=Math.max(1,Math.floor(Ae*De)),He=Math.max(1,Math.floor(Pe*De));(he.width!==Ye||he.height!==He)&&(he.width=Ye,he.height=He),Te.setTransform(De,0,0,De,0,0),Te.clearRect(0,0,Ae,Pe);const St=Math.max(12,Math.floor(Ae/(pf+Xm))),ct=x.slice(-St),Ge=Math.max(0,St-ct.length),nt=Pe/2,dt=getComputedStyle(he).color||"#000000";for(let _t=0;_t<St;_t+=1){const Tt=ct[_t-Ge]??0,se=Math.max(.08,Math.min(1,Tt*18))*nt,ne=_t*(pf+Xm);Te.globalAlpha=Tt<=Qm?.35:1,Te.fillStyle=dt,Te.fillRect(ne,nt-se,pf,se*2)}Te.globalAlpha=1}function z(){x=[],o.value=0,ae()}function Z(){g&&(g.disconnect(),g.onaudioprocess=null,g=null),m&&(m.disconnect(),m=null),d&&(d.close(),d=null),w=null}function X(he){if(typeof window>"u")return;const Te=window.webkitAudioContext,Ae=window.AudioContext??Te;Ae&&(Z(),z(),d=new Ae,m=d.createMediaStreamSource(he),g=d.createScriptProcessor(2048,1,1),w=performance.now(),g.onaudioprocess=Pe=>{const De=Pe.inputBuffer.getChannelData(0);let Ye=0;for(let He=0;He<De.length;He+=1){const St=Math.abs(De[He]??0);Ye+=St<Qm?0:St}x.push(Ye/De.length),x.length>JE&&x.shift(),w!==null&&(o.value=Math.max(0,performance.now()-w)),ae()},m.connect(g),g.connect(d.destination),ae())}async function ye(){var he;if(t.value==="transcribing"&&Y(),!(t.value!=="idle"||!n.value||R)){R=!0,L=!1;try{a=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1}}),u=[],s=new MediaRecorder(a),s.ondataavailable=Te=>{Te.data.size>0&&u.push(Te.data)},s.onstop=()=>{var Pe;const Te=u,Ae=(s==null?void 0:s.mimeType)||((Pe=Te[0])==null?void 0:Pe.type)||"audio/webm";pe(),Fe(Te,Ae)},X(a),s.start(250),t.value="recording",L&&Me()}catch(Te){pe(),t.value="idle",(he=e.onError)==null||he.call(e,Te)}finally{R=!1}}}function Me(){if(R&&t.value==="idle"){L=!0;return}if(!(t.value!=="recording"||!s)&&s.state!=="inactive"){t.value="transcribing";try{s.requestData()}catch{}s.stop()}}function Se(){L=!1,Y(),pe(),t.value="idle"}async function Fe(he,Te){var De,Ye,He,St,ct;if(he.length===0){(De=e.onEmpty)==null||De.call(e),t.value="idle";return}const Ae=new Blob(he,{type:Te});t.value="transcribing";let Pe=null;try{const Ge=Te.split(/[/;]/)[1]??"webm",nt=new FormData;nt.append("file",Ae,`codex.${Ge}`);const dt=((Ye=e.getLanguage)==null?void 0:Ye.call(e).trim())??"";dt&&dt.toLowerCase()!=="auto"&&nt.append("language",dt),Pe=new AbortController,B=Pe;const _t=await fetch("/codex-api/transcribe",{method:"POST",body:nt,signal:Pe.signal}),Tt=await _t.text();let gt=null;try{gt=Tt.trim()?JSON.parse(Tt):null}catch{gt=null}if(!_t.ok){const ne=(He=gt==null?void 0:gt.error)==null?void 0:He.trim(),re=Tt.trim();throw new Error(ne||re||`Transcription failed: ${_t.status}`)}const se=((gt==null?void 0:gt.text)??"").trim();se.length>0?e.onTranscript(se):(St=e.onEmpty)==null||St.call(e)}catch(Ge){if(Ge instanceof DOMException&&Ge.name==="AbortError")return;(ct=e.onError)==null||ct.call(e,Ge)}finally{Pe&&B===Pe&&(B=null),t.value==="transcribing"&&(t.value="idle")}}function pe(){Z(),z(),s&&(s.ondataavailable=null,s.onstop=null,s=null),a&&(a.getTracks().forEach(he=>he.stop()),a=null),u=[]}zi(()=>{Se()});function Ue(){if(t.value==="recording"){Me();return}(t.value==="idle"||t.value==="transcribing")&&ye()}return{state:t,isSupported:n,recordingDurationMs:o,waveformCanvasRef:r,startRecording:ye,stopRecording:Me,toggleRecording:Ue,cancel:Se}}const XE={},ZE={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function eI(e,t){return T(),A("svg",ZE,[...t[0]||(t[0]=[f("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m12 5l0 14m-6-8l6-6l6 6"},null,-1)])])}const tI=At(XE,[["render",eI]]),nI={},oI={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function rI(e,t){return T(),A("svg",oI,[...t[0]||(t[0]=[f("path",{d:"M4 8V4h4"},null,-1),f("path",{d:"M20 8V4h-4"},null,-1),f("path",{d:"M4 16v4h4"},null,-1),f("path",{d:"M20 16v4h-4"},null,-1)])])}const aI=At(nI,[["render",rI]]),sI={},iI={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function lI(e,t){return T(),A("svg",iI,[...t[0]||(t[0]=[f("path",{d:"M8 4v4H4"},null,-1),f("path",{d:"M16 4v4h4"},null,-1),f("path",{d:"M8 20v-4H4"},null,-1),f("path",{d:"M16 20v-4h4"},null,-1)])])}const uI=At(sI,[["render",lI]]),cI={},dI={xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"};function fI(e,t){return T(),A("svg",dI,[...t[0]||(t[0]=[f("path",{stroke:"none",fill:"none",d:"M0 0h24v24H0z"},null,-1),f("path",{fill:"currentColor",d:"M8 5a3 3 0 0 0 -3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3v-8a3 3 0 0 0 -3 -3h-8z"},null,-1)])])}const pI=At(cI,[["render",fI]]),hI=["aria-label"],mI=Nn({__name:"ComposerPopover",props:{open:{type:Boolean},align:{},width:{},panelClass:{},ariaLabel:{}},emits:["update:open"],setup(e,{expose:t,emit:n}){const o=e,r=n,s=S(null),a=S(null),u=ee(()=>o.open),d=ee(()=>o.width==="lg"?"composer-popover-panel--lg":"composer-popover-panel--md");rt(u,async w=>{var x;w&&(await zt(),(x=a.value)==null||x.focus())});function m(){r("update:open",!o.open)}function g(w){var ae,z,Z;if(w.key==="Escape"){r("update:open",!1);return}const x=a.value;if(!x)return;const R=Array.from(x.querySelectorAll("button")).filter(X=>!X.disabled&&X.offsetParent!==null);if(R.length===0)return;if(w.key==="Home"){w.preventDefault(),(ae=R[0])==null||ae.focus();return}if(w.key==="End"){w.preventDefault(),(z=R[R.length-1])==null||z.focus();return}if(w.key!=="ArrowDown"&&w.key!=="ArrowUp")return;w.preventDefault();let L=R.findIndex(X=>X===document.activeElement);L<0&&(L=w.key==="ArrowDown"?-1:0);const B=w.key==="ArrowDown"?1:-1,Y=(L+B+R.length)%R.length;(Z=R[Y])==null||Z.focus()}return t({root:s}),(w,x)=>(T(),A("div",{ref_key:"rootRef",ref:s,class:Ke(["composer-popover-anchor",{"is-align-end":e.align==="end","is-align-center":e.align==="center"}])},[ur(w.$slots,"trigger",{toggle:m,isOpen:u.value},void 0),xe(Au,{name:"composer-popover"},{default:tt(()=>[u.value?(T(),A("div",{key:0,ref_key:"panelRef",ref:a,class:Ke(["composer-popover-panel",[d.value,e.panelClass]]),role:"menu",tabindex:"-1","aria-label":e.ariaLabel,onKeydown:g},[ur(w.$slots,"default",{},void 0,!0)],42,hI)):J("",!0)]),_:3})],2))}}),wc=At(mI,[["__scopeId","data-v-bdd45c16"]]),vI=["aria-label"],gI={class:"composer-popover-group-label"},yI=["aria-selected","onMousedown"],wI={class:"thread-composer-slash-body"},bI={class:"thread-composer-slash-name"},_I={class:"thread-composer-slash-desc"},kI={class:"thread-composer-slash-kind"},CI={class:"composer-popover-group-label composer-popover-group-label--skills"},TI=["aria-selected","onMousedown"],SI=["aria-label","title"],xI={class:"thread-composer-slash-body thread-composer-slash-body--skill"},AI={class:"thread-composer-slash-skill-name"},PI={class:"thread-composer-slash-desc thread-composer-slash-desc--skill"},EI=Nn({__name:"ComposerSlashMenu",props:{commands:{},highlightedIndex:{}},emits:["select"],setup(e,{emit:t}){const n=e,o=t,{t:r}=Ar(),s=S(null),a=ee(()=>n.commands.filter(w=>w.group!=="skill")),u=ee(()=>n.commands.filter(w=>w.group==="skill"));rt(()=>n.highlightedIndex,async()=>{var w,x;await zt(),(x=(w=s.value)==null?void 0:w.querySelector(".is-active"))==null||x.scrollIntoView({block:"nearest"})});function d(w){return r(w==="rpc"?"Action":w==="text"?"Prompt":w==="skill"?"Skill":"Local")}function m(w){return w==="system"?"S":w==="repo"?"R":w==="plugin"?"P":"U"}function g(w){return r(w==="system"?"System":w==="repo"?"Repo":w==="plugin"?"Plugin":"User")}return(w,x)=>(T(),A("div",{ref_key:"rootRef",ref:s,class:"composer-popover",role:"listbox","aria-label":v(r)("Commands")},[a.value.length>0?(T(),A(ze,{key:0},[f("div",gI,k(v(r)("Commands")),1),(T(!0),A(ze,null,kt(a.value,(R,L)=>(T(),A("button",{key:R.id,class:Ke(["thread-composer-slash-row",{"is-active":L===e.highlightedIndex}]),type:"button",role:"option","aria-selected":L===e.highlightedIndex,onMousedown:Qe(B=>o("select",R),["prevent"])},[x[0]||(x[0]=f("span",{class:"thread-composer-slash-prefix","aria-hidden":"true"},"/",-1)),f("span",wI,[f("span",bI,k(R.id),1),f("span",_I,k(v(r)(R.description)),1)]),f("span",kI,k(d(R.kind)),1)],42,yI))),128))],64)):J("",!0),u.value.length>0?(T(),A(ze,{key:1},[f("div",CI,k(v(r)("Skills")),1),(T(!0),A(ze,null,kt(u.value,(R,L)=>(T(),A("button",{key:R.skillPath||R.id,class:Ke(["thread-composer-slash-row thread-composer-slash-row--skill",{"is-active":a.value.length+L===e.highlightedIndex}]),type:"button",role:"option","aria-selected":a.value.length+L===e.highlightedIndex,onMousedown:Qe(B=>o("select",R),["prevent"])},[f("span",{class:Ke(["thread-composer-slash-skill-icon",`is-${R.scope||"user"}`]),"aria-label":g(R.scope),title:g(R.scope)},k(m(R.scope)),11,SI),f("span",xI,[f("span",AI,k(R.displayName||R.id),1),f("span",PI,k(R.description),1)])],42,TI))),128))],64)):J("",!0)],8,vI))}}),II=At(EI,[["__scopeId","data-v-ca16aa11"]]),RI=/(^|\s)(\/[a-zA-Z]*)$/,Zm=[{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 MI(e){var o,r,s;const t=[],n=new Set;for(const a of e){const u=a.name.trim().replace(/^\//u,"").toLowerCase().replace(/\s+/gu,"-");if(!u)continue;const d=a.path.trim()||u;n.has(d)||(n.add(d),t.push({id:u,description:((o=a.description)==null?void 0:o.trim())||"Run this skill",kind:"skill",group:"skill",skillPath:a.path,displayName:((r=a.displayName)==null?void 0:r.trim())||a.name.trim(),scope:((s=a.scope)==null?void 0:s.trim())||"user"}))}return t.sort((a,u)=>a.id.localeCompare(u.id))}function $I(e){const t=e.match(RI);if(!t)return null;const n=t[2]??"";return{query:n.slice(1).toLowerCase(),token:n,startIndex:e.length-n.length}}function jI(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 NI=["data-streaming"],LI=["aria-expanded"],OI={class:"thread-composer-plan-panel-title"},DI={key:0,class:"thread-composer-plan-panel-badge"},FI={class:"thread-composer-plan-panel-progress"},UI=["title"],BI=["data-status"],qI={class:"thread-composer-plan-panel-latest-text"},zI={class:"thread-composer-plan-panel-popover-content"},HI={class:"thread-composer-plan-panel-popover-scroll"},WI={class:"thread-composer-plan-panel-popover-head"},VI={class:"thread-composer-plan-panel-title"},GI={class:"thread-composer-plan-panel-progress"},KI={key:0,class:"thread-composer-plan-panel-popover-section"},YI={class:"thread-composer-plan-panel-section-label"},JI=["title"],QI={class:"thread-composer-plan-panel-popover-section"},XI={class:"thread-composer-plan-panel-section-label"},ZI={class:"thread-composer-plan-panel-steps"},eR=["data-status"],tR=["data-status"],nR=["title"],oR={class:"thread-composer-plan-panel-popover-footer"},rR=["disabled","data-state"],aR={key:1,class:"thread-composer-attachments"},sR=["src","alt"],iR=["aria-label","disabled","onClick"],lR={key:2,class:"thread-composer-folder-chips"},uR=["title"],cR={class:"thread-composer-folder-chip-meta"},dR=["aria-label","disabled","onClick"],fR={key:3,class:"thread-composer-file-chips"},pR=["title"],hR=["aria-label","disabled","onClick"],mR={key:4,class:"thread-composer-skill-chips"},vR=["title","aria-label","onClick"],gR=["aria-label","onClick"],yR={class:"thread-composer-main"},wR={class:"thread-composer-input-row"},bR={key:0,class:"thread-composer-drop-overlay","aria-hidden":"true"},_R={class:"thread-composer-drop-overlay-copy"},kR={key:1,class:"composer-popover"},CR=["onMousedown"],TR={key:1,class:"thread-composer-file-mention-icon-markdown"},SR={class:"thread-composer-file-mention-text"},xR={class:"thread-composer-file-mention-name"},AR={key:0,class:"thread-composer-file-mention-dir"},PR={key:1,class:"thread-composer-file-mention-empty"},ER={key:2,class:"thread-composer-file-mention-empty"},IR=["placeholder","disabled"],RR=["aria-label","title","disabled"],MR={class:"thread-composer-actions"},$R=["aria-label","title","disabled"],jR={key:0,class:"thread-composer-stop-spinner","aria-hidden":"true"},NR=["aria-label","title","disabled"],LR=["aria-label","disabled"],OR=["disabled"],DR=["disabled"],FR=["disabled"],UR={class:"thread-composer-attach-mode"},BR={class:"thread-composer-attach-mode-label"},qR={class:"thread-composer-attach-mode-buttons"},zR=["disabled"],HR=["disabled"],WR={class:"thread-composer-attach-mode"},VR={class:"thread-composer-attach-mode-label"},GR={class:"thread-composer-attach-mode-buttons"},KR=["disabled","onClick"],YR={class:"thread-composer-attach-mode"},JR={class:"thread-composer-attach-mode-label"},QR={class:"thread-composer-attach-mode-buttons"},XR=["disabled","onClick"],ZR={key:0,class:"thread-composer-menu-error",role:"alert"},eM={key:0,class:"thread-composer-approval-tip",role:"status"},tM=["aria-label","disabled"],nM={class:"thread-composer-plan-trigger-label"},oM=["aria-checked","disabled","onClick"],rM={class:"thread-composer-menu-item-copy"},aM={class:"thread-composer-menu-item-title"},sM={key:0,class:"thread-composer-menu-item-sub"},iM={key:1,class:"thread-composer-menu-item-hint"},lM={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},uM=["aria-label","disabled"],cM={class:"thread-composer-approval-trigger-label"},dM=["aria-checked","disabled","onClick"],fM={class:"thread-composer-menu-item-copy"},pM={class:"thread-composer-menu-item-title"},hM={key:0,class:"thread-composer-menu-item-check","aria-hidden":"true"},mM={key:0,class:"thread-composer-menu-error",role:"alert"},vM={key:0,class:"thread-composer-approval-tip",role:"status"},gM=["title","aria-label"],yM={class:"thread-composer-context-usage-value"},wM={key:0,class:"thread-composer-context-usage-compact"},bM=["disabled"],_M=["disabled"],kM=["disabled"],hf=12e3,CM=2e3,TM="codex-web-local.thread-draft.v1.",SM=Nn({__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:s}=Ar(),a=S(""),u=S([]),d=S([]),m=S([]),g=S([]),w=S(""),x=S(0),R=S(null),L=S(!1),{state:B,cancel:Y}=QE({getLanguage:()=>o.dictationLanguage??"auto",onTranscript:I=>{if(a.value=a.value?`${a.value}
|
|
58
58
|
${I}`:I,w.value="",o.dictationAutoSend!==!1){const O=o.isTurnInProgress?de.value:"steer";nn(O);return}zt(()=>{var O;return(O=X.value)==null?void 0:O.focus()})},onEmpty:()=>{w.value=o.dictationClickToToggle?"No speech detected. Click again after speaking.":"No speech detected. Hold the mic and speak."},onError:I=>{if(I instanceof DOMException&&I.name==="NotAllowedError"){w.value="Microphone access was denied.";return}w.value=I instanceof Error?I.message:"Dictation failed."}}),ae=S(null),z=S(null),Z=S(null),X=S(null),{isMobile:ye}=yp(),Me=S(!1),Se=S(!1),Fe=S(!1),pe=S(null),Ue=S(""),$e=S([]),he=S(!1),Te=S(0),Ae=S(!1),Pe=S(null),De=S(""),Ye=S(0),He=S(Zm),St=ee(()=>[...Zm,...MI(o.skills??[])]),ct=S(!1),Ge=S(!1),nt=ee(()=>{var O;return(((O=o.planPanel)==null?void 0:O.steps)??[]).filter(V=>V.status==="completed").length}),dt=ee(()=>{var O;const I=((O=o.planPanel)==null?void 0:O.steps)??[];if(I.length===0)return null;for(let V=I.length-1;V>=0;V-=1){const ge=I[V];if(ge.status==="inProgress")return ge}return I[I.length-1]}),_t=ee(()=>{var ge,et,Ut;const I=((et=(ge=o.planPanel)==null?void 0:ge.explanation)==null?void 0:et.trim())??"";if(!I)return"";const O=((Ut=I.split(/[。!?!?\n]/u)[0])==null?void 0:Ut.trim())??"";if(!O)return I;const V=80;return O.length>V?`${O.slice(0,V)}…`:O});function Tt(I){switch(I){case"completed":return"✓";case"inProgress":return"•";default:return"○"}}function gt(){Ge.value=!1,r("implement-plan")}const se=S(!1);let ne=!1;const re=S(0);let H=0,Be=null,$="",D=!1,G=0,ie=0;const le=typeof navigator<"u"&&/Android/i.test(navigator.userAgent);let oe="";const Ce=[{value:"none",label:"None"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"xhigh",label:"Extra high"},{value:"max",label:"Max"},{value:"ultra",label:"Ultra"}],we=ee(()=>{var V;const I=(V=o.modelReasoningEfforts)==null?void 0:V[o.selectedModel];if(I===void 0)return Ce;const O=new Set(I);return Ce.filter(ge=>O.has(ge.value))});function ve(I){return I.trim().replace(/^gpt/i,"GPT")}const ce=ee(()=>o.models.map(I=>({value:I,label:ve(I)}))),Ee=ee(()=>{const I=new Set((o.collaborationModes??[]).map(O=>O.value));return[{value:"default",labelKey:"Default",subLabel:"",disabled:!1},{value:"plan",labelKey:"Plan mode",subLabel:s("Agent proposes a plan before acting"),disabled:!1},{value:"execplans",labelKey:"Execution plans",subLabel:"",disabled:!I.has("execplans")}]}),be=[{value:"on-request",label:"When Codex requests it"},{value:"untrusted",label:"Unless trusted"},{value:"never",label:"Never"}],Oe=ee(()=>{const I=Ee.value.find(O=>O.value===o.selectedCollaborationMode);return s(I?I.labelKey:"Plan mode")}),Re=ee(()=>{const I=be.find(O=>O.value===o.approvalPolicy);return s(I?I.label:"Approval policy")}),Ve=ee(()=>o.selectedCollaborationMode==="plan"&&o.selectedModel.trim().length===0),it=ee(()=>o.disabled||o.isUpdatingSpeedMode||!o.activeThreadId||Ve.value||x.value>0?!1:a.value.trim().length>0||u.value.length>0||m.value.length>0),yt=ee(()=>a.value.trim().length>0||u.value.length>0||d.value.length>0||m.value.length>0||g.value.length>0),It=ee(()=>{const I=new Set;for(const O of g.value)for(const V of O.filePaths)I.add(V);return m.value.filter(O=>!I.has(O.fsPath))}),Ze=ee(()=>o.disabled||!o.activeThreadId||o.externalSessionActive===!0),Wt=ee(()=>o.disabled||!o.activeThreadId),W=ee(()=>/^gpt-5\.(?:4|5)(?:$|-)/.test(o.selectedModel.trim())),K=ee(()=>o.selectedSpeedMode==="fast"&&W.value),Q=ee(()=>o.inProgressSubmitMode==="steer"?"steer":"queue"),de=S(Q.value),Le=ee(()=>B.value==="recording"),We=ee(()=>o.activeThreadId?Ve.value?s("Loading models for plan mode..."):s("Ask Codex anything, @ to add files, / for commands"):s("Select a thread to send a message")),ot=ee(()=>a.value.trim().length>0||u.value.length>0||m.value.length>0),Ft=ee(()=>a.value.split(`
|
|
@@ -77,7 +77,7 @@ ${O}`:a.value=O,zt(()=>{var V;return(V=X.value)==null?void 0:V.focus()}))}functi
|
|
|
77
77
|
|
|
78
78
|
`)&&fi(b,`${Ie}
|
|
79
79
|
|
|
80
|
-
`)}ua(i);const fs=_e(i);fs&&(Qt(b,fs),Jt(b,{label:"Running command",details:[((Zu=fs.commandExecution)==null?void 0:Zu.command)??""]}));const zs=lt(i);if(zs){const Ie=(L.value[b]??[]).find(Ot=>Ot.id===zs.itemId);Ie!=null&&Ie.commandExecution&&Qt(b,{...Ie,commandExecution:{...Ie.commandExecution,aggregatedOutput:`${Ie.commandExecution.aggregatedOutput}${zs.delta}`}})}const Gu=Pt(i);Gu&&Qt(b,Gu);const Ku=Bo(i);if(Ku&&Nl(b,Ku),sr(i)&&wr(b,!0),i.method==="turn/completed"){eo=!1,wr(b),w.clear(),L.value[b]&&(L.value=Ct(L.value,b));const Ie=un(i);Ie&&(I(Ie),hn(Ie,!1),Jt(Ie,null),ii(Ie),je||(ta(Ie),zl(Ie)))}}function Ua(i){if(i.method==="thread/tokenUsage/updated"||i.method.startsWith("thread/realtime/"))return;const c=i.method,h=c==="turn/started"||c==="turn/completed"||c==="error",b=c.startsWith("thread/")||c==="turn/completed";if(!h&&!b)return;const E=un(i);E&&h&&Xt.add(E),b&&(yn=!0,Qr=!0),!(ht!==null||typeof window>"u")&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}async function zo(i,c){if(!bo){bo=!0;try{if(!c)return;const h=[];for(const b of md(c)){const E=qi(b);h.includes(E)||h.push(E)}if(h.length>0){const b=c.projectOrder.length>0?fl(h,i):fl(H.value,i);ws(H.value,b)||(H.value=b)}if(Object.keys(c.labels).length>0||(c.remoteProjects??[]).length>0){const b={...Be.value};let E=!1;for(const[P,N]of Object.entries(c.labels)){const q=st(P).trim(),te=[qi(P)];q&&te.push(q);for(const me of te)b[me]!==N&&(b[me]=N,E=!0)}for(const P of c.order){const N=qi(P),q=Kr(Tl(P));if(!q.startsWith(".")||q===N)continue;const te=`${N} ${q}`;b[N]!==void 0||b[N]===te||(b[N]=te,E=!0)}for(const P of c.remoteProjects??[]){const N=cL(P);b[P.id]!==N&&(b[P.id]=N,E=!0)}E&&(Be.value=b)}}catch{}}}async function Dl(i={}){if(!(i.force!==!0&&Object.keys(K.value).length>0))try{const c=await xS();if(Object.keys(c.titles).length>0){const h={};for(const[b,E]of Object.entries(c.titles))h[b]=Qs(E);K.value=h}}catch{}}async function Du(){try{return await ml()}catch{return null}}function Ba(i,c,h){const b=i.trim();if(b)return Qs(b);const E=h.map(P=>P.label.trim()).find(P=>P.length>0);return E?Qs(E):c.length>0?Qs("[Image]"):"Untitled thread"}async function Fu(i,c,h,b=[],E=[]){if(K.value[i])return;const P=c.trim();if(!P){const q=Ba(c,b,E);K.value={...K.value,[i]:q},jt(),gc(i,q);return}const N=P.length>300?P.slice(0,300):P;try{const q=await $S(N,h);if(!q||K.value[i])return;const te=q.length>Kf?q.slice(0,Kf):q;K.value={...K.value,[i]:te},jt(),gc(i,te)}catch{}}function vd(i,c){const h=Gf(i,c),b=hL(i,c),E=mL(b,c,h);if(!c||c.order.length===0&&(c.remoteProjects??[]).length===0)return E;const P=new Set;for(const q of Vf(c,h))P.add(q);const N=E.filter(q=>P.has(q.projectName)?!0:Yf(q));return pL(N,c,h)}function qa(i,c){const h=vd(i,c),b=!!(c&&(c.order.length>0||c.projectOrder.length>0||(c.remoteProjects??[]).length>0)),E=c!=null&&c.projectOrder.length?fl(Vf(c,Gf(i,c)),h):fl(H.value,h);ws(H.value,E)||(H.value=E,b||iu(H.value));const P=vf(h,H.value);Is(new Set(Eo(P).map(te=>te.id)));const N=lL(t.value,P,Y.value);t.value=Pc(t.value,N),Y.value=Cn(Y.value,new Set(Eo(t.value).map(te=>te.id))),new Set(Eo(t.value).map(te=>te.id));const q={};for(const te of Eo(t.value))q[te.id]=te.externalSession??Fe.value[te.id]??null;Fe.value=q,jt()}function Ur(i){const c={};for(const[h,b]of Object.entries(i)){const E=h.trim();!E||b.length===0||(c[E]=b.map(P=>({id:P.id,text:P.text,imageUrls:[...P.imageUrls],skills:P.skills.map(N=>({name:N.name,path:N.path})),fileAttachments:P.fileAttachments.map(N=>({label:N.label,path:N.path,fsPath:N.fsPath})),collaborationMode:P.collaborationMode})))}return c}function ca(){eS(Ur(pe.value)).catch(()=>{})}async function Fl(){if(!Ae){Ae=!0;try{pe.value=await jm()}catch{}}}function Vn(i){Rt=_v(Rt,i),t.value=_v(t.value,i),Y.value=Ct(Y.value,i),jt()}function xo(i,c){if(i.length===0)return c;if(c.length===0)return i;const h=new Map;for(const E of Eo(i))h.set(E.id,E);for(const E of Eo(c))h.set(E.id,E);const b=new Map;for(const E of h.values()){const P=b.get(E.projectName);P?P.push(E):b.set(E.projectName,[E])}return Array.from(b.entries()).map(([E,P])=>({projectName:E,threads:P.sort((N,q)=>new Date(q.updatedAtIso).getTime()-new Date(N.updatedAtIso).getTime())})).sort((E,P)=>{var te,me;const N=new Date(((te=E.threads[0])==null?void 0:te.updatedAtIso)??0).getTime();return new Date(((me=P.threads[0])==null?void 0:me.updatedAtIso)??0).getTime()-N})}function Ao(){return Object.values(Y.value).some(i=>i===!0)}function gi(i=Yn){if(!(!wo||jo||Ao())){if(Yn=i,typeof window>"u"){Br(i);return}$o!==null&&window.clearTimeout($o),$o=window.setTimeout(()=>{$o=null,!(!wo||Ao())&&Br(Yn)},gN)}}async function Br(i){if(!(jo||!wo||Ao())){jo=!0;try{const c=await Cm(wo,JT());wo=c.nextCursor,Lt=c.nextCursor===null,Vt.value=Lt,Rt=xo(Rt,c.groups),qa(Rt,i)}catch{}finally{jo=!1,wo&&!Ao()&&gi(i)}}}async function Ds(i={}){if(fr){await fr;return}i.force!==!0&&Xn.value&&Date.now()-Pa<bN||(fr=(async()=>{var c;Xn.value||(ot.value=!0);try{const[h,b]=await Promise.all([Cm(),Du(),Dl({force:i.force===!0})]);Yn=b;const E=h.groups;Rt=Xn.value?xo(Rt,E):E,wo=Xn.value&&!Lt?wo:h.nextCursor,Lt=h.nextCursor===null,Vt.value=Lt,await zo(E,b),qa(Rt,b),Xn.value=!0,Pa=Date.now(),Lt||gi(b);const P=Eo(e.value);io(P),!P.some(q=>q.id===n.value)&&!n.value&&bn(((c=P[0])==null?void 0:c.id)??"")}finally{ot.value=!1}})().finally(()=>{fr=null}),await fr)}async function da(i,c={}){var q;if(!i)return;const h=Date.now()-(Ea.get(i)??0)<uv;if((q=ce.value[i])!=null&&q.transient&&(c.silent===!0||h))return;const b=yo.get(i);if(b&&c.force!==!0){await b;return}const E=D.value[i]===!0,P=c.silent!==!0&&!E;P&&(Ft.value=!0);const N=(async()=>{try{const te=co(i),me=$.value[i]??"",je=Date.now()-(Xr.get(i)??0)<uv;if(c.force===!0?!1:E&&(je||(te.length===0||me===te)&&Y.value[i]!==!0)){Mr(i);return}const ut=le.value[i]!==!0?await of(i):null,Et=ut??await nf(i);Et.modelProvider&&ea(i,Et.modelProvider),Et.model&&ao(i,Mn(i,Et.model,Et.modelProvider)),ut&&(le.value={...le.value,[i]:!0});const{messages:Ha,inProgress:Bs,activeTurnId:fa,turnIndexByTurnId:Sr}=Et;G.value={...G.value,[i]:Et.hasMoreOlder===!0},$a(i,Ha),as(i,Sr),hi(i);const qs=o.value[i]??[],Vu=bv(qs,Ha,{preserveMissing:c.silent===!0||YN(qs)});yr(i,Vu);const fs=a.value[i]??[];if(Bs){const zs=QN(fs,Ha);ja(i,zs)}else Dn(i);Fn(i,Ha),kn(i,Ha),D.value={...D.value,[i]:!0},Xr.set(i,Date.now()),Ea.delete(i),te&&($.value={...$.value,[i]:te}),hn(i,Bs),Et.externalSession&&(Fe.value={...Fe.value,[i]:Et.externalSession}),li(i),fa?Ee.value={...Ee.value,[i]:fa}:Ee.value[i]&&(Ee.value=Ct(Ee.value,i)),Bs||Uo(i),Mr(i)}catch(te){const me=te instanceof Error?te.message:"Unknown application error";throw n.value===i&&en(i,me,{transient:!0}),Ea.set(i,Date.now()),te}finally{P&&(Ft.value=!1)}})().finally(()=>{yo.delete(i)});yo.set(i,N),await N}async function qr(i=n.value){if(!i||ie.value[i]===!0||G.value[i]!==!0)return;const c=zn(i);if(!c){G.value={...G.value,[i]:!1};return}ie.value={...ie.value,[i]:!0};try{const h=await XT(i,c),b=o.value[i]??[],E=bv(h.messages,b,{preserveMissing:!0});yr(i,E),as(i,{...oe.value[i]??{},...h.turnIndexByTurnId}),hi(i),G.value={...G.value,[i]:h.hasMoreOlder}}catch(h){throw mt.value=h instanceof Error?h.message:"Failed to load earlier messages",h}finally{ie.value={...ie.value,[i]:!1}}}async function yi(i,c={}){var h;i&&D.value[i]!==!0&&(c.silent===!0&&((h=ce.value[i])!=null&&h.transient)||await da(i,c))}async function Fs(i={}){var b,E;const c=((E=(b=hr.value)==null?void 0:b.cwd)==null?void 0:E.trim())??"",h=c||"__global__";if(Ln){await Ln;return}i.force!==!0&&Ja&&Qa===h&&Date.now()-In<_N||(Ln=(async()=>{try{Q.value=await NS(c?[c]:void 0),Ja=!0,In=Date.now(),Qa=h}catch{}finally{Ln=null}})(),await Ln)}async function Ki(i={}){if(pr){await pr;return}i.force!==!0&&Kn||(We.value=!0,pr=(async()=>{try{Le.value=await a1(),Kn=!0}catch{}finally{We.value=!1,pr=null}})(),await pr)}async function ls(i={}){await Promise.allSettled([Rr({providerChanged:i.providerChanged,includeProviderModels:i.includeProviderModels}),_n(),Do(),Fs()])}function Ul(i={}){const c=()=>{ls(i)};if(typeof window>"u"){c();return}window.setTimeout(c,0)}async function wi(i={}){mt.value="",se.value="";const c=i.includeSelectedThreadMessages!==!1,h=i.awaitAncillaryRefreshes===!0;try{if(await Fl(),await Ds({force:i.forceThreadRefresh===!0}),c)try{await da(n.value)}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}h?await ls({providerChanged:i.providerChanged,includeProviderModels:i.providerChanged===!0||h}):Ul({providerChanged:i.providerChanged,includeProviderModels:!1})}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error",dv(b)?se.value=cv:se.value=""}}async function za(i){bn(i);try{return await da(i),await Rr({includeProviderModels:!0}),Fs(),"ok"}catch(c){const h=c instanceof Error?c.message:"Unknown application error";mt.value=h;const b=SN(c)?"not-found":"error";return i.trim()&&en(i,h,{transient:!0}),b}}async function Bl(i){const c=n.value===i,h=c?pN(Eo(e.value),i):"";c&&(bn(h),h&&da(h,{silent:!0}));try{await I1(i),Vn(i),await Ds(),c&&h&&n.value===h&&await yi(h,{silent:!0})}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}}async function Yi(i,c){const h=c.trim();if(!(!i||!h))try{await $1(i,h),K.value={...K.value,[i]:h},jt(),gc(i,h)}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}}async function ql(i){var N,q;const c=i.trim();if(!c)return"";const h=Eo(t.value).find(te=>te.id===c),b=((N=h==null?void 0:h.cwd)==null?void 0:N.trim())??"",E=((q=h==null?void 0:h.title)==null?void 0:q.trim())??"Forked chat",P=ln(c);mt.value="";try{const te=await Em(c,b||void 0,P||void 0),me=te.threadId.trim();return me?(pn(me,b,E),ao(me,te.model),le.value={...le.value,[me]:!0},bn(me),await Ds(),await da(me),me):""}catch(te){return mt.value=te instanceof Error?te.message:"Unknown application error",""}}async function bi(i,c){var N;const h=i.trim();if(!h||!Number.isInteger(c)||c<0)return"";if(Y.value[h]===!0)return mt.value="Finish the current turn before forking from a response.","";if(D.value[h]!==!0)try{await da(h)}catch(q){return mt.value=q instanceof Error?q.message:"Unknown application error",""}const b=o.value[h]??[];let E=-1;for(const q of b)typeof q.turnIndex=="number"&&Number.isFinite(q.turnIndex)&&(E=Math.max(E,q.turnIndex));if(E>=0&&c>E)return"";const P=Eo(t.value).find(q=>q.id===h)??null;try{mt.value="";const q=await Em(h),te=q.threadId.trim();if(!te)return"";const me=q.cwd.trim()||((N=P==null?void 0:P.cwd)==null?void 0:N.trim())||"",je=vL((P==null?void 0:P.title)||(P==null?void 0:P.preview)||"Untitled thread");pn(te,me,je),ao(te,q.model),yr(te,q.messages),D.value={...D.value,[te]:!0},le.value={...le.value,[te]:!0},br(te),ja(te,[]),wr(te),L.value[te]&&(L.value=Ct(L.value,te)),Yt(te,null),Jt(te,null),en(te,null),hn(te,!1);const Je=E-c;if(Je>0){const pt=await rf(te,Je);yr(te,pt)}return await Yi(te,je),bn(te),Ds().catch(()=>{}),te}catch(q){return mt.value=q instanceof Error?q.message:"Unknown application error",""}}async function us(i,c,h=[],b=[],E=[]){if(!i||!c.trim()||h.length>0||b.length>0||E.length>0)return!1;const N=(it.value[i]??[]).filter(me=>me.method==="item/tool/requestUserInput");if(N.length!==1)return!1;const[q]=N,te=Lr(q);return te.length!==1?!1:nl({id:q.id,result:{answers:{[te[0]]:{answers:[c.trim()]}}}})}function jn(){if(typeof window>"u")return{};try{const i=window.localStorage.getItem(iv);if(!i)return{};const c=JSON.parse(i);if(!c||typeof c!="object"||Array.isArray(c))return{};const h={};for(const[b,E]of Object.entries(c)){if(!b||!Array.isArray(E))continue;const P=E.filter(N=>!!N&&typeof N=="object"&&typeof N.id=="string"&&typeof N.text=="string");P.length>0&&(h[b]=P)}return h}catch{return{}}}function Cr(){typeof window>"u"||window.localStorage.setItem(iv,JSON.stringify($e.value))}function cs(){if(typeof window>"u")return bc;try{const i=window.localStorage.getItem(lv);if(i===null)return bc;const c=Number(i);return Number.isFinite(c)&&c>=0?Math.round(c):bc}catch{return bc}}function Uu(i){const c=Number.isFinite(i)&&i>0?Math.round(i):0;c!==he.value&&(he.value=c,!(typeof window>"u")&&window.localStorage.setItem(lv,String(c)))}async function gd(i,c,h,b,E,P){if(Te||he.value<=0||Y.value[i]===!0)return!1;const N=Ze.value[i];if(!N||N.remainingContextPercent===null||N.remainingContextPercent>he.value)return!1;const q=$e.value[i]??[],te=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,me=P==="plan"?"plan":P==="default"?"default":nt.value;return $e.value={...$e.value,[i]:[...q,{id:te,text:c,imageUrls:h,skills:b,fileAttachments:E,collaborationMode:me}]},Cr(),go.value.has(i)||Wl(i),!0}async function _i(i){const c=$e.value[i];if(!c||c.length===0||Y.value[i]===!0)return;const h=[...c];$e.value=Ct($e.value,i),Cr(),Te=!0;try{for(const b of h)try{await Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments,void 0,b.collaborationMode)}catch{}}finally{Te=!1}}async function Ji(i,c=[],h=[],b="steer",E=[],P,N){if(vo.value)return;const q=n.value,te=i.trim();if(!q||!te&&c.length===0&&E.length===0||await us(q,te,c,h,E)||await gd(q,te,c,h,E,N))return;const me=Y.value[q]===!0;if(me&&b==="queue"){const je=pe.value[q]??[],Je=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,pt=[...je],ut=typeof P=="number"?Math.max(0,Math.min(P,pt.length)):pt.length;pt.splice(ut,0,{id:Je,text:te,imageUrls:c,skills:h,fileAttachments:E,collaborationMode:N==="plan"?"plan":N==="default"?"default":nt.value}),pe.value={...pe.value,[q]:pt},ca();return}if(me){eo=!0,Qi(q,te,c,h,E,N).catch(je=>{const Je=je instanceof Error?je.message:"Unknown application error";en(q,Je),mt.value=Je});return}mt.value="",eo=!0,Yt(q,null),Jt(q,{label:"Thinking",details:so(ln(q),_t.value,N==="plan"?"plan":N==="default"?"default":nt.value)}),en(q,null),hn(q,!0);try{await Qi(q,te,c,h,E,N)}catch(je){eo=!1,hn(q,!1),Jt(q,null);const Je=je instanceof Error?je.message:"Unknown application error";throw en(q,Je),mt.value=Je,je}}async function ki(i,c,h=[],b=[],E=[]){if(vo.value)return"";const P=i.trim(),N=c.trim(),q=ln(ri).trim(),te=nt.value;if(!P&&h.length===0&&E.length===0)return"";Bn.value=!0,mt.value="";let me="";try{try{const ut=await Pm(N||void 0,q||void 0);me=ut.threadId,ao(me,ut.model),ea(me,ut.modelProvider||gt.value),Lo(me,te)}catch(ut){if(q&&q!==ma&&xc(ut)){await ko();const Et=await Pm(N||void 0,ma);me=Et.threadId,ao(me,Et.model),ea(me,Et.modelProvider||gt.value),Lo(me,te)}else throw ut}if(!me)return"";pn(me,N,P||"[Image]"),ui(me,P,h,b,E),lo(me),le.value={...le.value,[me]:!0},bn(me),eo=!0,Yt(me,null),Jt(me,{label:"Thinking",details:so(ln(me),_t.value,te)}),en(me,null),hn(me,!0);const je=me,Je=N||null,pt=P;return Qi(me,P,h,b,E,te).catch(ut=>{eo=!1,hn(me,!1),Jt(me,null);const Et=ut instanceof Error?ut.message:"Unknown application error";en(me,Et),mt.value=Et}).finally(()=>{Bn.value=!1}),Fu(je,pt,Je,h,E),me}catch(je){eo=!1,me&&(hn(me,!1),Jt(me,null));const Je=je instanceof Error?je.message:"Unknown application error";throw me&&en(me,Je),mt.value=Je,Bn.value=!1,je}}async function Qi(i,c,h=[],b=[],E=[],P){const N=_t.value,q=P==="plan"?"plan":P==="default"?"default":nt.value,te=c.trim(),me=[...h];if(me.length===0&&Es(te)){const pt=xt(i);pt&&me.push(pt)}const je=b.map(pt=>({name:pt.name,path:pt.path})),Je=E.map(pt=>({...pt}));Ir(i,{text:te,imageUrls:[...me],skills:je,fileAttachments:Je,effort:N,collaborationMode:q,fallbackRetried:!1});try{if(le.value[i]!==!0){const Et=await of(i);Et.model&&ao(i,Mn(i,Et.model,Et.modelProvider)),Et.modelProvider&&ea(i,Et.modelProvider),le.value={...le.value,[i]:!0}}const pt=ln(i);let ut="";try{ut=await af(i,c,me,pt||void 0,N||void 0,b.length>0?b:void 0,E,q)}catch(Et){if(pt&&pt!==ma&&xc(Et))await ko(i),Ir(i,{text:te,imageUrls:[...me],skills:je,fileAttachments:Je,effort:N,collaborationMode:q,fallbackRetried:!0}),ut=await af(i,c,me,ma,N||void 0,b.length>0?b:void 0,E,q);else throw Et}ut&&(Ee.value={...Ee.value,[i]:ut},er(i,ut)),Xt.add(i),await zr(),O(i)}catch(pt){throw pt}}async function Xi(i){if(Ue.value[i]!==!0){Ue.value={...Ue.value,[i]:!0};try{pe.value=await jm()}catch{}finally{Ue.value=Ct(Ue.value,i)}}}function zl(i){Xi(i),!(typeof window>"u")&&window.setTimeout(()=>{Xi(i)},650)}async function Bu(){const i=n.value;if(!i||Y.value[i]!==!0||be.value[i]===!0)return;let c=Ee.value[i];if(!c){const{activeTurnId:P}=await nf(i);c=P,c&&(Ee.value={...Ee.value,[i]:c})}if(!c)throw new Error("Could not determine active turn id for interrupt");const h=_o.value.filter(P=>P.turnId===c),b=h.find(P=>P.role==="user"),E=h.some(P=>{if(P.role==="assistant")return!0;const N=P.messageType??"";return N==="commandExecution"||N==="toolCall"||N==="worked"||N==="fileChange"||N==="plan"||N==="plan.live"||N==="compaction.done"||N==="turnError"});Jo.value=!0,mt.value="";try{if(await U1(i,c),hn(i,!1),Jt(i,null),en(i,null),Ee.value[i]&&(Ee.value=Ct(Ee.value,i)),Xt.add(i),yn=!0,await zr(),b&&!E){const P=(o.value[i]??[]).filter(q=>q.turnId!==c);yr(i,P);const N=d.value[i];if(N){const q=N.filter(te=>te.turnId!==c);q.length!==N.length&&(d.value={...d.value,[i]:q},kc(d.value))}Ve.value={...Ve.value,[i]:{text:b.text??"",imageUrls:b.images??[],fileAttachments:(b.fileAttachments??[]).map(q=>({label:q.label,path:q.path,fsPath:q.fsPath??q.path})),skills:b.skills??[]}}}}catch(P){const N=P instanceof Error?P.message:"Failed to interrupt active turn";en(i,N),mt.value=N}finally{Jo.value=!1}}function Hl(i){i&&Ve.value[i]&&(Ve.value=Ct(Ve.value,i))}async function yd(i){var h,b;const c=n.value;if(c&&!Qn.value&&i.trim()){Qn.value=!0,mt.value="";try{Y.value[c]===!0&&await Bu();const E=o.value[c]??[],P=E.find(Je=>Je.turnId===i),N=typeof(P==null?void 0:P.turnIndex)=="number"?P.turnIndex:-1;if(N<0)return;const q=E.reduce((Je,pt)=>typeof pt.turnIndex=="number"&&pt.turnIndex>Je?pt.turnIndex:Je,-1);if(q<0||N>q)return;const te=q-N+1;if(te<1)return;const me=((b=(h=hr.value)==null?void 0:h.cwd)==null?void 0:b.trim())??"";me&&await N1(c,i,me);const je=await rf(c,te);yr(c,je),ja(c,[]),wr(c),L.value[c]&&(L.value=Ct(L.value,c)),Yt(c,null),Jt(c,null),en(c,null),yn=!0,await zr()}catch(E){mt.value=E instanceof Error?E.message:"Failed to rollback thread"}finally{Qn.value=!1}}}function Tr(i,c){const b=(u.value[i]??[]).filter(E=>E.messageType!=="compaction.pending"&&E.messageType!=="compaction.done");b.push({id:`compaction:${c}:${i}:${Date.now()}`,role:"system",text:"",messageType:c==="pending"?"compaction.pending":"compaction.done"}),u.value={...u.value,[i]:b}}function Us(i,c){const h=new Set(go.value);c?h.add(i):h.delete(i),go.value=h}function Zi(i){gn=i.trim(),dr.value=[]}async function Wl(i){const c=i.trim();if(!(!c||go.value.has(c))){Us(c,!0),Tr(c,"pending");try{await M1(c);const h=2e3,b=14,E=Date.now()+Qo;let P=0;for(;Date.now()<E&&P<b&&go.value.has(c);){if((await nf(c)).messages.some(te=>te.messageType==="compaction.done")){Us(c,!1),n.value===c&&await da(c,{silent:!0,force:!0}),Tr(c,"done"),_i(c);break}P+=1,await fN(h)}go.value.has(c)&&(Us(c,!1),Tr(c,"done"),_i(c))}catch(h){mt.value=h instanceof Error?h.message:"Failed to compact thread",Us(c,!1),Tr(c,"done"),_i(c)}}}let mn=null;async function el(i,c){try{const h=await ml(),b={...h.labels};let E=!1;for(const P of h.order){if(!Lc(P,i))continue;const N=c.trim();N.length===0?b[P]!==void 0&&(delete b[P],E=!0):b[P]!==N&&(b[P]=N,E=!0)}E&&await sf({order:h.order,labels:b,active:h.active,projectOrder:h.projectOrder})}catch{}}function wd(i,c){i.length===0||(Be.value[i]??"")===c||(Be.value={...Be.value,[i]:c},wv(Be.value),mn!==null&&clearTimeout(mn),mn=setTimeout(()=>{mn=null,el(i,c)},500))}async function tl(i){var P;if(i.length===0)return;const c=H.value.filter(N=>N!==i);if(ws(H.value,c)||(H.value=c,iu(H.value)),t.value=t.value.filter(N=>N.projectName!==i),Be.value[i]!==void 0){const N={...Be.value};delete N[i],Be.value=N,wv(N)}jt();const h=Eo(e.value);io(h),h.some(N=>N.id===n.value)||bn(((P=h[0])==null?void 0:P.id)??"");const E=new Set;try{const N=await ml();dL(N,i).forEach(q=>{E.add(q)})}catch{}if(E.size>0)try{const N=await ml(),q=N.order.filter(je=>!E.has(je)),te=N.active.filter(je=>!E.has(je)),me=te.length===0&&q.length>0?[q[0]]:te;await sf({order:q,labels:rL(N.labels,E),active:me,projectOrder:N.projectOrder.filter(je=>je!==i&&!E.has(je))});return}catch{}await Ci()}function bd(i,c){if(i.length===0||t.value.length===0)return;const h=t.value.map(te=>te.projectName),b=h.indexOf(i);if(b===-1)return;const E=Math.max(0,Math.min(c,h.length-1)),P=HN(h,b,E);if(P===h)return;const N=fl(P,t.value);H.value=N,iu(H.value);const q=vf(t.value,H.value);t.value=Pc(t.value,q),jt(),Ci()}function qu(i){const c=i.trim();if(!c)return;const h=[c,...H.value.filter(E=>E!==c)];if(ws(H.value,h))return;H.value=h,iu(H.value);const b=vf(t.value,H.value);t.value=Pc(t.value,b),jt(),Ci()}async function Ci(){try{const i=await ml(),c=fL(i,H.value,t.value);await sf({order:c.order,labels:i.labels,active:c.active,projectOrder:c.projectOrder})}catch{}}async function zr(){if(nn.value){typeof window<"u"&&ht===null&&(ht=window.setTimeout(()=>{ht=null,zr()},_c));return}nn.value=!0;const i=yn,c=Qr,h=new Set(Xt);yn=!1,Qr=!1,Xt.clear();try{i&&await Ds({force:c});const b=n.value;if(!b)return;const E=h.has(b),P=Y.value[b]===!0,N=co(b),q=$.value[b]??"";(N.length>0&&N!==q||E||P&&D.value[b]!==!0||i&&D.value[b]!==!0)&&await da(b,{silent:!0,force:E})}catch{}finally{nn.value=!1,(yn||Xt.size>0)&&typeof window<"u"&&ht===null&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}}async function zu(){await Wu(),yn=!Xn.value,n.value&&D.value[n.value]!==!0&&Xt.add(n.value),await zr()}function Vl(i){const c=qe(i.params),h=typeof(c==null?void 0:c.threadId)=="string"?c.threadId.trim():"";if(!h)return;const b=qe(c==null?void 0:c.externalSession),E=b&&typeof b.origin=="string"&&b.origin.trim().length>0?{origin:b.origin.trim(),active:b.active===!0,lastWriteAt:typeof b.lastWriteAt=="string"?b.lastWriteAt:null}:null;Fe.value={...Fe.value,[h]:E},hn(h,(E==null?void 0:E.active)===!0),jt(),yn=!0,n.value===h&&Xt.add(h),ht===null&&typeof window<"u"&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}function Hu(){typeof window>"u"||Gt||(Wu(),_d(),Gt=w1(i=>{if(i.method==="ready"){Rs(),zu();return}if(i.method==="externalSessionChanged"){Vl(i);return}Os(i),Ua(i)}))}async function Wu(){try{const c=(await xm()).map(h=>ns(h)).filter(h=>h!==null);kr(c)}catch{}}async function _d(){try{const i=await AS(),c=Object.entries(i);if(c.length===0)return;const h={...d.value};let b=!1;for(const[E,P]of c){const N=P.filter(je=>!!je&&typeof je.id=="string");if(N.length===0)continue;const q=h[E]??[],te=new Set(q.map(je=>je.text)),me=[...q];for(const je of N)te.has(je.text)||(me.push(je),te.add(je.text));h[E]=me.slice(-20),b=!0}b&&(d.value=h,kc(h))}catch{}}async function nl(i){try{return await k1(i.id,{result:i.result,error:i.error}),nr(i.id),ve.value=Ct(ve.value,String(i.id)),!0}catch(c){const h=c instanceof Error?c.message:"Failed to reply to server request";return await Gl(i.id)?(mt.value=h,ve.value={...ve.value,[String(i.id)]:h},!1):(nr(i.id),ve.value=Ct(ve.value,String(i.id)),!0)}}async function Gl(i){try{const c=await xm();for(const h of c){const b=qe(h);if((b==null?void 0:b.id)===i)return!0}return!1}catch{return!0}}function kd(){if(Gt&&(Gt(),Gt=null),yn=!1,Xt.clear(),qn.clear(),ht!==null&&typeof window<"u"&&(window.clearTimeout(ht),ht=null),Xo!==null&&typeof window<"u"&&(window.clearTimeout(Xo),Xo=null),$o!==null&&typeof window<"u"&&(window.clearTimeout($o),$o=null),typeof window<"u")for(const i of sn.values())window.clearTimeout(i);sn.clear(),eo=!1,o.value={},r.value={},a.value={},m.value={},d.value={},L.value={},B.value={},oe.value={},we.value={},Ce.value={},ce.value={},Ee.value={},R.clear(),w.clear(),x.clear(),oi.clear(),Oc=0,be.value={},Oe.value={},Re.value={},pe.value={},Ue.value={},$e.value={},Cr(),ca(),It.value=null,Ze.value={}}const Ti=ee(()=>{const i=n.value;if(!i)return[];const c=pe.value[i]??[];return[...($e.value[i]??[]).map(E=>({...E,awaitingCompaction:!0})),...c]});function ol(i){const c=n.value;if(!c)return;const h=$e.value[c];if(h!=null&&h.some(P=>P.id===i)){const P=h.filter(N=>N.id!==i);$e.value=P.length>0?{...$e.value,[c]:P}:Ct($e.value,c),Cr();return}const b=pe.value[c];if(!b)return;const E=b.filter(P=>P.id!==i);pe.value=E.length>0?{...pe.value,[c]:E}:Ct(pe.value,c),ca()}function Kl(i,c){const h=n.value;if(!h)return;const b=pe.value[h];if(!b)return;const E=$e.value[h];if(E!=null&&E.some(me=>me.id===i||me.id===c))return;const P=b.findIndex(me=>me.id===i),N=b.findIndex(me=>me.id===c);if(P<0||N<0||P===N)return;const q=[...b],[te]=q.splice(P,1);q.splice(N,0,te),pe.value={...pe.value,[h]:q},ca()}function ds(i){const c=n.value;if(!c)return;const h=$e.value[c],b=h==null?void 0:h.find(N=>N.id===i);if(b){ol(i),Hn(b.collaborationMode),Te=!0,Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments).finally(()=>{Te=!1});return}const E=pe.value[c];if(!E)return;const P=E.find(N=>N.id===i);P&&(ol(i),Hn(P.collaborationMode),Ji(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments))}function Cd(i,c={}){bn(i,c)}return{projectGroups:e,projectDisplayNameById:Be,selectedThread:hr,selectedThreadTokenUsage:to,selectedThreadTerminalOpen:Zr,isSelectedThreadInterruptPending:Ia,selectedThreadServerRequests:Pr,selectedLiveOverlay:Xa,selectedActiveTurnId:Er,lastPlanByThreadId:s,resolveThreadTurnIndex:Ol,codexQuota:Ra,selectedThreadId:n,availableCollaborationModes:St,availableModelIds:De,availableModelReasoningEfforts:Ye,selectedCollaborationMode:nt,selectedModelId:dt,selectedReasoningEffort:_t,selectedSpeedMode:Tt,codexCliMissingError:se,installedSkills:Q,accountRateLimitSnapshots:de,messages:_o,hasMoreOlderMessages:wt,isLoadingThreads:ot,isThreadListFullyLoaded:Vt,isLoadingMessages:Ft,isLoadingOlderMessages:Rn,isSendingMessage:Bn,isInterruptingTurn:Jo,isUpdatingSpeedMode:vo,isRollingBack:Qn,compactingThreadIds:go,fuzzyFileSearchResults:dr,registerFuzzyFileSearchSession:Zi,error:mt,refreshAll:wi,refreshSkills:Fs,refreshHooks:Ki,hooksList:Le,isHooksLoading:We,onRealtimeEvent:Ls,selectThread:za,loadMessages:da,loadOlderMessages:qr,ensureThreadMessagesLoaded:yi,setThreadTerminalOpen:gr,toggleSelectedThreadTerminal:Wi,archiveThreadById:Bl,compactThreadById:Wl,renameThreadById:Yi,forkThreadById:ql,forkThreadFromTurn:bi,rollbackSelectedThread:yd,sendMessageToSelectedThread:Ji,sendMessageToNewThread:ki,interruptSelectedThreadTurn:Bu,interruptedUnsubmittedMessage:no,clearInterruptedUnsubmittedMessage:Hl,selectedThreadQueuedMessages:Ti,removeQueuedMessage:ol,reorderQueuedMessage:Kl,steerQueuedMessage:ds,autoCompactThreshold:he,setAutoCompactThreshold:Uu,setSelectedCollaborationMode:Hn,readModelIdForThread:ln,setSelectedModelIdForThread:Sn,setSelectedModelId:ro,setSelectedReasoningEffort:fn,updateSelectedSpeedMode:$t,respondToPendingServerRequest:nl,pendingReplyErrorForRequest:or,renameProject:wd,removeProject:tl,reorderProject:bd,pinProjectToTop:qu,startPolling:Hu,stopPolling:kd,primeSelectedThread:Cd}}const kL={class:"sidebar-root"},CL=["aria-pressed","aria-label","title"],TL={key:1,class:"sidebar-search-bar"},SL=["placeholder"],xL=["aria-label"],AL={class:"sidebar-skills-link-icon","aria-hidden":"true"},PL={class:"sidebar-skills-link-copy"},EL={class:"sidebar-skills-link-title"},IL={class:"sidebar-skills-link-subtitle"},RL={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},ML={class:"sidebar-skills-link-copy"},$L={class:"sidebar-skills-link-title"},jL={class:"sidebar-skills-link-subtitle"},NL=["aria-label"],LL={class:"settings-dialog-header"},OL={class:"settings-dialog-title"},DL=["aria-label","title"],FL={class:"settings-dialog-body"},UL=["aria-label"],BL=["aria-current","onClick"],qL={class:"settings-group-content"},zL={class:"sidebar-settings-account-section"},HL={class:"sidebar-settings-account-header"},WL={class:"sidebar-settings-account-header-main"},VL=["aria-expanded","title"],GL={class:"sidebar-settings-account-collapse-icon"},KL={class:"sidebar-settings-account-title"},YL={class:"sidebar-settings-account-count"},JL=["disabled"],QL={key:0,class:"sidebar-settings-account-error visible-error-with-feedback"},XL=["href"],ZL={class:"sidebar-settings-account-login"},eO=["disabled"],tO=["href"],nO={key:1,class:"sidebar-settings-account-empty"},oO={key:2,class:"sidebar-settings-account-list"},rO=["title","onMouseenter","onMouseleave"],aO={class:"sidebar-settings-account-main"},sO={class:"sidebar-settings-account-email"},iO={class:"sidebar-settings-account-meta"},lO={class:"sidebar-settings-account-quota"},uO={class:"sidebar-settings-account-id"},cO={class:"sidebar-settings-account-actions"},dO=["disabled","onClick"],fO=["disabled","onClick"],pO=["title"],hO={class:"sidebar-settings-label"},mO=["title"],vO={class:"sidebar-settings-label"},gO={class:"sidebar-settings-value"},yO=["title"],wO={class:"sidebar-settings-label"},bO={class:"sidebar-settings-value"},_O=["title"],kO={class:"sidebar-settings-label"},CO=["title"],TO={class:"sidebar-settings-label"},SO={class:"sidebar-settings-value"},xO=["title"],AO={class:"sidebar-settings-label"},PO=["title"],EO={class:"sidebar-settings-label"},IO=["title"],RO={class:"sidebar-settings-label"},MO=["title"],$O={class:"sidebar-settings-label"},jO=["href"],NO={class:"sidebar-settings-label"},LO={class:"sidebar-settings-value"},OO=["title"],DO={class:"sidebar-settings-label"},FO={key:0,class:"sidebar-settings-row sidebar-settings-error"},UO=["href"],BO={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},qO={class:"sidebar-settings-provider-info"},zO={class:"sidebar-settings-label"},HO={class:"sidebar-settings-provider-link",href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer"},WO={class:"sidebar-settings-key-group"},VO={class:"sidebar-settings-key-masked"},GO=["disabled","title"],KO=["placeholder"],YO=["disabled"],JO={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},QO={class:"sidebar-settings-label"},XO=["aria-label"],ZO=["disabled"],eD=["disabled"],tD={key:2,class:"sidebar-settings-row sidebar-settings-row--input"},nD={class:"sidebar-settings-provider-info"},oD={class:"sidebar-settings-label"},rD={class:"sidebar-settings-provider-link",href:"https://opencode.ai/auth",target:"_blank",rel:"noopener noreferrer"},aD={class:"sidebar-settings-key-group"},sD=["placeholder"],iD=["disabled"],lD={key:3,class:"sidebar-settings-row sidebar-settings-row--input"},uD={class:"sidebar-settings-label"},cD={class:"sidebar-settings-key-group"},dD=["placeholder"],fD={class:"sidebar-settings-label",style:{"margin-top":"4px"}},pD={class:"sidebar-settings-key-group"},hD=["placeholder"],mD=["disabled"],vD={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},gD={class:"sidebar-settings-label"},yD=["aria-label"],wD={class:"sidebar-settings-label"},bD={class:"sidebar-settings-value"},_D={key:0,class:"sidebar-settings-telegram-panel"},kD={class:"sidebar-settings-field"},CD={class:"sidebar-settings-field-label"},TD={class:"sidebar-settings-field"},SD={class:"sidebar-settings-field-label"},xD={class:"sidebar-settings-field-help"},AD={key:0,class:"sidebar-settings-telegram-error"},PD=["href"],ED={class:"sidebar-settings-telegram-actions"},ID=["disabled"],RD={class:"sidebar-settings-hooks-section"},MD={class:"sidebar-settings-hooks-header"},$D={class:"sidebar-settings-hooks-title"},jD=["disabled","title"],ND={key:0,class:"sidebar-settings-hooks-empty"},LD={key:0,class:"sidebar-settings-hooks-empty"},OD={key:1,class:"sidebar-settings-hooks-empty"},DD={key:2,class:"sidebar-settings-hooks-list"},FD={class:"sidebar-settings-hooks-cwd"},UD={class:"sidebar-settings-hooks-event"},BD={class:"sidebar-settings-hooks-command"},qD={class:"sidebar-settings-remote-section"},zD={class:"sidebar-settings-remote-header"},HD={class:"sidebar-settings-remote-title"},WD=["disabled","title"],VD={class:"sidebar-settings-remote-toggle-label"},GD={key:0,class:"sidebar-settings-remote-empty"},KD={key:0,class:"sidebar-settings-remote-error"},YD={key:1,class:"sidebar-settings-remote-notice"},JD={key:2,class:"sidebar-settings-remote-empty"},QD=["disabled"],XD={class:"sidebar-settings-remote-label"},ZD={class:"sidebar-settings-remote-value"},eF={class:"sidebar-settings-remote-clients"},tF={class:"sidebar-settings-remote-clients-header"},nF={class:"sidebar-settings-remote-label"},oF=["disabled"],rF={key:0,class:"sidebar-settings-remote-empty"},aF={class:"sidebar-settings-remote-client-name"},sF=["disabled","onClick"],iF={class:"sidebar-settings-rate-limits"},lF=["aria-label"],uF={class:"sidebar-settings-actions"},cF=["title","aria-label"],dF=["title","aria-label"],fF={class:"content-root-wrap"},pF={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},hF={key:1,class:"skills-route-header-icon","aria-hidden":"true"},mF={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},vF=["aria-label","title"],gF={class:"content-body"},yF={key:2,class:"content-grid content-grid-home"},wF={class:"new-thread-empty"},bF={class:"new-thread-hero"},_F=["title"],kF={class:"new-thread-folder-actions"},CF=["disabled"],TF={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},SF={class:"new-thread-launch-card-copy"},xF={class:"new-thread-launch-card-topline"},AF={class:"new-thread-launch-card-badge","aria-hidden":"true"},PF={class:"new-thread-launch-card-eyebrow"},EF={class:"new-thread-launch-card-title"},IF={class:"new-thread-launch-card-text"},RF={class:"new-thread-launch-card-actions"},MF=["aria-label","onKeydown"],$F={class:"new-thread-open-folder-header"},jF={class:"new-thread-open-folder-title"},NF={class:"new-thread-open-folder-label"},LF={class:"new-thread-open-folder-current"},OF=["placeholder","title","disabled","onKeydown"],DF=["disabled"],FF={class:"new-thread-open-folder-actions"},UF={class:"new-thread-open-folder-toggle"},BF=["aria-pressed","disabled"],qF={key:0,class:"new-thread-open-folder-create"},zF={class:"new-thread-open-folder-create-composer"},HF=["placeholder","onKeydown"],WF=["disabled"],VF={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},GF=["href"],KF=["placeholder","onKeydown"],YF={key:1,class:"new-thread-open-folder-error-actions"},JF={class:"new-thread-open-folder-error visible-error-with-feedback"},QF=["href"],XF=["disabled"],ZF={key:2,class:"new-thread-open-folder-status"},eU={key:3,class:"new-thread-open-folder-status"},tU={key:4,class:"new-thread-open-folder-list"},nU=["title","disabled","onClick"],oU={class:"new-thread-open-folder-item-name"},rU=["disabled","onClick"],aU=["aria-label","onKeydown"],sU={class:"new-thread-open-folder-header"},iU={class:"new-thread-open-folder-title"},lU=["disabled"],uU=["aria-label"],cU=["aria-selected","disabled"],dU=["aria-selected","disabled"],fU={class:"new-thread-project-field"},pU={class:"new-thread-open-folder-label"},hU=["disabled","placeholder"],mU={key:0,class:"new-thread-project-field"},vU={class:"new-thread-open-folder-label"},gU=["disabled","placeholder","onKeydown"],yU={key:1,class:"new-thread-project-field"},wU={class:"new-thread-open-folder-label"},bU=["disabled","onKeydown"],_U={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},kU=["href"],CU={class:"new-thread-project-modal-actions"},TU=["disabled"],SU=["disabled"],xU={key:3,class:"new-thread-branch-select"},AU={class:"new-thread-branch-select-label"},PU={class:"new-thread-branch-select-help"},EU={key:4,class:"new-thread-runtime-help"},IU={class:"worktree-init-status-title"},RU={class:"worktree-init-status-message"},MU={class:"composer-with-queue"},$U={key:0,class:"composer-runtime-error",role:"alert"},jU=["href"],NU={key:3,class:"content-grid"},LU={class:"content-thread"},OU={key:0,class:"external-session-banner",role:"alert"},DU={key:1,class:"composer-runtime-error",role:"alert"},FU=["href"],UU={key:2,class:"interrupt-recovered-banner",role:"status"},BU=["aria-label"],qU={class:"content-right-panel-header"},zU={class:"content-right-panel-tabs",role:"tablist"},HU=["aria-selected"],WU=["aria-selected"],VU=["aria-selected","title","onClick"],GU={class:"content-right-panel-tab-label"},KU=["aria-label","title","onClick"],YU={class:"content-right-panel-actions"},JU={class:"content-right-panel-add-wrap"},QU=["aria-label","title"],XU={key:0,class:"content-right-panel-menu"},ZU=["aria-label","title"],e4={class:"content-right-panel-body"},t4={key:0,class:"project-zip-modal-backdrop",role:"presentation"},n4=["aria-label"],o4={class:"project-zip-modal-header"},r4={class:"project-zip-modal-title"},a4=["aria-label","disabled"],s4={class:"project-zip-modal-copy"},i4={class:"project-zip-progress-label",role:"status","aria-live":"polite"},l4={class:"project-zip-progress-track"},u4={key:0,class:"project-zip-modal-error",role:"alert"},c4={class:"project-zip-modal-actions"},d4=["disabled"],f4=["disabled"],p4=["disabled"],h4=["aria-label"],m4={class:"codex-login-modal-header"},v4={class:"codex-login-modal-title"},g4=["aria-label","disabled"],y4={class:"codex-login-modal-copy"},w4=["href"],b4=["placeholder","disabled"],_4={key:1,class:"codex-login-modal-error visible-error-with-feedback"},k4=["href"],C4={class:"codex-login-modal-actions"},T4=["disabled"],S4=["disabled"],Cv="codex-web-local.sidebar-collapsed.v1",Tv="codex-web-local.accounts-section-collapsed.v1",Sv="codex-web-local.right-panel-width.v1",x4=260,A4=640,xv=320,P4=400,Av="codex-web-local.send-with-enter.v1",Pv="codex-web-local.in-progress-send-mode.v1",Ev="codex-web-local.dark-mode.v1",Iv="codex-web-local.dictation-click-to-toggle.v1",Rv="codex-web-local.dictation-auto-send.v1",Mv="codex-web-local.dictation-language.v1",$v="codex-web-local.chat-width.v1",E4=400,I4=Nn({__name:"App",setup(e){var lh,uh;const t=nu(()=>au(()=>import("./ThreadConversation-CfozD14u.js"),__vite__mapDeps([0,1,2]))),n=nu(()=>au(()=>import("./ThreadTerminalPanel-hWwS8_eX.js"),__vite__mapDeps([3,4]))),o=nu(()=>au(()=>import("./ReviewPane-d8B-VWFC.js"),__vite__mapDeps([5,6]))),r=nu(()=>au(()=>import("./DirectoryHub-qdoRipfo.js"),__vite__mapDeps([7,1,8]))),s=nu(()=>au(()=>import("./AutomationsPanel-DPyx78VB.js"),__vite__mapDeps([9,10]))),{t:a,uiLanguage:u,uiLanguageOptions:d,setUiLanguage:m}=Ar(),g="codex-mobile",w="0.1.91",x={sendWithEnter:a("When enabled, press Enter to send. When disabled, use Command+Enter to send."),inProgressSendMode:a("If a turn is still running, choose whether a new prompt should steer the current turn or be queued."),appearance:a("Switch between system theme, light mode, and dark mode."),chatWidth:a("Choose how wide the conversation column and composer can grow on desktop screens."),dictationClickToToggle:a("Use click-to-start and click-to-stop dictation instead of hold-to-talk."),dictationAutoSend:a("Automatically send transcribed dictation when recording stops."),dictationLanguage:a("Choose transcription language or keep auto-detect.")},R={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},L={en:"english",zh:"chinese",de:"german",es:"spanish",ru:"russian",ko:"korean",fr:"french",ja:"japanese",pt:"portuguese",tr:"turkish",pl:"polish",ca:"catalan",nl:"dutch",ar:"arabic",sv:"swedish",it:"italian",id:"indonesian",hi:"hindi",fi:"finnish",vi:"vietnamese",he:"hebrew",uk:"ukrainian",el:"greek",ms:"malay",cs:"czech",ro:"romanian",da:"danish",hu:"hungarian",ta:"tamil",no:"norwegian",th:"thai",ur:"urdu",hr:"croatian",bg:"bulgarian",lt:"lithuanian",la:"latin",mi:"maori",ml:"malayalam",cy:"welsh",sk:"slovak",te:"telugu",fa:"persian",lv:"latvian",bn:"bengali",sr:"serbian",az:"azerbaijani",sl:"slovenian",kn:"kannada",et:"estonian",mk:"macedonian",br:"breton",eu:"basque",is:"icelandic",hy:"armenian",ne:"nepali",mn:"mongolian",bs:"bosnian",kk:"kazakh",sq:"albanian",sw:"swahili",gl:"galician",mr:"marathi",pa:"punjabi",si:"sinhala",km:"khmer",sn:"shona",yo:"yoruba",so:"somali",af:"afrikaans",oc:"occitan",ka:"georgian",be:"belarusian",tg:"tajik",sd:"sindhi",gu:"gujarati",am:"amharic",yi:"yiddish",lo:"lao",uz:"uzbek",fo:"faroese",ht:"haitian creole",ps:"pashto",tk:"turkmen",nn:"nynorsk",mt:"maltese",sa:"sanskrit",lb:"luxembourgish",my:"myanmar",bo:"tibetan",tl:"tagalog",mg:"malagasy",as:"assamese",tt:"tatar",haw:"hawaiian",ln:"lingala",ha:"hausa",ba:"bashkir",jw:"javanese",su:"sundanese",yue:"cantonese"},{projectGroups:B,projectDisplayNameById:Y,selectedThread:ae,selectedThreadTokenUsage:z,selectedThreadServerRequests:Z,selectedLiveOverlay:X,lastPlanByThreadId:ye,resolveThreadTurnIndex:Me,selectedActiveTurnId:Se,codexQuota:Fe,selectedThreadId:pe,availableCollaborationModes:Ue,availableModelIds:$e,availableModelReasoningEfforts:he,selectedCollaborationMode:Te,selectedReasoningEffort:Ae,selectedSpeedMode:Pe,codexCliMissingError:De,installedSkills:Ye,accountRateLimitSnapshots:He,messages:St,hasMoreOlderMessages:ct,isLoadingThreads:Ge,isThreadListFullyLoaded:nt,isLoadingMessages:dt,isLoadingOlderMessages:_t,isSendingMessage:Tt,isInterruptingTurn:gt,isSelectedThreadInterruptPending:se,isUpdatingSpeedMode:ne,error:re,refreshAll:H,refreshSkills:Be,refreshHooks:$,hooksList:D,isHooksLoading:G,onRealtimeEvent:ie,selectThread:le,ensureThreadMessagesLoaded:oe,loadMessages:Ce,loadOlderMessages:we,archiveThreadById:ve,compactThreadById:ce,compactingThreadIds:Ee,fuzzyFileSearchResults:be,registerFuzzyFileSearchSession:Oe,forkThreadById:Re,renameThreadById:Ve,forkThreadFromTurn:it,sendMessageToSelectedThread:yt,sendMessageToNewThread:It,interruptSelectedThreadTurn:Ze,interruptedUnsubmittedMessage:Wt,clearInterruptedUnsubmittedMessage:W,selectedThreadQueuedMessages:K,removeQueuedMessage:Q,reorderQueuedMessage:de,steerQueuedMessage:Le,autoCompactThreshold:We,setAutoCompactThreshold:ot,setSelectedCollaborationMode:Ft,readModelIdForThread:Vt,setSelectedModelIdForThread:Bn,setSelectedReasoningEffort:Jo,updateSelectedSpeedMode:vo,respondToPendingServerRequest:Qn,pendingReplyErrorForRequest:go,renameProject:Qo,removeProject:dr,reorderProject:gn,pinProjectToTop:mt,startPolling:nn,stopPolling:Xn,primeSelectedThread:Aa,rollbackSelectedThread:Es}=_L(),xt=JC(),Gt=YC(),{isMobile:ht}=yp();function Xo(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const sn=S(null),fr=S(null),yo=S(null);let Ln=null;const{buildFeedbackMailto:pr,feedbackMailtoBase:Pa,recordVisibleFailure:Ja}=xp(),Kn=Pa();function In(l,p){p&&Ja(p);const M=l.currentTarget;M instanceof HTMLAnchorElement&&(M.href=pr())}const Qa=S(null),Zn=S(null),yn=S(null),Qr=S(0);let Xt=null;function Xr(){const l=yn.value;if(!l)return;const p=window.getComputedStyle(l),M=Number.parseFloat(p.paddingLeft)+Number.parseFloat(p.paddingRight),j=Math.max(0,l.clientWidth-(Number.isFinite(M)?M:0)),U=window.getComputedStyle(l).getPropertyValue("--chat-column-max").trim(),fe=Number.parseFloat(U)*(U.endsWith("rem")?16:1),Ne=Number.isFinite(fe)&&fe>0?Math.min(j,fe):j;Qr.value=Ne}const Ea=S(null),wo=S(null),$o=S(!1),jo=S(!1),Lt=S(!0),Rt=S("git"),Yn=S([]),bo=S(""),eo=ee(()=>Yn.value.find(l=>l.key===bo.value)??null),qn=S(!1),On=S(!1),No=S(!1),hr=S(Ia());function Zr(l){return Math.min(A4,Math.max(x4,l))}function Ia(){if(typeof window>"u")return xv;const l=window.localStorage.getItem(Sv),p=Number(l);return Number.isFinite(p)?Zr(p):xv}function Pr(l){typeof window>"u"||window.localStorage.setItem(Sv,String(l))}function Er(l){l.preventDefault();const p=l.clientX,M=hr.value,j=fe=>{const Ne=p-fe.clientX;hr.value=Zr(M+Ne)},U=()=>{Pr(hr.value),window.removeEventListener("mousemove",j),window.removeEventListener("mouseup",U)};window.addEventListener("mousemove",j),window.addEventListener("mouseup",U)}const Xa=S(null),Ra=S(!1),to=S("");let _o=!1;const no=S(!1),wt=S(""),Rn=S("local"),zn=S({}),ln=new Map,oo=S(""),Zo=S([]),mr=S(!1),Jn=S({order:[],labels:{},projectOrder:[]}),Mt=S({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),wn=S({phase:"idle",title:"",message:""}),Kt=S(Xb()),bn=S(""),Sn=S(!1),ro=S(null),ao=S(null),ea=S(null),Mn=S(null),Za=S(null),Hn=S(null);let Lo=null,vr=null,ko=0,Ir=0,ta=!1,Oo=0,fn=0,$t=0,Do=0;const so=S("New Project (1)"),Rr=S(""),_n=S(!1),Ma=[{id:"general",label:"General settings"},{id:"models",label:"Models & providers"},{id:"integrations",label:"Integrations"},{id:"usage",label:"Usage & about"}],I=S("general");let O=0;function V(){if(_n.value){O=Date.now(),_n.value=!1;return}Date.now()-O<P4||(_n.value=!0)}const ge=S(e_()),et=S(!1),Ut=S(!1),jt=S(new Set);async function pn(){try{jt.value=new Set(await o1())}catch{}finally{Ut.value=!0}}const io=ee(()=>!Ut.value||jt.value.has("hooks/list")),Mr=ee(()=>!Ut.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(l=>jt.value.has(l)));rt(_n,l=>{l&&($(),ui(),Mr.value&&ci())});const Yt=S({enabled:!1,clients:[]}),hn=S(null),Fo=S(!1),lo=S(!1),uo=S(""),er=S(""),Is=S("");let $a=null,ii=!1,Jt=null;const en=S("never"),li=S(!1),Rs=S(!1),co=S(""),gr=S("");let Wi=!1;const yr=S(!1);async function ui(l={}){if(!(l.force!==!0&&Wi)){li.value=!0,co.value="";try{en.value=await l1(),Wi=!0}catch(p){co.value=p instanceof Error?p.message:"Failed to load approval policy"}finally{li.value=!1}}}function ja(l){en.value=l}async function Dn(){Rs.value=!0,co.value="",gr.value="";try{await u1(en.value),yr.value=!0,gr.value=a("Approval policy saved"),es&&clearTimeout(es),es=setTimeout(()=>{gr.value=""},2200)}catch(l){co.value=l instanceof Error?l.message:"Failed to save approval policy"}finally{Rs.value=!1}}let es=null;async function ci(l={}){if(!(l.force!==!0&&ii)){Fo.value=!0,er.value="";try{const p=await i1();Yt.value=p,ii=!0}catch(p){er.value=p instanceof Error?p.message:"Failed to load remote control status"}finally{Fo.value=!1}}}async function di(){const l=!Yt.value.enabled;lo.value=!0,uo.value=l?"enable":"disable";try{await c1(l),Yt.value={...Yt.value,enabled:l},fi(l?"Remote control enabled":"Remote control disabled")}catch(p){er.value=p instanceof Error?p.message:"Failed to update remote control"}finally{lo.value=!1,uo.value=""}}async function Vi(){lo.value=!0,uo.value="pairing";try{hn.value=await d1()}catch(l){er.value=l instanceof Error?l.message:"Failed to start pairing"}finally{lo.value=!1,uo.value=""}}async function Ms(){lo.value=!0,uo.value="clients";try{Yt.value={...Yt.value,clients:await f1()}}catch(l){er.value=l instanceof Error?l.message:"Failed to load remote clients"}finally{lo.value=!1,uo.value=""}}async function Nl(l){lo.value=!0,uo.value=`revoke:${l}`;try{await p1(l),Yt.value={...Yt.value,clients:Yt.value.clients.filter(p=>p.clientId!==l)},fi("Remote client removed")}catch(p){er.value=p instanceof Error?p.message:"Failed to remove remote client"}finally{lo.value=!1,uo.value=""}}function fi(l){Is.value=l,$a&&clearTimeout($a),$a=setTimeout(()=>{Is.value=""},3e3)}const $r=S(""),na=S(""),wr=S([]),oa=S(null),Na=S(null),br=S(null),La=S(null),Uo=S(!1),ts=S(!1),jr=S({addedLineCount:0,removedLineCount:0}),Co=S([]),Nr=S(""),qe=S({}),ke=S(""),Wn=S(""),Oa=S({}),_r=S(""),$s=S(""),un=S(!1),ra=S(!1);function Ll(l,p){return`${l}\0${p?"with-reset-history":"without-reset-history"}`}const ns=S(null),xn=S([]),To=S(!1),fo=S(!1),tr=S(!1),$n=S(!1),os=S(!1),aa=S(""),Lr=S(""),pi=S(null),nr=S(""),or=S(""),kr=S(""),cn=S(""),sa=S($d(Av,!0)),Da=S(Ob()),ia=S(Lb()),rs=S(Db()),rr=S($d(Iv,!1)),la=S($d(Rv,!0)),Fa=S(Jb()),as=ee(()=>Qb()),Ol=ee(()=>{const{loaded:l,total:p}=Mt.value,M=jp(l);return p&&p>0?`${M} / ${jp(p)}`:l>0?M:a("Preparing...")}),hi=ee(()=>{const{loaded:l,total:p,phase:M}=Mt.value;return M==="ready"?"100%":!p||p<=0?l>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(l/p*100)))}%`}),js=S(!1),Or=S(!1),Dr=S(!1),ua=S(""),ss=S(!1),Gi=S(null),Zt=S(!1),So=S(""),An=S("codex"),Ns=ee(()=>[{value:"codex",label:a("Codex")},{value:"openrouter",label:a("OpenRouter")},{value:"opencode-zen",label:a("OpenCode Zen")},{value:"custom",label:a("Custom endpoint")}]),ar=S(""),is=S(""),y=S("responses"),C=S("responses"),_=S(""),F=S(!1),_e=S(""),lt=S(""),Pt=S(""),Bo=S(!1),Qt=S(!1),Fn=S(""),kn=S(""),sr=S(!1),Fr=S(!1),qo=S("create"),Ls=S(""),mi=S(""),vi=S(""),Os=S(!1),Ua=S(""),zo=S(!1),Dl=S(null),Du=S(null),Ba=S(!1),Fu=S(null),vd=S(null),qa=S(""),Ur=S(""),ca=S(""),Fl=S([]),Vn=S(""),xo=S(!1),Ao=S(!1),gi=S(!1),Br=S(""),Ds=[re,De,Nr,Wn,cn,So,Pt,kn,Ua,Vn],da=ee(()=>Ds.some(l=>l.value.trim().length>0)),qr=S({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),yi=S(null),Fs=S(!1),Ki=S(!1),ls=S(typeof window<"u"?((lh=window.visualViewport)==null?void 0:lh.height)??window.innerHeight:0),Ul=S(typeof window<"u"?((uh=window.visualViewport)==null?void 0:uh.offsetTop)??0:0),wi=S(typeof window<"u"?window.innerHeight:0);let za=null,Bl=!1,Yi=!1,ql=!1,bi=0;const us=ee(()=>{const l=xt.params.threadId;return typeof l=="string"?l:""}),jn=ee(()=>xt.name==="home"),Cr=ee(()=>xt.name==="skills"),cs=ee(()=>xt.name==="automations"),Uu=ee(()=>{const l=xt.query.automationId;return typeof l=="string"?l:""}),gd=ee(()=>{var l;return cs.value?a("Automations"):Cr.value?a("Skills"):jn.value?a("Start new thread"):((l=ae.value)==null?void 0:l.title)??a("Choose a thread")}),_i=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",Ji=ee(()=>{var p,M;return(((M=(p=ae.value)==null?void 0:p.title)==null?void 0:M.trim())??"")||_i}),ki=ee(()=>St.value.filter(l=>{const p=n_(l.messageType,l.role);return p==="worked"?!0:!(p==="turnActivity.live"||p==="turnError.live"||p==="agentReasoning.live")})),Qi=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Xi=S(null);function zl(l,p,M){const j=typeof p.turnIndex=="number"?p.turnIndex:-1;return j<0?!1:l.some((U,fe)=>fe>M&&typeof U.turnIndex=="number"&&U.turnIndex>=j&&Qi.has(U.messageType??""))}function Bu(l,p){return l.some(M=>typeof M.turnIndex=="number"&&M.turnIndex>=p&&Qi.has(M.messageType??""))}const Hl=ee(()=>{const l=ki.value,p=dt.value;for(let fe=l.length-1;fe>=0;fe-=1){const Ne=l[fe];if(Ne.messageType!=="plan"&&Ne.messageType!=="plan.live")continue;const on=rv(Ne);if(!on||Xi.value!==null&&Ne.id===Xi.value)return null;const l_=p?!0:zl(l,Ne,fe);return{id:Ne.id,streaming:Ne.messageType==="plan.live",explanation:on.explanation,steps:on.steps,implemented:l_}}const M=pe.value?ye.value[pe.value]??null:null;if(!M)return null;const j=rv(M);if(!j)return null;const U=typeof M.turnIndex=="number"?M.turnIndex:M.turnId?Me(pe.value,M.turnId)??-1:-1;return{id:M.id,streaming:M.messageType==="plan.live",explanation:j.explanation,steps:j.steps,implemented:p?!0:U>=0?Bu(l,U):!1}}),yd=ee(()=>X.value),Tr=ee(()=>jn.value?"__new-thread__":pe.value),Us=ee(()=>Vt(Tr.value)),Zi=ee(()=>{const l=Z.value;return l.length>0?l[l.length-1]:null}),Wl=ee(()=>Zi.value?go(Zi.value.id):""),mn=ee(()=>{var l,p;return jn.value?wt.value.trim():((p=(l=ae.value)==null?void 0:l.cwd)==null?void 0:p.trim())??""}),el=ee(()=>Lt.value&&(jn.value&&mn.value.length>0||xt.name==="thread"&&pe.value.length>0)),wd=ee(()=>el.value&&Rt.value==="terminal"),tl=ee(()=>!ht.value||ls.value<=0||wi.value<=0?!1:wi.value-ls.value>120),bd=ee(()=>tl.value||wd.value&&jo.value),qu=ee(()=>{var l,p;return((p=(l=ae.value)==null?void 0:l.cwd)==null?void 0:p.trim())??wt.value.trim()}),Ci=ee(()=>{var l;return!jn.value&&((l=ae.value)==null?void 0:l.inProgress)===!0}),zr=ee(()=>{const l=pe.value;return!!l&&Ee.value.has(l)}),zu=ee(()=>{var l,p;return!jn.value&&((p=(l=ae.value)==null?void 0:l.externalSession)==null?void 0:p.active)===!0}),Vl=ee(()=>Tt.value||gt.value||Ci.value||Z.value.length>0);function Hu(){js.value&&(js.value=!1,MS(!0))}function Wu(){Hu(),Gt.push({name:"skills",query:{tab:"plugins"}})}function _d(){const l=pe.value;l&&ce(l)}function nl(l,p){const M=st(l).trim(),j=xr(M);return!M||!j?!1:p.some(U=>{const fe=st(U).trim();return fe!==M&&xr(fe)===j})}function Gl(l,p=""){const M=st(l).trim(),j=p.trim();if(j)return j;const U=xr(M),fe=[...Jn.value.order,...B.value.map(Ne=>{var on,ir;return((ir=(on=Ne.threads[0])==null?void 0:on.cwd)==null?void 0:ir.trim())??""}).filter(Boolean)];return nl(M,fe)?M:U}function kd(){const l=new Set(Jn.value.order),p=Jn.value.projectOrder.filter(M=>l.has(M));for(const M of Jn.value.order)p.includes(M)||p.push(M);return p}function Ti(l){const p=st(l).trim(),M=[...Jn.value.order,...B.value.map(j=>{var U,fe;return((fe=(U=j.threads[0])==null?void 0:U.cwd)==null?void 0:fe.trim())??""}).filter(Boolean)];return nl(p,M)?p:xr(p)}function ol(l){const p=st(l).trim();if(!p)return"";const M=[...Jn.value.order,...B.value.map(j=>{var U,fe;return((fe=(U=j.threads[0])==null?void 0:U.cwd)==null?void 0:fe.trim())??""}).filter(Boolean)];for(const j of Jn.value.order){const U=st(j).trim();if(!U)continue;const fe=xr(U),Ne=nl(U,M)?U:fe;if(U===p||Ne===p||fe===p)return U}return""}const Kl=ee(()=>{var j,U;const l=[],p=new Set;for(const fe of kd()){const Ne=fe.trim();!Ne||p.has(Ne)||(p.add(Ne),l.push({value:Ne,label:Gl(Ne,Jn.value.labels[Ne])}))}for(const fe of B.value){const Ne=((U=(j=fe.threads[0])==null?void 0:j.cwd)==null?void 0:U.trim())??"";!Ne||p.has(Ne)||Kc(Ne)||(p.add(Ne),l.push({value:Ne,label:Gl(Ne,Y.value[fe.projectName])}))}const M=wt.value.trim();return M&&!p.has(M)&&l.unshift({value:M,label:Gl(M)}),l}),ds=ee(()=>{const l=wt.value.trim();return l?zn.value[l]===!0:!1}),Cd=ee(()=>{var p,M;const l={};for(const j of B.value){const U=al(j.projectName,((M=(p=j.threads[0])==null?void 0:p.cwd)==null?void 0:M.trim())??"");l[j.projectName]=U?zn.value[U]===!0:!1}return l}),i=ee(()=>{const l=oo.value.trim(),p=[...Zo.value];return l&&!p.some(M=>M.value===l)&&p.unshift({value:l,label:l}),p}),c=ee(()=>{const l=oo.value.trim();if(!l)return"";const p=i.value.find(M=>M.value===l);return(p==null?void 0:p.label)??l}),h=ee(()=>Ur.value.trim()),b=ee(()=>{const l=Fn.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),E=ee(()=>b.value&&h.value.trim().length>0&&!Vn.value),P=ee(()=>{const l=mi.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),N=ee(()=>Ls.value.trim()?qo.value==="create"?P.value:vi.value.trim().length>0:!1),q=ee(()=>{const l=st(qa.value).trim();return l||Ur.value.trim()}),te=ee(()=>sr.value?"Creating…":"Create"),me=ee(()=>zo.value?qo.value==="clone"?a("Cloning…"):a("Creating…"):qo.value==="clone"?a("Clone repository"):a("Create project")),je=ee(()=>{const l=Ur.value.trim(),p=ca.value.trim();return!!(l&&p&&l!==p)}),Je=ee(()=>{const l=[];je.value&&l.push({key:`parent:${ca.value}`,name:"..",path:ca.value,kind:"parent"});for(const p of Fl.value)l.push({key:`directory:${p.path}`,name:p.name,path:p.path,kind:"directory"});return l}),pt=ee(()=>{const l=Br.value.trim().toLowerCase();return l?Je.value.filter(p=>p.kind==="parent"||p.name.toLowerCase().includes(l)):Je.value}),ut=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,Et=ee(()=>a(R[rs.value].label)),Ha=ee(()=>{const l=R[rs.value],p=Math.max(0,wi.value-ls.value-Ul.value);return{"--chat-column-max":l.columnMax,"--chat-card-max":l.cardMax,"--visual-viewport-height":ls.value>0?`${ls.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Ul.value)}px`,"--virtual-keyboard-inset":`${p}px`}}),Bs=ee(()=>{if(!qr.value.configured)return a("Not configured");const l=qr.value.active?a("Online"):a("Configured (offline)"),p=qr.value.allowAllUsers?a("allow all users"):`${qr.value.allowedUsers} ${a("allowed user(s)")}`,M=`${qr.value.mappedChats} ${a("chat(s)")}, ${qr.value.mappedThreads} ${a("thread(s)")}, ${p}`,j=qr.value.lastError?`, ${a("error")}: ${qr.value.lastError}`:"";return`${l}, ${M}${j}`});Ps(()=>{var l,p;document.addEventListener("pointerdown",Bp),window.addEventListener("keydown",Dp),document.addEventListener("visibilitychange",qp),window.addEventListener("pageshow",zp),window.addEventListener("focus",Hp),window.addEventListener("resize",fa),(l=window.visualViewport)==null||l.addEventListener("resize",fa),(p=window.visualViewport)==null||p.addEventListener("scroll",fa),fa(),lc(),ut==null||ut.addEventListener("change",lc),Ln=ie(M=>{yo.value&&yo.value.refreshFromNotification(M)}),Jt=ie(M=>{M==="remoteControl/status/changed"&&ci({force:!0})}),o_(),Pb(),pn(),Gu(),Vs(),pa(),zs(),fs(),Nd(),Yw(),ui()}),rt(Ds,(l,p)=>{l.forEach((M,j)=>{if(M===p[j])return;const U=M.trim();U&&Ja(U)})}),rt(yn,l=>{Xt&&(Xt.disconnect(),Xt=null),typeof ResizeObserver<"u"&&(Xt=new ResizeObserver(Xr),l&&Xt.observe(l)),Xr()},{immediate:!0}),Nu(()=>{var l,p;document.removeEventListener("pointerdown",Bp),window.removeEventListener("keydown",Dp),document.removeEventListener("visibilitychange",qp),window.removeEventListener("pageshow",zp),window.removeEventListener("focus",Hp),window.removeEventListener("resize",fa),(l=window.visualViewport)==null||l.removeEventListener("resize",fa),(p=window.visualViewport)==null||p.removeEventListener("scroll",fa),ut==null||ut.removeEventListener("change",lc),Xt&&(Xt.disconnect(),Xt=null),za!==null&&(window.clearInterval(za),za=null),Lo&&(clearTimeout(Lo),Lo=null),rc(),Xn(),Ln&&(Ln(),Ln=null),Jt&&(Jt(),Jt=null),$a&&(clearTimeout($a),$a=null)});function fa(){var l,p;typeof window>"u"||(wi.value=Math.max(wi.value,window.innerHeight),ls.value=((l=window.visualViewport)==null?void 0:l.height)??window.innerHeight,Ul.value=((p=window.visualViewport)==null?void 0:p.offsetTop)??0)}rt(bn,l=>{const p=l.trim();if(Lo&&(clearTimeout(Lo),Lo=null),!p){Hn.value=null;return}Lo=setTimeout(()=>{kS(p,1e3).then(M=>{bn.value.trim()===p&&(Hn.value=M.threadIds)}).catch(()=>{bn.value.trim()===p&&(Hn.value=null)})},220)}),rt(tl,l=>{l||(jo.value=!1)}),rt(xn,()=>{if(typeof window>"u")return;if(!xn.value.some(p=>p.quotaStatus==="loading")){za!==null&&(window.clearInterval(za),za=null);return}za===null&&(za=window.setInterval(()=>{Bl||(Bl=!0,Jl({silent:!0}).finally(()=>{Bl=!1}))},1500))},{deep:!0}),rt(He,()=>{Sr().then(l=>{l&&H({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function Sr(){if(!Yi||ql||An.value!=="codex"||xn.value.length>0||He.value.length===0)return!1;ql=!0;const l=JSON.stringify(xn.value.map(M=>M.accountId).sort());try{const M=await Am();xn.value=M.accounts}catch{await Jl({silent:!0})}const p=JSON.stringify(xn.value.map(M=>M.accountId).sort());return l!==p}function qs(){Be({force:!0})}function Vu(l){l&&Ce(l,{silent:!0,force:!0})}async function fs(){try{qr.value=await SS()}catch(l){const p=l instanceof Error?l.message:"Failed to load Telegram status";qr.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:p}}}async function zs(){try{const l=await TS();_e.value=l.botToken,lt.value=l.allowedUserIds.map(p=>String(p)).join(`
|
|
80
|
+
`)}ua(i);const fs=_e(i);fs&&(Qt(b,fs),Jt(b,{label:"Running command",details:[((Zu=fs.commandExecution)==null?void 0:Zu.command)??""]}));const zs=lt(i);if(zs){const Ie=(L.value[b]??[]).find(Ot=>Ot.id===zs.itemId);Ie!=null&&Ie.commandExecution&&Qt(b,{...Ie,commandExecution:{...Ie.commandExecution,aggregatedOutput:`${Ie.commandExecution.aggregatedOutput}${zs.delta}`}})}const Gu=Pt(i);Gu&&Qt(b,Gu);const Ku=Bo(i);if(Ku&&Nl(b,Ku),sr(i)&&wr(b,!0),i.method==="turn/completed"){eo=!1,wr(b),w.clear(),L.value[b]&&(L.value=Ct(L.value,b));const Ie=un(i);Ie&&(I(Ie),hn(Ie,!1),Jt(Ie,null),ii(Ie),je||(ta(Ie),zl(Ie)))}}function Ua(i){if(i.method==="thread/tokenUsage/updated"||i.method.startsWith("thread/realtime/"))return;const c=i.method,h=c==="turn/started"||c==="turn/completed"||c==="error",b=c.startsWith("thread/")||c==="turn/completed";if(!h&&!b)return;const E=un(i);E&&h&&Xt.add(E),b&&(yn=!0,Qr=!0),!(ht!==null||typeof window>"u")&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}async function zo(i,c){if(!bo){bo=!0;try{if(!c)return;const h=[];for(const b of md(c)){const E=qi(b);h.includes(E)||h.push(E)}if(h.length>0){const b=c.projectOrder.length>0?fl(h,i):fl(H.value,i);ws(H.value,b)||(H.value=b)}if(Object.keys(c.labels).length>0||(c.remoteProjects??[]).length>0){const b={...Be.value};let E=!1;for(const[P,N]of Object.entries(c.labels)){const q=st(P).trim(),te=[qi(P)];q&&te.push(q);for(const me of te)b[me]!==N&&(b[me]=N,E=!0)}for(const P of c.order){const N=qi(P),q=Kr(Tl(P));if(!q.startsWith(".")||q===N)continue;const te=`${N} ${q}`;b[N]!==void 0||b[N]===te||(b[N]=te,E=!0)}for(const P of c.remoteProjects??[]){const N=cL(P);b[P.id]!==N&&(b[P.id]=N,E=!0)}E&&(Be.value=b)}}catch{}}}async function Dl(i={}){if(!(i.force!==!0&&Object.keys(K.value).length>0))try{const c=await xS();if(Object.keys(c.titles).length>0){const h={};for(const[b,E]of Object.entries(c.titles))h[b]=Qs(E);K.value=h}}catch{}}async function Du(){try{return await ml()}catch{return null}}function Ba(i,c,h){const b=i.trim();if(b)return Qs(b);const E=h.map(P=>P.label.trim()).find(P=>P.length>0);return E?Qs(E):c.length>0?Qs("[Image]"):"Untitled thread"}async function Fu(i,c,h,b=[],E=[]){if(K.value[i])return;const P=c.trim();if(!P){const q=Ba(c,b,E);K.value={...K.value,[i]:q},jt(),gc(i,q);return}const N=P.length>300?P.slice(0,300):P;try{const q=await $S(N,h);if(!q||K.value[i])return;const te=q.length>Kf?q.slice(0,Kf):q;K.value={...K.value,[i]:te},jt(),gc(i,te)}catch{}}function vd(i,c){const h=Gf(i,c),b=hL(i,c),E=mL(b,c,h);if(!c||c.order.length===0&&(c.remoteProjects??[]).length===0)return E;const P=new Set;for(const q of Vf(c,h))P.add(q);const N=E.filter(q=>P.has(q.projectName)?!0:Yf(q));return pL(N,c,h)}function qa(i,c){const h=vd(i,c),b=!!(c&&(c.order.length>0||c.projectOrder.length>0||(c.remoteProjects??[]).length>0)),E=c!=null&&c.projectOrder.length?fl(Vf(c,Gf(i,c)),h):fl(H.value,h);ws(H.value,E)||(H.value=E,b||iu(H.value));const P=vf(h,H.value);Is(new Set(Eo(P).map(te=>te.id)));const N=lL(t.value,P,Y.value);t.value=Pc(t.value,N),Y.value=Cn(Y.value,new Set(Eo(t.value).map(te=>te.id))),new Set(Eo(t.value).map(te=>te.id));const q={};for(const te of Eo(t.value))q[te.id]=te.externalSession??Fe.value[te.id]??null;Fe.value=q,jt()}function Ur(i){const c={};for(const[h,b]of Object.entries(i)){const E=h.trim();!E||b.length===0||(c[E]=b.map(P=>({id:P.id,text:P.text,imageUrls:[...P.imageUrls],skills:P.skills.map(N=>({name:N.name,path:N.path})),fileAttachments:P.fileAttachments.map(N=>({label:N.label,path:N.path,fsPath:N.fsPath})),collaborationMode:P.collaborationMode})))}return c}function ca(){eS(Ur(pe.value)).catch(()=>{})}async function Fl(){if(!Ae){Ae=!0;try{pe.value=await jm()}catch{}}}function Vn(i){Rt=_v(Rt,i),t.value=_v(t.value,i),Y.value=Ct(Y.value,i),jt()}function xo(i,c){if(i.length===0)return c;if(c.length===0)return i;const h=new Map;for(const E of Eo(i))h.set(E.id,E);for(const E of Eo(c))h.set(E.id,E);const b=new Map;for(const E of h.values()){const P=b.get(E.projectName);P?P.push(E):b.set(E.projectName,[E])}return Array.from(b.entries()).map(([E,P])=>({projectName:E,threads:P.sort((N,q)=>new Date(q.updatedAtIso).getTime()-new Date(N.updatedAtIso).getTime())})).sort((E,P)=>{var te,me;const N=new Date(((te=E.threads[0])==null?void 0:te.updatedAtIso)??0).getTime();return new Date(((me=P.threads[0])==null?void 0:me.updatedAtIso)??0).getTime()-N})}function Ao(){return Object.values(Y.value).some(i=>i===!0)}function gi(i=Yn){if(!(!wo||jo||Ao())){if(Yn=i,typeof window>"u"){Br(i);return}$o!==null&&window.clearTimeout($o),$o=window.setTimeout(()=>{$o=null,!(!wo||Ao())&&Br(Yn)},gN)}}async function Br(i){if(!(jo||!wo||Ao())){jo=!0;try{const c=await Cm(wo,JT());wo=c.nextCursor,Lt=c.nextCursor===null,Vt.value=Lt,Rt=xo(Rt,c.groups),qa(Rt,i)}catch{}finally{jo=!1,wo&&!Ao()&&gi(i)}}}async function Ds(i={}){if(fr){await fr;return}i.force!==!0&&Xn.value&&Date.now()-Pa<bN||(fr=(async()=>{var c;Xn.value||(ot.value=!0);try{const[h,b]=await Promise.all([Cm(),Du(),Dl({force:i.force===!0})]);Yn=b;const E=h.groups;Rt=Xn.value?xo(Rt,E):E,wo=Xn.value&&!Lt?wo:h.nextCursor,Lt=h.nextCursor===null,Vt.value=Lt,await zo(E,b),qa(Rt,b),Xn.value=!0,Pa=Date.now(),Lt||gi(b);const P=Eo(e.value);io(P),!P.some(q=>q.id===n.value)&&!n.value&&bn(((c=P[0])==null?void 0:c.id)??"")}finally{ot.value=!1}})().finally(()=>{fr=null}),await fr)}async function da(i,c={}){var q;if(!i)return;const h=Date.now()-(Ea.get(i)??0)<uv;if((q=ce.value[i])!=null&&q.transient&&(c.silent===!0||h))return;const b=yo.get(i);if(b&&c.force!==!0){await b;return}const E=D.value[i]===!0,P=c.silent!==!0&&!E;P&&(Ft.value=!0);const N=(async()=>{try{const te=co(i),me=$.value[i]??"",je=Date.now()-(Xr.get(i)??0)<uv;if(c.force===!0?!1:E&&(je||(te.length===0||me===te)&&Y.value[i]!==!0)){Mr(i);return}const ut=le.value[i]!==!0?await of(i):null,Et=ut??await nf(i);Et.modelProvider&&ea(i,Et.modelProvider),Et.model&&ao(i,Mn(i,Et.model,Et.modelProvider)),ut&&(le.value={...le.value,[i]:!0});const{messages:Ha,inProgress:Bs,activeTurnId:fa,turnIndexByTurnId:Sr}=Et;G.value={...G.value,[i]:Et.hasMoreOlder===!0},$a(i,Ha),as(i,Sr),hi(i);const qs=o.value[i]??[],Vu=bv(qs,Ha,{preserveMissing:c.silent===!0||YN(qs)});yr(i,Vu);const fs=a.value[i]??[];if(Bs){const zs=QN(fs,Ha);ja(i,zs)}else Dn(i);Fn(i,Ha),kn(i,Ha),D.value={...D.value,[i]:!0},Xr.set(i,Date.now()),Ea.delete(i),te&&($.value={...$.value,[i]:te}),hn(i,Bs),Et.externalSession&&(Fe.value={...Fe.value,[i]:Et.externalSession}),li(i),fa?Ee.value={...Ee.value,[i]:fa}:Ee.value[i]&&(Ee.value=Ct(Ee.value,i)),Bs||Uo(i),Mr(i)}catch(te){const me=te instanceof Error?te.message:"Unknown application error";throw n.value===i&&en(i,me,{transient:!0}),Ea.set(i,Date.now()),te}finally{P&&(Ft.value=!1)}})().finally(()=>{yo.delete(i)});yo.set(i,N),await N}async function qr(i=n.value){if(!i||ie.value[i]===!0||G.value[i]!==!0)return;const c=zn(i);if(!c){G.value={...G.value,[i]:!1};return}ie.value={...ie.value,[i]:!0};try{const h=await XT(i,c),b=o.value[i]??[],E=bv(h.messages,b,{preserveMissing:!0});yr(i,E),as(i,{...oe.value[i]??{},...h.turnIndexByTurnId}),hi(i),G.value={...G.value,[i]:h.hasMoreOlder}}catch(h){throw mt.value=h instanceof Error?h.message:"Failed to load earlier messages",h}finally{ie.value={...ie.value,[i]:!1}}}async function yi(i,c={}){var h;i&&D.value[i]!==!0&&(c.silent===!0&&((h=ce.value[i])!=null&&h.transient)||await da(i,c))}async function Fs(i={}){var b,E;const c=((E=(b=hr.value)==null?void 0:b.cwd)==null?void 0:E.trim())??"",h=c||"__global__";if(Ln){await Ln;return}i.force!==!0&&Ja&&Qa===h&&Date.now()-In<_N||(Ln=(async()=>{try{Q.value=await NS(c?[c]:void 0),Ja=!0,In=Date.now(),Qa=h}catch{}finally{Ln=null}})(),await Ln)}async function Ki(i={}){if(pr){await pr;return}i.force!==!0&&Kn||(We.value=!0,pr=(async()=>{try{Le.value=await a1(),Kn=!0}catch{}finally{We.value=!1,pr=null}})(),await pr)}async function ls(i={}){await Promise.allSettled([Rr({providerChanged:i.providerChanged,includeProviderModels:i.includeProviderModels}),_n(),Do(),Fs()])}function Ul(i={}){const c=()=>{ls(i)};if(typeof window>"u"){c();return}window.setTimeout(c,0)}async function wi(i={}){mt.value="",se.value="";const c=i.includeSelectedThreadMessages!==!1,h=i.awaitAncillaryRefreshes===!0;try{if(await Fl(),await Ds({force:i.forceThreadRefresh===!0}),c)try{await da(n.value)}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}h?await ls({providerChanged:i.providerChanged,includeProviderModels:i.providerChanged===!0||h}):Ul({providerChanged:i.providerChanged,includeProviderModels:!1})}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error",dv(b)?se.value=cv:se.value=""}}async function za(i){bn(i);try{return await da(i),await Rr({includeProviderModels:!0}),Fs(),"ok"}catch(c){const h=c instanceof Error?c.message:"Unknown application error";mt.value=h;const b=SN(c)?"not-found":"error";return i.trim()&&en(i,h,{transient:!0}),b}}async function Bl(i){const c=n.value===i,h=c?pN(Eo(e.value),i):"";c&&(bn(h),h&&da(h,{silent:!0}));try{await I1(i),Vn(i),await Ds(),c&&h&&n.value===h&&await yi(h,{silent:!0})}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}}async function Yi(i,c){const h=c.trim();if(!(!i||!h))try{await $1(i,h),K.value={...K.value,[i]:h},jt(),gc(i,h)}catch(b){mt.value=b instanceof Error?b.message:"Unknown application error"}}async function ql(i){var N,q;const c=i.trim();if(!c)return"";const h=Eo(t.value).find(te=>te.id===c),b=((N=h==null?void 0:h.cwd)==null?void 0:N.trim())??"",E=((q=h==null?void 0:h.title)==null?void 0:q.trim())??"Forked chat",P=ln(c);mt.value="";try{const te=await Em(c,b||void 0,P||void 0),me=te.threadId.trim();return me?(pn(me,b,E),ao(me,te.model),le.value={...le.value,[me]:!0},bn(me),await Ds(),await da(me),me):""}catch(te){return mt.value=te instanceof Error?te.message:"Unknown application error",""}}async function bi(i,c){var N;const h=i.trim();if(!h||!Number.isInteger(c)||c<0)return"";if(Y.value[h]===!0)return mt.value="Finish the current turn before forking from a response.","";if(D.value[h]!==!0)try{await da(h)}catch(q){return mt.value=q instanceof Error?q.message:"Unknown application error",""}const b=o.value[h]??[];let E=-1;for(const q of b)typeof q.turnIndex=="number"&&Number.isFinite(q.turnIndex)&&(E=Math.max(E,q.turnIndex));if(E>=0&&c>E)return"";const P=Eo(t.value).find(q=>q.id===h)??null;try{mt.value="";const q=await Em(h),te=q.threadId.trim();if(!te)return"";const me=q.cwd.trim()||((N=P==null?void 0:P.cwd)==null?void 0:N.trim())||"",je=vL((P==null?void 0:P.title)||(P==null?void 0:P.preview)||"Untitled thread");pn(te,me,je),ao(te,q.model),yr(te,q.messages),D.value={...D.value,[te]:!0},le.value={...le.value,[te]:!0},br(te),ja(te,[]),wr(te),L.value[te]&&(L.value=Ct(L.value,te)),Yt(te,null),Jt(te,null),en(te,null),hn(te,!1);const Je=E-c;if(Je>0){const pt=await rf(te,Je);yr(te,pt)}return await Yi(te,je),bn(te),Ds().catch(()=>{}),te}catch(q){return mt.value=q instanceof Error?q.message:"Unknown application error",""}}async function us(i,c,h=[],b=[],E=[]){if(!i||!c.trim()||h.length>0||b.length>0||E.length>0)return!1;const N=(it.value[i]??[]).filter(me=>me.method==="item/tool/requestUserInput");if(N.length!==1)return!1;const[q]=N,te=Lr(q);return te.length!==1?!1:nl({id:q.id,result:{answers:{[te[0]]:{answers:[c.trim()]}}}})}function jn(){if(typeof window>"u")return{};try{const i=window.localStorage.getItem(iv);if(!i)return{};const c=JSON.parse(i);if(!c||typeof c!="object"||Array.isArray(c))return{};const h={};for(const[b,E]of Object.entries(c)){if(!b||!Array.isArray(E))continue;const P=E.filter(N=>!!N&&typeof N=="object"&&typeof N.id=="string"&&typeof N.text=="string");P.length>0&&(h[b]=P)}return h}catch{return{}}}function Cr(){typeof window>"u"||window.localStorage.setItem(iv,JSON.stringify($e.value))}function cs(){if(typeof window>"u")return bc;try{const i=window.localStorage.getItem(lv);if(i===null)return bc;const c=Number(i);return Number.isFinite(c)&&c>=0?Math.round(c):bc}catch{return bc}}function Uu(i){const c=Number.isFinite(i)&&i>0?Math.round(i):0;c!==he.value&&(he.value=c,!(typeof window>"u")&&window.localStorage.setItem(lv,String(c)))}async function gd(i,c,h,b,E,P){if(Te||he.value<=0||Y.value[i]===!0)return!1;const N=Ze.value[i];if(!N||N.remainingContextPercent===null||N.remainingContextPercent>he.value)return!1;const q=$e.value[i]??[],te=`stash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,me=P==="plan"?"plan":P==="default"?"default":nt.value;return $e.value={...$e.value,[i]:[...q,{id:te,text:c,imageUrls:h,skills:b,fileAttachments:E,collaborationMode:me}]},Cr(),go.value.has(i)||Wl(i),!0}async function _i(i){const c=$e.value[i];if(!c||c.length===0||Y.value[i]===!0)return;const h=[...c];$e.value=Ct($e.value,i),Cr(),Te=!0;try{for(const b of h)try{await Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments,void 0,b.collaborationMode)}catch{}}finally{Te=!1}}async function Ji(i,c=[],h=[],b="steer",E=[],P,N){if(vo.value)return;const q=n.value,te=i.trim();if(!q||!te&&c.length===0&&E.length===0||await us(q,te,c,h,E)||await gd(q,te,c,h,E,N))return;const me=Y.value[q]===!0;if(me&&b==="queue"){const je=pe.value[q]??[],Je=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,pt=[...je],ut=typeof P=="number"?Math.max(0,Math.min(P,pt.length)):pt.length;pt.splice(ut,0,{id:Je,text:te,imageUrls:c,skills:h,fileAttachments:E,collaborationMode:N==="plan"?"plan":N==="default"?"default":nt.value}),pe.value={...pe.value,[q]:pt},ca();return}if(me){eo=!0,Qi(q,te,c,h,E,N).catch(je=>{const Je=je instanceof Error?je.message:"Unknown application error";en(q,Je),mt.value=Je});return}mt.value="",eo=!0,Yt(q,null),Jt(q,{label:"Thinking",details:so(ln(q),_t.value,N==="plan"?"plan":N==="default"?"default":nt.value)}),en(q,null),hn(q,!0);try{await Qi(q,te,c,h,E,N)}catch(je){eo=!1,hn(q,!1),Jt(q,null);const Je=je instanceof Error?je.message:"Unknown application error";throw en(q,Je),mt.value=Je,je}}async function ki(i,c,h=[],b=[],E=[]){if(vo.value)return"";const P=i.trim(),N=c.trim(),q=ln(ri).trim(),te=nt.value;if(!P&&h.length===0&&E.length===0)return"";Bn.value=!0,mt.value="";let me="";try{try{const ut=await Pm(N||void 0,q||void 0);me=ut.threadId,ao(me,ut.model),ea(me,ut.modelProvider||gt.value),Lo(me,te)}catch(ut){if(q&&q!==ma&&xc(ut)){await ko();const Et=await Pm(N||void 0,ma);me=Et.threadId,ao(me,Et.model),ea(me,Et.modelProvider||gt.value),Lo(me,te)}else throw ut}if(!me)return"";pn(me,N,P||"[Image]"),ui(me,P,h,b,E),lo(me),le.value={...le.value,[me]:!0},bn(me),eo=!0,Yt(me,null),Jt(me,{label:"Thinking",details:so(ln(me),_t.value,te)}),en(me,null),hn(me,!0);const je=me,Je=N||null,pt=P;return Qi(me,P,h,b,E,te).catch(ut=>{eo=!1,hn(me,!1),Jt(me,null);const Et=ut instanceof Error?ut.message:"Unknown application error";en(me,Et),mt.value=Et}).finally(()=>{Bn.value=!1}),Fu(je,pt,Je,h,E),me}catch(je){eo=!1,me&&(hn(me,!1),Jt(me,null));const Je=je instanceof Error?je.message:"Unknown application error";throw me&&en(me,Je),mt.value=Je,Bn.value=!1,je}}async function Qi(i,c,h=[],b=[],E=[],P){const N=_t.value,q=P==="plan"?"plan":P==="default"?"default":nt.value,te=c.trim(),me=[...h];if(me.length===0&&Es(te)){const pt=xt(i);pt&&me.push(pt)}const je=b.map(pt=>({name:pt.name,path:pt.path})),Je=E.map(pt=>({...pt}));Ir(i,{text:te,imageUrls:[...me],skills:je,fileAttachments:Je,effort:N,collaborationMode:q,fallbackRetried:!1});try{if(le.value[i]!==!0){const Et=await of(i);Et.model&&ao(i,Mn(i,Et.model,Et.modelProvider)),Et.modelProvider&&ea(i,Et.modelProvider),le.value={...le.value,[i]:!0}}const pt=ln(i);let ut="";try{ut=await af(i,c,me,pt||void 0,N||void 0,b.length>0?b:void 0,E,q)}catch(Et){if(pt&&pt!==ma&&xc(Et))await ko(i),Ir(i,{text:te,imageUrls:[...me],skills:je,fileAttachments:Je,effort:N,collaborationMode:q,fallbackRetried:!0}),ut=await af(i,c,me,ma,N||void 0,b.length>0?b:void 0,E,q);else throw Et}ut&&(Ee.value={...Ee.value,[i]:ut},er(i,ut)),Xt.add(i),await zr(),O(i)}catch(pt){throw pt}}async function Xi(i){if(Ue.value[i]!==!0){Ue.value={...Ue.value,[i]:!0};try{pe.value=await jm()}catch{}finally{Ue.value=Ct(Ue.value,i)}}}function zl(i){Xi(i),!(typeof window>"u")&&window.setTimeout(()=>{Xi(i)},650)}async function Bu(){const i=n.value;if(!i||Y.value[i]!==!0||be.value[i]===!0)return;let c=Ee.value[i];if(!c){const{activeTurnId:P}=await nf(i);c=P,c&&(Ee.value={...Ee.value,[i]:c})}if(!c)throw new Error("Could not determine active turn id for interrupt");const h=_o.value.filter(P=>P.turnId===c),b=h.find(P=>P.role==="user"),E=h.some(P=>{if(P.role==="assistant")return!0;const N=P.messageType??"";return N==="commandExecution"||N==="toolCall"||N==="worked"||N==="fileChange"||N==="plan"||N==="plan.live"||N==="compaction.done"||N==="turnError"});Jo.value=!0,mt.value="";try{if(await U1(i,c),hn(i,!1),Jt(i,null),en(i,null),Ee.value[i]&&(Ee.value=Ct(Ee.value,i)),Xt.add(i),yn=!0,await zr(),b&&!E){const P=(o.value[i]??[]).filter(q=>q.turnId!==c);yr(i,P);const N=d.value[i];if(N){const q=N.filter(te=>te.turnId!==c);q.length!==N.length&&(d.value={...d.value,[i]:q},kc(d.value))}Ve.value={...Ve.value,[i]:{text:b.text??"",imageUrls:b.images??[],fileAttachments:(b.fileAttachments??[]).map(q=>({label:q.label,path:q.path,fsPath:q.fsPath??q.path})),skills:b.skills??[]}}}}catch(P){const N=P instanceof Error?P.message:"Failed to interrupt active turn";en(i,N),mt.value=N}finally{Jo.value=!1}}function Hl(i){i&&Ve.value[i]&&(Ve.value=Ct(Ve.value,i))}async function yd(i){var h,b;const c=n.value;if(c&&!Qn.value&&i.trim()){Qn.value=!0,mt.value="";try{Y.value[c]===!0&&await Bu();const E=o.value[c]??[],P=E.find(Je=>Je.turnId===i),N=typeof(P==null?void 0:P.turnIndex)=="number"?P.turnIndex:-1;if(N<0)return;const q=E.reduce((Je,pt)=>typeof pt.turnIndex=="number"&&pt.turnIndex>Je?pt.turnIndex:Je,-1);if(q<0||N>q)return;const te=q-N+1;if(te<1)return;const me=((b=(h=hr.value)==null?void 0:h.cwd)==null?void 0:b.trim())??"";me&&await N1(c,i,me);const je=await rf(c,te);yr(c,je),ja(c,[]),wr(c),L.value[c]&&(L.value=Ct(L.value,c)),Yt(c,null),Jt(c,null),en(c,null),yn=!0,await zr()}catch(E){mt.value=E instanceof Error?E.message:"Failed to rollback thread"}finally{Qn.value=!1}}}function Tr(i,c){const b=(u.value[i]??[]).filter(E=>E.messageType!=="compaction.pending"&&E.messageType!=="compaction.done");b.push({id:`compaction:${c}:${i}:${Date.now()}`,role:"system",text:"",messageType:c==="pending"?"compaction.pending":"compaction.done"}),u.value={...u.value,[i]:b}}function Us(i,c){const h=new Set(go.value);c?h.add(i):h.delete(i),go.value=h}function Zi(i){gn=i.trim(),dr.value=[]}async function Wl(i){const c=i.trim();if(!(!c||go.value.has(c))){Us(c,!0),Tr(c,"pending");try{await M1(c);const h=2e3,b=14,E=Date.now()+Qo;let P=0;for(;Date.now()<E&&P<b&&go.value.has(c);){if((await nf(c)).messages.some(te=>te.messageType==="compaction.done")){Us(c,!1),n.value===c&&await da(c,{silent:!0,force:!0}),Tr(c,"done"),_i(c);break}P+=1,await fN(h)}go.value.has(c)&&(Us(c,!1),Tr(c,"done"),_i(c))}catch(h){mt.value=h instanceof Error?h.message:"Failed to compact thread",Us(c,!1),Tr(c,"done"),_i(c)}}}let mn=null;async function el(i,c){try{const h=await ml(),b={...h.labels};let E=!1;for(const P of h.order){if(!Lc(P,i))continue;const N=c.trim();N.length===0?b[P]!==void 0&&(delete b[P],E=!0):b[P]!==N&&(b[P]=N,E=!0)}E&&await sf({order:h.order,labels:b,active:h.active,projectOrder:h.projectOrder})}catch{}}function wd(i,c){i.length===0||(Be.value[i]??"")===c||(Be.value={...Be.value,[i]:c},wv(Be.value),mn!==null&&clearTimeout(mn),mn=setTimeout(()=>{mn=null,el(i,c)},500))}async function tl(i){var P;if(i.length===0)return;const c=H.value.filter(N=>N!==i);if(ws(H.value,c)||(H.value=c,iu(H.value)),t.value=t.value.filter(N=>N.projectName!==i),Be.value[i]!==void 0){const N={...Be.value};delete N[i],Be.value=N,wv(N)}jt();const h=Eo(e.value);io(h),h.some(N=>N.id===n.value)||bn(((P=h[0])==null?void 0:P.id)??"");const E=new Set;try{const N=await ml();dL(N,i).forEach(q=>{E.add(q)})}catch{}if(E.size>0)try{const N=await ml(),q=N.order.filter(je=>!E.has(je)),te=N.active.filter(je=>!E.has(je)),me=te.length===0&&q.length>0?[q[0]]:te;await sf({order:q,labels:rL(N.labels,E),active:me,projectOrder:N.projectOrder.filter(je=>je!==i&&!E.has(je))});return}catch{}await Ci()}function bd(i,c){if(i.length===0||t.value.length===0)return;const h=t.value.map(te=>te.projectName),b=h.indexOf(i);if(b===-1)return;const E=Math.max(0,Math.min(c,h.length-1)),P=HN(h,b,E);if(P===h)return;const N=fl(P,t.value);H.value=N,iu(H.value);const q=vf(t.value,H.value);t.value=Pc(t.value,q),jt(),Ci()}function qu(i){const c=i.trim();if(!c)return;const h=[c,...H.value.filter(E=>E!==c)];if(ws(H.value,h))return;H.value=h,iu(H.value);const b=vf(t.value,H.value);t.value=Pc(t.value,b),jt(),Ci()}async function Ci(){try{const i=await ml(),c=fL(i,H.value,t.value);await sf({order:c.order,labels:i.labels,active:c.active,projectOrder:c.projectOrder})}catch{}}async function zr(){if(nn.value){typeof window<"u"&&ht===null&&(ht=window.setTimeout(()=>{ht=null,zr()},_c));return}nn.value=!0;const i=yn,c=Qr,h=new Set(Xt);yn=!1,Qr=!1,Xt.clear();try{i&&await Ds({force:c});const b=n.value;if(!b)return;const E=h.has(b),P=Y.value[b]===!0,N=co(b),q=$.value[b]??"";(N.length>0&&N!==q||E||P&&D.value[b]!==!0||i&&D.value[b]!==!0)&&await da(b,{silent:!0,force:E})}catch{}finally{nn.value=!1,(yn||Xt.size>0)&&typeof window<"u"&&ht===null&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}}async function zu(){await Wu(),yn=!Xn.value,n.value&&D.value[n.value]!==!0&&Xt.add(n.value),await zr()}function Vl(i){const c=qe(i.params),h=typeof(c==null?void 0:c.threadId)=="string"?c.threadId.trim():"";if(!h)return;const b=qe(c==null?void 0:c.externalSession),E=b&&typeof b.origin=="string"&&b.origin.trim().length>0?{origin:b.origin.trim(),active:b.active===!0,lastWriteAt:typeof b.lastWriteAt=="string"?b.lastWriteAt:null}:null;Fe.value={...Fe.value,[h]:E},hn(h,(E==null?void 0:E.active)===!0),jt(),yn=!0,n.value===h&&Xt.add(h),ht===null&&typeof window<"u"&&(ht=window.setTimeout(()=>{ht=null,zr()},_c))}function Hu(){typeof window>"u"||Gt||(Wu(),_d(),Gt=w1(i=>{if(i.method==="ready"){Rs(),zu();return}if(i.method==="externalSessionChanged"){Vl(i);return}Os(i),Ua(i)}))}async function Wu(){try{const c=(await xm()).map(h=>ns(h)).filter(h=>h!==null);kr(c)}catch{}}async function _d(){try{const i=await AS(),c=Object.entries(i);if(c.length===0)return;const h={...d.value};let b=!1;for(const[E,P]of c){const N=P.filter(je=>!!je&&typeof je.id=="string");if(N.length===0)continue;const q=h[E]??[],te=new Set(q.map(je=>je.text)),me=[...q];for(const je of N)te.has(je.text)||(me.push(je),te.add(je.text));h[E]=me.slice(-20),b=!0}b&&(d.value=h,kc(h))}catch{}}async function nl(i){try{return await k1(i.id,{result:i.result,error:i.error}),nr(i.id),ve.value=Ct(ve.value,String(i.id)),!0}catch(c){const h=c instanceof Error?c.message:"Failed to reply to server request";return await Gl(i.id)?(mt.value=h,ve.value={...ve.value,[String(i.id)]:h},!1):(nr(i.id),ve.value=Ct(ve.value,String(i.id)),!0)}}async function Gl(i){try{const c=await xm();for(const h of c){const b=qe(h);if((b==null?void 0:b.id)===i)return!0}return!1}catch{return!0}}function kd(){if(Gt&&(Gt(),Gt=null),yn=!1,Xt.clear(),qn.clear(),ht!==null&&typeof window<"u"&&(window.clearTimeout(ht),ht=null),Xo!==null&&typeof window<"u"&&(window.clearTimeout(Xo),Xo=null),$o!==null&&typeof window<"u"&&(window.clearTimeout($o),$o=null),typeof window<"u")for(const i of sn.values())window.clearTimeout(i);sn.clear(),eo=!1,o.value={},r.value={},a.value={},m.value={},d.value={},L.value={},B.value={},oe.value={},we.value={},Ce.value={},ce.value={},Ee.value={},R.clear(),w.clear(),x.clear(),oi.clear(),Oc=0,be.value={},Oe.value={},Re.value={},pe.value={},Ue.value={},$e.value={},Cr(),ca(),It.value=null,Ze.value={}}const Ti=ee(()=>{const i=n.value;if(!i)return[];const c=pe.value[i]??[];return[...($e.value[i]??[]).map(E=>({...E,awaitingCompaction:!0})),...c]});function ol(i){const c=n.value;if(!c)return;const h=$e.value[c];if(h!=null&&h.some(P=>P.id===i)){const P=h.filter(N=>N.id!==i);$e.value=P.length>0?{...$e.value,[c]:P}:Ct($e.value,c),Cr();return}const b=pe.value[c];if(!b)return;const E=b.filter(P=>P.id!==i);pe.value=E.length>0?{...pe.value,[c]:E}:Ct(pe.value,c),ca()}function Kl(i,c){const h=n.value;if(!h)return;const b=pe.value[h];if(!b)return;const E=$e.value[h];if(E!=null&&E.some(me=>me.id===i||me.id===c))return;const P=b.findIndex(me=>me.id===i),N=b.findIndex(me=>me.id===c);if(P<0||N<0||P===N)return;const q=[...b],[te]=q.splice(P,1);q.splice(N,0,te),pe.value={...pe.value,[h]:q},ca()}function ds(i){const c=n.value;if(!c)return;const h=$e.value[c],b=h==null?void 0:h.find(N=>N.id===i);if(b){ol(i),Hn(b.collaborationMode),Te=!0,Ji(b.text,b.imageUrls,b.skills,"steer",b.fileAttachments).finally(()=>{Te=!1});return}const E=pe.value[c];if(!E)return;const P=E.find(N=>N.id===i);P&&(ol(i),Hn(P.collaborationMode),Ji(P.text,P.imageUrls,P.skills,"steer",P.fileAttachments))}function Cd(i,c={}){bn(i,c)}return{projectGroups:e,projectDisplayNameById:Be,selectedThread:hr,selectedThreadTokenUsage:to,selectedThreadTerminalOpen:Zr,isSelectedThreadInterruptPending:Ia,selectedThreadServerRequests:Pr,selectedLiveOverlay:Xa,selectedActiveTurnId:Er,lastPlanByThreadId:s,resolveThreadTurnIndex:Ol,codexQuota:Ra,selectedThreadId:n,availableCollaborationModes:St,availableModelIds:De,availableModelReasoningEfforts:Ye,selectedCollaborationMode:nt,selectedModelId:dt,selectedReasoningEffort:_t,selectedSpeedMode:Tt,codexCliMissingError:se,installedSkills:Q,accountRateLimitSnapshots:de,messages:_o,hasMoreOlderMessages:wt,isLoadingThreads:ot,isThreadListFullyLoaded:Vt,isLoadingMessages:Ft,isLoadingOlderMessages:Rn,isSendingMessage:Bn,isInterruptingTurn:Jo,isUpdatingSpeedMode:vo,isRollingBack:Qn,compactingThreadIds:go,fuzzyFileSearchResults:dr,registerFuzzyFileSearchSession:Zi,error:mt,refreshAll:wi,refreshSkills:Fs,refreshHooks:Ki,hooksList:Le,isHooksLoading:We,onRealtimeEvent:Ls,selectThread:za,loadMessages:da,loadOlderMessages:qr,ensureThreadMessagesLoaded:yi,setThreadTerminalOpen:gr,toggleSelectedThreadTerminal:Wi,archiveThreadById:Bl,compactThreadById:Wl,renameThreadById:Yi,forkThreadById:ql,forkThreadFromTurn:bi,rollbackSelectedThread:yd,sendMessageToSelectedThread:Ji,sendMessageToNewThread:ki,interruptSelectedThreadTurn:Bu,interruptedUnsubmittedMessage:no,clearInterruptedUnsubmittedMessage:Hl,selectedThreadQueuedMessages:Ti,removeQueuedMessage:ol,reorderQueuedMessage:Kl,steerQueuedMessage:ds,autoCompactThreshold:he,setAutoCompactThreshold:Uu,setSelectedCollaborationMode:Hn,readModelIdForThread:ln,setSelectedModelIdForThread:Sn,setSelectedModelId:ro,setSelectedReasoningEffort:fn,updateSelectedSpeedMode:$t,respondToPendingServerRequest:nl,pendingReplyErrorForRequest:or,renameProject:wd,removeProject:tl,reorderProject:bd,pinProjectToTop:qu,startPolling:Hu,stopPolling:kd,primeSelectedThread:Cd}}const kL={class:"sidebar-root"},CL=["aria-pressed","aria-label","title"],TL={key:1,class:"sidebar-search-bar"},SL=["placeholder"],xL=["aria-label"],AL={class:"sidebar-skills-link-icon","aria-hidden":"true"},PL={class:"sidebar-skills-link-copy"},EL={class:"sidebar-skills-link-title"},IL={class:"sidebar-skills-link-subtitle"},RL={class:"sidebar-skills-link-icon sidebar-automations-link-icon","aria-hidden":"true"},ML={class:"sidebar-skills-link-copy"},$L={class:"sidebar-skills-link-title"},jL={class:"sidebar-skills-link-subtitle"},NL=["aria-label"],LL={class:"settings-dialog-header"},OL={class:"settings-dialog-title"},DL=["aria-label","title"],FL={class:"settings-dialog-body"},UL=["aria-label"],BL=["aria-current","onClick"],qL={class:"settings-group-content"},zL={class:"sidebar-settings-account-section"},HL={class:"sidebar-settings-account-header"},WL={class:"sidebar-settings-account-header-main"},VL=["aria-expanded","title"],GL={class:"sidebar-settings-account-collapse-icon"},KL={class:"sidebar-settings-account-title"},YL={class:"sidebar-settings-account-count"},JL=["disabled"],QL={key:0,class:"sidebar-settings-account-error visible-error-with-feedback"},XL=["href"],ZL={class:"sidebar-settings-account-login"},eO=["disabled"],tO=["href"],nO={key:1,class:"sidebar-settings-account-empty"},oO={key:2,class:"sidebar-settings-account-list"},rO=["title","onMouseenter","onMouseleave"],aO={class:"sidebar-settings-account-main"},sO={class:"sidebar-settings-account-email"},iO={class:"sidebar-settings-account-meta"},lO={class:"sidebar-settings-account-quota"},uO={class:"sidebar-settings-account-id"},cO={class:"sidebar-settings-account-actions"},dO=["disabled","onClick"],fO=["disabled","onClick"],pO=["title"],hO={class:"sidebar-settings-label"},mO=["title"],vO={class:"sidebar-settings-label"},gO={class:"sidebar-settings-value"},yO=["title"],wO={class:"sidebar-settings-label"},bO={class:"sidebar-settings-value"},_O=["title"],kO={class:"sidebar-settings-label"},CO=["title"],TO={class:"sidebar-settings-label"},SO={class:"sidebar-settings-value"},xO=["title"],AO={class:"sidebar-settings-label"},PO=["title"],EO={class:"sidebar-settings-label"},IO=["title"],RO={class:"sidebar-settings-label"},MO=["title"],$O={class:"sidebar-settings-label"},jO=["href"],NO={class:"sidebar-settings-label"},LO={class:"sidebar-settings-value"},OO=["title"],DO={class:"sidebar-settings-label"},FO={key:0,class:"sidebar-settings-row sidebar-settings-error"},UO=["href"],BO={key:1,class:"sidebar-settings-row sidebar-settings-row--input"},qO={class:"sidebar-settings-provider-info"},zO={class:"sidebar-settings-label"},HO={class:"sidebar-settings-provider-link",href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer"},WO={class:"sidebar-settings-key-group"},VO={class:"sidebar-settings-key-masked"},GO=["disabled","title"],KO=["placeholder"],YO=["disabled"],JO={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},QO={class:"sidebar-settings-label"},XO=["aria-label"],ZO=["disabled"],eD=["disabled"],tD={key:2,class:"sidebar-settings-row sidebar-settings-row--input"},nD={class:"sidebar-settings-provider-info"},oD={class:"sidebar-settings-label"},rD={class:"sidebar-settings-provider-link",href:"https://opencode.ai/auth",target:"_blank",rel:"noopener noreferrer"},aD={class:"sidebar-settings-key-group"},sD=["placeholder"],iD=["disabled"],lD={key:3,class:"sidebar-settings-row sidebar-settings-row--input"},uD={class:"sidebar-settings-label"},cD={class:"sidebar-settings-key-group"},dD=["placeholder"],fD={class:"sidebar-settings-label",style:{"margin-top":"4px"}},pD={class:"sidebar-settings-key-group"},hD=["placeholder"],mD=["disabled"],vD={class:"sidebar-settings-row sidebar-settings-row--select",style:{"margin-top":"4px",padding:"0"}},gD={class:"sidebar-settings-label"},yD=["aria-label"],wD={class:"sidebar-settings-label"},bD={class:"sidebar-settings-value"},_D={key:0,class:"sidebar-settings-telegram-panel"},kD={class:"sidebar-settings-field"},CD={class:"sidebar-settings-field-label"},TD={class:"sidebar-settings-field"},SD={class:"sidebar-settings-field-label"},xD={class:"sidebar-settings-field-help"},AD={key:0,class:"sidebar-settings-telegram-error"},PD=["href"],ED={class:"sidebar-settings-telegram-actions"},ID=["disabled"],RD={class:"sidebar-settings-hooks-section"},MD={class:"sidebar-settings-hooks-header"},$D={class:"sidebar-settings-hooks-title"},jD=["disabled","title"],ND={key:0,class:"sidebar-settings-hooks-empty"},LD={key:0,class:"sidebar-settings-hooks-empty"},OD={key:1,class:"sidebar-settings-hooks-empty"},DD={key:2,class:"sidebar-settings-hooks-list"},FD={class:"sidebar-settings-hooks-cwd"},UD={class:"sidebar-settings-hooks-event"},BD={class:"sidebar-settings-hooks-command"},qD={class:"sidebar-settings-remote-section"},zD={class:"sidebar-settings-remote-header"},HD={class:"sidebar-settings-remote-title"},WD=["disabled","title"],VD={class:"sidebar-settings-remote-toggle-label"},GD={key:0,class:"sidebar-settings-remote-empty"},KD={key:0,class:"sidebar-settings-remote-error"},YD={key:1,class:"sidebar-settings-remote-notice"},JD={key:2,class:"sidebar-settings-remote-empty"},QD=["disabled"],XD={class:"sidebar-settings-remote-label"},ZD={class:"sidebar-settings-remote-value"},eF={class:"sidebar-settings-remote-clients"},tF={class:"sidebar-settings-remote-clients-header"},nF={class:"sidebar-settings-remote-label"},oF=["disabled"],rF={key:0,class:"sidebar-settings-remote-empty"},aF={class:"sidebar-settings-remote-client-name"},sF=["disabled","onClick"],iF={class:"sidebar-settings-rate-limits"},lF=["aria-label"],uF={class:"sidebar-settings-actions"},cF=["title","aria-label"],dF=["title","aria-label"],fF={class:"content-root-wrap"},pF={key:0,class:"content-keyboard-spacer","aria-hidden":"true"},hF={key:1,class:"skills-route-header-icon","aria-hidden":"true"},mF={key:2,class:"skills-route-header-icon automations-route-header-icon","aria-hidden":"true"},vF=["aria-label","title"],gF={class:"content-body"},yF={key:2,class:"content-grid content-grid-home"},wF={class:"new-thread-empty"},bF={class:"new-thread-hero"},_F=["title"],kF={class:"new-thread-folder-actions"},CF=["disabled"],TF={key:1,class:"new-thread-launch-card","aria-label":"Plugins and Apps announcement"},SF={class:"new-thread-launch-card-copy"},xF={class:"new-thread-launch-card-topline"},AF={class:"new-thread-launch-card-badge","aria-hidden":"true"},PF={class:"new-thread-launch-card-eyebrow"},EF={class:"new-thread-launch-card-title"},IF={class:"new-thread-launch-card-text"},RF={class:"new-thread-launch-card-actions"},MF=["aria-label","onKeydown"],$F={class:"new-thread-open-folder-header"},jF={class:"new-thread-open-folder-title"},NF={class:"new-thread-open-folder-label"},LF={class:"new-thread-open-folder-current"},OF=["placeholder","title","disabled","onKeydown"],DF=["disabled"],FF={class:"new-thread-open-folder-actions"},UF={class:"new-thread-open-folder-toggle"},BF=["aria-pressed","disabled"],qF={key:0,class:"new-thread-open-folder-create"},zF={class:"new-thread-open-folder-create-composer"},HF=["placeholder","onKeydown"],WF=["disabled"],VF={key:0,class:"new-thread-open-folder-error visible-error-with-feedback"},GF=["href"],KF=["placeholder","onKeydown"],YF={key:1,class:"new-thread-open-folder-error-actions"},JF={class:"new-thread-open-folder-error visible-error-with-feedback"},QF=["href"],XF=["disabled"],ZF={key:2,class:"new-thread-open-folder-status"},eU={key:3,class:"new-thread-open-folder-status"},tU={key:4,class:"new-thread-open-folder-list"},nU=["title","disabled","onClick"],oU={class:"new-thread-open-folder-item-name"},rU=["disabled","onClick"],aU=["aria-label","onKeydown"],sU={class:"new-thread-open-folder-header"},iU={class:"new-thread-open-folder-title"},lU=["disabled"],uU=["aria-label"],cU=["aria-selected","disabled"],dU=["aria-selected","disabled"],fU={class:"new-thread-project-field"},pU={class:"new-thread-open-folder-label"},hU=["disabled","placeholder"],mU={key:0,class:"new-thread-project-field"},vU={class:"new-thread-open-folder-label"},gU=["disabled","placeholder","onKeydown"],yU={key:1,class:"new-thread-project-field"},wU={class:"new-thread-open-folder-label"},bU=["disabled","onKeydown"],_U={key:2,class:"new-thread-open-folder-error visible-error-with-feedback"},kU=["href"],CU={class:"new-thread-project-modal-actions"},TU=["disabled"],SU=["disabled"],xU={key:3,class:"new-thread-branch-select"},AU={class:"new-thread-branch-select-label"},PU={class:"new-thread-branch-select-help"},EU={key:4,class:"new-thread-runtime-help"},IU={class:"worktree-init-status-title"},RU={class:"worktree-init-status-message"},MU={class:"composer-with-queue"},$U={key:0,class:"composer-runtime-error",role:"alert"},jU=["href"],NU={key:3,class:"content-grid"},LU={class:"content-thread"},OU={key:0,class:"external-session-banner",role:"alert"},DU={key:1,class:"composer-runtime-error",role:"alert"},FU=["href"],UU={key:2,class:"interrupt-recovered-banner",role:"status"},BU=["aria-label"],qU={class:"content-right-panel-header"},zU={class:"content-right-panel-tabs",role:"tablist"},HU=["aria-selected"],WU=["aria-selected"],VU=["aria-selected","title","onClick"],GU={class:"content-right-panel-tab-label"},KU=["aria-label","title","onClick"],YU={class:"content-right-panel-actions"},JU={class:"content-right-panel-add-wrap"},QU=["aria-label","title"],XU={key:0,class:"content-right-panel-menu"},ZU=["aria-label","title"],e4={class:"content-right-panel-body"},t4={key:0,class:"project-zip-modal-backdrop",role:"presentation"},n4=["aria-label"],o4={class:"project-zip-modal-header"},r4={class:"project-zip-modal-title"},a4=["aria-label","disabled"],s4={class:"project-zip-modal-copy"},i4={class:"project-zip-progress-label",role:"status","aria-live":"polite"},l4={class:"project-zip-progress-track"},u4={key:0,class:"project-zip-modal-error",role:"alert"},c4={class:"project-zip-modal-actions"},d4=["disabled"],f4=["disabled"],p4=["disabled"],h4=["aria-label"],m4={class:"codex-login-modal-header"},v4={class:"codex-login-modal-title"},g4=["aria-label","disabled"],y4={class:"codex-login-modal-copy"},w4=["href"],b4=["placeholder","disabled"],_4={key:1,class:"codex-login-modal-error visible-error-with-feedback"},k4=["href"],C4={class:"codex-login-modal-actions"},T4=["disabled"],S4=["disabled"],Cv="codex-web-local.sidebar-collapsed.v1",Tv="codex-web-local.accounts-section-collapsed.v1",Sv="codex-web-local.right-panel-width.v1",x4=260,A4=640,xv=320,P4=400,Av="codex-web-local.send-with-enter.v1",Pv="codex-web-local.in-progress-send-mode.v1",Ev="codex-web-local.dark-mode.v1",Iv="codex-web-local.dictation-click-to-toggle.v1",Rv="codex-web-local.dictation-auto-send.v1",Mv="codex-web-local.dictation-language.v1",$v="codex-web-local.chat-width.v1",E4=400,I4=Nn({__name:"App",setup(e){var lh,uh;const t=nu(()=>au(()=>import("./ThreadConversation-CRNknojN.js"),__vite__mapDeps([0,1,2]))),n=nu(()=>au(()=>import("./ThreadTerminalPanel-CO2WH2DS.js"),__vite__mapDeps([3,4]))),o=nu(()=>au(()=>import("./ReviewPane-BRSFXiGm.js"),__vite__mapDeps([5,6]))),r=nu(()=>au(()=>import("./DirectoryHub-C00lAjDE.js"),__vite__mapDeps([7,1,8]))),s=nu(()=>au(()=>import("./AutomationsPanel-DoiJu1FG.js"),__vite__mapDeps([9,10]))),{t:a,uiLanguage:u,uiLanguageOptions:d,setUiLanguage:m}=Ar(),g="codex-mobile",w="0.1.92",x={sendWithEnter:a("When enabled, press Enter to send. When disabled, use Command+Enter to send."),inProgressSendMode:a("If a turn is still running, choose whether a new prompt should steer the current turn or be queued."),appearance:a("Switch between system theme, light mode, and dark mode."),chatWidth:a("Choose how wide the conversation column and composer can grow on desktop screens."),dictationClickToToggle:a("Use click-to-start and click-to-stop dictation instead of hold-to-talk."),dictationAutoSend:a("Automatically send transcribed dictation when recording stops."),dictationLanguage:a("Choose transcription language or keep auto-detect.")},R={standard:{label:"Standard",columnMax:"45rem",cardMax:"76ch"},wide:{label:"Wide",columnMax:"72rem",cardMax:"88ch"},"extra-wide":{label:"Extra wide",columnMax:"96rem",cardMax:"96ch"}},L={en:"english",zh:"chinese",de:"german",es:"spanish",ru:"russian",ko:"korean",fr:"french",ja:"japanese",pt:"portuguese",tr:"turkish",pl:"polish",ca:"catalan",nl:"dutch",ar:"arabic",sv:"swedish",it:"italian",id:"indonesian",hi:"hindi",fi:"finnish",vi:"vietnamese",he:"hebrew",uk:"ukrainian",el:"greek",ms:"malay",cs:"czech",ro:"romanian",da:"danish",hu:"hungarian",ta:"tamil",no:"norwegian",th:"thai",ur:"urdu",hr:"croatian",bg:"bulgarian",lt:"lithuanian",la:"latin",mi:"maori",ml:"malayalam",cy:"welsh",sk:"slovak",te:"telugu",fa:"persian",lv:"latvian",bn:"bengali",sr:"serbian",az:"azerbaijani",sl:"slovenian",kn:"kannada",et:"estonian",mk:"macedonian",br:"breton",eu:"basque",is:"icelandic",hy:"armenian",ne:"nepali",mn:"mongolian",bs:"bosnian",kk:"kazakh",sq:"albanian",sw:"swahili",gl:"galician",mr:"marathi",pa:"punjabi",si:"sinhala",km:"khmer",sn:"shona",yo:"yoruba",so:"somali",af:"afrikaans",oc:"occitan",ka:"georgian",be:"belarusian",tg:"tajik",sd:"sindhi",gu:"gujarati",am:"amharic",yi:"yiddish",lo:"lao",uz:"uzbek",fo:"faroese",ht:"haitian creole",ps:"pashto",tk:"turkmen",nn:"nynorsk",mt:"maltese",sa:"sanskrit",lb:"luxembourgish",my:"myanmar",bo:"tibetan",tl:"tagalog",mg:"malagasy",as:"assamese",tt:"tatar",haw:"hawaiian",ln:"lingala",ha:"hausa",ba:"bashkir",jw:"javanese",su:"sundanese",yue:"cantonese"},{projectGroups:B,projectDisplayNameById:Y,selectedThread:ae,selectedThreadTokenUsage:z,selectedThreadServerRequests:Z,selectedLiveOverlay:X,lastPlanByThreadId:ye,resolveThreadTurnIndex:Me,selectedActiveTurnId:Se,codexQuota:Fe,selectedThreadId:pe,availableCollaborationModes:Ue,availableModelIds:$e,availableModelReasoningEfforts:he,selectedCollaborationMode:Te,selectedReasoningEffort:Ae,selectedSpeedMode:Pe,codexCliMissingError:De,installedSkills:Ye,accountRateLimitSnapshots:He,messages:St,hasMoreOlderMessages:ct,isLoadingThreads:Ge,isThreadListFullyLoaded:nt,isLoadingMessages:dt,isLoadingOlderMessages:_t,isSendingMessage:Tt,isInterruptingTurn:gt,isSelectedThreadInterruptPending:se,isUpdatingSpeedMode:ne,error:re,refreshAll:H,refreshSkills:Be,refreshHooks:$,hooksList:D,isHooksLoading:G,onRealtimeEvent:ie,selectThread:le,ensureThreadMessagesLoaded:oe,loadMessages:Ce,loadOlderMessages:we,archiveThreadById:ve,compactThreadById:ce,compactingThreadIds:Ee,fuzzyFileSearchResults:be,registerFuzzyFileSearchSession:Oe,forkThreadById:Re,renameThreadById:Ve,forkThreadFromTurn:it,sendMessageToSelectedThread:yt,sendMessageToNewThread:It,interruptSelectedThreadTurn:Ze,interruptedUnsubmittedMessage:Wt,clearInterruptedUnsubmittedMessage:W,selectedThreadQueuedMessages:K,removeQueuedMessage:Q,reorderQueuedMessage:de,steerQueuedMessage:Le,autoCompactThreshold:We,setAutoCompactThreshold:ot,setSelectedCollaborationMode:Ft,readModelIdForThread:Vt,setSelectedModelIdForThread:Bn,setSelectedReasoningEffort:Jo,updateSelectedSpeedMode:vo,respondToPendingServerRequest:Qn,pendingReplyErrorForRequest:go,renameProject:Qo,removeProject:dr,reorderProject:gn,pinProjectToTop:mt,startPolling:nn,stopPolling:Xn,primeSelectedThread:Aa,rollbackSelectedThread:Es}=_L(),xt=JC(),Gt=YC(),{isMobile:ht}=yp();function Xo(){return typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}const sn=S(null),fr=S(null),yo=S(null);let Ln=null;const{buildFeedbackMailto:pr,feedbackMailtoBase:Pa,recordVisibleFailure:Ja}=xp(),Kn=Pa();function In(l,p){p&&Ja(p);const M=l.currentTarget;M instanceof HTMLAnchorElement&&(M.href=pr())}const Qa=S(null),Zn=S(null),yn=S(null),Qr=S(0);let Xt=null;function Xr(){const l=yn.value;if(!l)return;const p=window.getComputedStyle(l),M=Number.parseFloat(p.paddingLeft)+Number.parseFloat(p.paddingRight),j=Math.max(0,l.clientWidth-(Number.isFinite(M)?M:0)),U=window.getComputedStyle(l).getPropertyValue("--chat-column-max").trim(),fe=Number.parseFloat(U)*(U.endsWith("rem")?16:1),Ne=Number.isFinite(fe)&&fe>0?Math.min(j,fe):j;Qr.value=Ne}const Ea=S(null),wo=S(null),$o=S(!1),jo=S(!1),Lt=S(!0),Rt=S("git"),Yn=S([]),bo=S(""),eo=ee(()=>Yn.value.find(l=>l.key===bo.value)??null),qn=S(!1),On=S(!1),No=S(!1),hr=S(Ia());function Zr(l){return Math.min(A4,Math.max(x4,l))}function Ia(){if(typeof window>"u")return xv;const l=window.localStorage.getItem(Sv),p=Number(l);return Number.isFinite(p)?Zr(p):xv}function Pr(l){typeof window>"u"||window.localStorage.setItem(Sv,String(l))}function Er(l){l.preventDefault();const p=l.clientX,M=hr.value,j=fe=>{const Ne=p-fe.clientX;hr.value=Zr(M+Ne)},U=()=>{Pr(hr.value),window.removeEventListener("mousemove",j),window.removeEventListener("mouseup",U)};window.addEventListener("mousemove",j),window.addEventListener("mouseup",U)}const Xa=S(null),Ra=S(!1),to=S("");let _o=!1;const no=S(!1),wt=S(""),Rn=S("local"),zn=S({}),ln=new Map,oo=S(""),Zo=S([]),mr=S(!1),Jn=S({order:[],labels:{},projectOrder:[]}),Mt=S({phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""}),wn=S({phase:"idle",title:"",message:""}),Kt=S(Xb()),bn=S(""),Sn=S(!1),ro=S(null),ao=S(null),ea=S(null),Mn=S(null),Za=S(null),Hn=S(null);let Lo=null,vr=null,ko=0,Ir=0,ta=!1,Oo=0,fn=0,$t=0,Do=0;const so=S("New Project (1)"),Rr=S(""),_n=S(!1),Ma=[{id:"general",label:"General settings"},{id:"models",label:"Models & providers"},{id:"integrations",label:"Integrations"},{id:"usage",label:"Usage & about"}],I=S("general");let O=0;function V(){if(_n.value){O=Date.now(),_n.value=!1;return}Date.now()-O<P4||(_n.value=!0)}const ge=S(e_()),et=S(!1),Ut=S(!1),jt=S(new Set);async function pn(){try{jt.value=new Set(await o1())}catch{}finally{Ut.value=!0}}const io=ee(()=>!Ut.value||jt.value.has("hooks/list")),Mr=ee(()=>!Ut.value||["remoteControl/status/read","remoteControl/enable","remoteControl/pairing/start","remoteControl/client/list"].every(l=>jt.value.has(l)));rt(_n,l=>{l&&($(),ui(),Mr.value&&ci())});const Yt=S({enabled:!1,clients:[]}),hn=S(null),Fo=S(!1),lo=S(!1),uo=S(""),er=S(""),Is=S("");let $a=null,ii=!1,Jt=null;const en=S("never"),li=S(!1),Rs=S(!1),co=S(""),gr=S("");let Wi=!1;const yr=S(!1);async function ui(l={}){if(!(l.force!==!0&&Wi)){li.value=!0,co.value="";try{en.value=await l1(),Wi=!0}catch(p){co.value=p instanceof Error?p.message:"Failed to load approval policy"}finally{li.value=!1}}}function ja(l){en.value=l}async function Dn(){Rs.value=!0,co.value="",gr.value="";try{await u1(en.value),yr.value=!0,gr.value=a("Approval policy saved"),es&&clearTimeout(es),es=setTimeout(()=>{gr.value=""},2200)}catch(l){co.value=l instanceof Error?l.message:"Failed to save approval policy"}finally{Rs.value=!1}}let es=null;async function ci(l={}){if(!(l.force!==!0&&ii)){Fo.value=!0,er.value="";try{const p=await i1();Yt.value=p,ii=!0}catch(p){er.value=p instanceof Error?p.message:"Failed to load remote control status"}finally{Fo.value=!1}}}async function di(){const l=!Yt.value.enabled;lo.value=!0,uo.value=l?"enable":"disable";try{await c1(l),Yt.value={...Yt.value,enabled:l},fi(l?"Remote control enabled":"Remote control disabled")}catch(p){er.value=p instanceof Error?p.message:"Failed to update remote control"}finally{lo.value=!1,uo.value=""}}async function Vi(){lo.value=!0,uo.value="pairing";try{hn.value=await d1()}catch(l){er.value=l instanceof Error?l.message:"Failed to start pairing"}finally{lo.value=!1,uo.value=""}}async function Ms(){lo.value=!0,uo.value="clients";try{Yt.value={...Yt.value,clients:await f1()}}catch(l){er.value=l instanceof Error?l.message:"Failed to load remote clients"}finally{lo.value=!1,uo.value=""}}async function Nl(l){lo.value=!0,uo.value=`revoke:${l}`;try{await p1(l),Yt.value={...Yt.value,clients:Yt.value.clients.filter(p=>p.clientId!==l)},fi("Remote client removed")}catch(p){er.value=p instanceof Error?p.message:"Failed to remove remote client"}finally{lo.value=!1,uo.value=""}}function fi(l){Is.value=l,$a&&clearTimeout($a),$a=setTimeout(()=>{Is.value=""},3e3)}const $r=S(""),na=S(""),wr=S([]),oa=S(null),Na=S(null),br=S(null),La=S(null),Uo=S(!1),ts=S(!1),jr=S({addedLineCount:0,removedLineCount:0}),Co=S([]),Nr=S(""),qe=S({}),ke=S(""),Wn=S(""),Oa=S({}),_r=S(""),$s=S(""),un=S(!1),ra=S(!1);function Ll(l,p){return`${l}\0${p?"with-reset-history":"without-reset-history"}`}const ns=S(null),xn=S([]),To=S(!1),fo=S(!1),tr=S(!1),$n=S(!1),os=S(!1),aa=S(""),Lr=S(""),pi=S(null),nr=S(""),or=S(""),kr=S(""),cn=S(""),sa=S($d(Av,!0)),Da=S(Ob()),ia=S(Lb()),rs=S(Db()),rr=S($d(Iv,!1)),la=S($d(Rv,!0)),Fa=S(Jb()),as=ee(()=>Qb()),Ol=ee(()=>{const{loaded:l,total:p}=Mt.value,M=jp(l);return p&&p>0?`${M} / ${jp(p)}`:l>0?M:a("Preparing...")}),hi=ee(()=>{const{loaded:l,total:p,phase:M}=Mt.value;return M==="ready"?"100%":!p||p<=0?l>0?"55%":"20%":`${Math.min(100,Math.max(5,Math.round(l/p*100)))}%`}),js=S(!1),Or=S(!1),Dr=S(!1),ua=S(""),ss=S(!1),Gi=S(null),Zt=S(!1),So=S(""),An=S("codex"),Ns=ee(()=>[{value:"codex",label:a("Codex")},{value:"openrouter",label:a("OpenRouter")},{value:"opencode-zen",label:a("OpenCode Zen")},{value:"custom",label:a("Custom endpoint")}]),ar=S(""),is=S(""),y=S("responses"),C=S("responses"),_=S(""),F=S(!1),_e=S(""),lt=S(""),Pt=S(""),Bo=S(!1),Qt=S(!1),Fn=S(""),kn=S(""),sr=S(!1),Fr=S(!1),qo=S("create"),Ls=S(""),mi=S(""),vi=S(""),Os=S(!1),Ua=S(""),zo=S(!1),Dl=S(null),Du=S(null),Ba=S(!1),Fu=S(null),vd=S(null),qa=S(""),Ur=S(""),ca=S(""),Fl=S([]),Vn=S(""),xo=S(!1),Ao=S(!1),gi=S(!1),Br=S(""),Ds=[re,De,Nr,Wn,cn,So,Pt,kn,Ua,Vn],da=ee(()=>Ds.some(l=>l.value.trim().length>0)),qr=S({configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:""}),yi=S(null),Fs=S(!1),Ki=S(!1),ls=S(typeof window<"u"?((lh=window.visualViewport)==null?void 0:lh.height)??window.innerHeight:0),Ul=S(typeof window<"u"?((uh=window.visualViewport)==null?void 0:uh.offsetTop)??0:0),wi=S(typeof window<"u"?window.innerHeight:0);let za=null,Bl=!1,Yi=!1,ql=!1,bi=0;const us=ee(()=>{const l=xt.params.threadId;return typeof l=="string"?l:""}),jn=ee(()=>xt.name==="home"),Cr=ee(()=>xt.name==="skills"),cs=ee(()=>xt.name==="automations"),Uu=ee(()=>{const l=xt.query.automationId;return typeof l=="string"?l:""}),gd=ee(()=>{var l;return cs.value?a("Automations"):Cr.value?a("Skills"):jn.value?a("Start new thread"):((l=ae.value)==null?void 0:l.title)??a("Choose a thread")}),_i=typeof window<"u"&&(window.location.hostname||window.location.host)||"codexui",Ji=ee(()=>{var p,M;return(((M=(p=ae.value)==null?void 0:p.title)==null?void 0:M.trim())??"")||_i}),ki=ee(()=>St.value.filter(l=>{const p=n_(l.messageType,l.role);return p==="worked"?!0:!(p==="turnActivity.live"||p==="turnError.live"||p==="agentReasoning.live")})),Qi=new Set(["commandExecution","worked","toolCall","fileChange","agentMessage","agentMessage.live","plan"]),Xi=S(null);function zl(l,p,M){const j=typeof p.turnIndex=="number"?p.turnIndex:-1;return j<0?!1:l.some((U,fe)=>fe>M&&typeof U.turnIndex=="number"&&U.turnIndex>=j&&Qi.has(U.messageType??""))}function Bu(l,p){return l.some(M=>typeof M.turnIndex=="number"&&M.turnIndex>=p&&Qi.has(M.messageType??""))}const Hl=ee(()=>{const l=ki.value,p=dt.value;for(let fe=l.length-1;fe>=0;fe-=1){const Ne=l[fe];if(Ne.messageType!=="plan"&&Ne.messageType!=="plan.live")continue;const on=rv(Ne);if(!on||Xi.value!==null&&Ne.id===Xi.value)return null;const l_=p?!0:zl(l,Ne,fe);return{id:Ne.id,streaming:Ne.messageType==="plan.live",explanation:on.explanation,steps:on.steps,implemented:l_}}const M=pe.value?ye.value[pe.value]??null:null;if(!M)return null;const j=rv(M);if(!j)return null;const U=typeof M.turnIndex=="number"?M.turnIndex:M.turnId?Me(pe.value,M.turnId)??-1:-1;return{id:M.id,streaming:M.messageType==="plan.live",explanation:j.explanation,steps:j.steps,implemented:p?!0:U>=0?Bu(l,U):!1}}),yd=ee(()=>X.value),Tr=ee(()=>jn.value?"__new-thread__":pe.value),Us=ee(()=>Vt(Tr.value)),Zi=ee(()=>{const l=Z.value;return l.length>0?l[l.length-1]:null}),Wl=ee(()=>Zi.value?go(Zi.value.id):""),mn=ee(()=>{var l,p;return jn.value?wt.value.trim():((p=(l=ae.value)==null?void 0:l.cwd)==null?void 0:p.trim())??""}),el=ee(()=>Lt.value&&(jn.value&&mn.value.length>0||xt.name==="thread"&&pe.value.length>0)),wd=ee(()=>el.value&&Rt.value==="terminal"),tl=ee(()=>!ht.value||ls.value<=0||wi.value<=0?!1:wi.value-ls.value>120),bd=ee(()=>tl.value||wd.value&&jo.value),qu=ee(()=>{var l,p;return((p=(l=ae.value)==null?void 0:l.cwd)==null?void 0:p.trim())??wt.value.trim()}),Ci=ee(()=>{var l;return!jn.value&&((l=ae.value)==null?void 0:l.inProgress)===!0}),zr=ee(()=>{const l=pe.value;return!!l&&Ee.value.has(l)}),zu=ee(()=>{var l,p;return!jn.value&&((p=(l=ae.value)==null?void 0:l.externalSession)==null?void 0:p.active)===!0}),Vl=ee(()=>Tt.value||gt.value||Ci.value||Z.value.length>0);function Hu(){js.value&&(js.value=!1,MS(!0))}function Wu(){Hu(),Gt.push({name:"skills",query:{tab:"plugins"}})}function _d(){const l=pe.value;l&&ce(l)}function nl(l,p){const M=st(l).trim(),j=xr(M);return!M||!j?!1:p.some(U=>{const fe=st(U).trim();return fe!==M&&xr(fe)===j})}function Gl(l,p=""){const M=st(l).trim(),j=p.trim();if(j)return j;const U=xr(M),fe=[...Jn.value.order,...B.value.map(Ne=>{var on,ir;return((ir=(on=Ne.threads[0])==null?void 0:on.cwd)==null?void 0:ir.trim())??""}).filter(Boolean)];return nl(M,fe)?M:U}function kd(){const l=new Set(Jn.value.order),p=Jn.value.projectOrder.filter(M=>l.has(M));for(const M of Jn.value.order)p.includes(M)||p.push(M);return p}function Ti(l){const p=st(l).trim(),M=[...Jn.value.order,...B.value.map(j=>{var U,fe;return((fe=(U=j.threads[0])==null?void 0:U.cwd)==null?void 0:fe.trim())??""}).filter(Boolean)];return nl(p,M)?p:xr(p)}function ol(l){const p=st(l).trim();if(!p)return"";const M=[...Jn.value.order,...B.value.map(j=>{var U,fe;return((fe=(U=j.threads[0])==null?void 0:U.cwd)==null?void 0:fe.trim())??""}).filter(Boolean)];for(const j of Jn.value.order){const U=st(j).trim();if(!U)continue;const fe=xr(U),Ne=nl(U,M)?U:fe;if(U===p||Ne===p||fe===p)return U}return""}const Kl=ee(()=>{var j,U;const l=[],p=new Set;for(const fe of kd()){const Ne=fe.trim();!Ne||p.has(Ne)||(p.add(Ne),l.push({value:Ne,label:Gl(Ne,Jn.value.labels[Ne])}))}for(const fe of B.value){const Ne=((U=(j=fe.threads[0])==null?void 0:j.cwd)==null?void 0:U.trim())??"";!Ne||p.has(Ne)||Kc(Ne)||(p.add(Ne),l.push({value:Ne,label:Gl(Ne,Y.value[fe.projectName])}))}const M=wt.value.trim();return M&&!p.has(M)&&l.unshift({value:M,label:Gl(M)}),l}),ds=ee(()=>{const l=wt.value.trim();return l?zn.value[l]===!0:!1}),Cd=ee(()=>{var p,M;const l={};for(const j of B.value){const U=al(j.projectName,((M=(p=j.threads[0])==null?void 0:p.cwd)==null?void 0:M.trim())??"");l[j.projectName]=U?zn.value[U]===!0:!1}return l}),i=ee(()=>{const l=oo.value.trim(),p=[...Zo.value];return l&&!p.some(M=>M.value===l)&&p.unshift({value:l,label:l}),p}),c=ee(()=>{const l=oo.value.trim();if(!l)return"";const p=i.value.find(M=>M.value===l);return(p==null?void 0:p.label)??l}),h=ee(()=>Ur.value.trim()),b=ee(()=>{const l=Fn.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),E=ee(()=>b.value&&h.value.trim().length>0&&!Vn.value),P=ee(()=>{const l=mi.value.trim();return!l||l==="."||l===".."?!1:!/[\\/]/u.test(l)}),N=ee(()=>Ls.value.trim()?qo.value==="create"?P.value:vi.value.trim().length>0:!1),q=ee(()=>{const l=st(qa.value).trim();return l||Ur.value.trim()}),te=ee(()=>sr.value?"Creating…":"Create"),me=ee(()=>zo.value?qo.value==="clone"?a("Cloning…"):a("Creating…"):qo.value==="clone"?a("Clone repository"):a("Create project")),je=ee(()=>{const l=Ur.value.trim(),p=ca.value.trim();return!!(l&&p&&l!==p)}),Je=ee(()=>{const l=[];je.value&&l.push({key:`parent:${ca.value}`,name:"..",path:ca.value,kind:"parent"});for(const p of Fl.value)l.push({key:`directory:${p.path}`,name:p.name,path:p.path,kind:"directory"});return l}),pt=ee(()=>{const l=Br.value.trim().toLowerCase();return l?Je.value.filter(p=>p.kind==="parent"||p.name.toLowerCase().includes(l)):Je.value}),ut=typeof window<"u"?window.matchMedia("(prefers-color-scheme: dark)"):null,Et=ee(()=>a(R[rs.value].label)),Ha=ee(()=>{const l=R[rs.value],p=Math.max(0,wi.value-ls.value-Ul.value);return{"--chat-column-max":l.columnMax,"--chat-card-max":l.cardMax,"--visual-viewport-height":ls.value>0?`${ls.value}px`:"100dvh","--visual-viewport-offset-top":`${Math.max(0,Ul.value)}px`,"--virtual-keyboard-inset":`${p}px`}}),Bs=ee(()=>{if(!qr.value.configured)return a("Not configured");const l=qr.value.active?a("Online"):a("Configured (offline)"),p=qr.value.allowAllUsers?a("allow all users"):`${qr.value.allowedUsers} ${a("allowed user(s)")}`,M=`${qr.value.mappedChats} ${a("chat(s)")}, ${qr.value.mappedThreads} ${a("thread(s)")}, ${p}`,j=qr.value.lastError?`, ${a("error")}: ${qr.value.lastError}`:"";return`${l}, ${M}${j}`});Ps(()=>{var l,p;document.addEventListener("pointerdown",Bp),window.addEventListener("keydown",Dp),document.addEventListener("visibilitychange",qp),window.addEventListener("pageshow",zp),window.addEventListener("focus",Hp),window.addEventListener("resize",fa),(l=window.visualViewport)==null||l.addEventListener("resize",fa),(p=window.visualViewport)==null||p.addEventListener("scroll",fa),fa(),lc(),ut==null||ut.addEventListener("change",lc),Ln=ie(M=>{yo.value&&yo.value.refreshFromNotification(M)}),Jt=ie(M=>{M==="remoteControl/status/changed"&&ci({force:!0})}),o_(),Pb(),pn(),Gu(),Vs(),pa(),zs(),fs(),Nd(),Yw(),ui()}),rt(Ds,(l,p)=>{l.forEach((M,j)=>{if(M===p[j])return;const U=M.trim();U&&Ja(U)})}),rt(yn,l=>{Xt&&(Xt.disconnect(),Xt=null),typeof ResizeObserver<"u"&&(Xt=new ResizeObserver(Xr),l&&Xt.observe(l)),Xr()},{immediate:!0}),Nu(()=>{var l,p;document.removeEventListener("pointerdown",Bp),window.removeEventListener("keydown",Dp),document.removeEventListener("visibilitychange",qp),window.removeEventListener("pageshow",zp),window.removeEventListener("focus",Hp),window.removeEventListener("resize",fa),(l=window.visualViewport)==null||l.removeEventListener("resize",fa),(p=window.visualViewport)==null||p.removeEventListener("scroll",fa),ut==null||ut.removeEventListener("change",lc),Xt&&(Xt.disconnect(),Xt=null),za!==null&&(window.clearInterval(za),za=null),Lo&&(clearTimeout(Lo),Lo=null),rc(),Xn(),Ln&&(Ln(),Ln=null),Jt&&(Jt(),Jt=null),$a&&(clearTimeout($a),$a=null)});function fa(){var l,p;typeof window>"u"||(wi.value=Math.max(wi.value,window.innerHeight),ls.value=((l=window.visualViewport)==null?void 0:l.height)??window.innerHeight,Ul.value=((p=window.visualViewport)==null?void 0:p.offsetTop)??0)}rt(bn,l=>{const p=l.trim();if(Lo&&(clearTimeout(Lo),Lo=null),!p){Hn.value=null;return}Lo=setTimeout(()=>{kS(p,1e3).then(M=>{bn.value.trim()===p&&(Hn.value=M.threadIds)}).catch(()=>{bn.value.trim()===p&&(Hn.value=null)})},220)}),rt(tl,l=>{l||(jo.value=!1)}),rt(xn,()=>{if(typeof window>"u")return;if(!xn.value.some(p=>p.quotaStatus==="loading")){za!==null&&(window.clearInterval(za),za=null);return}za===null&&(za=window.setInterval(()=>{Bl||(Bl=!0,Jl({silent:!0}).finally(()=>{Bl=!1}))},1500))},{deep:!0}),rt(He,()=>{Sr().then(l=>{l&&H({includeSelectedThreadMessages:!1,providerChanged:!0,awaitAncillaryRefreshes:!0})})},{deep:!0});async function Sr(){if(!Yi||ql||An.value!=="codex"||xn.value.length>0||He.value.length===0)return!1;ql=!0;const l=JSON.stringify(xn.value.map(M=>M.accountId).sort());try{const M=await Am();xn.value=M.accounts}catch{await Jl({silent:!0})}const p=JSON.stringify(xn.value.map(M=>M.accountId).sort());return l!==p}function qs(){Be({force:!0})}function Vu(l){l&&Ce(l,{silent:!0,force:!0})}async function fs(){try{qr.value=await SS()}catch(l){const p=l instanceof Error?l.message:"Failed to load Telegram status";qr.value={configured:!1,active:!1,mappedChats:0,mappedThreads:0,allowedUsers:0,allowAllUsers:!1,lastError:p}}}async function zs(){try{const l=await TS();_e.value=l.botToken,lt.value=l.allowedUserIds.map(p=>String(p)).join(`
|
|
81
81
|
`),Pt.value=""}catch(l){Pt.value=l instanceof Error?l.message:"Failed to load Telegram configuration"}}async function Gu(){const l=await RS();js.value=l.dismissed!==!0}function Ku(l){const p=l.split(/[\n,]/).map(U=>U.trim().replace(/^(telegram|tg):/i,"").trim()).filter(Boolean),M=p.includes("*"),j=Array.from(new Set(p.filter(U=>/^-?\d+$/.test(U)).map(U=>Number.parseInt(U,10))));return M?["*",...j]:j}async function Yu(){const l=_e.value.trim(),p=Ku(lt.value);if(!l){Pt.value=a("Telegram bot token is required.");return}if(p.length===0){Pt.value=a("At least one allowed Telegram user ID or * is required.");return}Bo.value=!0,Pt.value="";try{await CS(l,p),lt.value=p.map(M=>String(M)).join(`
|
|
82
82
|
`),await Promise.all([zs(),fs()]),window.alert(a("Telegram bot configured. Only allowlisted Telegram users can use the bridge."))}catch(M){Pt.value=M instanceof Error?M.message:a("Failed to connect Telegram bot"),fs()}finally{Bo.value=!1}}function Ju(){Sn.value=!Sn.value,Sn.value?zt(()=>{var l;return(l=ao.value)==null?void 0:l.focus()}):bn.value=""}function Qu(){var l;bn.value="",(l=ao.value)==null||l.focus()}function rl(){return ro.value?ro.value:typeof document>"u"?null:document.querySelector(".mobile-drawer .sidebar-scrollable, .sidebar-scrollable")}function Xu(l){if(Kt.value||ta)return;const p=l==null?void 0:l.currentTarget,M=p instanceof HTMLElement?p:rl();ko=(M==null?void 0:M.scrollTop)??ko}function Zu(){const l=++Ir,p=ko,M=90;ta=!0;const j=()=>{l===Ir&&(ko=p,ta=!1)},U=fe=>{if(l!==Ir)return;if(Kt.value){j();return}const Ne=rl();if(Ne&&(Ne.scrollTop=p,Math.abs(Ne.scrollTop-p)<=1||fe>=M)){j();return}if(fe>=M||typeof window>"u"){j();return}window.requestAnimationFrame(()=>U(fe+1))};zt(()=>U(0))}function Ie(l){l.key==="Escape"&&(Sn.value=!1,bn.value="")}function Ot(l){l&&(xt.name==="thread"&&us.value===l||(Gt.push({name:"thread",params:{threadId:l}}),ht.value&&Po(!0)))}function Hs(l){xt.name==="automations"&&Uu.value!==l&&Gt.replace({name:"automations",query:l?{automationId:l}:{}})}async function ec(l){var p;Kt.value&&(Po(!1),await zt()),(p=sn.value)==null||p.openAutomationEditorFromPanel(l)}async function ew(){var l;Kt.value&&(Po(!1),await zt()),(l=sn.value)==null||l.openAutomationCreatorFromPanel()}function tw(){var l;xt.name==="automations"&&((l=fr.value)==null||l.loadAutomations())}async function nw(l){l&&pe.value===l&&await $b()}function ow(l){return l.length>8?l.slice(-8):l}function Pp(l){const p=[l.planType||a("unknown")];return l.authMode&&p.unshift(l.authMode),p.join(" · ")}function rw(l){if(!l)return!1;const p=l.toLowerCase();return p.includes("payment required")||/\b402\b/.test(p)}function Yl(l){return l.unavailableReason==="payment_required"||rw(l.quotaError)}function Ep(l){return To.value||fo.value||tr.value||$n.value||nr.value.length>0||l.isActive&&nr.value!==l.storageId&&Vl.value}function tc(l){return or.value===l.storageId}function Ip(l){return kr.value===l.storageId||tc(l)}function aw(l){return Yl(l)?a("Unavailable"):l.isActive?a("Active"):fo.value?a("Switching…"):a("Switch")}function sw(l){return nr.value===l.storageId?a("Removing…"):tc(l)?a("Click again to remove"):a("Remove")}function iw(l){kr.value=l}function lw(l){kr.value===l&&(kr.value=""),nr.value!==l&&or.value===l&&(or.value="")}function uw(l){const p=l.quotaSnapshot;if(!p)return null;const M=[p==null?void 0:p.primary,p==null?void 0:p.secondary].filter(fe=>fe!==null),j=M.find(fe=>fe.windowMinutes===7*24*60);if(j)return j;const U=M.filter(fe=>typeof fe.windowMinutes=="number"&&fe.windowMinutes>=7*24*60).sort((fe,Ne)=>(fe.windowMinutes??0)-(Ne.windowMinutes??0))[0]??null;return U||(p.secondary??null)}function cw(l){if(typeof l!="number"||!Number.isFinite(l))return"";const p=new Date(l*1e3);return`${p.getMonth()+1}月${p.getDate()}日`}function Rp(l){var fe,Ne;if(Yl(l))return l.quotaError||a("402 Payment Required");const p=l.quotaSnapshot,M=uw(l),j=(p==null?void 0:p.primary)??(p==null?void 0:p.secondary)??null,U=M??j;if(U){const on=Math.max(0,Math.min(100,100-Math.round(U.usedPercent))),ir=cw(U.resetsAt);return ir?`${on}% ${a("weekly remaining")} · ${ir}`:`${on}% ${a("weekly remaining")}`}return(fe=p==null?void 0:p.credits)!=null&&fe.unlimited?a("Unlimited credits"):(Ne=p==null?void 0:p.credits)!=null&&Ne.hasCredits&&p.credits.balance?`${p.credits.balance} ${a("credits")}`:l.quotaStatus==="loading"?a("Loading quota…"):l.quotaStatus==="error"?l.quotaError||a("Quota unavailable"):l.quotaStatus==="ready"||l.quotaStatus==="idle"?a("Quota unavailable"):a("Fetching account details…")}function dw(l){return[l.email||a("Account"),Pp(l),Yl(l)?a("Unavailable account"):null,Rp(l),`${a("Workspace")} ${l.accountId}`].filter(Boolean).join(`
|
|
83
83
|
`)}async function Jl(l={}){try{const p=await T1();xn.value=p.accounts,p.accounts.some(M=>M.storageId===kr.value)||(kr.value=""),p.accounts.some(M=>M.storageId===or.value)||(or.value="")}catch(p){if(l.silent===!0)return;cn.value=p instanceof Error?p.message:a("Failed to load accounts")}}async function fw(){if(!(To.value||fo.value||tr.value||$n.value)){cn.value="",kr.value="",or.value="",To.value=!0;try{const l=await Am();xn.value=l.accounts,Xn(),nn(),H({includeSelectedThreadMessages:!0})}catch(l){cn.value=l instanceof Error?l.message:a("Failed to refresh accounts")}finally{To.value=!1}}}async function pw(l){if(!(fo.value||To.value||tr.value||$n.value)){if(Vl.value){cn.value=a("Finish the current turn and pending requests before switching accounts.");return}cn.value="",kr.value="",or.value="",fo.value=!0;try{const p=await A1(l);xn.value=xn.value.map(M=>M.storageId===l?p:{...M,isActive:!1}),Xn(),nn(),H({includeSelectedThreadMessages:!0}),Jl({silent:!0})}catch(p){cn.value=p instanceof Error?p.message:a("Failed to switch account")}finally{fo.value=!1}}}async function hw(){var l;if(!(To.value||fo.value||tr.value||$n.value)){cn.value="",Lr.value="",tr.value=!0;try{const p=await S1();aa.value=p,os.value=!0,window.open(p,"_blank","noopener,noreferrer"),await zt(),(l=pi.value)==null||l.focus()}catch(p){cn.value=p instanceof Error?p.message:a("Failed to start Codex login")}finally{tr.value=!1}}}function Td(){$n.value||(os.value=!1,Lr.value="")}async function mw(){const l=Lr.value.trim();l&&await vw(l)}async function vw(l){if(!($n.value||l.length===0)){cn.value="",$n.value=!0;try{const p=await x1(l);xn.value=p.accounts,aa.value="",Lr.value="",os.value=!1,Xn(),nn(),H({includeSelectedThreadMessages:!0})}catch(p){cn.value=p instanceof Error?p.message:a("Failed to complete Codex login")}finally{$n.value=!1}}}async function gw(l){if(To.value||fo.value||tr.value||$n.value||nr.value.length>0)return;const p=xn.value.find(j=>j.storageId===l)??null;if(!p)return;if(or.value!==l){or.value=l;return}if(p.isActive&&Vl.value){cn.value=a("Finish the current turn and pending requests before removing the active account.");return}const M=p.isActive;cn.value="",or.value="",nr.value=l;try{const j=await P1(l);xn.value=j.accounts,Xn(),nn(),M&&H({includeSelectedThreadMessages:!0}),Jl({silent:!0})}catch(j){cn.value=j instanceof Error?j.message:a("Failed to remove account")}finally{nr.value=""}}function yw(l){ve(l)}function ww(l){H({includeSelectedThreadMessages:!1,forceThreadRefresh:!0})}async function bw(l){const p=await Re(l);p&&(jn.value?await Gt.replace({name:"thread",params:{threadId:p}}):await Gt.push({name:"thread",params:{threadId:p}}),ht.value&&Po(!0))}function Mp(l){const p=l.trim().replace(/\\/gu,"/");return p?p.includes("/.codex/worktrees/")||p.includes("/.git/worktrees/"):!1}function al(l,p=""){var fe,Ne,on;const M=B.value.find(ir=>ir.projectName===l);if(!M)return ol(l)||p.trim();const j=M.threads.find(ir=>!Mp(ir.cwd));return(((fe=j==null?void 0:j.cwd)==null?void 0:fe.trim())??((on=(Ne=M.threads[0])==null?void 0:Ne.cwd)==null?void 0:on.trim())??"")||ol(l)||p.trim()}function _w(l){var j,U;const p=B.value.find(fe=>fe.projectName===l),M=al(l,((U=(j=p==null?void 0:p.threads[0])==null?void 0:j.cwd)==null?void 0:U.trim())??"");M&&(wt.value=M),ht.value&&Po(!0),!jn.value&&Gt.push({name:"home"})}function kw(l){var M;let p="";for(const j of B.value){const U=j.threads.find(fe=>fe.id===l);if((M=U==null?void 0:U.cwd)!=null&&M.trim()){p=U.cwd.trim();break}}!p||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(p)}`,"_blank","noopener,noreferrer")}function nc(l){var M,j;const p=B.value.find(U=>U.projectName===l);return al(l,((j=(M=p==null?void 0:p.threads[0])==null?void 0:M.cwd)==null?void 0:j.trim())??"")}const $p=ee(()=>Object.fromEntries(B.value.map(l=>[l.projectName,nc(l.projectName).trim()]).filter(([,l])=>l.length>0)));function Cw(l){return(Y.value[l]??l).trim()||l}function Tw(l){return Cw(l).replace(/[\\/]+/gu,"-").replace(/[\u0000-\u001f]+/gu,"").trim()||"worktree"}function Sw(l){const p=nc(l);!p||typeof window>"u"||window.open(`/codex-local-browse${encodeURI(p)}`,"_blank","noopener,noreferrer")}async function xw(l){const p=nc(l);await Lp(p)}async function Aw(l){const p=Pw(l);await Lp(p)}function Pw(l){var p;for(const M of B.value){const j=M.threads.find(U=>U.id===l);if((p=j==null?void 0:j.cwd)!=null&&p.trim())return j.cwd.trim()}return""}function jp(l){if(!Number.isFinite(l)||l<=0)return"0 B";const p=["B","KB","MB","GB"];let M=l,j=0;for(;M>=1024&&j<p.length-1;)M/=1024,j+=1;return`${M>=10||j===0?M.toFixed(0):M.toFixed(1)} ${p[j]}`}function Ew(l,p){const M=URL.createObjectURL(l),j=document.createElement("a");j.href=M,j.download=p,document.body.appendChild(j),j.click(),document.body.removeChild(j),window.setTimeout(()=>URL.revokeObjectURL(M),3e4)}async function Iw(l,p){const j={files:[new File([l],p,{type:l.type||"application/zip"})],title:p};if(!(typeof navigator<"u"&&typeof navigator.share=="function"&&(typeof navigator.canShare!="function"||navigator.canShare(j))))throw new Error("File sharing is not supported in this browser.");await navigator.share(j)}function Np(){Mt.value.phase!=="exporting"&&(Mt.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""})}function Rw(){const{blob:l,fileName:p}=Mt.value;!l||!p||(Mt.value={...Mt.value,error:""},Ew(l,p))}async function Mw(){const{blob:l,fileName:p}=Mt.value;if(!(!l||!p))try{Mt.value={...Mt.value,error:""},await Iw(l,p)}catch(M){if(M instanceof DOMException&&M.name==="AbortError")return;const j=M instanceof Error?M.message:"",U=M instanceof DOMException&&M.name==="NotAllowedError"||/permission denied|notallowed|not allowed|gesture/iu.test(j);Mt.value={...Mt.value,error:U?a("This browser blocked sharing the ZIP. Use Download instead."):j||a("Failed to share project. Use Download instead.")}}}async function Lp(l){if(!(!l||typeof document>"u")){Mt.value={phase:"exporting",loaded:0,total:null,blob:null,fileName:"",error:""};try{const{blob:p,fileName:M}=await vS(l,({loaded:j,total:U})=>{Mt.value={...Mt.value,phase:"exporting",loaded:j,total:U}});Mt.value={phase:"ready",loaded:p.size,total:p.size,blob:p,fileName:M,error:""}}catch(p){if(Mt.value={phase:"idle",loaded:0,total:null,blob:null,fileName:"",error:""},p instanceof DOMException&&p.name==="AbortError")return;const M=p instanceof Error?p.message:"Failed to export project.";window.alert(M)}}}async function $w(l){const p=nc(l);if(!p||typeof window>"u"||(await oc(p),zn.value[p]!==!0))return;const M=`${Tw(l)}-`,j=window.prompt("New worktree folder name",M);if(j===null)return;const U=j.trim();if(U){if(U.includes("/")||U.includes("\\")||U==="."||U===".."){window.alert("Worktree name must be a single folder name.");return}try{const fe=await nS(p,U),Ne=await vc(fe.cwd,{createIfMissing:!1,label:""});if(!Ne)return;wt.value=Ne,Rn.value="local",mt(Ti(Ne)),await Vs(),await pa(),ht.value&&Po(!0),jn.value||await Gt.push({name:"home"})}catch(fe){const Ne=fe instanceof Error?fe.message:"Failed to create worktree.";window.alert(Ne)}}}function jw(){var M,j,U;const l=ae.value;if(!l)return"";const p=((M=l.projectName)==null?void 0:M.trim())??"";return p?al(p,((U=l.cwd)==null?void 0:U.trim())??""):((j=l.cwd)==null?void 0:j.trim())??""}function Sd(){const l=jw();l&&(wt.value=l),Rn.value="local",ht.value&&Po(!0),!jn.value&&Gt.push({name:"home"})}function Nw(){wt.value="",Rn.value="local",ht.value&&Po(!0),!jn.value&&Gt.push({name:"home"})}async function oc(l){const p=l.trim();if(!p||Object.prototype.hasOwnProperty.call(zn.value,p))return;const M=ln.get(p);if(M){const fe=await M;Object.prototype.hasOwnProperty.call(zn.value,p)||(zn.value={...zn.value,[p]:fe});return}const j=aS(p).then(fe=>fe.isGitRepo).catch(()=>!1).finally(()=>{ln.delete(p)});ln.set(p,j);const U=await j;Object.prototype.hasOwnProperty.call(zn.value,p)||(zn.value={...zn.value,[p]:U})}function Lw(l){Qo(l.projectName,l.displayName)}function Ow(l){Ve(l.threadId,l.title)}async function Dw(l){await dr(l),await Vs(),pa()}function Fw(l){gn(l.projectName,l.toIndex)}function Uw(l){var j,U;const p=B.value.find(fe=>fe.projectName===l),M=al(l,((U=(j=p==null?void 0:p.threads[0])==null?void 0:j.cwd)==null?void 0:U.trim())??"");oc(M)}function Op(l){Bw(l)}async function Bw(l){var j;const p=await Qn(l),M=((j=l.followUpMessageText)==null?void 0:j.trim())??"";if(!(!p||!M||jn.value))try{await yt(M,[],[],"steer",[])}catch{}}async function qw(l){const p=await it(l.threadId,l.turnIndex);p&&(await Gt.push({name:"thread",params:{threadId:p}}),pe.value!==p&&await le(p),ht.value&&Po(!0))}function Po(l){var p;if(Kt.value!==l){if(l){const M=(p=rl())==null?void 0:p.scrollTop;typeof M=="number"&&(M>0||ko===0)&&(ko=M)}Kt.value=l,Zb(l),l||Zu()}}function Dp(l){if(l.defaultPrevented)return;if(l.key==="Escape"&&_n.value){_n.value=!1;return}if(!l.ctrlKey&&!l.metaKey||l.shiftKey||l.altKey)return;const p=l.key.toLowerCase();if(p==="b"){if(!(Xo()?l.metaKey&&!l.ctrlKey:l.ctrlKey&&!l.metaKey))return;l.preventDefault(),Po(!Kt.value);return}if(p==="j"&&xt.name==="thread"&&pe.value){l.preventDefault(),Fp();return}p==="j"&&jn.value&&mn.value&&(l.preventDefault(),Fp())}function Fp(){el.value&&(ht.value&&!On.value&&(On.value=!0),ht.value||(No.value=!1),Rt.value=Rt.value==="terminal"?"git":"terminal",Rt.value!=="terminal"&&xi())}function Si(l){Rt.value=l,qn.value=!1,ht.value||(No.value=!1),ht.value&&(On.value=!0),l!=="terminal"&&xi()}function zw(l){const p=Yn.value.find(M=>M.path===l.path);if(p)bo.value=p.key;else{const M={key:`preview-${Date.now()}`,path:l.path,label:l.label};Yn.value=[...Yn.value,M],bo.value=M.key}Si("preview")}function Hw(l){Yn.value.some(p=>p.key===l)&&(bo.value=l,Si("preview"))}function Ww(l){const p=Yn.value.findIndex(U=>U.key===l);if(p<0)return;const M=Yn.value.filter(U=>U.key!==l);if(Yn.value=M,bo.value!==l)return;if(M.length===0){bo.value="",Rt.value="files";return}const j=M[Math.min(p,M.length-1)];bo.value=j.key}function Up(){if(ht.value){On.value=!1;return}No.value=!0,qn.value=!1,xi()}function Vw(){if(ht.value){On.value=!On.value;return}No.value=!No.value,No.value&&(qn.value=!1,xi())}function Gw(){Rt.value="git",ht.value&&(On.value=!1),xi()}function Kw(l){if($o.value=l,!l){jo.value=!1,rc();return}jo.value=!0,rc(),vr=setTimeout(()=>{vr=null,tl.value||(jo.value=!1)},1500)}function xi(){$o.value=!1,jo.value=!1,rc()}function rc(){vr&&(clearTimeout(vr),vr=null)}async function Yw(){try{const l=await _1();Lt.value=l.available,!l.available&&Rt.value==="terminal"&&(Rt.value="git",xi())}catch{Lt.value=!1,Rt.value==="terminal"&&(Rt.value="git")}}function Bp(l){var M,j;const p=l.target;if(p instanceof Node){if($o.value){const U=p instanceof Element?p:p.parentElement;U!=null&&U.closest(".thread-terminal-panel")||xi()}_n.value&&((M=Mn.value)!=null&&M.contains(p)||(j=Za.value)!=null&&j.contains(p)||(O=Date.now(),_n.value=!1))}}function Jw(l){var M,j;if(!_n.value)return;const p=l.target;p instanceof Node&&((M=Mn.value)!=null&&M.contains(p)||(j=Za.value)!=null&&j.contains(p)||(O=Date.now(),_n.value=!1))}function Qw(){var l;(l=sn.value)==null||l.openRecycleBin()}function qp(){if(!(typeof document>"u")&&ht.value){if(document.visibilityState==="hidden"){yi.value=Date.now(),Fs.value=!1;return}xd()}}function zp(l){l.persisted&&xd()}function Hp(){xt.name==="home"&&(Vs(),pa()),xd()}function xd(){typeof window>"u"||typeof document>"u"||!ht.value||document.visibilityState!=="visible"||Fs.value||yi.value===null||Date.now()-yi.value<E4||(Fs.value=!0,yi.value=null,Xw())}async function Xw(){if(!Ki.value){Ki.value=!0;try{await H({includeSelectedThreadMessages:!0,awaitAncillaryRefreshes:!0}),await Od()}finally{Ki.value=!1}}}function Wp(l){const p=l.text;ac();const M=Xa.value,j=l.mode==="queue"&&M&&M.threadId===pe.value?M.queueIndex:void 0;if(Xa.value=null,jn.value){r_(p,l.imageUrls,l.skills,l.fileAttachments);return}yt(p,l.imageUrls,l.skills,l.mode,l.fileAttachments,j)}function Zw(l){const p=K.value.findIndex(fe=>fe.id===l),M=p>=0?K.value[p]:void 0,j=Zn.value;if(!M||!j||j.hasUnsavedDraft()&&!window.confirm("Replace the current draft with this queued message for editing?"))return;Xa.value=pe.value?{threadId:pe.value,queueIndex:p}:null;const U={text:M.text,imageUrls:[...M.imageUrls],fileAttachments:M.fileAttachments.map(fe=>({...fe})),skills:M.skills.map(fe=>({...fe}))};j.hydrateDraft(U),Q(l)}function ac(){if(!ht.value||jn.value)return;const l=()=>{var p;(p=Ea.value)==null||p.jumpToLatest()};l(),zt(()=>{l(),!(typeof window>"u")&&window.requestAnimationFrame(()=>{l(),window.requestAnimationFrame(l)})})}function eb(l){wt.value=l.trim(),kn.value=""}function tb(l){oo.value=l.trim()}function Ws(l){const p=mn.value.trim();return!l||p!==l?!1:xt.name==="thread"||xt.name==="home"&&ds.value}function Vp(){Oo+=1,fn+=1,$t+=1,Do+=1,wr.value=[],oa.value=null,Na.value=null,br.value=null,La.value=null,Uo.value=!1,ts.value=!1,jr.value={addedLineCount:0,removedLineCount:0},Co.value=[],qe.value={},ke.value="",Wn.value="",Oa.value={},_r.value="",$s.value="",Nr.value="",un.value=!1}function Gp(l){const p=l.trim();if(!p){jr.value={addedLineCount:0,removedLineCount:0};return}const M=++Do;cS(p,"unstaged").then(j=>{M!==Do||!Ws(p)||(jr.value={addedLineCount:j.addedLineCount,removedLineCount:j.removedLineCount})}).catch(()=>{M!==Do||!Ws(p)||(jr.value={addedLineCount:0,removedLineCount:0})})}async function Ql(l){var j,U,fe;const p=l.trim();if(!p){Vp();return}const M=++Oo;un.value=!0,Nr.value="";try{const Ne=await rS(p);if(M!==Oo||!Ws(p))return;wr.value=Ne.options,oa.value=Ne.currentBranch,Na.value=Ne.headSha,br.value=Ne.headSubject,La.value=Ne.headDate,Uo.value=Ne.detached,ts.value=Ne.dirty,Co.value=Ne.changedFiles,Gp(p);const on=((j=Ne.currentBranch)==null?void 0:j.trim())||((fe=(U=Ne.options[0])==null?void 0:U.value)==null?void 0:fe.trim())||"";on&&Kp({branch:on,includeResetHistory:!0})}catch{if(M!==Oo||!Ws(p))return;wr.value=[],oa.value=null,Na.value=null,br.value=null,La.value=null,Uo.value=!1,ts.value=!1,jr.value={addedLineCount:0,removedLineCount:0},Co.value=[]}finally{M===Oo&&(un.value=!1)}}function nb(l){oa.value=l.currentBranch,Na.value=l.headSha,br.value=l.headSubject,La.value=l.headDate,Uo.value=l.detached,ts.value=l.dirty,Co.value=l.changedFiles,Gp(mn.value)}function ob(l){if(ra.value)return;const p=l.trim();if(!p||p===(oa.value??""))return;const M=mn.value.trim();M&&(ra.value=!0,Nr.value="",sS(M,p).then(j=>(oa.value=j||p,Na.value=null,br.value=null,La.value=null,Uo.value=!1,et.value=!1,Ql(M))).catch(j=>{const U=j instanceof Error?j.message:"Failed to switch branch";Ql(M).finally(()=>{Nr.value=U})}).finally(()=>{ra.value=!1}))}function rb(l){if(ra.value)return;const p=l.branch.trim(),M=l.sha.trim(),j=mn.value.trim();!p||!M||!j||(ra.value=!0,Nr.value="",uS(j,p,M).then(U=>(nb(U),et.value=!1,Ql(j))).catch(U=>{const fe=U instanceof Error?U.message:"Failed to reset branch to commit";Ql(j).finally(()=>{Nr.value=fe})}).finally(()=>{ra.value=!1}))}function Kp(l){const p=(typeof l=="string"?l:l.branch).trim(),M=typeof l=="string"?!0:l.includeResetHistory!==!1,j=mn.value.trim(),U=Ll(p,M);if(!p||!j||ke.value===U||(Wn.value="",qe.value[U]))return;const fe=++fn;ke.value=U,iS(j,p,{includeResetHistory:M}).then(Ne=>{fe!==fn||!Ws(j)||(qe.value={...qe.value,[U]:Ne})}).catch(Ne=>{fe!==fn||!Ws(j)||(Wn.value=Ne instanceof Error?Ne.message:"Failed to load branch commits")}).finally(()=>{fe===fn&&ke.value===U&&(ke.value="")})}function ab(l){const p=l.trim(),M=mn.value.trim();if(!p||!M||_r.value===p||($s.value="",Oa.value[p]))return;const j=++$t;_r.value=p,lS(M,p).then(U=>{j!==$t||!Ws(M)||(Oa.value={...Oa.value,[p]:U})}).catch(U=>{j!==$t||!Ws(M)||($s.value=U instanceof Error?U.message:"Failed to load commit files")}).finally(()=>{j===$t&&_r.value===p&&(_r.value="")})}function sb(l){const p=l.path.trim(),M=l.sha.trim();!p||!M||($r.value=p,na.value=M,et.value=!0)}function ib(){$r.value="",na.value="",et.value=!et.value}function lb(){!$r.value&&!na.value||($r.value="",na.value="",et.value=!1)}async function ub(){const l=await ic();l&&(await pa(),Ls.value=l,mi.value=so.value.trim()||"New Project (1)",vi.value="",Ua.value="",qo.value="create",Fr.value=!0,zt(()=>{var p;return(p=Dl.value)==null?void 0:p.focus()}))}function sc(){zo.value||(Fr.value=!1,Ua.value="")}let Ad=!1,Pd=!1;function cb(){Ad=!0}function db(){Ad&&(Ad=!1,sl())}function fb(){Pd=!0}function pb(){Pd&&(Pd=!1,sc())}async function hb(){const l=Ls.value.trim(),p=mi.value.trim();if(!P.value)throw new Error("Enter a single project folder name.");const M=Xp(Qp(l,p));return M?vc(M,{createIfMissing:!0,label:""}):""}async function mb(){const l=Ls.value.trim(),p=vi.value.trim();return p?wS(p,l):""}async function Ed(){if(!(!N.value||zo.value)){Ua.value="",zo.value=!0;try{const l=qo.value==="clone"?await mb():await hb();if(!l)return;wt.value=l,mt(Ti(l)),await Vs(),await pa(),Fr.value=!1}catch(l){Ua.value=l instanceof Error?l.message:"Failed to create or clone project."}finally{zo.value=!1}}}function vb(){gb(Du.value)}function gb(l){Os.value||!l||(l.value="",l.click())}async function yb(l,p,M){Os.value=!0;try{const j=await ic();if(!j)return;const U=await p(j);if(!U.path)return;wt.value=U.path,mt(Ti(U.path)),await Vs(),await H({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await pa()}catch(j){const U=j instanceof Error?j.message:M;window.alert(U)}finally{Os.value=!1,l&&(l.value="")}}async function wb(l){var j;const p=l.target instanceof HTMLInputElement?l.target:null,M=((j=p==null?void 0:p.files)==null?void 0:j[0])??null;!M||Os.value||await yb(p,U=>gS(M,U),"Failed to import project.")}async function bb(){const l=wt.value.trim()||await ic();l&&(Qt.value=!1,Ba.value=!0,Br.value="",await Gs(l),Vn.value||zt(()=>{var p;return(p=Fu.value)==null?void 0:p.focus()}))}function sl(){bi+=1,Ba.value=!1,xo.value=!1,Vn.value="",Br.value="",qa.value="",Xl()}async function _b(l){!l||xo.value||(Br.value="",await Gs(l))}function kb(){const l=Ur.value.trim();!Ba.value||!l||Gs(l)}function Cb(){const l=q.value;!Ba.value||!l||xo.value||Gs(l)}function Tb(){if(!Ba.value||xo.value||Ao.value)return;const l=q.value,p=Ur.value.trim();!l||l===p||Gs(l)}function Sb(){const l=q.value,p=Ur.value.trim();if(l){if(l!==p){Gs(l);return}Id(l)}}async function Id(l=q.value){const p=st(l).trim();if(p){Vn.value="",Ao.value=!0;try{const M=await vc(p,{createIfMissing:!1,label:""});if(!M){Vn.value="Failed to open the selected folder.";return}wt.value=M,mt(Ti(M)),await Vs(),await H({includeSelectedThreadMessages:!1,forceThreadRefresh:!0}),await pa(),sl()}catch(M){Vn.value=M instanceof Error?M.message:"Failed to open the selected folder."}finally{Ao.value=!1}}}async function xb(){if(kn.value="",Qt.value){Xl();return}if(!Ba.value){const l=wt.value.trim()||await ic();if(!l||(Ba.value=!0,Br.value="",await Gs(l),Vn.value))return}Vn.value||(Fn.value=so.value,Qt.value=!0,zt(()=>{var l;return(l=ns.value)==null?void 0:l.focus()}))}function Xl(){kn.value="",Fn.value="",Qt.value=!1}async function Yp(){const l=Fn.value.trim();if(!l)return;if(kn.value="",Vn.value){kn.value="Reload the current folder before creating a new one.";return}sr.value=!0;const p=h.value.trim(),M=Xp(Qp(p,l));if(!M){kn.value="Unable to determine where the new folder should be created.",sr.value=!1;return}if(!b.value){kn.value="Enter a single folder name.",sr.value=!1;return}try{const j=await yS(M);if(!j){kn.value="Failed to create the folder.";return}kn.value="",Br.value="",await Gs(j),Xl()}catch(j){kn.value=j instanceof Error?j.message:"Failed to create folder."}finally{sr.value=!1}}async function Ab(){var p;if(typeof window>"u")return!1;const l=((p=new URLSearchParams(window.location.search).get("openProjectPath"))==null?void 0:p.trim())??"";if(!l)return!1;try{const M=await vc(l,{createIfMissing:!1,label:""});if(!M)return!1;wt.value=M,mt(Ti(M)),await Gt.replace({name:"home"}),await Vs();const j=new URL(window.location.href);return j.searchParams.delete("openProjectPath"),window.history.replaceState({},"",j.toString()),!0}catch{return!1}}async function ic(){const l=Jp();if(l)return l;try{const p=await Nm();if(p)return Rr.value=p,p}catch{}return""}async function pa(){const l=Jp();if(!l){so.value="New Project (1)";return}try{const p=await _S(l);so.value=p.name||"New Project (1)"}catch{so.value="New Project (1)"}}function Jp(){var M,j;const l=wt.value.trim();if(l)return Tl(l);const p=((j=(M=Kl.value[0])==null?void 0:M.value)==null?void 0:j.trim())??"";return p?Tl(p):Rr.value.trim()}async function Pb(){try{Rr.value=await Nm()}catch{Rr.value=""}}async function Vs(){try{const l=await ml();Jn.value={order:[...l.order],labels:{...l.labels},projectOrder:[...l.projectOrder]}}catch{Jn.value={order:[],labels:{},projectOrder:[]}}}async function Gs(l){const p=++bi,M=st(l).trim();qa.value=M,Ur.value=M,Vn.value="",xo.value=!0;try{const j=await dS(l,{showHidden:gi.value});if(p!==bi)return;qa.value=j.path,Ur.value=j.path,ca.value=j.parentPath,Fl.value=j.entries}catch(j){if(p!==bi)return;Vn.value=j instanceof Error?j.message:"Failed to load local folders.",ca.value=Tl(Ur.value),Fl.value=[],Xl()}finally{p===bi&&(xo.value=!1)}}function Qp(l,p){const M=st(l).trim(),j=st(p).trim().replace(/^[\\/]+/u,"");if(!M||!j)return"";const U=M.includes("\\")&&!M.includes("/")?"\\":"/";if(/^[a-zA-Z]:[\\/]?$/u.test(M))return`${M.slice(0,2)}${U}${j}`;if(/^\/+$/u.test(M))return`/${j}`;const fe=M.replace(/[\\/]+$/u,"");return fe?`${fe}${U}${j}`:""}function Xp(l){const p=st(l).trim();if(!p)return"";const M=p.match(/^\\\\([^\\/]+)[\\/]+([^\\/]+)([\\/].*)?$/u);if(M){const[,U,fe,Ne=""]=M,on=Rd(Ne.split(/[\\/]+/u));return on.length>0?`\\\\${U}\\${fe}\\${on.join("\\")}`:`\\\\${U}\\${fe}`}const j=p.match(/^([a-zA-Z]:)([\\/].*)?$/u);if(j){const[,U,fe=""]=j,Ne=p.includes("\\")&&!p.includes("/")?"\\":"/",on=Rd(fe.split(/[\\/]+/u));return on.length>0?`${U}${Ne}${on.join(Ne)}`:`${U}${Ne}`}if(p.startsWith("/")){const U=Rd(p.split("/"));return U.length>0?`/${U.join("/")}`:"/"}return p}function Rd(l){const p=[];for(const M of l){const j=M.trim();if(!(!j||j===".")){if(j===".."){p.length>0&&p.pop();continue}p.push(j)}}return p}function Eb(l){de(l.draggedId,l.targetId)}function Zp(l){Bn(Tr.value,l)}function eh(l){Jo(l)}function th(l){vo(l)}function Ib(){Ze()}const Zl=S("");let Md=null;rt(Wt,l=>{var p;l&&(l.text&&((p=Zn.value)==null||p.hydrateDraft({text:l.text,imageUrls:l.imageUrls,fileAttachments:l.fileAttachments,skills:l.skills})),Zl.value=l.text?a("Stopped: message not submitted, restored to input."):a("Stopped: message not submitted."),Md&&clearTimeout(Md),Md=setTimeout(()=>{Zl.value=""},6e3),W(Tr.value))});function nh(l){var M,j;const p=pe.value.trim();switch(l){case"compact":p&&ce(p);break;case"review":if(!p)return;$r.value="",na.value="",et.value=!0;break;case"rename":p&&((j=sn.value)==null||j.openRenameThreadDialog(p,((M=ae.value)==null?void 0:M.title)??""));break;case"archive":p&&ve(p);break;case"fork":p&&Re(p);break;case"new":Sd();break;case"skills":Cr.value||Gt.push({name:"skills"});break}}function Rb(l){const p=l.turnId.trim();if(p.length>0){const M=[...ki.value].reverse().find(j=>{var U;return j.role==="user"&&(((U=j.turnId)==null?void 0:U.trim())??"")===p&&j.text.trim().length>0});M!=null&&M.text&&Zn.value&&Zn.value.appendTextToDraft(M.text)}Es(l.turnId)}function Mb(){jn.value||!pe.value||(Hl.value&&(Xi.value=Hl.value.id),Ft("default"),ac(),yt("Implement",[],[],"steer",[],void 0,"default"))}async function $b(){if(jn.value||Cr.value||cs.value||!ae.value||ki.value.length===0)return;const l=jb();try{await Dy(l)}catch{}}function jb(){var M,j,U;const l=[],p=((j=(M=ae.value)==null?void 0:M.title)==null?void 0:j.trim())||"Untitled thread";l.push(`# ${Nb(p)}`),l.push(""),l.push(`- Exported: ${new Date().toISOString()}`),l.push(`- Thread ID: ${((U=ae.value)==null?void 0:U.id)??""}`),l.push(""),l.push("---"),l.push("");for(const fe of ki.value){const Ne=fe.role?fe.role.toUpperCase():"MESSAGE";l.push(`## ${Ne}`),l.push("");const on=fe.text.trim();if(on&&(l.push(on),l.push("")),fe.commandExecution&&(l.push("```text"),l.push(`command: ${fe.commandExecution.command}`),l.push(`status: ${fe.commandExecution.status}`),fe.commandExecution.cwd&&l.push(`cwd: ${fe.commandExecution.cwd}`),fe.commandExecution.exitCode!==null&&l.push(`exitCode: ${fe.commandExecution.exitCode}`),l.push(fe.commandExecution.aggregatedOutput||"(no output)"),l.push("```"),l.push("")),fe.fileAttachments&&fe.fileAttachments.length>0){l.push("Attachments:");for(const ir of fe.fileAttachments)l.push(`- ${ir.path}`);l.push("")}if(fe.images&&fe.images.length>0){l.push("Images:");for(const ir of fe.images)l.push(`- ${ir}`);l.push("")}}return`${l.join(`
|