codexapp 0.1.17 → 0.1.18
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.
|
@@ -45,4 +45,4 @@ ${L}`:L}}),g=D(null),b=D(null),$=D(null),E=D(null),B=D(!1),W=D(!1),M=D(null),U=D
|
|
|
45
45
|
|
|
46
46
|
`)&&Lt(ge,`${He}
|
|
47
47
|
|
|
48
|
-
`)}qt(c);const En=j(c);En&&(bt(ge,En),G(ge,{label:"Running command",details:[((_i=En.commandExecution)==null?void 0:_i.command)??""]}));const Hs=ye(c);if(Hs){const He=(i.value[ge]??[]).find(sn=>sn.id===Hs.itemId);He!=null&&He.commandExecution&&bt(ge,{...He,commandExecution:{...He.commandExecution,aggregatedOutput:`${He.commandExecution.aggregatedOutput}${Hs.delta}`}})}const vi=Fe(c);if(vi&&bt(ge,vi),Qt(c)&&(Q&&n.value&&Xe(n.value,{scrollTop:0,isAtBottom:!0,scrollRatio:1}),Tt(ge)),c.method==="turn/completed"){Q=!1,Tt(ge),i.value[ge]&&(i.value=St(i.value,ge));const He=At(c);He&&(C(He,!1),G(He,null),I(He),we||(me(He),hi(He)))}}function jc(c){const h=At(c);h&&A.add(h);const v=c.method;(v.startsWith("thread/")||v.startsWith("turn/")||v.startsWith("item/"))&&(de=!0),!(Ge!==null||typeof window>"u")&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo))}async function Lc(c){if(!X){X=!0;try{const h=await Ba(),v=[];for(const k of h.order){const K=po(k);v.includes(K)||v.push(K)}if(v.length>0){const k=ls(v,c);Zn(E.value,k)||(E.value=k,dr(E.value))}if(Object.keys(h.labels).length>0){const k={...B.value};let K=!1;for(const[q,we]of Object.entries(h.labels)){const Ee=po(q);k[Ee]!==we&&(k[Ee]=we,K=!0)}K&&(B.value=k,fo(k))}}catch{}}}async function Dc(){if(!(Object.keys(Z.value).length>0))try{const c=await Zv();Object.keys(c.titles).length>0&&(Z.value=c.titles)}catch{}}async function Bc(c,h,v){if(Z.value[c])return;const k=h.trim();if(!k)return;const K=k.length>300?k.slice(0,300):k;try{const q=await ey(K,v);if(!q||Z.value[c])return;Z.value={...Z.value,[c]:q},$e(),Ha(c,q)}catch{}}async function ts(){var c;ht.value||(ee.value=!0);try{const[h]=await Promise.all([jv(),Dc()]);await Lc(h);const v=ls(E.value,h);Zn(E.value,v)||(E.value=v,dr(E.value));const k=ho(h,E.value),K=u0(t.value,k,a.value);t.value=us(t.value,K),a.value=Et(a.value,new Set(On(t.value).map(Ee=>Ee.id))),$e(),ht.value=!0;const q=On(e.value);L(q),q.some(Ee=>Ee.id===n.value)||ne(((c=q[0])==null?void 0:c.id)??"")}finally{ee.value=!1}}async function Ar(c,h={}){if(!c)return;const v=M.value[c]===!0,k=h.silent!==!0&&!v;k&&(Oe.value=!0);try{U.value[c]!==!0&&(await lo(c),U.value={...U.value,[c]:!0});const K=await Lv(c),q=r.value[c]??[],we=Zb(q,K,{preserveMissing:h.silent===!0});ze(c,we);const Ee=s.value[c]??[],ge=e0(Ee,K);Ze(c,ge),Ft(c,K),M.value={...M.value,[c]:!0};const We=Ce(c);We&&(W.value={...W.value,[c]:We}),z(c)}finally{k&&(Oe.value=!1)}}async function di(){try{const c=t.value.flatMap(h=>h.threads.map(v=>v.cwd)).filter(Boolean);he.value=await ty(c.length>0?[...new Set(c)]:void 0)}catch{}}async function Fc(){Te.value="";try{await ts(),await Promise.all([je(),di()]),await Ar(n.value)}catch(c){Te.value=c instanceof Error?c.message:"Unknown application error"}}async function Hc(c){ne(c);try{await Ar(c)}catch(h){Te.value=h instanceof Error?h.message:"Unknown application error"}}async function Uc(c){try{await Hv(c),await ts(),n.value===c&&await Ar(n.value)}catch(h){Te.value=h instanceof Error?h.message:"Unknown application error"}}async function fi(c,h=[],v=[],k="steer",K=[]){const q=n.value,we=c.trim();if(!q||!we&&h.length===0&&K.length===0)return;const Ee=a.value[q]===!0;if(Ee&&k==="queue"){const ge=l.value[q]??[],We=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;l.value={...l.value,[q]:[...ge,{id:We,text:we,imageUrls:h,skills:v,fileAttachments:K}]};return}if(Ee){Q=!0,ns(q,we,h,v,K).catch(ge=>{const We=ge instanceof Error?ge.message:"Unknown application error";se(q,We),Te.value=We});return}Te.value="",Q=!0,m(q,null),G(q,{label:"Thinking",details:xe(f.value,g.value)}),se(q,null),C(q,!0);try{await ns(q,we,h,v,K)}catch(ge){Q=!1,C(q,!1),G(q,null);const We=ge instanceof Error?ge.message:"Unknown application error";throw se(q,We),Te.value=We,ge}}async function Vc(c,h,v=[],k=[],K=[]){const q=c.trim(),we=h.trim(),Ee=f.value.trim();if(!q&&v.length===0&&K.length===0)return"";qe.value=!0,Te.value="";let ge="";try{try{ge=await Da(we||void 0,Ee||void 0)}catch(pn){if(Ee&&Ee!==Kt&&cs(pn))await Y(),ge=await Da(we||void 0,Kt);else throw pn}if(!ge)return"";st(ge,we,q||"[Image]"),U.value={...U.value,[ge]:!0},ne(ge),Q=!0,m(ge,null),G(ge,{label:"Thinking",details:xe(f.value,g.value)}),se(ge,null),C(ge,!0);const We=ge,vt=we||null,cr=q;return ns(ge,q,v,k,K).catch(pn=>{Q=!1,C(ge,!1),G(ge,null);const En=pn instanceof Error?pn.message:"Unknown application error";se(ge,En),Te.value=En}).finally(()=>{qe.value=!1}),Bc(We,cr,vt),ge}catch(We){Q=!1,ge&&(C(ge,!1),G(ge,null));const vt=We instanceof Error?We.message:"Unknown application error";throw ge&&se(ge,vt),Te.value=vt,qe.value=!1,We}}async function ns(c,h,v=[],k=[],K=[]){const q=f.value.trim(),we=g.value,Ee=h.trim(),ge=k.map(vt=>({name:vt.name,path:vt.path})),We=K.map(vt=>({...vt}));V(c,{text:Ee,imageUrls:[...v],skills:ge,fileAttachments:We,effort:we,fallbackRetried:!1});try{U.value[c]!==!0&&await lo(c);try{await co(c,h,v,q||void 0,we||void 0,k.length>0?k:void 0,K)}catch(vt){if(q&&q!==Kt&&cs(vt))await Y(),V(c,{text:Ee,imageUrls:[...v],skills:ge,fileAttachments:We,effort:we,fallbackRetried:!0}),await co(c,h,v,Kt,we||void 0,k.length>0?k:void 0,K);else throw vt}U.value={...U.value,[c]:!0},A.add(c),de=!0,await qn()}catch(vt){throw vt}}async function hi(c){const h=l.value[c];if(!h||h.length===0)return;const[v,...k]=h;l.value=k.length>0?{...l.value,[c]:k}:St(l.value,c),qe.value=!0,Te.value="",Q=!0,m(c,null),G(c,{label:"Thinking",details:xe(f.value,g.value)}),se(c,null),C(c,!0);try{await ns(c,v.text,v.imageUrls,v.skills,v.fileAttachments)}catch{C(c,!1),G(c,null)}finally{qe.value=!1}}async function qc(){const c=n.value;if(!c||a.value[c]!==!0)return;const h=le.value[c];rt.value=!0,Te.value="";try{await qv(c,h),C(c,!1),G(c,null),se(c,null),le.value[c]&&(le.value=St(le.value,c)),A.add(c),de=!0,await qn()}catch(v){const k=v instanceof Error?v.message:"Failed to interrupt active turn";se(c,k),Te.value=k}finally{rt.value=!1}}async function Wc(c){const h=n.value;if(!h||Ne.value)return;const k=(r.value[h]??[]).reduce((q,we)=>typeof we.turnIndex=="number"&&we.turnIndex>q?we.turnIndex:q,-1);if(k<0||c>k)return;const K=k-c+1;if(!(K<1)){Ne.value=!0,Te.value="";try{const q=await La(h,K);ze(h,q),Ze(h,[]),Tt(h),i.value[h]&&(i.value=St(i.value,h)),m(h,null),G(h,null),se(h,null),de=!0,await qn()}catch(q){Te.value=q instanceof Error?q.message:"Failed to rollback thread"}finally{Ne.value=!1}}}function Kc(c,h){c.length===0||(B.value[c]??"")===h||(B.value={...B.value,[c]:h},fo(B.value))}function Gc(c){var K;if(c.length===0)return;const h=E.value.filter(q=>q!==c);if(Zn(E.value,h)||(E.value=h,dr(E.value)),t.value=t.value.filter(q=>q.projectName!==c),B.value[c]!==void 0){const q={...B.value};delete q[c],B.value=q,fo(q)}$e();const v=On(e.value);L(v),v.some(q=>q.id===n.value)||ne(((K=v[0])==null?void 0:K.id)??""),Fs()}function zc(c,h){if(c.length===0||t.value.length===0)return;const v=t.value.map(ge=>ge.projectName),k=v.indexOf(c);if(k===-1)return;const K=Math.max(0,Math.min(h,v.length-1)),q=Qb(v,k,K);if(q===v)return;const we=ls(q,t.value);E.value=we,dr(E.value);const Ee=ho(t.value,E.value);t.value=us(t.value,Ee),$e(),Fs()}function Yc(c){const h=c.trim();if(!h)return;const v=[h,...E.value.filter(K=>K!==h)];if(Zn(E.value,v))return;E.value=v,dr(E.value);const k=ho(t.value,E.value);t.value=us(t.value,k),$e(),Fs()}async function Fs(){var c,h;try{const v=await Ba(),k=new Map;for(const we of v.order){const Ee=po(we);k.has(Ee)||k.set(Ee,we)}for(const we of t.value){const Ee=((h=(c=we.threads[0])==null?void 0:c.cwd)==null?void 0:h.trim())??"";Ee&&k.set(we.projectName,Ee)}const K=[];for(const we of E.value){const Ee=k.get(we);Ee&&!K.includes(Ee)&&K.push(Ee)}for(const we of v.order)K.includes(we)||K.push(we);const q=v.active.filter(we=>K.includes(we));q.length===0&&K.length>0&&q.push(K[0]),await Yv({order:K,labels:v.labels,active:q})}catch{}}async function Jc(){if(!Ae.value){Ae.value=!0;try{if(await ts(),!n.value)return;const c=n.value,h=Ce(c),v=W.value[c]??"",k=h.length>0&&h!==v;(a.value[c]===!0||k)&&await Ar(c,{silent:!0})}catch{}finally{Ae.value=!1}}}async function qn(){if(Ae.value){typeof window<"u"&&Ge===null&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo));return}Ae.value=!0;const c=de,h=new Set(A);de=!1,A.clear();try{c&&await ts();const v=n.value;if(!v)return;const k=h.has(v),K=a.value[v]===!0,q=Ce(v),we=W.value[v]??"",Ee=q.length>0&&q!==we;(k||K||Ee||c)&&await Ar(v,{silent:!0})}catch{}finally{Ae.value=!1,(de||A.size>0)&&typeof window<"u"&&Ge===null&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo))}}function Qc(){typeof window>"u"||Ye||(it.value&&mi(),Xc(),Ye=Dv(c=>{lr(c),jc(c)}))}async function Xc(){try{const c=await Fv();for(const h of c){const v=fn(h);v&&hn(v)}}catch{}}async function Zc(c){try{await Bv(c.id,{result:c.result,error:c.error}),or(c.id)}catch(h){Te.value=h instanceof Error?h.message:"Failed to reply to server request"}}function pi(c={}){const h=c.updatePreference??!0;ue!==null&&typeof window<"u"&&(window.clearInterval(ue),ue=null),Se!==null&&typeof window<"u"&&(window.clearInterval(Se),Se=null),h&&(it.value=!1,Ga(!1)),Qe.value=Math.floor(Mr/1e3)}function mi(){typeof window>"u"||ue!==null||Se!==null||(it.value=!0,Ga(!0),Qe.value=Math.floor(Mr/1e3),ue=window.setInterval(()=>{Qe.value=Math.floor(Mr/1e3),Jc()},Mr),Se=window.setInterval(()=>{Qe.value=Math.max(0,Qe.value-1)},1e3))}function eu(){if(it.value){pi();return}mi()}function tu(){pi({updatePreference:!1}),Ye&&(Ye(),Ye=null),de=!1,A.clear(),pe.clear(),Ge!==null&&typeof window<"u"&&(window.clearTimeout(Ge),Ge=null),Q=!1,r.value={},s.value={},o.value={},i.value={},ae.value={},F.value={},ie.value={},le.value={},l.value={}}const nu=ce(()=>{const c=n.value;return c?l.value[c]??[]:[]});function gi(c){const h=n.value;if(!h)return;const v=l.value[h];if(!v)return;const k=v.filter(K=>K.id!==c);l.value=k.length>0?{...l.value,[h]:k}:St(l.value,h)}function ru(c){const h=n.value;if(!h)return;const v=l.value[h];if(!v)return;const k=v.find(K=>K.id===c);k&&(gi(c),fi(k.text,k.imageUrls,k.skills,"steer",k.fileAttachments))}return{projectGroups:e,projectDisplayNameById:B,selectedThread:y,selectedThreadScrollState:x,selectedThreadServerRequests:O,selectedLiveOverlay:H,selectedThreadId:n,availableModelIds:u,selectedModelId:f,selectedReasoningEffort:g,installedSkills:he,messages:N,isLoadingThreads:ee,isLoadingMessages:Oe,isSendingMessage:qe,isInterruptingTurn:rt,isAutoRefreshEnabled:it,autoRefreshSecondsLeft:Qe,error:Te,refreshAll:Fc,refreshSkills:di,selectThread:Hc,setThreadScrollState:Xe,archiveThreadById:Uc,sendMessageToSelectedThread:fi,sendMessageToNewThread:Vc,interruptSelectedThreadTurn:qc,rollbackSelectedThread:Wc,isRollingBack:Ne,selectedThreadQueuedMessages:nu,removeQueuedMessage:gi,steerQueuedMessage:ru,setSelectedModelId:te,setSelectedReasoningEffort:be,respondToPendingServerRequest:Zc,renameProject:Kc,removeProject:Gc,reorderProject:zc,pinProjectToTop:Yc,toggleAutoRefreshTimer:eu,startPolling:Qc,stopPolling:tu}}const p0={class:"sidebar-root"},m0=["aria-pressed"],g0={key:1,class:"sidebar-search-bar"},v0={class:"content-root"},y0={class:"content-body"},w0={key:1,class:"content-grid"},b0={class:"new-thread-empty"},_0={key:2,class:"content-grid"},k0={class:"content-thread"},T0={class:"composer-with-queue"},S0={class:"build-badge","aria-label":"Worktree name"},Ja="codex-web-local.sidebar-collapsed.v1",x0=Ct({__name:"App",setup(e){const t="codex-web-local",{projectGroups:n,projectDisplayNameById:r,selectedThread:s,selectedThreadScrollState:o,selectedThreadServerRequests:i,selectedLiveOverlay:a,selectedThreadId:l,availableModelIds:d,selectedModelId:u,selectedReasoningEffort:f,installedSkills:g,messages:b,isLoadingThreads:$,isLoadingMessages:E,isInterruptingTurn:B,isAutoRefreshEnabled:W,autoRefreshSecondsLeft:M,refreshAll:U,refreshSkills:F,selectThread:ae,setThreadScrollState:ie,archiveThreadById:le,sendMessageToSelectedThread:fe,sendMessageToNewThread:oe,interruptSelectedThreadTurn:Z,rollbackSelectedThread:he,isRollingBack:ee,selectedThreadQueuedMessages:Oe,removeQueuedMessage:qe,steerQueuedMessage:rt,setSelectedModelId:Ne,setSelectedReasoningEffort:Te,respondToPendingServerRequest:Ae,renameProject:ht,removeProject:it,reorderProject:Qe,pinProjectToTop:Ye,toggleAutoRefreshTimer:Ge,startPolling:ue,stopPolling:Se}=h0(),de=Vh(),A=Uh(),{isMobile:X}=xc(),Q=D(!1),pe=D(!1),ke=D(""),p=D(ir()),y=D(""),x=D(!1),O=D(null),H=D("New Project (1)"),N=D(""),ne=ce(()=>{const j=de.params.threadId;return typeof j=="string"?j:""}),te=ce(()=>{const j=new Set;for(const ye of n.value)for(const Fe of ye.threads)j.add(Fe.id);return j}),Y=ce(()=>de.name==="home"),V=ce(()=>de.name==="skills"),me=ce(()=>{var j;return V.value?"Skills":Y.value?"New thread":((j=s.value)==null?void 0:j.title)??"Choose a thread"}),re=ce(()=>W.value?`Auto refresh in ${String(M.value)}s`:"Enable 4s refresh"),be=ce(()=>b.value.filter(j=>{const ye=qt(j.messageType,j.role);return ye==="worked"?!0:!(ye==="turnActivity.live"||ye==="turnError.live"||ye==="agentReasoning.live")})),xe=ce(()=>a.value),je=ce(()=>Y.value?"__new-thread__":l.value),Ve=ce(()=>{var j,ye;return Y.value?ke.value.trim():((ye=(j=s.value)==null?void 0:j.cwd)==null?void 0:ye.trim())??""}),$e=ce(()=>{var j;return!Y.value&&((j=s.value)==null?void 0:j.inProgress)===!0}),st=ce(()=>{var bt,Ft;const j=[],ye=new Set;for(const Qt of n.value){const lr=((Ft=(bt=Qt.threads[0])==null?void 0:bt.cwd)==null?void 0:Ft.trim())??"";!lr||ye.has(lr)||(ye.add(lr),j.push({value:lr,label:r.value[Qt.projectName]??Qt.projectName}))}const Fe=ke.value.trim();return Fe&&!ye.has(Fe)&&j.unshift({value:Fe,label:R(Fe)}),j});Hn(()=>{window.addEventListener("keydown",Le),An(),or(),fn()}),Ns(()=>{window.removeEventListener("keydown",Le),Se()});function L(){F()}function z(){x.value=!x.value,x.value?zt(()=>{var j;return(j=O.value)==null?void 0:j.focus()}):y.value=""}function m(){var j;y.value="",(j=O.value)==null||j.focus()}function C(j){j.key==="Escape"&&(x.value=!1,y.value="")}function I(j){j&&(de.name==="thread"&&ne.value===j||(A.push({name:"thread",params:{threadId:j}}),X.value&&Tt(!0)))}function G(j){le(j)}function se(j){var bt,Ft;const ye=n.value.find(Qt=>Qt.projectName===j),Fe=((Ft=(bt=ye==null?void 0:ye.threads[0])==null?void 0:bt.cwd)==null?void 0:Ft.trim())??"";Fe&&(ke.value=Fe),X.value&&Tt(!0),!Y.value&&A.push({name:"home"})}function Ce(){var ye,Fe;const j=((Fe=(ye=s.value)==null?void 0:ye.cwd)==null?void 0:Fe.trim())??"";j&&(ke.value=j),X.value&&Tt(!0),!Y.value&&A.push({name:"home"})}function Xe(j){ht(j.projectName,j.displayName)}function ze(j){it(j)}function Ze(j){Qe(j.projectName,j.toIndex)}function ft(j){ie(j.threadId,j.state)}function Lt(j){Ae(j)}function Jt(){Ge()}function Tt(j){p.value!==j&&(p.value=j,ar(j))}function Le(j){j.defaultPrevented||!j.ctrlKey&&!j.metaKey||j.shiftKey||j.altKey||j.key.toLowerCase()==="b"&&(j.preventDefault(),Tt(!p.value))}function Re(j){const ye=j.text;if(Y.value){Cr(ye,j.imageUrls,j.skills,j.fileAttachments);return}fe(ye,j.imageUrls,j.skills,j.mode,j.fileAttachments)}function sr(j){ke.value=j.trim()}async function At(j){const ye=j.trim();if(!ye)return;const Fe=xr(ye),bt=await Sr(),Ft=Fe?ye:P(bt,ye);if(Ft)try{const Qt=await Jv(Ft,{createIfMissing:!Fe,label:Fe?"":ye});Qt&&(ke.value=Qt,Ye(R(Qt)),fn())}catch{}}async function Sr(){const j=hn();if(j)return j;try{const ye=await Fa();if(ye)return N.value=ye,ye}catch{}return""}function xr(j){return j?j.startsWith("~/")||j.startsWith("/")?!0:/^[a-zA-Z]:[\\/]/.test(j):!1}async function fn(){const j=hn();if(!j){H.value="New Project (1)";return}try{const ye=await Qv(j);H.value=ye.name||"New Project (1)"}catch{H.value="New Project (1)"}}function hn(){var Fe,bt;const j=ke.value.trim();if(j)return T(j);const ye=((bt=(Fe=st.value[0])==null?void 0:Fe.value)==null?void 0:bt.trim())??"";return ye?T(ye):N.value.trim()}async function or(){try{N.value=await Fa()}catch{N.value=""}}function T(j){const ye=j.trim().replace(/\/+$/,"");if(!ye)return"";const Fe=ye.lastIndexOf("/");return Fe<=0?"":ye.slice(0,Fe)}function R(j){const ye=j.trim().replace(/\/+$/,"");if(!ye)return"";const Fe=ye.lastIndexOf("/");return Fe<0?ye:ye.slice(Fe+1)}function P(j,ye){const Fe=j.trim().replace(/\/+$/,""),bt=ye.trim().replace(/^\/+/,"");return!Fe||!bt?"":`${Fe}/${bt}`}function J(j){Ne(j)}function Ue(j){Te(j)}function wt(){Z()}function Bt(j){he(j.turnIndex)}function ir(){return typeof window>"u"?!1:window.localStorage.getItem(Ja)==="1"}function ar(j){typeof window>"u"||window.localStorage.setItem(Ja,j?"1":"0")}function qt(j,ye){const Fe=(j??"").trim();return Fe.length>0?Fe:ye.trim()||"message"}async function An(){await U(),pe.value=!0,await Vn(),ue()}async function Vn(){if(!Q.value){Q.value=!0;try{if(de.name==="home"||de.name==="skills"){l.value!==""&&await ae("");return}if(de.name==="thread"){const j=ne.value;if(!j)return;if(!te.value.has(j)){await A.replace({name:"home"});return}l.value!==j&&await ae(j);return}}finally{Q.value=!1}}}pt(()=>[de.name,ne.value,$.value,te.value.has(ne.value),l.value],async()=>{pe.value&&await Vn()}),pt(()=>l.value,async j=>{if(pe.value&&!Q.value&&!(Y.value||V.value)){if(!j){de.name!=="home"&&await A.replace({name:"home"});return}de.name==="thread"&&ne.value===j||await A.replace({name:"thread",params:{threadId:j}})}}),pt(()=>st.value,j=>{if(j.length===0){ke.value="";return}j.some(Fe=>Fe.value===ke.value)||(ke.value=j[0].value),fn()},{immediate:!0}),pt(()=>ke.value,()=>{fn()}),pt(X,j=>{j&&!p.value&&Tt(!0)});async function Cr(j,ye=[],Fe=[],bt=[]){try{const Ft=await oe(j,ke.value,ye,Fe,bt);if(!Ft)return;await A.replace({name:"thread",params:{threadId:Ft}})}catch{}}return(j,ye)=>(_(),S(De,null,[Ie(Yh,{"is-sidebar-collapsed":p.value,onCloseSidebar:ye[4]||(ye[4]=Fe=>Tt(!0))},{sidebar:ot(()=>[w("section",p0,[p.value?ve("",!0):(_(),at(qa,{key:0,class:"sidebar-thread-controls-host","is-sidebar-collapsed":p.value,"is-auto-refresh-enabled":Me(W),"auto-refresh-button-label":re.value,"show-new-thread-button":!0,onToggleSidebar:ye[0]||(ye[0]=Fe=>Tt(!p.value)),onToggleAutoRefresh:Jt,onStartNewThread:Ce},{default:ot(()=>[w("button",{class:"sidebar-search-toggle",type:"button","aria-pressed":x.value,"aria-label":"Search threads",title:"Search threads",onClick:z},[Ie(Oo,{class:"sidebar-search-toggle-icon"})],8,m0)]),_:1},8,["is-sidebar-collapsed","is-auto-refresh-enabled","auto-refresh-button-label"])),!p.value&&x.value?(_(),S("div",g0,[Ie(Oo,{class:"sidebar-search-bar-icon"}),Ln(w("input",{ref_key:"sidebarSearchInputRef",ref:O,"onUpdate:modelValue":ye[1]||(ye[1]=Fe=>y.value=Fe),class:"sidebar-search-input",type:"text",placeholder:"Filter threads...",onKeydown:C},null,544),[[Bn,y.value]]),y.value.length>0?(_(),S("button",{key:0,class:"sidebar-search-clear",type:"button","aria-label":"Clear search",onClick:m},[Ie(li,{class:"sidebar-search-clear-icon"})])):ve("",!0)])):ve("",!0),p.value?ve("",!0):(_(),S("button",{key:2,class:ut(["sidebar-skills-link",{"is-active":V.value}]),type:"button",onClick:ye[2]||(ye[2]=Fe=>{Me(A).push({name:"skills"}),Me(X)&&Tt(!0)})}," Skills Hub ",2)),p.value?ve("",!0):(_(),at($m,{key:3,groups:Me(n),"project-display-name-by-id":Me(r),"selected-thread-id":Me(l),"is-loading":Me($),"search-query":y.value,onSelect:I,onArchive:G,onStartNewThread:se,onRenameProject:Xe,onRemoveProject:ze,onReorderProject:Ze},null,8,["groups","project-display-name-by-id","selected-thread-id","is-loading","search-query"]))])]),content:ot(()=>[w("section",v0,[Ie(Lm,{title:me.value},{leading:ot(()=>[p.value||Me(X)?(_(),at(qa,{key:0,class:"sidebar-thread-controls-header-host","is-sidebar-collapsed":p.value,"is-auto-refresh-enabled":Me(W),"auto-refresh-button-label":re.value,"show-new-thread-button":!0,onToggleSidebar:ye[3]||(ye[3]=Fe=>Tt(!p.value)),onToggleAutoRefresh:Jt,onStartNewThread:Ce},null,8,["is-sidebar-collapsed","is-auto-refresh-enabled","auto-refresh-button-label"])):ve("",!0)]),_:1},8,["title"]),w("section",y0,[V.value?(_(),at(Cb,{key:0,onSkillsChanged:L})):Y.value?(_(),S("div",w0,[w("div",b0,[ye[5]||(ye[5]=w("p",{class:"new-thread-hero"},"Let's build",-1)),Ie(No,{class:"new-thread-folder-dropdown","model-value":ke.value,options:st.value,placeholder:"Choose folder","enable-search":!0,"search-placeholder":"Quick search project","show-add-action":!0,"add-action-label":"+ Add new project","default-add-value":H.value,"add-placeholder":"Project name or absolute path",disabled:!1,"onUpdate:modelValue":sr,onAdd:At},null,8,["model-value","options","default-add-value"])]),Ie(Ua,{"active-thread-id":je.value,cwd:Ve.value,models:Me(d),"selected-model":Me(u),"selected-reasoning-effort":Me(f),skills:Me(g),"is-turn-in-progress":!1,"is-interrupting-turn":!1,onSubmit:Re,"onUpdate:selectedModel":J,"onUpdate:selectedReasoningEffort":Ue},null,8,["active-thread-id","cwd","models","selected-model","selected-reasoning-effort","skills"])])):(_(),S("div",_0,[w("div",k0,[Ie(hv,{messages:be.value,"is-loading":Me(E),"active-thread-id":je.value,"scroll-state":Me(o),"live-overlay":xe.value,"pending-requests":Me(i),"is-turn-in-progress":$e.value,"is-rolling-back":Me(ee),onUpdateScrollState:ft,onRespondServerRequest:Lt,onRollback:Bt},null,8,["messages","is-loading","active-thread-id","scroll-state","live-overlay","pending-requests","is-turn-in-progress","is-rolling-back"])]),w("div",T0,[Ie(Rw,{messages:Me(Oe),onSteer:Me(rt),onDelete:Me(qe)},null,8,["messages","onSteer","onDelete"]),Ie(Ua,{"active-thread-id":je.value,cwd:Ve.value,models:Me(d),"selected-model":Me(u),"selected-reasoning-effort":Me(f),skills:Me(g),"is-turn-in-progress":$e.value,"is-interrupting-turn":Me(B),"has-queue-above":Me(Oe).length>0,onSubmit:Re,"onUpdate:selectedModel":J,"onUpdate:selectedReasoningEffort":Ue,onInterrupt:wt},null,8,["active-thread-id","cwd","models","selected-model","selected-reasoning-effort","skills","is-turn-in-progress","is-interrupting-turn","has-queue-above"])])]))])])]),_:1},8,["is-sidebar-collapsed"]),w("div",S0," WT "+_e(Me(t)),1)],64))}}),C0=Ke(x0,[["__scopeId","data-v-a165fa31"]]),mo={render:()=>null},A0=Hh({history:wh(),routes:[{path:"/",name:"home",component:mo},{path:"/thread/:threadId",name:"thread",component:mo},{path:"/skills",name:"skills",component:mo},{path:"/new-thread",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});console.log("Welcome to codexapp. GitHub: https://github.com/friuns/codexui");Mf(C0).use(A0).mount("#app");
|
|
48
|
+
`)}qt(c);const En=j(c);En&&(bt(ge,En),G(ge,{label:"Running command",details:[((_i=En.commandExecution)==null?void 0:_i.command)??""]}));const Hs=ye(c);if(Hs){const He=(i.value[ge]??[]).find(sn=>sn.id===Hs.itemId);He!=null&&He.commandExecution&&bt(ge,{...He,commandExecution:{...He.commandExecution,aggregatedOutput:`${He.commandExecution.aggregatedOutput}${Hs.delta}`}})}const vi=Fe(c);if(vi&&bt(ge,vi),Qt(c)&&(Q&&n.value&&Xe(n.value,{scrollTop:0,isAtBottom:!0,scrollRatio:1}),Tt(ge)),c.method==="turn/completed"){Q=!1,Tt(ge),i.value[ge]&&(i.value=St(i.value,ge));const He=At(c);He&&(C(He,!1),G(He,null),I(He),we||(me(He),hi(He)))}}function jc(c){const h=At(c);h&&A.add(h);const v=c.method;(v.startsWith("thread/")||v.startsWith("turn/")||v.startsWith("item/"))&&(de=!0),!(Ge!==null||typeof window>"u")&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo))}async function Lc(c){if(!X){X=!0;try{const h=await Ba(),v=[];for(const k of h.order){const K=po(k);v.includes(K)||v.push(K)}if(v.length>0){const k=ls(v,c);Zn(E.value,k)||(E.value=k,dr(E.value))}if(Object.keys(h.labels).length>0){const k={...B.value};let K=!1;for(const[q,we]of Object.entries(h.labels)){const Ee=po(q);k[Ee]!==we&&(k[Ee]=we,K=!0)}K&&(B.value=k,fo(k))}}catch{}}}async function Dc(){if(!(Object.keys(Z.value).length>0))try{const c=await Zv();Object.keys(c.titles).length>0&&(Z.value=c.titles)}catch{}}async function Bc(c,h,v){if(Z.value[c])return;const k=h.trim();if(!k)return;const K=k.length>300?k.slice(0,300):k;try{const q=await ey(K,v);if(!q||Z.value[c])return;Z.value={...Z.value,[c]:q},$e(),Ha(c,q)}catch{}}async function ts(){var c;ht.value||(ee.value=!0);try{const[h]=await Promise.all([jv(),Dc()]);await Lc(h);const v=ls(E.value,h);Zn(E.value,v)||(E.value=v,dr(E.value));const k=ho(h,E.value),K=u0(t.value,k,a.value);t.value=us(t.value,K),a.value=Et(a.value,new Set(On(t.value).map(Ee=>Ee.id))),$e(),ht.value=!0;const q=On(e.value);L(q),q.some(Ee=>Ee.id===n.value)||ne(((c=q[0])==null?void 0:c.id)??"")}finally{ee.value=!1}}async function Ar(c,h={}){if(!c)return;const v=M.value[c]===!0,k=h.silent!==!0&&!v;k&&(Oe.value=!0);try{U.value[c]!==!0&&(await lo(c),U.value={...U.value,[c]:!0});const K=await Lv(c),q=r.value[c]??[],we=Zb(q,K,{preserveMissing:h.silent===!0});ze(c,we);const Ee=s.value[c]??[],ge=e0(Ee,K);Ze(c,ge),Ft(c,K),M.value={...M.value,[c]:!0};const We=Ce(c);We&&(W.value={...W.value,[c]:We}),z(c)}finally{k&&(Oe.value=!1)}}async function di(){try{const c=t.value.flatMap(h=>h.threads.map(v=>v.cwd)).filter(Boolean);he.value=await ty(c.length>0?[...new Set(c)]:void 0)}catch{}}async function Fc(){Te.value="";try{await ts(),await Promise.all([je(),di()]),await Ar(n.value)}catch(c){Te.value=c instanceof Error?c.message:"Unknown application error"}}async function Hc(c){ne(c);try{await Ar(c)}catch(h){Te.value=h instanceof Error?h.message:"Unknown application error"}}async function Uc(c){try{await Hv(c),await ts(),n.value===c&&await Ar(n.value)}catch(h){Te.value=h instanceof Error?h.message:"Unknown application error"}}async function fi(c,h=[],v=[],k="steer",K=[]){const q=n.value,we=c.trim();if(!q||!we&&h.length===0&&K.length===0)return;const Ee=a.value[q]===!0;if(Ee&&k==="queue"){const ge=l.value[q]??[],We=`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;l.value={...l.value,[q]:[...ge,{id:We,text:we,imageUrls:h,skills:v,fileAttachments:K}]};return}if(Ee){Q=!0,ns(q,we,h,v,K).catch(ge=>{const We=ge instanceof Error?ge.message:"Unknown application error";se(q,We),Te.value=We});return}Te.value="",Q=!0,m(q,null),G(q,{label:"Thinking",details:xe(f.value,g.value)}),se(q,null),C(q,!0);try{await ns(q,we,h,v,K)}catch(ge){Q=!1,C(q,!1),G(q,null);const We=ge instanceof Error?ge.message:"Unknown application error";throw se(q,We),Te.value=We,ge}}async function Vc(c,h,v=[],k=[],K=[]){const q=c.trim(),we=h.trim(),Ee=f.value.trim();if(!q&&v.length===0&&K.length===0)return"";qe.value=!0,Te.value="";let ge="";try{try{ge=await Da(we||void 0,Ee||void 0)}catch(pn){if(Ee&&Ee!==Kt&&cs(pn))await Y(),ge=await Da(we||void 0,Kt);else throw pn}if(!ge)return"";st(ge,we,q||"[Image]"),U.value={...U.value,[ge]:!0},ne(ge),Q=!0,m(ge,null),G(ge,{label:"Thinking",details:xe(f.value,g.value)}),se(ge,null),C(ge,!0);const We=ge,vt=we||null,cr=q;return ns(ge,q,v,k,K).catch(pn=>{Q=!1,C(ge,!1),G(ge,null);const En=pn instanceof Error?pn.message:"Unknown application error";se(ge,En),Te.value=En}).finally(()=>{qe.value=!1}),Bc(We,cr,vt),ge}catch(We){Q=!1,ge&&(C(ge,!1),G(ge,null));const vt=We instanceof Error?We.message:"Unknown application error";throw ge&&se(ge,vt),Te.value=vt,qe.value=!1,We}}async function ns(c,h,v=[],k=[],K=[]){const q=f.value.trim(),we=g.value,Ee=h.trim(),ge=k.map(vt=>({name:vt.name,path:vt.path})),We=K.map(vt=>({...vt}));V(c,{text:Ee,imageUrls:[...v],skills:ge,fileAttachments:We,effort:we,fallbackRetried:!1});try{U.value[c]!==!0&&await lo(c);try{await co(c,h,v,q||void 0,we||void 0,k.length>0?k:void 0,K)}catch(vt){if(q&&q!==Kt&&cs(vt))await Y(),V(c,{text:Ee,imageUrls:[...v],skills:ge,fileAttachments:We,effort:we,fallbackRetried:!0}),await co(c,h,v,Kt,we||void 0,k.length>0?k:void 0,K);else throw vt}U.value={...U.value,[c]:!0},A.add(c),de=!0,await qn()}catch(vt){throw vt}}async function hi(c){const h=l.value[c];if(!h||h.length===0)return;const[v,...k]=h;l.value=k.length>0?{...l.value,[c]:k}:St(l.value,c),qe.value=!0,Te.value="",Q=!0,m(c,null),G(c,{label:"Thinking",details:xe(f.value,g.value)}),se(c,null),C(c,!0);try{await ns(c,v.text,v.imageUrls,v.skills,v.fileAttachments)}catch{C(c,!1),G(c,null)}finally{qe.value=!1}}async function qc(){const c=n.value;if(!c||a.value[c]!==!0)return;const h=le.value[c];rt.value=!0,Te.value="";try{await qv(c,h),C(c,!1),G(c,null),se(c,null),le.value[c]&&(le.value=St(le.value,c)),A.add(c),de=!0,await qn()}catch(v){const k=v instanceof Error?v.message:"Failed to interrupt active turn";se(c,k),Te.value=k}finally{rt.value=!1}}async function Wc(c){const h=n.value;if(!h||Ne.value)return;const k=(r.value[h]??[]).reduce((q,we)=>typeof we.turnIndex=="number"&&we.turnIndex>q?we.turnIndex:q,-1);if(k<0||c>k)return;const K=k-c+1;if(!(K<1)){Ne.value=!0,Te.value="";try{const q=await La(h,K);ze(h,q),Ze(h,[]),Tt(h),i.value[h]&&(i.value=St(i.value,h)),m(h,null),G(h,null),se(h,null),de=!0,await qn()}catch(q){Te.value=q instanceof Error?q.message:"Failed to rollback thread"}finally{Ne.value=!1}}}function Kc(c,h){c.length===0||(B.value[c]??"")===h||(B.value={...B.value,[c]:h},fo(B.value))}function Gc(c){var K;if(c.length===0)return;const h=E.value.filter(q=>q!==c);if(Zn(E.value,h)||(E.value=h,dr(E.value)),t.value=t.value.filter(q=>q.projectName!==c),B.value[c]!==void 0){const q={...B.value};delete q[c],B.value=q,fo(q)}$e();const v=On(e.value);L(v),v.some(q=>q.id===n.value)||ne(((K=v[0])==null?void 0:K.id)??""),Fs()}function zc(c,h){if(c.length===0||t.value.length===0)return;const v=t.value.map(ge=>ge.projectName),k=v.indexOf(c);if(k===-1)return;const K=Math.max(0,Math.min(h,v.length-1)),q=Qb(v,k,K);if(q===v)return;const we=ls(q,t.value);E.value=we,dr(E.value);const Ee=ho(t.value,E.value);t.value=us(t.value,Ee),$e(),Fs()}function Yc(c){const h=c.trim();if(!h)return;const v=[h,...E.value.filter(K=>K!==h)];if(Zn(E.value,v))return;E.value=v,dr(E.value);const k=ho(t.value,E.value);t.value=us(t.value,k),$e(),Fs()}async function Fs(){var c,h;try{const v=await Ba(),k=new Map;for(const we of v.order){const Ee=po(we);k.has(Ee)||k.set(Ee,we)}for(const we of t.value){const Ee=((h=(c=we.threads[0])==null?void 0:c.cwd)==null?void 0:h.trim())??"";Ee&&k.set(we.projectName,Ee)}const K=[];for(const we of E.value){const Ee=k.get(we);Ee&&!K.includes(Ee)&&K.push(Ee)}for(const we of v.order)K.includes(we)||K.push(we);const q=v.active.filter(we=>K.includes(we));q.length===0&&K.length>0&&q.push(K[0]),await Yv({order:K,labels:v.labels,active:q})}catch{}}async function Jc(){if(!Ae.value){Ae.value=!0;try{if(await ts(),!n.value)return;const c=n.value,h=Ce(c),v=W.value[c]??"",k=h.length>0&&h!==v;(a.value[c]===!0||k)&&await Ar(c,{silent:!0})}catch{}finally{Ae.value=!1}}}async function qn(){if(Ae.value){typeof window<"u"&&Ge===null&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo));return}Ae.value=!0;const c=de,h=new Set(A);de=!1,A.clear();try{c&&await ts();const v=n.value;if(!v)return;const k=h.has(v),K=a.value[v]===!0,q=Ce(v),we=W.value[v]??"",Ee=q.length>0&&q!==we;(k||K||Ee||c)&&await Ar(v,{silent:!0})}catch{}finally{Ae.value=!1,(de||A.size>0)&&typeof window<"u"&&Ge===null&&(Ge=window.setTimeout(()=>{Ge=null,qn()},uo))}}function Qc(){typeof window>"u"||Ye||(it.value&&mi(),Xc(),Ye=Dv(c=>{lr(c),jc(c)}))}async function Xc(){try{const c=await Fv();for(const h of c){const v=fn(h);v&&hn(v)}}catch{}}async function Zc(c){try{await Bv(c.id,{result:c.result,error:c.error}),or(c.id)}catch(h){Te.value=h instanceof Error?h.message:"Failed to reply to server request"}}function pi(c={}){const h=c.updatePreference??!0;ue!==null&&typeof window<"u"&&(window.clearInterval(ue),ue=null),Se!==null&&typeof window<"u"&&(window.clearInterval(Se),Se=null),h&&(it.value=!1,Ga(!1)),Qe.value=Math.floor(Mr/1e3)}function mi(){typeof window>"u"||ue!==null||Se!==null||(it.value=!0,Ga(!0),Qe.value=Math.floor(Mr/1e3),ue=window.setInterval(()=>{Qe.value=Math.floor(Mr/1e3),Jc()},Mr),Se=window.setInterval(()=>{Qe.value=Math.max(0,Qe.value-1)},1e3))}function eu(){if(it.value){pi();return}mi()}function tu(){pi({updatePreference:!1}),Ye&&(Ye(),Ye=null),de=!1,A.clear(),pe.clear(),Ge!==null&&typeof window<"u"&&(window.clearTimeout(Ge),Ge=null),Q=!1,r.value={},s.value={},o.value={},i.value={},ae.value={},F.value={},ie.value={},le.value={},l.value={}}const nu=ce(()=>{const c=n.value;return c?l.value[c]??[]:[]});function gi(c){const h=n.value;if(!h)return;const v=l.value[h];if(!v)return;const k=v.filter(K=>K.id!==c);l.value=k.length>0?{...l.value,[h]:k}:St(l.value,h)}function ru(c){const h=n.value;if(!h)return;const v=l.value[h];if(!v)return;const k=v.find(K=>K.id===c);k&&(gi(c),fi(k.text,k.imageUrls,k.skills,"steer",k.fileAttachments))}return{projectGroups:e,projectDisplayNameById:B,selectedThread:y,selectedThreadScrollState:x,selectedThreadServerRequests:O,selectedLiveOverlay:H,selectedThreadId:n,availableModelIds:u,selectedModelId:f,selectedReasoningEffort:g,installedSkills:he,messages:N,isLoadingThreads:ee,isLoadingMessages:Oe,isSendingMessage:qe,isInterruptingTurn:rt,isAutoRefreshEnabled:it,autoRefreshSecondsLeft:Qe,error:Te,refreshAll:Fc,refreshSkills:di,selectThread:Hc,setThreadScrollState:Xe,archiveThreadById:Uc,sendMessageToSelectedThread:fi,sendMessageToNewThread:Vc,interruptSelectedThreadTurn:qc,rollbackSelectedThread:Wc,isRollingBack:Ne,selectedThreadQueuedMessages:nu,removeQueuedMessage:gi,steerQueuedMessage:ru,setSelectedModelId:te,setSelectedReasoningEffort:be,respondToPendingServerRequest:Zc,renameProject:Kc,removeProject:Gc,reorderProject:zc,pinProjectToTop:Yc,toggleAutoRefreshTimer:eu,startPolling:Qc,stopPolling:tu}}const p0={class:"sidebar-root"},m0=["aria-pressed"],g0={key:1,class:"sidebar-search-bar"},v0={class:"content-root"},y0={class:"content-body"},w0={key:1,class:"content-grid"},b0={class:"new-thread-empty"},_0={key:2,class:"content-grid"},k0={class:"content-thread"},T0={class:"composer-with-queue"},S0={class:"build-badge","aria-label":"Worktree name"},Ja="codex-web-local.sidebar-collapsed.v1",x0=Ct({__name:"App",setup(e){const t="codex-web-local",{projectGroups:n,projectDisplayNameById:r,selectedThread:s,selectedThreadScrollState:o,selectedThreadServerRequests:i,selectedLiveOverlay:a,selectedThreadId:l,availableModelIds:d,selectedModelId:u,selectedReasoningEffort:f,installedSkills:g,messages:b,isLoadingThreads:$,isLoadingMessages:E,isInterruptingTurn:B,isAutoRefreshEnabled:W,autoRefreshSecondsLeft:M,refreshAll:U,refreshSkills:F,selectThread:ae,setThreadScrollState:ie,archiveThreadById:le,sendMessageToSelectedThread:fe,sendMessageToNewThread:oe,interruptSelectedThreadTurn:Z,rollbackSelectedThread:he,isRollingBack:ee,selectedThreadQueuedMessages:Oe,removeQueuedMessage:qe,steerQueuedMessage:rt,setSelectedModelId:Ne,setSelectedReasoningEffort:Te,respondToPendingServerRequest:Ae,renameProject:ht,removeProject:it,reorderProject:Qe,pinProjectToTop:Ye,toggleAutoRefreshTimer:Ge,startPolling:ue,stopPolling:Se}=h0(),de=Vh(),A=Uh(),{isMobile:X}=xc(),Q=D(!1),pe=D(!1),ke=D(""),p=D(ir()),y=D(""),x=D(!1),O=D(null),H=D("New Project (1)"),N=D(""),ne=ce(()=>{const j=de.params.threadId;return typeof j=="string"?j:""}),te=ce(()=>{const j=new Set;for(const ye of n.value)for(const Fe of ye.threads)j.add(Fe.id);return j}),Y=ce(()=>de.name==="home"),V=ce(()=>de.name==="skills"),me=ce(()=>{var j;return V.value?"Skills":Y.value?"New thread":((j=s.value)==null?void 0:j.title)??"Choose a thread"}),re=ce(()=>W.value?`Auto refresh in ${String(M.value)}s`:"Enable 4s refresh"),be=ce(()=>b.value.filter(j=>{const ye=qt(j.messageType,j.role);return ye==="worked"?!0:!(ye==="turnActivity.live"||ye==="turnError.live"||ye==="agentReasoning.live")})),xe=ce(()=>a.value),je=ce(()=>Y.value?"__new-thread__":l.value),Ve=ce(()=>{var j,ye;return Y.value?ke.value.trim():((ye=(j=s.value)==null?void 0:j.cwd)==null?void 0:ye.trim())??""}),$e=ce(()=>{var j;return!Y.value&&((j=s.value)==null?void 0:j.inProgress)===!0}),st=ce(()=>{var bt,Ft;const j=[],ye=new Set;for(const Qt of n.value){const lr=((Ft=(bt=Qt.threads[0])==null?void 0:bt.cwd)==null?void 0:Ft.trim())??"";!lr||ye.has(lr)||(ye.add(lr),j.push({value:lr,label:r.value[Qt.projectName]??Qt.projectName}))}const Fe=ke.value.trim();return Fe&&!ye.has(Fe)&&j.unshift({value:Fe,label:R(Fe)}),j});Hn(()=>{window.addEventListener("keydown",Le),An(),or(),fn()}),Ns(()=>{window.removeEventListener("keydown",Le),Se()});function L(){F()}function z(){x.value=!x.value,x.value?zt(()=>{var j;return(j=O.value)==null?void 0:j.focus()}):y.value=""}function m(){var j;y.value="",(j=O.value)==null||j.focus()}function C(j){j.key==="Escape"&&(x.value=!1,y.value="")}function I(j){j&&(de.name==="thread"&&ne.value===j||(A.push({name:"thread",params:{threadId:j}}),X.value&&Tt(!0)))}function G(j){le(j)}function se(j){var bt,Ft;const ye=n.value.find(Qt=>Qt.projectName===j),Fe=((Ft=(bt=ye==null?void 0:ye.threads[0])==null?void 0:bt.cwd)==null?void 0:Ft.trim())??"";Fe&&(ke.value=Fe),X.value&&Tt(!0),!Y.value&&A.push({name:"home"})}function Ce(){var ye,Fe;const j=((Fe=(ye=s.value)==null?void 0:ye.cwd)==null?void 0:Fe.trim())??"";j&&(ke.value=j),X.value&&Tt(!0),!Y.value&&A.push({name:"home"})}function Xe(j){ht(j.projectName,j.displayName)}function ze(j){it(j)}function Ze(j){Qe(j.projectName,j.toIndex)}function ft(j){ie(j.threadId,j.state)}function Lt(j){Ae(j)}function Jt(){Ge()}function Tt(j){p.value!==j&&(p.value=j,ar(j))}function Le(j){j.defaultPrevented||!j.ctrlKey&&!j.metaKey||j.shiftKey||j.altKey||j.key.toLowerCase()==="b"&&(j.preventDefault(),Tt(!p.value))}function Re(j){const ye=j.text;if(Y.value){Cr(ye,j.imageUrls,j.skills,j.fileAttachments);return}fe(ye,j.imageUrls,j.skills,j.mode,j.fileAttachments)}function sr(j){ke.value=j.trim()}async function At(j){const ye=j.trim();if(!ye)return;const Fe=xr(ye),bt=await Sr(),Ft=Fe?ye:P(bt,ye);if(Ft)try{const Qt=await Jv(Ft,{createIfMissing:!Fe,label:Fe?"":ye});Qt&&(ke.value=Qt,Ye(R(Qt)),fn())}catch{}}async function Sr(){const j=hn();if(j)return j;try{const ye=await Fa();if(ye)return N.value=ye,ye}catch{}return""}function xr(j){return j?j.startsWith("~/")||j.startsWith("/")?!0:/^[a-zA-Z]:[\\/]/.test(j):!1}async function fn(){const j=hn();if(!j){H.value="New Project (1)";return}try{const ye=await Qv(j);H.value=ye.name||"New Project (1)"}catch{H.value="New Project (1)"}}function hn(){var Fe,bt;const j=ke.value.trim();if(j)return T(j);const ye=((bt=(Fe=st.value[0])==null?void 0:Fe.value)==null?void 0:bt.trim())??"";return ye?T(ye):N.value.trim()}async function or(){try{N.value=await Fa()}catch{N.value=""}}function T(j){const ye=j.trim().replace(/\/+$/,"");if(!ye)return"";const Fe=ye.lastIndexOf("/");return Fe<=0?"":ye.slice(0,Fe)}function R(j){const ye=j.trim().replace(/\/+$/,"");if(!ye)return"";const Fe=ye.lastIndexOf("/");return Fe<0?ye:ye.slice(Fe+1)}function P(j,ye){const Fe=j.trim().replace(/\/+$/,""),bt=ye.trim().replace(/^\/+/,"");return!Fe||!bt?"":`${Fe}/${bt}`}function J(j){Ne(j)}function Ue(j){Te(j)}function wt(){Z()}function Bt(j){he(j.turnIndex)}function ir(){return typeof window>"u"?!1:window.localStorage.getItem(Ja)==="1"}function ar(j){typeof window>"u"||window.localStorage.setItem(Ja,j?"1":"0")}function qt(j,ye){const Fe=(j??"").trim();return Fe.length>0?Fe:ye.trim()||"message"}async function An(){await U(),pe.value=!0,await Vn(),ue()}async function Vn(){if(!Q.value){Q.value=!0;try{if(de.name==="home"||de.name==="skills"){l.value!==""&&await ae("");return}if(de.name==="thread"){const j=ne.value;if(!j)return;if(!te.value.has(j)){await A.replace({name:"home"});return}l.value!==j&&await ae(j);return}}finally{Q.value=!1}}}pt(()=>[de.name,ne.value,$.value,te.value.has(ne.value),l.value],async()=>{pe.value&&await Vn()}),pt(()=>l.value,async j=>{if(pe.value&&!Q.value&&!(Y.value||V.value)){if(!j){de.name!=="home"&&await A.replace({name:"home"});return}de.name==="thread"&&ne.value===j||await A.replace({name:"thread",params:{threadId:j}})}}),pt(()=>st.value,j=>{if(j.length===0){ke.value="";return}j.some(Fe=>Fe.value===ke.value)||(ke.value=j[0].value),fn()},{immediate:!0}),pt(()=>ke.value,()=>{fn()}),pt(X,j=>{j&&!p.value&&Tt(!0)});async function Cr(j,ye=[],Fe=[],bt=[]){try{const Ft=await oe(j,ke.value,ye,Fe,bt);if(!Ft)return;await A.replace({name:"thread",params:{threadId:Ft}})}catch{}}return(j,ye)=>(_(),S(De,null,[Ie(Yh,{"is-sidebar-collapsed":p.value,onCloseSidebar:ye[4]||(ye[4]=Fe=>Tt(!0))},{sidebar:ot(()=>[w("section",p0,[p.value?ve("",!0):(_(),at(qa,{key:0,class:"sidebar-thread-controls-host","is-sidebar-collapsed":p.value,"is-auto-refresh-enabled":Me(W),"auto-refresh-button-label":re.value,"show-new-thread-button":!0,onToggleSidebar:ye[0]||(ye[0]=Fe=>Tt(!p.value)),onToggleAutoRefresh:Jt,onStartNewThread:Ce},{default:ot(()=>[w("button",{class:"sidebar-search-toggle",type:"button","aria-pressed":x.value,"aria-label":"Search threads",title:"Search threads",onClick:z},[Ie(Oo,{class:"sidebar-search-toggle-icon"})],8,m0)]),_:1},8,["is-sidebar-collapsed","is-auto-refresh-enabled","auto-refresh-button-label"])),!p.value&&x.value?(_(),S("div",g0,[Ie(Oo,{class:"sidebar-search-bar-icon"}),Ln(w("input",{ref_key:"sidebarSearchInputRef",ref:O,"onUpdate:modelValue":ye[1]||(ye[1]=Fe=>y.value=Fe),class:"sidebar-search-input",type:"text",placeholder:"Filter threads...",onKeydown:C},null,544),[[Bn,y.value]]),y.value.length>0?(_(),S("button",{key:0,class:"sidebar-search-clear",type:"button","aria-label":"Clear search",onClick:m},[Ie(li,{class:"sidebar-search-clear-icon"})])):ve("",!0)])):ve("",!0),p.value?ve("",!0):(_(),S("button",{key:2,class:ut(["sidebar-skills-link",{"is-active":V.value}]),type:"button",onClick:ye[2]||(ye[2]=Fe=>{Me(A).push({name:"skills"}),Me(X)&&Tt(!0)})}," Skills Hub ",2)),p.value?ve("",!0):(_(),at($m,{key:3,groups:Me(n),"project-display-name-by-id":Me(r),"selected-thread-id":Me(l),"is-loading":Me($),"search-query":y.value,onSelect:I,onArchive:G,onStartNewThread:se,onRenameProject:Xe,onRemoveProject:ze,onReorderProject:Ze},null,8,["groups","project-display-name-by-id","selected-thread-id","is-loading","search-query"]))])]),content:ot(()=>[w("section",v0,[Ie(Lm,{title:me.value},{leading:ot(()=>[p.value||Me(X)?(_(),at(qa,{key:0,class:"sidebar-thread-controls-header-host","is-sidebar-collapsed":p.value,"is-auto-refresh-enabled":Me(W),"auto-refresh-button-label":re.value,"show-new-thread-button":!0,onToggleSidebar:ye[3]||(ye[3]=Fe=>Tt(!p.value)),onToggleAutoRefresh:Jt,onStartNewThread:Ce},null,8,["is-sidebar-collapsed","is-auto-refresh-enabled","auto-refresh-button-label"])):ve("",!0)]),_:1},8,["title"]),w("section",y0,[V.value?(_(),at(Cb,{key:0,onSkillsChanged:L})):Y.value?(_(),S("div",w0,[w("div",b0,[ye[5]||(ye[5]=w("p",{class:"new-thread-hero"},"Let's build",-1)),Ie(No,{class:"new-thread-folder-dropdown","model-value":ke.value,options:st.value,placeholder:"Choose folder","enable-search":!0,"search-placeholder":"Quick search project","show-add-action":!0,"add-action-label":"+ Add new project","default-add-value":H.value,"add-placeholder":"Project name or absolute path",disabled:!1,"onUpdate:modelValue":sr,onAdd:At},null,8,["model-value","options","default-add-value"])]),Ie(Ua,{"active-thread-id":je.value,cwd:Ve.value,models:Me(d),"selected-model":Me(u),"selected-reasoning-effort":Me(f),skills:Me(g),"is-turn-in-progress":!1,"is-interrupting-turn":!1,onSubmit:Re,"onUpdate:selectedModel":J,"onUpdate:selectedReasoningEffort":Ue},null,8,["active-thread-id","cwd","models","selected-model","selected-reasoning-effort","skills"])])):(_(),S("div",_0,[w("div",k0,[Ie(hv,{messages:be.value,"is-loading":Me(E),"active-thread-id":je.value,"scroll-state":Me(o),"live-overlay":xe.value,"pending-requests":Me(i),"is-turn-in-progress":$e.value,"is-rolling-back":Me(ee),onUpdateScrollState:ft,onRespondServerRequest:Lt,onRollback:Bt},null,8,["messages","is-loading","active-thread-id","scroll-state","live-overlay","pending-requests","is-turn-in-progress","is-rolling-back"])]),w("div",T0,[Ie(Rw,{messages:Me(Oe),onSteer:Me(rt),onDelete:Me(qe)},null,8,["messages","onSteer","onDelete"]),Ie(Ua,{"active-thread-id":je.value,cwd:Ve.value,models:Me(d),"selected-model":Me(u),"selected-reasoning-effort":Me(f),skills:Me(g),"is-turn-in-progress":$e.value,"is-interrupting-turn":Me(B),"has-queue-above":Me(Oe).length>0,onSubmit:Re,"onUpdate:selectedModel":J,"onUpdate:selectedReasoningEffort":Ue,onInterrupt:wt},null,8,["active-thread-id","cwd","models","selected-model","selected-reasoning-effort","skills","is-turn-in-progress","is-interrupting-turn","has-queue-above"])])]))])])]),_:1},8,["is-sidebar-collapsed"]),w("div",S0," WT "+_e(Me(t)),1)],64))}}),C0=Ke(x0,[["__scopeId","data-v-a165fa31"]]),mo={render:()=>null},A0=Hh({history:wh(),routes:[{path:"/",name:"home",component:mo},{path:"/thread/:threadId",name:"thread",component:mo},{path:"/skills",name:"skills",component:mo},{path:"/new-thread",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});console.log("Welcome to codexapp. GitHub: https://github.com/friuns2/codexui");Mf(C0).use(A0).mount("#app");
|
package/dist/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Codex Web Local</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-Bh6cscrM.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-DsnkWOke.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body class="bg-slate-950">
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codexapp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"description": "A lightweight web interface for Codex that runs on top of the Codex app-server, allowing remote access from any browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Pavel Voronin, Igor Levochkin",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/
|
|
10
|
+
"url": "git+https://github.com/friuns2/codexui.git"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://github.com/
|
|
12
|
+
"homepage": "https://github.com/friuns2/codexui#readme",
|
|
13
13
|
"bugs": {
|
|
14
|
-
"url": "https://github.com/
|
|
14
|
+
"url": "https://github.com/friuns2/codexui/issues"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
17
|
"codex",
|