fluxflow-cli 4.42.1 → 4.42.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,96 +1,96 @@
1
- import{a as Nl}from"./chunk-UEV335RW.js";import{b as Ml,c as Sl,d as vl}from"./chunk-IHDJDAG3.js";import{c as fl,e as Hn,f as ro,g as gl}from"./chunk-CTNSVXOH.js";import{A as Wo,C as Ll,D as Pl,E as Ol,a as xl,b as ut,c as pt,d as dr,e as qs,f as bl,g as wn,h as qr,i as Qr,j as Tl,t as Bl,w as Dl,x as Il,y as Al,z as kl}from"./chunk-UTOIJOO3.js";import{a as Zt,b as hl,c as pl}from"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import{a as El}from"./chunk-56EJGQU3.js";import{a as _t,b as Bt,d as dl,e as Dt,f as ul,j as js,k as Ks,l as cr,m as ml,n as Ho}from"./chunk-ZYLACK6T.js";import"./chunk-CTKW7YYV.js";import{a as Cl}from"./chunk-A73NNVCZ.js";import{a as xr,b as Xo,c as yn,e as zr,f as Qs,g as wl,i as yl,j as fr}from"./chunk-Z5D4VQSG.js";import{a as mr}from"./chunk-6EYQQ7GQ.js";import"./chunk-4BLSASW6.js";import{a as ur}from"./chunk-Y5JU726N.js";import{b as Ro,c as Gs,k as rl}from"./chunk-FXRFFNRK.js";import{a as il,b as ll,i as al,j as jr,k as Kr,m as vt,n as Tn,o as Ys,u as cl}from"./chunk-XDCDANJJ.js";import{a as sl,b as Vs,c as Xt}from"./chunk-Y73PU7CC.js";import{d as Ji,e as Ws,f as Zi,g as Ri,h as el,i as tl,j as ol,l as Yr,n as Zo,o as no,p as ar,q as nl}from"./chunk-KMOTPBF5.js";import{c as Gr,d as zi,e as Vr}from"./chunk-P5HBJA23.js";import{a as wo,b as bn,c as Bo,d as Hs,e as Xs,k as lr,y as Qi}from"./chunk-26BQ45XP.js";import mi from"os";import e,{useState as Q,useEffect as ft,useRef as it,useMemo as Vn}from"react";import{Box as d,Text as s,useInput as Id,useStdout as Ad,Static as kd}from"ink";import Ld from"ink-spinner";import xt from"fs-extra";import Ut from"path";import{exec as Oo}from"child_process";import{fileURLToPath as Pd}from"url";import Kt,{useState as Jr,useEffect as zs,useMemo as gr,useCallback as Ra,useRef as Go}from"react";import{Box as ec,Text as yo,useInput as tc}from"ink";function oc(t,f){return t.replace(/\t/g," ".repeat(f))}function Zr(t){return t==null?"":t.replace(/\r\n/g,`
1
+ import{a as _l}from"./chunk-UEV335RW.js";import{b as Bl,c as Dl,d as Il}from"./chunk-IHDJDAG3.js";import{c as bl,e as Hn,f as ro,g as wl}from"./chunk-CTNSVXOH.js";import{A as Wo,C as Fl,D as $l,E as Ul,a as pl,b as ut,c as pt,d as dr,e as zs,f as Cl,g as Tn,h as Qr,i as zr,j as Ml,t as kl,w as Ll,x as Pl,y as Ol,z as Nl}from"./chunk-UTOIJOO3.js";import{a as Zt,b as Tl,c as yl}from"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import{a as Al}from"./chunk-56EJGQU3.js";import{a as _t,b as Bt,d as fl,e as Dt,f as gl,j as qs,k as Qs,l as cr,m as hl,n as Ho}from"./chunk-ZYLACK6T.js";import"./chunk-CTKW7YYV.js";import{a as El}from"./chunk-A73NNVCZ.js";import{a as xr,b as Xo,c as yn,e as Jr,f as Js,g as Sl,i as vl,j as fr}from"./chunk-Z5D4VQSG.js";import{a as mr}from"./chunk-6EYQQ7GQ.js";import"./chunk-4BLSASW6.js";import{a as ur}from"./chunk-Y5JU726N.js";import{b as Ro,c as Ys,k as al}from"./chunk-FXRFFNRK.js";import{a as dl,b as ul,i as ml,j as Kr,k as qr,m as vt,n as wn,o as Ks,u as xl}from"./chunk-XDCDANJJ.js";import{a as cl,b as js,c as Xt}from"./chunk-Y73PU7CC.js";import{d as tl,e as Vs,f as ol,g as nl,h as rl,i as sl,j as il,l as jr,n as Zo,o as no,p as ar,q as ll}from"./chunk-KMOTPBF5.js";import{c as Vr,d as el,e as Yr}from"./chunk-P5HBJA23.js";import{a as To,b as bn,c as Bo,d as Ws,e as Gs,k as lr,y as Ri}from"./chunk-26BQ45XP.js";import hi from"os";import e,{useState as Q,useEffect as ft,useRef as it,useMemo as Vn}from"react";import{Box as d,Text as s,useInput as Ad,useStdout as kd,Static as Ld}from"ink";import Pd from"ink-spinner";import xt from"fs-extra";import Ut from"path";import{exec as Oo}from"child_process";import{fileURLToPath as Od}from"url";import Kt,{useState as Zr,useEffect as Zs,useMemo as gr,useCallback as tc,useRef as Go}from"react";import{Box as oc,Text as yo,useInput as nc}from"ink";function rc(t,x){return t.replace(/\t/g," ".repeat(x))}function Rr(t){return t==null?"":t.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
- `)}function Cn(t,f,g){let M=t,y=[...f].sort((l,w)=>l.start-w.start),b=0;for(let l of y){let w=l.start-b,T=Zr(l.text).split(`
4
- `).length,S=l.text.length,F=(T>3?`[Pasted ${T} lines]`:`[Pasted ${S} chars]`).length,L=w+F;if(t<=w)break;if(t<L){M=l.end;break}else{let B=l.text.length-F;M+=B,b+=B}}return Math.min(M,g.length)}function Js(t,f,g,M,y=[]){let b=(t||"").slice(0,f),l=M(b).length,w=M(t||""),T=[...y].sort((U,N)=>N.start-U.start);for(let U of T){let N=M(t.slice(0,U.start)).length,K=M(U.text),G=N+K.length,de=Zr(U.text).split(`
5
- `).length,ge=U.text.length,ie=de>3?`[Pasted ${de} lines]`:`[Pasted ${ge} chars]`;w=w.slice(0,N)+ie+w.slice(G),l>N&&l<G?l=N+ie.length:l>=G&&(l=l-(G-N)+ie.length)}let S=w.split(`
3
+ `)}function Cn(t,x,g){let M=t,y=[...x].sort((l,T)=>l.start-T.start),b=0;for(let l of y){let T=l.start-b,w=Rr(l.text).split(`
4
+ `).length,S=l.text.length,F=(w>3?`[Pasted ${w} lines]`:`[Pasted ${S} chars]`).length,L=T+F;if(t<=T)break;if(t<L){M=l.end;break}else{let B=l.text.length-F;M+=B,b+=B}}return Math.min(M,g.length)}function Rs(t,x,g,M,y=[]){let b=(t||"").slice(0,x),l=M(b).length,T=M(t||""),w=[...y].sort((U,N)=>N.start-U.start);for(let U of w){let N=M(t.slice(0,U.start)).length,K=M(U.text),G=N+K.length,de=Rr(U.text).split(`
5
+ `).length,ge=U.text.length,ie=de>3?`[Pasted ${de} lines]`:`[Pasted ${ge} chars]`;T=T.slice(0,N)+ie+T.slice(G),l>N&&l<G?l=N+ie.length:l>=G&&(l=l-(G-N)+ie.length)}let S=T.split(`
6
6
  `),F=[],L=0,B=0,E=0,$=!1;for(let U=0;U<S.length;U++){let N=S[U];if(N.length===0){!$&&l===L&&(B=F.length,E=0,$=!0),F.push({text:"",globalStart:Cn(L,y,t),formattedStart:L}),L+=1;continue}let G=Bt(N,g).split(`
7
- `),de=0,ge=[];for(let ie=0;ie<G.length;ie++){let oe=G[ie],ue=oe.trim();if(ue.length===0){let Te=oe.length||1;ge.push({text:oe,start:de,length:Te}),de+=Te}else{let Te=N.indexOf(ue,de);if(Te!==-1){let Ve=de,Ie=ie<G.length-1?G[ie+1].trim():"",pe=N.length;if(Ie.length>0){let we=N.indexOf(Ie,Te+ue.length);we!==-1&&(pe=we)}ge.push({text:N.slice(Ve,pe),start:Ve,length:pe-Ve}),de=pe}else ge.push({text:oe,start:de,length:oe.length}),de+=oe.length}}for(let ie=0;ie<ge.length;ie++){let oe=ge[ie],ue=oe.text,Te=L+oe.start,Ve=Te+oe.length;!$&&l>=Te&&(l<Ve||l===Ve&&ie===ge.length-1)&&(B=F.length,E=l-Te,$=!0),F.push({text:ue,globalStart:Cn(Te,y,t),formattedStart:Te})}L+=N.length+1}return $||(F.length===0?F.push({text:"",globalStart:0,formattedStart:0}):w.endsWith(`
8
- `)?(F.push({text:"",globalStart:Cn(L,y,t),formattedStart:L}),B=F.length-1,E=0):(B=F.length-1,E=F[B].text.length)),{visualLines:F,cursorLine:B,cursorCol:E}}var nc=({value:t,rows:f,maxRows:g,highlightStyle:M,textStyle:y,placeholder:b="",mask:l,showCursor:w=!0,focus:T=!0,tabSize:S=4,cursorIndex:F=0,highlight:L,columns:B=80,pasteBlocks:E=[],cursorColor:$})=>{let U=Go(0),N=gr(()=>Math.max(20,B-10),[B]),K=Ra((et,_e=!1)=>{let ne=Zr(et);if(!_e&&l)return ne.replace(/[^\n]/g,l);let W=oc(ne,S);return _e?W:W.replace(/@\[(.*?)\]/g,(re,he)=>{let Se=he.indexOf("#"),Ee=he.indexOf(":L"),Le=he,Oe="";Se!==-1?(Le=he.slice(0,Se),Oe=he.slice(Se)):Ee!==-1&&(Le=he.slice(0,Ee),Oe=he.slice(Ee));let Ge=Le.replace(/\\/g,"/"),yt=(process.cwd()||"").replace(/\\/g,"/");yt&&Ge.toLowerCase().startsWith(yt.toLowerCase()+"/")?Ge=Ge.slice(yt.length+1):Ge.startsWith("./")&&(Ge=Ge.slice(2));let Be=Ge.split("/");return`[${Be[Be.length-1]}${Oe}]`})},[S,l]),{visualLines:G,cursorLine:de,cursorCol:ge}=gr(()=>Js(t,F,N,K,E),[t,F,N,K,E]),ie=G.length,oe=gr(()=>Math.max(f??g??1,Math.min(g??f??1,ie)),[f,g,ie]),ue=de+1,Te=U.current+oe,Ve=U.current;ue<=U.current?Ve=Math.max(0,ue-1):ue>Te?Ve=ue-oe:ie&&(ie<oe?Ve=0:ie<Te&&(Ve=ie-oe)),U.current=Ve;let Ie=gr(()=>G.slice(Ve,Ve+oe),[G,Ve,oe]),[pe,we]=Jr(!0);zs(()=>{if(we(!0),!T||!w)return;let et=setInterval(()=>{we(_e=>!_e)},530);return()=>clearInterval(et)},[T,w,t,F]);let me=gr(()=>({...y,color:w&&T&&pe?$||"white":void 0,bold:w&&T&&pe,inverse:w&&T&&pe}),[y,w,T,pe,$]),qe=(et,_e,ne,W)=>{if(!et){let Le=b&&t.length===0?K(b,!0):"";if(_e){let Oe=Le[0]||" ",Ge=Le.slice(1);return Kt.createElement(yo,null,Kt.createElement(yo,{...W},Oe),Kt.createElement(yo,{color:"gray",dimColor:!0},Ge))}return Kt.createElement(yo,{color:"gray",dimColor:!0},Le||" ")}let re=/(\[Pasted \d+ (?:lines|chars)\])/g,he=et.split(re),Se=0,Ee=[];for(let Le=0;Le<he.length;Le++){let Oe=he[Le];if(Oe==="")continue;let Ge=Oe.match(/^\[Pasted \d+ (?:lines|chars)\]$/),yt=Oe.length,Be=Se+yt;if(_e&&ne>=Se&&ne<Be){let ye=ne-Se,Pe=Oe.slice(0,ye),ee=Oe[ye]||" ",Ye=Oe.slice(ye+1);Ee.push(Kt.createElement(yo,{key:Le},Kt.createElement(yo,{color:Ge?"magenta":void 0},Pe),Kt.createElement(yo,{...W},ee),Kt.createElement(yo,{color:Ge?"magenta":void 0},Ye)))}else Ee.push(Kt.createElement(yo,{key:Le,color:Ge?"magenta":void 0},Oe));Se=Be}return _e&&ne>=et.length&&Ee.push(Kt.createElement(yo,{key:"cursor-end",...W}," ")),Kt.createElement(Kt.Fragment,null,Ee)};return Kt.createElement(ec,{height:oe,width:N+1,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},Ie.map((et,_e)=>{let ne=Ve+_e,W=ne===de&&T&&w;return Kt.createElement(yo,{key:ne,...y,wrap:"truncate"},qe(et.text,W,ge,me))}))},Fl=({value:t,onChange:f,onSubmit:g,keyBindings:M,showCursor:y=!0,highlightPastedText:b=!1,focus:l=!0,columns:w=80,useCustomInput:T=(B,E)=>tc(B,{isActive:E}),onPasteStateChange:S,cursorColor:F,...L})=>{let[B,E]=Jr(t.length),[$,U]=Jr(0),[N,K]=Jr([]),G=Go(t.length),de=Go(t),ge=Go(0),ie=Go([]),oe=Go(""),ue=Go(-1),Te=Go(null),Ve=Go(0);G.current=B,de.current=t,ge.current=$,ie.current=N,zs(()=>{G.current>t.length&&(G.current=t.length,E(t.length)),t?K(we=>we.filter(me=>me.end<=t.length&&me.start<=t.length)):(K([]),U(0))},[t]),zs(()=>{S?.(N.length>0)},[N,S]);let Ie=()=>{let we=oe.current,me=ue.current,qe=me+we.length,et=de.current,_e=et.slice(0,me)+we+et.slice(me);f(_e),G.current=qe,E(qe),U(we.length>1?we.length:0);let ne=Zr(we).split(`
9
- `).length,W=we.length;if(W>50&&(ne>3||ne<=3&&W>200)){let re={start:me,end:qe,text:we};K(he=>{let Se=we.length;return[...he.map(Le=>me<=Le.start?{...Le,start:Le.start+Se,end:Le.end+Se}:Le),re]})}oe.current="",ue.current=-1,Te.current=null},pe=()=>{Te.current&&(clearTimeout(Te.current),Ie())};return T((we,me)=>{if(we==="\x1B[I"||we==="\x1B[O"||we==="[I"||we==="[O")return;let qe=we,et=!1,_e=!1;qe&&typeof qe=="string"&&(qe.includes("\x1B[200~")&&(et=!0,qe=qe.replace(/\x1b\[200~/g,"")),qe.includes("\x1B[201~")&&(_e=!0,qe=qe.replace(/\x1b\[201~/g,"")));let ne=G.current,W=de.current,re=ie.current,he=Math.max(20,w-10),Se=(Be,ye)=>{if(re.length===0)return;let Pe=re.map(ee=>Be<=ee.start?{...ee,start:ee.start+ye,end:ee.end+ye}:Be>ee.start&&Be<ee.end?null:ee).filter(Boolean);K(Pe)},Ee=Be=>{for(let ye of re)if(Be>ye.start&&Be<ye.end)return ye.start;return Be};if(me.ctrl&&(qe==="o"||qe==="")){K([]);return}if(me.ctrl&&(qe.toLowerCase()==="r"||qe===""||qe===""))return;if(me.upArrow||me.downArrow||me.leftArrow||me.rightArrow){pe();let Be=Date.now();if(Be-Ve.current<33)return;Ve.current=Be}let Oe=M?.submit??(Be=>Be.return&&Be.ctrl),Ge=M?.newline??(Be=>Be.return);if(Oe(me)){pe(),g?.(W);return}else if(Ge(me)){pe(),Se(ne,1);let Be=W.slice(0,ne)+`
10
- `+W.slice(ne);f(Be),G.current=ne+1,E(ne+1),U(0);return}if(me.tab||me.shift&&me.tab||me.ctrl&&qe==="c")return;let yt=Be=>Be;if(me.upArrow||me.downArrow){if(pe(),y){let{visualLines:Be,cursorLine:ye,cursorCol:Pe}=Js(W,ne,he,yt,re),ee=me.upArrow?ye-1:ye+1;if(ee>=0&&ee<Be.length){let Ye=Be[ee],Qe=Math.min(Pe,Ye.text.length),Ct=Ye.formattedStart+Qe,P=Cn(Ct,re,W);P=Ee(P),G.current=P,E(P),U(0)}else if(me.upArrow&&ye===0)G.current=0,E(0),U(0);else if(me.downArrow&&ye===Be.length-1){let Ye=Be[Be.length-1],Qe=Ye.formattedStart+Ye.text.length,Ct=Cn(Qe,re,W);Ct=Ee(Ct),G.current=Ct,E(Ct),U(0)}}}else if(me.leftArrow){if(pe(),y){let Be=Math.max(0,ne-1),ye=re.find(Pe=>ne===Pe.end);ye&&(Be=ye.start),G.current=Be,E(Be),U(0)}}else if(me.rightArrow){if(pe(),y){let Be=Math.min(W.length,ne+1),ye=re.find(Pe=>ne===Pe.start);ye&&(Be=ye.end),G.current=Be,E(Be),U(0)}}else if(me.backspace){pe();let Be=re.findIndex(ye=>ne===ye.end);if(Be!==-1){let ye=re[Be],Pe=-(ye.end-ye.start),ee=W.slice(0,ye.start)+W.slice(ye.end);f(ee),G.current=ye.start,E(ye.start),U(0);let Ye=re.filter((Qe,Ct)=>Ct!==Be).map(Qe=>Qe.start>=ye.end?{...Qe,start:Qe.start+Pe,end:Qe.end+Pe}:Qe);K(Ye)}else if(ne>0){Se(ne-1,-1);let ye=W.slice(0,ne-1)+W.slice(ne);f(ye),G.current=ne-1,E(ne-1),U(0)}}else if(me.delete){pe();let Be=re.findIndex(ye=>ne===ye.start);if(Be!==-1){let ye=re[Be],Pe=-(ye.end-ye.start),ee=W.slice(0,ye.start)+W.slice(ye.end);f(ee),U(0);let Ye=re.filter((Qe,Ct)=>Ct!==Be).map(Qe=>Qe.start>=ye.end?{...Qe,start:Qe.start+Pe,end:Qe.end+Pe}:Qe);K(Ye)}else if(Se(ne,-1),ne<W.length){let ye=W.slice(0,ne)+W.slice(ne+1);f(ye),U(0)}}else if(me.home||me.end){if(pe(),y){let{visualLines:Be,cursorLine:ye}=Js(W,ne,he,yt,re),Pe=Be[ye];if(Pe){let ee;me.home?ee=Cn(Pe.formattedStart,re,W):me.end&&(ee=Cn(Pe.formattedStart+Pe.text.length,re,W)),ee=Ee(ee),G.current=ee,E(ee),U(0)}}}else if(qe!==""||et||_e)if(et||_e||qe.length>1||Te.current!==null)Te.current?(clearTimeout(Te.current),oe.current+=qe):(ue.current=ne,oe.current=qe),_e?(Te.current=null,Ie()):Te.current=setTimeout(()=>{Ie()},80);else{Se(ne,qe.length);let ye=W.slice(0,ne)+qe+W.slice(ne);f(ye);let Pe=ne+qe.length;G.current=Pe,E(Pe),U(0)}},l),Kt.createElement(nc,{...L,value:t,cursorIndex:B,showCursor:y,focus:l,columns:w,pasteBlocks:N,cursorColor:F})};import Yn from"ink-text-input";import"ink-select-input";import i from"react";import{Box as D,Text as se}from"ink";import Nt,{useState as $l,useEffect as rc}from"react";import{Box as Vo,Text as Co,useInput as sc}from"ink";var Rr=Nt.memo(({command:t,output:f,completed:g=!1,isFocused:M=!1,columns:y=80,isPty:b=!1,terminalHeight:l=24,theme:w="Dark"})=>{let T=ut(w),F=(W=>{if(!W)return"";let re=[[]],he=0,Se=0,Ee="",Le=/\x1b\[([0-9;]*?)([a-zA-Z])/g,Oe=0,Ge,yt=ye=>{for(let Pe=0;Pe<ye.length;Pe++){let ee=ye[Pe];if(ee===`
7
+ `),de=0,ge=[];for(let ie=0;ie<G.length;ie++){let oe=G[ie],ue=oe.trim();if(ue.length===0){let we=oe.length||1;ge.push({text:oe,start:de,length:we}),de+=we}else{let we=N.indexOf(ue,de);if(we!==-1){let Ve=de,Ie=ie<G.length-1?G[ie+1].trim():"",pe=N.length;if(Ie.length>0){let Te=N.indexOf(Ie,we+ue.length);Te!==-1&&(pe=Te)}ge.push({text:N.slice(Ve,pe),start:Ve,length:pe-Ve}),de=pe}else ge.push({text:oe,start:de,length:oe.length}),de+=oe.length}}for(let ie=0;ie<ge.length;ie++){let oe=ge[ie],ue=oe.text,we=L+oe.start,Ve=we+oe.length;!$&&l>=we&&(l<Ve||l===Ve&&ie===ge.length-1)&&(B=F.length,E=l-we,$=!0),F.push({text:ue,globalStart:Cn(we,y,t),formattedStart:we})}L+=N.length+1}return $||(F.length===0?F.push({text:"",globalStart:0,formattedStart:0}):T.endsWith(`
8
+ `)?(F.push({text:"",globalStart:Cn(L,y,t),formattedStart:L}),B=F.length-1,E=0):(B=F.length-1,E=F[B].text.length)),{visualLines:F,cursorLine:B,cursorCol:E}}var sc=({value:t,rows:x,maxRows:g,highlightStyle:M,textStyle:y,placeholder:b="",mask:l,showCursor:T=!0,focus:w=!0,tabSize:S=4,cursorIndex:F=0,highlight:L,columns:B=80,pasteBlocks:E=[],cursorColor:$})=>{let U=Go(0),N=gr(()=>Math.max(20,B-10),[B]),K=tc((et,_e=!1)=>{let ne=Rr(et);if(!_e&&l)return ne.replace(/[^\n]/g,l);let W=rc(ne,S);return _e?W:W.replace(/@\[(.*?)\]/g,(re,he)=>{let Se=he.indexOf("#"),Ee=he.indexOf(":L"),Le=he,Oe="";Se!==-1?(Le=he.slice(0,Se),Oe=he.slice(Se)):Ee!==-1&&(Le=he.slice(0,Ee),Oe=he.slice(Ee));let Ge=Le.replace(/\\/g,"/"),yt=(process.cwd()||"").replace(/\\/g,"/");yt&&Ge.toLowerCase().startsWith(yt.toLowerCase()+"/")?Ge=Ge.slice(yt.length+1):Ge.startsWith("./")&&(Ge=Ge.slice(2));let Be=Ge.split("/");return`[${Be[Be.length-1]}${Oe}]`})},[S,l]),{visualLines:G,cursorLine:de,cursorCol:ge}=gr(()=>Rs(t,F,N,K,E),[t,F,N,K,E]),ie=G.length,oe=gr(()=>Math.max(x??g??1,Math.min(g??x??1,ie)),[x,g,ie]),ue=de+1,we=U.current+oe,Ve=U.current;ue<=U.current?Ve=Math.max(0,ue-1):ue>we?Ve=ue-oe:ie&&(ie<oe?Ve=0:ie<we&&(Ve=ie-oe)),U.current=Ve;let Ie=gr(()=>G.slice(Ve,Ve+oe),[G,Ve,oe]),[pe,Te]=Zr(!0);Zs(()=>{if(Te(!0),!w||!T)return;let et=setInterval(()=>{Te(_e=>!_e)},530);return()=>clearInterval(et)},[w,T,t,F]);let me=gr(()=>({...y,color:T&&w&&pe?$||"white":void 0,bold:T&&w&&pe,inverse:T&&w&&pe}),[y,T,w,pe,$]),qe=(et,_e,ne,W)=>{if(!et){let Le=b&&t.length===0?K(b,!0):"";if(_e){let Oe=Le[0]||" ",Ge=Le.slice(1);return Kt.createElement(yo,null,Kt.createElement(yo,{...W},Oe),Kt.createElement(yo,{color:"gray",dimColor:!0},Ge))}return Kt.createElement(yo,{color:"gray",dimColor:!0},Le||" ")}let re=/(\[Pasted \d+ (?:lines|chars)\])/g,he=et.split(re),Se=0,Ee=[];for(let Le=0;Le<he.length;Le++){let Oe=he[Le];if(Oe==="")continue;let Ge=Oe.match(/^\[Pasted \d+ (?:lines|chars)\]$/),yt=Oe.length,Be=Se+yt;if(_e&&ne>=Se&&ne<Be){let ye=ne-Se,Pe=Oe.slice(0,ye),ee=Oe[ye]||" ",Ye=Oe.slice(ye+1);Ee.push(Kt.createElement(yo,{key:Le},Kt.createElement(yo,{color:Ge?"magenta":void 0},Pe),Kt.createElement(yo,{...W},ee),Kt.createElement(yo,{color:Ge?"magenta":void 0},Ye)))}else Ee.push(Kt.createElement(yo,{key:Le,color:Ge?"magenta":void 0},Oe));Se=Be}return _e&&ne>=et.length&&Ee.push(Kt.createElement(yo,{key:"cursor-end",...W}," ")),Kt.createElement(Kt.Fragment,null,Ee)};return Kt.createElement(oc,{height:oe,width:N+1,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},Ie.map((et,_e)=>{let ne=Ve+_e,W=ne===de&&w&&T;return Kt.createElement(yo,{key:ne,...y,wrap:"truncate"},qe(et.text,W,ge,me))}))},Hl=({value:t,onChange:x,onSubmit:g,keyBindings:M,showCursor:y=!0,highlightPastedText:b=!1,focus:l=!0,columns:T=80,useCustomInput:w=(B,E)=>nc(B,{isActive:E}),onPasteStateChange:S,cursorColor:F,...L})=>{let[B,E]=Zr(t.length),[$,U]=Zr(0),[N,K]=Zr([]),G=Go(t.length),de=Go(t),ge=Go(0),ie=Go([]),oe=Go(""),ue=Go(-1),we=Go(null),Ve=Go(0);G.current=B,de.current=t,ge.current=$,ie.current=N,Zs(()=>{G.current>t.length&&(G.current=t.length,E(t.length)),t?K(Te=>Te.filter(me=>me.end<=t.length&&me.start<=t.length)):(K([]),U(0))},[t]),Zs(()=>{S?.(N.length>0)},[N,S]);let Ie=()=>{let Te=oe.current,me=ue.current,qe=me+Te.length,et=de.current,_e=et.slice(0,me)+Te+et.slice(me);x(_e),G.current=qe,E(qe),U(Te.length>1?Te.length:0);let ne=Rr(Te).split(`
9
+ `).length,W=Te.length;if(W>50&&(ne>3||ne<=3&&W>200)){let re={start:me,end:qe,text:Te};K(he=>{let Se=Te.length;return[...he.map(Le=>me<=Le.start?{...Le,start:Le.start+Se,end:Le.end+Se}:Le),re]})}oe.current="",ue.current=-1,we.current=null},pe=()=>{we.current&&(clearTimeout(we.current),Ie())};return w((Te,me)=>{if(Te==="\x1B[I"||Te==="\x1B[O"||Te==="[I"||Te==="[O")return;let qe=Te,et=!1,_e=!1;qe&&typeof qe=="string"&&(qe.includes("\x1B[200~")&&(et=!0,qe=qe.replace(/\x1b\[200~/g,"")),qe.includes("\x1B[201~")&&(_e=!0,qe=qe.replace(/\x1b\[201~/g,"")));let ne=G.current,W=de.current,re=ie.current,he=Math.max(20,T-10),Se=(Be,ye)=>{if(re.length===0)return;let Pe=re.map(ee=>Be<=ee.start?{...ee,start:ee.start+ye,end:ee.end+ye}:Be>ee.start&&Be<ee.end?null:ee).filter(Boolean);K(Pe)},Ee=Be=>{for(let ye of re)if(Be>ye.start&&Be<ye.end)return ye.start;return Be};if(me.ctrl&&(qe==="o"||qe==="")){K([]);return}if(me.ctrl&&(qe.toLowerCase()==="r"||qe===""||qe===""))return;if(me.upArrow||me.downArrow||me.leftArrow||me.rightArrow){pe();let Be=Date.now();if(Be-Ve.current<33)return;Ve.current=Be}let Oe=M?.submit??(Be=>Be.return&&Be.ctrl),Ge=M?.newline??(Be=>Be.return);if(Oe(me)){pe(),g?.(W);return}else if(Ge(me)){pe(),Se(ne,1);let Be=W.slice(0,ne)+`
10
+ `+W.slice(ne);x(Be),G.current=ne+1,E(ne+1),U(0);return}if(me.tab||me.shift&&me.tab||me.ctrl&&qe==="c")return;let yt=Be=>Be;if(me.upArrow||me.downArrow){if(pe(),y){let{visualLines:Be,cursorLine:ye,cursorCol:Pe}=Rs(W,ne,he,yt,re),ee=me.upArrow?ye-1:ye+1;if(ee>=0&&ee<Be.length){let Ye=Be[ee],Qe=Math.min(Pe,Ye.text.length),Ct=Ye.formattedStart+Qe,P=Cn(Ct,re,W);P=Ee(P),G.current=P,E(P),U(0)}else if(me.upArrow&&ye===0)G.current=0,E(0),U(0);else if(me.downArrow&&ye===Be.length-1){let Ye=Be[Be.length-1],Qe=Ye.formattedStart+Ye.text.length,Ct=Cn(Qe,re,W);Ct=Ee(Ct),G.current=Ct,E(Ct),U(0)}}}else if(me.leftArrow){if(pe(),y){let Be=Math.max(0,ne-1),ye=re.find(Pe=>ne===Pe.end);ye&&(Be=ye.start),G.current=Be,E(Be),U(0)}}else if(me.rightArrow){if(pe(),y){let Be=Math.min(W.length,ne+1),ye=re.find(Pe=>ne===Pe.start);ye&&(Be=ye.end),G.current=Be,E(Be),U(0)}}else if(me.backspace){pe();let Be=re.findIndex(ye=>ne===ye.end);if(Be!==-1){let ye=re[Be],Pe=-(ye.end-ye.start),ee=W.slice(0,ye.start)+W.slice(ye.end);x(ee),G.current=ye.start,E(ye.start),U(0);let Ye=re.filter((Qe,Ct)=>Ct!==Be).map(Qe=>Qe.start>=ye.end?{...Qe,start:Qe.start+Pe,end:Qe.end+Pe}:Qe);K(Ye)}else if(ne>0){Se(ne-1,-1);let ye=W.slice(0,ne-1)+W.slice(ne);x(ye),G.current=ne-1,E(ne-1),U(0)}}else if(me.delete){pe();let Be=re.findIndex(ye=>ne===ye.start);if(Be!==-1){let ye=re[Be],Pe=-(ye.end-ye.start),ee=W.slice(0,ye.start)+W.slice(ye.end);x(ee),U(0);let Ye=re.filter((Qe,Ct)=>Ct!==Be).map(Qe=>Qe.start>=ye.end?{...Qe,start:Qe.start+Pe,end:Qe.end+Pe}:Qe);K(Ye)}else if(Se(ne,-1),ne<W.length){let ye=W.slice(0,ne)+W.slice(ne+1);x(ye),U(0)}}else if(me.home||me.end){if(pe(),y){let{visualLines:Be,cursorLine:ye}=Rs(W,ne,he,yt,re),Pe=Be[ye];if(Pe){let ee;me.home?ee=Cn(Pe.formattedStart,re,W):me.end&&(ee=Cn(Pe.formattedStart+Pe.text.length,re,W)),ee=Ee(ee),G.current=ee,E(ee),U(0)}}}else if(qe!==""||et||_e)if(et||_e||qe.length>1||we.current!==null)we.current?(clearTimeout(we.current),oe.current+=qe):(ue.current=ne,oe.current=qe),_e?(we.current=null,Ie()):we.current=setTimeout(()=>{Ie()},80);else{Se(ne,qe.length);let ye=W.slice(0,ne)+qe+W.slice(ne);x(ye);let Pe=ne+qe.length;G.current=Pe,E(Pe),U(0)}},l),Kt.createElement(sc,{...L,value:t,cursorIndex:B,showCursor:y,focus:l,columns:T,pasteBlocks:N,cursorColor:F})};import Yn from"ink-text-input";import"ink-select-input";import i from"react";import{Box as D,Text as se}from"ink";import Nt,{useState as Xl,useEffect as ic}from"react";import{Box as Vo,Text as Co,useInput as lc}from"ink";var es=Nt.memo(({command:t,output:x,completed:g=!1,isFocused:M=!1,columns:y=80,isPty:b=!1,terminalHeight:l=24,theme:T="Dark"})=>{let w=ut(T),F=(W=>{if(!W)return"";let re=[[]],he=0,Se=0,Ee="",Le=/\x1b\[([0-9;]*?)([a-zA-Z])/g,Oe=0,Ge,yt=ye=>{for(let Pe=0;Pe<ye.length;Pe++){let ee=ye[Pe];if(ee===`
11
11
  `)for(he++,Se=0;he>=re.length;)re.push([]);else if(ee==="\r")Se=0;else{for(;he>=re.length;)re.push([]);let Ye=re[he];for(;Se>Ye.length;)Ye.push({char:" ",style:""});Ye[Se]={char:ee,style:Ee},Se++}}};for(;(Ge=Le.exec(W))!==null;){yt(W.substring(Oe,Ge.index));let ye=Ge[1],Pe=Ge[2],ee=ye?ye.split(";").map(Number):[];if(Pe==="A"){let Ye=ee[0]||1;he=Math.max(0,he-Ye)}else if(Pe==="B"){let Ye=ee[0]||1;for(he=he+Ye;he>=re.length;)re.push([])}else if(Pe==="C"){let Ye=ee[0]||1;Se=Se+Ye}else if(Pe==="D"){let Ye=ee[0]||1;Se=Math.max(0,Se-Ye)}else if(Pe==="G"){let Ye=(ee[0]||1)-1;Se=Math.max(0,Ye)}else if(Pe==="H"||Pe==="f"){let Ye=(ee[0]||1)-1,Qe=(ee[1]||1)-1;for(he=Math.max(0,Ye),Se=Math.max(0,Qe);he>=re.length;)re.push([])}else if(Pe==="K"){let Ye=ee[0]||0;if(he<re.length){let Qe=re[he];if(Ye===0)Qe.length=Se;else if(Ye===1)for(let Ct=0;Ct<Se&&Ct<Qe.length;Ct++)Qe[Ct]={char:" ",style:""};else Ye===2&&(Qe.length=0)}}else if(Pe==="J"){let Ye=ee[0]||0;(Ye===2||Ye===3)&&(re.length=0,re.push([]),he=0,Se=0)}else if(Pe==="m"){let Ye=Ge[0];Ye==="\x1B[0m"?Ee="":Ee=Ye}Oe=Le.lastIndex}yt(W.substring(Oe));let Be=re.map(ye=>{let Pe="",ee="";for(let Ye=0;Ye<ye.length;Ye++){let Qe=ye[Ye]||{char:" ",style:""};Qe.style!==ee&&(ee&&(Pe+="\x1B[0m"),Pe+=Qe.style,ee=Qe.style),Pe+=Qe.char}return ee&&(Pe+="\x1B[0m"),Pe});for(;Be.length>0&&Be[Be.length-1]==="";)Be.pop();return Be.join(`
12
- `)})(f).replace(/\n{3,}/g,`
12
+ `)})(x).replace(/\n{3,}/g,`
13
13
 
14
14
  `),L=Math.max(10,(y||80)-6),B=F?F.split(`
15
15
  `).flatMap(W=>W?Bt(W,L).split(`
16
- `):[""]):[],[E,$]=$l(!1),[U,N]=$l(0);rc(()=>{M||N(0)},[M]);let K=l&&l>0?l:process.stdout.rows||24,G=K<=24,ge=Math.max(1,K-(G?11:14)),ie=K<=16?4:K<=22?5:K<=28?6:10,oe=Math.min(ie,ge),ue=B.length>oe,Te=Math.max(0,B.length-oe);sc((W,re)=>{if(!M)return;let he=re.pageUp||W==="\x1B[5~"||W==="[5~",Se=re.pageDown||W==="\x1B[6~"||W==="[6~";re.ctrl&&(W==="o"||W==="")?($(Ee=>!Ee),N(0)):he?N(Ee=>Math.min(Te,Ee+5)):Se&&N(Ee=>Math.max(0,Ee-5))},{isActive:M});let Ve;if(!ue||E)Ve=B;else{let W=Math.max(0,B.length-oe-U),re=W+oe;Ve=B.slice(W,re)}let Ie=(Ve||[]).join(`
16
+ `):[""]):[],[E,$]=Xl(!1),[U,N]=Xl(0);ic(()=>{M||N(0)},[M]);let K=l&&l>0?l:process.stdout.rows||24,G=K<=24,ge=Math.max(1,K-(G?11:14)),ie=K<=16?4:K<=22?5:K<=28?6:10,oe=Math.min(ie,ge),ue=B.length>oe,we=Math.max(0,B.length-oe);lc((W,re)=>{if(!M)return;let he=re.pageUp||W==="\x1B[5~"||W==="[5~",Se=re.pageDown||W==="\x1B[6~"||W==="[6~";re.ctrl&&(W==="o"||W==="")?($(Ee=>!Ee),N(0)):he?N(Ee=>Math.min(we,Ee+5)):Se&&N(Ee=>Math.max(0,Ee-5))},{isActive:M});let Ve;if(!ue||E)Ve=B;else{let W=Math.max(0,B.length-oe-U),re=W+oe;Ve=B.slice(W,re)}let Ie=(Ve||[]).join(`
17
17
  `).trim(),pe=(Ve||[]).join(`
18
- `),we=ue&&!E?Math.max(0,B.length-oe-U):0,me=ue&&!E?U:0,qe=g?"\u{1F3C1} FINISHED: ":"\u26A1 EXECUTING: ",et=Math.max(10,(y||80)-(b?24:14)),_e=Bt((t||"").replace(/\r?\n/g," ").trim(),et).split(`
19
- `),ne=(t||"").replace(/\r?\n/g," ").trim();return _e.length>1&&(ne=_e[0].length>3?_e[0].slice(0,-3)+"...":_e[0]+"..."),Nt.createElement(Vo,{flexDirection:"column",borderStyle:M?"double":"single",borderLeft:!1,borderRight:!1,borderTop:!0,borderBottom:!0,borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:G?0:1,paddingBottom:1,marginY:G?0:1,width:y-2},Nt.createElement(Vo,{marginBottom:G?0:1,justifyContent:"space-between",width:"100%"},Nt.createElement(Vo,{flexShrink:1,paddingRight:2},Nt.createElement(Co,null,Nt.createElement(Co,{color:T.text,bold:!0},qe),Nt.createElement(Co,{color:T.text},ne))),b&&Nt.createElement(Vo,{flexShrink:0,paddingX:1},Nt.createElement(Co,{color:"green",bold:!0},"ADVANCE"))),Ie?Nt.createElement(Vo,{flexDirection:"column",marginTop:0,backgroundColor:b?void 0:T.codeBg,paddingX:1,width:"100%"},we>0&&Nt.createElement(Vo,{marginBottom:0},Nt.createElement(Co,{color:"magenta"},"\u25B2 ...",we," lines above (Use PageUp to scroll)...")),Nt.createElement(Co,{color:T.text},pe),me>0&&Nt.createElement(Vo,{marginTop:0},Nt.createElement(Co,{color:"magenta"},"\u25BC ...",me," lines below (Use PageDown to scroll)..."))):!g&&Nt.createElement(Vo,{marginTop:G?0:1,backgroundColor:b?void 0:T.codeBg,paddingX:1,width:"100%"},Nt.createElement(Co,{color:T.textMuted,italic:!0},"Waiting for output...")),Nt.createElement(Vo,{justifyContent:"space-between",marginTop:G?0:1},g?Nt.createElement(Co,{color:T.textMuted,italic:!0},M?"Use PgUp/PgDn to scroll \u2022 Ctrl+O to expand/collapse \u2022 TAB to unfocus.":"Press TAB to focus & scroll."):Nt.createElement(Co,{color:T.textMuted,italic:!0},M?"Use PgUp/PgDn to scroll \u2022 Ctrl+O to expand \u2022 TAB to unfocus \u2022 CTRL+C to stop.":"Press TAB to focus \u2022 CTRL+C to terminate."),Nt.createElement(Co,{color:T.textMuted,bold:!0},g?M?"\u25CF ARCHIVED (FOCUSED) ":"\u25CF ARCHIVED ":M?"\u25B6 TERMINAL FOCUSED ":"\u25CF LIVE (Press TAB to focus) ")))});import{diffWordsWithSpace as ic}from"diff";var hr=null,Hl=t=>{hr=t!==!1},Xl=()=>{if(hr===null)try{hr=Vr(bn,{})?.systemSettings?.preserveThinking!==!1}catch{hr=!0}return hr},Ul=(t,f,g)=>t,lc=(t,f=80)=>{if(!t)return null;let g=t.replaceAll(" "," "),M=f-10,y=g.trim();if(!y.includes("```"))return i.createElement(D,{width:"100%",flexDirection:"column"},i.createElement(Wn,{text:y,color:"#969696",columns:M,italic:!0}));let b=y.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return i.createElement(D,{width:"100%",flexDirection:"column"},b.map((l,w)=>{if(l.startsWith("```")){let S=l.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),F=S?S[2]:l.replace(/^```\w*\n?/,"").replace(/```$/,""),L=Bt(F.trimEnd(),M);return i.createElement(D,{key:w,flexDirection:"column",width:"100%"},L.split(`
20
- `).map((B,E)=>i.createElement(se,{key:E,color:"cyan"},B)))}let T=l;return w>0&&(T=T.replace(/^[\r\n]+/,"")),w<b.length-1&&(T=T.replace(/[\r\n]+$/,"")),T?i.createElement(Wn,{key:w,text:T,color:"gray",columns:M,italic:!0}):null}))},ac=/(```[\s\S]*?```|`[^`\r\n]+`|@\[.*?\]|\*\*.*?\*\*|\*.*?\*|\\\(.*?\\\)|\\\[.*?\\\]|\$.*?\$|\[.*?\]\s*\(.*?\)|\[.*?\]\s*\[.*?\]|https?:\/\/[^\s]+)/g;var cc=/\\frac\s*\{([^{}]*)\}\s*\{([^{}]*)\}/g,dc=/(\\(?:mathbf|textbf|textit|underline|texttt)\{[^{}]*\})/g,uc=/^(#{1,6})\s+(.*)/,mc=/\\multiply|\\mul|\\times/g,xc=/\\div/g,fc=/\\cdot/g,gc=/\\infty/g,hc=/\\pm/g,pc=/\\leq/g,bc=/\\geq/g,Tc=/\\neq/g,wc=/\\sqrt\s*\{([^}]+)\}/g,yc=/\\sqrt\s*(\w+|\d+)/g,Cc=/\\alpha/g,Mc=/\\beta/g,Sc=/\\theta/g,vc=/\\pi/g,Ec=/\\approx/g,Bc=/\\Delta/g,Dc=/\\sigma/g,Ic=/\\sum/g,Ac=/\\prod/g,kc=/\\rightarrow|\\to/g,Lc=/\\left\b|\\right\b/g,Pc=/\\left\(|\\right\)/g,Oc=/\\left\[|\\right\]/g,Nc=/\\\{|\\\}/g,Fc=/\\text\s*\{([^}]+)\}/g,$c=/\\text\s+(\w+)/g,Uc=/\\%/g,_c=/\\\(|\\\)/g,Hc=/\\\[|\\\]/g,Xc=/@\[(.*?)\]/g,_l=/:L/gi,Wc=/\[(.*?)\]\s*\((.*?)\)/,Gc=/\[(.*?)\]\s*\[(.*?)\]/,Vc=/\\(\w+)\{([^{}]*)\}/,Yc=t=>t.replace(_c,f=>f.includes("(")?"(":")").replace(Hc,f=>f.includes("[")?"[":"]").replace(mc,"\xD7").replace(xc,"\xF7").replace(fc,"\u22C5").replace(gc,"\u221E").replace(hc,"\xB1").replace(pc,"\u2264").replace(bc,"\u2265").replace(Tc,"\u2260").replace(wc,"\u221A($1)").replace(yc,"\u221A($1)").replace(Cc,"\u03B1").replace(Mc,"\u03B2").replace(Sc,"\u03B8").replace(vc,"\u03C0").replace(Ec,"\u2248").replace(Bc,"\u0394").replace(Dc,"\u03C3").replace(Ic,"\u03A3").replace(Ac,"\u03A0").replace(kc,"\u2192").replace(Lc,"").replace(Pc,f=>f.includes("left")?"(":")").replace(Oc,f=>f.includes("left")?"[":"]").replace(Nc,f=>f.includes("{")?"{":"}").replace(Fc,"$1").replace($c,"$1").replace(Uc,"%"),jc=/\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|import|export|from|default|class|extends|new|this|typeof|instanceof|try|catch|finally|throw|async|await|yield|public|private|protected|static|void|int|float|double|char|bool|boolean|def|elif|fn|pub|mut|struct|impl|enum|type|interface|package|namespace|using|include|define|nil|None|self|lambda)\b/,Kc=[/((?<=\binclude\s+)(?:<[^>]+>|"[^"]+"))/.source,/((?<=\b(?:from|import|require\s*\(\s*)\s*)(?:'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"))/.source,/(\/\/.*|#.*)/.source,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^\`\\])*`)/.source,jc.source,/\b([a-zA-Z_][a-zA-Z0-9_]*)(?=\s*\()/.source,/\b(true|false|null|undefined|nil|None)\b/.source,/\b(\d+(?:\.\d+)?|0x[0-9a-fA-F]+)\b/.source],Zs=new RegExp(Kc.join("|"),"g"),Xn=new Map,qc=1e3,Qc=(t,f)=>{if(!t)return[];let g=`${f}:${t}`;if(Xn.has(g))return Xn.get(g);let M=0,y=[],b;for(Zs.lastIndex=0;(b=Zs.exec(t))!==null;){let l=b[0],w=b.index;w>M&&y.push({text:_t(t.substring(M,w))});let T,S=!1;b[1]||b[2]?T="#ce9178":b[3]?T="#9ece6a":b[4]?T="#fcfca4":b[5]?(T="#ff7b72",S=!0):b[6]?T="#b392f0":(b[7]||b[8])&&(T="#ff9e64"),y.push({text:_t(l),color:T,bold:S}),M=Zs.lastIndex}if(M<t.length&&y.push({text:_t(t.substring(M))}),Xn.size>=qc){let l=Xn.keys().next().value;Xn.delete(l)}return Xn.set(g,y),y},Mt=(t,f,g=void 0,M=void 0)=>{if(!t)return i.createElement(se,{backgroundColor:M}," ");let y=Qc(t,f);return i.createElement(se,{color:g,backgroundColor:M},y.map((b,l)=>i.createElement(se,{key:l,color:b.color||g,backgroundColor:M,bold:b.bold},b.text)))},Rs=(t,f)=>{if(!t)return null;let g=t.replace(cc,"($1/$2)");g=Yc(g);let M=g.split(dc);return i.createElement(i.Fragment,{key:f},M.map((y,b)=>{if(y.startsWith("\\")){let l=y.match(Vc);if(l){let w=l[1],T=l[2];return i.createElement(se,{key:b,bold:w==="mathbf"||w==="textbf",italic:w==="textit",underline:w==="underline",color:w==="texttt"?"cyan":void 0},T)}}return y}))},qt=i.memo(({text:t,color:f,italic:g,theme:M="Dark"})=>{if(!t)return null;let y=t.replaceAll(" "," "),b=ut(M),l=f||b.text,w=b.codeText||b.logoGradient&&b.logoGradient[0]||b.info||b.secondary||"cyan",T=y.split(ac);return i.createElement(se,{color:l,wrap:"anywhere",italic:g},T.map((S,F)=>{if(!S)return null;if(S.startsWith("```")&&S.endsWith("```")){let L=S.slice(3,-3);return i.createElement(se,{key:F,color:w},L)}if(S.startsWith("**")&&S.endsWith("**"))return i.createElement(se,{key:F,bold:!0,color:l},i.createElement(qt,{text:S.slice(2,-2),color:l,theme:M}));if(S.startsWith("*")&&S.endsWith("*"))return i.createElement(se,{key:F,italic:!0,color:l},i.createElement(qt,{text:S.slice(1,-1),color:l,italic:g,theme:M}));if(S.startsWith("`"))if(S.endsWith("`")&&S.length>1){let L=S.slice(1,-1),B=L.replace(Xc,($,U)=>U.split("/").pop().split("\\").pop().replace(_l,"#L")),E=L.includes("@[");return i.createElement(se,{key:F,color:w,bold:E},B)}else return i.createElement(se,{key:F,color:w},S.slice(1));if(S.startsWith("@[")&&S.endsWith("]")){let B=S.slice(2,-1).split("/").pop().split("\\").pop().replace(_l,"#L");return i.createElement(se,{key:F,color:w,bold:!0},B)}if(S.startsWith("\\(")&&S.endsWith("\\)")||S.startsWith("\\[")&&S.endsWith("\\]")){let L=S.slice(2,-2);return i.createElement(se,{key:F,color:"yellow"},Rs(L,F))}if(S.startsWith("$")&&S.endsWith("$")){let L=S.slice(1,-1);return i.createElement(se,{key:F,color:"yellow"},Rs(L,F))}if(S.startsWith("[")&&(S.includes("](")||S.includes("] ("))){let L=S.match(Wc);if(L){let B=L[1]||L[2],$=`\x1B]8;;${L[2]||L[1]}\x07${B}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:w,underline:!0,italic:!0},$)}}if(S.startsWith("[")&&(S.includes("][")||S.includes("] ["))){let L=S.match(Gc);if(L){let B=L[1]||L[2],$=`\x1B]8;;${L[2]||L[1]}\x07${B}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:w,underline:!0,italic:!0},$)}}return S.startsWith("http")?i.createElement(se,{key:F,color:w,underline:!0,italic:!0},S):Rs(S,F)}))}),Wl=i.memo(({buffer:t,terminalWidth:f=80,theme:g="Dark"})=>{if(t.length<2)return null;let M=ut(g),y=M.codeText||M.secondary||M.info||"cyan",b=t.map(L=>{let B=L.split("|");return B[0]!==void 0&&B[0].trim()===""&&B.shift(),B.length>0&&B[B.length-1].trim()===""&&B.pop(),B.map(E=>E.trim())}),l=b[0],w=b.slice(2),T=Math.floor(100/l.length),S=f-8,F=Math.floor(S/l.length)-2;return i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:M.borderMuted,paddingX:1,marginY:0,width:f-2},i.createElement(D,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:M.borderMuted,marginBottom:1,paddingBottom:0,width:"100%"},l.map((L,B)=>i.createElement(D,{key:B,flexBasis:`${T}%`,flexGrow:1,flexShrink:0,paddingRight:2},i.createElement(qt,{text:Bt(L,F),color:y,theme:g})))),w.map((L,B)=>i.createElement(D,{key:B,flexDirection:"row",marginBottom:B===w.length-1?0:1,width:"100%"},L.map((E,$)=>i.createElement(D,{key:$,flexBasis:`${T}%`,flexGrow:1,flexShrink:0,paddingRight:2,flexDirection:"column"},i.createElement(qt,{text:Bt(E,F),color:M.text,theme:g}))))))}),Wn=i.memo(({text:t,color:f,columns:g=80,italic:M=!1,theme:y="Dark"})=>{if(!t)return null;let b=t.replaceAll(" "," "),l=ut(y),w=f||l.text,T=b.split(`
21
- `),S=[],F=[],L=[],B=E=>{if(F.length>0&&(S.push(i.createElement(Wl,{key:`table-${E}`,buffer:[...F],terminalWidth:g,theme:y})),F=[]),L.length>0){let $=g-6,U=L.flatMap(N=>Bt(N,$).split(`
22
- `));S.push(i.createElement(D,{key:`quote-${E}`,borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:1,marginY:1,flexDirection:"column"},U.map((N,K)=>i.createElement(qt,{key:K,text:N,color:l.textMuted,italic:M,theme:y})))),L=[]}};return T.forEach((E,$)=>{let U=E.trim(),N=U.startsWith("|"),K=U.startsWith(">");if(N)L.length>0&&B($),F.push(E);else if(K)F.length>0&&B($),L.push(U.replace(/^>\s*/,""));else{if(B($),U===""){S.push(i.createElement(D,{key:$,height:1}));return}if(U==="---"||U==="***"||U==="___"){S.push(i.createElement(D,{key:$,marginY:0,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:l.borderMuted}));return}let G=U.match(/^(#{1,6})\s+(.*)/);if(G){let ue=G[1].length,Te=G[2];S.push(i.createElement(D,{key:$,marginTop:1,marginBottom:0,width:"100%"},i.createElement(se,{bold:!0,color:ue===1?"yellow":ue===2?"magenta":ue===3?l.info||"cyan":ue===4?"green":ue===5?"blue":l.text,underline:!0},Te)));return}let de=/^[\*\-\+]\s/.test(U),ge=/^\d+\.\s/.test(U),ie=E.includes("\u2588")||E.includes("\u2554")||E.includes("\u255A")||E.includes("\u2550"),oe="";if(ie)oe=E;else if(de||ge){let ue=de?" \u2022 ":U.match(/^\d+\.\s/)[0],Te=" ".repeat(ue.length),Ve=Bt(U.replace(/^[\*\-\d+\.]+\s/,""),g-(ue.length+6));oe=ue+Ve.split(`
18
+ `),Te=ue&&!E?Math.max(0,B.length-oe-U):0,me=ue&&!E?U:0,qe=g?"\u{1F3C1} FINISHED: ":"\u26A1 EXECUTING: ",et=Math.max(10,(y||80)-(b?24:14)),_e=Bt((t||"").replace(/\r?\n/g," ").trim(),et).split(`
19
+ `),ne=(t||"").replace(/\r?\n/g," ").trim();return _e.length>1&&(ne=_e[0].length>3?_e[0].slice(0,-3)+"...":_e[0]+"..."),Nt.createElement(Vo,{flexDirection:"column",borderStyle:M?"double":"single",borderLeft:!1,borderRight:!1,borderTop:!0,borderBottom:!0,borderColor:w.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:G?0:1,paddingBottom:1,marginY:G?0:1,width:y-2},Nt.createElement(Vo,{marginBottom:G?0:1,justifyContent:"space-between",width:"100%"},Nt.createElement(Vo,{flexShrink:1,paddingRight:2},Nt.createElement(Co,null,Nt.createElement(Co,{color:w.text,bold:!0},qe),Nt.createElement(Co,{color:w.text},ne))),b&&Nt.createElement(Vo,{flexShrink:0,paddingX:1},Nt.createElement(Co,{color:"green",bold:!0},"ADVANCE"))),Ie?Nt.createElement(Vo,{flexDirection:"column",marginTop:0,backgroundColor:b?void 0:w.codeBg,paddingX:1,width:"100%"},Te>0&&Nt.createElement(Vo,{marginBottom:0},Nt.createElement(Co,{color:"magenta"},"\u25B2 ...",Te," lines above (Use PageUp to scroll)...")),Nt.createElement(Co,{color:w.text},pe),me>0&&Nt.createElement(Vo,{marginTop:0},Nt.createElement(Co,{color:"magenta"},"\u25BC ...",me," lines below (Use PageDown to scroll)..."))):!g&&Nt.createElement(Vo,{marginTop:G?0:1,backgroundColor:b?void 0:w.codeBg,paddingX:1,width:"100%"},Nt.createElement(Co,{color:w.textMuted,italic:!0},"Waiting for output...")),Nt.createElement(Vo,{justifyContent:"space-between",marginTop:G?0:1},g?Nt.createElement(Co,{color:w.textMuted,italic:!0},M?"Use PgUp/PgDn to scroll \u2022 Ctrl+O to expand/collapse \u2022 TAB to unfocus.":"Press TAB to focus & scroll."):Nt.createElement(Co,{color:w.textMuted,italic:!0},M?"Use PgUp/PgDn to scroll \u2022 Ctrl+O to expand \u2022 TAB to unfocus \u2022 CTRL+C to stop.":"Press TAB to focus \u2022 CTRL+C to terminate."),Nt.createElement(Co,{color:w.textMuted,bold:!0},g?M?"\u25CF ARCHIVED (FOCUSED) ":"\u25CF ARCHIVED ":M?"\u25B6 TERMINAL FOCUSED ":"\u25CF LIVE (Press TAB to focus) ")))});import{diffWordsWithSpace as ac}from"diff";var hr=null,Vl=t=>{hr=t!==!1},Yl=()=>{if(hr===null)try{hr=Yr(bn,{})?.systemSettings?.preserveThinking!==!1}catch{hr=!0}return hr},Wl=(t,x,g)=>t,cc=(t,x=80)=>{if(!t)return null;let g=t.replaceAll(" "," "),M=x-10,y=g.trim();if(!y.includes("```"))return i.createElement(D,{width:"100%",flexDirection:"column"},i.createElement(Wn,{text:y,color:"#969696",columns:M,italic:!0}));let b=y.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return i.createElement(D,{width:"100%",flexDirection:"column"},b.map((l,T)=>{if(l.startsWith("```")){let S=l.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),F=S?S[2]:l.replace(/^```\w*\n?/,"").replace(/```$/,""),L=Bt(F.trimEnd(),M);return i.createElement(D,{key:T,flexDirection:"column",width:"100%"},L.split(`
20
+ `).map((B,E)=>i.createElement(se,{key:E,color:"cyan"},B)))}let w=l;return T>0&&(w=w.replace(/^[\r\n]+/,"")),T<b.length-1&&(w=w.replace(/[\r\n]+$/,"")),w?i.createElement(Wn,{key:T,text:w,color:"gray",columns:M,italic:!0}):null}))},dc=/(```[\s\S]*?```|`[^`\r\n]+`|@\[.*?\]|\*\*.*?\*\*|\*.*?\*|\\\(.*?\\\)|\\\[.*?\\\]|\$.*?\$|\[.*?\]\s*\(.*?\)|\[.*?\]\s*\[.*?\]|https?:\/\/[^\s]+)/g;var uc=/\\frac\s*\{([^{}]*)\}\s*\{([^{}]*)\}/g,mc=/(\\(?:mathbf|textbf|textit|underline|texttt)\{[^{}]*\})/g,xc=/^(#{1,6})\s+(.*)/,fc=/\\multiply|\\mul|\\times/g,gc=/\\div/g,hc=/\\cdot/g,pc=/\\infty/g,bc=/\\pm/g,wc=/\\leq/g,Tc=/\\geq/g,yc=/\\neq/g,Cc=/\\sqrt\s*\{([^}]+)\}/g,Mc=/\\sqrt\s*(\w+|\d+)/g,Sc=/\\alpha/g,vc=/\\beta/g,Ec=/\\theta/g,Bc=/\\pi/g,Dc=/\\approx/g,Ic=/\\Delta/g,Ac=/\\sigma/g,kc=/\\sum/g,Lc=/\\prod/g,Pc=/\\rightarrow|\\to/g,Oc=/\\left\b|\\right\b/g,Nc=/\\left\(|\\right\)/g,Fc=/\\left\[|\\right\]/g,$c=/\\\{|\\\}/g,Uc=/\\text\s*\{([^}]+)\}/g,_c=/\\text\s+(\w+)/g,Hc=/\\%/g,Xc=/\\\(|\\\)/g,Wc=/\\\[|\\\]/g,Gc=/@\[(.*?)\]/g,Gl=/:L/gi,Vc=/\[(.*?)\]\s*\((.*?)\)/,Yc=/\[(.*?)\]\s*\[(.*?)\]/,jc=/\\(\w+)\{([^{}]*)\}/,Kc=t=>t.replace(Xc,x=>x.includes("(")?"(":")").replace(Wc,x=>x.includes("[")?"[":"]").replace(fc,"\xD7").replace(gc,"\xF7").replace(hc,"\u22C5").replace(pc,"\u221E").replace(bc,"\xB1").replace(wc,"\u2264").replace(Tc,"\u2265").replace(yc,"\u2260").replace(Cc,"\u221A($1)").replace(Mc,"\u221A($1)").replace(Sc,"\u03B1").replace(vc,"\u03B2").replace(Ec,"\u03B8").replace(Bc,"\u03C0").replace(Dc,"\u2248").replace(Ic,"\u0394").replace(Ac,"\u03C3").replace(kc,"\u03A3").replace(Lc,"\u03A0").replace(Pc,"\u2192").replace(Oc,"").replace(Nc,x=>x.includes("left")?"(":")").replace(Fc,x=>x.includes("left")?"[":"]").replace($c,x=>x.includes("{")?"{":"}").replace(Uc,"$1").replace(_c,"$1").replace(Hc,"%"),qc=/\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|import|export|from|default|class|extends|new|this|typeof|instanceof|try|catch|finally|throw|async|await|yield|public|private|protected|static|void|int|float|double|char|bool|boolean|def|elif|fn|pub|mut|struct|impl|enum|type|interface|package|namespace|using|include|define|nil|None|self|lambda)\b/,Qc=[/((?<=\binclude\s+)(?:<[^>]+>|"[^"]+"))/.source,/((?<=\b(?:from|import|require\s*\(\s*)\s*)(?:'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"))/.source,/(\/\/.*|#.*)/.source,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^\`\\])*`)/.source,qc.source,/\b([a-zA-Z_][a-zA-Z0-9_]*)(?=\s*\()/.source,/\b(true|false|null|undefined|nil|None)\b/.source,/\b(\d+(?:\.\d+)?|0x[0-9a-fA-F]+)\b/.source],ei=new RegExp(Qc.join("|"),"g"),Xn=new Map,zc=1e3,Jc=(t,x)=>{if(!t)return[];let g=`${x}:${t}`;if(Xn.has(g))return Xn.get(g);let M=0,y=[],b;for(ei.lastIndex=0;(b=ei.exec(t))!==null;){let l=b[0],T=b.index;T>M&&y.push({text:_t(t.substring(M,T))});let w,S=!1;b[1]||b[2]?w="#ce9178":b[3]?w="#9ece6a":b[4]?w="#fcfca4":b[5]?(w="#ff7b72",S=!0):b[6]?w="#b392f0":(b[7]||b[8])&&(w="#ff9e64"),y.push({text:_t(l),color:w,bold:S}),M=ei.lastIndex}if(M<t.length&&y.push({text:_t(t.substring(M))}),Xn.size>=zc){let l=Xn.keys().next().value;Xn.delete(l)}return Xn.set(g,y),y},Mt=(t,x,g=void 0,M=void 0)=>{if(!t)return i.createElement(se,{backgroundColor:M}," ");let y=Jc(t,x);return i.createElement(se,{color:g,backgroundColor:M},y.map((b,l)=>i.createElement(se,{key:l,color:b.color||g,backgroundColor:M,bold:b.bold},b.text)))},ti=(t,x)=>{if(!t)return null;let g=t.replace(uc,"($1/$2)");g=Kc(g);let M=g.split(mc);return i.createElement(i.Fragment,{key:x},M.map((y,b)=>{if(y.startsWith("\\")){let l=y.match(jc);if(l){let T=l[1],w=l[2];return i.createElement(se,{key:b,bold:T==="mathbf"||T==="textbf",italic:T==="textit",underline:T==="underline",color:T==="texttt"?"cyan":void 0},w)}}return y}))},qt=i.memo(({text:t,color:x,italic:g,theme:M="Dark"})=>{if(!t)return null;let y=t.replaceAll(" "," "),b=ut(M),l=x||b.text,T=b.codeText||b.logoGradient&&b.logoGradient[0]||b.info||b.secondary||"cyan",w=y.split(dc);return i.createElement(se,{color:l,wrap:"anywhere",italic:g},w.map((S,F)=>{if(!S)return null;if(S.startsWith("```")&&S.endsWith("```")){let L=S.slice(3,-3);return i.createElement(se,{key:F,color:T},L)}if(S.startsWith("**")&&S.endsWith("**"))return i.createElement(se,{key:F,bold:!0,color:l},i.createElement(qt,{text:S.slice(2,-2),color:l,theme:M}));if(S.startsWith("*")&&S.endsWith("*"))return i.createElement(se,{key:F,italic:!0,color:l},i.createElement(qt,{text:S.slice(1,-1),color:l,italic:g,theme:M}));if(S.startsWith("`"))if(S.endsWith("`")&&S.length>1){let L=S.slice(1,-1),B=L.replace(Gc,($,U)=>U.split("/").pop().split("\\").pop().replace(Gl,"#L")),E=L.includes("@[");return i.createElement(se,{key:F,color:T,bold:E},B)}else return i.createElement(se,{key:F,color:T},S.slice(1));if(S.startsWith("@[")&&S.endsWith("]")){let B=S.slice(2,-1).split("/").pop().split("\\").pop().replace(Gl,"#L");return i.createElement(se,{key:F,color:T,bold:!0},B)}if(S.startsWith("\\(")&&S.endsWith("\\)")||S.startsWith("\\[")&&S.endsWith("\\]")){let L=S.slice(2,-2);return i.createElement(se,{key:F,color:"yellow"},ti(L,F))}if(S.startsWith("$")&&S.endsWith("$")){let L=S.slice(1,-1);return i.createElement(se,{key:F,color:"yellow"},ti(L,F))}if(S.startsWith("[")&&(S.includes("](")||S.includes("] ("))){let L=S.match(Vc);if(L){let B=L[1]||L[2],$=`\x1B]8;;${L[2]||L[1]}\x07${B}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:T,underline:!0,italic:!0},$)}}if(S.startsWith("[")&&(S.includes("][")||S.includes("] ["))){let L=S.match(Yc);if(L){let B=L[1]||L[2],$=`\x1B]8;;${L[2]||L[1]}\x07${B}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:T,underline:!0,italic:!0},$)}}return S.startsWith("http")?i.createElement(se,{key:F,color:T,underline:!0,italic:!0},S):ti(S,F)}))}),jl=i.memo(({buffer:t,terminalWidth:x=80,theme:g="Dark"})=>{if(t.length<2)return null;let M=ut(g),y=M.codeText||M.secondary||M.info||"cyan",b=t.map(L=>{let B=L.split("|");return B[0]!==void 0&&B[0].trim()===""&&B.shift(),B.length>0&&B[B.length-1].trim()===""&&B.pop(),B.map(E=>E.trim())}),l=b[0],T=b.slice(2),w=Math.floor(100/l.length),S=x-8,F=Math.floor(S/l.length)-2;return i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:M.borderMuted,paddingX:1,marginY:0,width:x-2},i.createElement(D,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:M.borderMuted,marginBottom:1,paddingBottom:0,width:"100%"},l.map((L,B)=>i.createElement(D,{key:B,flexBasis:`${w}%`,flexGrow:1,flexShrink:0,paddingRight:2},i.createElement(qt,{text:Bt(L,F),color:y,theme:g})))),T.map((L,B)=>i.createElement(D,{key:B,flexDirection:"row",marginBottom:B===T.length-1?0:1,width:"100%"},L.map((E,$)=>i.createElement(D,{key:$,flexBasis:`${w}%`,flexGrow:1,flexShrink:0,paddingRight:2,flexDirection:"column"},i.createElement(qt,{text:Bt(E,F),color:M.text,theme:g}))))))}),Wn=i.memo(({text:t,color:x,columns:g=80,italic:M=!1,theme:y="Dark"})=>{if(!t)return null;let b=t.replaceAll(" "," "),l=ut(y),T=x||l.text,w=b.split(`
21
+ `),S=[],F=[],L=[],B=E=>{if(F.length>0&&(S.push(i.createElement(jl,{key:`table-${E}`,buffer:[...F],terminalWidth:g,theme:y})),F=[]),L.length>0){let $=g-6,U=L.flatMap(N=>Bt(N,$).split(`
22
+ `));S.push(i.createElement(D,{key:`quote-${E}`,borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:1,marginY:1,flexDirection:"column"},U.map((N,K)=>i.createElement(qt,{key:K,text:N,color:l.textMuted,italic:M,theme:y})))),L=[]}};return w.forEach((E,$)=>{let U=E.trim(),N=U.startsWith("|"),K=U.startsWith(">");if(N)L.length>0&&B($),F.push(E);else if(K)F.length>0&&B($),L.push(U.replace(/^>\s*/,""));else{if(B($),U===""){S.push(i.createElement(D,{key:$,height:1}));return}if(U==="---"||U==="***"||U==="___"){S.push(i.createElement(D,{key:$,marginY:0,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:l.borderMuted}));return}let G=U.match(/^(#{1,6})\s+(.*)/);if(G){let ue=G[1].length,we=G[2];S.push(i.createElement(D,{key:$,marginTop:1,marginBottom:0,width:"100%"},i.createElement(se,{bold:!0,color:ue===1?"yellow":ue===2?"magenta":ue===3?l.info||"cyan":ue===4?"green":ue===5?"blue":l.text,underline:!0},we)));return}let de=/^[\*\-\+]\s/.test(U),ge=/^\d+\.\s/.test(U),ie=E.includes("\u2588")||E.includes("\u2554")||E.includes("\u255A")||E.includes("\u2550"),oe="";if(ie)oe=E;else if(de||ge){let ue=de?" \u2022 ":U.match(/^\d+\.\s/)[0],we=" ".repeat(ue.length),Ve=Bt(U.replace(/^[\*\-\d+\.]+\s/,""),g-(ue.length+6));oe=ue+Ve.split(`
23
23
  `).join(`
24
- `+Te)}else oe=Bt(U,g-4);S.push(i.createElement(D,{key:$,flexDirection:"column",width:"100%"},i.createElement(qt,{text:oe,color:w,italic:M,theme:y})))}}),B("final"),i.createElement(D,{flexDirection:"column",width:g-2},S)}),Gl=i.memo(({line:t,pairContent:f,parentText:g,columns:M=80,extension:y,theme:b="Dark"})=>{let l=ut(b),w=(t||"").replaceAll(" "," "),T=w.includes("[UI_CONTEXT]"),S=w.replace("[UI_CONTEXT]","");if(T&&S.includes("\u2550"))return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(se,{color:"gray"},"\u2550".repeat(Math.max(10,M-4))));let F=js(w);if(!F)return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,{color:"gray"},Bt(S,M-14))));let{isR:L,isA:B,num:E,content:$}=F,U=f&&f.replaceAll(" "," "),N=[];if(U!=null){let Te=L?$:U,Ve=L?U:$;try{N=ic(Te,Ve)}catch{N=[]}}let K=N.some(Te=>L&&Te.removed||B&&Te.added),G=!U&&(L||B),de=L?l.diffRemovalBg:B?l.diffAdditionBg:void 0,ge=L||B?L?l.diffRemovalNum:l.diffAdditionNum:l.textMuted,ie=L?l.diffRemovalPrefix:l.diffAdditionPrefix,oe=L?"-":B?"+":" ",ue=()=>{if(G){let ne=L?l.diffRemovalHighlightBg:l.diffAdditionHighlightBg;return i.createElement(D,{flexDirection:"column"},Mt(Bt($,M-15),y,void 0,ne))}if(!(L||B)||N.length===0||!K)return i.createElement(D,{flexDirection:"column"},Mt(Bt($,M-15),y,void 0,void 0));let Te=Math.max(10,M-15),Ve=Bt($,Te).split(`
25
- `),Ie=[];if(N.forEach((ne,W)=>{let re=/^\s+$/.test(ne.value);if(L){let he=N[W-1]?.removed||N[W+1]?.removed;ne.removed||re&&he?Ie.push({text:ne.value,isHighlight:!0}):ne.added||Ie.push({text:ne.value,isHighlight:!1})}else if(B){let he=N[W-1]?.added||N[W+1]?.added;ne.added||re&&he?Ie.push({text:ne.value,isHighlight:!0}):ne.removed||Ie.push({text:ne.value,isHighlight:!1})}}),Ve.length<=1)return i.createElement(se,{wrap:"wrap"},Ie.map((ne,W)=>L?ne.isHighlight?i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0)):B?ne.isHighlight?i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0))));let pe=0,we=0,me=$.match(/^(\s*)/),qe=me?me[1]:"",et=qe.substring(0,Math.min(qe.length,8)),_e=Ve.map((ne,W)=>{let re=[],he=ne;W>0&&et&&ne.startsWith(et)&&((Ie[pe]?Ie[pe].text.substring(we):"").startsWith(et)||(re.push({text:et,isHighlight:!1}),he=ne.substring(et.length)));let Se=he.length;for(;Se>0&&pe<Ie.length;){let Ee=Ie[pe],Le=Ee.text.length-we;if(Le<=0){pe++,we=0;continue}let Oe=Math.min(Se,Le);re.push({text:Ee.text.substring(we,we+Oe),isHighlight:Ee.isHighlight}),we+=Oe,Se-=Oe,we>=Ee.text.length&&(pe++,we=0)}for(;pe<Ie.length;){let Ee=Ie[pe],Le=Ee.text.substring(we);if(/^\s+$/.test(Le))pe++,we=0;else if(Le.startsWith(" ")||Le.startsWith(" ")){let Oe=0;for(;Oe<Le.length&&(Le[Oe]===" "||Le[Oe]===" ");)Oe++;we+=Oe,we>=Ee.text.length&&(pe++,we=0);break}else break}return re});if(pe<Ie.length){let ne=_e[_e.length-1];for(;pe<Ie.length;){let W=Ie[pe];ne.push({text:W.text.substring(we),isHighlight:W.isHighlight}),pe++,we=0}}return i.createElement(D,{flexDirection:"column"},_e.map((ne,W)=>i.createElement(D,{key:W},i.createElement(se,{wrap:"wrap"},ne.map((re,he)=>L?re.isHighlight?i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)):B?re.isHighlight?i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)))))))};return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(D,{width:4,flexShrink:0,justifyContent:"flex-end"},i.createElement(se,{color:ge},E)),i.createElement(D,{width:1,flexShrink:0,marginLeft:1},i.createElement(se,{color:ie},oe)),i.createElement(D,{marginLeft:1,backgroundColor:de,flexGrow:1},ue()))}),zc=i.memo(({text:t,columns:f=80,extension:g,theme:M="Dark"})=>{let y=ut(M),b=t.match(/\[DIFF_START\]([\s\S]*?)(?:\[DIFF_END\]|$)/),T=(b?b[1].trim():"").split(`
26
- `).map(F=>{let L=F.replaceAll(" "," ");return{line:L,parsed:js(L),pairContent:null}}),S=[];for(let F=0;F<T.length;F++){let L=T[F];L.parsed&&(L.parsed.isR||L.parsed.isA)?S.push(L):S.length>0&&(Ks(S),S=[])}return S.length>0&&Ks(S),i.createElement(D,{flexDirection:"column",width:f-3,marginBottom:1},i.createElement(D,{flexDirection:"column",paddingY:0,width:"100%"},i.createElement(D,{backgroundColor:y.codeBg,paddingX:1,width:"100%"},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," "))),T.map((F,L)=>i.createElement(Gl,{key:L,line:F.line,pairContent:F.pairContent,columns:f-3,extension:g,theme:M})),i.createElement(D,{backgroundColor:y.codeBg,paddingX:1,width:"100%"},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," ")))))}),es=i.memo(({text:t,columns:f=80,theme:g="Dark"})=>{if(!t)return null;let M=ut(g),y="",b=t.match(/File\s+\[(.*?)\]/i);if(b&&(y=b[1].split(".").pop().toLowerCase()),t.includes("[DIFF_START]"))return i.createElement(zc,{text:t,columns:f,extension:y,theme:g});if(t.includes("- Content Preview:")){let l=t.split("- Content Preview:"),w=l[0],T=l[1]||"",S="[SYSTEM] Check the content preview for verification [/SYSTEM]",F=T.split(S),L=(F[0]?.trim()||"").replaceAll(" "," "),B=F[1]?`${S}${F[1]}`:"",E=L.split(`
27
- `),$=String(E.length).length;return i.createElement(D,{flexDirection:"column",width:f-3},i.createElement(D,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:M.codeBorder,paddingLeft:2,paddingRight:0,width:"100%",marginBottom:1,backgroundColor:M.codeBg},i.createElement(D,{flexDirection:"column",width:"100%"},i.createElement(D,{width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,null," ")),i.createElement(D,{flexGrow:1},i.createElement(se,null," "))),E.map((U,N)=>i.createElement(D,{key:N,width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(N+1).padStart($," ")," ")),i.createElement(D,{flexGrow:1},Mt(U,y,M.text)))),i.createElement(D,{width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,null," ")),i.createElement(D,{flexGrow:1},i.createElement(se,null," "))))))}if(t.includes("```")){let l=t.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return i.createElement(D,{flexDirection:"column",width:f-3},l.map((w,T)=>{if(w.startsWith("```")){let F=w.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),L=F?F[1]:"code",B=(F?F[2]:w.replace(/^```\w*\n?/,"").replace(/```$/,"")).replaceAll(" "," "),E=B.trimEnd().split(`
28
- `),$=String(E.length).length,U=f-7-$,K=(U>5?Bt(B,U):B).trimEnd().split(`
29
- `);return i.createElement(D,{key:T,flexDirection:"column",marginY:0,paddingLeft:2,paddingRight:0,width:"100%"},i.createElement(D,null,i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",L.toUpperCase()||"TEXT")),i.createElement(D,{flexDirection:"column",width:"100%"},K.map((G,de)=>{let ie=Bt(G,Math.max(10,U)).split(`
30
- `);return i.createElement(D,{key:de,flexDirection:"column",width:"100%"},ie.map((oe,ue)=>i.createElement(D,{key:ue,width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,{color:"gray"},ue===0?String(de+1).padStart($," ")+" ":" ".repeat($+1))),i.createElement(D,{flexGrow:1},Mt(oe,L,M.text)))))})))}let S=w;return T>0&&(S=S.replace(/^[\r\n]+/,"")),T<l.length-1&&(S=S.replace(/[\r\n]+$/,"")),S?i.createElement(Wn,{key:T,text:S,columns:f-3,theme:g}):null}))}return i.createElement(Wn,{text:t,columns:f-3,theme:g})}),ts=t=>{let f=Math.round(t/1e3);if(f<=0)return"0s";let g=Math.floor(f/60),M=f%60;return g>0?`${g}m ${M}s`:`${f}s`},Vl=i.memo(({msg:t,showFullThinking:f,columns:g=80,aiProvider:M,version:y,theme:b="Dark"})=>{let l=ut(b),w=t.role==="system"&&(t.text?.includes("[DIFF_START]")||t.text?.includes("- Content Preview:")),T=t.role==="system"&&(t.text?.includes("[ACTION RESULT]: ERROR:")||t.text?.includes("[TOOL RESULT]: ERROR:"))&&!t.text?.includes("[DIFF_START]")&&(t.toolName==="update_file"||t.text?.includes("Could not find exact match")),S=t.isTerminalRecord;if(t.isHomeWarning)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.border,dimColor:!0,padding:0,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},t.text)),i.createElement(D,{paddingX:1,marginTop:0,marginBottom:0},i.createElement(se,{color:l.text},t.subText))));if(t.isLogo)return i.createElement(D,{flexDirection:"column",alignItems:"flex-start",width:"100%",marginY:1},i.createElement(se,null,dr(y,M,b)));if(t.id&&String(t.id).startsWith("welcome"))return i.createElement(D,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},i.createElement(D,{borderStyle:"round",borderColor:l.borderMuted,paddingX:3,paddingY:0},i.createElement(se,{color:l.text,bold:!0},t.text.trim())));if(t.isVisualFeedback)return i.createElement(D,{marginBottom:0,marginTop:0,paddingX:1,width:"100%"},i.createElement(se,{color:l.text},t.text));if(t.isSteeringHint||t.role==="user"&&(t.text?.startsWith("[STEERING HINT]")||t.text?.startsWith("[QUESTION]"))){let U=t.hintContent||(t.text||"").replace(/^\[(?:STEERING HINT|QUESTION)\]\s*/i,"").trim();return i.createElement(D,{flexDirection:"column",width:g-1,marginBottom:0,marginTop:0},i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2584".repeat(Math.max(1,g-1)))),i.createElement(D,{backgroundColor:l.userMsgBg,paddingX:1,paddingY:0,width:g-1,flexDirection:"column"},Bt(U.replace(/\r\n/g,`
24
+ `+we)}else oe=Bt(U,g-4);S.push(i.createElement(D,{key:$,flexDirection:"column",width:"100%"},i.createElement(qt,{text:oe,color:T,italic:M,theme:y})))}}),B("final"),i.createElement(D,{flexDirection:"column",width:g-2},S)}),Kl=i.memo(({line:t,pairContent:x,parentText:g,columns:M=80,extension:y,theme:b="Dark"})=>{let l=ut(b),T=(t||"").replaceAll(" "," "),w=T.includes("[UI_CONTEXT]"),S=T.replace("[UI_CONTEXT]","");if(w&&S.includes("\u2550"))return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(se,{color:"gray"},"\u2550".repeat(Math.max(10,M-4))));let F=qs(T);if(!F)return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,{color:"gray"},Bt(S,M-14))));let{isR:L,isA:B,num:E,content:$}=F,U=x&&x.replaceAll(" "," "),N=[];if(U!=null){let we=L?$:U,Ve=L?U:$;try{N=ac(we,Ve)}catch{N=[]}}let K=N.some(we=>L&&we.removed||B&&we.added),G=!U&&(L||B),de=L?l.diffRemovalBg:B?l.diffAdditionBg:void 0,ge=L||B?L?l.diffRemovalNum:l.diffAdditionNum:l.textMuted,ie=L?l.diffRemovalPrefix:l.diffAdditionPrefix,oe=L?"-":B?"+":" ",ue=()=>{if(G){let ne=L?l.diffRemovalHighlightBg:l.diffAdditionHighlightBg;return i.createElement(D,{flexDirection:"column"},Mt(Bt($,M-15),y,void 0,ne))}if(!(L||B)||N.length===0||!K)return i.createElement(D,{flexDirection:"column"},Mt(Bt($,M-15),y,void 0,void 0));let we=Math.max(10,M-15),Ve=Bt($,we).split(`
25
+ `),Ie=[];if(N.forEach((ne,W)=>{let re=/^\s+$/.test(ne.value);if(L){let he=N[W-1]?.removed||N[W+1]?.removed;ne.removed||re&&he?Ie.push({text:ne.value,isHighlight:!0}):ne.added||Ie.push({text:ne.value,isHighlight:!1})}else if(B){let he=N[W-1]?.added||N[W+1]?.added;ne.added||re&&he?Ie.push({text:ne.value,isHighlight:!0}):ne.removed||Ie.push({text:ne.value,isHighlight:!1})}}),Ve.length<=1)return i.createElement(se,{wrap:"wrap"},Ie.map((ne,W)=>L?ne.isHighlight?i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0)):B?ne.isHighlight?i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0)):i.createElement(i.Fragment,{key:W},Mt(ne.text,y,void 0))));let pe=0,Te=0,me=$.match(/^(\s*)/),qe=me?me[1]:"",et=qe.substring(0,Math.min(qe.length,8)),_e=Ve.map((ne,W)=>{let re=[],he=ne;W>0&&et&&ne.startsWith(et)&&((Ie[pe]?Ie[pe].text.substring(Te):"").startsWith(et)||(re.push({text:et,isHighlight:!1}),he=ne.substring(et.length)));let Se=he.length;for(;Se>0&&pe<Ie.length;){let Ee=Ie[pe],Le=Ee.text.length-Te;if(Le<=0){pe++,Te=0;continue}let Oe=Math.min(Se,Le);re.push({text:Ee.text.substring(Te,Te+Oe),isHighlight:Ee.isHighlight}),Te+=Oe,Se-=Oe,Te>=Ee.text.length&&(pe++,Te=0)}for(;pe<Ie.length;){let Ee=Ie[pe],Le=Ee.text.substring(Te);if(/^\s+$/.test(Le))pe++,Te=0;else if(Le.startsWith(" ")||Le.startsWith(" ")){let Oe=0;for(;Oe<Le.length&&(Le[Oe]===" "||Le[Oe]===" ");)Oe++;Te+=Oe,Te>=Ee.text.length&&(pe++,Te=0);break}else break}return re});if(pe<Ie.length){let ne=_e[_e.length-1];for(;pe<Ie.length;){let W=Ie[pe];ne.push({text:W.text.substring(Te),isHighlight:W.isHighlight}),pe++,Te=0}}return i.createElement(D,{flexDirection:"column"},_e.map((ne,W)=>i.createElement(D,{key:W},i.createElement(se,{wrap:"wrap"},ne.map((re,he)=>L?re.isHighlight?i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)):B?re.isHighlight?i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)):i.createElement(i.Fragment,{key:he},Mt(re.text,y,void 0)))))))};return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:M},i.createElement(D,{width:4,flexShrink:0,justifyContent:"flex-end"},i.createElement(se,{color:ge},E)),i.createElement(D,{width:1,flexShrink:0,marginLeft:1},i.createElement(se,{color:ie},oe)),i.createElement(D,{marginLeft:1,backgroundColor:de,flexGrow:1},ue()))}),Zc=i.memo(({text:t,columns:x=80,extension:g,theme:M="Dark"})=>{let y=ut(M),b=t.match(/\[DIFF_START\]([\s\S]*?)(?:\[DIFF_END\]|$)/),w=(b?b[1].trim():"").split(`
26
+ `).map(F=>{let L=F.replaceAll(" "," ");return{line:L,parsed:qs(L),pairContent:null}}),S=[];for(let F=0;F<w.length;F++){let L=w[F];L.parsed&&(L.parsed.isR||L.parsed.isA)?S.push(L):S.length>0&&(Qs(S),S=[])}return S.length>0&&Qs(S),i.createElement(D,{flexDirection:"column",width:x-3,marginBottom:1},i.createElement(D,{flexDirection:"column",paddingY:0,width:"100%"},i.createElement(D,{backgroundColor:y.codeBg,paddingX:1,width:"100%"},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," "))),w.map((F,L)=>i.createElement(Kl,{key:L,line:F.line,pairContent:F.pairContent,columns:x-3,extension:g,theme:M})),i.createElement(D,{backgroundColor:y.codeBg,paddingX:1,width:"100%"},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," ")))))}),ts=i.memo(({text:t,columns:x=80,theme:g="Dark"})=>{if(!t)return null;let M=ut(g),y="",b=t.match(/File\s+\[(.*?)\]/i);if(b&&(y=b[1].split(".").pop().toLowerCase()),t.includes("[DIFF_START]"))return i.createElement(Zc,{text:t,columns:x,extension:y,theme:g});if(t.includes("- Content Preview:")){let l=t.split("- Content Preview:"),T=l[0],w=l[1]||"",S="[SYSTEM] Check the content preview for verification [/SYSTEM]",F=w.split(S),L=(F[0]?.trim()||"").replaceAll(" "," "),B=F[1]?`${S}${F[1]}`:"",E=L.split(`
27
+ `),$=String(E.length).length;return i.createElement(D,{flexDirection:"column",width:x-3},i.createElement(D,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:M.codeBorder,paddingLeft:2,paddingRight:0,width:"100%",marginBottom:1,backgroundColor:M.codeBg},i.createElement(D,{flexDirection:"column",width:"100%"},i.createElement(D,{width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,null," ")),i.createElement(D,{flexGrow:1},i.createElement(se,null," "))),E.map((U,N)=>i.createElement(D,{key:N,width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(N+1).padStart($," ")," ")),i.createElement(D,{flexGrow:1},Mt(U,y,M.text)))),i.createElement(D,{width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,null," ")),i.createElement(D,{flexGrow:1},i.createElement(se,null," "))))))}if(t.includes("```")){let l=t.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return i.createElement(D,{flexDirection:"column",width:x-3},l.map((T,w)=>{if(T.startsWith("```")){let F=T.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),L=F?F[1]:"code",B=(F?F[2]:T.replace(/^```\w*\n?/,"").replace(/```$/,"")).replaceAll(" "," "),E=B.trimEnd().split(`
28
+ `),$=String(E.length).length,U=x-7-$,K=(U>5?Bt(B,U):B).trimEnd().split(`
29
+ `);return i.createElement(D,{key:w,flexDirection:"column",marginY:0,paddingLeft:2,paddingRight:0,width:"100%"},i.createElement(D,null,i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",L.toUpperCase()||"TEXT")),i.createElement(D,{flexDirection:"column",width:"100%"},K.map((G,de)=>{let ie=Bt(G,Math.max(10,U)).split(`
30
+ `);return i.createElement(D,{key:de,flexDirection:"column",width:"100%"},ie.map((oe,ue)=>i.createElement(D,{key:ue,width:"100%"},i.createElement(D,{width:$+2,flexShrink:0},i.createElement(se,{color:"gray"},ue===0?String(de+1).padStart($," ")+" ":" ".repeat($+1))),i.createElement(D,{flexGrow:1},Mt(oe,L,M.text)))))})))}let S=T;return w>0&&(S=S.replace(/^[\r\n]+/,"")),w<l.length-1&&(S=S.replace(/[\r\n]+$/,"")),S?i.createElement(Wn,{key:w,text:S,columns:x-3,theme:g}):null}))}return i.createElement(Wn,{text:t,columns:x-3,theme:g})}),os=t=>{let x=Math.round(t/1e3);if(x<=0)return"0s";let g=Math.floor(x/60),M=x%60;return g>0?`${g}m ${M}s`:`${x}s`},ql=i.memo(({msg:t,showFullThinking:x,columns:g=80,aiProvider:M,version:y,theme:b="Dark"})=>{let l=ut(b),T=t.role==="system"&&(t.text?.includes("[DIFF_START]")||t.text?.includes("- Content Preview:")),w=t.role==="system"&&(t.text?.includes("[ACTION RESULT]: ERROR:")||t.text?.includes("[TOOL RESULT]: ERROR:"))&&!t.text?.includes("[DIFF_START]")&&(t.toolName==="update_file"||t.text?.includes("Could not find exact match")),S=t.isTerminalRecord;if(t.isHomeWarning)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.border,dimColor:!0,padding:0,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},t.text)),i.createElement(D,{paddingX:1,marginTop:0,marginBottom:0},i.createElement(se,{color:l.text},t.subText))));if(t.isLogo)return i.createElement(D,{flexDirection:"column",alignItems:"flex-start",width:"100%",marginY:1},i.createElement(se,null,dr(y,M,b)));if(t.id&&String(t.id).startsWith("welcome"))return i.createElement(D,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},i.createElement(D,{borderStyle:"round",borderColor:l.borderMuted,paddingX:3,paddingY:0},i.createElement(se,{color:l.text,bold:!0},t.text.trim())));if(t.isVisualFeedback)return i.createElement(D,{marginBottom:0,marginTop:0,paddingX:1,width:"100%"},i.createElement(se,{color:l.text},t.text));if(t.isSteeringHint||t.role==="user"&&(t.text?.startsWith("[STEERING HINT]")||t.text?.startsWith("[QUESTION]"))){let U=t.hintContent||(t.text||"").replace(/^\[(?:STEERING HINT|QUESTION)\]\s*/i,"").trim();return i.createElement(D,{flexDirection:"column",width:g-1,marginBottom:0,marginTop:0},i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2584".repeat(Math.max(1,g-1)))),i.createElement(D,{backgroundColor:l.userMsgBg,paddingX:1,paddingY:0,width:g-1,flexDirection:"column"},Bt(U.replace(/\r\n/g,`
31
31
  `).replace(/\r/g,`
32
32
  `).replace(/\\\n/g,`
33
33
  `).replace(/\\$/,""),g-7).split(`
34
- `).map((N,K)=>i.createElement(D,{key:K,flexDirection:"row",width:"100%"},i.createElement(D,{flexShrink:0,width:2},i.createElement(se,{bold:!0,color:l.userMsgText},K===0?"\u2726":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:N,color:l.userMsgText,theme:b}))))),i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2580".repeat(Math.max(1,g-1)))))}if(T)return i.createElement(D,{marginBottom:1},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.border,paddingX:1,paddingY:0},i.createElement(se,{color:l.text,bold:!0,underline:!0},"\u2717 PATCH FAILED"),i.createElement(D,{marginTop:1},i.createElement(se,{color:l.textMuted,bold:!0},"Model generated malformed edit."))));if(t.role==="system"&&(t.text?.includes("[ACTION RESULT]")||t.text?.includes("[TOOL RESULT]"))&&!w&&!S&&!T)return null;if(t.isImageStats)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,padding:0,width:"100%"},i.createElement(D,{paddingX:1,backgroundColor:l.codeBg},i.createElement(se,{color:l.text,bold:!0},"IMAGE STATS")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"column"},t.text.split(`
35
- `).map((U,N)=>i.createElement(se,{key:N,color:l.textMuted},U)))));if(t.isAskRecord){let U=t.text.match(/Selection: (.*)/),N=U?U[1]:"No selection",K=t.text.match(/Question: (.*)/),G=K?K[1]:null,de=G==="Agent has been running for a long time. Do you want to continue execution?";return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!0,borderBottom:!0,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,width:g-2},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.success,bold:!0},de?"TURN SAFETY SYSTEM: RESOLVED":"AGENT REQUEST: RESOLVED")),G&&i.createElement(D,{paddingX:1,marginTop:1},i.createElement(se,{color:l.secondary},G)),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:0},i.createElement(se,{color:l.text},"Selection: ",i.createElement(se,{color:l.textMuted,bold:!0},N)))))}if(t.isAboutRecord)return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",border:!0,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:l.codeBg,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},"ABOUT FLUX FLOW")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1},i.createElement(se,{color:l.text},t.text))));if(t.isUpdateNotification)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",border:!0,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:l.codeBg,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},"UPDATE AVAILABLE")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1},i.createElement(es,{text:t.text,columns:g,theme:b}))));if(t.isHelpRecord){let U=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/kill",desc:"Kill a process by PID or list active processes"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/compress",desc:"Summarize and compress chat history"},{cmd:"/truncate",desc:"Truncate tool results in chat history"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase to checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat or error logs"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/btw",desc:"Send raw inquiry mid-turn"},{cmd:"/budget",desc:"Set or View budget limits"},{cmd:"/mode",desc:"Toggle Flux/Flow modes"},{cmd:"/thinking",desc:"Set AI reasoning depth"},{cmd:"/model",desc:"Switch AI model"},{cmd:"/wildcard-tooling",desc:"Use if the model lacks Tooling Capability"},{cmd:"/wildercard-tooling",desc:"Extended version of /wildcard-tooling"},{cmd:"/provider",desc:"Select AI Provider"},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/theme",desc:"Customize UI color theme"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/usage",desc:"Open graphical token usage & analytics in browser"},{cmd:"/reset",desc:"Wipe all saved FluxFlow AppData"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/docs",desc:"View documentation"},{cmd:"/fluxflow",desc:"Project management"},{cmd:"/update",desc:"Check/Install updates"}];return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,paddingX:2,paddingY:1,width:"100%"},i.createElement(se,{color:l.text,bold:!0,underline:!0},"AVAILABLE COMMANDS IN FLUX-FLOW"),i.createElement(D,{flexDirection:"column",marginTop:1},U.map((N,K)=>i.createElement(D,{key:K,flexDirection:"row"},i.createElement(D,{width:20},i.createElement(se,{color:l.text,bold:!0},N.cmd)),i.createElement(se,{color:l.textMuted}," - ",N.desc))))))}if(t.isTerminalRecord){let U=t.text.match(/COMMAND: (.*)/),N=t.text.match(/PTY: (true|false)/),K=t.text.match(/OUTPUT: ([\s\S]*)/),G=U?U[1]:"No Command",de=N?N[1]==="true":!1,ge=K?K[1]:"";return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(Rr,{command:G,output:ge,completed:!0,columns:g,isPty:de,theme:b}))}let[L,B]=i.useState(!t.isStreaming),E=i.useMemo(()=>(ml(t.text,t.role)||"").replaceAll(" "," "),[t.text,t.role]);i.useEffect(()=>{t.isStreaming&&B(!1)},[t.id]);let $=i.useMemo(()=>t.role==="think"&&!f?"Thinking...":t.isStreaming?E:E.trimEnd(),[E,t.role,f,t.isStreaming]);return t.role==="think"&&!Xl()||t.role==="agent"&&$.trim()===""?null:i.createElement(D,{marginBottom:(t.role==="think"||t.role==="user"||t.role==="agent",0),marginTop:(t.role==="think"||t.role==="user"||t.role==="agent",0),flexDirection:"column",flexShrink:0,width:"100%",flexGrow:1},t.role==="user"?i.createElement(D,{flexDirection:"column",width:g-1},i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2584".repeat(Math.max(1,g-1)))),i.createElement(D,{backgroundColor:l.userMsgBg,paddingX:1,paddingY:0,width:g-1,flexDirection:"column"},Bt($.replace(/\r\n/g,`
34
+ `).map((N,K)=>i.createElement(D,{key:K,flexDirection:"row",width:"100%"},i.createElement(D,{flexShrink:0,width:2},i.createElement(se,{bold:!0,color:l.userMsgText},K===0?"\u2726":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:N,color:l.userMsgText,theme:b}))))),i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2580".repeat(Math.max(1,g-1)))))}if(w)return i.createElement(D,{marginBottom:1},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.border,paddingX:1,paddingY:0},i.createElement(se,{color:l.text,bold:!0,underline:!0},"\u2717 PATCH FAILED"),i.createElement(D,{marginTop:1},i.createElement(se,{color:l.textMuted,bold:!0},"Model generated malformed edit."))));if(t.role==="system"&&(t.text?.includes("[ACTION RESULT]")||t.text?.includes("[TOOL RESULT]"))&&!T&&!S&&!w)return null;if(t.isImageStats)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,padding:0,width:"100%"},i.createElement(D,{paddingX:1,backgroundColor:l.codeBg},i.createElement(se,{color:l.text,bold:!0},"IMAGE STATS")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"column"},t.text.split(`
35
+ `).map((U,N)=>i.createElement(se,{key:N,color:l.textMuted},U)))));if(t.isAskRecord){let U=t.text.match(/Selection: (.*)/),N=U?U[1]:"No selection",K=t.text.match(/Question: (.*)/),G=K?K[1]:null,de=G==="Agent has been running for a long time. Do you want to continue execution?";return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!0,borderBottom:!0,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,width:g-2},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.success,bold:!0},de?"TURN SAFETY SYSTEM: RESOLVED":"AGENT REQUEST: RESOLVED")),G&&i.createElement(D,{paddingX:1,marginTop:1},i.createElement(se,{color:l.secondary},G)),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:0},i.createElement(se,{color:l.text},"Selection: ",i.createElement(se,{color:l.textMuted,bold:!0},N)))))}if(t.isAboutRecord)return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",border:!0,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:l.codeBg,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},"ABOUT FLUX FLOW")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1},i.createElement(se,{color:l.text},t.text))));if(t.isUpdateNotification)return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",border:!0,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:l.codeBg,width:"100%"},i.createElement(D,{paddingX:1},i.createElement(se,{color:l.text,bold:!0},"UPDATE AVAILABLE")),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:1},i.createElement(ts,{text:t.text,columns:g,theme:b}))));if(t.isHelpRecord){let U=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/kill",desc:"Kill a process by PID or list active processes"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/compress",desc:"Summarize and compress chat history"},{cmd:"/truncate",desc:"Truncate tool results in chat history"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase to checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat or error logs"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/btw",desc:"Send raw inquiry mid-turn"},{cmd:"/budget",desc:"Set or View budget limits"},{cmd:"/mode",desc:"Toggle Flux/Flow modes"},{cmd:"/thinking",desc:"Set AI reasoning depth"},{cmd:"/model",desc:"Switch AI model"},{cmd:"/wildcard-tooling",desc:"Use if the model lacks Tooling Capability"},{cmd:"/wildercard-tooling",desc:"Extended version of /wildcard-tooling"},{cmd:"/provider",desc:"Select AI Provider"},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/theme",desc:"Customize UI color theme"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/usage",desc:"Open graphical token usage & analytics in browser"},{cmd:"/reset",desc:"Wipe all saved FluxFlow AppData"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/docs",desc:"View documentation"},{cmd:"/fluxflow",desc:"Project management"},{cmd:"/update",desc:"Check/Install updates"}];return i.createElement(D,{marginBottom:1,paddingX:1,width:"100%"},i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,paddingX:2,paddingY:1,width:"100%"},i.createElement(se,{color:l.text,bold:!0,underline:!0},"AVAILABLE COMMANDS IN FLUX-FLOW"),i.createElement(D,{flexDirection:"column",marginTop:1},U.map((N,K)=>i.createElement(D,{key:K,flexDirection:"row"},i.createElement(D,{width:20},i.createElement(se,{color:l.text,bold:!0},N.cmd)),i.createElement(se,{color:l.textMuted}," - ",N.desc))))))}if(t.isTerminalRecord){let U=t.text.match(/COMMAND: (.*)/),N=t.text.match(/PTY: (true|false)/),K=t.text.match(/OUTPUT: ([\s\S]*)/),G=U?U[1]:"No Command",de=N?N[1]==="true":!1,ge=K?K[1]:"";return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(es,{command:G,output:ge,completed:!0,columns:g,isPty:de,theme:b}))}let[L,B]=i.useState(!t.isStreaming),E=i.useMemo(()=>(hl(t.text,t.role)||"").replaceAll(" "," "),[t.text,t.role]);i.useEffect(()=>{t.isStreaming&&B(!1)},[t.id]);let $=i.useMemo(()=>t.role==="think"&&!x?"Thinking...":t.isStreaming?E:E.trimEnd(),[E,t.role,x,t.isStreaming]);return t.role==="think"&&!Yl()||t.role==="agent"&&$.trim()===""?null:i.createElement(D,{marginBottom:(t.role==="think"||t.role==="user"||t.role==="agent",0),marginTop:(t.role==="think"||t.role==="user"||t.role==="agent",0),flexDirection:"column",flexShrink:0,width:"100%",flexGrow:1},t.role==="user"?i.createElement(D,{flexDirection:"column",width:g-1},i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2584".repeat(Math.max(1,g-1)))),i.createElement(D,{backgroundColor:l.userMsgBg,paddingX:1,paddingY:0,width:g-1,flexDirection:"column"},Bt($.replace(/\r\n/g,`
36
36
  `).replace(/\r/g,`
37
37
  `).replace(/\\\n/g,`
38
38
  `).replace(/\\$/,""),g-7).split(`
39
- `).map((U,N)=>i.createElement(D,{key:N,flexDirection:"row",width:"100%"},i.createElement(D,{flexShrink:0,width:2},i.createElement(se,{bold:!0,color:l.userMsgText},N===0?">":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:U,color:t.color||l.userMsgText,theme:b}))))),i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2580".repeat(Math.max(1,g-1))))):t.role==="think"?i.createElement(D,{flexDirection:"column",marginTop:0,marginBottom:0,paddingX:0,width:"100%"},t.isStreaming&&!t.duration?i.createElement(se,{bold:!0,color:l.text},"\u2727 Thinking..."):i.createElement(se,{bold:!0,color:l.text},"\u2726 Thought",t.duration?i.createElement(se,{color:l.textMuted}," for ",i.createElement(se,{bold:!0,color:l.text},ts(t.duration))):"s..."),i.createElement(D,{borderStyle:"single",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:2,paddingTop:0,paddingBottom:0,flexDirection:"column",width:"100%"},lc($,g))):i.createElement(D,{flexDirection:"column",paddingX:1,marginTop:0,width:"100%"},i.createElement(es,{text:$.replace(/ \|\n\n/g,` |
40
- `),columns:g,theme:b}),t.memoryUpdated&&i.createElement(D,{marginTop:1,width:"100%"},i.createElement(se,{color:l.text,italic:!0},"[Memory Updated]")),t.role==="agent"&&t.workedDuration?i.createElement(D,{marginTop:1,marginBottom:2,width:"100%"},i.createElement(se,{color:l.textMuted},"["),i.createElement(se,{color:l.textMuted},"Worked for ",i.createElement(se,{bold:!0,color:l.text},ts(t.workedDuration))),i.createElement(se,{color:l.textMuted},"]")):null))}),os=i.memo(({block:t,columns:f=80,showFullThinking:g,aiProvider:M,version:y,theme:b="Dark"})=>{let l=ut(b),{msg:w,type:T,text:S,isStreamingMsg:F,workedDuration:L}=t;if((T==="think-header"||T==="think-line"||T==="think-footer-padding")&&!Xl())return null;if(T==="chunk")return i.createElement(D,{flexDirection:"column",width:"100%"},t.blocks.map(B=>i.createElement(os,{key:B.key,block:B,columns:f,showFullThinking:g,aiProvider:M,version:y,theme:b})));if(T==="full-message")return i.createElement(Vl,{msg:w,showFullThinking:g,columns:f,aiProvider:M,version:y,theme:b});if(T==="think-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},(()=>{let B=t.duration||w?.duration||L;return F&&!B?i.createElement(se,{bold:!0,color:l.text},"\u2727 Thinking..."):i.createElement(se,{bold:!0,color:l.text},"\u2726 Thought",B?i.createElement(se,{color:l.textMuted}," for ",i.createElement(se,{bold:!0,color:l.text},ts(B)),"..."):"s...")})(),g&&i.createElement(D,{flexDirection:"row",width:"100%"},i.createElement(se,{color:l.textMuted},"\u2502 ")));if(T==="think-line"){if(!g)return null;if(!S||S.trim()==="")return i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 "));let B=Ul(S,F,t.isActiveBlock)?.replaceAll(" "," ")||"";return i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 "),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:B,color:l.textMuted,italic:!0,theme:b})))}if(T==="think-footer-padding")return g?i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 ")):null;if(T==="agent-line"){if(!S||S.trim()==="")return i.createElement(D,{height:1});let B=Ul(S,F,t.isActiveBlock)?.replaceAll(" "," ")||"",E=B.trim();if(E==="---"||E==="***"||E==="___")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginY:0},i.createElement(D,{borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:l.borderMuted}));let $=E.match(uc);if($){let K=$[1].length,G=$[2],ge=["yellow",l.secondary||"magenta",l.info||"cyan","green","blue",l.text][K-1]||l.text;return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},i.createElement(se,{bold:!0,color:ge,underline:!0},i.createElement(qt,{text:G,color:ge,theme:b})))}if(E.startsWith(">")){let K=E.replace(/^>\s*/,"");return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(D,{borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:1,marginY:0},i.createElement(qt,{text:K,color:l.textMuted,italic:!0,theme:b})))}let U=/^[\*\-\+]\s/.test(E),N=/^\d+\.\s/.test(E);if(U||N){let K=U?" \u2022 ":E.match(/^\d+\.\s/)[0],G=E.replace(/^[\*\-\+\d+\.]+\s*/,"");return i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%"},i.createElement(se,{color:l.info||l.textMuted},K),i.createElement(D,{flexGrow:1},i.createElement(qt,{text:G,color:l.text,theme:b})))}return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(qt,{text:B,color:l.text,theme:b}))}if(T==="table-header"||T==="table-row"){let B=T==="table-header",E=l.codeText||l.secondary||l.info||"cyan",$=t.colHeaders||[],U=B?$:t.cells||[],N=Math.max(1,t.colCount||$.length||U.length||1),K=Array.from({length:N},(pe,we)=>U[we]||""),G=Math.max(20,(f||80)-8),de=N>=4,ge=/^(#|no\.?|num\.?|status|state|type|ok|done|✔|✘|active)$/i,ie=[],oe=0,ue=0;for(let pe=0;pe<N;pe++){let we=($[pe]||"").trim();if(de&&(ge.test(we)||we==="#")){let me=Math.max(we.length+4,8);ie.push(me),oe+=me}else ie.push(null),ue++}let Te=Math.max(ue*12,G-oe),Ve=ue>0?Math.max(10,Math.floor(Te/ue)):10;for(let pe=0;pe<N;pe++)ie[pe]===null&&(ie[pe]=Ve);let Ie=ie.reduce((pe,we)=>pe+we,0);return B?i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:1},i.createElement(D,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:l.borderMuted,paddingBottom:0,width:Ie},$.map((pe,we)=>{let me=ie[we]||6;return i.createElement(D,{key:we,width:me,paddingRight:1,flexDirection:"column"},i.createElement(qt,{text:Bt(pe,Math.max(2,me-1)),color:E,theme:b}))}))):i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%",marginBottom:1},K.map((pe,we)=>{let me=ie[we]||6;return i.createElement(D,{key:we,width:me,paddingRight:1,flexDirection:"column"},i.createElement(qt,{text:Bt(pe,Math.max(2,me-1)),color:l.text,theme:b}))}))}if(T==="table-close")return i.createElement(D,{height:0});if(T==="table")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(Wl,{buffer:S.split(`
41
- `),terminalWidth:f,theme:b}));if(T==="diff-line"){let{isFirstLine:B,isLastLine:E}=t,$=(U=!1)=>i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:f,marginBottom:U?1:0},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," ")));return i.createElement(D,{flexDirection:"column"},B&&$(!1),i.createElement(Gl,{line:S,pairContent:t.pairContent,parentText:void 0,columns:f,theme:b}),E&&$(!0))}if(T==="code-fence-open"){let B={paddingLeft:2,width:"100%"};return i.createElement(D,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},i.createElement(D,{flexDirection:"row",...B},i.createElement(se,null," ")),i.createElement(D,{flexDirection:"row",...B},i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",(S||"TEXT").toUpperCase())))}if(T==="code-line"){let{lineNum:B,lang:E}=t,$=f-12,U=(S||"").replaceAll(" "," "),K=Bt(U,Math.max(10,$)).split(`
42
- `);return i.createElement(D,{flexDirection:"column",width:"100%"},K.map((G,de)=>i.createElement(D,{key:de,flexDirection:"row",borderColor:l.codeBorder,paddingLeft:2,width:"100%"},i.createElement(D,{width:5,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},de===0?String(B).padStart(4," ")+" ":" ")),i.createElement(D,{flexGrow:1},Mt(G,E,l.text)))))}if(T==="code-fence-close")return i.createElement(D,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},i.createElement(se,null," "));if(T==="write-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:f},i.createElement(Wn,{text:S,columns:f,theme:b}));if(T==="write-line"){let{gutterWidth:B,lineNum:E,isFirstLine:$,isLastLine:U,extension:N,wrappedLines:K}=t,G=(de=!1)=>i.createElement(D,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:l.codeBg,marginBottom:de?1:0},i.createElement(D,{width:B+2,flexShrink:0},i.createElement(se,null," ".repeat(B+2))),i.createElement(D,{flexGrow:1},i.createElement(se,null," ")));return i.createElement(D,{flexDirection:"column"},$&&G(!1),i.createElement(D,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:l.codeBg},i.createElement(D,{width:B+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(E).padStart(B," ")," ")),i.createElement(D,{flexGrow:1,flexDirection:"column"},(K||[S]).map((de,ge)=>i.createElement(D,{key:ge},Mt((de||"").replaceAll(" "," "),N,l.text))))),U&&G(!0))}return T==="write-footer"?i.createElement(D,{flexDirection:"column",paddingX:1,width:f,marginTop:1,marginBottom:1},i.createElement(Wn,{text:S,columns:f,theme:b})):T==="worked-duration"?i.createElement(D,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},i.createElement(se,{color:l.textMuted},"["),i.createElement(se,{color:l.textMuted},"Worked for ",i.createElement(se,{bold:!0,color:l.text},ts(L))),i.createElement(se,{color:l.textMuted},"]")):null}),Bu=i.memo(({messages:t,showFullThinking:f,columns:g=80,aiProvider:M,version:y,theme:b="Dark"})=>i.createElement(D,{flexDirection:"column",width:"100%"},t.map((l,w)=>i.createElement(Vl,{key:l.id||w,msg:l,showFullThinking:f,columns:g,aiProvider:M,version:y,theme:b}))));import It from"react";import{Box as en,Text as Do}from"ink";import{useState as pr,useEffect as br,useRef as ns}from"react";var Tr=null;function Yl(){Tr&&Tr()}var Jc=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let f=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let g=0;g<f.length-1;g++){let M=f[g],y=f[g+1];if(t>=M.t&&t<=y.t){let b=(t-M.t)/(y.t-M.t);b=b*b*(3-2*b);let l=Math.round(M.r+(y.r-M.r)*b),w=Math.round(M.g+(y.g-M.g)*b),T=Math.round(M.b+(y.b-M.b)*b);return`#${((1<<24)+(l<<16)+(w<<8)+T).toString(16).slice(1)}`}}return"#ff0000"},Zc=It.memo(({mode:t,thinkingLevel:f,tokens:g="0.0k",tokensTotal:M="0.0k",cachedTokens:y=0,promptTokens:b=0,chatCacheTokenLatest:l=0,cacheCalculateMode:w="Session",chatId:T="NEW-SESSION",isMemoryEnabled:S=!0,apiTier:F="Free",aiProvider:L="Google",activeModel:B="",isProcessing:E=!1,lastChunkTime:$=0,theme:U="Dark",wps:N=0,showTPMEstimate:K=!1})=>{let G=ut(U),de="",[ge,ie]=pr(0),[oe,ue]=pr(0),[Te,Ve]=pr("MB"),[Ie,pe]=pr("green"),[we,me]=pr(0),qe=ns([]),et=ns(370),_e=ns([]),ne=ns($);br(()=>{ne.current=$},[$]),br(()=>{if(!E){_e.current=[];return}if(N>0){let re=_e.current;re.push(N),re.length>3&&re.shift()}},[E,N,$]),br(()=>{if(!E){me(0);return}let re=setInterval(()=>{let he=ne.current,Se=he>0?Date.now()-he:0;if(he>0&&Se>=1e3)_e.current=[],me(0);else if(he>0&&Se>500){_e.current.length>0&&_e.current.shift();let Ee=_e.current;if(Ee.length>0){let Le=Ee.reduce((Oe,Ge)=>Oe+Ge,0);me(Math.round(Le/Ee.length))}else me(0)}else{let Ee=_e.current;if(Ee.length>0){let Le=Ee.reduce((Oe,Ge)=>Oe+Ge,0);me(Math.round(Le/Ee.length))}else N>0&&me(Math.round(N))}},750);return()=>clearInterval(re)},[E]),br(()=>{if(!E){qe.current=[];return}if($>0){let Se=qe.current;(Se.length===0||Se[Se.length-1]!==$)&&(Se.push($),Se.length>10&&Se.shift())}let re=()=>{if(!$){pe("#00a564");return}let Se=qe.current,Ee=0;if(Se.length>1){let Pe=0;for(let ee=1;ee<Se.length;ee++)Pe+=Se[ee]-Se[ee-1];Ee=Pe/(Se.length-1)}let Le=Date.now()-$,Ge=Le>=2500,yt=!Ge&&Ee>0?Math.min(Le,Ee*3):Le,Be=Math.max(Ee,yt),ye=Ge?.4:.2;et.current=et.current*(1-ye)+Be*ye,pe(Jc(et.current))};re();let he=setInterval(re,100);return()=>clearInterval(he)},[E,$]);let W=()=>{let re=process.memoryUsage(),he=re.heapTotal/(1024*1024)>=1024,Se=he?"GB":"MB",Ee=(Le,Oe)=>{let Ge=Le/(1048576*(Oe?1024:1));return Oe?parseFloat(Ge.toFixed(2)):Math.round(Ge)};Ve(Se),ue(Ee(re.heapTotal,he)),ie(Ee(re.heapUsed,he))};return br(()=>{Tr=W,W();let re=setInterval(()=>{W()},6e4);return()=>{clearInterval(re),Tr===W&&(Tr=null)}},[]),It.createElement(en,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},It.createElement(en,null,It.createElement(en,{marginRight:1},It.createElement(Do,{color:G.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),It.createElement(Do,{color:G.textMuted,dimColor:!0},"\u2503 "),It.createElement(en,null,It.createElement(Do,{color:G.text,italic:!0},ul(process.cwd(),35)))),It.createElement(en,null,E&&!K?It.createElement(en,null,It.createElement(Do,{color:Ie},"\u25CF ")):null,E&&K&&It.createElement(It.Fragment,null,It.createElement(Do,{color:G.textMuted},"~",we," tok/s"),It.createElement(Do,{color:G.textMuted,dimColor:!0}," \u2503")),g>0&&It.createElement(It.Fragment,null,It.createElement(en,{marginX:1},It.createElement(Do,{color:G.text},Dt(M)," tok",(()=>{let re=0;if(w==="Current")re=typeof l=="number"?l:0;else{let he=typeof b=="number"?b:0,Se=typeof y=="number"?y:0;re=he>0?Se/he*100:0}return re<1?null:It.createElement(Do,{color:G.success||"green",dimColor:!0}," [",re.toFixed(0),"% cached]")})())),It.createElement(Do,{color:G.textMuted,dimColor:!0},"\u2503")),It.createElement(en,{marginLeft:1},It.createElement(Do,{color:G.textMuted,bold:!0},ge," ",Te))))}),jl=Zc;import mt,{useState as rs,useMemo as Rc,useEffect as Kl}from"react";import{Box as Qt,Text as zt,useInput as ed}from"ink";import td from"ink-select-input";var od=({label:t,isSelected:f,theme:g="Dark"})=>{let M=ut(g),y=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return mt.createElement(Qt,{marginTop:y?1:0,backgroundColor:f?M.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(zt,{color:f?M.text:M.textMuted,bold:f},f?"\u276F ":" ",t))},nd=8;function At({title:t,subtitle:f,items:g=[],onSelect:M,theme:y="Dark",searchable:b=!1,maxVisible:l=nd}){let w=ut(y),[T,S]=rs(""),[F,L]=rs(0),[B,E]=rs("list"),$=Rc(()=>{if(!b||!T.trim())return g;let ge=T.toLowerCase().trim();return g.filter(ie=>ie.label&&ie.label.toLowerCase().includes(ge))},[g,T,b]);Kl(()=>{L(0)},[T]);let[U,N]=rs(0);Kl(()=>{N(ge=>$.length<=l?0:F<ge?F:F>=ge+l?F-l+1:ge)},[F,$.length,l]),ed((ge,ie)=>{if(b){if(ie.upArrow){E("list"),L(oe=>$.length===0?0:oe>0?oe-1:$.length-1);return}if(ie.downArrow){E("list"),L(oe=>$.length===0?0:oe<$.length-1?oe+1:0);return}if(ie.return){$.length>0&&$[F]&&M($[F]);return}if(ie.escape){if(T)S(""),E("list"),L(0);else{let oe=g.find(ue=>ue.value==="Back"||ue.label==="Back"||ue.value==="Cancel"||ue.label==="Cancel");oe&&M(oe)}return}if(ie.backspace||ie.delete){E("search"),S(oe=>oe.slice(0,-1));return}if(ge&&!ie.ctrl&&!ie.meta&&!ie.tab){E("search"),S(oe=>oe+ge);return}}},{isActive:b});let K=$.length,G=U;K<=l?G=0:G=Math.max(0,Math.min(U,K-l));let de=$.slice(G,G+l);return b?mt.createElement(Qt,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},mt.createElement(Qt,{paddingX:1,paddingY:0,marginBottom:0,flexDirection:"row",justifyContent:"space-between"},t?mt.createElement(zt,{color:w.text,bold:!0},typeof t=="string"?t.toUpperCase():t):mt.createElement(Qt,null),K>0&&mt.createElement(zt,{color:w.textMuted},F+1,"/",K)),f&&mt.createElement(Qt,{paddingX:1,marginBottom:0},mt.createElement(zt,{color:w.textMuted,italic:!0}," ",f)),mt.createElement(Qt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},mt.createElement(zt,{color:B==="search"?w.primary||"cyan":w.textMuted,bold:B==="search"},"\u{1F50D} Search:"),mt.createElement(zt,{color:w.text,bold:!0}," ",T),B==="search"?mt.createElement(zt,{color:w.primary||"cyan"},"\u2588"):T?null:mt.createElement(zt,{color:w.textMuted,italic:!0}," (type to search...)")),mt.createElement(Qt,{flexDirection:"column",width:"100%"},$.length===0?mt.createElement(Qt,{paddingX:1,marginY:0},mt.createElement(zt,{color:w.warning||"yellow",italic:!0}," No matching items found")):de.map((ge,ie)=>{let oe=G+ie,ue=oe===F,Te=ge.label==="Cancel"||ge.label==="Back"||ge.label.toLowerCase().includes("exit")||ge.label.toLowerCase().includes("back");return mt.createElement(Qt,{key:ge.value??ge.label??oe,marginTop:Te?1:0,backgroundColor:ue?w.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(zt,{color:ue?w.text:w.textMuted,bold:ue},ue?"\u276F ":" ",ge.label))})),mt.createElement(Qt,{paddingX:1,marginTop:1},mt.createElement(zt,{color:w.textMuted,italic:!0},B==="search"?"(Type letters to search \u2022 Arrows for list mode \u2022 Enter to select)":"(Arrows to navigate \u2022 Type letters to search \u2022 Enter to select)"))):mt.createElement(Qt,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&mt.createElement(Qt,{paddingX:1,paddingY:0,marginBottom:f?0:1,flexDirection:"row",justifyContent:"space-between"},mt.createElement(zt,{color:w.text,bold:!0},typeof t=="string"?t.toUpperCase():t),g.length>l&&mt.createElement(zt,{color:w.textMuted,italic:!0},g.length," options")),f&&mt.createElement(Qt,{paddingX:1,marginBottom:1},mt.createElement(zt,{color:w.textMuted,italic:!0}," ",f)),mt.createElement(Qt,{flexDirection:"column",width:"100%"},mt.createElement(td,{items:g,onSelect:M,limit:l,itemComponent:ge=>mt.createElement(od,{...ge,theme:y}),indicatorComponent:()=>null})),mt.createElement(Qt,{paddingX:1,marginTop:1},mt.createElement(zt,{color:w.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import I,{useState as Ht,useEffect as wr}from"react";import{Box as Fe,Text as z,useInput as rd}from"ink";import sd from"ink-text-input";import id from"v8";import ql from"os";var Io=[...Object.keys(xl),"Mystery"],Ao=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Personalization",desc:"Manage system context & agent's memory"},{id:"secondaryModels",label:"Secondary Models",desc:"Sub-agents & auto-completion models"},{id:"other",label:"Miscellaneous",desc:"Miscellaneous preferences"},{id:"providers",label:"Providers",desc:"Configure AI models"},{id:"security",label:"Security",desc:"Configure permissions & data safety"},{id:"updater",label:"Updater",desc:"Manage application updates"},{id:"exit",label:"Exit Settings",desc:"Return to chat view"}],Ql=t=>{let f=t.autoApproveCommands||"",g=t.autoDisallowCommands||"",M=t.alwaysAskCommands||"",y=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&f===""&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&M==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,b=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&M==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,l=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g===""&&M==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&t.autoApproveGit===!0;return y?"Strict":b?"Balanced":l?"Autonomous":t.sandboxPreset||"Custom"},yr=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function ss({systemSettings:t,setSystemSettings:f,apiTier:g,setActiveView:M,setInputConfig:y,saveSettings:b,quotas:l,setMessages:w,aiProvider:T,autoCompletion:S,setAutoCompletion:F,profileData:L,setProfileData:B,initialSelectingTheme:E=!1,onCloseTheme:$=null,setProviderReturnView:U=null}){let N=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",K=Io.indexOf(N),[G,de]=Ht("categories"),[ge,ie]=Ht(0),[oe,ue]=Ht(0),[Te,Ve]=Ht("Sandbox"),[Ie,pe]=Ht(null),[we,me]=Ht(""),[qe,et]=Ht(E),[_e,ne]=Ht(K>=0?K:0),[W,re]=Ht(t.theme||"Dark"),[he,Se]=Ht(!1),[Ee,Le]=Ht("subAgent"),[Oe,Ge]=Ht(0),[yt,Be]=Ht(0),[ye,Pe]=Ht(""),[ee,Ye]=Ht("list"),[Qe,Ct]=Ht({});wr(()=>{(async()=>{let p=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],k={};for(let ve of p)try{await Ro(ve)&&(k[ve]=!0)}catch{}Ct(k)})()},[]);let P=I.useMemo(()=>{let ae=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],k=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",ve=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:k,value:"ENV",isHeader:!1}],He=l?.providerTiers?.[T]||g||"Free",ct=Zo(T,He)||[];ct.length>0&&(ve.push({label:`\u2500\u2500 ${T.toUpperCase()}${He!=="Free"?` (${He})`:""} \u2500\u2500`,isHeader:!0}),ct.forEach(ot=>{let Xe=typeof ot=="string"?ot:ot.cmd||ot.name||ot.id||String(ot);Xe&&!Xe.trim().startsWith("---")&&!Xe.startsWith(`
43
- ---`)&&ve.push({label:Xe,value:Xe,isHeader:!1,provider:T})}));for(let ot of ae)if(ot!==T&&Qe[ot]){let Xe=l?.providerTiers?.[ot]||"Free",mo=Zo(ot,Xe)||[];mo.length>0&&(ve.push({label:`\u2500\u2500 ${ot.toUpperCase()}${Xe!=="Free"?` (${Xe})`:""} \u2500\u2500`,isHeader:!0}),mo.forEach(ze=>{let xo=typeof ze=="string"?ze:ze.cmd||ze.name||ze.id||String(ze);xo&&!xo.trim().startsWith("---")&&!xo.startsWith(`
44
- ---`)&&ve.push({label:xo,value:xo,isHeader:!1,provider:ot})}))}return ve},[T,g,l,Qe]),dt=I.useMemo(()=>{if(!ye.trim())return P;let ae=ye.trim().toLowerCase(),p=[],k=null;for(let ve of P)ve.isHeader?k=ve:(ve.label.toLowerCase().includes(ae)||ve.value&&ve.value.toLowerCase().includes(ae))&&(k&&!p.includes(k)&&p.push(k),p.push(ve));return p},[P,ye]);wr(()=>{if(he){let ae=dt.findIndex(p=>!p.isHeader);Ge(ae>=0?ae:0),Be(0)}},[ye]),wr(()=>{if(he){if(dt.length===0){Ge(0),Be(0);return}if(Oe>=dt.length||dt[Oe]?.isHeader){let ae=dt.findIndex(p=>!p.isHeader);Ge(ae>=0?ae:0)}}},[dt,he]);let[Kn,Mr]=Ht(0),[ln,fs]=Ht(0),[an,gs]=Ht("MB"),[nt,Jt]=Ht(!1);wr(()=>{let ae=!1;return import("./exec_command-7AO6AUGQ.js").then(p=>{ae||Jt(!!p.isPtyAvailable)}).catch(()=>{}),()=>{ae=!0}},[]),wr(()=>{let ae=id.getHeapStatistics().heap_size_limit,p=ae>=1024*1024*1024,k=p?"GB":"MB",ve=p?1024*1024*1024:1024*1024;fs(parseFloat((ae/ve).toFixed(2))),gs(k);let He=()=>{let mo=process.memoryUsage().rss/ve,ze=p?parseFloat(mo.toFixed(2)):Math.round(mo);Mr(ze)};He();let ct=setInterval(()=>{He()},3e4);return()=>clearInterval(ct)},[]);let Sr=ae=>{switch(ae){case"providers":{let p=[{label:"Current Provider",value:"aiProvider",status:T==="c_openai"?"Custom (OpenAI)":T}];return T==="Ollama"&&p.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(T==="c_openai"||T==="Custom (OpenAI)")&&(p.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),p.push({label:"API Key (if needed)",value:"customOpenAIKey",status:Qe.c_openai?"Set":"None"})),p}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Base Personality",value:"profilePreset",status:L?.preset||"Default"},{label:"Nickname",value:"profileNickname",status:L?.nickname||"None"},{label:"Custom Instructions",value:"profileInstructions",status:yr(L?.instructions)},{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Ql(t),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:t.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:t.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:t.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:yr(t.alwaysAskCommands),section:"Sandbox"},{label:"Always Ask Files/Paths",value:"alwaysAskFiles",status:yr(t.alwaysAskFiles||".env, .env.*, *.env"),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:yr(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:yr(t.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:t.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Advanced Recovery [EXPERIMENTAL]",value:"advanceRollback",status:t.advanceRollback?"ON":"OFF",section:"Other"},{label:"Auto-Delete History",value:"autoDelete",status:t.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:t.useExternalData?"ON":"OFF",section:"Other"},{label:"Agent Clipboard Context",value:"clipboardContext",status:t.clipboardContext?"ON":"OFF",section:"Other"}].filter(ve=>ve.section.toLowerCase()===Te.toLowerCase());case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:t.autoUpdate?"ON":"OFF"},{label:"Preferred Package Manager",value:"updateManager",status:(t.updateManager||"npm")==="custom"?"Custom":(t.updateManager||"npm").toUpperCase()}];case"secondaryModels":return[{label:"Sub-Agents",value:"subAgents",status:t.subAgents!==!1?"ON":"OFF"},{label:"Sub-Agent Model",value:"subAgentModel",status:t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default"},{label:"Enable Auto-Completion",value:"autoCompletionEnabled",status:S?.enabled?"ON":"OFF"},{label:"Auto-Completion Model",value:"autoCompletionModel",status:S?.model&&S.model!=="Default"?S.model:"Default"}];case"other":return[{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Agent Finish Notification",value:"agentFinishSound",status:t.agentFinishSound?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"},{label:"Cache Calculate Mode",value:"cacheCalculateMode",status:t.cacheCalculateMode||"Session"}];default:return[]}},eo=Ao[ge].id,So=Sr(eo);rd((ae,p)=>{if(he){if(p.tab){Ye(k=>k==="search"?"list":"search");return}if(ee==="search"){p.escape?Se(!1):p.downArrow||p.return?Ye("list"):p.backspace||p.delete?Pe(k=>k.slice(0,-1)):ae&&!p.ctrl&&!p.meta&&ae.length===1&&Pe(k=>k+ae);return}if(p.upArrow)Ge(k=>{if(dt.length===0)return 0;let ve=(k-1+dt.length)%dt.length,He=0;for(;dt[ve]?.isHeader&&He<dt.length;)ve=(ve-1+dt.length)%dt.length,He++;return ve});else if(p.downArrow)Ge(k=>{if(dt.length===0)return 0;let ve=(k+1)%dt.length,He=0;for(;dt[ve]?.isHeader&&He<dt.length;)ve=(ve+1)%dt.length,He++;return ve});else if(p.return){let k=dt[Oe];if(k&&!k.isHeader){let ve=k.value==="Default";Ee==="autoCompletion"?F(He=>{let ct=ve?"":k.provider||"",ot={...He,model:k.value,provider:ct,baseUrl:ve?"":sl[ct]||""};return b({autoCompletion:ot,apiTier:g,quotas:l}),ot}):f(He=>{let ct={...He,CustomSubAgent:!ve,SubAgentModel:k.value,SubAgentProvider:ve?"":k.provider||""};return b({systemSettings:ct,apiTier:g,quotas:l}),ct}),Se(!1)}}else p.escape?Se(!1):ae&&!p.ctrl&&!p.meta&&ae.length===1&&(Pe(k=>k+ae),Ye("search"));return}if(qe){if(p.upArrow){let k=(_e-1+Io.length)%Io.length;ne(k)}else if(p.downArrow){let k=(_e+1)%Io.length;ne(k)}else if(p.return){let k=Io[_e];f(ve=>{let He={...ve,theme:k};return b({systemSettings:He,apiTier:g,quotas:l}),He}),$?$():et(!1)}else p.escape&&($?$():et(!1));return}if(Ie){p.escape&&pe(null);return}if(G==="categories")p.upArrow?ie(k=>(k-1+Ao.length)%Ao.length):p.downArrow?ie(k=>(k+1)%Ao.length):p.return||p.rightArrow?Ao[ge].id==="exit"?M("chat"):(de("items"),ue(0)):p.escape&&M("chat");else if(G==="items"){if(eo==="security"&&(p.tab||ae===" ")){Ve(k=>k==="Sandbox"?"Other":"Sandbox"),ue(0);return}if(p.upArrow)ue(k=>(k-1+So.length)%So.length);else if(p.downArrow)ue(k=>(k+1)%So.length);else if(p.leftArrow)eo==="security"&&Te==="Other"?(Ve("Sandbox"),ue(0)):de("categories");else if(p.rightArrow&&eo==="security"&&Te==="Sandbox")Ve("Other"),ue(0);else if(p.escape)de("categories");else if(p.return){let k=So[oe];vr(k)}}});let vr=ae=>{if(ae.value==="profilePreset"){let p=["Default","Sassy","Friendly","Playful","Efficient","Professional"],k=L?.preset||"Default",He=(p.indexOf(k)+1)%p.length,ct=p[He>=0?He:0],ot={...L||{},preset:ct};B&&B(ot),b({profileData:ot,systemSettings:t,apiTier:g,quotas:l})}else if(ae.value==="profileNickname")pe("profileNickname"),me(L?.nickname||"");else if(ae.value==="profileInstructions")pe("profileInstructions"),me(L?.instructions||"");else if(ae.value==="memory")f(p=>({...p,memory:!p.memory}));else if(ae.value==="sandboxPreset"){let p=Ql(t),k=["Autonomous","Balanced","Strict"],He=(k.indexOf(p)+1)%k.length,ct=k[He];f(ot=>{let Xe={...ot,sandboxPreset:ct};return ct==="Strict"?(Xe.autoExec=!1,Xe.allowExternalAccess=!1,Xe.networkAccess=!1,Xe.autoApproveCommands="",Xe.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.alwaysAskCommands="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall",Xe.autoApproveGit=!1):ct==="Balanced"?(Xe.autoExec=!0,Xe.allowExternalAccess=!1,Xe.networkAccess=!0,Xe.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",Xe.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.alwaysAskCommands="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall",Xe.autoApproveGit=!1):ct==="Autonomous"&&(Xe.autoExec=!0,Xe.allowExternalAccess=!0,Xe.networkAccess=!0,Xe.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",Xe.autoDisallowCommands="",Xe.alwaysAskCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.autoApproveGit=!0),Xe})}else if(ae.value==="autoExec")t.autoExec?f(p=>({...p,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?M("doubleDanger"):M("autoExecDanger");else if(ae.value==="externalAccess")t.allowExternalAccess?f(p=>({...p,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?M("doubleDanger"):M("externalDanger");else if(ae.value==="networkAccess")f(p=>({...p,networkAccess:p.networkAccess===!1,sandboxPreset:"Custom"}));else if(ae.value==="alwaysAsk")pe("alwaysAskCommands"),me(t.alwaysAskCommands||"");else if(ae.value==="alwaysAskFiles")pe("alwaysAskFiles"),me(t.alwaysAskFiles||".env, .env.*, *.env");else if(ae.value==="autoApprove")pe("autoApproveCommands"),me(t.autoApproveCommands||"");else if(ae.value==="autoDisallow")pe("autoDisallowCommands"),me(t.autoDisallowCommands||"");else if(ae.value==="autoApproveGit")f(p=>({...p,autoApproveGit:!p.autoApproveGit,sandboxPreset:"Custom"}));else if(ae.value==="customOpenAIBaseUrl")pe("customOpenAIBaseUrl"),me(t.customOpenAIBaseUrl||"");else if(ae.value==="customOpenAIKey")pe("customOpenAIKey"),me("");else if(ae.value==="ollamaEndpoint")f(p=>{let k=p.ollamaEndpoint==="Local"?"Cloud":"Local",ve={...p,ollamaEndpoint:k};return b({systemSettings:ve,apiTier:g,quotas:l}),ve});else if(ae.value==="apiTier")M("apiTier");else if(ae.value==="aiProvider")U&&U("settings"),M("selectProvider");else if(ae.value==="advanceRollback")t.advanceRollback?f(p=>{let k={...p,advanceRollback:!1};return b({systemSettings:k,apiTier:g,quotas:l}),k}):M("advanceRollbackDanger");else if(ae.value==="autoDelete"){let p=["1d","7d","30d"],ve=(p.indexOf(t.autoDeleteHistory||"30d")+1)%p.length;f(He=>({...He,autoDeleteHistory:p[ve]}))}else if(ae.value==="autoUpdate")f(p=>({...p,autoUpdate:!p.autoUpdate}));else if(ae.value==="externalData")if(!t.useExternalData)y({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),M("input");else{let p={...t,useExternalData:!1};f(p),b({systemSettings:p,apiTier:g,quotas:l}),w(k=>[...k,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),M("chat")}else if(ae.value==="updateManager")M("updateManager");else if(ae.value==="parserDownload")M("parserDownload");else if(ae.value==="indentationTree")f(p=>{let k={...p,indentationTree:p.indentationTree===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="compressToolResults")f(p=>{let k={...p,compressToolResults:!p.compressToolResults};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoTruncateResults")f(p=>{let k={...p,autoTruncateResults:!p.autoTruncateResults};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="agentFinishSound")f(p=>{let k={...p,agentFinishSound:!p.agentFinishSound};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="imageHistoryCU"){let p=["Low","Standard","Extended","Max"],ve=(p.indexOf(t.imageHistoryCU||"Standard")+1)%p.length;f(He=>{let ct={...He,imageHistoryCU:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="contextLength"){let p=["16k","32k","64k","128k","256k","512k","1M"],ve=(p.indexOf(t.contextLength||"256k")+1)%p.length;f(He=>{let ct={...He,contextLength:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="keepReasoningContext")f(p=>{let k={...p,keepReasoningContext:!p.keepReasoningContext};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoExcludeMetadata")f(p=>{let k={...p,autoExcludeMetadata:!p.autoExcludeMetadata};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="disableTodo")f(p=>{let k={...p,disableTodo:!p.disableTodo};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="cacheCalculateMode"){let p=["Session","Current"],ve=(p.indexOf(t.cacheCalculateMode||"Session")+1)%p.length;f(He=>{let ct={...He,cacheCalculateMode:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="subAgents")f(p=>{let k={...p,subAgents:p.subAgents===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="subAgentModel"){let p=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",k=dt.findIndex(ve=>ve.value===p);Ge(k>=0?k:0),Le("subAgent"),Se(!0)}else if(ae.value==="autoCompletionEnabled")F(p=>{let k={...p,enabled:!p.enabled};return b({autoCompletion:k,apiTier:g,quotas:l}),k});else if(ae.value==="clipboardContext")f(p=>{let k={...p,clipboardContext:!p.clipboardContext};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoCompletionModel"){let p=S?.model||"Default",k=dt.findIndex(ve=>ve.value===p);Ge(k>=0?k:0),Le("autoCompletion"),Se(!0)}else if(ae.value==="preserveThinking")f(p=>{let k={...p,preserveThinking:p.preserveThinking===!1};return Hl(k.preserveThinking),b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="loadingPhrases")f(p=>{let k={...p,loadingPhrases:p.loadingPhrases===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="progressiveRendering")f(p=>{let k={...p,progressiveRendering:!p.progressiveRendering};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="showTPMEstimate")f(p=>{let k={...p,showTPMEstimate:!p.showTPMEstimate};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="theme"){let p=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",k=Io.indexOf(p);ne(k>=0?k:0),re(t.theme||"Dark"),et(!0)}},Me=ut(t.theme);if(he){let ae=Ee==="autoCompletion"?S?.model||"Default":t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",p=15,k=yt;Oe<k?k=Oe:Oe>=k+p&&(k=Oe-p+1),k=Math.max(0,Math.min(k,Math.max(0,dt.length-p))),k!==yt&&Be(k);let ve=dt.slice(k,k+p);return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:1,width:"100%",minHeight:32},I.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:Me.text,bold:!0,underline:!0},Ee==="autoCompletion"?"Select Auto-Completion Model:":"Select Sub-Agent Model:"),dt.length>0&&I.createElement(z,{color:"gray"},Oe+1,"/",dt.length)),I.createElement(Fe,{borderStyle:"single",borderColor:ee==="search"?Me.primary||"cyan":"gray",paddingX:1,marginBottom:1},I.createElement(z,{color:ee==="search"?Me.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),I.createElement(z,{color:Me.text},ye),ee==="search"&&I.createElement(z,{color:Me.primary||"cyan"},"\u2588"),!ye&&ee!=="search"&&I.createElement(z,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),I.createElement(Fe,{flexDirection:"column",flexGrow:1,height:p},ve.length>0?ve.map((He,ct)=>{let ot=k+ct;if(He.isHeader)return I.createElement(Fe,{key:`hdr-${ot}`,paddingX:1},I.createElement(z,{color:"gray",bold:!0,underline:!0},He.label));let Xe=Oe===ot&&ee==="list",mo=ae===He.value;return I.createElement(Fe,{key:`item-${He.value}-${ot}`,paddingX:1,backgroundColor:Xe?Me.highlightBg:void 0},I.createElement(z,{color:Xe?Me.text:Me.textDim,bold:Xe},Xe?"\u276F ":" ",He.label,mo?I.createElement(z,{color:Me.primary||"cyan",italic:!0}," (active)"):""))}):I.createElement(Fe,{paddingX:1},I.createElement(z,{color:"gray",italic:!0},'No models matching "',ye,'"'))),I.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),I.createElement(z,{color:ee==="search"?Me.primary||"cyan":"gray",bold:!0},"[",ee.toUpperCase()," MODE]")))}if(qe){let ae=Io[_e],p=ut(ae);return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:p.border,padding:1,width:"100%",minHeight:32},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.text,bold:!0},"Choose your color scheme:")),I.createElement(Fe,{flexDirection:"row",width:"100%",flexGrow:1},I.createElement(Fe,{flexDirection:"column",width:"30%",paddingRight:1},Io.map((k,ve)=>{let He=_e===ve,ct=(t.theme||"Dark")===k,ot=k==="Forest Sprite"||k==="Spookfest";return I.createElement(Fe,{key:k,paddingX:0},I.createElement(z,{color:He?p.text:p.textDim,bold:He},He?"> ":" ",k,ot&&I.createElement(z,{color:He?p.success||"#52b788":"green",bold:!0}," \u2605"),ct?I.createElement(z,{color:p.primary||"cyan",italic:!0}," (saved)"):""))})),I.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:p.borderMuted,paddingX:2,paddingY:1,backgroundColor:p.cardBg},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.secondary||"cyan",bold:!0},"> ","you: "),I.createElement(z,{color:p.text},"add a greeting function")),I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.success||"green"}," Here's the change:")),I.createElement(Fe,{flexDirection:"column",marginLeft:2,marginBottom:1},I.createElement(z,null,I.createElement(z,{color:p.textDim},"3 "),Mt(' import "fmt"',".go",void 0)),I.createElement(z,{color:p.textDim},"4"),I.createElement(Fe,{backgroundColor:p.diffRemovalBg},I.createElement(z,null,I.createElement(z,{color:p.diffRemovalNum||p.diffRemovalText},"5 "),I.createElement(z,{color:p.diffRemovalPrefix||p.diffRemovalText},"- "),Mt("func ",".go",void 0),Mt("main()",".go",void 0,p.diffRemovalHighlightBg),Mt(" {",".go",void 0))),I.createElement(Fe,{backgroundColor:p.diffAdditionBg},I.createElement(z,null,I.createElement(z,{color:p.diffAdditionNum||p.diffAdditionText},"5 "),I.createElement(z,{color:p.diffAdditionPrefix||p.diffAdditionText},"+ "),Mt("func ",".go",void 0),Mt("greet(name string)",".go",void 0,p.diffAdditionHighlightBg),Mt(" {",".go",void 0))),I.createElement(Fe,{backgroundColor:p.diffAdditionBg},I.createElement(z,null,I.createElement(z,{color:p.diffAdditionNum||p.diffAdditionText},"6 "),I.createElement(z,{color:p.diffAdditionPrefix||p.diffAdditionText},"+ "),I.createElement(z,null," "),Mt('fmt.Printf("Hello, %s!\\n", name)',".go",void 0,p.diffAdditionHighlightBg))),I.createElement(z,null,"7 }")),I.createElement(Fe,{flexDirection:"column",marginTop:1,marginBottom:1},I.createElement(z,{color:p.textDim},"\u25BE Thought Process"),I.createElement(z,{color:p.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),I.createElement(Fe,{flexDirection:"column"},I.createElement(z,null,I.createElement(z,{color:p.warning||"yellow"},"\u2699 tool: "),I.createElement(z,{color:p.text},"write_file main.go")),I.createElement(z,null,I.createElement(z,{color:p.accent||"magenta"},"\u29BF task: "),I.createElement(z,{color:p.text},"Implementing greeting")),I.createElement(z,null,I.createElement(z,{color:p.danger||"red"},"X error: "),I.createElement(z,{color:p.text},"compilation failed")),I.createElement(z,null,I.createElement(z,{color:p.warning||"yellow"},"\u26A0 warning: "),I.createElement(z,{color:p.text},"deprecation warning")),I.createElement(z,null,I.createElement(z,{color:p.info||"blue"},"\u2192 link: "),I.createElement(z,{color:p.info||"blue",underline:!0},"file:///path/to/main.go")),I.createElement(z,null,I.createElement(z,{color:p.accent||"magenta"},"\u2605 accent: "),I.createElement(z,{color:p.text},"highlighted text")),I.createElement(z,{color:p.textDim},"\xB7 dim: press Enter to continue")))),I.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),I.createElement(z,{color:"gray"},"Previewing: ",Io[_e],Io[_e]==="Forest Sprite"?" \u2605":"")))}return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:0,width:"100%",minHeight:26},I.createElement(Fe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Me.borderMuted,width:"100%"},I.createElement(z,{color:Me.text,bold:!0},"SYSTEM CONFIGURATION")),I.createElement(Fe,{flexDirection:"row",width:"100%",minHeight:20},I.createElement(Fe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:G==="categories"?Me.border:Me.borderMuted,padding:1,paddingY:0},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:G==="categories"?Me.text:Me.textDim,bold:!0,underline:!0},"CATEGORIES")),Ao.map((ae,p)=>{let k=ge===p,ve=ae.id==="exit";return I.createElement(Fe,{key:ae.id,marginTop:ve?9:0,backgroundColor:k?G==="categories"?Me.highlightBg:Me.cardBg:void 0,paddingX:1},I.createElement(z,{color:k&&G==="categories"?Me.text:Me.textDim,bold:k},k?"\u276F ":" ",ae.label))})),I.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:G==="items"?Me.border:Me.borderMuted,paddingX:1,marginLeft:1,paddingY:0},I.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between",alignItems:"center"},I.createElement(z,{color:G==="items"?Me.text:Me.textDim,bold:!0,underline:!0},Ao[ge].label.toUpperCase().includes("EXIT")?"Runtime Information":`${Ao[ge].label} Settings`),eo==="security"&&I.createElement(Fe,{flexDirection:"row"},I.createElement(Fe,{paddingX:1,backgroundColor:Te==="Sandbox"?G==="items"?Me.highlightBg:Me.cardBg:void 0},I.createElement(z,{bold:Te==="Sandbox",color:Te==="Sandbox"?Me.primary||"cyan":Me.textDim},"[ Sandbox ]")),I.createElement(Fe,{paddingX:1,backgroundColor:Te==="Other"?G==="items"?Me.highlightBg:Me.cardBg:void 0},I.createElement(z,{bold:Te==="Other",color:Te==="Other"?Me.primary||"cyan":Me.textDim},"[ Others ]")))),So.length>0?(()=>{let ae=null,p=[],k=ze=>(ze||"").split(",").map(xo=>xo.trim().toLowerCase()).filter(Boolean),ve=k(t.autoApproveCommands),He=k(t.autoDisallowCommands),ct=k(t.alwaysAskCommands),ot=[...ve,...He,...ct],Xe=new Set(ot),mo=eo==="security"&&ot.length!==Xe.size;return So.forEach((ze,xo)=>{let Tt=G==="items"&&oe===xo,J=ze.label.length,Er=Math.max(2,38-J),hs=".".repeat(Er),Br=wt=>eo==="security"?(wt.value==="autoExec"||wt.value==="externalAccess")&&wt.status==="ON"?Me.statusOn:Me.statusOff:wt.status?.startsWith("\u2713")?Me.statusOn:wt.status?.startsWith("\u26A0")?Me.statusOff:wt.status==="ON"?Me.statusOn:wt.status==="OFF"?Me.statusOff:Me.text;ze.section&&ze.section!==ae&&eo!=="security"&&(ae=ze.section,p.push(I.createElement(Fe,{key:`sec-hdr-${ze.section}`,marginTop:p.length>0?1:0,marginBottom:0,paddingX:1},I.createElement(z,{color:"gray",bold:!0,underline:!0},ze.section.toUpperCase()))));let gt=Tt&&Ie&&(Ie==="alwaysAskCommands"&&ze.value==="alwaysAsk"||Ie==="alwaysAskFiles"&&ze.value==="alwaysAskFiles"||Ie==="autoApproveCommands"&&ze.value==="autoApprove"||Ie==="autoDisallowCommands"&&ze.value==="autoDisallow"||Ie==="customOpenAIBaseUrl"&&ze.value==="customOpenAIBaseUrl"||Ie==="customOpenAIKey"&&ze.value==="customOpenAIKey"||Ie==="profileNickname"&&ze.value==="profileNickname"||Ie==="profileInstructions"&&ze.value==="profileInstructions"),vo=ze.value==="alwaysAsk"||ze.value==="alwaysAskFiles"||ze.value==="autoApprove"||ze.value==="autoDisallow"||ze.value==="profileInstructions",$e=ze.value==="parserDownload";p.push(I.createElement(Fe,{key:ze.value,flexDirection:"column"},I.createElement(Fe,{backgroundColor:Tt&&!gt?Me.highlightBg:void 0,paddingX:2},I.createElement(z,{color:Tt?Me.text:Me.textDim,bold:Tt},Tt?"\u276F ":" ",ze.label),!vo&&!$e&&I.createElement(I.Fragment,null,I.createElement(z,{color:"gray"},hs),I.createElement(z,{color:Br(ze),bold:!0},ze.value==="aiProvider"?ze.status:`[ ${ze.status} ]`))),vo&&!gt&&ze.status!=="None"&&I.createElement(Fe,{paddingX:4,marginBottom:1},I.createElement(z,{color:"gray"},"\u21B3 ",ze.status)),gt&&I.createElement(Fe,{flexDirection:"column",marginLeft:4,marginBottom:1},I.createElement(Fe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},I.createElement(z,{color:"gray",bold:!0},"> "," "),I.createElement(sd,{value:we,onChange:wt=>{let Pt=Ie==="profileNickname"?20:Ie==="profileInstructions"?250:1/0;me(wt.slice(0,Pt))},onSubmit:async wt=>{if(Ie==="customOpenAIBaseUrl"){let Pt=wt.trim().replace(/\/+$/,""),St={...t,customOpenAIBaseUrl:Pt};f(St),b({systemSettings:St,apiTier:g,quotas:l})}else if(Ie==="customOpenAIKey"){let{saveProviderAPIKey:Pt}=await import("./secrets-5TCTEPEV.js");await Pt("c_openai",wt.trim()),Ct(St=>({...St,c_openai:!!wt.trim()}))}else if(Ie==="profileNickname"){let Pt=wt.trim().slice(0,20),St={...L||{},nickname:Pt};B&&B(St),b({profileData:St,systemSettings:t,apiTier:g,quotas:l})}else if(Ie==="profileInstructions"){let Pt=wt.trim().slice(0,250),St={...L||{},instructions:Pt};B&&B(St),b({profileData:St,systemSettings:t,apiTier:g,quotas:l})}else{let Pt={...t,[Ie]:wt.trim(),sandboxPreset:"Custom"};f(Pt),b({systemSettings:Pt,apiTier:g,quotas:l})}pe(null)}})),I.createElement(z,{color:"gray",italic:!0}," ",Ie==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":Ie==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":Ie==="profileNickname"?`Enter Nickname (${we.length}/20) \u2022 Press Enter to save, Esc to cancel`:Ie==="profileInstructions"?`Enter Custom Instructions (${we.length}/250) \u2022 Press Enter to save, Esc to cancel`:"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),mo&&p.push(I.createElement(Fe,{key:"conflict-warning",marginTop:1,paddingX:1},I.createElement(z,{color:Me.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),p})():I.createElement(Fe,{paddingX:1,flexDirection:"column",width:"100%"},eo==="exit"?I.createElement(I.Fragment,null,I.createElement(Fe,{flexDirection:"column",marginBottom:1},I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"OS"," "),I.createElement(z,{color:"gray"},"..................... "),I.createElement(z,{color:Me.text},process.env.OS||process.platform||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Computer Name"," "),I.createElement(z,{color:"gray"},".......... "),I.createElement(z,{color:Me.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Processor Count"," "),I.createElement(z,{color:"gray"},"........ "),I.createElement(z,{color:Me.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Node.js Version"," "),I.createElement(z,{color:"gray"},"........ "),I.createElement(z,{color:Me.text},"v",process.versions.node)),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"V8 Version"," "),I.createElement(z,{color:"gray"},"...... ...... "),I.createElement(z,{color:Me.text},"v",process.versions.v8)),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Data Directory"," "),I.createElement(z,{color:"gray"},"......... "),wo===Bo?"":I.createElement(z,{color:Me.text},wo.replaceAll(ql.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),I.createElement(z,{color:Me.text},Bo.replaceAll(ql.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Viewport"," "),I.createElement(z,{color:"gray"},"............... "),I.createElement(z,{color:Me.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),I.createElement(Fe,{flexDirection:"row",marginBottom:0},I.createElement(z,{color:Me.textDim},"Memory Load"," "),I.createElement(z,{color:"gray"},"............ "),I.createElement(z,{color:Me.text},Kn,"/",ln," ",an))),I.createElement(Fe,{key:"pty-notice",paddingX:0,marginTop:0},I.createElement(z,{color:nt?Me.statusOn:Me.warning},nt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):I.createElement(z,{color:"gray",italic:!0},Ao[ge].desc)))),I.createElement(Fe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},G==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":eo==="security"?"\u25B2\u25BC Select Option \u2022 TAB/\u25C4\u25BA Switch Tab \u2022 Enter to Edit/Toggle \u2022 ESC to go back":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),G==="categories"&&I.createElement(z,{color:"gray"},Ao[ge].desc)))}import Ft,{useState as ei}from"react";import{Box as ao,Text as tn,useInput as ld}from"ink";import ad from"ink-text-input";var cd=({question:t,options:f,onResolve:g,theme:M="Dark"})=>{let y=ut(M),[b,l]=ei(!1),[w,T]=ei(""),[S,F]=ei(0),L=!1,B=[],E=Array.isArray(f)&&f.length>0,$=t==="Agent has been running for a long time. Do you want to continue execution?";try{$&&E?B=[...f]:B=[...E?f:[],E?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{L=!0}ld((N,K)=>{if(!b&&((K.leftArrow||K.upArrow)&&F(G=>Math.max(0,G-1)),(K.rightArrow||K.downArrow)&&F(G=>Math.min(B.length-1,G+1)),K.return)){let G=B[S];G?.id==="CUSTOM"?l(!0):g(L?"Selected Nothing":G.label)}});let U=pt(2);return b?Ft.createElement(ao,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:y.codeBg,width:"100%"},Ft.createElement(ao,{paddingX:1},Ft.createElement(tn,{color:y.text,bold:!0},"SUGGEST SOMETHING")),Ft.createElement(ao,{marginTop:1,paddingX:1},Ft.createElement(tn,{italic:!0,color:y.textMuted},"Replying to: ",t)),Ft.createElement(ao,{marginTop:1,paddingX:1,flexDirection:"row"},Ft.createElement(ad,{value:w,onChange:T,onSubmit:()=>g(w)})),Ft.createElement(ao,{marginTop:1,paddingX:1,marginBottom:1},Ft.createElement(tn,{color:y.textMuted,italic:!0},"(Press Enter to send)"))):Ft.createElement(ao,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:y.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},Ft.createElement(ao,{paddingX:1,marginBottom:1},Ft.createElement(tn,{color:"yellow",bold:!0},$?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),Ft.createElement(ao,{paddingX:1,marginBottom:1},Ft.createElement(tn,{color:y.text},t)),Ft.createElement(ao,{flexDirection:"column",width:"100%"},B.map((N,K)=>{let G=K===S;return Ft.createElement(ao,{key:N.id,flexDirection:"column",width:"100%",backgroundColor:G?y.highlightBg:void 0,paddingX:1,marginBottom:K===B.length-1?0:1},Ft.createElement(tn,{color:G?y.text:y.textMuted,bold:G},G?"\u276F ":" ",N.label),N.description&&Ft.createElement(ao,{marginLeft:4},Ft.createElement(tn,{color:y.textMuted,italic:!0},N.description)))})),Ft.createElement(ao,{paddingX:1,marginTop:1,marginBottom:1},Ft.createElement(tn,{color:y.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},zl=cd;import Od from"gradient-string";import md from"node-notifier";import Yo from"path";import Jl from"fs";import{execSync as dd}from"child_process";import{fileURLToPath as ud}from"url";var is=Yo.dirname(ud(import.meta.url)),ls=t=>{let f=[Yo.resolve(is,"../assets",t),Yo.resolve(is,"../../assets",t),Yo.resolve(is,"../../src/assets",t),Yo.resolve(process.cwd(),"src/assets",t),Yo.resolve(process.cwd(),"dist/assets",t)];for(let g of f)if(Jl.existsSync(g))return g;return f[0]},Zl=Yo.join(process.env.APPDATA,"Microsoft","Windows","Start Menu","Programs","FluxFlow"),am=Yo.join(Zl,"FluxFlow.lnk"),cm=Yo.resolve(is,"../../node_modules/node-notifier/vendor/snoreToast/snoretoast-x64.exe"),Rl=()=>{if(process.platform==="win32")try{let t=ls("logo.png"),f=ls("logo.ico"),M=`
39
+ `).map((U,N)=>i.createElement(D,{key:N,flexDirection:"row",width:"100%"},i.createElement(D,{flexShrink:0,width:2},i.createElement(se,{bold:!0,color:l.userMsgText},N===0?">":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:U,color:t.color||l.userMsgText,theme:b}))))),i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2580".repeat(Math.max(1,g-1))))):t.role==="think"?i.createElement(D,{flexDirection:"column",marginTop:0,marginBottom:0,paddingX:0,width:"100%"},t.isStreaming&&!t.duration?i.createElement(se,{bold:!0,color:l.text},"\u2727 Thinking..."):i.createElement(se,{bold:!0,color:l.text},"\u2726 Thought",t.duration?i.createElement(se,{color:l.textMuted}," for ",i.createElement(se,{bold:!0,color:l.text},os(t.duration))):"s..."),i.createElement(D,{borderStyle:"single",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:2,paddingTop:0,paddingBottom:0,flexDirection:"column",width:"100%"},cc($,g))):i.createElement(D,{flexDirection:"column",paddingX:1,marginTop:0,width:"100%"},i.createElement(ts,{text:$.replace(/ \|\n\n/g,` |
40
+ `),columns:g,theme:b}),t.memoryUpdated&&i.createElement(D,{marginTop:1,width:"100%"},i.createElement(se,{color:l.text,italic:!0},"[Memory Updated]")),t.role==="agent"&&t.workedDuration?i.createElement(D,{marginTop:1,marginBottom:2,width:"100%"},i.createElement(se,{color:l.textMuted},"["),i.createElement(se,{color:l.textMuted},"Worked for ",i.createElement(se,{bold:!0,color:l.text},os(t.workedDuration))),i.createElement(se,{color:l.textMuted},"]")):null))}),ns=i.memo(({block:t,columns:x=80,showFullThinking:g,aiProvider:M,version:y,theme:b="Dark"})=>{let l=ut(b),{msg:T,type:w,text:S,isStreamingMsg:F,workedDuration:L}=t;if((w==="think-header"||w==="think-line"||w==="think-footer-padding")&&!Yl())return null;if(w==="chunk")return i.createElement(D,{flexDirection:"column",width:"100%"},t.blocks.map(B=>i.createElement(ns,{key:B.key,block:B,columns:x,showFullThinking:g,aiProvider:M,version:y,theme:b})));if(w==="full-message")return i.createElement(ql,{msg:T,showFullThinking:g,columns:x,aiProvider:M,version:y,theme:b});if(w==="think-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},(()=>{let B=t.duration||T?.duration||L;return F&&!B?i.createElement(se,{bold:!0,color:l.text},"\u2727 Thinking..."):i.createElement(se,{bold:!0,color:l.text},"\u2726 Thought",B?i.createElement(se,{color:l.textMuted}," for ",i.createElement(se,{bold:!0,color:l.text},os(B)),"..."):"s...")})(),g&&i.createElement(D,{flexDirection:"row",width:"100%"},i.createElement(se,{color:l.textMuted},"\u2502 ")));if(w==="think-line"){if(!g)return null;if(!S||S.trim()==="")return i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 "));let B=Wl(S,F,t.isActiveBlock)?.replaceAll(" "," ")||"";return i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 "),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(qt,{text:B,color:l.textMuted,italic:!0,theme:b})))}if(w==="think-footer-padding")return g?i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 ")):null;if(w==="agent-line"){if(!S||S.trim()==="")return i.createElement(D,{height:1});let B=Wl(S,F,t.isActiveBlock)?.replaceAll(" "," ")||"",E=B.trim();if(E==="---"||E==="***"||E==="___")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginY:0},i.createElement(D,{borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:l.borderMuted}));let $=E.match(xc);if($){let K=$[1].length,G=$[2],ge=["yellow",l.secondary||"magenta",l.info||"cyan","green","blue",l.text][K-1]||l.text;return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},i.createElement(se,{bold:!0,color:ge,underline:!0},i.createElement(qt,{text:G,color:ge,theme:b})))}if(E.startsWith(">")){let K=E.replace(/^>\s*/,"");return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(D,{borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:1,marginY:0},i.createElement(qt,{text:K,color:l.textMuted,italic:!0,theme:b})))}let U=/^[\*\-\+]\s/.test(E),N=/^\d+\.\s/.test(E);if(U||N){let K=U?" \u2022 ":E.match(/^\d+\.\s/)[0],G=E.replace(/^[\*\-\+\d+\.]+\s*/,"");return i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%"},i.createElement(se,{color:l.info||l.textMuted},K),i.createElement(D,{flexGrow:1},i.createElement(qt,{text:G,color:l.text,theme:b})))}return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(qt,{text:B,color:l.text,theme:b}))}if(w==="table-header"||w==="table-row"){let B=w==="table-header",E=l.codeText||l.secondary||l.info||"cyan",$=t.colHeaders||[],U=B?$:t.cells||[],N=Math.max(1,t.colCount||$.length||U.length||1),K=Array.from({length:N},(pe,Te)=>U[Te]||""),G=Math.max(20,(x||80)-8),de=N>=4,ge=/^(#|no\.?|num\.?|status|state|type|ok|done|✔|✘|active)$/i,ie=[],oe=0,ue=0;for(let pe=0;pe<N;pe++){let Te=($[pe]||"").trim();if(de&&(ge.test(Te)||Te==="#")){let me=Math.max(Te.length+4,8);ie.push(me),oe+=me}else ie.push(null),ue++}let we=Math.max(ue*12,G-oe),Ve=ue>0?Math.max(10,Math.floor(we/ue)):10;for(let pe=0;pe<N;pe++)ie[pe]===null&&(ie[pe]=Ve);let Ie=ie.reduce((pe,Te)=>pe+Te,0);return B?i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:1},i.createElement(D,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:l.borderMuted,paddingBottom:0,width:Ie},$.map((pe,Te)=>{let me=ie[Te]||6;return i.createElement(D,{key:Te,width:me,paddingRight:1,flexDirection:"column"},i.createElement(qt,{text:Bt(pe,Math.max(2,me-1)),color:E,theme:b}))}))):i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%",marginBottom:1},K.map((pe,Te)=>{let me=ie[Te]||6;return i.createElement(D,{key:Te,width:me,paddingRight:1,flexDirection:"column"},i.createElement(qt,{text:Bt(pe,Math.max(2,me-1)),color:l.text,theme:b}))}))}if(w==="table-close")return i.createElement(D,{height:0});if(w==="table")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(jl,{buffer:S.split(`
41
+ `),terminalWidth:x,theme:b}));if(w==="diff-line"){let{isFirstLine:B,isLastLine:E}=t,$=(U=!1)=>i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:x,marginBottom:U?1:0},i.createElement(D,{width:3,flexShrink:0}),i.createElement(D,{width:1,flexShrink:0,marginLeft:1}),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(se,null," ")));return i.createElement(D,{flexDirection:"column"},B&&$(!1),i.createElement(Kl,{line:S,pairContent:t.pairContent,parentText:void 0,columns:x,theme:b}),E&&$(!0))}if(w==="code-fence-open"){let B={paddingLeft:2,width:"100%"};return i.createElement(D,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},i.createElement(D,{flexDirection:"row",...B},i.createElement(se,null," ")),i.createElement(D,{flexDirection:"row",...B},i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",(S||"TEXT").toUpperCase())))}if(w==="code-line"){let{lineNum:B,lang:E}=t,$=x-12,U=(S||"").replaceAll(" "," "),K=Bt(U,Math.max(10,$)).split(`
42
+ `);return i.createElement(D,{flexDirection:"column",width:"100%"},K.map((G,de)=>i.createElement(D,{key:de,flexDirection:"row",borderColor:l.codeBorder,paddingLeft:2,width:"100%"},i.createElement(D,{width:5,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},de===0?String(B).padStart(4," ")+" ":" ")),i.createElement(D,{flexGrow:1},Mt(G,E,l.text)))))}if(w==="code-fence-close")return i.createElement(D,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},i.createElement(se,null," "));if(w==="write-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:x},i.createElement(Wn,{text:S,columns:x,theme:b}));if(w==="write-line"){let{gutterWidth:B,lineNum:E,isFirstLine:$,isLastLine:U,extension:N,wrappedLines:K}=t,G=(de=!1)=>i.createElement(D,{flexDirection:"row",width:x,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:l.codeBg,marginBottom:de?1:0},i.createElement(D,{width:B+2,flexShrink:0},i.createElement(se,null," ".repeat(B+2))),i.createElement(D,{flexGrow:1},i.createElement(se,null," ")));return i.createElement(D,{flexDirection:"column"},$&&G(!1),i.createElement(D,{flexDirection:"row",width:x,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:l.codeBg},i.createElement(D,{width:B+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(E).padStart(B," ")," ")),i.createElement(D,{flexGrow:1,flexDirection:"column"},(K||[S]).map((de,ge)=>i.createElement(D,{key:ge},Mt((de||"").replaceAll(" "," "),N,l.text))))),U&&G(!0))}return w==="write-footer"?i.createElement(D,{flexDirection:"column",paddingX:1,width:x,marginTop:1,marginBottom:1},i.createElement(Wn,{text:S,columns:x,theme:b})):w==="worked-duration"?i.createElement(D,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},i.createElement(se,{color:l.textMuted},"["),i.createElement(se,{color:l.textMuted},"Worked for ",i.createElement(se,{bold:!0,color:l.text},os(L))),i.createElement(se,{color:l.textMuted},"]")):null}),Du=i.memo(({messages:t,showFullThinking:x,columns:g=80,aiProvider:M,version:y,theme:b="Dark"})=>i.createElement(D,{flexDirection:"column",width:"100%"},t.map((l,T)=>i.createElement(ql,{key:l.id||T,msg:l,showFullThinking:x,columns:g,aiProvider:M,version:y,theme:b}))));import It from"react";import{Box as en,Text as Do}from"ink";import{useState as pr,useEffect as br,useRef as rs}from"react";var wr=null;function Ql(){wr&&wr()}var Rc=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let x=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let g=0;g<x.length-1;g++){let M=x[g],y=x[g+1];if(t>=M.t&&t<=y.t){let b=(t-M.t)/(y.t-M.t);b=b*b*(3-2*b);let l=Math.round(M.r+(y.r-M.r)*b),T=Math.round(M.g+(y.g-M.g)*b),w=Math.round(M.b+(y.b-M.b)*b);return`#${((1<<24)+(l<<16)+(T<<8)+w).toString(16).slice(1)}`}}return"#ff0000"},ed=It.memo(({mode:t,thinkingLevel:x,tokens:g="0.0k",tokensTotal:M="0.0k",cachedTokens:y=0,promptTokens:b=0,chatCacheTokenLatest:l=0,cacheCalculateMode:T="Session",chatId:w="NEW-SESSION",isMemoryEnabled:S=!0,apiTier:F="Free",aiProvider:L="Google",activeModel:B="",isProcessing:E=!1,lastChunkTime:$=0,theme:U="Dark",wps:N=0,showTPMEstimate:K=!1})=>{let G=ut(U),de="",[ge,ie]=pr(0),[oe,ue]=pr(0),[we,Ve]=pr("MB"),[Ie,pe]=pr("green"),[Te,me]=pr(0),qe=rs([]),et=rs(370),_e=rs([]),ne=rs($);br(()=>{ne.current=$},[$]),br(()=>{if(!E){_e.current=[];return}if(N>0){let re=_e.current;re.push(N),re.length>3&&re.shift()}},[E,N,$]),br(()=>{if(!E){me(0);return}let re=setInterval(()=>{let he=ne.current,Se=he>0?Date.now()-he:0;if(he>0&&Se>=1e3)_e.current=[],me(0);else if(he>0&&Se>500){_e.current.length>0&&_e.current.shift();let Ee=_e.current;if(Ee.length>0){let Le=Ee.reduce((Oe,Ge)=>Oe+Ge,0);me(Math.round(Le/Ee.length))}else me(0)}else{let Ee=_e.current;if(Ee.length>0){let Le=Ee.reduce((Oe,Ge)=>Oe+Ge,0);me(Math.round(Le/Ee.length))}else N>0&&me(Math.round(N))}},750);return()=>clearInterval(re)},[E]),br(()=>{if(!E){qe.current=[];return}if($>0){let Se=qe.current;(Se.length===0||Se[Se.length-1]!==$)&&(Se.push($),Se.length>10&&Se.shift())}let re=()=>{if(!$){pe("#00a564");return}let Se=qe.current,Ee=0;if(Se.length>1){let Pe=0;for(let ee=1;ee<Se.length;ee++)Pe+=Se[ee]-Se[ee-1];Ee=Pe/(Se.length-1)}let Le=Date.now()-$,Ge=Le>=2500,yt=!Ge&&Ee>0?Math.min(Le,Ee*3):Le,Be=Math.max(Ee,yt),ye=Ge?.4:.2;et.current=et.current*(1-ye)+Be*ye,pe(Rc(et.current))};re();let he=setInterval(re,100);return()=>clearInterval(he)},[E,$]);let W=()=>{let re=process.memoryUsage(),he=re.heapTotal/(1024*1024)>=1024,Se=he?"GB":"MB",Ee=(Le,Oe)=>{let Ge=Le/(1048576*(Oe?1024:1));return Oe?parseFloat(Ge.toFixed(2)):Math.round(Ge)};Ve(Se),ue(Ee(re.heapTotal,he)),ie(Ee(re.heapUsed,he))};return br(()=>{wr=W,W();let re=setInterval(()=>{W()},6e4);return()=>{clearInterval(re),wr===W&&(wr=null)}},[]),It.createElement(en,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},It.createElement(en,null,It.createElement(en,{marginRight:1},It.createElement(Do,{color:G.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),It.createElement(Do,{color:G.textMuted,dimColor:!0},"\u2503 "),It.createElement(en,null,It.createElement(Do,{color:G.text,italic:!0},gl(process.cwd(),35)))),It.createElement(en,null,E&&!K?It.createElement(en,null,It.createElement(Do,{color:Ie},"\u25CF ")):null,E&&K&&It.createElement(It.Fragment,null,It.createElement(Do,{color:G.textMuted},"~",Te," tok/s"),It.createElement(Do,{color:G.textMuted,dimColor:!0}," \u2503")),g>0&&It.createElement(It.Fragment,null,It.createElement(en,{marginX:1},It.createElement(Do,{color:G.text},Dt(M)," tok",(()=>{let re=0;if(T==="Current")re=typeof l=="number"?l:0;else{let he=typeof b=="number"?b:0,Se=typeof y=="number"?y:0;re=he>0?Se/he*100:0}return re<1?null:It.createElement(Do,{color:G.success||"green",dimColor:!0}," [",re.toFixed(0),"% cached]")})())),It.createElement(Do,{color:G.textMuted,dimColor:!0},"\u2503")),It.createElement(en,{marginLeft:1},It.createElement(Do,{color:G.textMuted,bold:!0},ge," ",we))))}),zl=ed;import mt,{useState as ss,useMemo as td,useEffect as Jl}from"react";import{Box as Qt,Text as zt,useInput as od}from"ink";import nd from"ink-select-input";var rd=({label:t,isSelected:x,theme:g="Dark"})=>{let M=ut(g),y=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return mt.createElement(Qt,{marginTop:y?1:0,backgroundColor:x?M.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(zt,{color:x?M.text:M.textMuted,bold:x},x?"\u276F ":" ",t))},sd=8;function At({title:t,subtitle:x,items:g=[],onSelect:M,theme:y="Dark",searchable:b=!1,maxVisible:l=sd}){let T=ut(y),[w,S]=ss(""),[F,L]=ss(0),[B,E]=ss("list"),$=td(()=>{if(!b||!w.trim())return g;let ge=w.toLowerCase().trim();return g.filter(ie=>ie.label&&ie.label.toLowerCase().includes(ge))},[g,w,b]);Jl(()=>{L(0)},[w]);let[U,N]=ss(0);Jl(()=>{N(ge=>$.length<=l?0:F<ge?F:F>=ge+l?F-l+1:ge)},[F,$.length,l]),od((ge,ie)=>{if(b){if(ie.upArrow){E("list"),L(oe=>$.length===0?0:oe>0?oe-1:$.length-1);return}if(ie.downArrow){E("list"),L(oe=>$.length===0?0:oe<$.length-1?oe+1:0);return}if(ie.return){$.length>0&&$[F]&&M($[F]);return}if(ie.escape){if(w)S(""),E("list"),L(0);else{let oe=g.find(ue=>ue.value==="Back"||ue.label==="Back"||ue.value==="Cancel"||ue.label==="Cancel");oe&&M(oe)}return}if(ie.backspace||ie.delete){E("search"),S(oe=>oe.slice(0,-1));return}if(ge&&!ie.ctrl&&!ie.meta&&!ie.tab){E("search"),S(oe=>oe+ge);return}}},{isActive:b});let K=$.length,G=U;K<=l?G=0:G=Math.max(0,Math.min(U,K-l));let de=$.slice(G,G+l);return b?mt.createElement(Qt,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},mt.createElement(Qt,{paddingX:1,paddingY:0,marginBottom:0,flexDirection:"row",justifyContent:"space-between"},t?mt.createElement(zt,{color:T.text,bold:!0},typeof t=="string"?t.toUpperCase():t):mt.createElement(Qt,null),K>0&&mt.createElement(zt,{color:T.textMuted},F+1,"/",K)),x&&mt.createElement(Qt,{paddingX:1,marginBottom:0},mt.createElement(zt,{color:T.textMuted,italic:!0}," ",x)),mt.createElement(Qt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},mt.createElement(zt,{color:B==="search"?T.primary||"cyan":T.textMuted,bold:B==="search"},"\u{1F50D} Search:"),mt.createElement(zt,{color:T.text,bold:!0}," ",w),B==="search"?mt.createElement(zt,{color:T.primary||"cyan"},"\u2588"):w?null:mt.createElement(zt,{color:T.textMuted,italic:!0}," (type to search...)")),mt.createElement(Qt,{flexDirection:"column",width:"100%"},$.length===0?mt.createElement(Qt,{paddingX:1,marginY:0},mt.createElement(zt,{color:T.warning||"yellow",italic:!0}," No matching items found")):de.map((ge,ie)=>{let oe=G+ie,ue=oe===F,we=ge.label==="Cancel"||ge.label==="Back"||ge.label.toLowerCase().includes("exit")||ge.label.toLowerCase().includes("back");return mt.createElement(Qt,{key:ge.value??ge.label??oe,marginTop:we?1:0,backgroundColor:ue?T.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(zt,{color:ue?T.text:T.textMuted,bold:ue},ue?"\u276F ":" ",ge.label))})),mt.createElement(Qt,{paddingX:1,marginTop:1},mt.createElement(zt,{color:T.textMuted,italic:!0},B==="search"?"(Type letters to search \u2022 Arrows for list mode \u2022 Enter to select)":"(Arrows to navigate \u2022 Type letters to search \u2022 Enter to select)"))):mt.createElement(Qt,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&mt.createElement(Qt,{paddingX:1,paddingY:0,marginBottom:x?0:1,flexDirection:"row",justifyContent:"space-between"},mt.createElement(zt,{color:T.text,bold:!0},typeof t=="string"?t.toUpperCase():t),g.length>l&&mt.createElement(zt,{color:T.textMuted,italic:!0},g.length," options")),x&&mt.createElement(Qt,{paddingX:1,marginBottom:1},mt.createElement(zt,{color:T.textMuted,italic:!0}," ",x)),mt.createElement(Qt,{flexDirection:"column",width:"100%"},mt.createElement(nd,{items:g,onSelect:M,limit:l,itemComponent:ge=>mt.createElement(rd,{...ge,theme:y}),indicatorComponent:()=>null})),mt.createElement(Qt,{paddingX:1,marginTop:1},mt.createElement(zt,{color:T.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import I,{useState as Ht,useEffect as Tr}from"react";import{Box as Fe,Text as z,useInput as id}from"ink";import ld from"ink-text-input";import ad from"v8";import Zl from"os";var Io=[...Object.keys(pl),"Mystery"],Ao=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Personalization",desc:"Manage system context & agent's memory"},{id:"secondaryModels",label:"Secondary Models",desc:"Sub-agents & auto-completion models"},{id:"other",label:"Miscellaneous",desc:"Miscellaneous preferences"},{id:"providers",label:"Providers",desc:"Configure AI models"},{id:"security",label:"Security",desc:"Configure permissions & data safety"},{id:"updater",label:"Updater",desc:"Manage application updates"},{id:"exit",label:"Exit Settings",desc:"Return to chat view"}],Rl=t=>{let x=t.autoApproveCommands||"",g=t.autoDisallowCommands||"",M=t.alwaysAskCommands||"",y=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&x===""&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&M==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,b=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&x==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&M==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,l=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&x==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g===""&&M==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&t.autoApproveGit===!0;return y?"Strict":b?"Balanced":l?"Autonomous":t.sandboxPreset||"Custom"},yr=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function is({systemSettings:t,setSystemSettings:x,apiTier:g,setActiveView:M,setInputConfig:y,saveSettings:b,quotas:l,setMessages:T,aiProvider:w,autoCompletion:S,setAutoCompletion:F,profileData:L,setProfileData:B,initialSelectingTheme:E=!1,onCloseTheme:$=null,setProviderReturnView:U=null}){let N=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",K=Io.indexOf(N),[G,de]=Ht("categories"),[ge,ie]=Ht(0),[oe,ue]=Ht(0),[we,Ve]=Ht("Sandbox"),[Ie,pe]=Ht(null),[Te,me]=Ht(""),[qe,et]=Ht(E),[_e,ne]=Ht(K>=0?K:0),[W,re]=Ht(t.theme||"Dark"),[he,Se]=Ht(!1),[Ee,Le]=Ht("subAgent"),[Oe,Ge]=Ht(0),[yt,Be]=Ht(0),[ye,Pe]=Ht(""),[ee,Ye]=Ht("list"),[Qe,Ct]=Ht({});Tr(()=>{(async()=>{let p=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],k={};for(let ve of p)try{await Ro(ve)&&(k[ve]=!0)}catch{}Ct(k)})()},[]);let P=I.useMemo(()=>{let ae=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],k=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",ve=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:k,value:"ENV",isHeader:!1}],He=l?.providerTiers?.[w]||g||"Free",ct=Zo(w,He)||[];ct.length>0&&(ve.push({label:`\u2500\u2500 ${w.toUpperCase()}${He!=="Free"?` (${He})`:""} \u2500\u2500`,isHeader:!0}),ct.forEach(ot=>{let Xe=typeof ot=="string"?ot:ot.cmd||ot.name||ot.id||String(ot);Xe&&!Xe.trim().startsWith("---")&&!Xe.startsWith(`
43
+ ---`)&&ve.push({label:Xe,value:Xe,isHeader:!1,provider:w})}));for(let ot of ae)if(ot!==w&&Qe[ot]){let Xe=l?.providerTiers?.[ot]||"Free",mo=Zo(ot,Xe)||[];mo.length>0&&(ve.push({label:`\u2500\u2500 ${ot.toUpperCase()}${Xe!=="Free"?` (${Xe})`:""} \u2500\u2500`,isHeader:!0}),mo.forEach(ze=>{let xo=typeof ze=="string"?ze:ze.cmd||ze.name||ze.id||String(ze);xo&&!xo.trim().startsWith("---")&&!xo.startsWith(`
44
+ ---`)&&ve.push({label:xo,value:xo,isHeader:!1,provider:ot})}))}return ve},[w,g,l,Qe]),dt=I.useMemo(()=>{if(!ye.trim())return P;let ae=ye.trim().toLowerCase(),p=[],k=null;for(let ve of P)ve.isHeader?k=ve:(ve.label.toLowerCase().includes(ae)||ve.value&&ve.value.toLowerCase().includes(ae))&&(k&&!p.includes(k)&&p.push(k),p.push(ve));return p},[P,ye]);Tr(()=>{if(he){let ae=dt.findIndex(p=>!p.isHeader);Ge(ae>=0?ae:0),Be(0)}},[ye]),Tr(()=>{if(he){if(dt.length===0){Ge(0),Be(0);return}if(Oe>=dt.length||dt[Oe]?.isHeader){let ae=dt.findIndex(p=>!p.isHeader);Ge(ae>=0?ae:0)}}},[dt,he]);let[Kn,Sr]=Ht(0),[ln,hs]=Ht(0),[an,ps]=Ht("MB"),[nt,Jt]=Ht(!1);Tr(()=>{let ae=!1;return import("./exec_command-7AO6AUGQ.js").then(p=>{ae||Jt(!!p.isPtyAvailable)}).catch(()=>{}),()=>{ae=!0}},[]),Tr(()=>{let ae=ad.getHeapStatistics().heap_size_limit,p=ae>=1024*1024*1024,k=p?"GB":"MB",ve=p?1024*1024*1024:1024*1024;hs(parseFloat((ae/ve).toFixed(2))),ps(k);let He=()=>{let mo=process.memoryUsage().rss/ve,ze=p?parseFloat(mo.toFixed(2)):Math.round(mo);Sr(ze)};He();let ct=setInterval(()=>{He()},3e4);return()=>clearInterval(ct)},[]);let vr=ae=>{switch(ae){case"providers":{let p=[{label:"Current Provider",value:"aiProvider",status:w==="c_openai"?"Custom (OpenAI)":w}];return w==="Ollama"&&p.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(w==="c_openai"||w==="Custom (OpenAI)")&&(p.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),p.push({label:"API Key (if needed)",value:"customOpenAIKey",status:Qe.c_openai?"Set":"None"})),p}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Base Personality",value:"profilePreset",status:L?.preset||"Default"},{label:"Nickname",value:"profileNickname",status:L?.nickname||"None"},{label:"Custom Instructions",value:"profileInstructions",status:yr(L?.instructions)},{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Rl(t),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:t.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:t.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:t.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:yr(t.alwaysAskCommands),section:"Sandbox"},{label:"Always Ask Files/Paths",value:"alwaysAskFiles",status:yr(t.alwaysAskFiles||".env, .env.*, *.env"),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:yr(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:yr(t.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:t.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Advanced Recovery [EXPERIMENTAL]",value:"advanceRollback",status:t.advanceRollback?"ON":"OFF",section:"Other"},{label:"Auto-Delete History",value:"autoDelete",status:t.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:t.useExternalData?"ON":"OFF",section:"Other"},{label:"Agent Clipboard Context",value:"clipboardContext",status:t.clipboardContext?"ON":"OFF",section:"Other"}].filter(ve=>ve.section.toLowerCase()===we.toLowerCase());case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:t.autoUpdate?"ON":"OFF"},{label:"Preferred Package Manager",value:"updateManager",status:(t.updateManager||"npm")==="custom"?"Custom":(t.updateManager||"npm").toUpperCase()}];case"secondaryModels":return[{label:"Sub-Agents",value:"subAgents",status:t.subAgents!==!1?"ON":"OFF"},{label:"Sub-Agent Model",value:"subAgentModel",status:t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default"},{label:"Enable Auto-Completion",value:"autoCompletionEnabled",status:S?.enabled?"ON":"OFF"},{label:"Auto-Completion Model",value:"autoCompletionModel",status:S?.model&&S.model!=="Default"?S.model:"Default"}];case"other":return[{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Agent Finish Notification",value:"agentFinishSound",status:t.agentFinishSound?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"},{label:"Cache Calculate Mode",value:"cacheCalculateMode",status:t.cacheCalculateMode||"Session"}];default:return[]}},eo=Ao[ge].id,So=vr(eo);id((ae,p)=>{if(he){if(p.tab){Ye(k=>k==="search"?"list":"search");return}if(ee==="search"){p.escape?Se(!1):p.downArrow||p.return?Ye("list"):p.backspace||p.delete?Pe(k=>k.slice(0,-1)):ae&&!p.ctrl&&!p.meta&&ae.length===1&&Pe(k=>k+ae);return}if(p.upArrow)Ge(k=>{if(dt.length===0)return 0;let ve=(k-1+dt.length)%dt.length,He=0;for(;dt[ve]?.isHeader&&He<dt.length;)ve=(ve-1+dt.length)%dt.length,He++;return ve});else if(p.downArrow)Ge(k=>{if(dt.length===0)return 0;let ve=(k+1)%dt.length,He=0;for(;dt[ve]?.isHeader&&He<dt.length;)ve=(ve+1)%dt.length,He++;return ve});else if(p.return){let k=dt[Oe];if(k&&!k.isHeader){let ve=k.value==="Default";Ee==="autoCompletion"?F(He=>{let ct=ve?"":k.provider||"",ot={...He,model:k.value,provider:ct,baseUrl:ve?"":cl[ct]||""};return b({autoCompletion:ot,apiTier:g,quotas:l}),ot}):x(He=>{let ct={...He,CustomSubAgent:!ve,SubAgentModel:k.value,SubAgentProvider:ve?"":k.provider||""};return b({systemSettings:ct,apiTier:g,quotas:l}),ct}),Se(!1)}}else p.escape?Se(!1):ae&&!p.ctrl&&!p.meta&&ae.length===1&&(Pe(k=>k+ae),Ye("search"));return}if(qe){if(p.upArrow){let k=(_e-1+Io.length)%Io.length;ne(k)}else if(p.downArrow){let k=(_e+1)%Io.length;ne(k)}else if(p.return){let k=Io[_e];x(ve=>{let He={...ve,theme:k};return b({systemSettings:He,apiTier:g,quotas:l}),He}),$?$():et(!1)}else p.escape&&($?$():et(!1));return}if(Ie){p.escape&&pe(null);return}if(G==="categories")p.upArrow?ie(k=>(k-1+Ao.length)%Ao.length):p.downArrow?ie(k=>(k+1)%Ao.length):p.return||p.rightArrow?Ao[ge].id==="exit"?M("chat"):(de("items"),ue(0)):p.escape&&M("chat");else if(G==="items"){if(eo==="security"&&(p.tab||ae===" ")){Ve(k=>k==="Sandbox"?"Other":"Sandbox"),ue(0);return}if(p.upArrow)ue(k=>(k-1+So.length)%So.length);else if(p.downArrow)ue(k=>(k+1)%So.length);else if(p.leftArrow)eo==="security"&&we==="Other"?(Ve("Sandbox"),ue(0)):de("categories");else if(p.rightArrow&&eo==="security"&&we==="Sandbox")Ve("Other"),ue(0);else if(p.escape)de("categories");else if(p.return){let k=So[oe];Er(k)}}});let Er=ae=>{if(ae.value==="profilePreset"){let p=["Default","Sassy","Friendly","Playful","Efficient","Professional"],k=L?.preset||"Default",He=(p.indexOf(k)+1)%p.length,ct=p[He>=0?He:0],ot={...L||{},preset:ct};B&&B(ot),b({profileData:ot,systemSettings:t,apiTier:g,quotas:l})}else if(ae.value==="profileNickname")pe("profileNickname"),me(L?.nickname||"");else if(ae.value==="profileInstructions")pe("profileInstructions"),me(L?.instructions||"");else if(ae.value==="memory")x(p=>({...p,memory:!p.memory}));else if(ae.value==="sandboxPreset"){let p=Rl(t),k=["Autonomous","Balanced","Strict"],He=(k.indexOf(p)+1)%k.length,ct=k[He];x(ot=>{let Xe={...ot,sandboxPreset:ct};return ct==="Strict"?(Xe.autoExec=!1,Xe.allowExternalAccess=!1,Xe.networkAccess=!1,Xe.autoApproveCommands="",Xe.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.alwaysAskCommands="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall",Xe.autoApproveGit=!1):ct==="Balanced"?(Xe.autoExec=!0,Xe.allowExternalAccess=!1,Xe.networkAccess=!0,Xe.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",Xe.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.alwaysAskCommands="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall",Xe.autoApproveGit=!1):ct==="Autonomous"&&(Xe.autoExec=!0,Xe.allowExternalAccess=!0,Xe.networkAccess=!0,Xe.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",Xe.autoDisallowCommands="",Xe.alwaysAskCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",Xe.autoApproveGit=!0),Xe})}else if(ae.value==="autoExec")t.autoExec?x(p=>({...p,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?M("doubleDanger"):M("autoExecDanger");else if(ae.value==="externalAccess")t.allowExternalAccess?x(p=>({...p,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?M("doubleDanger"):M("externalDanger");else if(ae.value==="networkAccess")x(p=>({...p,networkAccess:p.networkAccess===!1,sandboxPreset:"Custom"}));else if(ae.value==="alwaysAsk")pe("alwaysAskCommands"),me(t.alwaysAskCommands||"");else if(ae.value==="alwaysAskFiles")pe("alwaysAskFiles"),me(t.alwaysAskFiles||".env, .env.*, *.env");else if(ae.value==="autoApprove")pe("autoApproveCommands"),me(t.autoApproveCommands||"");else if(ae.value==="autoDisallow")pe("autoDisallowCommands"),me(t.autoDisallowCommands||"");else if(ae.value==="autoApproveGit")x(p=>({...p,autoApproveGit:!p.autoApproveGit,sandboxPreset:"Custom"}));else if(ae.value==="customOpenAIBaseUrl")pe("customOpenAIBaseUrl"),me(t.customOpenAIBaseUrl||"");else if(ae.value==="customOpenAIKey")pe("customOpenAIKey"),me("");else if(ae.value==="ollamaEndpoint")x(p=>{let k=p.ollamaEndpoint==="Local"?"Cloud":"Local",ve={...p,ollamaEndpoint:k};return b({systemSettings:ve,apiTier:g,quotas:l}),ve});else if(ae.value==="apiTier")M("apiTier");else if(ae.value==="aiProvider")U&&U("settings"),M("selectProvider");else if(ae.value==="advanceRollback")t.advanceRollback?x(p=>{let k={...p,advanceRollback:!1};return b({systemSettings:k,apiTier:g,quotas:l}),k}):M("advanceRollbackDanger");else if(ae.value==="autoDelete"){let p=["1d","7d","30d"],ve=(p.indexOf(t.autoDeleteHistory||"30d")+1)%p.length;x(He=>({...He,autoDeleteHistory:p[ve]}))}else if(ae.value==="autoUpdate")x(p=>({...p,autoUpdate:!p.autoUpdate}));else if(ae.value==="externalData")if(!t.useExternalData)y({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),M("input");else{let p={...t,useExternalData:!1};x(p),b({systemSettings:p,apiTier:g,quotas:l}),T(k=>[...k,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),M("chat")}else if(ae.value==="updateManager")M("updateManager");else if(ae.value==="parserDownload")M("parserDownload");else if(ae.value==="indentationTree")x(p=>{let k={...p,indentationTree:p.indentationTree===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="compressToolResults")x(p=>{let k={...p,compressToolResults:!p.compressToolResults};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoTruncateResults")x(p=>{let k={...p,autoTruncateResults:!p.autoTruncateResults};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="agentFinishSound")x(p=>{let k={...p,agentFinishSound:!p.agentFinishSound};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="imageHistoryCU"){let p=["Low","Standard","Extended","Max"],ve=(p.indexOf(t.imageHistoryCU||"Standard")+1)%p.length;x(He=>{let ct={...He,imageHistoryCU:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="contextLength"){let p=["16k","32k","64k","128k","256k","512k","1M"],ve=(p.indexOf(t.contextLength||"256k")+1)%p.length;x(He=>{let ct={...He,contextLength:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="keepReasoningContext")x(p=>{let k={...p,keepReasoningContext:!p.keepReasoningContext};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoExcludeMetadata")x(p=>{let k={...p,autoExcludeMetadata:!p.autoExcludeMetadata};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="disableTodo")x(p=>{let k={...p,disableTodo:!p.disableTodo};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="cacheCalculateMode"){let p=["Session","Current"],ve=(p.indexOf(t.cacheCalculateMode||"Session")+1)%p.length;x(He=>{let ct={...He,cacheCalculateMode:p[ve]};return b({systemSettings:ct,apiTier:g,quotas:l}),ct})}else if(ae.value==="subAgents")x(p=>{let k={...p,subAgents:p.subAgents===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="subAgentModel"){let p=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",k=dt.findIndex(ve=>ve.value===p);Ge(k>=0?k:0),Le("subAgent"),Se(!0)}else if(ae.value==="autoCompletionEnabled")F(p=>{let k={...p,enabled:!p.enabled};return b({autoCompletion:k,apiTier:g,quotas:l}),k});else if(ae.value==="clipboardContext")x(p=>{let k={...p,clipboardContext:!p.clipboardContext};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="autoCompletionModel"){let p=S?.model||"Default",k=dt.findIndex(ve=>ve.value===p);Ge(k>=0?k:0),Le("autoCompletion"),Se(!0)}else if(ae.value==="preserveThinking")x(p=>{let k={...p,preserveThinking:p.preserveThinking===!1};return Vl(k.preserveThinking),b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="loadingPhrases")x(p=>{let k={...p,loadingPhrases:p.loadingPhrases===!1};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="progressiveRendering")x(p=>{let k={...p,progressiveRendering:!p.progressiveRendering};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="showTPMEstimate")x(p=>{let k={...p,showTPMEstimate:!p.showTPMEstimate};return b({systemSettings:k,apiTier:g,quotas:l}),k});else if(ae.value==="theme"){let p=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",k=Io.indexOf(p);ne(k>=0?k:0),re(t.theme||"Dark"),et(!0)}},Me=ut(t.theme);if(he){let ae=Ee==="autoCompletion"?S?.model||"Default":t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",p=15,k=yt;Oe<k?k=Oe:Oe>=k+p&&(k=Oe-p+1),k=Math.max(0,Math.min(k,Math.max(0,dt.length-p))),k!==yt&&Be(k);let ve=dt.slice(k,k+p);return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:1,width:"100%",minHeight:32},I.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:Me.text,bold:!0,underline:!0},Ee==="autoCompletion"?"Select Auto-Completion Model:":"Select Sub-Agent Model:"),dt.length>0&&I.createElement(z,{color:"gray"},Oe+1,"/",dt.length)),I.createElement(Fe,{borderStyle:"single",borderColor:ee==="search"?Me.primary||"cyan":"gray",paddingX:1,marginBottom:1},I.createElement(z,{color:ee==="search"?Me.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),I.createElement(z,{color:Me.text},ye),ee==="search"&&I.createElement(z,{color:Me.primary||"cyan"},"\u2588"),!ye&&ee!=="search"&&I.createElement(z,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),I.createElement(Fe,{flexDirection:"column",flexGrow:1,height:p},ve.length>0?ve.map((He,ct)=>{let ot=k+ct;if(He.isHeader)return I.createElement(Fe,{key:`hdr-${ot}`,paddingX:1},I.createElement(z,{color:"gray",bold:!0,underline:!0},He.label));let Xe=Oe===ot&&ee==="list",mo=ae===He.value;return I.createElement(Fe,{key:`item-${He.value}-${ot}`,paddingX:1,backgroundColor:Xe?Me.highlightBg:void 0},I.createElement(z,{color:Xe?Me.text:Me.textDim,bold:Xe},Xe?"\u276F ":" ",He.label,mo?I.createElement(z,{color:Me.primary||"cyan",italic:!0}," (active)"):""))}):I.createElement(Fe,{paddingX:1},I.createElement(z,{color:"gray",italic:!0},'No models matching "',ye,'"'))),I.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),I.createElement(z,{color:ee==="search"?Me.primary||"cyan":"gray",bold:!0},"[",ee.toUpperCase()," MODE]")))}if(qe){let ae=Io[_e],p=ut(ae);return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:p.border,padding:1,width:"100%",minHeight:32},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.text,bold:!0},"Choose your color scheme:")),I.createElement(Fe,{flexDirection:"row",width:"100%",flexGrow:1},I.createElement(Fe,{flexDirection:"column",width:"30%",paddingRight:1},Io.map((k,ve)=>{let He=_e===ve,ct=(t.theme||"Dark")===k,ot=k==="Forest Sprite"||k==="Spookfest";return I.createElement(Fe,{key:k,paddingX:0},I.createElement(z,{color:He?p.text:p.textDim,bold:He},He?"> ":" ",k,ot&&I.createElement(z,{color:He?p.success||"#52b788":"green",bold:!0}," \u2605"),ct?I.createElement(z,{color:p.primary||"cyan",italic:!0}," (saved)"):""))})),I.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:p.borderMuted,paddingX:2,paddingY:1,backgroundColor:p.cardBg},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.secondary||"cyan",bold:!0},"> ","you: "),I.createElement(z,{color:p.text},"add a greeting function")),I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:p.success||"green"}," Here's the change:")),I.createElement(Fe,{flexDirection:"column",marginLeft:2,marginBottom:1},I.createElement(z,null,I.createElement(z,{color:p.textDim},"3 "),Mt(' import "fmt"',".go",void 0)),I.createElement(z,{color:p.textDim},"4"),I.createElement(Fe,{backgroundColor:p.diffRemovalBg},I.createElement(z,null,I.createElement(z,{color:p.diffRemovalNum||p.diffRemovalText},"5 "),I.createElement(z,{color:p.diffRemovalPrefix||p.diffRemovalText},"- "),Mt("func ",".go",void 0),Mt("main()",".go",void 0,p.diffRemovalHighlightBg),Mt(" {",".go",void 0))),I.createElement(Fe,{backgroundColor:p.diffAdditionBg},I.createElement(z,null,I.createElement(z,{color:p.diffAdditionNum||p.diffAdditionText},"5 "),I.createElement(z,{color:p.diffAdditionPrefix||p.diffAdditionText},"+ "),Mt("func ",".go",void 0),Mt("greet(name string)",".go",void 0,p.diffAdditionHighlightBg),Mt(" {",".go",void 0))),I.createElement(Fe,{backgroundColor:p.diffAdditionBg},I.createElement(z,null,I.createElement(z,{color:p.diffAdditionNum||p.diffAdditionText},"6 "),I.createElement(z,{color:p.diffAdditionPrefix||p.diffAdditionText},"+ "),I.createElement(z,null," "),Mt('fmt.Printf("Hello, %s!\\n", name)',".go",void 0,p.diffAdditionHighlightBg))),I.createElement(z,null,"7 }")),I.createElement(Fe,{flexDirection:"column",marginTop:1,marginBottom:1},I.createElement(z,{color:p.textDim},"\u25BE Thought Process"),I.createElement(z,{color:p.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),I.createElement(Fe,{flexDirection:"column"},I.createElement(z,null,I.createElement(z,{color:p.warning||"yellow"},"\u2699 tool: "),I.createElement(z,{color:p.text},"write_file main.go")),I.createElement(z,null,I.createElement(z,{color:p.accent||"magenta"},"\u29BF task: "),I.createElement(z,{color:p.text},"Implementing greeting")),I.createElement(z,null,I.createElement(z,{color:p.danger||"red"},"X error: "),I.createElement(z,{color:p.text},"compilation failed")),I.createElement(z,null,I.createElement(z,{color:p.warning||"yellow"},"\u26A0 warning: "),I.createElement(z,{color:p.text},"deprecation warning")),I.createElement(z,null,I.createElement(z,{color:p.info||"blue"},"\u2192 link: "),I.createElement(z,{color:p.info||"blue",underline:!0},"file:///path/to/main.go")),I.createElement(z,null,I.createElement(z,{color:p.accent||"magenta"},"\u2605 accent: "),I.createElement(z,{color:p.text},"highlighted text")),I.createElement(z,{color:p.textDim},"\xB7 dim: press Enter to continue")))),I.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),I.createElement(z,{color:"gray"},"Previewing: ",Io[_e],Io[_e]==="Forest Sprite"?" \u2605":"")))}return I.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:0,width:"100%",minHeight:26},I.createElement(Fe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Me.borderMuted,width:"100%"},I.createElement(z,{color:Me.text,bold:!0},"SYSTEM CONFIGURATION")),I.createElement(Fe,{flexDirection:"row",width:"100%",minHeight:20},I.createElement(Fe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:G==="categories"?Me.border:Me.borderMuted,padding:1,paddingY:0},I.createElement(Fe,{marginBottom:1},I.createElement(z,{color:G==="categories"?Me.text:Me.textDim,bold:!0,underline:!0},"CATEGORIES")),Ao.map((ae,p)=>{let k=ge===p,ve=ae.id==="exit";return I.createElement(Fe,{key:ae.id,marginTop:ve?9:0,backgroundColor:k?G==="categories"?Me.highlightBg:Me.cardBg:void 0,paddingX:1},I.createElement(z,{color:k&&G==="categories"?Me.text:Me.textDim,bold:k},k?"\u276F ":" ",ae.label))})),I.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:G==="items"?Me.border:Me.borderMuted,paddingX:1,marginLeft:1,paddingY:0},I.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between",alignItems:"center"},I.createElement(z,{color:G==="items"?Me.text:Me.textDim,bold:!0,underline:!0},Ao[ge].label.toUpperCase().includes("EXIT")?"Runtime Information":`${Ao[ge].label} Settings`),eo==="security"&&I.createElement(Fe,{flexDirection:"row"},I.createElement(Fe,{paddingX:1,backgroundColor:we==="Sandbox"?G==="items"?Me.highlightBg:Me.cardBg:void 0},I.createElement(z,{bold:we==="Sandbox",color:we==="Sandbox"?Me.primary||"cyan":Me.textDim},"[ Sandbox ]")),I.createElement(Fe,{paddingX:1,backgroundColor:we==="Other"?G==="items"?Me.highlightBg:Me.cardBg:void 0},I.createElement(z,{bold:we==="Other",color:we==="Other"?Me.primary||"cyan":Me.textDim},"[ Others ]")))),So.length>0?(()=>{let ae=null,p=[],k=ze=>(ze||"").split(",").map(xo=>xo.trim().toLowerCase()).filter(Boolean),ve=k(t.autoApproveCommands),He=k(t.autoDisallowCommands),ct=k(t.alwaysAskCommands),ot=[...ve,...He,...ct],Xe=new Set(ot),mo=eo==="security"&&ot.length!==Xe.size;return So.forEach((ze,xo)=>{let wt=G==="items"&&oe===xo,J=ze.label.length,Br=Math.max(2,38-J),bs=".".repeat(Br),Dr=Tt=>eo==="security"?(Tt.value==="autoExec"||Tt.value==="externalAccess")&&Tt.status==="ON"?Me.statusOn:Me.statusOff:Tt.status?.startsWith("\u2713")?Me.statusOn:Tt.status?.startsWith("\u26A0")?Me.statusOff:Tt.status==="ON"?Me.statusOn:Tt.status==="OFF"?Me.statusOff:Me.text;ze.section&&ze.section!==ae&&eo!=="security"&&(ae=ze.section,p.push(I.createElement(Fe,{key:`sec-hdr-${ze.section}`,marginTop:p.length>0?1:0,marginBottom:0,paddingX:1},I.createElement(z,{color:"gray",bold:!0,underline:!0},ze.section.toUpperCase()))));let gt=wt&&Ie&&(Ie==="alwaysAskCommands"&&ze.value==="alwaysAsk"||Ie==="alwaysAskFiles"&&ze.value==="alwaysAskFiles"||Ie==="autoApproveCommands"&&ze.value==="autoApprove"||Ie==="autoDisallowCommands"&&ze.value==="autoDisallow"||Ie==="customOpenAIBaseUrl"&&ze.value==="customOpenAIBaseUrl"||Ie==="customOpenAIKey"&&ze.value==="customOpenAIKey"||Ie==="profileNickname"&&ze.value==="profileNickname"||Ie==="profileInstructions"&&ze.value==="profileInstructions"),vo=ze.value==="alwaysAsk"||ze.value==="alwaysAskFiles"||ze.value==="autoApprove"||ze.value==="autoDisallow"||ze.value==="profileInstructions",$e=ze.value==="parserDownload";p.push(I.createElement(Fe,{key:ze.value,flexDirection:"column"},I.createElement(Fe,{backgroundColor:wt&&!gt?Me.highlightBg:void 0,paddingX:2},I.createElement(z,{color:wt?Me.text:Me.textDim,bold:wt},wt?"\u276F ":" ",ze.label),!vo&&!$e&&I.createElement(I.Fragment,null,I.createElement(z,{color:"gray"},bs),I.createElement(z,{color:Dr(ze),bold:!0},ze.value==="aiProvider"?ze.status:`[ ${ze.status} ]`))),vo&&!gt&&ze.status!=="None"&&I.createElement(Fe,{paddingX:4,marginBottom:1},I.createElement(z,{color:"gray"},"\u21B3 ",ze.status)),gt&&I.createElement(Fe,{flexDirection:"column",marginLeft:4,marginBottom:1},I.createElement(Fe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},I.createElement(z,{color:"gray",bold:!0},"> "," "),I.createElement(ld,{value:Te,onChange:Tt=>{let Pt=Ie==="profileNickname"?20:Ie==="profileInstructions"?250:1/0;me(Tt.slice(0,Pt))},onSubmit:async Tt=>{if(Ie==="customOpenAIBaseUrl"){let Pt=Tt.trim().replace(/\/+$/,""),St={...t,customOpenAIBaseUrl:Pt};x(St),b({systemSettings:St,apiTier:g,quotas:l})}else if(Ie==="customOpenAIKey"){let{saveProviderAPIKey:Pt}=await import("./secrets-5TCTEPEV.js");await Pt("c_openai",Tt.trim()),Ct(St=>({...St,c_openai:!!Tt.trim()}))}else if(Ie==="profileNickname"){let Pt=Tt.trim().slice(0,20),St={...L||{},nickname:Pt};B&&B(St),b({profileData:St,systemSettings:t,apiTier:g,quotas:l})}else if(Ie==="profileInstructions"){let Pt=Tt.trim().slice(0,250),St={...L||{},instructions:Pt};B&&B(St),b({profileData:St,systemSettings:t,apiTier:g,quotas:l})}else{let Pt={...t,[Ie]:Tt.trim(),sandboxPreset:"Custom"};x(Pt),b({systemSettings:Pt,apiTier:g,quotas:l})}pe(null)}})),I.createElement(z,{color:"gray",italic:!0}," ",Ie==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":Ie==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":Ie==="profileNickname"?`Enter Nickname (${Te.length}/20) \u2022 Press Enter to save, Esc to cancel`:Ie==="profileInstructions"?`Enter Custom Instructions (${Te.length}/250) \u2022 Press Enter to save, Esc to cancel`:"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),mo&&p.push(I.createElement(Fe,{key:"conflict-warning",marginTop:1,paddingX:1},I.createElement(z,{color:Me.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),p})():I.createElement(Fe,{paddingX:1,flexDirection:"column",width:"100%"},eo==="exit"?I.createElement(I.Fragment,null,I.createElement(Fe,{flexDirection:"column",marginBottom:1},I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"OS"," "),I.createElement(z,{color:"gray"},"..................... "),I.createElement(z,{color:Me.text},process.env.OS||process.platform||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Computer Name"," "),I.createElement(z,{color:"gray"},".......... "),I.createElement(z,{color:Me.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Processor Count"," "),I.createElement(z,{color:"gray"},"........ "),I.createElement(z,{color:Me.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Node.js Version"," "),I.createElement(z,{color:"gray"},"........ "),I.createElement(z,{color:Me.text},"v",process.versions.node)),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"V8 Version"," "),I.createElement(z,{color:"gray"},"...... ...... "),I.createElement(z,{color:Me.text},"v",process.versions.v8)),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Data Directory"," "),I.createElement(z,{color:"gray"},"......... "),To===Bo?"":I.createElement(z,{color:Me.text},To.replaceAll(Zl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),I.createElement(z,{color:Me.text},Bo.replaceAll(Zl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),I.createElement(Fe,{flexDirection:"row"},I.createElement(z,{color:Me.textDim},"Viewport"," "),I.createElement(z,{color:"gray"},"............... "),I.createElement(z,{color:Me.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),I.createElement(Fe,{flexDirection:"row",marginBottom:0},I.createElement(z,{color:Me.textDim},"Memory Load"," "),I.createElement(z,{color:"gray"},"............ "),I.createElement(z,{color:Me.text},Kn,"/",ln," ",an))),I.createElement(Fe,{key:"pty-notice",paddingX:0,marginTop:0},I.createElement(z,{color:nt?Me.statusOn:Me.warning},nt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):I.createElement(z,{color:"gray",italic:!0},Ao[ge].desc)))),I.createElement(Fe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},I.createElement(z,{color:"gray",italic:!0},G==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":eo==="security"?"\u25B2\u25BC Select Option \u2022 TAB/\u25C4\u25BA Switch Tab \u2022 Enter to Edit/Toggle \u2022 ESC to go back":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),G==="categories"&&I.createElement(z,{color:"gray"},Ao[ge].desc)))}import Ft,{useState as oi}from"react";import{Box as ao,Text as tn,useInput as cd}from"ink";import dd from"ink-text-input";var ud=({question:t,options:x,onResolve:g,theme:M="Dark"})=>{let y=ut(M),[b,l]=oi(!1),[T,w]=oi(""),[S,F]=oi(0),L=!1,B=[],E=Array.isArray(x)&&x.length>0,$=t==="Agent has been running for a long time. Do you want to continue execution?";try{$&&E?B=[...x]:B=[...E?x:[],E?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{L=!0}cd((N,K)=>{if(!b&&((K.leftArrow||K.upArrow)&&F(G=>Math.max(0,G-1)),(K.rightArrow||K.downArrow)&&F(G=>Math.min(B.length-1,G+1)),K.return)){let G=B[S];G?.id==="CUSTOM"?l(!0):g(L?"Selected Nothing":G.label)}});let U=pt(2);return b?Ft.createElement(ao,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:y.codeBg,width:"100%"},Ft.createElement(ao,{paddingX:1},Ft.createElement(tn,{color:y.text,bold:!0},"SUGGEST SOMETHING")),Ft.createElement(ao,{marginTop:1,paddingX:1},Ft.createElement(tn,{italic:!0,color:y.textMuted},"Replying to: ",t)),Ft.createElement(ao,{marginTop:1,paddingX:1,flexDirection:"row"},Ft.createElement(dd,{value:T,onChange:w,onSubmit:()=>g(T)})),Ft.createElement(ao,{marginTop:1,paddingX:1,marginBottom:1},Ft.createElement(tn,{color:y.textMuted,italic:!0},"(Press Enter to send)"))):Ft.createElement(ao,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:y.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},Ft.createElement(ao,{paddingX:1,marginBottom:1},Ft.createElement(tn,{color:"yellow",bold:!0},$?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),Ft.createElement(ao,{paddingX:1,marginBottom:1},Ft.createElement(tn,{color:y.text},t)),Ft.createElement(ao,{flexDirection:"column",width:"100%"},B.map((N,K)=>{let G=K===S;return Ft.createElement(ao,{key:N.id,flexDirection:"column",width:"100%",backgroundColor:G?y.highlightBg:void 0,paddingX:1,marginBottom:K===B.length-1?0:1},Ft.createElement(tn,{color:G?y.text:y.textMuted,bold:G},G?"\u276F ":" ",N.label),N.description&&Ft.createElement(ao,{marginLeft:4},Ft.createElement(tn,{color:y.textMuted,italic:!0},N.description)))})),Ft.createElement(ao,{paddingX:1,marginTop:1,marginBottom:1},Ft.createElement(tn,{color:y.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},ea=ud;import Nd from"gradient-string";import na from"node-notifier";import Yo from"path";import ta from"fs";import{execSync as md}from"child_process";import{fileURLToPath as xd}from"url";var ls=Yo.dirname(xd(import.meta.url)),Cr=t=>{let x=[Yo.resolve(ls,"../assets",t),Yo.resolve(ls,"../../assets",t),Yo.resolve(ls,"../../src/assets",t),Yo.resolve(process.cwd(),"src/assets",t),Yo.resolve(process.cwd(),"dist/assets",t)];for(let g of x)if(ta.existsSync(g))return g;return x[0]},oa=Yo.join(process.env.APPDATA,"Microsoft","Windows","Start Menu","Programs","FluxFlow"),cm=Yo.join(oa,"FluxFlow.lnk"),dm=Yo.resolve(ls,"../../node_modules/node-notifier/vendor/snoreToast/snoretoast-x64.exe"),ni=()=>{if(process.platform==="win32")try{let t=Cr("logo.png"),x=Cr("logo.ico"),M=`
45
45
  $key = 'HKCU:\\Software\\Classes\\AppUserModelId\\FluxFlow'
46
46
  New-Item -Path $key -Force | Out-Null
47
47
  Set-ItemProperty -Path $key -Name 'DisplayName' -Value 'FluxFlow'
48
- Set-ItemProperty -Path $key -Name 'IconUri' -Value '${(Jl.existsSync(t)?t:f).replace(/'/g,"''")}'
48
+ Set-ItemProperty -Path $key -Name 'IconUri' -Value '${(ta.existsSync(t)?t:x).replace(/'/g,"''")}'
49
49
  Set-ItemProperty -Path $key -Name 'IconBackgroundColor' -Value '00000000'
50
50
  Set-ItemProperty -Path $key -Name 'ShowInSettings' -Value 0 -Type DWord -ErrorAction SilentlyContinue
51
- Remove-Item -Path '${Zl.replace(/'/g,"''")}' -Recurse -Force -ErrorAction SilentlyContinue
52
- `.replace(/\r?\n\s*/g,"; ");dd(`powershell -NoProfile -Command "${M}"`,{stdio:"ignore"})}catch{}},ea=()=>"FluxFlow";var ta=!1,ti=(t="")=>{let f="FluxFlow",g=`Agent finished - ${t||"Session"}`;try{ta||(Rl(),ta=!0);let M=process.platform==="win32"?ea():"FluxFlow",y=ls("logo.png");md.notify({title:f,message:g,appID:M,icon:y,contentImage:y,wait:!1})}catch{}};import Gt,{useState as oi,useEffect as xd}from"react";import{Box as ko,Text as on,useInput as fd}from"ink";function ni({onSelect:t,onDelete:f,onClose:g,theme:M="Dark"}){let y=ut(M),[b,l]=oi({}),[w,T]=oi([]),[S,F]=oi(0);xd(()=>{(async()=>{let N=await Xo();l(N),T(Object.keys(N).sort((K,G)=>(N[G].updatedAt||0)-(N[K].updatedAt||0)))})()},[]),fd((U,N)=>{if(N.escape&&g(),N.upArrow&&F(K=>Math.max(0,K-1)),N.downArrow&&F(K=>Math.min(w.length-1,K+1)),N.return&&w[S]&&t(w[S]),U==="x"&&w[S]){let K=w[S];f(K).then(G=>{let de=G||{};l(de);let ge=Object.keys(de).sort((ie,oe)=>(de[oe]?.updatedAt||0)-(de[ie]?.updatedAt||0));T(ge),F(ie=>Math.max(0,Math.min(ge.length-1,ie)))})}});let L=pt(2),B=15,E=0;if(w.length>B){let U=Math.floor(B/2);E=S-U,E<0?E=0:E+B>w.length&&(E=w.length-B)}let $=w.slice(E,E+B);return Gt.createElement(ko,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},Gt.createElement(ko,{paddingX:1,marginBottom:1},Gt.createElement(on,{color:y.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),w.length===0?Gt.createElement(ko,{paddingX:2,paddingY:1},Gt.createElement(on,{italic:!0,color:y.textMuted},"No saved chats found.")):Gt.createElement(ko,{flexDirection:"column",width:"100%"},E>0&&Gt.createElement(ko,{paddingX:2,marginBottom:1},Gt.createElement(on,{color:y.textMuted},"\u25B2 (+",E," more chats above)")),$.map((U,N)=>{let K=b[U],de=E+N===S,ge=gd(K?.updatedAt);return Gt.createElement(ko,{key:U,paddingX:1,backgroundColor:de?y.highlightBg:void 0,width:"100%"},Gt.createElement(ko,{flexGrow:1},Gt.createElement(on,{color:de?y.text:y.textMuted,bold:de},de?"\u276F ":" ",xr(K,U),Gt.createElement(on,{color:y.textMuted}," [",ge," \u2022 ",U,"]"))),de&&Gt.createElement(ko,{flexShrink:0},Gt.createElement(on,{color:y.danger,bold:!0},"[X] DELETE ")))}),E+B<w.length&&Gt.createElement(ko,{paddingX:2,marginTop:1},Gt.createElement(on,{color:y.textMuted},"\u25BC (+",w.length-(E+B)," more chats below)"))),Gt.createElement(ko,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:y.borderMuted},Gt.createElement(on,{color:y.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function gd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let g=w=>String(w).padStart(2,"0"),M=g(f.getMonth()+1),y=g(f.getDate()),b=g(f.getHours()),l=g(f.getMinutes());return`${M}-${y} ${b}:${l}`}import $t,{useState as ri,useEffect as hd}from"react";import{Box as Lo,Text as Mo,useInput as pd,useStdout as bd}from"ink";function si({onClose:t,theme:f="Dark"}){let g=ut(f),{stdout:M}=bd(),y=M?.columns||80,[b,l]=ri([]),[w,T]=ri(0),[S,F]=ri(!0),L=()=>{let ie=Gr(lr,[]);l(ie);try{let ue=Vr(bn,{}).systemSettings?.memory!==!1;F(ue)}catch{F(!0)}};hd(()=>{L()},[]),pd((ie,oe)=>{if(oe.escape&&t(),oe.upArrow&&T(ue=>Math.max(0,ue-1)),oe.downArrow&&T(ue=>Math.min(b.length-1,ue+1)),ie==="x"&&b.length>0){let ue=b[w].id,Te=b.filter(Ve=>Ve.id!==ue);zi(lr,Te),l(Te),w>=Te.length&&Te.length>0&&T(Te.length-1)}});let B=(ie,oe,ue)=>{if(!ie)return"";let Te=ie.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Ie=`${ue?"\u276F ":" "}${oe+1}. `.length,pe=ue?22:2;return Te.split(`
51
+ Remove-Item -Path '${oa.replace(/'/g,"''")}' -Recurse -Force -ErrorAction SilentlyContinue
52
+ `.replace(/\r?\n\s*/g,"; ");md(`powershell -NoProfile -Command "${M}"`,{stdio:"ignore"})}catch{}},ri=()=>"FluxFlow";var as=!1,si=(t="")=>{let x="FluxFlow",g=`Agent finished - ${t||"Session"}`;try{as||(ni(),as=!0);let M=process.platform==="win32"?ri():"FluxFlow",y=Cr("logo.png");na.notify({title:x,message:g,appID:M,icon:y,contentImage:y,wait:!1})}catch{}},cs=(t="User action required")=>{let x="FluxFlow";try{as||(ni(),as=!0);let g=process.platform==="win32"?ri():"FluxFlow",M=Cr("logo.png");na.notify({title:x,message:t,appID:g,icon:M,contentImage:M,wait:!1})}catch{}};import Gt,{useState as ii,useEffect as fd}from"react";import{Box as ko,Text as on,useInput as gd}from"ink";function li({onSelect:t,onDelete:x,onClose:g,theme:M="Dark"}){let y=ut(M),[b,l]=ii({}),[T,w]=ii([]),[S,F]=ii(0);fd(()=>{(async()=>{let N=await Xo();l(N),w(Object.keys(N).sort((K,G)=>(N[G].updatedAt||0)-(N[K].updatedAt||0)))})()},[]),gd((U,N)=>{if(N.escape&&g(),N.upArrow&&F(K=>Math.max(0,K-1)),N.downArrow&&F(K=>Math.min(T.length-1,K+1)),N.return&&T[S]&&t(T[S]),U==="x"&&T[S]){let K=T[S];x(K).then(G=>{let de=G||{};l(de);let ge=Object.keys(de).sort((ie,oe)=>(de[oe]?.updatedAt||0)-(de[ie]?.updatedAt||0));w(ge),F(ie=>Math.max(0,Math.min(ge.length-1,ie)))})}});let L=pt(2),B=15,E=0;if(T.length>B){let U=Math.floor(B/2);E=S-U,E<0?E=0:E+B>T.length&&(E=T.length-B)}let $=T.slice(E,E+B);return Gt.createElement(ko,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},Gt.createElement(ko,{paddingX:1,marginBottom:1},Gt.createElement(on,{color:y.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),T.length===0?Gt.createElement(ko,{paddingX:2,paddingY:1},Gt.createElement(on,{italic:!0,color:y.textMuted},"No saved chats found.")):Gt.createElement(ko,{flexDirection:"column",width:"100%"},E>0&&Gt.createElement(ko,{paddingX:2,marginBottom:1},Gt.createElement(on,{color:y.textMuted},"\u25B2 (+",E," more chats above)")),$.map((U,N)=>{let K=b[U],de=E+N===S,ge=hd(K?.updatedAt);return Gt.createElement(ko,{key:U,paddingX:1,backgroundColor:de?y.highlightBg:void 0,width:"100%"},Gt.createElement(ko,{flexGrow:1},Gt.createElement(on,{color:de?y.text:y.textMuted,bold:de},de?"\u276F ":" ",xr(K,U),Gt.createElement(on,{color:y.textMuted}," [",ge," \u2022 ",U,"]"))),de&&Gt.createElement(ko,{flexShrink:0},Gt.createElement(on,{color:y.danger,bold:!0},"[X] DELETE ")))}),E+B<T.length&&Gt.createElement(ko,{paddingX:2,marginTop:1},Gt.createElement(on,{color:y.textMuted},"\u25BC (+",T.length-(E+B)," more chats below)"))),Gt.createElement(ko,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:y.borderMuted},Gt.createElement(on,{color:y.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function hd(t){if(!t)return"N/A";let x=new Date(t);if(isNaN(x.getTime()))return"N/A";let g=T=>String(T).padStart(2,"0"),M=g(x.getMonth()+1),y=g(x.getDate()),b=g(x.getHours()),l=g(x.getMinutes());return`${M}-${y} ${b}:${l}`}import $t,{useState as ai,useEffect as pd}from"react";import{Box as Lo,Text as Mo,useInput as bd,useStdout as wd}from"ink";function ci({onClose:t,theme:x="Dark"}){let g=ut(x),{stdout:M}=wd(),y=M?.columns||80,[b,l]=ai([]),[T,w]=ai(0),[S,F]=ai(!0),L=()=>{let ie=Vr(lr,[]);l(ie);try{let ue=Yr(bn,{}).systemSettings?.memory!==!1;F(ue)}catch{F(!0)}};pd(()=>{L()},[]),bd((ie,oe)=>{if(oe.escape&&t(),oe.upArrow&&w(ue=>Math.max(0,ue-1)),oe.downArrow&&w(ue=>Math.min(b.length-1,ue+1)),ie==="x"&&b.length>0){let ue=b[T].id,we=b.filter(Ve=>Ve.id!==ue);el(lr,we),l(we),T>=we.length&&we.length>0&&w(we.length-1)}});let B=(ie,oe,ue)=>{if(!ie)return"";let we=ie.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Ie=`${ue?"\u276F ":" "}${oe+1}. `.length,pe=ue?22:2;return we.split(`
53
53
  `).map((me,qe)=>{let et=qe===0,_e=Math.max(10,y-4-(et?Ie:3)-pe),ne=Math.max(10,y-4-3-pe),W=me.split(/(\s+)/),re=[],he="";if(W.forEach(Ee=>{if(Ee.length===0)return;let Le=re.length===0?_e:ne;he.length+Ee.length>Le?he.trim().length>0?(re.push(he.trimEnd()),he=Ee):(re.push(Ee.substring(0,Le)),he=Ee.substring(Le)):he+=Ee}),he.trimEnd().length>0&&re.push(he.trimEnd()),re.length===0)return"";let Se=re.join(`
54
54
  `);return et?Se:" "+Se}).join(`
55
- `)},E=4*1024*2,$=b.reduce((ie,oe)=>ie+(oe.memory?.length||0),0),U=Math.min(100,Math.round($/E*100)),N=12,K=Math.round(U/100*N),G="\u2588".repeat(K)+"\u2591".repeat(Math.max(0,N-K)),de=()=>U<50?g.textMuted:U<90?g.warning:g.danger,ge=pt(2);return $t.createElement(Lo,{flexDirection:"column",borderStyle:"round",borderColor:g.borderMuted,padding:0,width:"100%"},$t.createElement(Lo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},$t.createElement(Mo,{color:g.text,bold:!0},"SAVED MEMORIES"),$t.createElement(Lo,null,$t.createElement(Mo,{color:g.textMuted},"Vault: "),$t.createElement(Mo,{color:de()},G),$t.createElement(Mo,{color:g.text,bold:!0}," ",U,"%"))),!S&&b.length>0?$t.createElement(Lo,{paddingX:2,paddingY:1},$t.createElement(Mo,{italic:!0,color:g.textMuted},"Memory is currently Off...")):b.length===0?$t.createElement(Lo,{paddingX:2,paddingY:1},$t.createElement(Mo,{italic:!0,color:g.textMuted},S?"Learning...":"Memory not available...")):$t.createElement(Lo,{flexDirection:"column"},b.map((ie,oe)=>{let ue=oe===w;return $t.createElement(Lo,{key:ie.id,paddingX:1,backgroundColor:ue?g.highlightBg:void 0,width:"100%"},$t.createElement(Lo,{flexGrow:1},$t.createElement(Mo,{color:ue?g.text:g.textMuted,bold:ue},ue?"\u276F ":" ",oe+1,". ",B(ie.memory,oe,ue))),ue&&$t.createElement(Lo,{flexShrink:0},$t.createElement(Mo,{color:g.textMuted,dimColor:!0}," [",$t.createElement(Mo,{italic:!0},ie.score),"] "),$t.createElement(Mo,{color:g.danger,bold:!0},"[X] WIPE ")))})),$t.createElement(Lo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:g.borderMuted},$t.createElement(Mo,{color:g.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import Et,{useState as as,useEffect as oa}from"react";import{Box as nn,Text as Yt}from"ink";import{spawn as na}from"child_process";var ra=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Td=({latest:t,current:f,settings:g,theme:M="Dark",onClose:y,onUpdateSettings:b,onSuccess:l})=>{let w=ut(M),[T,S]=as("initializing"),[F,L]=as(""),[B,E]=as(null),[$,U]=as(0);if(oa(()=>{let N=setInterval(()=>{U(K=>(K+1)%1e3)},33);return()=>clearInterval(N)},[]),oa(()=>{let N;return(async()=>{let G=g?.updateManager||"npm";if(!g?.updateManager){b();return}let de="";G==="pnpm"?de=`pnpm add -g fluxflow-cli@${t}`:G==="bun"?de=`bun add -g fluxflow-cli@${t}`:G==="yarn"?de=`yarn global add fluxflow-cli@${t}`:G==="custom"?de=g.customUpdateCommand:de=`npm install -g fluxflow-cli@${t}`,S("downloading"),L(`Running: ${de}...`);let ge=process.platform==="win32",ie=ue=>new Promise(Te=>{let Ve=ge?ue?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",Ie=ge?ue?["-NoProfile","-Command",de]:["/c",de]:["-c",de],pe=me=>{let et=me.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();et&&L(_e=>{let ne=_e.split(`
55
+ `)},E=4*1024*2,$=b.reduce((ie,oe)=>ie+(oe.memory?.length||0),0),U=Math.min(100,Math.round($/E*100)),N=12,K=Math.round(U/100*N),G="\u2588".repeat(K)+"\u2591".repeat(Math.max(0,N-K)),de=()=>U<50?g.textMuted:U<90?g.warning:g.danger,ge=pt(2);return $t.createElement(Lo,{flexDirection:"column",borderStyle:"round",borderColor:g.borderMuted,padding:0,width:"100%"},$t.createElement(Lo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},$t.createElement(Mo,{color:g.text,bold:!0},"SAVED MEMORIES"),$t.createElement(Lo,null,$t.createElement(Mo,{color:g.textMuted},"Vault: "),$t.createElement(Mo,{color:de()},G),$t.createElement(Mo,{color:g.text,bold:!0}," ",U,"%"))),!S&&b.length>0?$t.createElement(Lo,{paddingX:2,paddingY:1},$t.createElement(Mo,{italic:!0,color:g.textMuted},"Memory is currently Off...")):b.length===0?$t.createElement(Lo,{paddingX:2,paddingY:1},$t.createElement(Mo,{italic:!0,color:g.textMuted},S?"Learning...":"Memory not available...")):$t.createElement(Lo,{flexDirection:"column"},b.map((ie,oe)=>{let ue=oe===T;return $t.createElement(Lo,{key:ie.id,paddingX:1,backgroundColor:ue?g.highlightBg:void 0,width:"100%"},$t.createElement(Lo,{flexGrow:1},$t.createElement(Mo,{color:ue?g.text:g.textMuted,bold:ue},ue?"\u276F ":" ",oe+1,". ",B(ie.memory,oe,ue))),ue&&$t.createElement(Lo,{flexShrink:0},$t.createElement(Mo,{color:g.textMuted,dimColor:!0}," [",$t.createElement(Mo,{italic:!0},ie.score),"] "),$t.createElement(Mo,{color:g.danger,bold:!0},"[X] WIPE ")))})),$t.createElement(Lo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:g.borderMuted},$t.createElement(Mo,{color:g.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import Et,{useState as ds,useEffect as ra}from"react";import{Box as nn,Text as Yt}from"ink";import{spawn as sa}from"child_process";var ia=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Td=({latest:t,current:x,settings:g,theme:M="Dark",onClose:y,onUpdateSettings:b,onSuccess:l})=>{let T=ut(M),[w,S]=ds("initializing"),[F,L]=ds(""),[B,E]=ds(null),[$,U]=ds(0);if(ra(()=>{let N=setInterval(()=>{U(K=>(K+1)%1e3)},33);return()=>clearInterval(N)},[]),ra(()=>{let N;return(async()=>{let G=g?.updateManager||"npm";if(!g?.updateManager){b();return}let de="";G==="pnpm"?de=`pnpm add -g fluxflow-cli@${t}`:G==="bun"?de=`bun add -g fluxflow-cli@${t}`:G==="yarn"?de=`yarn global add fluxflow-cli@${t}`:G==="custom"?de=g.customUpdateCommand:de=`npm install -g fluxflow-cli@${t}`,S("downloading"),L(`Running: ${de}...`);let ge=process.platform==="win32",ie=ue=>new Promise(we=>{let Ve=ge?ue?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",Ie=ge?ue?["-NoProfile","-Command",de]:["/c",de]:["-c",de],pe=me=>{let et=me.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();et&&L(_e=>{let ne=_e.split(`
56
56
  `);return ne[ne.length-1]?.startsWith("Progress:")&&et.startsWith("Progress:")?(ne[ne.length-1]=et,ne.slice(-5).join(`
57
57
  `)):(_e+`
58
58
  `+et).split(`
59
59
  `).slice(-10).join(`
60
- `)})},we=ge?na(Ve,Ie,{cwd:process.cwd(),env:process.env}):na(de,{shell:!0,cwd:process.cwd(),env:process.env});N=we,we.stdout.on("data",pe),we.stderr.on("data",pe),we.on("close",me=>{N=null,Te(me!==0?{error:`Process exited with code ${me}`}:{success:!0})}),we.on("error",me=>{ge&&ue&&me.code==="ENOENT"?Te({retryCmd:!0}):(N=null,Te({error:me.message}))})}),oe={};ge?(oe=await ie(!0),oe.retryCmd&&(oe=await ie(!1))):oe=await ie(!1),oe.error?(E(oe.error),S("error")):oe.success&&(S("success"),l&&l())})(),()=>{if(N)try{typeof N.destroy=="function"?N.destroy():typeof N.kill=="function"&&N.kill()}catch{}}},[]),T==="initializing"||T==="downloading"){let N=ra[Math.floor($/3)%ra.length];return Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:w.border,paddingX:2,paddingY:1},Et.createElement(nn,null,Et.createElement(Yt,{color:w.accent||w.primary},N),Et.createElement(Yt,{marginLeft:1,bold:!0,color:w.text}," Updating Flux Flow to v",t,"...")),Et.createElement(nn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:w.borderMuted},Et.createElement(Yt,{color:w.textMuted,italic:!0},F||"Preparing environment...")),Et.createElement(Yt,{marginTop:1,color:w.textDim||w.textMuted},"(Please do not close the terminal)"))}return T==="success"?Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:w.success||w.border,paddingX:2,paddingY:1},Et.createElement(Yt,{color:w.success||w.text,bold:!0},"\u2705 UPDATE SUCCESSFUL!"),Et.createElement(Yt,{marginTop:1,color:w.text},"Flux Flow has been updated to ",Et.createElement(Yt,{color:w.accent||w.primary},"v",t),"."),Et.createElement(Yt,{marginTop:1,color:w.text,bold:!0},"Please restart your terminal session to apply changes."),Et.createElement(nn,{marginTop:1},Et.createElement(Yt,{color:w.textMuted},"(Press ESC to return to chat)"))):T==="error"?Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:w.danger||w.border,paddingX:2,paddingY:1},Et.createElement(Yt,{color:w.danger||w.text,bold:!0},"\u274C UPDATE FAILED"),Et.createElement(nn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:w.borderMuted},Et.createElement(Yt,{color:w.danger||w.text},B)),Et.createElement(Yt,{marginTop:1,color:w.text,bold:!0},"Possible causes:"),Et.createElement(Yt,{color:w.textMuted},"\u2022 Missing permissions (Try running as Administrator/Sudo)"),Et.createElement(Yt,{color:w.textMuted},"\u2022 Package manager (",g?.updateManager,") not found"),Et.createElement(Yt,{color:w.textMuted},"\u2022 Network failure"),Et.createElement(nn,{marginTop:1},Et.createElement(Yt,{color:w.textDim||w.textMuted},"(Press ESC to return to chat)"))):null},sa=Td;import Rt,{useState as ia,useEffect as wd}from"react";import{Box as rn,Text as Gn,useInput as yd}from"ink";var cs=[{label:"JavaScript",file:"tree-sitter-javascript.wasm",exts:["js","jsx"]},{label:"TypeScript",file:"tree-sitter-typescript.wasm",exts:["ts"]},{label:"TSX",file:"tree-sitter-tsx.wasm",exts:["tsx"]},{label:"Python",file:"tree-sitter-python.wasm",exts:["py"]},{label:"C",file:"tree-sitter-c.wasm",exts:["c"]},{label:"C++",file:"tree-sitter-cpp.wasm",exts:["cpp"]},{label:"Java",file:"tree-sitter-java.wasm",exts:["java"]},{label:"HTML",file:"tree-sitter-html.wasm",exts:["html"]}];function ii({onClose:t}){let[f,g]=ia(0),[M,y]=ia({});return wd(()=>{let b={};cs.forEach(l=>{Sl(l.file)?b[l.file]="ready":b[l.file]="idle"}),y(b)},[]),yd(async(b,l)=>{l.escape&&t(),l.upArrow&&g(T=>Math.max(0,T-1)),l.downArrow&&g(T=>Math.min(cs.length-1,T+1));let w=cs[f];if(b==="x"||b==="X"){if(M[w.file]==="downloading")return;try{await vl(w.file),y(T=>({...T,[w.file]:"idle"}))}catch(T){y(S=>({...S,[w.file]:`error: ${T.message}`}))}}if(l.return){if(M[w.file]==="downloading")return;y(T=>({...T,[w.file]:"downloading"}));try{await Ml(w.file),y(T=>({...T,[w.file]:"ready"}))}catch(T){y(S=>({...S,[w.file]:`error: ${T.message}`}))}}}),Rt.createElement(rn,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},Rt.createElement(rn,{paddingX:1,marginBottom:1},Rt.createElement(Gn,{color:"white",bold:!0},"LANGUAGE PARSER MANAGER")),Rt.createElement(rn,{flexDirection:"column"},cs.map((b,l)=>{let w=l===f,T=M[b.file]||"idle",S="[ DOWNLOAD ]",F="gray";T==="downloading"?(S="[ DOWNLOADING... ]",F="yellow"):T==="ready"?(S="[ READY ]",F="green"):T.startsWith("error")&&(S=`[ ${T.toUpperCase()} ]`,F="red");let L=`${b.label} (${b.exts.join(", ")})`,B=Math.max(2,45-L.length),E=".".repeat(B);return Rt.createElement(rn,{key:b.file,paddingX:1,backgroundColor:w?"#2a2a2a":void 0,width:"100%"},Rt.createElement(rn,null,Rt.createElement(Gn,{color:w?"white":"grey",bold:w},w?"\u276F ":" ",b.label," ",Rt.createElement(Gn,{dimColor:!0},"(",b.exts.join(", "),")"))),Rt.createElement(rn,{flexGrow:1},Rt.createElement(Gn,{color:"gray",dimColor:!0},E)),Rt.createElement(rn,{width:20},Rt.createElement(Gn,{color:F,bold:!0},S)))})),Rt.createElement(rn,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},Rt.createElement(Gn,{color:"grey",italic:!0},"\u2191\u2193 navigate \u2022 Enter download \u2022 x delete \u2022 Esc close")))}import Wt,{useState as Cd}from"react";import{Box as Po,Text as jo,useInput as Md}from"ink";function li({prompts:t,onSelect:f,onClose:g,theme:M="Dark"}){let y=ut(M),[b,l]=Cd(0);Md((L,B)=>{B.escape&&g(),B.upArrow&&l(E=>Math.max(0,E-1)),B.downArrow&&l(E=>Math.min(t.length-1,E+1)),B.return&&t[b]&&f(t[b].id)});let w=pt(2),T=10,S=0;if(t.length>T){let L=Math.floor(T/2);S=b-L,S<0?S=0:S+T>t.length&&(S=t.length-T)}let F=t.slice(S,S+T);return Wt.createElement(Po,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},Wt.createElement(Po,{paddingX:1,marginBottom:1},Wt.createElement(jo,{color:y.text,bold:!0},"CODEBASE TIME TRAVEL: SELECT UNDO POINT")),Wt.createElement(Po,{paddingX:2,marginBottom:1},Wt.createElement(jo,{color:y.text},"Select a prompt to revert the codebase back to the state ",Wt.createElement(jo,{bold:!0,color:y.secondary||"cyan"},"immediately before")," it was executed:")),t.length===0?Wt.createElement(Po,{paddingX:2,paddingY:1},Wt.createElement(jo,{italic:!0,color:y.textMuted},"No prompt checkpoints found for this session.")):Wt.createElement(Po,{flexDirection:"column",width:"100%"},S>0&&Wt.createElement(Po,{paddingX:2,marginBottom:1},Wt.createElement(jo,{color:y.textMuted},"\u25B2 (+",S," more prompts above)")),F.map((L,B)=>{let $=S+B===b,U=vd(L.timestamp),N=L.changes?L.changes.length:0;return Wt.createElement(Po,{key:L.id,paddingX:1,backgroundColor:$?y.highlightBg:void 0,width:"100%"},Wt.createElement(Po,{flexGrow:1},Wt.createElement(jo,{color:$?y.text:y.textMuted,bold:$},$?"\u276F ":" ",'"',Sd(L.prompt),'"',Wt.createElement(jo,{color:y.textMuted}," [",U," \u2022 ",N," file(s) changed]"))))}),S+T<t.length&&Wt.createElement(Po,{paddingX:2,marginTop:1},Wt.createElement(jo,{color:y.textMuted},"\u25BC (+",t.length-(S+T)," more prompts below)"))),Wt.createElement(Po,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:y.borderMuted},Wt.createElement(jo,{color:y.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select undo point \u2022 Esc close")))}function Sd(t){if(!t)return"";let g=(t.split(`
60
+ `)})},Te=ge?sa(Ve,Ie,{cwd:process.cwd(),env:process.env}):sa(de,{shell:!0,cwd:process.cwd(),env:process.env});N=Te,Te.stdout.on("data",pe),Te.stderr.on("data",pe),Te.on("close",me=>{N=null,we(me!==0?{error:`Process exited with code ${me}`}:{success:!0})}),Te.on("error",me=>{ge&&ue&&me.code==="ENOENT"?we({retryCmd:!0}):(N=null,we({error:me.message}))})}),oe={};ge?(oe=await ie(!0),oe.retryCmd&&(oe=await ie(!1))):oe=await ie(!1),oe.error?(E(oe.error),S("error")):oe.success&&(S("success"),l&&l())})(),()=>{if(N)try{typeof N.destroy=="function"?N.destroy():typeof N.kill=="function"&&N.kill()}catch{}}},[]),w==="initializing"||w==="downloading"){let N=ia[Math.floor($/3)%ia.length];return Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:T.border,paddingX:2,paddingY:1},Et.createElement(nn,null,Et.createElement(Yt,{color:T.accent||T.primary},N),Et.createElement(Yt,{marginLeft:1,bold:!0,color:T.text}," Updating Flux Flow to v",t,"...")),Et.createElement(nn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:T.borderMuted},Et.createElement(Yt,{color:T.textMuted,italic:!0},F||"Preparing environment...")),Et.createElement(Yt,{marginTop:1,color:T.textDim||T.textMuted},"(Please do not close the terminal)"))}return w==="success"?Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:T.success||T.border,paddingX:2,paddingY:1},Et.createElement(Yt,{color:T.success||T.text,bold:!0},"\u2705 UPDATE SUCCESSFUL!"),Et.createElement(Yt,{marginTop:1,color:T.text},"Flux Flow has been updated to ",Et.createElement(Yt,{color:T.accent||T.primary},"v",t),"."),Et.createElement(Yt,{marginTop:1,color:T.text,bold:!0},"Please restart your terminal session to apply changes."),Et.createElement(nn,{marginTop:1},Et.createElement(Yt,{color:T.textMuted},"(Press ESC to return to chat)"))):w==="error"?Et.createElement(nn,{flexDirection:"column",borderStyle:"round",borderColor:T.danger||T.border,paddingX:2,paddingY:1},Et.createElement(Yt,{color:T.danger||T.text,bold:!0},"\u274C UPDATE FAILED"),Et.createElement(nn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:T.borderMuted},Et.createElement(Yt,{color:T.danger||T.text},B)),Et.createElement(Yt,{marginTop:1,color:T.text,bold:!0},"Possible causes:"),Et.createElement(Yt,{color:T.textMuted},"\u2022 Missing permissions (Try running as Administrator/Sudo)"),Et.createElement(Yt,{color:T.textMuted},"\u2022 Package manager (",g?.updateManager,") not found"),Et.createElement(Yt,{color:T.textMuted},"\u2022 Network failure"),Et.createElement(nn,{marginTop:1},Et.createElement(Yt,{color:T.textDim||T.textMuted},"(Press ESC to return to chat)"))):null},la=Td;import Rt,{useState as aa,useEffect as yd}from"react";import{Box as rn,Text as Gn,useInput as Cd}from"ink";var us=[{label:"JavaScript",file:"tree-sitter-javascript.wasm",exts:["js","jsx"]},{label:"TypeScript",file:"tree-sitter-typescript.wasm",exts:["ts"]},{label:"TSX",file:"tree-sitter-tsx.wasm",exts:["tsx"]},{label:"Python",file:"tree-sitter-python.wasm",exts:["py"]},{label:"C",file:"tree-sitter-c.wasm",exts:["c"]},{label:"C++",file:"tree-sitter-cpp.wasm",exts:["cpp"]},{label:"Java",file:"tree-sitter-java.wasm",exts:["java"]},{label:"HTML",file:"tree-sitter-html.wasm",exts:["html"]}];function di({onClose:t}){let[x,g]=aa(0),[M,y]=aa({});return yd(()=>{let b={};us.forEach(l=>{Dl(l.file)?b[l.file]="ready":b[l.file]="idle"}),y(b)},[]),Cd(async(b,l)=>{l.escape&&t(),l.upArrow&&g(w=>Math.max(0,w-1)),l.downArrow&&g(w=>Math.min(us.length-1,w+1));let T=us[x];if(b==="x"||b==="X"){if(M[T.file]==="downloading")return;try{await Il(T.file),y(w=>({...w,[T.file]:"idle"}))}catch(w){y(S=>({...S,[T.file]:`error: ${w.message}`}))}}if(l.return){if(M[T.file]==="downloading")return;y(w=>({...w,[T.file]:"downloading"}));try{await Bl(T.file),y(w=>({...w,[T.file]:"ready"}))}catch(w){y(S=>({...S,[T.file]:`error: ${w.message}`}))}}}),Rt.createElement(rn,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},Rt.createElement(rn,{paddingX:1,marginBottom:1},Rt.createElement(Gn,{color:"white",bold:!0},"LANGUAGE PARSER MANAGER")),Rt.createElement(rn,{flexDirection:"column"},us.map((b,l)=>{let T=l===x,w=M[b.file]||"idle",S="[ DOWNLOAD ]",F="gray";w==="downloading"?(S="[ DOWNLOADING... ]",F="yellow"):w==="ready"?(S="[ READY ]",F="green"):w.startsWith("error")&&(S=`[ ${w.toUpperCase()} ]`,F="red");let L=`${b.label} (${b.exts.join(", ")})`,B=Math.max(2,45-L.length),E=".".repeat(B);return Rt.createElement(rn,{key:b.file,paddingX:1,backgroundColor:T?"#2a2a2a":void 0,width:"100%"},Rt.createElement(rn,null,Rt.createElement(Gn,{color:T?"white":"grey",bold:T},T?"\u276F ":" ",b.label," ",Rt.createElement(Gn,{dimColor:!0},"(",b.exts.join(", "),")"))),Rt.createElement(rn,{flexGrow:1},Rt.createElement(Gn,{color:"gray",dimColor:!0},E)),Rt.createElement(rn,{width:20},Rt.createElement(Gn,{color:F,bold:!0},S)))})),Rt.createElement(rn,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},Rt.createElement(Gn,{color:"grey",italic:!0},"\u2191\u2193 navigate \u2022 Enter download \u2022 x delete \u2022 Esc close")))}import Wt,{useState as Md}from"react";import{Box as Po,Text as jo,useInput as Sd}from"ink";function ui({prompts:t,onSelect:x,onClose:g,theme:M="Dark"}){let y=ut(M),[b,l]=Md(0);Sd((L,B)=>{B.escape&&g(),B.upArrow&&l(E=>Math.max(0,E-1)),B.downArrow&&l(E=>Math.min(t.length-1,E+1)),B.return&&t[b]&&x(t[b].id)});let T=pt(2),w=10,S=0;if(t.length>w){let L=Math.floor(w/2);S=b-L,S<0?S=0:S+w>t.length&&(S=t.length-w)}let F=t.slice(S,S+w);return Wt.createElement(Po,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},Wt.createElement(Po,{paddingX:1,marginBottom:1},Wt.createElement(jo,{color:y.text,bold:!0},"CODEBASE TIME TRAVEL: SELECT UNDO POINT")),Wt.createElement(Po,{paddingX:2,marginBottom:1},Wt.createElement(jo,{color:y.text},"Select a prompt to revert the codebase back to the state ",Wt.createElement(jo,{bold:!0,color:y.secondary||"cyan"},"immediately before")," it was executed:")),t.length===0?Wt.createElement(Po,{paddingX:2,paddingY:1},Wt.createElement(jo,{italic:!0,color:y.textMuted},"No prompt checkpoints found for this session.")):Wt.createElement(Po,{flexDirection:"column",width:"100%"},S>0&&Wt.createElement(Po,{paddingX:2,marginBottom:1},Wt.createElement(jo,{color:y.textMuted},"\u25B2 (+",S," more prompts above)")),F.map((L,B)=>{let $=S+B===b,U=Ed(L.timestamp),N=L.changes?L.changes.length:0;return Wt.createElement(Po,{key:L.id,paddingX:1,backgroundColor:$?y.highlightBg:void 0,width:"100%"},Wt.createElement(Po,{flexGrow:1},Wt.createElement(jo,{color:$?y.text:y.textMuted,bold:$},$?"\u276F ":" ",'"',vd(L.prompt),'"',Wt.createElement(jo,{color:y.textMuted}," [",U," \u2022 ",N," file(s) changed]"))))}),S+w<t.length&&Wt.createElement(Po,{paddingX:2,marginTop:1},Wt.createElement(jo,{color:y.textMuted},"\u25BC (+",t.length-(S+w)," more prompts below)"))),Wt.createElement(Po,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:y.borderMuted},Wt.createElement(jo,{color:y.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select undo point \u2022 Esc close")))}function vd(t){if(!t)return"";let g=(t.split(`
61
61
  `)[0]||"").replace(/@\[(.*?)\]/g,(M,y)=>{let b=y.replace(/\\/g,"/").split("/");return`[${b[b.length-1]}]`});return g.length>69?g.slice(0,67)+"...":t.includes(`
62
- `)?g+"...":g}function vd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let g=l=>String(l).padStart(2,"0"),M=g(f.getHours()),y=g(f.getMinutes()),b=g(f.getSeconds());return`${M}:${y}:${b}`}import{exec as Ed}from"child_process";import{promisify as Bd}from"util";import la from"fs";var aa=Bd(Ed),ca=async()=>{try{let t=Cl();if(t.executablePath&&la.existsSync(t.executablePath))return!0;let{default:f}=await import("puppeteer"),g=f.executablePath();if(g&&la.existsSync(g))return!0}catch{return!1}return!1},da=async t=>{t&&t("\u{1F4E5} Downloading Chromium engine (chrome@148)...");try{try{await aa("pnpm exec puppeteer browsers install chrome@148")}catch{await aa("npx -y puppeteer browsers install chrome@148")}return await new Promise(f=>setTimeout(f,1e3)),{success:!0}}catch(f){return console.error("[SETUP ERROR]",f),{success:!1,error:f.message}}};import ua,{useState as ma,useEffect as xa}from"react";import{Text as fa}from"ink";var Dd=({text:t,baseColor:f="grey",glintColor:g="gray",speed:M=200,glintWidth:y=6,typeSpeed:b=30,...l})=>{let[w,T]=ma(-y),[S,F]=ma(t);return xa(()=>{let L=setInterval(()=>{T(B=>B>S.length+y?-y-40:B+1)},M);return()=>clearInterval(L)},[S.length,M,y]),xa(()=>{if(t&&(t.includes("Trying to reach")&&S&&S.includes("Trying to reach")||t.includes("Error Occurred")&&S&&S.includes("Error Occurred"))){F(t);return}if(S===t)return;let L=setTimeout(()=>{let B=0,E=Math.min(S.length,t.length);for(;B<E&&S[B]===t[B];)B++;S.length>B?F($=>$.slice(0,-1)):S.length<t.length&&F(t.slice(0,S.length+1))},b);return()=>clearTimeout(L)},[t,S,b]),ua.createElement(fa,null,S.split("").map((L,B)=>{let $=Math.abs(B-w)<=y/2?g:f;return ua.createElement(fa,{key:B,color:$,...l},L)}))},Cr=Dd;var ds=null,jn=null,us=null,ms=null,co=t=>{let f=String(t);return f.startsWith("999")&&f.endsWith("9")},ai=async()=>{let t=process.env["9ROUTER_URL"]||process.env.NINEROUTER_URL||process.env["9ROUTER_BASE_URL"]||"http://127.0.0.1:20128",f=t;try{let g=new URL(t);f=`${g.protocol}//${g.host}`}catch{f=t.replace(/\/v1(\/chat\/completions)?\/?$/,"")}try{let g=await fetch(f,{method:"GET",signal:AbortSignal.timeout(800)});return{ok:!0,url:f}}catch(g){return{ok:!1,url:f,error:g.message}}},Ko=t=>t==null||t===0||co(t)?"":String(t),sn=()=>{let t=(process.env.TERM_PROGRAM||"").toLowerCase(),f=(process.env.VSCODE_CWD||"").toLowerCase(),g=(process.env.VSCODE_CODE_CACHE_PATH||"").toLowerCase(),M=(process.env.GIT_ASKPASS||"").toLowerCase(),y=(process.env.VSCODE_GIT_ASKPASS_NODE||"").toLowerCase(),b=(process.env.VSCODE_GIT_ASKPASS_MAIN||"").toLowerCase();return t==="antigravity"||process.env.ANTIGRAVITY_AGENT||process.env.ANTIGRAVITY_PID||process.env.ANTIGRAVITY_EDITOR_APP_ROOT||process.env.ANTIGRAVITY_CLI_ALIAS||f.includes("antigravity")||g.includes("antigravity")||M.includes("antigravity")||y.includes("antigravity")||b.includes("antigravity")?"Antigravity":t==="cursor"||process.env.CURSOR_SETTINGS_DIR||process.env.CURSOR_CONFIG_DIR||f.includes("cursor")||g.includes("cursor")||M.includes("cursor")||y.includes("cursor")?"Cursor":t==="windsurf"||process.env.WINDSURF_SETTINGS_DIR||f.includes("windsurf")||g.includes("windsurf")||M.includes("windsurf")||y.includes("windsurf")?"Windsurf":t==="trae"||process.env.TRAE_SETTINGS_DIR||f.includes("trae")||y.includes("trae")?"Trae":t==="positron"||f.includes("positron")||y.includes("positron")?"Positron":t==="codium"||t==="vscode-oss"||f.includes("codium")||g.includes("codium")||y.includes("codium")?"VSCodium":t==="vscode-insiders"||f.includes("code - insiders")||g.includes("code - insiders")||y.includes("code - insiders")?"VS Code Insiders":t==="vscode"||process.env.VSCODE_GIT_IPC_HANDLE||process.env.VSCODE_PID||process.env.VSCODE_INJECTION||f.includes("code")||g.includes("code")||y.includes("code")?"VS Code":process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS||process.env.TERMINAL_EMULATOR?.toLowerCase().includes("jetbrains")?"JetBrains":process.env.WT_SESSION?"Windows Terminal":"Terminal"},Nd=t=>{switch(t){case"VS Code":return"Code";case"VS Code Insiders":return"Code - Insiders";case"Antigravity":return"Antigravity IDE";default:return t}},ga={Flux:"Workspace",Flow:"Studio",ICU:"Computer Use",FluxCU:"Omni"},ci=t=>{if(!t)return"Workspace";let f=Object.keys(ga).find(g=>g.toLowerCase()===t.toLowerCase());return f?ga[f]:t},ha=t=>{let f=Nd(t),g=mi.homedir();if(process.platform==="win32"){let M=process.env.APPDATA;return M?Ut.join(M,f,"User","keybindings.json"):null}else return process.platform==="darwin"?Ut.join(g,"Library","Application Support",f,"User","keybindings.json"):Ut.join(g,".config",f,"User","keybindings.json")},pa=t=>{let f=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1");return JSON.parse(f)},Fd=t=>Array.isArray(t)?t.some(f=>f&&typeof f.key=="string"&&f.key.toLowerCase().replace(/\s+/g,"")==="shift+enter"&&f.command==="workbench.action.terminal.sendSequence"&&f.args&&f.args.text==="\x1B[13;2u"&&typeof f.when=="string"&&f.when.includes("terminalFocus")):!1,Ta=t=>{let f=t==="VS Code",g=[];return f?(g.push({label:"Install Manually (VSIX)",url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),g.push({label:"Install from VS Code Marketplace",url:"https://marketplace.visualstudio.com/items?itemName=fluxflow-cli.fluxflow-cli-companion"})):g.push({label:`Download for ${t} (GitHub)`,url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),g.push({label:"Continue to CLI only",action:"dismiss"}),g},$d=({width:t,height:f,selectedIndex:g,aiProvider:M,theme:y="Dark"})=>{let b=sn(),l=Ta(b);return e.createElement(d,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:f},e.createElement(d,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,dr(uo,M,y))),e.createElement(d,{flexDirection:"column",borderStyle:"double",borderColor:"grey",paddingX:3,paddingY:1,width:Math.min(80,t-4)},e.createElement(s,{bold:!0,color:"white",textAlign:"center"},"\u{1F680} UPGRADE YOUR WORKFLOW"),e.createElement(d,{marginY:1,flexDirection:"column",alignItems:"left"},e.createElement(s,null,"You're in ",e.createElement(s,{bold:!0,color:"cyan"},b),", but the ",e.createElement(s,{bold:!0,color:"white"},"FluxFlow-CLI Companion")," is not installed."),e.createElement(d,{flexDirection:"column",marginY:1},e.createElement(s,{color:"gray"}," \u2705 Real-time IDE context & Error Resolution"),e.createElement(s,{color:"gray"}," \u2705 Auto-open files created by agent"),e.createElement(s,{color:"gray"}," \u2705 Native DIFFing for AI edits"),e.createElement(s,{color:"gray"}," \u2705 Direct IDE context sharing"),e.createElement(s,{color:"gray"}," \u2705 Surgical Diagnostic Sync"),e.createElement(s,{color:"gray"}," \u2705 Native Right-Click \u276F Chat integration"),e.createElement(s,{color:"gray"}," \u2705 Live Status in IDE"),e.createElement(s,{color:"gray"}," \u2705 Clickable terminal-to-code links"))),e.createElement(d,{flexDirection:"column",marginTop:1},l.map((w,T)=>e.createElement(d,{key:T},e.createElement(s,{color:g===T?"yellow":"white",bold:g===T},g===T?" \u276F ":" ",w.label)))),e.createElement(d,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Use arrows to navigate, Enter to select)"))))},Ud=({width:t,height:f,aiProvider:g,theme:M="Dark",reason:y})=>{let b=sn(),l=y==="version_mismatch";return e.createElement(d,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:f},e.createElement(d,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,dr(uo,g,M))),e.createElement(d,{flexDirection:"column",borderStyle:"double",paddingX:3,paddingY:1,width:Math.min(80,t-4)},e.createElement(s,{bold:!0,color:"yellow",textAlign:"center"},l?"\u26A0 VERSION MISMATCH":"\u26A0 CWD MISMATCH"),e.createElement(d,{marginY:1,flexDirection:"column",alignItems:"left"},e.createElement(s,null,l?"Your FluxFlow CLI version is not supported by the ":"CWD mismatch from ",!l&&e.createElement(s,{bold:!0,color:"white"},b),!l&&" workspace. ","IDE features aren't available right now."),!l&&e.createElement(d,{marginTop:1},e.createElement(s,{dimColor:!0},"Tip: Launch FluxFlow CLI from the same folder open in ",b,"."))),e.createElement(d,{marginTop:1},e.createElement(s,{color:"yellow",bold:!0}," \u276F Understood")),e.createElement(d,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Press Enter to dismiss)"))))},di=Date.now(),ba="https://fluxflow-cli.onrender.com/changelog",ui="https://fluxflow-cli.onrender.com/",_d=Ut.join(Ut.dirname(Pd(import.meta.url)),"../package.json"),wa=JSON.parse(xt.readFileSync(_d,"utf8")),uo=wa.version,Hd=wa.date||"2026-05-20";var Xd=({data:t,onResolve:f,onEdit:g,theme:M="Dark"})=>{let y=ut(M);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1},e.createElement(s,{color:y.text,bold:!0,underline:!0},t.startsWith("/btw")?"QUESTION":"STEERING HINT"," RESOLUTION")),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:y.text},"The agent already finished the task before your ",t.startsWith("/btw")?"question":"hint"," was consumed.")),e.createElement(d,{marginTop:1,backgroundColor:y.cardBg||y.codeBg||"#222",paddingX:2,width:"100%"},e.createElement(s,{italic:!0,color:y.textMuted},'"',t.replace("/btw","").trim(),'"')),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:y.textDim||y.textMuted},"How would you like to proceed?")),e.createElement(d,{marginTop:0},e.createElement(At,{title:"Select Action",items:[{label:"Send Anyway",value:"send"},{label:"Edit Prompt",value:"edit"}],onSelect:b=>{(typeof b=="object"&&b!==null?b.value:b)==="send"?f(t):g(t)},theme:M})))};var Wd=(()=>{let t=null,f=0;return g=>{let M=Date.now();if(t&&M-f<1e4)return t;let y=[],b=l=>{if(!(y.length>=2e3))try{let w=xt.readdirSync(l);for(let T of w){if(y.length>=2e3)return;if(["node_modules",".git",".gemini","dist","build",".next",".cache","out"].includes(T))continue;let S=Ut.join(l,T);xt.statSync(S).isDirectory()?b(S):y.push({name:_t(T),relativePath:_t(Ut.relative(process.cwd(),S))})}}catch{}};return b(g),t=y,f=M,y}})(),xs="Ctrl + Enter",Gd=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let f=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let g=0;g<f.length-1;g++){let M=f[g],y=f[g+1];if(t>=M.t&&t<=y.t){let b=(t-M.t)/(y.t-M.t);b=b*b*(3-2*b);let l=Math.round(M.r+(y.r-M.r)*b),w=Math.round(M.g+(y.g-M.g)*b),T=Math.round(M.b+(y.b-M.b)*b);return`#${((1<<24)+(l<<16)+(w<<8)+T).toString(16).slice(1)}`}}return"#ff0000"},Vd=e.memo(({sa:t,showTPMEstimate:f=!1})=>{let[g,M]=Q("green"),[y,b]=Q(0),l=it([]),w=it(370),T=it([]),S=it(t.lastChunkTime);return ft(()=>{S.current=t.lastChunkTime},[t.lastChunkTime]),ft(()=>{if(t.status!=="running"){T.current=[];return}if(t.wps>0){let F=T.current;F.push(t.wps),F.length>3&&F.shift()}},[t.status,t.wps,t.lastChunkTime]),ft(()=>{if(t.status!=="running"){b(0);return}let F=setInterval(()=>{let L=S.current,B=L>0?Date.now()-L:0;if(L>0&&B>=1e3)T.current=[],b(0);else if(L>0&&B>500){T.current.length>0&&T.current.shift();let E=T.current;if(E.length>0){let $=E.reduce((U,N)=>U+N,0);b(Math.round($/E.length))}else b(0)}else{let E=T.current;if(E.length>0){let $=E.reduce((U,N)=>U+N,0);b(Math.round($/E.length))}else t.wps>0&&b(Math.round(t.wps))}},750);return()=>clearInterval(F)},[t.status]),ft(()=>{if(t.status!=="running"){l.current=[];return}let F=t.lastChunkTime;if(F>0){let E=l.current;(E.length===0||E[E.length-1]!==F)&&(E.push(F),E.length>10&&E.shift())}let L=()=>{if(!F){M("#00a564");return}let E=l.current,$=0;if(E.length>1){let ie=0;for(let oe=1;oe<E.length;oe++)ie+=E[oe]-E[oe-1];$=ie/(E.length-1)}let U=Date.now()-F,K=U>=2500,G=!K&&$>0?Math.min(U,$*3):U,de=Math.max($,G),ge=K?.4:.2;w.current=w.current*(1-ge)+de*ge,M(Gd(w.current))};L();let B=setInterval(L,100);return()=>clearInterval(B)},[t.status,t.lastChunkTime]),e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:"white"}," \u2022 ",t.title," ",e.createElement(s,{color:"white",dimColor:!0},"(",t.id,")")),e.createElement(s,{color:"white"},e.createElement(s,{color:"white",dimColor:!0,bold:!0},t.currentTool||"Active"),!f&&e.createElement(s,{color:g}," \u25CF"),f&&e.createElement(s,{color:"white",dimColor:!0,bold:!0}," ~",y," tok/s")))});function Yd({args:t=[]}){let f=it(1),[g,M]=Q(!1),[y,b]=Q(10),{stdout:l}=Ad(),[w,T]=Q(""),[S,F]=Q(0),[L,B]=Q(!1),[E,$]=Q("Flux"),[U,N]=Q(0),[K,G]=Q({columns:l?.columns||80,rows:l?.rows||24}),[de,ge]=Q(0),[ie,oe]=Q(!1),[ue,Te]=Q(!1),[Ve,Ie]=Q(null),[pe,we]=Q(0),me=it(null),qe=it(!1),et=it(0),_e=it(0),ne=it(null),W=it(null),re=it(0),[he,Se]=Q(0),Ee=()=>Se(n=>n+1),Le=it([]),Oe=it(null),Ge=()=>{let n=Le.current;if(n.length>0&&W.current){let o=n.join("");n.length=0,W.current.text=_t(W.current.text+o),Ee()}},yt=()=>{if(Ge(),W.current){let n=_t(W.current.text||""),o="";if(W.current.role==="agent"&&n){let m=Al(n);m.inside&&typeof m.startIndex=="number"&&m.startIndex>=0&&(o=n.substring(m.startIndex),n=n.substring(0,m.startIndex))}let c=n;if(W.current.role==="think"&&(c=c.replace(/^\r?\n+/,"").replace(/\r?\n+$/,"")),c.trim().length>0||W.current.role!=="agent"){let m={...W.current,text:c,isStreaming:!1};A(x=>{let v=[...x,m];return O(v.length),v})}o?W.current={id:"agent-"+Date.now(),role:"agent",text:o,isStreaming:!0}:W.current=null}hi.current=0,Cs.current={totalWords:0,startTime:0,wps:0,chunks:[]}},Be=()=>{Oe.current&&clearInterval(Oe.current),Le.current=[],Oe.current=setInterval(()=>{try{let n=Le.current;if(n.length>0&&W.current){let o=1;n.length>85?o=30:n.length>80?o=25:n.length>75?o=20:n.length>65?o=16:n.length>50?o=12:n.length>35?o=8:n.length>15?o=6:n.length>5?o=4:n.length>3&&(o=2);let c="";for(let m=0;m<o&&n.length>0;m++)c+=n.shift();W.current.text=_t(W.current.text+c),Ee()}}catch{}},80)},ye=async()=>{for(;ce.progressiveRendering&&Le.current.length>0;)await new Promise(n=>setTimeout(n,10))},Pe=n=>{if(ce.progressiveRendering&&Oe.current){let o=n.trim();if((o.startsWith("[action:")||o.startsWith("[tool:"))&&o.endsWith("]")){Le.current.push(n);return}let m=dl(n);for(let x of m)Le.current.push(x)}else W.current?W.current.text=_t(W.current.text+n):W.current={id:"agent-"+Date.now(),role:"agent",text:_t(n),isStreaming:!0},Ee()};ft(()=>{let n=sn(),o=!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL,c=setTimeout(()=>{o&&!wn()&&!me.current&&Te(!0)},500),m=setInterval(()=>{wn()&&(Te(!1),Ie(null),me.current=null,qe.current=!1)},1e3);f.current=Date.now();let x=setInterval(()=>{f.current&&(Date.now()-f.current||0)>3e4&&global.gc&&(async()=>{for(let a=0;a<1;a++)global.gc(),await new Promise(h=>setImmediate(h));f.current=Date.now()})()},3e3);return()=>{clearTimeout(c),clearInterval(m),clearInterval(x)}},[]),ft(()=>{(async()=>{try{let o=await Vs(),c=o?.systemSettings||{},m=c.CustomSubAgent,x=c.SubAgentModel;if(!m||!x||x==="Default")return;let v=process.env.SUBAGENT_MODEL?process.env.SUBAGENT_MODEL.trim():null,u=process.env.SUBAGENT_PROVIDER?process.env.SUBAGENT_PROVIDER.trim():null,a=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex"],C=(te=>{if(!te)return null;let X=te.toLowerCase();return X==="google"?"Google":X==="deepseek"?"DeepSeek":X==="openrouter"?"OpenRouter":X==="nvidia"?"NVIDIA":X==="mistral"?"Mistral":X==="ollama"?"Ollama":X==="inferx"?"InferX":X==="sensenova"?"SenseNova":X==="poolside"?"Poolside":X==="9router"?"9router":X==="aihubmix"||X==="aihub"?"AIHubMix":X==="explabs"||X==="experientiallabs"||X==="experimentallabs"||X==="experiential labs"||X==="experimental labs"||X==="experiential"||X==="experimental"?"ExpLabs":X==="tokenharbor"||X==="token harbor"||X==="token_harbor"||X==="thk"?"TokenHarbor":X==="apinex"||X==="apx"?"APInex":X==="infron"?"Infron":null})(u);if(v&&!C){let te=o.aiProvider||P||"Google";A(X=>(O(X.length+1),[...X,{id:"subagent-env-noprov-"+Date.now(),role:"system",text:`[SUBAGENT CONFIG] SUBAGENT_MODEL found in ENV but SUBAGENT_PROVIDER is missing/invalid. Active provider (${te}) will be used.`,isMeta:!0}]))}if(x==="ENV"){v||A(te=>(O(te.length+1),[...te,{id:"subagent-model-noenv-"+Date.now(),role:"system",text:"No SubAgent model is found in ENV, Using Deafult until changed",isMeta:!0}]));return}let _=o.aiProvider||P||"Google",H=o.apiTier||gt||"Free",Y=o.quotas||$e||{},q=new Set;(Zo(_,H)||[]).forEach(te=>{let X=typeof te=="string"?te:te.cmd||te.name||te.id||String(te);X&&q.add(X)});for(let te of a)try{if(await Ro(te)){let Ze=Y?.providerTiers?.[te]||"Free";(Zo(te,Ze)||[]).forEach(We=>{let Je=typeof We=="string"?We:We.cmd||We.name||We.id||String(We);Je&&q.add(Je)})}}catch{}let Z=q.has(x);v?v!==x&&A(te=>(O(te.length+1),[...te,{id:"subagent-model-env-"+Date.now(),role:"system",text:"Current Seleted Sub-Agent model is not available in this provider. Using model from ENV unless changed.",isMeta:!0}])):Z||A(te=>(O(te.length+1),[...te,{id:"subagent-model-err-"+Date.now(),role:"system",text:"Current Seleted Sub-Agent model is not available in this provider. Using Default until changed",isMeta:!0}]))}catch{}})()},[]);let ee=Vn(()=>{let n={};for(let o=0;o<t.length;o++)if(t[o]==="--key"&&t[o+1]){let m=t[o+1];if(n.key=m,m.includes("@")){let x=m.split("@"),v=x[0],u=x[1].toLowerCase();if(["google","deepseek","openrouter","nvidia","mistral","ollama","inferx","sensenova","aihubmix","aihub","poolside","pool","9router","9r","explabs","tokenharbor","token_harbor","thk","infron","apinex","apx"].includes(u)){let a="Google";u==="google"?a="Google":u==="deepseek"?a="DeepSeek":u==="openrouter"?a="OpenRouter":u==="nvidia"?a="NVIDIA":u==="mistral"?a="Mistral":u==="ollama"?a="Ollama":u==="inferx"?a="InferX":u==="sensenova"?a="SenseNova":u==="poolside"||u==="pool"?a="Poolside":u==="9router"||u==="9r"?a="9router":u==="aihubmix"||u==="aihub"?a="AIHubMix":u==="explabs"?a="ExpLabs":u==="tokenharbor"||u==="token_harbor"||u==="thk"?a="TokenHarbor":u==="infron"?a="Infron":(u==="apinex"||u==="apx")&&(a="APInex"),n.key=v,n.provider=a}}}for(let o=0;o<t.length;o++){let c=t[o];if(c==="--key"){o++;continue}if(c==="--model"&&t[o+1])n.model=t[o+1],o++;else if(c==="--memory"&&t[o+1])n.memory=t[o+1].toLowerCase(),o++;else if(c==="--resume"&&t[o+1])n.resume=t[o+1],o++;else if(c==="--package"&&t[o+1]){let m=t[o+1].toLowerCase();["npm","pnpm","yarn","bun"].includes(m)&&(n.package=m),o++}else if(c==="--auto-del"&&t[o+1]){let m=t[o+1].toLowerCase();["1d","7d","30d"].includes(m)&&(n.autoDel=m),o++}else if(c==="--auto-exec"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(c==="--yolo"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(c==="--external-access"&&t[o+1])n.externalAccess=t[o+1].toLowerCase(),o++;else if(c==="--mode"&&t[o+1]){let x=t[o+1].toLowerCase();if(["flux","flow","icu","computer","fluxcu"].includes(x)){let v="Flux";x==="flux"?v="Flux":x==="flow"?v="Flow":x==="icu"||x==="computer"?v="ICU":x==="fluxcu"&&(v="FluxCU"),n.mode=v}o++}else if(c==="--thinking"&&t[o+1]){let x=t[o+1].toLowerCase();if(["fast","low","medium","high","xhigh","standard"].includes(x)){let v="Medium";x==="fast"?v="Fast":x==="low"?v="Low":x==="standard"?v="Standard":x==="medium"?v="Medium":x==="high"?v="High":x==="xhigh"&&(v="xHigh"),n.thinking=v}o++}else if(c==="--provider"&&t[o+1]){let m=t[o+1].toLowerCase();if(["google","deepseek","openrouter","nvidia","mistral","ollama","inferx","sensenova","aihubmix","aihub","poolside","pool","9router","9r","explabs","tokenharbor","token_harbor","thk","infron","apinex","apx"].includes(m)){let x="Google";m==="google"?x="Google":m==="deepseek"?x="DeepSeek":m==="openrouter"?x="OpenRouter":m==="nvidia"?x="NVIDIA":m==="mistral"?x="Mistral":m==="ollama"?x="Ollama":m==="inferx"?x="InferX":m==="sensenova"?x="SenseNova":m==="poolside"||m==="pool"?x="Poolside":m==="9router"||m==="9r"?x="9router":m==="aihubmix"||m==="aihub"?x="AIHubMix":m==="explabs"?x="ExpLabs":m==="tokenharbor"||m==="token_harbor"||m==="thk"?x="TokenHarbor":m==="infron"?x="Infron":(m==="apinex"||m==="apx")&&(x="APInex"),n.provider=x}o++}else(c==="--resume"||c==="-r")&&t[o+1]?(n.resume=t[o+1],o++):c==="--playground"?n.playground=!0:(c==="--original-cwd"||c==="--orginal-cwd")&&t[o+1]&&(n.originalCwd=t[o+1],o++)}return n},[t]),Ye=async(n=!1,o=null)=>{let c=o||ce;n&&A(m=>(O(m.length+1),[...m,{id:"check-"+Date.now(),role:"system",text:"\u2726 Checking for updates...",isMeta:!0}]));try{let x=await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json(),v=x["dist-tags"]?.latest,u=x["dist-tags"]?.stable;if(v&&fs(v),v&&v!==uo){let a=v===u?`v${v}`:`v${v}`;!n&&c.autoUpdate?J("update"):A(h=>{let C=[...h],_=n?C.length:Math.min(C.length,3);return C.splice(_,0,{id:"update-"+Date.now(),role:"system",text:`A new version (${a}) is here.
62
+ `)?g+"...":g}function Ed(t){if(!t)return"N/A";let x=new Date(t);if(isNaN(x.getTime()))return"N/A";let g=l=>String(l).padStart(2,"0"),M=g(x.getHours()),y=g(x.getMinutes()),b=g(x.getSeconds());return`${M}:${y}:${b}`}import{exec as Bd}from"child_process";import{promisify as Dd}from"util";import ca from"fs";var da=Dd(Bd),ua=async()=>{try{let t=El();if(t.executablePath&&ca.existsSync(t.executablePath))return!0;let{default:x}=await import("puppeteer"),g=x.executablePath();if(g&&ca.existsSync(g))return!0}catch{return!1}return!1},ma=async t=>{t&&t("\u{1F4E5} Downloading Chromium engine (chrome@148)...");try{try{await da("pnpm exec puppeteer browsers install chrome@148")}catch{await da("npx -y puppeteer browsers install chrome@148")}return await new Promise(x=>setTimeout(x,1e3)),{success:!0}}catch(x){return console.error("[SETUP ERROR]",x),{success:!1,error:x.message}}};import xa,{useState as fa,useEffect as ga}from"react";import{Text as ha}from"ink";var Id=({text:t,baseColor:x="grey",glintColor:g="gray",speed:M=200,glintWidth:y=6,typeSpeed:b=30,...l})=>{let[T,w]=fa(-y),[S,F]=fa(t);return ga(()=>{let L=setInterval(()=>{w(B=>B>S.length+y?-y-40:B+1)},M);return()=>clearInterval(L)},[S.length,M,y]),ga(()=>{if(t&&(t.includes("Trying to reach")&&S&&S.includes("Trying to reach")||t.includes("Error Occurred")&&S&&S.includes("Error Occurred"))){F(t);return}if(S===t)return;let L=setTimeout(()=>{let B=0,E=Math.min(S.length,t.length);for(;B<E&&S[B]===t[B];)B++;S.length>B?F($=>$.slice(0,-1)):S.length<t.length&&F(t.slice(0,S.length+1))},b);return()=>clearTimeout(L)},[t,S,b]),xa.createElement(ha,null,S.split("").map((L,B)=>{let $=Math.abs(B-T)<=y/2?g:x;return xa.createElement(ha,{key:B,color:$,...l},L)}))},Mr=Id;var ms=null,jn=null,xs=null,fs=null,co=t=>{let x=String(t);return x.startsWith("999")&&x.endsWith("9")},mi=async()=>{let t=process.env["9ROUTER_URL"]||process.env.NINEROUTER_URL||process.env["9ROUTER_BASE_URL"]||"http://127.0.0.1:20128",x=t;try{let g=new URL(t);x=`${g.protocol}//${g.host}`}catch{x=t.replace(/\/v1(\/chat\/completions)?\/?$/,"")}try{let g=await fetch(x,{method:"GET",signal:AbortSignal.timeout(800)});return{ok:!0,url:x}}catch(g){return{ok:!1,url:x,error:g.message}}},Ko=t=>t==null||t===0||co(t)?"":String(t),sn=()=>{let t=(process.env.TERM_PROGRAM||"").toLowerCase(),x=(process.env.VSCODE_CWD||"").toLowerCase(),g=(process.env.VSCODE_CODE_CACHE_PATH||"").toLowerCase(),M=(process.env.GIT_ASKPASS||"").toLowerCase(),y=(process.env.VSCODE_GIT_ASKPASS_NODE||"").toLowerCase(),b=(process.env.VSCODE_GIT_ASKPASS_MAIN||"").toLowerCase();return t==="antigravity"||process.env.ANTIGRAVITY_AGENT||process.env.ANTIGRAVITY_PID||process.env.ANTIGRAVITY_EDITOR_APP_ROOT||process.env.ANTIGRAVITY_CLI_ALIAS||x.includes("antigravity")||g.includes("antigravity")||M.includes("antigravity")||y.includes("antigravity")||b.includes("antigravity")?"Antigravity":t==="cursor"||process.env.CURSOR_SETTINGS_DIR||process.env.CURSOR_CONFIG_DIR||x.includes("cursor")||g.includes("cursor")||M.includes("cursor")||y.includes("cursor")?"Cursor":t==="windsurf"||process.env.WINDSURF_SETTINGS_DIR||x.includes("windsurf")||g.includes("windsurf")||M.includes("windsurf")||y.includes("windsurf")?"Windsurf":t==="trae"||process.env.TRAE_SETTINGS_DIR||x.includes("trae")||y.includes("trae")?"Trae":t==="positron"||x.includes("positron")||y.includes("positron")?"Positron":t==="codium"||t==="vscode-oss"||x.includes("codium")||g.includes("codium")||y.includes("codium")?"VSCodium":t==="vscode-insiders"||x.includes("code - insiders")||g.includes("code - insiders")||y.includes("code - insiders")?"VS Code Insiders":t==="vscode"||process.env.VSCODE_GIT_IPC_HANDLE||process.env.VSCODE_PID||process.env.VSCODE_INJECTION||x.includes("code")||g.includes("code")||y.includes("code")?"VS Code":process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS||process.env.TERMINAL_EMULATOR?.toLowerCase().includes("jetbrains")?"JetBrains":process.env.WT_SESSION?"Windows Terminal":"Terminal"},Fd=t=>{switch(t){case"VS Code":return"Code";case"VS Code Insiders":return"Code - Insiders";case"Antigravity":return"Antigravity IDE";default:return t}},pa={Flux:"Workspace",Flow:"Studio",ICU:"Computer Use",FluxCU:"Omni"},xi=t=>{if(!t)return"Workspace";let x=Object.keys(pa).find(g=>g.toLowerCase()===t.toLowerCase());return x?pa[x]:t},ba=t=>{let x=Fd(t),g=hi.homedir();if(process.platform==="win32"){let M=process.env.APPDATA;return M?Ut.join(M,x,"User","keybindings.json"):null}else return process.platform==="darwin"?Ut.join(g,"Library","Application Support",x,"User","keybindings.json"):Ut.join(g,".config",x,"User","keybindings.json")},wa=t=>{let x=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1");return JSON.parse(x)},$d=t=>Array.isArray(t)?t.some(x=>x&&typeof x.key=="string"&&x.key.toLowerCase().replace(/\s+/g,"")==="shift+enter"&&x.command==="workbench.action.terminal.sendSequence"&&x.args&&x.args.text==="\x1B[13;2u"&&typeof x.when=="string"&&x.when.includes("terminalFocus")):!1,ya=t=>{let x=t==="VS Code",g=[];return x?(g.push({label:"Install Manually (VSIX)",url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),g.push({label:"Install from VS Code Marketplace",url:"https://marketplace.visualstudio.com/items?itemName=fluxflow-cli.fluxflow-cli-companion"})):g.push({label:`Download for ${t} (GitHub)`,url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),g.push({label:"Continue to CLI only",action:"dismiss"}),g},Ud=({width:t,height:x,selectedIndex:g,aiProvider:M,theme:y="Dark"})=>{let b=sn(),l=ya(b);return e.createElement(d,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:x},e.createElement(d,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,dr(uo,M,y))),e.createElement(d,{flexDirection:"column",borderStyle:"double",borderColor:"grey",paddingX:3,paddingY:1,width:Math.min(80,t-4)},e.createElement(s,{bold:!0,color:"white",textAlign:"center"},"\u{1F680} UPGRADE YOUR WORKFLOW"),e.createElement(d,{marginY:1,flexDirection:"column",alignItems:"left"},e.createElement(s,null,"You're in ",e.createElement(s,{bold:!0,color:"cyan"},b),", but the ",e.createElement(s,{bold:!0,color:"white"},"FluxFlow-CLI Companion")," is not installed."),e.createElement(d,{flexDirection:"column",marginY:1},e.createElement(s,{color:"gray"}," \u2705 Real-time IDE context & Error Resolution"),e.createElement(s,{color:"gray"}," \u2705 Auto-open files created by agent"),e.createElement(s,{color:"gray"}," \u2705 Native DIFFing for AI edits"),e.createElement(s,{color:"gray"}," \u2705 Direct IDE context sharing"),e.createElement(s,{color:"gray"}," \u2705 Surgical Diagnostic Sync"),e.createElement(s,{color:"gray"}," \u2705 Native Right-Click \u276F Chat integration"),e.createElement(s,{color:"gray"}," \u2705 Live Status in IDE"),e.createElement(s,{color:"gray"}," \u2705 Clickable terminal-to-code links"))),e.createElement(d,{flexDirection:"column",marginTop:1},l.map((T,w)=>e.createElement(d,{key:w},e.createElement(s,{color:g===w?"yellow":"white",bold:g===w},g===w?" \u276F ":" ",T.label)))),e.createElement(d,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Use arrows to navigate, Enter to select)"))))},_d=({width:t,height:x,aiProvider:g,theme:M="Dark",reason:y})=>{let b=sn(),l=y==="version_mismatch";return e.createElement(d,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:x},e.createElement(d,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,dr(uo,g,M))),e.createElement(d,{flexDirection:"column",borderStyle:"double",paddingX:3,paddingY:1,width:Math.min(80,t-4)},e.createElement(s,{bold:!0,color:"yellow",textAlign:"center"},l?"\u26A0 VERSION MISMATCH":"\u26A0 CWD MISMATCH"),e.createElement(d,{marginY:1,flexDirection:"column",alignItems:"left"},e.createElement(s,null,l?"Your FluxFlow CLI version is not supported by the ":"CWD mismatch from ",!l&&e.createElement(s,{bold:!0,color:"white"},b),!l&&" workspace. ","IDE features aren't available right now."),!l&&e.createElement(d,{marginTop:1},e.createElement(s,{dimColor:!0},"Tip: Launch FluxFlow CLI from the same folder open in ",b,"."))),e.createElement(d,{marginTop:1},e.createElement(s,{color:"yellow",bold:!0}," \u276F Understood")),e.createElement(d,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Press Enter to dismiss)"))))},fi=Date.now(),Ta="https://fluxflow-cli.onrender.com/changelog",gi="https://fluxflow-cli.onrender.com/",Hd=Ut.join(Ut.dirname(Od(import.meta.url)),"../package.json"),Ca=JSON.parse(xt.readFileSync(Hd,"utf8")),uo=Ca.version,Xd=Ca.date||"2026-05-20";var Wd=({data:t,onResolve:x,onEdit:g,theme:M="Dark"})=>{let y=ut(M);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:y.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1},e.createElement(s,{color:y.text,bold:!0,underline:!0},t.startsWith("/btw")?"QUESTION":"STEERING HINT"," RESOLUTION")),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:y.text},"The agent already finished the task before your ",t.startsWith("/btw")?"question":"hint"," was consumed.")),e.createElement(d,{marginTop:1,backgroundColor:y.cardBg||y.codeBg||"#222",paddingX:2,width:"100%"},e.createElement(s,{italic:!0,color:y.textMuted},'"',t.replace("/btw","").trim(),'"')),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:y.textDim||y.textMuted},"How would you like to proceed?")),e.createElement(d,{marginTop:0},e.createElement(At,{title:"Select Action",items:[{label:"Send Anyway",value:"send"},{label:"Edit Prompt",value:"edit"}],onSelect:b=>{(typeof b=="object"&&b!==null?b.value:b)==="send"?x(t):g(t)},theme:M})))};var Gd=(()=>{let t=null,x=0;return g=>{let M=Date.now();if(t&&M-x<1e4)return t;let y=[],b=l=>{if(!(y.length>=2e3))try{let T=xt.readdirSync(l);for(let w of T){if(y.length>=2e3)return;if(["node_modules",".git",".gemini","dist","build",".next",".cache","out"].includes(w))continue;let S=Ut.join(l,w);xt.statSync(S).isDirectory()?b(S):y.push({name:_t(w),relativePath:_t(Ut.relative(process.cwd(),S))})}}catch{}};return b(g),t=y,x=M,y}})(),gs="Ctrl + Enter",Vd=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let x=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let g=0;g<x.length-1;g++){let M=x[g],y=x[g+1];if(t>=M.t&&t<=y.t){let b=(t-M.t)/(y.t-M.t);b=b*b*(3-2*b);let l=Math.round(M.r+(y.r-M.r)*b),T=Math.round(M.g+(y.g-M.g)*b),w=Math.round(M.b+(y.b-M.b)*b);return`#${((1<<24)+(l<<16)+(T<<8)+w).toString(16).slice(1)}`}}return"#ff0000"},Yd=e.memo(({sa:t,showTPMEstimate:x=!1})=>{let[g,M]=Q("green"),[y,b]=Q(0),l=it([]),T=it(370),w=it([]),S=it(t.lastChunkTime);return ft(()=>{S.current=t.lastChunkTime},[t.lastChunkTime]),ft(()=>{if(t.status!=="running"){w.current=[];return}if(t.wps>0){let F=w.current;F.push(t.wps),F.length>3&&F.shift()}},[t.status,t.wps,t.lastChunkTime]),ft(()=>{if(t.status!=="running"){b(0);return}let F=setInterval(()=>{let L=S.current,B=L>0?Date.now()-L:0;if(L>0&&B>=1e3)w.current=[],b(0);else if(L>0&&B>500){w.current.length>0&&w.current.shift();let E=w.current;if(E.length>0){let $=E.reduce((U,N)=>U+N,0);b(Math.round($/E.length))}else b(0)}else{let E=w.current;if(E.length>0){let $=E.reduce((U,N)=>U+N,0);b(Math.round($/E.length))}else t.wps>0&&b(Math.round(t.wps))}},750);return()=>clearInterval(F)},[t.status]),ft(()=>{if(t.status!=="running"){l.current=[];return}let F=t.lastChunkTime;if(F>0){let E=l.current;(E.length===0||E[E.length-1]!==F)&&(E.push(F),E.length>10&&E.shift())}let L=()=>{if(!F){M("#00a564");return}let E=l.current,$=0;if(E.length>1){let ie=0;for(let oe=1;oe<E.length;oe++)ie+=E[oe]-E[oe-1];$=ie/(E.length-1)}let U=Date.now()-F,K=U>=2500,G=!K&&$>0?Math.min(U,$*3):U,de=Math.max($,G),ge=K?.4:.2;T.current=T.current*(1-ge)+de*ge,M(Vd(T.current))};L();let B=setInterval(L,100);return()=>clearInterval(B)},[t.status,t.lastChunkTime]),e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:"white"}," \u2022 ",t.title," ",e.createElement(s,{color:"white",dimColor:!0},"(",t.id,")")),e.createElement(s,{color:"white"},e.createElement(s,{color:"white",dimColor:!0,bold:!0},t.currentTool||"Active"),!x&&e.createElement(s,{color:g}," \u25CF"),x&&e.createElement(s,{color:"white",dimColor:!0,bold:!0}," ~",y," tok/s")))});function jd({args:t=[]}){let x=it(1),[g,M]=Q(!1),[y,b]=Q(10),{stdout:l}=kd(),[T,w]=Q(""),[S,F]=Q(0),[L,B]=Q(!1),[E,$]=Q("Flux"),[U,N]=Q(0),[K,G]=Q({columns:l?.columns||80,rows:l?.rows||24}),[de,ge]=Q(0),[ie,oe]=Q(!1),[ue,we]=Q(!1),[Ve,Ie]=Q(null),[pe,Te]=Q(0),me=it(null),qe=it(!1),et=it(0),_e=it(0),ne=it(null),W=it(null),re=it(0),[he,Se]=Q(0),Ee=()=>Se(n=>n+1),Le=it([]),Oe=it(null),Ge=()=>{let n=Le.current;if(n.length>0&&W.current){let o=n.join("");n.length=0,W.current.text=_t(W.current.text+o),Ee()}},yt=()=>{if(Ge(),W.current){let n=_t(W.current.text||""),o="";if(W.current.role==="agent"&&n){let m=Ol(n);m.inside&&typeof m.startIndex=="number"&&m.startIndex>=0&&(o=n.substring(m.startIndex),n=n.substring(0,m.startIndex))}let c=n;if(W.current.role==="think"&&(c=c.replace(/^\r?\n+/,"").replace(/\r?\n+$/,"")),c.trim().length>0||W.current.role!=="agent"){let m={...W.current,text:c,isStreaming:!1};A(f=>{let v=[...f,m];return O(v.length),v})}o?W.current={id:"agent-"+Date.now(),role:"agent",text:o,isStreaming:!0}:W.current=null}Ti.current=0,Ss.current={totalWords:0,startTime:0,wps:0,chunks:[]}},Be=()=>{Oe.current&&clearInterval(Oe.current),Le.current=[],Oe.current=setInterval(()=>{try{let n=Le.current;if(n.length>0&&W.current){let o=1;n.length>85?o=30:n.length>80?o=25:n.length>75?o=20:n.length>65?o=16:n.length>50?o=12:n.length>35?o=8:n.length>15?o=6:n.length>5?o=4:n.length>3&&(o=2);let c="";for(let m=0;m<o&&n.length>0;m++)c+=n.shift();W.current.text=_t(W.current.text+c),Ee()}}catch{}},80)},ye=async()=>{for(;ce.progressiveRendering&&Le.current.length>0;)await new Promise(n=>setTimeout(n,10))},Pe=n=>{if(ce.progressiveRendering&&Oe.current){let o=n.trim();if((o.startsWith("[action:")||o.startsWith("[tool:"))&&o.endsWith("]")){Le.current.push(n);return}let m=fl(n);for(let f of m)Le.current.push(f)}else W.current?W.current.text=_t(W.current.text+n):W.current={id:"agent-"+Date.now(),role:"agent",text:_t(n),isStreaming:!0},Ee()};ft(()=>{let n=sn(),o=!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL,c=setTimeout(()=>{o&&!Tn()&&!me.current&&we(!0)},500),m=setInterval(()=>{Tn()&&(we(!1),Ie(null),me.current=null,qe.current=!1)},1e3);x.current=Date.now();let f=setInterval(()=>{x.current&&(Date.now()-x.current||0)>3e4&&global.gc&&(async()=>{for(let a=0;a<1;a++)global.gc(),await new Promise(h=>setImmediate(h));x.current=Date.now()})()},3e3);return()=>{clearTimeout(c),clearInterval(m),clearInterval(f)}},[]),ft(()=>{(async()=>{try{let o=await js(),c=o?.systemSettings||{},m=c.CustomSubAgent,f=c.SubAgentModel;if(!m||!f||f==="Default")return;let v=process.env.SUBAGENT_MODEL?process.env.SUBAGENT_MODEL.trim():null,u=process.env.SUBAGENT_PROVIDER?process.env.SUBAGENT_PROVIDER.trim():null,a=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex"],C=(te=>{if(!te)return null;let X=te.toLowerCase();return X==="google"?"Google":X==="deepseek"?"DeepSeek":X==="openrouter"?"OpenRouter":X==="nvidia"?"NVIDIA":X==="mistral"?"Mistral":X==="ollama"?"Ollama":X==="inferx"?"InferX":X==="sensenova"?"SenseNova":X==="poolside"?"Poolside":X==="9router"?"9router":X==="aihubmix"||X==="aihub"?"AIHubMix":X==="explabs"||X==="experientiallabs"||X==="experimentallabs"||X==="experiential labs"||X==="experimental labs"||X==="experiential"||X==="experimental"?"ExpLabs":X==="tokenharbor"||X==="token harbor"||X==="token_harbor"||X==="thk"?"TokenHarbor":X==="apinex"||X==="apx"?"APInex":X==="infron"?"Infron":null})(u);if(v&&!C){let te=o.aiProvider||P||"Google";A(X=>(O(X.length+1),[...X,{id:"subagent-env-noprov-"+Date.now(),role:"system",text:`[SUBAGENT CONFIG] SUBAGENT_MODEL found in ENV but SUBAGENT_PROVIDER is missing/invalid. Active provider (${te}) will be used.`,isMeta:!0}]))}if(f==="ENV"){v||A(te=>(O(te.length+1),[...te,{id:"subagent-model-noenv-"+Date.now(),role:"system",text:"No SubAgent model is found in ENV, Using Deafult until changed",isMeta:!0}]));return}let _=o.aiProvider||P||"Google",H=o.apiTier||gt||"Free",Y=o.quotas||$e||{},q=new Set;(Zo(_,H)||[]).forEach(te=>{let X=typeof te=="string"?te:te.cmd||te.name||te.id||String(te);X&&q.add(X)});for(let te of a)try{if(await Ro(te)){let Ze=Y?.providerTiers?.[te]||"Free";(Zo(te,Ze)||[]).forEach(We=>{let Je=typeof We=="string"?We:We.cmd||We.name||We.id||String(We);Je&&q.add(Je)})}}catch{}let Z=q.has(f);v?v!==f&&A(te=>(O(te.length+1),[...te,{id:"subagent-model-env-"+Date.now(),role:"system",text:"Current Seleted Sub-Agent model is not available in this provider. Using model from ENV unless changed.",isMeta:!0}])):Z||A(te=>(O(te.length+1),[...te,{id:"subagent-model-err-"+Date.now(),role:"system",text:"Current Seleted Sub-Agent model is not available in this provider. Using Default until changed",isMeta:!0}]))}catch{}})()},[]);let ee=Vn(()=>{let n={};for(let o=0;o<t.length;o++)if(t[o]==="--key"&&t[o+1]){let m=t[o+1];if(n.key=m,m.includes("@")){let f=m.split("@"),v=f[0],u=f[1].toLowerCase();if(["google","deepseek","openrouter","nvidia","mistral","ollama","inferx","sensenova","aihubmix","aihub","poolside","pool","9router","9r","explabs","tokenharbor","token_harbor","thk","infron","apinex","apx"].includes(u)){let a="Google";u==="google"?a="Google":u==="deepseek"?a="DeepSeek":u==="openrouter"?a="OpenRouter":u==="nvidia"?a="NVIDIA":u==="mistral"?a="Mistral":u==="ollama"?a="Ollama":u==="inferx"?a="InferX":u==="sensenova"?a="SenseNova":u==="poolside"||u==="pool"?a="Poolside":u==="9router"||u==="9r"?a="9router":u==="aihubmix"||u==="aihub"?a="AIHubMix":u==="explabs"?a="ExpLabs":u==="tokenharbor"||u==="token_harbor"||u==="thk"?a="TokenHarbor":u==="infron"?a="Infron":(u==="apinex"||u==="apx")&&(a="APInex"),n.key=v,n.provider=a}}}for(let o=0;o<t.length;o++){let c=t[o];if(c==="--key"){o++;continue}if(c==="--model"&&t[o+1])n.model=t[o+1],o++;else if(c==="--memory"&&t[o+1])n.memory=t[o+1].toLowerCase(),o++;else if(c==="--resume"&&t[o+1])n.resume=t[o+1],o++;else if(c==="--package"&&t[o+1]){let m=t[o+1].toLowerCase();["npm","pnpm","yarn","bun"].includes(m)&&(n.package=m),o++}else if(c==="--auto-del"&&t[o+1]){let m=t[o+1].toLowerCase();["1d","7d","30d"].includes(m)&&(n.autoDel=m),o++}else if(c==="--auto-exec"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(c==="--yolo"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(c==="--external-access"&&t[o+1])n.externalAccess=t[o+1].toLowerCase(),o++;else if(c==="--mode"&&t[o+1]){let f=t[o+1].toLowerCase();if(["flux","flow","icu","computer","fluxcu"].includes(f)){let v="Flux";f==="flux"?v="Flux":f==="flow"?v="Flow":f==="icu"||f==="computer"?v="ICU":f==="fluxcu"&&(v="FluxCU"),n.mode=v}o++}else if(c==="--thinking"&&t[o+1]){let f=t[o+1].toLowerCase();if(["fast","low","medium","high","xhigh","standard"].includes(f)){let v="Medium";f==="fast"?v="Fast":f==="low"?v="Low":f==="standard"?v="Standard":f==="medium"?v="Medium":f==="high"?v="High":f==="xhigh"&&(v="xHigh"),n.thinking=v}o++}else if(c==="--provider"&&t[o+1]){let m=t[o+1].toLowerCase();if(["google","deepseek","openrouter","nvidia","mistral","ollama","inferx","sensenova","aihubmix","aihub","poolside","pool","9router","9r","explabs","tokenharbor","token_harbor","thk","infron","apinex","apx"].includes(m)){let f="Google";m==="google"?f="Google":m==="deepseek"?f="DeepSeek":m==="openrouter"?f="OpenRouter":m==="nvidia"?f="NVIDIA":m==="mistral"?f="Mistral":m==="ollama"?f="Ollama":m==="inferx"?f="InferX":m==="sensenova"?f="SenseNova":m==="poolside"||m==="pool"?f="Poolside":m==="9router"||m==="9r"?f="9router":m==="aihubmix"||m==="aihub"?f="AIHubMix":m==="explabs"?f="ExpLabs":m==="tokenharbor"||m==="token_harbor"||m==="thk"?f="TokenHarbor":m==="infron"?f="Infron":(m==="apinex"||m==="apx")&&(f="APInex"),n.provider=f}o++}else(c==="--resume"||c==="-r")&&t[o+1]?(n.resume=t[o+1],o++):c==="--playground"?n.playground=!0:(c==="--original-cwd"||c==="--orginal-cwd")&&t[o+1]&&(n.originalCwd=t[o+1],o++)}return n},[t]),Ye=async(n=!1,o=null)=>{let c=o||ce;n&&A(m=>(O(m.length+1),[...m,{id:"check-"+Date.now(),role:"system",text:"\u2726 Checking for updates...",isMeta:!0}]));try{let f=await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json(),v=f["dist-tags"]?.latest,u=f["dist-tags"]?.stable;if(v&&hs(v),v&&v!==uo){let a=v===u?`v${v}`:`v${v}`;!n&&c.autoUpdate?J("update"):A(h=>{let C=[...h],_=n?C.length:Math.min(C.length,3);return C.splice(_,0,{id:"update-"+Date.now(),role:"system",text:`A new version (${a}) is here.
63
63
 
64
64
  \u2022 Type \`/update latest\` to apply the update.
65
65
  \u2022 Type \`/changelog\` to view the release notes.`,isUpdateNotification:!0,isMeta:!0}),C})}else n&&A(a=>{O(a.length+1);let h=v&&v===u?`${uo}`:uo;return[...a,{id:"uptodate-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Already up to date (${h}).
66
- \u2800`,isMeta:!0}]})}catch(m){n&&A(x=>(O(x.length+1),[...x,{id:"check-err-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to check for updates: ${m.message}.
67
- \u2800`,isMeta:!0}]))}};ft(()=>{let n=l?.columns||80,o=()=>{let c=l?.columns||80,m=l?.rows||24;c!==n&&(n=c,l.write("\x1B[2J\x1B[3J\x1B[H")),G({columns:c,rows:m})};return l.on("resize",o),()=>{l.off("resize",o)}},[l]);let[Qe,Ct]=Q("Medium"),[P,dt]=Q("Google"),[Kn,Mr]=Q(0),[ln,fs]=Q(null),[an,gs]=Q(!1),[nt,Jt]=Q(no("Google","Free")||"gemma-4-31b-it"),[Sr,eo]=Q(!1),[So,vr]=Q(!1),[Me,ae]=Q(nl("gemma_janitor_fallback_google")||"gemma-4-26b-a4b-it"),[p,k]=Q(!0),[ve,He]=Q(!0),ct=it(0),[ot,Xe]=Q(null),[mo,ze]=Q(""),xo=async n=>{let o=ha(n);if(o)try{await xt.ensureDir(Ut.dirname(o));let c=[];if(xt.existsSync(o)){let m=xt.readFileSync(o,"utf8").trim();if(m)try{c=pa(m)}catch{c=[]}}Array.isArray(c)||(c=[]),c.push({key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:"\x1B[13;2u"},when:"terminalFocus"}),xt.writeFileSync(o,JSON.stringify(c,null,4),"utf8"),xs="Shift + Enter",A(m=>(O(m.length+1),[...m,{id:"kb-success-"+Date.now(),role:"system",text:`\u2726 Successfully configured Shift+Enter in your ${n} keybindings!
66
+ \u2800`,isMeta:!0}]})}catch(m){n&&A(f=>(O(f.length+1),[...f,{id:"check-err-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to check for updates: ${m.message}.
67
+ \u2800`,isMeta:!0}]))}};ft(()=>{let n=l?.columns||80,o=()=>{let c=l?.columns||80,m=l?.rows||24;c!==n&&(n=c,l.write("\x1B[2J\x1B[3J\x1B[H")),G({columns:c,rows:m})};return l.on("resize",o),()=>{l.off("resize",o)}},[l]);let[Qe,Ct]=Q("Medium"),[P,dt]=Q("Google"),[Kn,Sr]=Q(0),[ln,hs]=Q(null),[an,ps]=Q(!1),[nt,Jt]=Q(no("Google","Free")||"gemma-4-31b-it"),[vr,eo]=Q(!1),[So,Er]=Q(!1),[Me,ae]=Q(ll("gemma_janitor_fallback_google")||"gemma-4-26b-a4b-it"),[p,k]=Q(!0),[ve,He]=Q(!0),ct=it(0),[ot,Xe]=Q(null),[mo,ze]=Q(""),xo=async n=>{let o=ba(n);if(o)try{await xt.ensureDir(Ut.dirname(o));let c=[];if(xt.existsSync(o)){let m=xt.readFileSync(o,"utf8").trim();if(m)try{c=wa(m)}catch{c=[]}}Array.isArray(c)||(c=[]),c.push({key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:"\x1B[13;2u"},when:"terminalFocus"}),xt.writeFileSync(o,JSON.stringify(c,null,4),"utf8"),gs="Shift + Enter",A(m=>(O(m.length+1),[...m,{id:"kb-success-"+Date.now(),role:"system",text:`\u2726 Successfully configured Shift+Enter in your ${n} keybindings!
68
68
  `,isMeta:!0}]))}catch(c){A(m=>(O(m.length+1),[...m,{id:"kb-error-"+Date.now(),role:"system",text:`\u2726 Failed to update keybindings: ${c.message}.
69
- \u2800`,isMeta:!0}]))}},[Tt,J]=Q("chat"),[Er,hs]=Q([]),Br=w.startsWith("/k");ft(()=>{if(!Br)return;let n=!0,o=async()=>{try{let m=await Nl(process.pid);n&&hs(m||[])}catch{}};o();let c=setInterval(o,5e3);return()=>{n=!1,clearInterval(c)}},[Br]);let[gt,vo]=Q("Free"),[$e,wt]=Q({limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}}),[Pt,St]=Q(null),[No,ya]=Q("chat"),[qo,ps]=Q("settings"),[Mn,Ca]=Q([]),[jd,Ma]=Q(0),[xi,Dr]=Q(0),[bs,fi]=Q({}),[qn,Qn]=Q({}),[Sn,fo]=Q(0),[ce,Ot]=Q({memory:!0,theme:"Dark",compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",clipboardContext:!1}),r=Vn(()=>ut(ce.theme),[ce.theme]),[cn,Ts]=Q({preset:"Default",name:null,nickname:null,instructions:null}),[Fo,Ir]=Q({keyType:"Default",quality:"Low-High",apiKey:""}),[zn,ws]=Q({enabled:!1,model:"Default",provider:"",baseUrl:""}),[Eo,Qo]=Q({tokens:0}),[gi,ys]=Q(0),hi=it(0),Cs=it({totalWords:0,startTime:0,wps:0,chunks:[]}),[pi,bi]=Q(0),[Ti,Sa]=Q(0),[to,wi]=Q(0),[va,vn]=Q(0),En=it(0),[Ea,Bn]=Q(0),[Ba,dn]=Q(0),jt=it([]),Dn=it(0),[Da,In]=Q(0),An=it(0),[un,yi]=Q(0),[go,Ci]=Q(0),[kn,Mi]=Q(0),[Kd,Ia]=Q(0),[qd,Aa]=Q(0),[Qd,ka]=Q(0),[Ar,La]=Q(0),[kr,Pa]=Q(0),[Lr,Oa]=Q(0),[Si,Na]=Q(0),[Ln,Ms]=Q(null),[Jn,Ss]=Q(null),[Pr,vi]=Q(null),[Pn,Zn]=Q("daily"),[Fa,ho]=Q(0),[Rn,er]=Q(""),On="flow-playground",[ht,Or]=Q(t.includes("--playground")?On:Qs());ft(()=>{if(Uo.current)return;let n=to-En.current,o=go-Dn.current,c=un-An.current;vn(n),Bn(o),In(Math.max(0,c)),ht&&yl(ht,n,Eo.tokens).catch(()=>{})},[to,go,un,ht,Eo.tokens]),ft(()=>{Tt==="apiTier"&&(async()=>{let o=await jr();Ms(o);let c=await Kr();Ss(c);let m=await Ys($e.resetDay||1);vi(m)})()},[Tt,$e.resetDay]);let[po,Ei]=Q(null),[Nn,Fn]=Q(""),[tr,Bi]=Q(!1),[vs,$a]=Q([]),[zd,Jd]=Q(0),Es=it(!0),Di=it(!0),Bs=it(P),Ds=it(!1),Is=it(!0);ft(()=>{(Sr||So)&&(A(n=>(O(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Wild${So?"er":""}Card Tooling:
69
+ \u2800`,isMeta:!0}]))}},[wt,J]=Q("chat"),[Br,bs]=Q([]),Dr=T.startsWith("/k");ft(()=>{if(!Dr)return;let n=!0,o=async()=>{try{let m=await _l(process.pid);n&&bs(m||[])}catch{}};o();let c=setInterval(o,5e3);return()=>{n=!1,clearInterval(c)}},[Dr]);let[gt,vo]=Q("Free"),[$e,Tt]=Q({limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}}),[Pt,St]=Q(null),[No,Ma]=Q("chat"),[qo,ws]=Q("settings"),[Mn,Sa]=Q([]),[Kd,va]=Q(0),[pi,Ir]=Q(0),[Ts,bi]=Q({}),[qn,Qn]=Q({}),[Sn,fo]=Q(0),[ce,Ot]=Q({memory:!0,theme:"Dark",compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",clipboardContext:!1}),r=Vn(()=>ut(ce.theme),[ce.theme]),[cn,ys]=Q({preset:"Default",name:null,nickname:null,instructions:null}),[Fo,Ar]=Q({keyType:"Default",quality:"Low-High",apiKey:""}),[zn,Cs]=Q({enabled:!1,model:"Default",provider:"",baseUrl:""}),[Eo,Qo]=Q({tokens:0}),[wi,Ms]=Q(0),Ti=it(0),Ss=it({totalWords:0,startTime:0,wps:0,chunks:[]}),[yi,Ci]=Q(0),[Mi,Ea]=Q(0),[to,Si]=Q(0),[Ba,vn]=Q(0),En=it(0),[Da,Bn]=Q(0),[Ia,dn]=Q(0),jt=it([]),Dn=it(0),[Aa,In]=Q(0),An=it(0),[un,vi]=Q(0),[go,Ei]=Q(0),[kn,Bi]=Q(0),[qd,ka]=Q(0),[Qd,La]=Q(0),[zd,Pa]=Q(0),[kr,Oa]=Q(0),[Lr,Na]=Q(0),[Pr,Fa]=Q(0),[Di,$a]=Q(0),[Ln,vs]=Q(null),[Jn,Es]=Q(null),[Or,Ii]=Q(null),[Pn,Zn]=Q("daily"),[Ua,ho]=Q(0),[Rn,er]=Q(""),On="flow-playground",[ht,Nr]=Q(t.includes("--playground")?On:Js());ft(()=>{if(Uo.current)return;let n=to-En.current,o=go-Dn.current,c=un-An.current;vn(n),Bn(o),In(Math.max(0,c)),ht&&vl(ht,n,Eo.tokens).catch(()=>{})},[to,go,un,ht,Eo.tokens]),ft(()=>{wt==="apiTier"&&(async()=>{let o=await Kr();vs(o);let c=await qr();Es(c);let m=await Ks($e.resetDay||1);Ii(m)})()},[wt,$e.resetDay]);let[po,Ai]=Q(null),[Nn,Fn]=Q(""),[tr,ki]=Q(!1),[Bs,_a]=Q([]),[Jd,Zd]=Q(0),Ds=it(!0),Li=it(!0),Is=it(P),As=it(!1),ks=it(!0);ft(()=>{(vr||So)&&(A(n=>(O(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Wild${So?"er":""}Card Tooling:
70
70
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
71
- \u2800`,isMeta:!0}])),eo(!1),vr(!1)),process.env.forcedReasoning&&(A(n=>(O(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Forced Reasoning:
71
+ \u2800`,isMeta:!0}])),eo(!1),Er(!1)),process.env.forcedReasoning&&(A(n=>(O(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Forced Reasoning:
72
72
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
73
- \u2800`,isMeta:!0}])),process.env.forcedReasoning=!1),Qe==="xHigh"&&!Es.current&&Ct("Medium")},[nt]);let Ii;ft(()=>{if(Di.current){Ii=setTimeout(()=>{Di.current=!1,Bs.current=P},1e3);return}return Bs.current!==P&&(Bs.current=P,Ct(P==="SenseNova"||P==="Poolside"?"High":"Low")),()=>{clearTimeout(Ii)}},[P,nt]);let Ai;ft(()=>{if(!ot)return;if(Es.current){Ai=setTimeout(()=>{Es.current=!1},1500);return}let n=no(P,gt),o=n;return n.includes("gemma")?o="Gemma":n.includes("deepseek")?o="DeepSeek Flash":n.includes("devstral")?o="Devstral":n.includes("mistral")?o="Mistral":n.includes("gemini")&&(o="Gemini Flash"),Jt(n),Xt({apiTier:gt,activeModel:n}),()=>{clearTimeout(Ai)}},[gt,P,ot]);let Ua=Vn(()=>{let n=sn();return{isIDE:!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS,get shortcut(){return xs}}},[]),Nr=it(null),As=it("");ft(()=>{Nr.current=po},[po]),ft(()=>{As.current=Nn},[Nn]);let[_a,Ha]=Q(!1),[so,$n]=Q(null),[mn,ks]=Q(null),$o=n=>{$n(null),J("chat")},ki=n=>{let o=Math.floor(n/3600),c=Math.floor(n%3600/60),m=n%60,x=[];return o>0&&x.push(`${o}h`),(c>0||o>0)&&x.push(`${c}m`),x.push(`${m}s`),x.join(" ")},xn=n=>n<1e3?`${n}ms`:ki(Math.floor(n/1e3)),[zo,Ls]=Q(null),[Ps,Li]=Q(""),[Xa,Wa]=Q(!1),[Pi,or]=Q(0),nr;ft(()=>{let n;if(zo&&ce.loadingPhrases!==!1){let o=m=>{Li(m[Math.floor(Math.random()*m.length)])},c=()=>{jn?o(jn):process.env.HALLOWEEN_EEGG==="true"||process.env.HALLOWEEN_EEGG===!0?import("./halloween_witty_phrases-IJGE3RWX.js").then(({HALLOWEEN_WITTY_PHRASES:x})=>{jn=x,o(jn)}):import("./witty_phrases-EEDEYYAH.js").then(({WITTY_LOADING_PHRASES:x})=>{jn=x,o(jn)})};Ps||c(),n=setInterval(c,1e4)}else Li("");return()=>{clearInterval(n)}},[zo,ce]);let[Zd,Ga]=Q(!0),[Un,Os]=Q(!1),[Fr,Oi]=Q(!1),[Va,Ya]=Q(!1),[Ni,Rd]=Q(null),[Fi,rr]=Q(0),[ja,$i]=Q([]),fn=it(null),Uo=it(!1);ft(()=>()=>{fn.current&&clearTimeout(fn.current)},[]);let Ns=it(!1),[sr,Fs]=Q(null),[Ka,$s]=Q(null),[eu,qa]=Q(null);ft(()=>rr(0),[w]);let[kt,Qa]=Q(()=>{let n={id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0},o=process.cwd()===mi.homedir(),c=(()=>{let x=process.cwd().toLowerCase();if(process.platform==="win32"){let v=process.env.SystemRoot?.toLowerCase()||"c:\\windows",u=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",a=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return x.startsWith(v)||x.startsWith(u)||x.startsWith(a)}else return x==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(u=>x.startsWith(u))})(),m=[n];return c?m.push({id:"system-warning",role:"system",text:"[CRITICAL SECURITY ALERT] SYSTEM DIRECTORY DETECTED",subText:`You are currently in a PROTECTED SYSTEM DIRECTORY (${process.cwd()}). Operating here is EXTREMELY dangerous as the agent could accidentally corrupt your OS or installed applications. Open FluxFlow in project folder to work safely.`,isHomeWarning:!0}):o&&m.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${mi.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please open FluxFlow in project folder.`,isHomeWarning:!0}),m}),A=n=>{Qa(o=>{let c=typeof n=="function"?n(o):n;if(c.length>1){let m=c[c.length-1],x=c[c.length-2];if(m?.text?.includes("Request Cancelled")&&x?.text?.includes("Request Cancelled"))return c.slice(0,-1)}return c})},_o=it(null),[Ui,za]=Q(""),[_i,Hi]=Q(!1),Xi=it(""),Wi=it(null);ft(()=>{if(kt.length===0)return;let n=kt[kt.length-1];if(n&&(n.role==="agent"||n.role==="assistant")){let c=(n.text||"").match(/\[ANSWER\]([\s\S]*?)(?:\[\/ANSWER\]|$)/i);if(c){let m=c[1].trim();m&&m!==Xi.current&&(za(m),Xi.current=m,Wi.current!==n.id&&Hi(!0))}}},[kt]);let[Jo,O]=Q(kt.length),[gn,Us]=Q(0),tu=it([]),oo=it({completedIndex:0,columns:0,historicalBlocks:[],seenSelections:new Set,chatId:"",clearKey:0,theme:""}),Gi=Vn(()=>{let n=K.columns||80,o=/Selection: (.*)/,c=[],m=new Set,x=oo.current.columns!==n,v=Jo<oo.current.completedIndex,u=oo.current.chatId!==ht,a=oo.current.clearKey!==gn,h=oo.current.theme!==ce.theme;if(x||v||u||a||h){let q=kt.slice(0,Jo);for(let j=0;j<q.length;j++){let Z=q[j];if(Z.isAskRecord&&Z.text){let X=Z.text.match(o);if(X&&X[1].trim()){let Ze=X[1].trim();if(m.has(Ze))continue;m.add(Ze)}}let te=cr(Z,n);for(let X=0;X<te.completed.length;X++)c.push(te.completed[X]);for(let X=0;X<te.active.length;X++)c.push(te.active[X])}oo.current={completedIndex:Jo,columns:n,historicalBlocks:c,seenSelections:new Set(m),chatId:ht,clearKey:gn,theme:ce.theme}}else if(c=oo.current.historicalBlocks,m=oo.current.seenSelections,Jo>oo.current.completedIndex){c=[...c],m=new Set(m);let q=kt.slice(oo.current.completedIndex,Jo);for(let j=0;j<q.length;j++){let Z=q[j];if(Z.isAskRecord&&Z.text){let X=Z.text.match(o);if(X&&X[1].trim()){let Ze=X[1].trim();if(m.has(Ze))continue;m.add(Ze)}}let te=cr(Z,n);for(let X=0;X<te.completed.length;X++)c.push(te.completed[X]);for(let X=0;X<te.active.length;X++)c.push(te.active[X])}oo.current={completedIndex:Jo,columns:n,historicalBlocks:c,seenSelections:m,chatId:ht,clearKey:gn}}let C=kt.slice(Jo),_=[],H=[];for(let q=0;q<C.length;q++){let j=C[q];if(j.isAskRecord&&j.text){let te=j.text.match(o);if(te&&te[1].trim()){let X=te[1].trim();if(m.has(X))continue}}let Z=cr(j,n);for(let te=0;te<Z.completed.length;te++)_.push(Z.completed[te]);for(let te=0;te<Z.active.length;te++)H.push(Z.active[te])}if(W.current){let q=cr(W.current,n);for(let j=0;j<q.completed.length;j++)_.push(q.completed[j]);for(let j=0;j<q.active.length;j++)H.push(q.active[j])}let Y=_.length===0?c:c.concat(_);return Y.length>=75e3&&(Y=[...Y],Y.push({key:`memory-warning-block-${Y.length}`,msg:{role:"system",text:"\u26A0\uFE0F MEMORY WARNING: CHAT IS GETTING VERY LONG",subText:`This session has reached ${Y.length} blocks. To maintain optimal performance and prevent high memory usage, it is highly recommended to save and start a clean chat with /clear.`,isHomeWarning:!0},type:"full-message"})),{completed:Y,active:H}},[kt,Jo,K.columns,gn,ht,he]),Ja=Vn(()=>{if(!po||!Nn)return!1;let n=Nn.trim();return n.endsWith("?")||n.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(n)||/\([yYnN]\)\s*$/.test(n)},[po,Nn]);Id((n,o)=>{if(!(n==="\x1B[I"||n==="\x1B[O"||n==="[I"||n==="[O")){if(o.ctrl&&(n.toLowerCase()==="r"||n===""||n==="")){Yl();return}if(Tt==="stats"){if(Pn==="dailyModelBreakdown"||Pn==="modelBreakdown"){if(o.tab&&!o.shift){Zn(m=>m==="dailyModelBreakdown"?"modelBreakdown":"dailyModelBreakdown"),ho(0);return}if(o.space||n===" "){Zn(m=>m==="dailyModelBreakdown"?"daily":"monthly"),ho(0),er("");return}if(o.escape){if(Rn){er(""),ho(0);return}J("chat");return}if(o.upArrow){ho(m=>Math.max(0,m-1));return}if(o.downArrow){ho(m=>Math.min(_e.current,m+1));return}if(o.backspace||o.delete){er(m=>m.slice(0,-1)),ho(0);return}if(n&&n!==" "&&!o.space&&!o.ctrl&&!o.meta&&n.length===1&&n.charCodeAt(0)>=32){er(m=>m+n),ho(0);return}return}if(o.tab&&!o.shift){Zn(m=>m==="daily"?"monthly":"daily"),ho(0);return}if(o.space||n===" "){Zn(m=>m==="daily"?"dailyModelBreakdown":"modelBreakdown"),ho(0),er("");return}if(o.upArrow){ho(m=>Math.max(0,m-1));return}if(o.downArrow){ho(m=>Math.min(_e.current,m+1));return}}if(Ve){(o.return||o.escape)&&(qe.current=!0,Ie(null));return}if(ue){let c=sn(),m=Ta(c);if(o.upArrow)we(x=>x>0?x-1:m.length-1);else if(o.downArrow)we(x=>x<m.length-1?x+1:0);else if(o.return){let x=m[pe];if(x.action==="dismiss")Te(!1);else if(x.url){let v=process.platform==="win32"?`start ${x.url}`:process.platform==="darwin"?`open ${x.url}`:`xdg-open ${x.url}`;Oo(v),Te(!1)}}return}if(o.tab&&po){Bi(c=>!c);return}if(tr&&po){let c=o.pageUp||n==="\x1B[5~"||n==="[5~",m=o.pageDown||n==="\x1B[6~"||n==="[6~",x=o.ctrl&&(n==="o"||n==="");if(c||m||x)return;if(o.return)if(Hn)ro("\r");else{let v=process.platform==="win32";ro(v?`\r
73
+ \u2800`,isMeta:!0}])),process.env.forcedReasoning=!1),Qe==="xHigh"&&!Ds.current&&Ct("Medium")},[nt]);let Pi;ft(()=>{if(Li.current){Pi=setTimeout(()=>{Li.current=!1,Is.current=P},1e3);return}return Is.current!==P&&(Is.current=P,Ct(P==="SenseNova"||P==="Poolside"?"High":"Low")),()=>{clearTimeout(Pi)}},[P,nt]);let Oi;ft(()=>{if(!ot)return;if(Ds.current){Oi=setTimeout(()=>{Ds.current=!1},1500);return}let n=no(P,gt),o=n;return n.includes("gemma")?o="Gemma":n.includes("deepseek")?o="DeepSeek Flash":n.includes("devstral")?o="Devstral":n.includes("mistral")?o="Mistral":n.includes("gemini")&&(o="Gemini Flash"),Jt(n),Xt({apiTier:gt,activeModel:n}),()=>{clearTimeout(Oi)}},[gt,P,ot]);let Ha=Vn(()=>{let n=sn();return{isIDE:!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS,get shortcut(){return gs}}},[]),Fr=it(null),Ls=it("");ft(()=>{Fr.current=po},[po]),ft(()=>{Ls.current=Nn},[Nn]);let[Xa,Wa]=Q(!1),[so,$n]=Q(null),[mn,Ps]=Q(null),$o=n=>{$n(null),J("chat")},Ni=n=>{let o=Math.floor(n/3600),c=Math.floor(n%3600/60),m=n%60,f=[];return o>0&&f.push(`${o}h`),(c>0||o>0)&&f.push(`${c}m`),f.push(`${m}s`),f.join(" ")},xn=n=>n<1e3?`${n}ms`:Ni(Math.floor(n/1e3)),[zo,Os]=Q(null),[Ns,Fi]=Q(""),[Ga,Va]=Q(!1),[$i,or]=Q(0),nr;ft(()=>{let n;if(zo&&ce.loadingPhrases!==!1){let o=m=>{Fi(m[Math.floor(Math.random()*m.length)])},c=()=>{jn?o(jn):process.env.HALLOWEEN_EEGG==="true"||process.env.HALLOWEEN_EEGG===!0?import("./halloween_witty_phrases-IJGE3RWX.js").then(({HALLOWEEN_WITTY_PHRASES:f})=>{jn=f,o(jn)}):import("./witty_phrases-EEDEYYAH.js").then(({WITTY_LOADING_PHRASES:f})=>{jn=f,o(jn)})};Ns||c(),n=setInterval(c,1e4)}else Fi("");return()=>{clearInterval(n)}},[zo,ce]);let[Rd,Ya]=Q(!0),[Un,Fs]=Q(!1),[$r,Ui]=Q(!1),[ja,Ka]=Q(!1),[_i,eu]=Q(null),[Hi,rr]=Q(0),[qa,Xi]=Q([]),fn=it(null),Uo=it(!1);ft(()=>()=>{fn.current&&clearTimeout(fn.current)},[]);let $s=it(!1),[sr,Us]=Q(null),[Qa,_s]=Q(null),[tu,za]=Q(null);ft(()=>rr(0),[T]);let[kt,Ja]=Q(()=>{let n={id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0},o=process.cwd()===hi.homedir(),c=(()=>{let f=process.cwd().toLowerCase();if(process.platform==="win32"){let v=process.env.SystemRoot?.toLowerCase()||"c:\\windows",u=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",a=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return f.startsWith(v)||f.startsWith(u)||f.startsWith(a)}else return f==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(u=>f.startsWith(u))})(),m=[n];return c?m.push({id:"system-warning",role:"system",text:"[CRITICAL SECURITY ALERT] SYSTEM DIRECTORY DETECTED",subText:`You are currently in a PROTECTED SYSTEM DIRECTORY (${process.cwd()}). Operating here is EXTREMELY dangerous as the agent could accidentally corrupt your OS or installed applications. Open FluxFlow in project folder to work safely.`,isHomeWarning:!0}):o&&m.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${hi.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please open FluxFlow in project folder.`,isHomeWarning:!0}),m}),A=n=>{Ja(o=>{let c=typeof n=="function"?n(o):n;if(c.length>1){let m=c[c.length-1],f=c[c.length-2];if(m?.text?.includes("Request Cancelled")&&f?.text?.includes("Request Cancelled"))return c.slice(0,-1)}return c})},_o=it(null),[Wi,Za]=Q(""),[Gi,Vi]=Q(!1),Yi=it(""),ji=it(null);ft(()=>{if(kt.length===0)return;let n=kt[kt.length-1];if(n&&(n.role==="agent"||n.role==="assistant")){let c=(n.text||"").match(/\[ANSWER\]([\s\S]*?)(?:\[\/ANSWER\]|$)/i);if(c){let m=c[1].trim();m&&m!==Yi.current&&(Za(m),Yi.current=m,ji.current!==n.id&&Vi(!0))}}},[kt]);let[Jo,O]=Q(kt.length),[gn,Hs]=Q(0),ou=it([]),oo=it({completedIndex:0,columns:0,historicalBlocks:[],seenSelections:new Set,chatId:"",clearKey:0,theme:""}),Ki=Vn(()=>{let n=K.columns||80,o=/Selection: (.*)/,c=[],m=new Set,f=oo.current.columns!==n,v=Jo<oo.current.completedIndex,u=oo.current.chatId!==ht,a=oo.current.clearKey!==gn,h=oo.current.theme!==ce.theme;if(f||v||u||a||h){let q=kt.slice(0,Jo);for(let j=0;j<q.length;j++){let Z=q[j];if(Z.isAskRecord&&Z.text){let X=Z.text.match(o);if(X&&X[1].trim()){let Ze=X[1].trim();if(m.has(Ze))continue;m.add(Ze)}}let te=cr(Z,n);for(let X=0;X<te.completed.length;X++)c.push(te.completed[X]);for(let X=0;X<te.active.length;X++)c.push(te.active[X])}oo.current={completedIndex:Jo,columns:n,historicalBlocks:c,seenSelections:new Set(m),chatId:ht,clearKey:gn,theme:ce.theme}}else if(c=oo.current.historicalBlocks,m=oo.current.seenSelections,Jo>oo.current.completedIndex){c=[...c],m=new Set(m);let q=kt.slice(oo.current.completedIndex,Jo);for(let j=0;j<q.length;j++){let Z=q[j];if(Z.isAskRecord&&Z.text){let X=Z.text.match(o);if(X&&X[1].trim()){let Ze=X[1].trim();if(m.has(Ze))continue;m.add(Ze)}}let te=cr(Z,n);for(let X=0;X<te.completed.length;X++)c.push(te.completed[X]);for(let X=0;X<te.active.length;X++)c.push(te.active[X])}oo.current={completedIndex:Jo,columns:n,historicalBlocks:c,seenSelections:m,chatId:ht,clearKey:gn}}let C=kt.slice(Jo),_=[],H=[];for(let q=0;q<C.length;q++){let j=C[q];if(j.isAskRecord&&j.text){let te=j.text.match(o);if(te&&te[1].trim()){let X=te[1].trim();if(m.has(X))continue}}let Z=cr(j,n);for(let te=0;te<Z.completed.length;te++)_.push(Z.completed[te]);for(let te=0;te<Z.active.length;te++)H.push(Z.active[te])}if(W.current){let q=cr(W.current,n);for(let j=0;j<q.completed.length;j++)_.push(q.completed[j]);for(let j=0;j<q.active.length;j++)H.push(q.active[j])}let Y=_.length===0?c:c.concat(_);return Y.length>=75e3&&(Y=[...Y],Y.push({key:`memory-warning-block-${Y.length}`,msg:{role:"system",text:"\u26A0\uFE0F MEMORY WARNING: CHAT IS GETTING VERY LONG",subText:`This session has reached ${Y.length} blocks. To maintain optimal performance and prevent high memory usage, it is highly recommended to save and start a clean chat with /clear.`,isHomeWarning:!0},type:"full-message"})),{completed:Y,active:H}},[kt,Jo,K.columns,gn,ht,he]),Ra=Vn(()=>{if(!po||!Nn)return!1;let n=Nn.trim();return n.endsWith("?")||n.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(n)||/\([yYnN]\)\s*$/.test(n)},[po,Nn]);Ad((n,o)=>{if(!(n==="\x1B[I"||n==="\x1B[O"||n==="[I"||n==="[O")){if(o.ctrl&&(n.toLowerCase()==="r"||n===""||n==="")){Ql();return}if(wt==="stats"){if(Pn==="dailyModelBreakdown"||Pn==="modelBreakdown"){if(o.tab&&!o.shift){Zn(m=>m==="dailyModelBreakdown"?"modelBreakdown":"dailyModelBreakdown"),ho(0);return}if(o.space||n===" "){Zn(m=>m==="dailyModelBreakdown"?"daily":"monthly"),ho(0),er("");return}if(o.escape){if(Rn){er(""),ho(0);return}J("chat");return}if(o.upArrow){ho(m=>Math.max(0,m-1));return}if(o.downArrow){ho(m=>Math.min(_e.current,m+1));return}if(o.backspace||o.delete){er(m=>m.slice(0,-1)),ho(0);return}if(n&&n!==" "&&!o.space&&!o.ctrl&&!o.meta&&n.length===1&&n.charCodeAt(0)>=32){er(m=>m+n),ho(0);return}return}if(o.tab&&!o.shift){Zn(m=>m==="daily"?"monthly":"daily"),ho(0);return}if(o.space||n===" "){Zn(m=>m==="daily"?"dailyModelBreakdown":"modelBreakdown"),ho(0),er("");return}if(o.upArrow){ho(m=>Math.max(0,m-1));return}if(o.downArrow){ho(m=>Math.min(_e.current,m+1));return}}if(Ve){(o.return||o.escape)&&(qe.current=!0,Ie(null));return}if(ue){let c=sn(),m=ya(c);if(o.upArrow)Te(f=>f>0?f-1:m.length-1);else if(o.downArrow)Te(f=>f<m.length-1?f+1:0);else if(o.return){let f=m[pe];if(f.action==="dismiss")we(!1);else if(f.url){let v=process.platform==="win32"?`start ${f.url}`:process.platform==="darwin"?`open ${f.url}`:`xdg-open ${f.url}`;Oo(v),we(!1)}}return}if(o.tab&&po){ki(c=>!c);return}if(tr&&po){let c=o.pageUp||n==="\x1B[5~"||n==="[5~",m=o.pageDown||n==="\x1B[6~"||n==="[6~",f=o.ctrl&&(n==="o"||n==="");if(c||m||f)return;if(o.return)if(Hn)ro("\r");else{let v=process.platform==="win32";ro(v?`\r
74
74
  `:`
75
75
  `),Fn(u=>u+`
76
- `)}else if(o.backspace||o.delete)Hn?ro("\x7F"):(ro("\b \b"),Fn(v=>v.slice(0,-1)));else if(o.upArrow)ro(o.shift?"\x1B[1;2A":"\x1B[A");else if(o.downArrow)ro(o.shift?"\x1B[1;2B":"\x1B[B");else if(o.rightArrow)ro(o.shift?"\x1B[1;2C":"\x1B[C");else if(o.leftArrow)ro(o.shift?"\x1B[1;2D":"\x1B[D");else if(o.escape)ro("\x1B");else if(o.ctrl&&n){let v=n.toLowerCase().charCodeAt(0);v>=97&&v<=122?ro(String.fromCharCode(v-96)):ro(n)}else n&&(ro(n),Hn||Fn(v=>v+n));return}if(Tt==="providerBudgetSelect"){let c=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"];if(o.upArrow){Dr(m=>(m-1+c.length)%c.length);return}else if(o.downArrow){Dr(m=>(m+1)%c.length);return}else if(n===" "){let m=c[xi];fi(x=>({...x,[m]:!x[m]}));return}else if(o.return){let m=c.filter(v=>bs[v]);if(m.length===0)return;let x={...$e,providerBudgets:{...$e.providerBudgets||{},__useProvider:!0}};wt(x),Ca(m),Ma(0),Dr(0),J("providerBudgetFlow");return}else if(o.escape){J("budgetTypeSelect");return}return}if(Tt==="providerBudgetFlow"){let c=Mn.length,m=c*4+1;if(o.upArrow){fo(x=>x===m-1?Math.max(0,(c-1)*4):x>=4?x-4:x);return}else if(o.downArrow){fo(x=>x===m-1?x:x+4<m-1?x+4:m-1);return}else if(o.leftArrow){fo(x=>x===m-1?x:x%4>0?x-1:x);return}else if(o.rightArrow||o.tab){fo(x=>x===m-1?x:x+1<m?x+1:x);return}else if(o.return){if(Sn===m-1){let x=$e.providerBudgets||{},v={__useProvider:!0};for(let h of Mn){let C=qn[h]||{};v[h]={agentLimit:9999999999,tokenLimit:parseInt(C.tokenLimit,10)||0,monthlyTokenLimit:parseInt(C.monthlyTokenLimit,10)||0,dailyCostLimit:parseFloat(C.dailyCostLimit)||0,monthlyCostLimit:parseFloat(C.monthlyCostLimit)||0}}let u={...$e,providerBudgets:v};wt(u),Xt({apiTier:gt,quotas:u}),J(No==="settings"?"resetMode":"budgetResetMode")}else fo(x=>Math.min(m-1,x+1));return}else if(o.escape){J("providerBudgetSelect");return}return}if(o.escape){if(_i){if(Hi(!1),kt.length>0){let c=kt[kt.length-1];c&&(Wi.current=c.id)}return}if(lt.length>0&&Tt==="chat"){oe(!0);return}if(g){M(!1);return}if(Un||po||so||mn)Ns.current=!0,Bl(),gl(),so&&(so.resolve("deny"),$n(null)),mn&&(mn.resolve(null),ks(null)),Ya(!1),Ni&&clearTimeout(Ni);else if(Tt==="revert")J("chat"),rr(0);else if(Tt!=="chat"&&Tt!=="settings")J("chat");else{if(!ot&&Kn===1){Mr(0),ze("");return}rr(c=>{let m=c+1;return m===1?(fn.current&&clearTimeout(fn.current),fn.current=setTimeout(()=>rr(0),2e3)):m===2&&(fn.current&&clearTimeout(fn.current),rr(0),w.length>0?T(""):mr.getChatHistory(ht).then(x=>{x.length>0?($i(x.reverse()),J("revert")):A(v=>(O(v.length+1),[...v,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
77
- \u2800`,isMeta:!0}]))})),m})}}if(lt.length>0&&Tt==="chat"){if(o.upArrow){ge(c=>{let m=c>0?c-1:lt.length-1,x=0;for(;m!==c&&x<lt.length;){let v=lt[m],u=v?.cmd||v||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))m=m>0?m-1:lt.length-1,x++;else break}return m});return}if(o.downArrow){ge(c=>{let m=c<lt.length-1?c+1:0,x=0;for(;m!==c&&x<lt.length;){let v=lt[m],u=v?.cmd||v||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))m=m<lt.length-1?m+1:0,x++;else break}return m});return}if(o.return)return}if(o.tab&&Tt==="chat"){if(lt.length>0){let c=lt[de]||lt[0],m=w.split(" ");if(m.length===1)T(c.cmd+" ");else{let x=m.slice(0,-1);T(x.join(" ")+" "+c.cmd+" ")}ge(0),F(x=>x+1);return}else if(w.trim()===""){let c=Date.now();if(c-re.current<500)return;re.current=c;let m=["Flux","Flow","ICU","FluxCU"],x=(m.indexOf(E)+1)%m.length,v=m[x>=0?x:0];$(v),A(u=>[...u,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${ci(v)}
78
- \u2800`,isMeta:!0}]);return}}if(o.ctrl&&n==="c"&&Tt!=="exit"){if(w.length>0){T("");return}if(o.shift){J("exit"),M(!1);return}g?(J("exit"),M(!1)):M(!0)}o.return&&(o.shift||o.ctrl||o.meta||o.leftAlt||o.rightAlt)&&T(c=>c.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
79
- `)}}),ft(()=>{process.stdout.write("\x1B[?1004h");let n=o=>{let c=o.toString();c.includes("\x1B[I")?(He(!0),ct.current=Date.now()):c.includes("\x1B[O")&&(He(!1),ct.current=Date.now())};return process.stdin.on("data",n),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",n)}},[]);let $r=it(ce.theme);ft(()=>{$r.current&&$r.current!==ce.theme?($r.current=ce.theme,l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h")),Us(n=>n+1),Ho()):$r.current=ce.theme},[ce.theme,l]),ft(()=>{async function n(){bl(C=>{let _=C?.reason||"cwd_mismatch";me.current=_,Te(!1),qe.current||Ie(_)});try{let C=JSON.parse(xt.readFileSync(Ut.join(process.cwd(),"package.json"),"utf8"));qs(uo||C.version||"2.0.0")}catch{qs("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),await ca()||(A(C=>(O(C.length+1),[...C,{id:"setup-"+Date.now(),role:"system",text:"\u2726 Installing Required dependencies... (One-time setup)",isMeta:!0}])),await da(),A(C=>(O(C.length+1),[...C,{id:"setup-done-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m All dependencies installed successfully.
80
- \u2800`,isMeta:!0}])));let o=await Vs();Ds.current=o.systemSettings?.allowExternalAccess??!1,Is.current=o.systemSettings?.memory??!0,ee.mode?$(ee.mode):$(o.mode),N(o.display??0),ee.thinking?Ct(ee.thinking):Ct(o.thinkingLevel);let c=ee.provider||o.aiProvider||"Google";dt(c);let x=(o.quotas?.providerTiers||{})[c]||o.apiTier||"Free";if(ne.current=o.activeModel,ee.model)Jt(ee.model);else if(ee.provider){let C=no(c,x);Jt(C)}else Jt(o.activeModel);gs(o.showFullThinking),vo(x),wt(o.quotas||{limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}});let v={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...o.systemSettings||{}};ee.memory==="on"?v.memory=!0:ee.memory==="off"&&(v.memory=!1),c==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&(v.memory=!1,A(C=>[...C,{role:"system",text:`\u2726 MEMORY
76
+ `)}else if(o.backspace||o.delete)Hn?ro("\x7F"):(ro("\b \b"),Fn(v=>v.slice(0,-1)));else if(o.upArrow)ro(o.shift?"\x1B[1;2A":"\x1B[A");else if(o.downArrow)ro(o.shift?"\x1B[1;2B":"\x1B[B");else if(o.rightArrow)ro(o.shift?"\x1B[1;2C":"\x1B[C");else if(o.leftArrow)ro(o.shift?"\x1B[1;2D":"\x1B[D");else if(o.escape)ro("\x1B");else if(o.ctrl&&n){let v=n.toLowerCase().charCodeAt(0);v>=97&&v<=122?ro(String.fromCharCode(v-96)):ro(n)}else n&&(ro(n),Hn||Fn(v=>v+n));return}if(wt==="providerBudgetSelect"){let c=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"];if(o.upArrow){Ir(m=>(m-1+c.length)%c.length);return}else if(o.downArrow){Ir(m=>(m+1)%c.length);return}else if(n===" "){let m=c[pi];bi(f=>({...f,[m]:!f[m]}));return}else if(o.return){let m=c.filter(v=>Ts[v]);if(m.length===0)return;let f={...$e,providerBudgets:{...$e.providerBudgets||{},__useProvider:!0}};Tt(f),Sa(m),va(0),Ir(0),J("providerBudgetFlow");return}else if(o.escape){J("budgetTypeSelect");return}return}if(wt==="providerBudgetFlow"){let c=Mn.length,m=c*4+1;if(o.upArrow){fo(f=>f===m-1?Math.max(0,(c-1)*4):f>=4?f-4:f);return}else if(o.downArrow){fo(f=>f===m-1?f:f+4<m-1?f+4:m-1);return}else if(o.leftArrow){fo(f=>f===m-1?f:f%4>0?f-1:f);return}else if(o.rightArrow||o.tab){fo(f=>f===m-1?f:f+1<m?f+1:f);return}else if(o.return){if(Sn===m-1){let f=$e.providerBudgets||{},v={__useProvider:!0};for(let h of Mn){let C=qn[h]||{};v[h]={agentLimit:9999999999,tokenLimit:parseInt(C.tokenLimit,10)||0,monthlyTokenLimit:parseInt(C.monthlyTokenLimit,10)||0,dailyCostLimit:parseFloat(C.dailyCostLimit)||0,monthlyCostLimit:parseFloat(C.monthlyCostLimit)||0}}let u={...$e,providerBudgets:v};Tt(u),Xt({apiTier:gt,quotas:u}),J(No==="settings"?"resetMode":"budgetResetMode")}else fo(f=>Math.min(m-1,f+1));return}else if(o.escape){J("providerBudgetSelect");return}return}if(o.escape){if(Gi){if(Vi(!1),kt.length>0){let c=kt[kt.length-1];c&&(ji.current=c.id)}return}if(lt.length>0&&wt==="chat"){oe(!0);return}if(g){M(!1);return}if(Un||po||so||mn)$s.current=!0,kl(),wl(),so&&(so.resolve("deny"),$n(null)),mn&&(mn.resolve(null),Ps(null)),Ka(!1),_i&&clearTimeout(_i);else if(wt==="revert")J("chat"),rr(0);else if(wt!=="chat"&&wt!=="settings")J("chat");else{if(!ot&&Kn===1){Sr(0),ze("");return}rr(c=>{let m=c+1;return m===1?(fn.current&&clearTimeout(fn.current),fn.current=setTimeout(()=>rr(0),2e3)):m===2&&(fn.current&&clearTimeout(fn.current),rr(0),T.length>0?w(""):mr.getChatHistory(ht).then(f=>{f.length>0?(Xi(f.reverse()),J("revert")):A(v=>(O(v.length+1),[...v,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
77
+ \u2800`,isMeta:!0}]))})),m})}}if(lt.length>0&&wt==="chat"){if(o.upArrow){ge(c=>{let m=c>0?c-1:lt.length-1,f=0;for(;m!==c&&f<lt.length;){let v=lt[m],u=v?.cmd||v||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))m=m>0?m-1:lt.length-1,f++;else break}return m});return}if(o.downArrow){ge(c=>{let m=c<lt.length-1?c+1:0,f=0;for(;m!==c&&f<lt.length;){let v=lt[m],u=v?.cmd||v||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))m=m<lt.length-1?m+1:0,f++;else break}return m});return}if(o.return)return}if(o.tab&&wt==="chat"){if(lt.length>0){let c=lt[de]||lt[0],m=T.split(" ");if(m.length===1)w(c.cmd+" ");else{let f=m.slice(0,-1);w(f.join(" ")+" "+c.cmd+" ")}ge(0),F(f=>f+1);return}else if(T.trim()===""){let c=Date.now();if(c-re.current<500)return;re.current=c;let m=["Flux","Flow","ICU","FluxCU"],f=(m.indexOf(E)+1)%m.length,v=m[f>=0?f:0];$(v),A(u=>[...u,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${xi(v)}
78
+ \u2800`,isMeta:!0}]);return}}if(o.ctrl&&n==="c"&&wt!=="exit"){if(T.length>0){w("");return}if(o.shift){J("exit"),M(!1);return}g?(J("exit"),M(!1)):M(!0)}o.return&&(o.shift||o.ctrl||o.meta||o.leftAlt||o.rightAlt)&&w(c=>c.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
79
+ `)}}),ft(()=>{process.stdout.write("\x1B[?1004h");let n=o=>{let c=o.toString();c.includes("\x1B[I")?(He(!0),ct.current=Date.now()):c.includes("\x1B[O")&&(He(!1),ct.current=Date.now())};return process.stdin.on("data",n),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",n)}},[]);let Ur=it(ce.theme);ft(()=>{Ur.current&&Ur.current!==ce.theme?(Ur.current=ce.theme,l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h")),Hs(n=>n+1),Ho()):Ur.current=ce.theme},[ce.theme,l]),ft(()=>{async function n(){Cl(C=>{let _=C?.reason||"cwd_mismatch";me.current=_,we(!1),qe.current||Ie(_)});try{let C=JSON.parse(xt.readFileSync(Ut.join(process.cwd(),"package.json"),"utf8"));zs(uo||C.version||"2.0.0")}catch{zs("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),await ua()||(A(C=>(O(C.length+1),[...C,{id:"setup-"+Date.now(),role:"system",text:"\u2726 Installing Required dependencies... (One-time setup)",isMeta:!0}])),await ma(),A(C=>(O(C.length+1),[...C,{id:"setup-done-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m All dependencies installed successfully.
80
+ \u2800`,isMeta:!0}])));let o=await js();As.current=o.systemSettings?.allowExternalAccess??!1,ks.current=o.systemSettings?.memory??!0,ee.mode?$(ee.mode):$(o.mode),N(o.display??0),ee.thinking?Ct(ee.thinking):Ct(o.thinkingLevel);let c=ee.provider||o.aiProvider||"Google";dt(c);let f=(o.quotas?.providerTiers||{})[c]||o.apiTier||"Free";if(ne.current=o.activeModel,ee.model)Jt(ee.model);else if(ee.provider){let C=no(c,f);Jt(C)}else Jt(o.activeModel);ps(o.showFullThinking),vo(f),Tt(o.quotas||{limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}});let v={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...o.systemSettings||{}};ee.memory==="on"?v.memory=!0:ee.memory==="off"&&(v.memory=!1),c==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&(v.memory=!1,A(C=>[...C,{role:"system",text:`\u2726 MEMORY
81
81
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Currently not available.
82
- \u2800`,isMeta:!0}])),ee.package&&(v.updateManager=ee.package),ee.autoDel&&(v.autoDeleteHistory=ee.autoDel),ee.autoExec==="on"?v.autoExec=!0:ee.autoExec==="off"&&(v.autoExec=!1),ee.externalAccess==="on"?v.allowExternalAccess=!0:ee.externalAccess==="off"&&(v.allowExternalAccess=!1),ee.playground&&(v.allowExternalAccess=!1,v.memory=!1),Ot(v),Ts(o.profileData),Ir(o.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""}),ws({enabled:!1,model:"Default",provider:"",baseUrl:"",...o.autoCompletion||{}});let u=ee.key;if(u||(u=await Ro(c)),c==="c_openai"){let C=u||"";Xe(C),Wo(C,{aiProvider:c,onIDEApproval:$o})}else u&&(Xe(u),Wo(u,{aiProvider:c,onIDEApproval:$o}));if(o.systemSettings?.autoDeleteHistory&&wl(o.systemSettings.autoDeleteHistory),ee.playground||(zr(On).catch(()=>{}),xt.remove(Ut.join(Bo,"playground")).catch(()=>{})),Ye(!1,v),await Promise.all([al(),mr.recoverCrashedTransaction()]),ee.resume){let C=await Xo(),_=ee.resume;if(C[_]){Uo.current=!0,Or(_);let H=await fr(_);En.current=to-H.total,Dn.current=go,An.current=un,jt.current=[],vn(H.total),Bn(0),dn(0),In(0),Qo({tokens:H.context}),Uo.current=!1;let Y=[...C[_].messages];Y[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||Y.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(Y),J("chat"),A(j=>{let Z=[...j,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
82
+ \u2800`,isMeta:!0}])),ee.package&&(v.updateManager=ee.package),ee.autoDel&&(v.autoDeleteHistory=ee.autoDel),ee.autoExec==="on"?v.autoExec=!0:ee.autoExec==="off"&&(v.autoExec=!1),ee.externalAccess==="on"?v.allowExternalAccess=!0:ee.externalAccess==="off"&&(v.allowExternalAccess=!1),ee.playground&&(v.allowExternalAccess=!1,v.memory=!1),Ot(v),ys(o.profileData),Ar(o.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""}),Cs({enabled:!1,model:"Default",provider:"",baseUrl:"",...o.autoCompletion||{}});let u=ee.key;if(u||(u=await Ro(c)),c==="c_openai"){let C=u||"";Xe(C),Wo(C,{aiProvider:c,onIDEApproval:$o})}else u&&(Xe(u),Wo(u,{aiProvider:c,onIDEApproval:$o}));if(o.systemSettings?.autoDeleteHistory&&Sl(o.systemSettings.autoDeleteHistory),ee.playground||(Jr(On).catch(()=>{}),xt.remove(Ut.join(Bo,"playground")).catch(()=>{})),Ye(!1,v),await Promise.all([ml(),mr.recoverCrashedTransaction()]),ee.resume){let C=await Xo(),_=ee.resume;if(C[_]){Uo.current=!0,Nr(_);let H=await fr(_);En.current=to-H.total,Dn.current=go,An.current=un,jt.current=[],vn(H.total),Bn(0),dn(0),In(0),Qo({tokens:H.context}),Uo.current=!1;let Y=[...C[_].messages];Y[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||Y.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(Y),J("chat"),A(j=>{let Z=[...j,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
83
83
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '${_}'.
84
84
  \u2800`,isMeta:!0}];return O(Z.length),Z})}else A(H=>[...H,{id:"sys-err-"+Date.now(),role:"system",text:`\u2726 Chat session [${_}] not found. Started new session.
85
85
  \u2800`,isMeta:!0}])}if(ee.playground){let C=Ut.join(Bo,"playground");try{xt.ensureDirSync(C),process.chdir(C)}catch{}let _=await Xo();if(_[On]){Uo.current=!0;let H=await fr(On);En.current=to-H.total,Dn.current=go,An.current=un,jt.current=[],vn(H.total),Bn(0),dn(0),In(0),Qo({tokens:H.context}),Uo.current=!1;let Y=[..._[On].messages];Y[0]?.isLogo||Y.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(Y),A(q=>{let j=[...q,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND Session restored
86
86
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m CWD locked to: '${C}'.
87
87
  \u2800`,isMeta:!0}];return O(j.length),j})}else A(H=>{let Y=[...H,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND Mode active
88
88
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m CWD locked to: 'FluxFlow/playground'.
89
- \u2800`,isMeta:!0}];return O(Y.length),Y})}let a=sn();if(!["Terminal","Windows Terminal"].includes(a)){let C=ha(a);if(C)try{let _=[];if(xt.existsSync(C)){let H=xt.readFileSync(C,"utf8").trim();H&&(_=pa(H))}Fd(_)?xs="Shift + Enter":J("keybindingsPrompt")}catch{}}k(!1)}n()},[]),ft(()=>{let n;return g&&(b(10),n=setInterval(()=>{b(o=>o<=1?(M(!1),0):o-1)},1e3)),()=>{n&&clearInterval(n)}},[g]),ft(()=>{if(!p){let n=ee.model&&nt===ee.model?ne.current:nt,o=ce;ee.playground&&(o={...ce,allowExternalAccess:Ds.current,memory:Is.current}),Xt({mode:E,thinkingLevel:Qe,aiProvider:P,activeModel:n||nt,showFullThinking:an,systemSettings:o,profileData:cn,imageSettings:Fo,autoCompletion:zn,apiTier:gt})}},[E,Qe,P,nt,an,ce,cn,Fo,zn,p,ee,gt]);let Vi=async n=>{let o=n.trim(),c={Google:{prefix:"AIzaSy",minLength:39},OpenRouter:{prefix:"sk-or-v1-",minLength:73},DeepSeek:{prefix:"sk-",minLength:35},Mistral:{prefix:"",minLength:32},NVIDIA:{prefix:"nvapi-",minLength:70},Ollama:{prefix:"",minLength:0},InferX:{prefix:"",minLength:0},SenseNova:{prefix:"",minLength:0},AIHubMix:{prefix:"sk-",minLength:10},Poolside:{prefix:"",minLength:0},"9router":{prefix:"",minLength:0},ExpLabs:{prefix:"xpl_",minLength:0},TokenHarbor:{prefix:"thk_",minLength:0},Infron:{prefix:"",minLength:0},APInex:{prefix:"sk-apx",minLength:0}},{prefix:m,minLength:x}=c[P]??{prefix:"",minLength:0},v=(P==="Ollama"||P==="9router")&&(o.trim()==="LOCAL"||o.trim()===""),u=P==="c_openai",a=v?"LOCAL":o;if(u){let h=o.trim().replace(/\/+$/,""),C={...ce,customOpenAIBaseUrl:h,memory:!1};Ot(C);let H=await Ro("c_openai")||"";Xe(H),Wo(H,{aiProvider:"c_openai",onIDEApproval:$o});let Y=no("c_openai",gt)||"";Jt(Y),await Xt({mode:E,thinkingLevel:Qe,aiProvider:"c_openai",activeModel:Y,showFullThinking:an,systemSettings:C,profileData:cn,imageSettings:Fo,autoCompletion:zn,apiTier:gt}),A(q=>[...q,{role:"system",text:`\u2726 Custom (OpenAI) Base URL saved!
89
+ \u2800`,isMeta:!0}];return O(Y.length),Y})}let a=sn();if(!["Terminal","Windows Terminal"].includes(a)){let C=ba(a);if(C)try{let _=[];if(xt.existsSync(C)){let H=xt.readFileSync(C,"utf8").trim();H&&(_=wa(H))}$d(_)?gs="Shift + Enter":J("keybindingsPrompt")}catch{}}k(!1)}n()},[]),ft(()=>{let n;return g&&(b(10),n=setInterval(()=>{b(o=>o<=1?(M(!1),0):o-1)},1e3)),()=>{n&&clearInterval(n)}},[g]),ft(()=>{if(!p){let n=ee.model&&nt===ee.model?ne.current:nt,o=ce;ee.playground&&(o={...ce,allowExternalAccess:As.current,memory:ks.current}),Xt({mode:E,thinkingLevel:Qe,aiProvider:P,activeModel:n||nt,showFullThinking:an,systemSettings:o,profileData:cn,imageSettings:Fo,autoCompletion:zn,apiTier:gt})}},[E,Qe,P,nt,an,ce,cn,Fo,zn,p,ee,gt]);let qi=async n=>{let o=n.trim(),c={Google:{prefix:"AIzaSy",minLength:39},OpenRouter:{prefix:"sk-or-v1-",minLength:73},DeepSeek:{prefix:"sk-",minLength:35},Mistral:{prefix:"",minLength:32},NVIDIA:{prefix:"nvapi-",minLength:70},Ollama:{prefix:"",minLength:0},InferX:{prefix:"",minLength:0},SenseNova:{prefix:"",minLength:0},AIHubMix:{prefix:"sk-",minLength:10},Poolside:{prefix:"",minLength:0},"9router":{prefix:"",minLength:0},ExpLabs:{prefix:"xpl_",minLength:0},TokenHarbor:{prefix:"thk_",minLength:0},Infron:{prefix:"",minLength:0},APInex:{prefix:"sk-apx",minLength:0}},{prefix:m,minLength:f}=c[P]??{prefix:"",minLength:0},v=(P==="Ollama"||P==="9router")&&(o.trim()==="LOCAL"||o.trim()===""),u=P==="c_openai",a=v?"LOCAL":o;if(u){let h=o.trim().replace(/\/+$/,""),C={...ce,customOpenAIBaseUrl:h,memory:!1};Ot(C);let H=await Ro("c_openai")||"";Xe(H),Wo(H,{aiProvider:"c_openai",onIDEApproval:$o});let Y=no("c_openai",gt)||"";Jt(Y),await Xt({mode:E,thinkingLevel:Qe,aiProvider:"c_openai",activeModel:Y,showFullThinking:an,systemSettings:C,profileData:cn,imageSettings:Fo,autoCompletion:zn,apiTier:gt}),A(q=>[...q,{role:"system",text:`\u2726 Custom (OpenAI) Base URL saved!
90
90
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${h}${Y?`
91
91
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${Y}`:""}
92
92
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom (OpenAI).
93
- \u2800`,isMeta:!0}]),ze("");return}if(v||o.startsWith(m)&&o.length>=x){await Gs(P,a),Xe(a),Wo(a,{aiProvider:P,onIDEApproval:$o});let h="gemma-4-31b-it";P==="OpenRouter"?h="google/gemma-4-31b-it:free":P==="DeepSeek"?h="deepseek-v4-flash":P==="NVIDIA"?h="deepseek-ai/deepseek-v4-flash":P==="Ollama"||P==="9router"?h=nt||"":(P==="InferX"||P==="SenseNova"||P==="AIHubMix"||P==="Poolside"||P==="ExpLabs"||P==="TokenHarbor"||P==="Infron"||P==="APInex")&&(h=no(P,gt)||""),Jt(h);let C={...ce};v&&P==="Ollama"&&(C={...C,ollamaEndpoint:"Local"},Ot(C)),(P==="Ollama"||P==="InferX"||P==="SenseNova"||P==="AIHubMix"||P==="Poolside"||P==="9router"||P==="ExpLabs"||P==="TokenHarbor"||P==="Infron"||P==="APInex")&&(C={...C,memory:!1},Ot(C));let _="";if(P==="9router"){let H=await ai();H.ok||(_=`
93
+ \u2800`,isMeta:!0}]),ze("");return}if(v||o.startsWith(m)&&o.length>=f){await Ys(P,a),Xe(a),Wo(a,{aiProvider:P,onIDEApproval:$o});let h="gemma-4-31b-it";P==="OpenRouter"?h="google/gemma-4-31b-it:free":P==="DeepSeek"?h="deepseek-v4-flash":P==="NVIDIA"?h="deepseek-ai/deepseek-v4-flash":P==="Ollama"||P==="9router"?h=nt||"":(P==="InferX"||P==="SenseNova"||P==="AIHubMix"||P==="Poolside"||P==="ExpLabs"||P==="TokenHarbor"||P==="Infron"||P==="APInex")&&(h=no(P,gt)||""),Jt(h);let C={...ce};v&&P==="Ollama"&&(C={...C,ollamaEndpoint:"Local"},Ot(C)),(P==="Ollama"||P==="InferX"||P==="SenseNova"||P==="AIHubMix"||P==="Poolside"||P==="9router"||P==="ExpLabs"||P==="TokenHarbor"||P==="Infron"||P==="APInex")&&(C={...C,memory:!1},Ot(C));let _="";if(P==="9router"){let H=await mi();H.ok||(_=`
94
94
 
95
95
  \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${H.url}.\x1B[39m
96
96
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}A(H=>[...H,{role:"system",text:`\u2726 ${P} API Key saved successfully! ${h?`
@@ -101,16 +101,16 @@ Remove-Item -Path '${Zl.replace(/'/g,"''")}' -Recurse -Force -ErrorAction Silent
101
101
  \u2726\u2800`}${P==="Ollama"||P==="InferX"||P==="SenseNova"||P==="AIHubMix"||P==="Poolside"||P==="9router"||P==="ExpLabs"||P==="TokenHarbor"||P==="Infron"||P==="APInex"?`Memory is not available with ${P}.
102
102
  \u2514\u2500\u2800`:""}Initialization complete.${_}
103
103
  \u2800`,isMeta:!0}])}else A(h=>[...h,{role:"system",text:`\u2726 INVALID KEY
104
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${P} API key must start with "${m}" and be at least ${x} characters long.`,isMeta:!0}]),ze("")},Ur=it(di);ft(()=>{if(Tt==="exit"){(async()=>{let c=Date.now(),m=Math.floor((c-Ur.current)/1e3);m>=1&&(await Tn("duration",m),Ur.current+=m*1e3),await ll()})();let o=setTimeout(()=>{process.exit(0)},50);return()=>clearTimeout(o)}},[Tt]),ft(()=>{let n=setInterval(async()=>{if(!p){let o=Date.now(),c=Math.floor((o-Ur.current)/1e3);c>=1&&(await Tn("duration",c),Ur.current+=c*1e3),il()}},5e3);return()=>clearInterval(n)},[p]);let Yi=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/kill",desc:"Kill a process by PID",subs:Er.map(n=>{let o;return n.isRoot?o="FluxFlow":n.url&&(n.url.includes(":52991")||n.url.includes(":52145")||n.url.includes(":52140"))?o="Internal":o=n.url||n.name,{cmd:String(n.pid),display:`PID: ${n.pid}`,rightDesc:o,desc:o}})},{cmd:"/help",desc:"Show all available commands"},...ee.playground?[{cmd:"/move",desc:"Move playground directory to original CWD/playground-export"}]:[],{cmd:"/resume",desc:"Load previous session"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/compress",desc:"Summarize and compress chat history"},{cmd:"/truncate",desc:"Truncate tool results in chat history"},{cmd:"/revert",desc:"Revert codebase back to a checkpoint"},{cmd:"/gemini",desc:"Get a happy message from Gemini CLI"},{cmd:"/meow",desc:"Cat nonsense, delivered straight to the terminal"},...process.env.HALLOWEEN_EEGG==="true"||process.env.HALLOWEEN_EEGG===!0?[{cmd:"/trick-or-treat",desc:"Halloween surprise: Trick or Treat!"}]:[],{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat or error logs",subs:[{cmd:"chat",desc:"Export current active chat"},{cmd:"logs",desc:"Export error logs"}]},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/btw",desc:"Ask a question without intefering with ongoing tasks"},{cmd:"/thinking",desc:"Set AI reasoning depth",subs:[{cmd:"Low",display:Zt(P,nt,"Low")!==null?`Low (${Zt(P,nt,"Low")})`:"Low",desc:"Quick Reasoning"},{cmd:"Medium",display:Zt(P,nt,"Medium")!==null?`Medium (${Zt(P,nt,"Medium")})`:"Medium",desc:"Balanced Reasoning"},{cmd:"High",display:Zt(P,nt,"High")!==null?`High (${Zt(P,nt,"High")})`:"High",desc:"Deep Reasoning"},{cmd:"custom",display:Zt(P,nt,"xHigh")!==null?`Custom (${Zt(P,nt,"xHigh")})`:"Custom",desc:"Custom Reasoning Value"}]},{cmd:"/model",desc:"Select Agent Model",subs:E==="ICU"||E.toLowerCase()==="fluxcu"?Zo(P,gt).filter(n=>Yr(n.cmd||n)):Zo(P,gt)},{cmd:"/wildcard-tooling",desc:"Use if the model lacks Tooling Capability"},{cmd:"/provider",desc:"Select AI Provider"},{cmd:"/mode",desc:"Switch execution mode",subs:[{cmd:"flux",display:"workspace",desc:"Workspace, files & terminal tools"},{cmd:"flow",display:"studio",desc:"Creative studio, documents, PDF & conversation"},{cmd:"icu",display:"computer use",desc:"Interactive desktop & OS automation"},{cmd:"fluxcu",display:"omni",desc:"Autonomous tools & desktop execution"}]},{cmd:"/display",desc:"Select Active Display (Computer Use)",subs:[{cmd:"primary",desc:"Primary Display (Display 1)"},{cmd:"secondary",desc:"Secondary Display (Display 2)"}]},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/theme",desc:"Customize UI color theme"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/files",desc:"List loaded instruction and skill files"},{cmd:"/memory",desc:"Manage agent memory",subs:[{cmd:"view",desc:"View and manage agent persistent memory"},{cmd:"migrate",desc:"Migrate persistent memories to AGENTS.md"}]},{cmd:"/stats",desc:"Show session usage"},{cmd:"/usage",desc:"Open graphical token usage & analytics dashboard in browser"},{cmd:"/target",desc:"Show current provider and model"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/docs",desc:"View Documentation"},{cmd:"/fluxflow",desc:"Project management",subs:[{cmd:"global",desc:"Opens the Global FluxFlow Directory in File Explorer"},{cmd:"saves",desc:"Opens FluxFlow AppData Directory in File Explorer"}]},{cmd:"/budget",desc:"Set or View budget limits",subs:[{cmd:"view",desc:"View current usage budget bars"},{cmd:"web",desc:"Open graphical usage and budget dashboard in browser"},{cmd:"set",desc:"Configure budgets (Daily/Monthly limits)"},{cmd:"reset",desc:"Reset budgets to default limits"}]},{cmd:"/update",desc:"Check/Install updates",subs:[{cmd:"latest",desc:"Install latest release"},{cmd:"check",desc:"Check for new version"}]}],ji=async(n,o=!1)=>{if(!o&&lt.length>0){let x=lt[de]||lt[0],v=n.split(" ");if(v.length===1)T(x.cmd+" ");else{let u=v.slice(0,-1);T(u.join(" ")+" "+x.cmd+" ")}ge(0),F(u=>u+1);return}Ns.current=!1;let c=n.replace(/\r\n/g,`
104
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${P} API key must start with "${m}" and be at least ${f} characters long.`,isMeta:!0}]),ze("")},_r=it(fi);ft(()=>{if(wt==="exit"){(async()=>{let c=Date.now(),m=Math.floor((c-_r.current)/1e3);m>=1&&(await wn("duration",m),_r.current+=m*1e3),await ul()})();let o=setTimeout(()=>{process.exit(0)},50);return()=>clearTimeout(o)}},[wt]),ft(()=>{let n=setInterval(async()=>{if(!p){let o=Date.now(),c=Math.floor((o-_r.current)/1e3);c>=1&&(await wn("duration",c),_r.current+=c*1e3),dl()}},5e3);return()=>clearInterval(n)},[p]);let Qi=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/kill",desc:"Kill a process by PID",subs:Br.map(n=>{let o;return n.isRoot?o="FluxFlow":n.url&&(n.url.includes(":52991")||n.url.includes(":52145")||n.url.includes(":52140"))?o="Internal":o=n.url||n.name,{cmd:String(n.pid),display:`PID: ${n.pid}`,rightDesc:o,desc:o}})},{cmd:"/help",desc:"Show all available commands"},...ee.playground?[{cmd:"/move",desc:"Move playground directory to original CWD/playground-export"}]:[],{cmd:"/resume",desc:"Load previous session"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/compress",desc:"Summarize and compress chat history"},{cmd:"/truncate",desc:"Truncate tool results in chat history"},{cmd:"/revert",desc:"Revert codebase back to a checkpoint"},{cmd:"/gemini",desc:"Get a happy message from Gemini CLI"},{cmd:"/meow",desc:"Cat nonsense, delivered straight to the terminal"},...process.env.HALLOWEEN_EEGG==="true"||process.env.HALLOWEEN_EEGG===!0?[{cmd:"/trick-or-treat",desc:"Halloween surprise: Trick or Treat!"}]:[],{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat or error logs",subs:[{cmd:"chat",desc:"Export current active chat"},{cmd:"logs",desc:"Export error logs"}]},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/btw",desc:"Ask a question without intefering with ongoing tasks"},{cmd:"/thinking",desc:"Set AI reasoning depth",subs:[{cmd:"Low",display:Zt(P,nt,"Low")!==null?`Low (${Zt(P,nt,"Low")})`:"Low",desc:"Quick Reasoning"},{cmd:"Medium",display:Zt(P,nt,"Medium")!==null?`Medium (${Zt(P,nt,"Medium")})`:"Medium",desc:"Balanced Reasoning"},{cmd:"High",display:Zt(P,nt,"High")!==null?`High (${Zt(P,nt,"High")})`:"High",desc:"Deep Reasoning"},{cmd:"custom",display:Zt(P,nt,"xHigh")!==null?`Custom (${Zt(P,nt,"xHigh")})`:"Custom",desc:"Custom Reasoning Value"}]},{cmd:"/model",desc:"Select Agent Model",subs:E==="ICU"||E.toLowerCase()==="fluxcu"?Zo(P,gt).filter(n=>jr(n.cmd||n)):Zo(P,gt)},{cmd:"/wildcard-tooling",desc:"Use if the model lacks Tooling Capability"},{cmd:"/provider",desc:"Select AI Provider"},{cmd:"/mode",desc:"Switch execution mode",subs:[{cmd:"flux",display:"workspace",desc:"Workspace, files & terminal tools"},{cmd:"flow",display:"studio",desc:"Creative studio, documents, PDF & conversation"},{cmd:"icu",display:"computer use",desc:"Interactive desktop & OS automation"},{cmd:"fluxcu",display:"omni",desc:"Autonomous tools & desktop execution"}]},{cmd:"/display",desc:"Select Active Display (Computer Use)",subs:[{cmd:"primary",desc:"Primary Display (Display 1)"},{cmd:"secondary",desc:"Secondary Display (Display 2)"}]},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/theme",desc:"Customize UI color theme"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/files",desc:"List loaded instruction and skill files"},{cmd:"/memory",desc:"Manage agent memory",subs:[{cmd:"view",desc:"View and manage agent persistent memory"},{cmd:"migrate",desc:"Migrate persistent memories to AGENTS.md"}]},{cmd:"/stats",desc:"Show session usage"},{cmd:"/usage",desc:"Open graphical token usage & analytics dashboard in browser"},{cmd:"/target",desc:"Show current provider and model"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/docs",desc:"View Documentation"},{cmd:"/fluxflow",desc:"Project management",subs:[{cmd:"global",desc:"Opens the Global FluxFlow Directory in File Explorer"},{cmd:"saves",desc:"Opens FluxFlow AppData Directory in File Explorer"}]},{cmd:"/budget",desc:"Set or View budget limits",subs:[{cmd:"view",desc:"View current usage budget bars"},{cmd:"web",desc:"Open graphical usage and budget dashboard in browser"},{cmd:"set",desc:"Configure budgets (Daily/Monthly limits)"},{cmd:"reset",desc:"Reset budgets to default limits"}]},{cmd:"/update",desc:"Check/Install updates",subs:[{cmd:"latest",desc:"Install latest release"},{cmd:"check",desc:"Check for new version"}]}],zi=async(n,o=!1)=>{if(!o&&lt.length>0){let f=lt[de]||lt[0],v=n.split(" ");if(v.length===1)w(f.cmd+" ");else{let u=v.slice(0,-1);w(u.join(" ")+" "+f.cmd+" ")}ge(0),F(u=>u+1);return}$s.current=!1;let c=n.replace(/\r\n/g,`
105
105
  `).replace(/\r/g,`
106
- `).trimEnd();if(c.endsWith("\\")){T(c.slice(0,-1)+`
106
+ `).trimEnd();if(c.endsWith("\\")){w(c.slice(0,-1)+`
107
107
  `);return}let m=c.replace(/\\\s*\n/g,`
108
- `).split(/\r?\n/).map(x=>x.replace(/\\$/,"")).join(`
109
- `);if(m.trim()){if(Un){let x=m.trim();if(x.startsWith("/btw")){if(x.replace(/^\/btw\s*/,"").trim().length<=3){A(u=>(O(u.length+1),[...u,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
108
+ `).split(/\r?\n/).map(f=>f.replace(/\\$/,"")).join(`
109
+ `);if(m.trim()){if(Un){let f=m.trim();if(f.startsWith("/btw")){if(f.replace(/^\/btw\s*/,"").trim().length<=3){A(u=>(O(u.length+1),[...u,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
110
110
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Inquiry question must be more than 3 characters.
111
- \u2800`,isMeta:!0}])),T("");return}}else if(x.startsWith("/")){A(v=>(O(v.length+1),[...v,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
111
+ \u2800`,isMeta:!0}])),w("");return}}else if(f.startsWith("/")){A(v=>(O(v.length+1),[...v,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
112
112
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Steering Hints cannot start with '/'.
113
- \u2800`,isMeta:!0}])),T("");return}Fs(x),_o.current=x,T("");return}if(!ot&&!(P==="c_openai"&&ce.customOpenAIBaseUrl)){Vi(m),ze("");return}if(m.startsWith("/")){T("");let x=m.split(" "),v=x[0]?.toLowerCase();switch(v){case"/quit":{J("exit");break}case"/resume":{if(x[1]){let u=x[1];(async()=>{let h=await Xo(),C=h[u]||Object.values(h).find(_=>_.name.toLowerCase()===u.toLowerCase());if(C){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let q=C?.name||"",j=q&&!q.startsWith("flow-")&&!q.startsWith("Session ")?q:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${j}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${j}\x07`)}Ho(),Uo.current=!0,Or(u);let _=await fr(u);En.current=to-_.total,Dn.current=go,An.current=un,jt.current=[],vn(_.total),Bn(0),dn(0),In(0),Qo({tokens:_.context}),Uo.current=!1;let H=[...C.messages];H[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||H.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(H),A(q=>[...q,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
113
+ \u2800`,isMeta:!0}])),w("");return}Us(f),_o.current=f,w("");return}if(!ot&&!(P==="c_openai"&&ce.customOpenAIBaseUrl)){qi(m),ze("");return}if(m.startsWith("/")){w("");let f=m.split(" "),v=f[0]?.toLowerCase();switch(v){case"/quit":{J("exit");break}case"/resume":{if(f[1]){let u=f[1];(async()=>{let h=await Xo(),C=h[u]||Object.values(h).find(_=>_.name.toLowerCase()===u.toLowerCase());if(C){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let q=C?.name||"",j=q&&!q.startsWith("flow-")&&!q.startsWith("Session ")?q:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${j}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${j}\x07`)}Ho(),Uo.current=!0,Nr(u);let _=await fr(u);En.current=to-_.total,Dn.current=go,An.current=un,jt.current=[],vn(_.total),Bn(0),dn(0),In(0),Qo({tokens:_.context}),Uo.current=!1;let H=[...C.messages];H[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||H.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(H),A(q=>[...q,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
114
114
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${u}.
115
115
  \u2800`,isMeta:!0}]),O(0)}else A(_=>[..._,{id:"err-"+Date.now(),role:"system",text:`\u2726 ERROR: Session [${u}] not found.
116
116
  \u2800`,isMeta:!0}])})()}else J("resume");break}case"/move":{if(!ee.playground){A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
@@ -123,26 +123,26 @@ Remove-Item -Path '${Zl.replace(/'/g,"''")}' -Recurse -Force -ErrorAction Silent
123
123
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m playground content copied to ${a}
124
124
  `,isMeta:!0}]))}catch(C){A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 FAILED TO MOVE CONTENT
125
125
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${C.message}
126
- `,isMeta:!0}]))}})();break}case"/clear":{if(l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&(l.write("\x1B[?2004h"),process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07"))),A([{id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}]),O(1),Us(u=>u+1),Ho(),oo.current={completedIndex:0,columns:K.columns,historicalBlocks:[],seenSelections:new Set,chatId:ht,clearKey:gn+1},ee.playground){if(ee.playground=!1,zr(On).catch(()=>{}),ee.originalCwd)try{process.chdir(ee.originalCwd),A(u=>{let a=[...u,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
126
+ `,isMeta:!0}]))}})();break}case"/clear":{if(l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&(l.write("\x1B[?2004h"),process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07"))),A([{id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}]),O(1),Hs(u=>u+1),Ho(),oo.current={completedIndex:0,columns:K.columns,historicalBlocks:[],seenSelections:new Set,chatId:ht,clearKey:gn+1},ee.playground){if(ee.playground=!1,Jr(On).catch(()=>{}),ee.originalCwd)try{process.chdir(ee.originalCwd),A(u=>{let a=[...u,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
127
127
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Restored Working Directory to ${ee.originalCwd}
128
128
  \u2800`,isMeta:!0}];return O(a.length),a})}catch{}setTimeout(()=>{xt.emptyDir(Ut.join(Bo,"playground")).catch(u=>{A(a=>{let h=[...a,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
129
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear session: ${Bo+"/playground"}`,isMeta:!0}];return O(h.length),h})})},500),Ot(u=>({...u,allowExternalAccess:Ds.current,memory:Is.current}))}Or(Qs()),Qo({tokens:0}),B(!1),vn(0),Bn(0),dn(0),In(0),jt.current=[],En.current=to,Dn.current=go,An.current=un,setTimeout(()=>{global.gc&&(async()=>{for(let a=0;a<3;a++)global.gc(),await new Promise(h=>setImmediate(h));f.current=Date.now()})()},500);break}case"/revert":{mr.getChatHistory(ht).then(u=>{if(u.length>0)$i(u.reverse()),J("revert");else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
130
- \u2800`,isMeta:!0}]))}}),setTimeout(()=>{global.gc&&(async()=>{for(let a=0;a<3;a++)global.gc(),await new Promise(h=>setImmediate(h));f.current=Date.now()})()},500);break}case"/mode":{if(x[1]){let u=x[1].toLowerCase(),a="Flux";u==="flow"?a="Flow":u==="icu"?a="ICU":u==="fluxcu"?a="FluxCU":u==="flux"&&(a="Flux"),$(a);let h=pt(2);A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${ci(a)}.
131
- \u2800`,isMeta:!0}]))}else J("mode");break}case"/display":{if(x[1]){let u=x[1].toLowerCase(),a=0;u==="secondary"||u==="1"||u==="2"?a=1:a=0,N(a),Xt({display:a}).catch(()=>{});let h=a===0?"Primary (Display 1)":"Secondary (Display 2)";A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${h}.
132
- \u2800`,isMeta:!0}]))}else J("display");break}case"/image_deprecated":{if(x[1]?.toLowerCase()==="stats"){let u=pt(2);if(Fo.keyType==="Custom")A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Key strategy is Custom. Redirecting to Pollinations dashboard (https://enter.pollinations.ai/#pollen)...",isMeta:!0}])),Oo("start https://enter.pollinations.ai/#pollen");else try{let a=await cl();A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((a.limit*1e3).toFixed(0))} credits
129
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear session: ${Bo+"/playground"}`,isMeta:!0}];return O(h.length),h})})},500),Ot(u=>({...u,allowExternalAccess:As.current,memory:ks.current}))}Nr(Js()),Qo({tokens:0}),B(!1),vn(0),Bn(0),dn(0),In(0),jt.current=[],En.current=to,Dn.current=go,An.current=un,setTimeout(()=>{global.gc&&(async()=>{for(let a=0;a<3;a++)global.gc(),await new Promise(h=>setImmediate(h));x.current=Date.now()})()},500);break}case"/revert":{mr.getChatHistory(ht).then(u=>{if(u.length>0)Xi(u.reverse()),J("revert");else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
130
+ \u2800`,isMeta:!0}]))}}),setTimeout(()=>{global.gc&&(async()=>{for(let a=0;a<3;a++)global.gc(),await new Promise(h=>setImmediate(h));x.current=Date.now()})()},500);break}case"/mode":{if(f[1]){let u=f[1].toLowerCase(),a="Flux";u==="flow"?a="Flow":u==="icu"?a="ICU":u==="fluxcu"?a="FluxCU":u==="flux"&&(a="Flux"),$(a);let h=pt(2);A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${xi(a)}.
131
+ \u2800`,isMeta:!0}]))}else J("mode");break}case"/display":{if(f[1]){let u=f[1].toLowerCase(),a=0;u==="secondary"||u==="1"||u==="2"?a=1:a=0,N(a),Xt({display:a}).catch(()=>{});let h=a===0?"Primary (Display 1)":"Secondary (Display 2)";A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${h}.
132
+ \u2800`,isMeta:!0}]))}else J("display");break}case"/image_deprecated":{if(f[1]?.toLowerCase()==="stats"){let u=pt(2);if(Fo.keyType==="Custom")A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Key strategy is Custom. Redirecting to Pollinations dashboard (https://enter.pollinations.ai/#pollen)...",isMeta:!0}])),Oo("start https://enter.pollinations.ai/#pollen");else try{let a=await xl();A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((a.limit*1e3).toFixed(0))} credits
133
133
  \u2022 Spent (Last 1hr): ${Number((a.totalSpent*1e3).toFixed(0))} credits
134
134
  \u2022 Remaining: ${Number((a.remaining*1e3).toFixed(0))} credits
135
135
  \u2022 Requests (Last 1hr): ${a.activeCallsCount} requests
136
- `+(a.nextResetMin>0?`\u2022 Refreshes in: ${a.nextResetMin}m`:""),isMeta:!0}]))}catch{A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(x[1]?.toLowerCase()==="setup")if(x[2]?.toLowerCase()==="key")if(x[3]){let u=["default","custom"].find(a=>a===x[3].toLowerCase());if(u){let a=u==="default"?"Default":"Custom";Ir(C=>({...C,keyType:a}));let h=pt(2);A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`[SYSTEM] Image key strategy set to ${a}`,isMeta:!0}])),a==="Custom"&&(St({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:Fo.apiKey||"",returnView:"chat"}),J("input"))}else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(x[2]?.toLowerCase()==="quality")if(x[3]){let u=["low","low-high","medium","medium-high","high","ultra","premium"].find(a=>a===x[3].toLowerCase());if(u){let h={low:"Low","low-high":"Low-High",medium:"Medium","medium-high":"Medium-High",high:"High",ultra:"Ultra",premium:"Premium"}[u];Ir(_=>({..._,quality:h}));let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`[SYSTEM] Image quality set to ${h}`,isMeta:!0}]))}else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid quality level. Choose from: Low, Low-High, Medium, Medium-High, High, Ultra, Premium.",isMeta:!0}]))}}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Quality <Low|Low-High|Medium|Medium-High|High|Ultra>",isMeta:!0}]))}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let u;if(x[1]){let a=x.slice(1),h=a.includes("--bypass")||a.includes("-b"),C=a.includes("--force")||a.includes("-f"),_=a.findIndex(j=>j==="--map"||j==="-m");if(_!==-1){let j=a.slice(0,_).join(" ").trim(),Z=a.slice(_+1).join(" ").trim(),te=["fast","low","medium","standard","high","xhigh","custom","max"];if(!j||!Z)A(X=>(O(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mINVALID USAGE\x1B[0m
136
+ `+(a.nextResetMin>0?`\u2022 Refreshes in: ${a.nextResetMin}m`:""),isMeta:!0}]))}catch{A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(f[1]?.toLowerCase()==="setup")if(f[2]?.toLowerCase()==="key")if(f[3]){let u=["default","custom"].find(a=>a===f[3].toLowerCase());if(u){let a=u==="default"?"Default":"Custom";Ar(C=>({...C,keyType:a}));let h=pt(2);A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`[SYSTEM] Image key strategy set to ${a}`,isMeta:!0}])),a==="Custom"&&(St({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:Fo.apiKey||"",returnView:"chat"}),J("input"))}else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(f[2]?.toLowerCase()==="quality")if(f[3]){let u=["low","low-high","medium","medium-high","high","ultra","premium"].find(a=>a===f[3].toLowerCase());if(u){let h={low:"Low","low-high":"Low-High",medium:"Medium","medium-high":"Medium-High",high:"High",ultra:"Ultra",premium:"Premium"}[u];Ar(_=>({..._,quality:h}));let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`[SYSTEM] Image quality set to ${h}`,isMeta:!0}]))}else{let a=pt(2);A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid quality level. Choose from: Low, Low-High, Medium, Medium-High, High, Ultra, Premium.",isMeta:!0}]))}}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Quality <Low|Low-High|Medium|Medium-High|High|Ultra>",isMeta:!0}]))}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let u=pt(2);A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let u;if(f[1]){let a=f.slice(1),h=a.includes("--bypass")||a.includes("-b"),C=a.includes("--force")||a.includes("-f"),_=a.findIndex(j=>j==="--map"||j==="-m");if(_!==-1){let j=a.slice(0,_).join(" ").trim(),Z=a.slice(_+1).join(" ").trim(),te=["fast","low","medium","standard","high","xhigh","custom","max"];if(!j||!Z)A(X=>(O(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mINVALID USAGE\x1B[0m
137
137
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Usage: \x1B[36m/thinking <level> --map <target_value>\x1B[0m (e.g. \x1B[33m/thinking Custom --map high\x1B[0m)
138
138
  \u2800`,isMeta:!0}]));else if(!te.includes(j.toLowerCase()))A(X=>(O(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mUNKNOWN LEVEL\x1B[0m
139
139
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unknown level "\x1B[33m${j}\x1B[0m" to map. Available: \x1B[36mLow, Medium, High, Custom\x1B[0m.
140
- \u2800`,isMeta:!0}]));else if(Z.toLowerCase()==="rm"||Z.toLowerCase()==="--remove"||Z.toLowerCase()==="-rm"){let X=j.toLowerCase()==="custom"?"xHigh":j,Ze=pl(P,nt,X);Ze.success?A(Ue=>(O(Ue.length+1),[...Ue,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapping Removed:
140
+ \u2800`,isMeta:!0}]));else if(Z.toLowerCase()==="rm"||Z.toLowerCase()==="--remove"||Z.toLowerCase()==="-rm"){let X=j.toLowerCase()==="custom"?"xHigh":j,Ze=yl(P,nt,X);Ze.success?A(Ue=>(O(Ue.length+1),[...Ue,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapping Removed:
141
141
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Target: \x1B[36m${P}::${nt}\x1B[0m
142
142
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Removed mapping for: \x1B[33m${j}\x1B[0m
143
143
  \u2800`,isMeta:!0}])):A(Ue=>(O(Ue.length+1),[...Ue,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mFAILED TO REMOVE MAPPING\x1B[0m
144
144
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${Ze.reason}
145
- \u2800`,isMeta:!0}]))}else{let X=j.toLowerCase()==="custom"?"xHigh":j,Ze=isNaN(Number(Z))?Z:Number(Z),Ue=hl(P,nt,X,Ze);Ue.success?A(We=>(O(We.length+1),[...We,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapped:
145
+ \u2800`,isMeta:!0}]))}else{let X=j.toLowerCase()==="custom"?"xHigh":j,Ze=isNaN(Number(Z))?Z:Number(Z),Ue=Tl(P,nt,X,Ze);Ue.success?A(We=>(O(We.length+1),[...We,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapped:
146
146
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Target: \x1B[36m${P}::${nt}\x1B[0m
147
147
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Mapping: \x1B[33m${j}\x1B[0m \u2794 \x1B[32m${Z}\x1B[0m
148
148
  \u2800`,isMeta:!0}])):A(We=>(O(We.length+1),[...We,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mFAILED TO SAVE MAPPING\x1B[0m
@@ -157,23 +157,23 @@ Remove-Item -Path '${Zl.replace(/'/g,"''")}' -Recurse -Force -ErrorAction Silent
157
157
  \u2800${q}.`,isMeta:!0}]));else{Ct(u);let j=pt(1),Z=u==="xHigh"?Zt(P,nt,"xHigh")!==null?`Custom (${Zt(P,nt,"xHigh")})`:"Custom":u;A(te=>(O(te.length+1),[...te,{id:Date.now(),role:"system",text:`\u2726 ${P}
158
158
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${nt}.
159
159
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Thinking Level: ${Z}.
160
- ${q} \u2800`,isMeta:!0}]))}}else J("thinking");break}case"/model":{if(x[1]){let u=x.slice(1).join(" "),a=null,h=!1,C=null,_=u,H=/(?:^|\s)(?:--info|-i)(?:\s+(?:"([^"]*)"|'([^']*)'|\{([^}]*)\}|((?:(?!--[a-z]|-[a-z]\b).)+)))?(?=\s+--|\s+-[a-z]\b|$)/i,Y=_.match(H);if(Y){if(C=(Y[1]??Y[2]??Y[3]??Y[4]??"").trim(),_=(_.slice(0,Y.index)+" "+_.slice(Y.index+Y[0].length)).trim(),C==="0")h=!0,a=null;else if(a={},C){let le=C.split(",");for(let xe of le){let st=xe.trim().match(/^(IN|OUT|CR|CW)\s+([0-9]*\.?[0-9]+)$/i);st&&(a[st[1].toUpperCase()]=parseFloat(st[2]))}}}let q=_.split(/\s+/).filter(Boolean),j=q.some(le=>le==="--multimodal"||le==="-m"||le==="--vision"||le==="-v"),Z=q.some(le=>le==="--save"||le==="-sv"||le==="--add"),te=q.some(le=>le==="--remove"||le==="-rm"),X=q.some(le=>le==="--rename"||le==="-rn"||le==="-mv"),Ze=q.some(le=>le==="--default"||le==="-df"),Ue=q.some(le=>le==="--price"||le==="-p"),We=q.some(le=>le==="--raw"||le==="-r"),Je=q.filter(le=>!le.startsWith("-")),je=(le=a)=>h?`
160
+ ${q} \u2800`,isMeta:!0}]))}}else J("thinking");break}case"/model":{if(f[1]){let u=f.slice(1).join(" "),a=null,h=!1,C=null,_=u,H=/(?:^|\s)(?:--info|-i)(?:\s+(?:"([^"]*)"|'([^']*)'|\{([^}]*)\}|((?:(?!--[a-z]|-[a-z]\b).)+)))?(?=\s+--|\s+-[a-z]\b|$)/i,Y=_.match(H);if(Y){if(C=(Y[1]??Y[2]??Y[3]??Y[4]??"").trim(),_=(_.slice(0,Y.index)+" "+_.slice(Y.index+Y[0].length)).trim(),C==="0")h=!0,a=null;else if(a={},C){let le=C.split(",");for(let xe of le){let st=xe.trim().match(/^(IN|OUT|CR|CW)\s+([0-9]*\.?[0-9]+)$/i);st&&(a[st[1].toUpperCase()]=parseFloat(st[2]))}}}let q=_.split(/\s+/).filter(Boolean),j=q.some(le=>le==="--multimodal"||le==="-m"||le==="--vision"||le==="-v"),Z=q.some(le=>le==="--save"||le==="-sv"||le==="--add"),te=q.some(le=>le==="--remove"||le==="-rm"),X=q.some(le=>le==="--rename"||le==="-rn"||le==="-mv"),Ze=q.some(le=>le==="--default"||le==="-df"),Ue=q.some(le=>le==="--price"||le==="-p"),We=q.some(le=>le==="--raw"||le==="-r"),Je=q.filter(le=>!le.startsWith("-")),je=(le=a)=>h?`
161
161
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing: \x1B[33mReset (info removed)\x1B[0m`:le?Object.keys(le).length>0?`
162
162
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing:
163
163
  `+Object.entries(le).map(([xe,Ke])=>` \x1B[2m\u2022\x1B[22m \x1B[36m${xe}\x1B[0m: $${Ke}`).join(`
164
164
  `):C?`
165
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing: \x1B[33mNo valid IN, OUT, CR, CW tokens parsed from: "${C}"\x1B[0m`:"":"";if(Z||te||X||Ze){if(Ze){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to set as default. Example: /model my-model --default",isMeta:!0}]));else{let xe=Ri(P,le,j,a);xe.success?A(Ke=>{O(Ke.length+1);let st=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");return[...Ke,{id:Date.now(),role:"system",text:`\u2726 Default Model Set:
165
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing: \x1B[33mNo valid IN, OUT, CR, CW tokens parsed from: "${C}"\x1B[0m`:"":"";if(Z||te||X||Ze){if(Ze){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to set as default. Example: /model my-model --default",isMeta:!0}]));else{let xe=nl(P,le,j,a);xe.success?A(Ke=>{O(Ke.length+1);let st=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");return[...Ke,{id:Date.now(),role:"system",text:`\u2726 Default Model Set:
166
166
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${st}
167
167
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Default Model: \x1B[32m${le}\x1B[0m
168
168
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${j?"ON":"OFF"}${je()}
169
- \u2800`,isMeta:!0}]}):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to set default model: ${xe.reason}`,isMeta:!0}]))}}else if(Z){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to save. Example: /model my-custom-model --save",isMeta:!0}]));else{let xe=Ji(P,le,j,a);xe.success?A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\u2726 Model Saved:
169
+ \u2800`,isMeta:!0}]}):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to set default model: ${xe.reason}`,isMeta:!0}]))}}else if(Z){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to save. Example: /model my-custom-model --save",isMeta:!0}]));else{let xe=tl(P,le,j,a);xe.success?A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\u2726 Model Saved:
170
170
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${P}
171
171
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: \x1B[32m${le}\x1B[0m
172
172
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${j?"ON":"OFF"}${je()}
173
- \u2800`,isMeta:!0}])):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to save model: ${xe.reason}`,isMeta:!0}]))}}else if(te){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to remove. Example: /model my-custom-model --remove",isMeta:!0}]));else{let xe=el(P,le);xe.success?A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\u2726 Model Removed:
173
+ \u2800`,isMeta:!0}])):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to save model: ${xe.reason}`,isMeta:!0}]))}}else if(te){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide a model ID to remove. Example: /model my-custom-model --remove",isMeta:!0}]));else{let xe=rl(P,le);xe.success?A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\u2726 Model Removed:
174
174
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${P}
175
175
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: \x1B[31m${le}\x1B[0m
176
- \u2800`,isMeta:!0}])):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to remove model: ${xe.reason}`,isMeta:!0}]))}}else if(X)if(Je.length<2)A(le=>(O(le.length+1),[...le,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide both old and new model IDs. Example: /model old-model-id new-model-id --rename",isMeta:!0}]));else{let le=Je[0].trim(),xe=Je.slice(1).join(" ").trim(),Ke=tl(P,le,xe);Ke.success?A(st=>(O(st.length+1),[...st,{id:Date.now(),role:"system",text:`\u2726 Model Renamed:
176
+ \u2800`,isMeta:!0}])):A(Ke=>(O(Ke.length+1),[...Ke,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to remove model: ${xe.reason}`,isMeta:!0}]))}}else if(X)if(Je.length<2)A(le=>(O(le.length+1),[...le,{id:Date.now(),role:"system",text:"\x1B[31m[Error]\x1B[0m Please provide both old and new model IDs. Example: /model old-model-id new-model-id --rename",isMeta:!0}]));else{let le=Je[0].trim(),xe=Je.slice(1).join(" ").trim(),Ke=sl(P,le,xe);Ke.success?A(st=>(O(st.length+1),[...st,{id:Date.now(),role:"system",text:`\u2726 Model Renamed:
177
177
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${P}
178
178
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Old Model: \x1B[31m${le}\x1B[0m
179
179
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m New Model: \x1B[32m${xe}\x1B[0m
@@ -185,33 +185,33 @@ ${q} \u2800`,isMeta:!0}]))}}else J("thinking");break}case"/model":{if(x[1]){let
185
185
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m \x1B[2mNote: CR = Cache Read, CW = Cache Write\x1B[0m`;A(Ce=>(O(Ce.length+1),[...Ce,{id:Date.now(),role:"system",text:`\u2726 Model Price:
186
186
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${Ke}
187
187
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model ID: \x1B[32m${le}\x1B[0m${V}
188
- \u2800`,isMeta:!0}]));break}if(a!==null||h){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:'\x1B[31m[Error]\x1B[0m Please provide a model ID. Example: /model <id> -i "IN 0.15, OUT 0.6, CR 0.05, CW 0.1"',isMeta:!0}]));else{h?Ws(P,le,null):Object.keys(a).length>0&&Ws(P,le,a);let xe=h?null:ar(P,le),Ke=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");A(st=>(O(st.length+1),[...st,{id:Date.now(),role:"system",text:`\u2726 Model Info ${h?"Reset":"Saved"}:
188
+ \u2800`,isMeta:!0}]));break}if(a!==null||h){let le=Je.join(" ").trim();if(!le)A(xe=>(O(xe.length+1),[...xe,{id:Date.now(),role:"system",text:'\x1B[31m[Error]\x1B[0m Please provide a model ID. Example: /model <id> -i "IN 0.15, OUT 0.6, CR 0.05, CW 0.1"',isMeta:!0}]));else{h?Vs(P,le,null):Object.keys(a).length>0&&Vs(P,le,a);let xe=h?null:ar(P,le),Ke=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");A(st=>(O(st.length+1),[...st,{id:Date.now(),role:"system",text:`\u2726 Model Info ${h?"Reset":"Saved"}:
189
189
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${Ke}
190
190
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model ID: \x1B[32m${le}\x1B[0m${je(xe||a)}
191
- \u2800`,isMeta:!0}]))}break}let rt=Je.join(" ").trim();if(ol(j),rt){j&&Zi(P,rt,!0);let le=no("Google","Free"),xe=no("Google","Paid");{Jt(rt);let Ke=j||Yr(rt),st=Qe==="xHigh"?Zt(P,rt,"xHigh")!==null?`Custom (${Zt(P,rt,"xHigh")})`:"Custom":Qe,V=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");A(Ce=>(O(Ce.length+1),[...Ce,{id:Date.now(),role:"system",text:`\u2726 ${V}
191
+ \u2800`,isMeta:!0}]))}break}let rt=Je.join(" ").trim();if(il(j),rt){j&&ol(P,rt,!0);let le=no("Google","Free"),xe=no("Google","Paid");{Jt(rt);let Ke=j||jr(rt),st=Qe==="xHigh"?Zt(P,rt,"xHigh")!==null?`Custom (${Zt(P,rt,"xHigh")})`:"Custom":Qe,V=P==="c_openai"?ce?.customOpenAIBaseUrl||"Custom Endpoint":P.replace("c_openai","Custom Endpoint");A(Ce=>(O(Ce.length+1),[...Ce,{id:Date.now(),role:"system",text:`\u2726 ${V}
192
192
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${rt}
193
193
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Thinking Level: ${st}
194
194
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${Ke?"ON":"OFF"}
195
195
  \u2800`,isMeta:!0}]))}}}else J("model");break}case"/wildcard-tooling":{eo(u=>{let a=!u;return A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildcard Tooling:
196
196
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${a?"Enabled":"Disabled"}
197
- \u2800`,isMeta:!0}])),a});break}case"/wildercard-tooling":{vr(u=>{let a=!u;return A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildercard Tooling:
197
+ \u2800`,isMeta:!0}])),a});break}case"/wildercard-tooling":{Er(u=>{let a=!u;return A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildercard Tooling:
198
198
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${a?"Enabled":"Disabled"}
199
- \u2800`,isMeta:!0}])),a});break}case"/settings":{J("settings");break}case"/provider":case"/providers":{ps("chat"),J("selectProvider");break}case"/theme":{J("theme");break}case"/key":{J("key");break}case"/stats":{(async()=>{let a=await jr(),h=await Kr();Ms(a),Ss(h),Zn("daily"),J("stats")})();break}case"/usage":{(async()=>{try{let{openUsageDashboard:a}=await import("./usageServer-NH3CL6IF.js"),{url:h}=await a();A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Launching Token Analytics Dashboard
199
+ \u2800`,isMeta:!0}])),a});break}case"/settings":{J("settings");break}case"/provider":case"/providers":{ws("chat"),J("selectProvider");break}case"/theme":{J("theme");break}case"/key":{J("key");break}case"/stats":{(async()=>{let a=await Kr(),h=await qr();vs(a),Es(h),Zn("daily"),J("stats")})();break}case"/usage":{(async()=>{try{let{openUsageDashboard:a}=await import("./usageServer-NH3CL6IF.js"),{url:h}=await a();A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Launching Token Analytics Dashboard
200
200
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Serving at ${h}
201
201
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Opening in your default browser...
202
202
  \u2800`,isMeta:!0}]))}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
203
203
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to launch dashboard: ${a.message}
204
- \u2800`,isMeta:!0}]))}})();break}case"/save":{let u,a=kt.find(C=>C.role==="user");if(a&&a.text){let C=a.text.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").trim(),_=C.split(/\s+/),H;_.length>7?H=_.slice(0,7).join(" ")+"...":C.length>45?H=C.substring(0,45).trimEnd()+"...":H=C,u=H}let h=x.slice(1).join(" ")||u||`Session ${new Date().toLocaleTimeString()}`;yn(ht,h,kt),A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Saved
204
+ \u2800`,isMeta:!0}]))}})();break}case"/save":{let u,a=kt.find(C=>C.role==="user");if(a&&a.text){let C=a.text.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").trim(),_=C.split(/\s+/),H;_.length>7?H=_.slice(0,7).join(" ")+"...":C.length>45?H=C.substring(0,45).trimEnd()+"...":H=C,u=H}let h=f.slice(1).join(" ")||u||`Session ${new Date().toLocaleTimeString()}`;yn(ht,h,kt),A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Saved
205
205
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m "${h}" (ID: ${ht})
206
- \u2800`,isMeta:!0}]));break}case"/export":{(async()=>{try{let{handleExport:a}=await import("./export-RU6LCZUB.js"),h=await a(x,{chatId:ht,messages:kt});A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:h.message,isMeta:!0}]))}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`[EXPORT ERROR] Failed to export: ${a.message}`,isMeta:!0}]))}})();break}case"/chats":{(async()=>{let a=await Xo(),h=Object.entries(a).sort((C,_)=>(_[1].updatedAt||0)-(C[1].updatedAt||0)).map(([C,_])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${C}: ${xr(_,C)}${C===ht?" (current)":""}`).join(`
206
+ \u2800`,isMeta:!0}]));break}case"/export":{(async()=>{try{let{handleExport:a}=await import("./export-RU6LCZUB.js"),h=await a(f,{chatId:ht,messages:kt});A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:h.message,isMeta:!0}]))}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`[EXPORT ERROR] Failed to export: ${a.message}`,isMeta:!0}]))}})();break}case"/chats":{(async()=>{let a=await Xo(),h=Object.entries(a).sort((C,_)=>(_[1].updatedAt||0)-(C[1].updatedAt||0)).map(([C,_])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${C}: ${xr(_,C)}${C===ht?" (current)":""}`).join(`
207
207
  `);A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Saved Chats:
208
208
  ${h||"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No saved chats found."}
209
- \u2800`,isMeta:!0}]))})();break}case"/memory":{if((x[1]||"view").toLowerCase()==="migrate")try{let a=Gr(lr,[]);if(!a||a.length===0){A(Z=>(O(Z.length+1),[...Z,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
209
+ \u2800`,isMeta:!0}]))})();break}case"/memory":{if((f[1]||"view").toLowerCase()==="migrate")try{let a=Vr(lr,[]);if(!a||a.length===0){A(Z=>(O(Z.length+1),[...Z,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
210
210
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No persistent memories found in memories.json to migrate.
211
211
  \u2800`,isMeta:!0}]));break}let h=a.map(Z=>`- ${(Z.memory||"").replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim()}`).filter(Z=>Z!=="- ").join(`
212
212
  `);if(!h){A(Z=>(O(Z.length+1),[...Z,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
213
213
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No valid memory entries found to migrate.
214
- \u2800`,isMeta:!0}]));break}xt.existsSync(wo)||xt.mkdirSync(wo,{recursive:!0});let C=Ut.join(wo,"AGENTS.md"),_="";xt.existsSync(C)&&(_=xt.readFileSync(C,"utf8"));let H=_.trimEnd(),q=`${H.length>0?`
214
+ \u2800`,isMeta:!0}]));break}xt.existsSync(To)||xt.mkdirSync(To,{recursive:!0});let C=Ut.join(To,"AGENTS.md"),_="";xt.existsSync(C)&&(_=xt.readFileSync(C,"utf8"));let H=_.trimEnd(),q=`${H.length>0?`
215
215
 
216
216
  `:""}User Memories:
217
217
  ${h}
@@ -219,41 +219,41 @@ ${h}
219
219
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Successfully migrated ${a.length} memories to ${C.replaceAll("\\\\","/").replaceAll("\\","/")}
220
220
  \u2800`,isMeta:!0}]))}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Memory Migration Failed
221
221
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Error: ${a.message}
222
- \u2800`,isMeta:!0}]))}else J("memory");break}case"/files":{A(u=>(O(u.length+1),[...u,{id:"files-"+Date.now(),role:"system",text:Tl(),isMeta:!0}]));break}case"/target":{A(u=>(O(u.length+1),[...u,{id:"target-"+Date.now(),role:"system",text:`\u2726 Unique Model Id for FluxFlow
222
+ \u2800`,isMeta:!0}]))}else J("memory");break}case"/files":{A(u=>(O(u.length+1),[...u,{id:"files-"+Date.now(),role:"system",text:Ml(),isMeta:!0}]));break}case"/target":{A(u=>(O(u.length+1),[...u,{id:"target-"+Date.now(),role:"system",text:`\u2726 Unique Model Id for FluxFlow
223
223
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${P}@${nt}
224
224
  \u2800`,isMeta:!0}]));break}case"/reset":{(async()=>{try{A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:`\u2726 Initiating reset...
225
225
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Clearing logs, secrets, and settings.
226
- \u2800`,isMeta:!0}])),xt.existsSync(Hs)&&xt.removeSync(Hs),xt.existsSync(Xs)&&xt.removeSync(Xs),xt.existsSync(bn)&&xt.removeSync(bn);try{xt.readdirSync(wo).length===0&&xt.removeSync(wo)}catch{}setTimeout(()=>{J("exit"),setTimeout(()=>process.exit(0),500)},500)}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
226
+ \u2800`,isMeta:!0}])),xt.existsSync(Ws)&&xt.removeSync(Ws),xt.existsSync(Gs)&&xt.removeSync(Gs),xt.existsSync(bn)&&xt.removeSync(bn);try{xt.readdirSync(To).length===0&&xt.removeSync(To)}catch{}setTimeout(()=>{J("exit"),setTimeout(()=>process.exit(0),500)},500)}catch(a){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
227
227
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear data: ${a.message}.
228
228
  \u2800`}]))}})();break}case"/about":{let u=pt(2),a=`\u2022 FluxFlow Version: v${uo}
229
229
  \u2022 Status: ${ln&&ln!==uo?`Update Available [v${ln}]`:"Up to date"}
230
- \u2022 Released on: ${Hd}`;A(h=>(O(h.length+1),[...h,{id:"about-"+Date.now(),role:"system",text:a,isAboutRecord:!0,isMeta:!0}]));break}case"/changelog":{let u=process.platform;Oo(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${ba}`),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Changelog
231
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${ba}.`,isMeta:!0}]));break}case"/docs":{if(!ui){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
232
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Documentation URL is not configured.`,isMeta:!0}]));break}let u=process.platform;Oo(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${ui}`),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Documentation
233
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${ui}.
234
- \u2800`,isMeta:!0}]));break}case"/budget":{let u=x[1]?.toLowerCase();if(u==="web"||u==="gui"||u==="dashboard")(async()=>{try{let{openUsageDashboard:h}=await import("./usageServer-NH3CL6IF.js"),{url:C}=await h();A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Token Usage & Budget Dashboard
230
+ \u2022 Released on: ${Xd}`;A(h=>(O(h.length+1),[...h,{id:"about-"+Date.now(),role:"system",text:a,isAboutRecord:!0,isMeta:!0}]));break}case"/changelog":{let u=process.platform;Oo(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${Ta}`),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Changelog
231
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${Ta}.`,isMeta:!0}]));break}case"/docs":{if(!gi){A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
232
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Documentation URL is not configured.`,isMeta:!0}]));break}let u=process.platform;Oo(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${gi}`),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Documentation
233
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${gi}.
234
+ \u2800`,isMeta:!0}]));break}case"/budget":{let u=f[1]?.toLowerCase();if(u==="web"||u==="gui"||u==="dashboard")(async()=>{try{let{openUsageDashboard:h}=await import("./usageServer-NH3CL6IF.js"),{url:C}=await h();A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Token Usage & Budget Dashboard
235
235
  \u2800\u2800\u2514\u2500 Opened at ${C}
236
236
  \u2800`,isMeta:!0}]))}catch(h){A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 ERROR: Failed to launch dashboard: ${h.message}
237
- \u2800`,isMeta:!0}]))}})();else if(u==="set")ya("chat"),J("budgetTypeSelect");else if(u==="view")(async()=>{let h=await jr(),C=await Kr(),_=await Ys($e.resetDay||1);Ms(h),Ss(C),vi(_),J("budgetView")})();else if(u==="reset"){let a={limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{},providerTiers:{Google:"Free",DeepSeek:"Free",NVIDIA:"Free",OpenRouter:"Free",InferX:"Free",SenseNova:"Free",AIHubMix:"Free",Poolside:"Free",ExpLabs:"Free",TokenHarbor:"Free",Infron:"Free",APInex:"Free"}};wt(a),vo("Free"),Xt({apiTier:"Free",quotas:a}),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Budgets reset successfully.
237
+ \u2800`,isMeta:!0}]))}})();else if(u==="set")Ma("chat"),J("budgetTypeSelect");else if(u==="view")(async()=>{let h=await Kr(),C=await qr(),_=await Ks($e.resetDay||1);vs(h),Es(C),Ii(_),J("budgetView")})();else if(u==="reset"){let a={limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{},providerTiers:{Google:"Free",DeepSeek:"Free",NVIDIA:"Free",OpenRouter:"Free",InferX:"Free",SenseNova:"Free",AIHubMix:"Free",Poolside:"Free",ExpLabs:"Free",TokenHarbor:"Free",Infron:"Free",APInex:"Free"}};Tt(a),vo("Free"),Xt({apiTier:"Free",quotas:a}),A(h=>(O(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Budgets reset successfully.
238
238
  \u2800`,isMeta:!0}]))}else A(a=>(O(a.length+1),[...a,{id:Date.now(),role:"system",text:`\u2726 ERROR
239
239
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Usage: /budget <View|Web|Set|Reset>.
240
- \u2800`,isMeta:!0}]));break}case"/fluxflow":{let a=x.slice(1)[0]?.toLowerCase()?.trim();if(a==="global"){let h=Ut.normalize(wo);try{xt.ensureDirSync(h)}catch{}let C=process.platform;C==="win32"?Oo(`explorer "${h}"`):C==="darwin"?Oo(`open "${h}"`):Oo(`xdg-open "${h}"`)}else if(a==="saves"){let h=Ut.normalize(Bo);try{xt.ensureDirSync(h)}catch{h=Ut.normalize(wo);try{xt.ensureDirSync(h)}catch{}}let C=process.platform;C==="win32"?Oo(`explorer "${h}"`):C==="darwin"?Oo(`open "${h}"`):Oo(`xdg-open "${h}"`)}else A(h=>(O(h.length+1),[...h,{id:"ff-err-"+Date.now(),role:"system",text:"Usage: /fluxflow global/saves",isMeta:!0}]));break}case"/update":{if(x[1]?.toLowerCase()==="check"){Ye(!0);break}let a=x.includes("--latest");J("update");break}case"/gemini":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2728 GEMINI CLI
240
+ \u2800`,isMeta:!0}]));break}case"/fluxflow":{let a=f.slice(1)[0]?.toLowerCase()?.trim();if(a==="global"){let h=Ut.normalize(To);try{xt.ensureDirSync(h)}catch{}let C=process.platform;C==="win32"?Oo(`explorer "${h}"`):C==="darwin"?Oo(`open "${h}"`):Oo(`xdg-open "${h}"`)}else if(a==="saves"){let h=Ut.normalize(Bo);try{xt.ensureDirSync(h)}catch{h=Ut.normalize(To);try{xt.ensureDirSync(h)}catch{}}let C=process.platform;C==="win32"?Oo(`explorer "${h}"`):C==="darwin"?Oo(`open "${h}"`):Oo(`xdg-open "${h}"`)}else A(h=>(O(h.length+1),[...h,{id:"ff-err-"+Date.now(),role:"system",text:"Usage: /fluxflow global/saves",isMeta:!0}]));break}case"/update":{if(f[1]?.toLowerCase()==="check"){Ye(!0);break}let a=f.includes("--latest");J("update");break}case"/gemini":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2728 GEMINI CLI
241
241
  \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
242
- \u2800`}]))};ds?u(ds):import("./gemini_quotes-B5IXNP2I.js").then(({GEMINI_QUOTES:a})=>{ds=a,u(ds)}),T("");break}case"/meow":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F431} MEOW
242
+ \u2800`}]))};ms?u(ms):import("./gemini_quotes-B5IXNP2I.js").then(({GEMINI_QUOTES:a})=>{ms=a,u(ms)}),w("");break}case"/meow":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F431} MEOW
243
243
  \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
244
- \u2800`}]))};us?u(us):import("./meow-SQBRZB7H.js").then(({MEOW_LINES:a})=>{us=a,u(us)}),T("");break}case"/halloween":case"/trick-or-treat":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F383} TRICK OR TREAT
244
+ \u2800`}]))};xs?u(xs):import("./meow-SQBRZB7H.js").then(({MEOW_LINES:a})=>{xs=a,u(xs)}),w("");break}case"/halloween":case"/trick-or-treat":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F383} TRICK OR TREAT
245
245
  \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
246
- \u2800`}]))};ms?u(ms):import("./halloween-EZTJXDUW.js").then(({SPOOKY_LINES:a})=>{ms=a,u(ms)}),T("");break}case"/compress":{T("");let u=kt.filter(C=>(C.role==="user"||C.role==="agent"||C.role==="system")&&!String(C.id).startsWith("welcome")&&!C.isMeta).length,a=Eo?.tokens||0;if(u<64||a<16384){let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Compression skipped
246
+ \u2800`}]))};fs?u(fs):import("./halloween-EZTJXDUW.js").then(({SPOOKY_LINES:a})=>{fs=a,u(fs)}),w("");break}case"/compress":{w("");let u=kt.filter(C=>(C.role==="user"||C.role==="agent"||C.role==="system")&&!String(C.id).startsWith("welcome")&&!C.isMeta).length,a=Eo?.tokens||0;if(u<64||a<16384){let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Compression skipped
247
247
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m History requires at least 64 messages and 16k tokens
248
248
  \u2800\u2800 \u2514\u2500 Current: ${u}/64 msgs, ${a}/16384 tokens.
249
- \u2800`,isMeta:!0}]));break}(async()=>{Oi(!0);let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:"\u2726 Compacting session history...",isMeta:!0}]));try{if(await Ll({chatId:ht,aiProvider:P,apiKey:ot,thinkingLevel:Qe,mode:E,janitorModel:Me,systemSettings:ce,sessionStats:Eo},kt)){let Y=pt(2);A(q=>{let j=[...q,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Chat History compacted saving tokens.
249
+ \u2800`,isMeta:!0}]));break}(async()=>{Ui(!0);let C=pt(2);A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:"\u2726 Compacting session history...",isMeta:!0}]));try{if(await Fl({chatId:ht,aiProvider:P,apiKey:ot,thinkingLevel:Qe,mode:E,janitorModel:Me,systemSettings:ce,sessionStats:Eo},kt)){let Y=pt(2);A(q=>{let j=[...q,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Chat History compacted saving tokens.
250
250
  \u2800`,isMeta:!0}];return O(j.length),j})}else A(Y=>(O(Y.length+1),[...Y,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Compaction failed.
251
251
  \u2800`,isMeta:!0}]))}catch(_){A(H=>(O(H.length+1),[...H,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Error during compaction: ${_.message}
252
- \u2800`,isMeta:!0}]))}finally{Oi(!1)}})();break}case"/truncate":{T("");let u=0;A(a=>{let C=[...a.map(_=>{let H=_.fullText||_.text||"";return!H.startsWith("[ACTION RESULT]:")&&!H.startsWith("[TOOL RESULT]:")||H.startsWith("[ACTION RESULT]: Goal")||H.startsWith("[ACTION RESULT]: USER CHOOSE")||H.includes("...Success result truncated to save tokens")?_:(u++,{..._,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"})}),{id:Date.now(),role:"system",text:`\u2726 Tool Truncation...
252
+ \u2800`,isMeta:!0}]))}finally{Ui(!1)}})();break}case"/truncate":{w("");let u=0;A(a=>{let C=[...a.map(_=>{let H=_.fullText||_.text||"";return!H.startsWith("[ACTION RESULT]:")&&!H.startsWith("[TOOL RESULT]:")||H.startsWith("[ACTION RESULT]: Goal")||H.startsWith("[ACTION RESULT]: USER CHOOSE")||H.includes("...Success result truncated to save tokens")?_:(u++,{..._,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"})}),{id:Date.now(),role:"system",text:`\u2726 Tool Truncation...
253
253
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Truncated ${u} tool result(s).
254
- \u2800`,isMeta:!0}];return yn(ht,null,C),O(C.length),C});break}case"/kill":{(async()=>{let a=x[1]?parseInt(x[1],10):null,{getProcessTree:h,killProcess:C}=await import("./process-6Y7LS2MS.js");if(!a||isNaN(a))A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Usage: \x1B[36m/kill <pid>\x1B[0m
254
+ \u2800`,isMeta:!0}];return yn(ht,null,C),O(C.length),C});break}case"/kill":{(async()=>{let a=f[1]?parseInt(f[1],10):null,{getProcessTree:h,killProcess:C}=await import("./process-6Y7LS2MS.js");if(!a||isNaN(a))A(_=>(O(_.length+1),[..._,{id:Date.now(),role:"system",text:`\u2726 Usage: \x1B[36m/kill <pid>\x1B[0m
255
255
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Select an active process PID from the autocomplete list.
256
- \u2800`,isMeta:!0}]));else{let _=a===process.pid,H=Er.some(Y=>Y.pid===a&&(Y.isRoot||Y.url&&Y.url.includes(":52991")||Y.cmd&&Y.cmd.includes("usage-daemon-worker")));if(_||H){let Y=_?"FluxFlow (Main Process)":"Internal Process";A(q=>(O(q.length+1),[...q,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mPROTECTED PROCESS\x1B[0m
256
+ \u2800`,isMeta:!0}]));else{let _=a===process.pid,H=Br.some(Y=>Y.pid===a&&(Y.isRoot||Y.url&&Y.url.includes(":52991")||Y.cmd&&Y.cmd.includes("usage-daemon-worker")));if(_||H){let Y=_?"FluxFlow (Main Process)":"Internal Process";A(q=>(O(q.length+1),[...q,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mPROTECTED PROCESS\x1B[0m
257
257
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m PID: \x1B[33m${a}\x1B[0m (${Y})
258
258
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unable to kill protected core process. Use \x1B[36m/quit\x1B[0m to safely shutdown FluxFlow.
259
259
  \u2800`,isMeta:!0}]));return}try{let Y=await C(a);Y.success?A(q=>(O(q.length+1),[...q,{id:Date.now(),role:"system",text:`\u2726 Process Terminated:
@@ -267,66 +267,66 @@ ${h}
267
267
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '/btw' only available when agent is working
268
268
  \u2800`,isMeta:!0}]));break}default:A(u=>(O(u.length+1),[...u,{id:Date.now(),role:"system",text:`\u2726 ERROR
269
269
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unknown command: '${v}'
270
- \u2800`,isMeta:!0}]))}}else{let x=`[Prompted on: ${new Date().toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}]`,v={id:"user-"+Date.now(),role:"user",text:`${m}
270
+ \u2800`,isMeta:!0}]))}}else{let f=`[Prompted on: ${new Date().toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}]`,v={id:"user-"+Date.now(),role:"user",text:`${m}
271
271
 
272
- ${x}`};A(a=>{let h=[...a,v];return O(h.length),yn(ht,null,h),h}),(async()=>{let a=!1,h=()=>{a||(a=!0,A(Y=>{let q=Y[Y.length-1];if(q&&q.text&&q.text.includes("Request Cancelled"))return Y;let Z=[...Y.map(te=>te.isStreaming?{...te,isStreaming:!1}:te),{id:"cancel-"+Date.now(),role:"agent",text:`
272
+ ${f}`};A(a=>{let h=[...a,v];return O(h.length),yn(ht,null,h),h}),(async()=>{let a=!1,h=()=>{a||(a=!0,A(Y=>{let q=Y[Y.length-1];if(q&&q.text&&q.text.includes("Request Cancelled"))return Y;let Z=[...Y.map(te=>te.isStreaming?{...te,isStreaming:!1}:te),{id:"cancel-"+Date.now(),role:"agent",text:`
273
273
 
274
- \x1B[33m\u24D8 Request Cancelled\x1B[0m`,isMeta:!1}];return O(Z.length),Z}))},C=!1;Os(!0),ys(Date.now()),B(!1);let _=Date.now(),H=!0;try{let Y=[...kt,v].filter(V=>V.role!=="think"&&!V.isVisualFeedback&&!V.isMeta&&!V.isTerminalRecord&&!(V.text&&V.text.includes("[TERMINAL_RECORD]"))&&!String(V.id).startsWith("welcome")),q=[],j=Y.map((V,Ce)=>{let be=V.fullText||V.text||"";if(V.role==="user"&&Ce<Y.length-1)if(be.includes("**CONTEXT SUMMARY OF PREVIOUS TURNS")){let Ae=be.indexOf("**CONTEXT SUMMARY OF PREVIOUS TURNS");if(Ae!==-1){let ke=be.substring(0,Ae).lastIndexOf("[SYSTEM METADATA]");ke!==-1?be=be.substring(ke).trim():be=be.substring(Ae).trim()}}else{let Ae=be.lastIndexOf("[USER]"),at=be.lastIndexOf("[USER PROMPT]");Ae!==-1?be=be.substring(Ae+6).trim():at!==-1&&(be=be.substring(at).trim())}return{...V,text:be}}),Z=0;for(;Z<j.length;){let V=j[Z];if(V.role==="user")q.push(V),Z++;else{let Ce=[];for(;Z<j.length&&j[Z].role!=="user";)Ce.push(j[Z]),Z++;let be=[],Ae=[],at=null,ke=!1,Re=()=>{be.length>0&&(q.push({role:"agent",text:be.join(`
274
+ \x1B[33m\u24D8 Request Cancelled\x1B[0m`,isMeta:!1}];return O(Z.length),Z}))},C=!1;Fs(!0),Ms(Date.now()),B(!1);let _=Date.now(),H=!0;try{let Y=[...kt,v].filter(V=>V.role!=="think"&&!V.isVisualFeedback&&!V.isMeta&&!V.isTerminalRecord&&!(V.text&&V.text.includes("[TERMINAL_RECORD]"))&&!String(V.id).startsWith("welcome")),q=[],j=Y.map((V,Ce)=>{let be=V.fullText||V.text||"";if(V.role==="user"&&Ce<Y.length-1)if(be.includes("**CONTEXT SUMMARY OF PREVIOUS TURNS")){let Ae=be.indexOf("**CONTEXT SUMMARY OF PREVIOUS TURNS");if(Ae!==-1){let ke=be.substring(0,Ae).lastIndexOf("[SYSTEM METADATA]");ke!==-1?be=be.substring(ke).trim():be=be.substring(Ae).trim()}}else{let Ae=be.lastIndexOf("[USER]"),at=be.lastIndexOf("[USER PROMPT]");Ae!==-1?be=be.substring(Ae+6).trim():at!==-1&&(be=be.substring(at).trim())}return{...V,text:be}}),Z=0;for(;Z<j.length;){let V=j[Z];if(V.role==="user")q.push(V),Z++;else{let Ce=[];for(;Z<j.length&&j[Z].role!=="user";)Ce.push(j[Z]),Z++;let be=[],Ae=[],at=null,ke=!1,Re=()=>{be.length>0&&(q.push({role:"agent",text:be.join(`
275
275
  `).trim()}),be=[]),Ae.length>0&&(q.push({role:"system",text:Ae.join(`
276
276
 
277
- `),...at?{binaryPart:at}:{}}),Ae=[],at=null),ke=!1};for(let bt=0;bt<Ce.length;bt++){let R=Ce[bt],fe=R.role==="system"&&(R.text?.startsWith("[ACTION RESULT]")||R.text?.startsWith("[TOOL RESULT]")||R.text?.startsWith("SUCCESS:")||R.text?.startsWith("ERROR:")||R.fullText?.startsWith("[ACTION RESULT]")||R.fullText?.startsWith("[TOOL RESULT]")||R.fullText?.startsWith("SUCCESS:")||R.fullText?.startsWith("ERROR:")),De=R.fullText||R.text||"",tt=De.trim();if(!(!tt&&!R.binaryPart)){if(fe){let Ne=!tt.startsWith("[ACTION RESULT]")&&!tt.startsWith("[TOOL RESULT]")?`[ACTION RESULT]: ${tt}`:tt;Ae.push(Ne),R.binaryPart&&(at=R.binaryPart)}else if(R.role==="agent"){!ke&&Ae.length>0&&Re();let Ne=tt,Lt=Il(Ne),bo=/\[\s*(?:tool:(?:functions\.)?|action:(?:functions\.)?|action:)([a-zA-Z0-9_]+)\s*\(/gi,Vt=[],To;for(;(To=bo.exec(Lt))!==null;)Vt.push(To.index);if(Vt.length>0){let hn=kl(Ne),pn=[];for(let lo=0;lo<Vt.length;lo++){let _n=Vt[lo],Wr=lo+1<Vt.length?Vt[lo+1]:Ne.length;hn.find(qi=>qi.fullMatch&&Ne.startsWith(qi.fullMatch,_n))||pn.push({start:_n,end:Wr})}if(pn.length>0){let lo="",_n=0;for(let Wr of pn)lo+=Ne.substring(_n,Wr.start),_n=Wr.end;lo+=Ne.substring(_n),Ne=lo.trim()}}if(!Ne)continue;let ir=De.endsWith(`
278
- `),_s=Ne.toLowerCase().includes("tool:")||Ne.toLowerCase().includes("action:"),Xr=!1;for(let hn=bt+1;hn<Ce.length;hn++){let pn=Ce[hn];if(pn.role==="agent"){let lo=(pn.fullText||pn.text||"").trim();if(lo){Xr=lo.startsWith("[");break}}}be.push(Ne),_s&&ir&&Xr?ke=!0:ke=!1}}}Re()}}let te=Ol(nt,q,{profile:cn,thinkingLevel:Qe,mode:E,systemSettings:ce,janitorModel:Me,sessionStats:Eo,chatId:ht,isPlayground:!!ee.playground,aiProvider:P,apiKey:ot,apiTier:gt,wildcardTooling:Sr,wildercardTooling:So,cols:K.columns-6,rows:30,onTokenChunk:(V,Ce)=>{let be=Date.now();if(ys(be),typeof Ce=="number"){hi.current=Ce;let Ae=Cs.current;Ae.startTime||(Ae.startTime=be,Ae.totalWords=0,Ae.chunks=[]),Ae.totalWords+=Ce,Ae.chunks||(Ae.chunks=[]),Ae.chunks.push({time:be,words:Ce});let ke=be-400;if(Ae.chunks=Ae.chunks.filter(Re=>Re.time>=ke),Ae.chunks.length>0){let Re=Ae.chunks.reduce((fe,De)=>fe+De.words,0),bt=Ae.chunks[0].time,R=Math.max(.4,(be-bt)/1e3);Ae.wps=Math.round(Re/R*10)/10}}},onVisualFeedback:V=>{A(Ce=>[...Ce.map(Ae=>Ae.isStreaming?{...Ae,isStreaming:!1}:Ae),{id:"visual-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:V,isVisualFeedback:!0}])},onSubagentUpdate:()=>{$a(El.map(V=>({...V})))},onExecStart:V=>{Ge(),yt(),Ei(V),Fn("")},onExecChunk:V=>{Fn(Ce=>Ce+V)},onExecEnd:()=>{A(V=>{if(!Nr.current)return V;let Ce=As.current||"",be=fl(Ce),Ae=`[TERMINAL_RECORD]
279
- COMMAND: ${Nr.current}
277
+ `),...at?{binaryPart:at}:{}}),Ae=[],at=null),ke=!1};for(let bt=0;bt<Ce.length;bt++){let R=Ce[bt],fe=R.role==="system"&&(R.text?.startsWith("[ACTION RESULT]")||R.text?.startsWith("[TOOL RESULT]")||R.text?.startsWith("SUCCESS:")||R.text?.startsWith("ERROR:")||R.fullText?.startsWith("[ACTION RESULT]")||R.fullText?.startsWith("[TOOL RESULT]")||R.fullText?.startsWith("SUCCESS:")||R.fullText?.startsWith("ERROR:")),De=R.fullText||R.text||"",tt=De.trim();if(!(!tt&&!R.binaryPart)){if(fe){let Ne=!tt.startsWith("[ACTION RESULT]")&&!tt.startsWith("[TOOL RESULT]")?`[ACTION RESULT]: ${tt}`:tt;Ae.push(Ne),R.binaryPart&&(at=R.binaryPart)}else if(R.role==="agent"){!ke&&Ae.length>0&&Re();let Ne=tt,Lt=Pl(Ne),bo=/\[\s*(?:tool:(?:functions\.)?|action:(?:functions\.)?|action:)([a-zA-Z0-9_]+)\s*\(/gi,Vt=[],wo;for(;(wo=bo.exec(Lt))!==null;)Vt.push(wo.index);if(Vt.length>0){let hn=Nl(Ne),pn=[];for(let lo=0;lo<Vt.length;lo++){let _n=Vt[lo],Gr=lo+1<Vt.length?Vt[lo+1]:Ne.length;hn.find(Zi=>Zi.fullMatch&&Ne.startsWith(Zi.fullMatch,_n))||pn.push({start:_n,end:Gr})}if(pn.length>0){let lo="",_n=0;for(let Gr of pn)lo+=Ne.substring(_n,Gr.start),_n=Gr.end;lo+=Ne.substring(_n),Ne=lo.trim()}}if(!Ne)continue;let ir=De.endsWith(`
278
+ `),Xs=Ne.toLowerCase().includes("tool:")||Ne.toLowerCase().includes("action:"),Wr=!1;for(let hn=bt+1;hn<Ce.length;hn++){let pn=Ce[hn];if(pn.role==="agent"){let lo=(pn.fullText||pn.text||"").trim();if(lo){Wr=lo.startsWith("[");break}}}be.push(Ne),Xs&&ir&&Wr?ke=!0:ke=!1}}}Re()}}let te=Ul(nt,q,{profile:cn,thinkingLevel:Qe,mode:E,systemSettings:ce,janitorModel:Me,sessionStats:Eo,chatId:ht,isPlayground:!!ee.playground,aiProvider:P,apiKey:ot,apiTier:gt,wildcardTooling:vr,wildercardTooling:So,cols:K.columns-6,rows:30,onTokenChunk:(V,Ce)=>{let be=Date.now();if(Ms(be),typeof Ce=="number"){Ti.current=Ce;let Ae=Ss.current;Ae.startTime||(Ae.startTime=be,Ae.totalWords=0,Ae.chunks=[]),Ae.totalWords+=Ce,Ae.chunks||(Ae.chunks=[]),Ae.chunks.push({time:be,words:Ce});let ke=be-400;if(Ae.chunks=Ae.chunks.filter(Re=>Re.time>=ke),Ae.chunks.length>0){let Re=Ae.chunks.reduce((fe,De)=>fe+De.words,0),bt=Ae.chunks[0].time,R=Math.max(.4,(be-bt)/1e3);Ae.wps=Math.round(Re/R*10)/10}}},onVisualFeedback:V=>{A(Ce=>[...Ce.map(Ae=>Ae.isStreaming?{...Ae,isStreaming:!1}:Ae),{id:"visual-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:V,isVisualFeedback:!0}])},onSubagentUpdate:()=>{_a(Al.map(V=>({...V})))},onExecStart:V=>{Ge(),yt(),Ai(V),Fn("")},onExecChunk:V=>{Fn(Ce=>Ce+V)},onExecEnd:()=>{A(V=>{if(!Fr.current)return V;let Ce=Ls.current||"",be=bl(Ce),Ae=`[TERMINAL_RECORD]
279
+ COMMAND: ${Fr.current}
280
280
  PTY: ${Hn}
281
281
  OUTPUT: ${be.replace(/\n{3,}/g,`
282
282
 
283
- `)}`,ke=[...V.map(Re=>Re.isStreaming?{...Re,isStreaming:!1}:Re),{id:"term-"+Date.now(),role:"system",text:Ae,isTerminalRecord:!0}];return O(ke.length),ke}),Ei(null),Bi(!1),Fn(""),Nr.current=null,As.current=""},onToolResult:(V,Ce)=>{if(V==="success"){if(Ia(be=>be+1),Ce==="generate_image"){Oa(at=>at+1);let Ae={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[Fo.quality]||.002;Na(at=>at+Ae)}}else V==="denied"?ka(be=>be+1):Aa(be=>be+1)},onIDEApproval:$o,onToolApproval:async(V,Ce)=>{let be=ur(Ce||"{}"),Ae=be.path||be.targetPath||be.file||"",at=ce?.alwaysAskFiles||".env, .env.*, *.env",Re=!((V==="view_file"||V==="write_file"||V==="update_file")&&Qi(Ae,at))&&(_a||ce.autoExec);if(V==="exec_command"){let{command:bt}=be;return Re||bt&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(bt.trim())?"allow":new Promise(fe=>{$n({tool:V,args:Ce,resolve:fe}),J("terminalApproval")})}return Re?"allow":new Promise(bt=>{$n({tool:V,args:Ce,resolve:bt}),J("approval")})},onAskUser:async(V,Ce)=>(Ge(),yt(),new Promise(be=>{let Ae=!1;ks({question:V,options:Ce,resolve:at=>{Ae||(Ae=!0,A(ke=>{if(ke.some(R=>R.isAskRecord&&R.text?.includes(`Selection: ${at}`)))return ke;let bt=[...ke,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
283
+ `)}`,ke=[...V.map(Re=>Re.isStreaming?{...Re,isStreaming:!1}:Re),{id:"term-"+Date.now(),role:"system",text:Ae,isTerminalRecord:!0}];return O(ke.length),ke}),Ai(null),ki(!1),Fn(""),Fr.current=null,Ls.current=""},onToolResult:(V,Ce)=>{if(V==="success"){if(ka(be=>be+1),Ce==="generate_image"){Fa(at=>at+1);let Ae={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[Fo.quality]||.002;$a(at=>at+Ae)}}else V==="denied"?Pa(be=>be+1):La(be=>be+1)},onIDEApproval:$o,onToolApproval:async(V,Ce)=>{let be=ur(Ce||"{}"),Ae=be.path||be.targetPath||be.file||"",at=ce?.alwaysAskFiles||".env, .env.*, *.env",Re=!((V==="view_file"||V==="write_file"||V==="update_file")&&Ri(Ae,at))&&(Xa||ce.autoExec);if(V==="exec_command"){let{command:bt}=be;return Re||bt&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(bt.trim())?"allow":new Promise(fe=>{cs(),$n({tool:V,args:Ce,resolve:fe}),J("terminalApproval")})}return Re?"allow":new Promise(bt=>{cs(),$n({tool:V,args:Ce,resolve:bt}),J("approval")})},onAskUser:async(V,Ce)=>(Ge(),yt(),cs(),new Promise(be=>{let Ae=!1;Ps({question:V,options:Ce,resolve:at=>{Ae||(Ae=!0,A(ke=>{if(ke.some(R=>R.isAskRecord&&R.text?.includes(`Selection: ${at}`)))return ke;let bt=[...ke,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
284
284
  Question: ${V}
285
- Selection: ${at}`,isAskRecord:!0}];return O(bt.length),bt}),be(at))}}),J("ask")})),onUsage:V=>{let Ce=V.totalTokenCount||0,be=V.cachedContentTokenCount||0,Ae=V.candidatesTokenCount||0,at=Math.max(0,Ce-Ae);if(Qo({tokens:Ce}),wi(ke=>ke+Ce),at>0&&yi(ke=>ke+at),be>0&&Ci(ke=>ke+be),Ae>0&&Mi(ke=>ke+Ae),at>0||be>0){jt.current.push({input:at,cached:be}),jt.current.length>3&&jt.current.shift();let ke=jt.current.reduce((R,fe)=>R+fe.input,0),Re=jt.current.reduce((R,fe)=>R+fe.cached,0),bt=ke>0?Re/ke*100:0;dn(bt)}bi(ke=>ke+1)}},async()=>_o.current?_o.current:null,uo),X=!1,Ze=null,Ue=null,We=!1,Je=!1,je=!1,rt=!1,le=0,xe=null,Ke=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let V of te){if(await new Promise(R=>setTimeout(R,3)),V.type==="text"&&ys(Date.now()),H&&V.type==="text"&&(_=Date.now(),H=!1,ce.progressiveRendering&&Be()),V.type==="status"){if(V.content&&(V.content.includes("Steering Hint Injected")||V.content.includes("Question Forwarded"))){let R=_o.current;R&&(A(fe=>{O(fe.length+1);let De=R.startsWith("/btw"),tt=De?R.replace(/^\/btw\s*/,""):R,Ne=De?"[QUESTION]":"[STEERING HINT]";return[...fe,{id:"hint-"+Date.now(),role:"user",text:`${Ne}
286
- ${tt}`,color:"cyan",isSteeringHint:!0,hintType:De?"QUESTION":"STEERING HINT",hintContent:tt}]}),Fs(null),_o.current=null)}V.content?.includes("[start]")||Ls(V.content),V.content?.includes("[start]")?(clearInterval(nr),or(0),nr=setInterval(()=>{or(R=>R+1)},1e3)):V.content?.includes("[end]")&&(or(0),clearInterval(nr)),wn()&&qr(V.content),V.content==="Request Cancelled"&&(Ge(),yt(),h());continue}if(V.type==="status_history"){Ls(V.content),wn()&&qr(V.content),A(R=>[...R,{id:"condense-"+Date.now(),role:"system",text:`\u2726 ${V.content}
287
- \u2800`,isMeta:!0}]);continue}if(V.type==="summary_injected"){A(R=>R.map(fe=>fe.id===V.content.id?{...fe,fullText:V.content.text}:fe));continue}if(V.type==="spinner"){Ga(V.content);continue}if(V.type==="model_update"){qa(V.content);continue}if(V.type==="turn_reset"){if(Ge(),yt(),Ze=null,Ue=null,X=!1,We=!1,Je=!1,rt=!1,je=!1,A(R=>{let fe=R.map(De=>{if(De.isStreaming){let tt=De.text?_t(De.text):De.text,Ne=De.fullText?_t(De.fullText):De.fullText;return{...De,isStreaming:!1,text:tt,fullText:Ne}}return De});return O(fe.length),fe}),Ho(),global.gc){for(let R=0;R<2;R++)global.gc(),await new Promise(fe=>setImmediate(fe));f.current=Date.now()}continue}if(V.type==="interactive_turn_finished"){Os(!1),or(0),clearInterval(nr),wn()&&qr(null),C=!0,ce?.agentFinishSound&&(async()=>{try{let fe=(await Xo())[ht],De=xr(fe,String(ht));ti(De)}catch{ti(String(ht))}})(),Ho(),ce?.autoTruncateResults&&A(R=>{let fe=R.map(De=>{let tt=De.fullText||De.text||"";return!tt.startsWith("[ACTION RESULT]:")&&!tt.startsWith("[TOOL RESULT]:")||tt.startsWith("[ACTION RESULT]: Goal")||tt.includes("...Success result truncated to save tokens")||tt.startsWith("[ACTION RESULT]: USER CHOOSE")||tt.startsWith("[ACTION RESULT]: Skill:")||tt.startsWith("[ACTION RESULT]: DOCs:")||tt.startsWith("[ACTION RESULT]: Markdown parsed")||tt.startsWith("[ACTION RESULT]: Search results for [")||tt.startsWith("[ACTION RESULT]: AI Mode temporarily failed")?De:{...De,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"}});return yn(ht,null,fe),O(fe.length),fe}),Dl({profile:cn,thinkingLevel:Qe,mode:E,janitorModel:Me,chatId:ht,systemSettings:ce,sessionStats:Eo,aiProvider:P,apiKey:ot},V.data.agentText,V.data.fullAgentTextRaw,V.data.history,{onMemoryUpdated:()=>A(R=>{let fe=[...R];return fe.length>0&&(fe[fe.length-1].memoryUpdated=!0),fe}),onBackgroundIncrement:()=>Sa(R=>R+1)});continue}if(V.type==="visual_feedback"){Ge(),yt(),A(R=>{let fe=[...R,{id:"feedback-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:_t(V.content),isVisualFeedback:!0}];return O(fe.length),fe});continue}if(V.type==="exec_start"){Ge(),yt();continue}if(V.type==="liveTokens"){Qo({tokens:V.content});continue}if(V.type==="usage"){let R=V.content.totalTokenCount||0,fe=V.content.cachedContentTokenCount||0,De=V.content.candidatesTokenCount||0,tt=Math.max(0,R-De);if(Qo({tokens:R}),wi(Ne=>Ne+R),tt>0&&yi(Ne=>Ne+tt),fe>0&&Ci(Ne=>Ne+fe),De>0&&Mi(Ne=>Ne+De),tt>0||fe>0){jt.current.push({input:tt,cached:fe}),jt.current.length>3&&jt.current.shift();let Ne=jt.current.reduce((Vt,To)=>Vt+To.input,0),Lt=jt.current.reduce((Vt,To)=>Vt+To.cached,0),bo=Ne>0?Lt/Ne*100:0;dn(bo)}bi(Ne=>Ne+1);continue}if(V.type==="tool_time"){Pa(R=>R+V.content);continue}if(V.type==="tool_result"){if(yt(),Ze=null,Ue=null,X=!1,We=!1,Je=!1,rt=!1,je=!1,le=0,xe=null,A(R=>{let fe=[...R,{id:"tool-"+Date.now()+"-"+Math.random().toString(36).substring(2,7),role:"system",text:_t(V.content),fullText:_t(V.aiContent),binaryPart:V.binaryPart,toolName:V.toolName}];return O(fe.length),fe}),W.current&&(Ue=W.current.id,Je=!0),V.toolName==="update_file"&&V.aiContent){let R=V.aiContent.split(`
288
- `),fe=0,De=0,tt=!1;for(let Ne of R){if(Ne.includes("[DIFF_START]")){tt=!0;continue}if(Ne.includes("[DIFF_END]")){tt=!1;continue}tt&&(/^\+\s*\d+/.test(Ne)?fe++:/^\-\s*\d+/.test(Ne)&&De++)}Tn("linesAdded",fe),Tn("linesRemoved",De)}else if(V.toolName==="write_file"&&V.aiContent){let R=V.aiContent.match(/- Stats: \[(\d+) lines/),fe=R?parseInt(R[1]):0,De=0;if(V.aiContent.includes("Old File contents:")){let tt=V.aiContent.split(`
289
- `),Ne=!1;for(let Lt of tt){if(Lt.includes("Old File contents:")){Ne=!0;continue}Ne&&(Lt.startsWith("- Content Preview:")||Lt.trim()===""&&!/^\s*\d+\s*\|/.test(Lt)?Ne=!1:/^\s*\d+\s*\|/.test(Lt)&&De++)}}(fe>0||De>0)&&(Tn("linesAdded",fe),Tn("linesRemoved",De))}continue}let Ce=V.content;if(V.type==="text"&&Ce.includes("Request Cancelled")){if(global.gc){for(let R=0;R<3;R++)global.gc(),await new Promise(fe=>setImmediate(fe));f.current=Date.now()}continue}let be=Ce.toLowerCase();if(Ce.includes("```")&&(We=!We),(be.includes("tool:")||be.includes("action:"))&&(Je=!0,le=0,xe=null,(Ce.includes("[tool:")||Ce.includes("[action:"))&&(le=0)),Je){for(let R=0;R<Ce.length;R++){let fe=Ce[R];!xe&&(fe==="'"||fe==='"'||fe==="`")?xe=fe:xe&&fe===xe&&Ce[R-1]!=="\\"&&(xe=null),xe||(fe==="("||fe==="["?le++:(fe===")"||fe==="]")&&le--)}le<=0&&!xe&&(Je=!1)}let Ae=/^\s*(?:<think_fluxflow[^>]*>|<\|channel>thought|\[think_fluxflow\])/i,at=(R,fe,De=1)=>{let tt=fe>0?R[fe-1]:"",Ne=fe+De<R.length?R[fe+De]:"";return tt==="`"&&Ne==="`"},ke=R=>{let fe=/(?:<\/think_fluxflow>|<channel\|>|\[\/think_fluxflow\])/gi,De;for(;(De=fe.exec(R))!==null;)if(!at(R,De.index,De[0].length))return{index:De.index,length:De[0].length};return{index:-1,length:0}},Re=W.current?.role==="agent"&&W.current.text||"",bt=!je&&Re.trim().length===0;if(!X&&bt&&(Ae.test(Ce)||Ae.test(Re+Ce))){let R=Ae.test(Ce)?Ce:Re+Ce,fe=R.match(Ae),De=fe.index,tt=fe[0].length,Ne=R.substring(De+tt);Ge(),W.current=null,X=!0,je=!0,Ze="think-"+Date.now(),W.current={id:Ze,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let Lt=ke(Ne);if(Lt.index!==-1){let Vt=Ne.substring(0,Lt.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),To=Ne.substring(Lt.index+Lt.length);W.current.text=_t(Vt);let ir=W.current.startTime||Date.now();W.current.duration=Date.now()-ir,yt(),X=!1,Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:"",isStreaming:!0},To&&Pe(To)}else{let bo=Ne.replace(/^\r?\n+/,"");bo&&Pe(bo)}continue}if(!X&&!je&&Ce.trim().length>0&&(je=!0),X&&W.current?.role==="think"){Ge();let fe=(W.current.text||"")+Ce,De=ke(fe);if(De.index!==-1){let tt=fe.substring(0,De.index),Ne=fe.substring(De.index+De.length);W.current.text=_t(tt);let Lt=W.current.startTime||Date.now();W.current.duration=Date.now()-Lt,yt(),X=!1,Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:"",isStreaming:!0},Ne&&Pe(Ne)}else Pe(Ce);continue}else if(!X){let R=Ce.toLowerCase();!rt&&(R.includes("tool:")||R.includes("action:"))&&(rt=!0),!W.current||W.current.role!=="agent"?(Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:_t(Ce),isStreaming:!0},Ee()):Pe(Ce)}}let st=Date.now();La(V=>V+(st-_))}catch(Y){A(q=>(O(q.length+1),[...q,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${Y.message}`}]))}finally{let Y=Date.now()-_;if(W.current&&(W.current.workedDuration=Y),Oe.current&&(await ye(),clearInterval(Oe.current),Oe.current=null),Os(!1),Ls(null),or(0),clearInterval(nr),yt(),Ns.current&&h(),Ho(),global.gc)try{for(let q=0;q<3;q++)global.gc(),await new Promise(j=>setImmediate(j));f.current=Date.now()}catch{}if(C||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),_o.current){$s(_o.current),Fs(null);let q=_o.current;_o.current=null,A(j=>{let Z=[...j],te=Z.reverse().find(X=>X.text?.includes("[STEERING HINT: QUEUED]")||X.text?.includes("[QUESTION: QUEUED]"));return te&&(te.text.includes("[STEERING HINT: QUEUED]")?te.text=te.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]"):te.text.includes("[QUESTION: QUEUED]")&&(te.text=te.text.replace("[QUESTION: QUEUED]","[QUESTION: FINISHED_TURN]"))),Z.reverse()}),J("resolution")}A(q=>{let j=Date.now()-_,Z=!1,te=[...q].reverse().map(Ue=>{let We=Ue.isStreaming?{...Ue,isStreaming:!1}:Ue;return We.text&&(We.text=(" "+We.text).slice(1)),!Z&&We.role==="agent"&&(Z=!0,We={...We,workedDuration:j}),We}).reverse();if(!te.some(Ue=>Ue.role==="agent"&&Ue.text?.trim().length>0)){let Ue=[...te].reverse().find(We=>We.role==="think"&&We.text?.trim().length>0);Ue&&te.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Ue.text,isStreaming:!1,workedDuration:j})}let Ze=te.filter(Ue=>!String(Ue.id).startsWith("welcome")&&(!Ue.isMeta||Ue.text&&Ue.text.includes("Request Cancelled")));return yn(ht,null,Ze),O(te.length),te})}})()}T(""),B(!1)}},lt=Vn(()=>{if(w.startsWith("/")&&!ie){let x=w.split(" "),v=x[x.length-1].toLowerCase();if(x.length===1){let a=v.startsWith("/")?v.slice(1):v;return Yi.filter(h=>(h.cmd.startsWith("/")?h.cmd.slice(1):h.cmd).toLowerCase().includes(a))}let u=Yi;for(let a=0;a<x.length-1;a++){let h=x[a].toLowerCase(),C=u.find(_=>_.cmd.toLowerCase()===h);if(C&&C.subs)u=C.subs;else return[]}return u.filter(a=>a.cmd.toLowerCase().includes(v))}let n=w.split(" "),o=n[n.length-1],c=o&&o.startsWith("\\@");if((o&&o.startsWith("@")||c)&&!ie){let x=o.indexOf("#"),v=x!==-1,u=c?2:1,a=v?o.substring(u,x).toLowerCase():o.slice(u).toLowerCase(),h=v?o.substring(x):"";return Wd(process.cwd()).filter(H=>H.name.toLowerCase().includes(a)).map(H=>{let Y=H.relativePath.replace(/\\/g,"/"),q=Y.startsWith(".")?Y:"./"+Y;return{cmd:(c?"\\@":"@")+"["+q+h+"]",desc:H.relativePath}})}return[]},[w,ie]);ft(()=>{let n=0;for(;n<lt.length;){let o=lt[n],c=o?.cmd||o||"";if(typeof c=="string"&&c.trimStart().startsWith("---"))n++;else break}ge(n<lt.length?n:0)},[lt]);let[_r,Hr]=Q(0),Ki=it(0);ft(()=>{let n=Ki.current>0,o=lt.length>0;if(Ki.current=lt.length,!o){Hr(0);return}if(!n){Hr(1);return}Hr(lt.length)},[lt]),ft(()=>{if(_r>0&&_r<lt.length){let n=setTimeout(()=>{Hr(o=>Math.min(o+1,lt.length))},1);return()=>clearTimeout(n)}},[_r,lt.length]),ft(()=>{if(Tt!=="providerBudgetSelect")return;let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=$e.providerBudgets||{},c=n.reduce((m,x)=>(m[x]=!!(o[x]&&(o[x].agentLimit||o[x].tokenLimit||o[x].monthlyTokenLimit||o[x].dailyCostLimit||o[x].monthlyCostLimit)),m),{});fi(c),Dr(0)},[Tt]),ft(()=>{if(Tt!=="providerBudgetFlow")return;let n={},o=$e.providerBudgets||{};for(let c of Mn){let m=o[c]||{};n[c]={agentLimit:Ko(m.agentLimit),tokenLimit:Ko(m.tokenLimit),monthlyTokenLimit:Ko(m.monthlyTokenLimit),dailyCostLimit:Ko(m.dailyCostLimit),monthlyCostLimit:Ko(m.monthlyCostLimit)}}Qn(n),fo(0)},[Tt,Mn]);let ou=({label:n,isSelected:o})=>{let c=n==="Cancel"||n==="Back"||n.toLowerCase().includes("exit")||n.toLowerCase().includes("back");return e.createElement(d,{marginTop:c?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(s,{color:o?"white":"gray",bold:o},o?"\u276F ":" ",n))},io=(n,o,c,m=10,x=2,v=9)=>{let u=co(c),a=!u&&c>0?Math.min(100,o/c*100):0,h=Math.round(a),C=Math.round(h/100*m),_="\u2588".repeat(C)+"\u2591".repeat(Math.max(0,m-C)),H=r.success||"green";h>=40&&h<=80?H=r.warning||"yellow":h>80&&(H=r.danger||"red");let Y=n.toLowerCase().includes("cost")||n.toLowerCase().includes("spend"),q=!Y&&(n.toLowerCase().includes("token")||n.toLowerCase().includes("daily")||n.toLowerCase().includes("monthly")),j=u?"\u221E":Y?`$${Number(c).toFixed(2)}`:q?Dt(c):c,Z=Number(o)||0,te=Y?`$${Z.toFixed(Z<.01&&Z>0?4:2)}`:q?Dt(o):o,X;return u||a===0?X="0%":a>0&&a<1?X="<1%":X=`${h}%`,e.createElement(d,{flexDirection:"row",paddingLeft:x,key:n},e.createElement(d,{width:v},e.createElement(s,{color:r.textMuted},n,": ")),e.createElement(s,{color:H},_),e.createElement(s,{color:r.textMuted}," ",X," (",te,"/",j,")"))},Za=()=>{switch(Tt){case"settings":return e.createElement(ss,{systemSettings:ce,setSystemSettings:Ot,apiTier:gt,setActiveView:J,setInputConfig:St,saveSettings:Xt,quotas:$e,setMessages:A,aiProvider:P,autoCompletion:zn,setAutoCompletion:ws,profileData:cn,setProfileData:Ts,setProviderReturnView:ps});case"theme":return e.createElement(ss,{systemSettings:ce,setSystemSettings:Ot,apiTier:gt,setActiveView:J,setInputConfig:St,saveSettings:Xt,quotas:$e,setMessages:A,aiProvider:P,autoCompletion:zn,setAutoCompletion:ws,profileData:cn,setProfileData:Ts,initialSelectingTheme:!0,onCloseTheme:()=>J("chat"),setProviderReturnView:ps});case"selectProvider":return e.createElement(At,{title:"SELECT AI PROVIDER",searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"},{label:"Back",value:qo}],theme:ce.theme,onSelect:async n=>{if(n.value===qo||n.value==="settings"||n.value==="Back"){J(qo);return}let o=n.value,c=await Ro(o),m="";if(o==="9router"){let x=await ai();x.ok||(m=`
285
+ Selection: ${at}`,isAskRecord:!0}];return O(bt.length),bt}),be(at))}}),J("ask")})),onUsage:V=>{let Ce=V.totalTokenCount||0,be=V.cachedContentTokenCount||0,Ae=V.candidatesTokenCount||0,at=Math.max(0,Ce-Ae);if(Qo({tokens:Ce}),Si(ke=>ke+Ce),at>0&&vi(ke=>ke+at),be>0&&Ei(ke=>ke+be),Ae>0&&Bi(ke=>ke+Ae),at>0||be>0){jt.current.push({input:at,cached:be}),jt.current.length>3&&jt.current.shift();let ke=jt.current.reduce((R,fe)=>R+fe.input,0),Re=jt.current.reduce((R,fe)=>R+fe.cached,0),bt=ke>0?Re/ke*100:0;dn(bt)}Ci(ke=>ke+1)}},async()=>_o.current?_o.current:null,uo),X=!1,Ze=null,Ue=null,We=!1,Je=!1,je=!1,rt=!1,le=0,xe=null,Ke=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let V of te){if(await new Promise(R=>setTimeout(R,3)),V.type==="text"&&Ms(Date.now()),H&&V.type==="text"&&(_=Date.now(),H=!1,ce.progressiveRendering&&Be()),V.type==="status"){if(V.content&&(V.content.includes("Steering Hint Injected")||V.content.includes("Question Forwarded"))){let R=_o.current;R&&(A(fe=>{O(fe.length+1);let De=R.startsWith("/btw"),tt=De?R.replace(/^\/btw\s*/,""):R,Ne=De?"[QUESTION]":"[STEERING HINT]";return[...fe,{id:"hint-"+Date.now(),role:"user",text:`${Ne}
286
+ ${tt}`,color:"cyan",isSteeringHint:!0,hintType:De?"QUESTION":"STEERING HINT",hintContent:tt}]}),Us(null),_o.current=null)}V.content?.includes("[start]")||Os(V.content),V.content?.includes("[start]")?(clearInterval(nr),or(0),nr=setInterval(()=>{or(R=>R+1)},1e3)):V.content?.includes("[end]")&&(or(0),clearInterval(nr)),Tn()&&Qr(V.content),V.content==="Request Cancelled"&&(Ge(),yt(),h());continue}if(V.type==="status_history"){Os(V.content),Tn()&&Qr(V.content),A(R=>[...R,{id:"condense-"+Date.now(),role:"system",text:`\u2726 ${V.content}
287
+ \u2800`,isMeta:!0}]);continue}if(V.type==="summary_injected"){A(R=>R.map(fe=>fe.id===V.content.id?{...fe,fullText:V.content.text}:fe));continue}if(V.type==="spinner"){Ya(V.content);continue}if(V.type==="model_update"){za(V.content);continue}if(V.type==="turn_reset"){if(Ge(),yt(),Ze=null,Ue=null,X=!1,We=!1,Je=!1,rt=!1,je=!1,A(R=>{let fe=R.map(De=>{if(De.isStreaming){let tt=De.text?_t(De.text):De.text,Ne=De.fullText?_t(De.fullText):De.fullText;return{...De,isStreaming:!1,text:tt,fullText:Ne}}return De});return O(fe.length),fe}),Ho(),global.gc){for(let R=0;R<2;R++)global.gc(),await new Promise(fe=>setImmediate(fe));x.current=Date.now()}continue}if(V.type==="interactive_turn_finished"){Fs(!1),or(0),clearInterval(nr),Tn()&&Qr(null),C=!0,ce?.agentFinishSound&&(async()=>{try{let fe=(await Xo())[ht],De=xr(fe,String(ht));si(De)}catch{si(String(ht))}})(),Ho(),ce?.autoTruncateResults&&A(R=>{let fe=R.map(De=>{let tt=De.fullText||De.text||"";return!tt.startsWith("[ACTION RESULT]:")&&!tt.startsWith("[TOOL RESULT]:")||tt.startsWith("[ACTION RESULT]: Goal")||tt.includes("...Success result truncated to save tokens")||tt.startsWith("[ACTION RESULT]: USER CHOOSE")||tt.startsWith("[ACTION RESULT]: Skill:")||tt.startsWith("[ACTION RESULT]: DOCs:")||tt.startsWith("[ACTION RESULT]: Markdown parsed")||tt.startsWith("[ACTION RESULT]: Search results for [")||tt.startsWith("[ACTION RESULT]: AI Mode temporarily failed")?De:{...De,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"}});return yn(ht,null,fe),O(fe.length),fe}),Ll({profile:cn,thinkingLevel:Qe,mode:E,janitorModel:Me,chatId:ht,systemSettings:ce,sessionStats:Eo,aiProvider:P,apiKey:ot},V.data.agentText,V.data.fullAgentTextRaw,V.data.history,{onMemoryUpdated:()=>A(R=>{let fe=[...R];return fe.length>0&&(fe[fe.length-1].memoryUpdated=!0),fe}),onBackgroundIncrement:()=>Ea(R=>R+1)});continue}if(V.type==="visual_feedback"){Ge(),yt(),A(R=>{let fe=[...R,{id:"feedback-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:_t(V.content),isVisualFeedback:!0}];return O(fe.length),fe});continue}if(V.type==="exec_start"){Ge(),yt();continue}if(V.type==="liveTokens"){Qo({tokens:V.content});continue}if(V.type==="usage"){let R=V.content.totalTokenCount||0,fe=V.content.cachedContentTokenCount||0,De=V.content.candidatesTokenCount||0,tt=Math.max(0,R-De);if(Qo({tokens:R}),Si(Ne=>Ne+R),tt>0&&vi(Ne=>Ne+tt),fe>0&&Ei(Ne=>Ne+fe),De>0&&Bi(Ne=>Ne+De),tt>0||fe>0){jt.current.push({input:tt,cached:fe}),jt.current.length>3&&jt.current.shift();let Ne=jt.current.reduce((Vt,wo)=>Vt+wo.input,0),Lt=jt.current.reduce((Vt,wo)=>Vt+wo.cached,0),bo=Ne>0?Lt/Ne*100:0;dn(bo)}Ci(Ne=>Ne+1);continue}if(V.type==="tool_time"){Na(R=>R+V.content);continue}if(V.type==="tool_result"){if(yt(),Ze=null,Ue=null,X=!1,We=!1,Je=!1,rt=!1,je=!1,le=0,xe=null,A(R=>{let fe=[...R,{id:"tool-"+Date.now()+"-"+Math.random().toString(36).substring(2,7),role:"system",text:_t(V.content),fullText:_t(V.aiContent),binaryPart:V.binaryPart,toolName:V.toolName}];return O(fe.length),fe}),W.current&&(Ue=W.current.id,Je=!0),V.toolName==="update_file"&&V.aiContent){let R=V.aiContent.split(`
288
+ `),fe=0,De=0,tt=!1;for(let Ne of R){if(Ne.includes("[DIFF_START]")){tt=!0;continue}if(Ne.includes("[DIFF_END]")){tt=!1;continue}tt&&(/^\+\s*\d+/.test(Ne)?fe++:/^\-\s*\d+/.test(Ne)&&De++)}wn("linesAdded",fe),wn("linesRemoved",De)}else if(V.toolName==="write_file"&&V.aiContent){let R=V.aiContent.match(/- Stats: \[(\d+) lines/),fe=R?parseInt(R[1]):0,De=0;if(V.aiContent.includes("Old File contents:")){let tt=V.aiContent.split(`
289
+ `),Ne=!1;for(let Lt of tt){if(Lt.includes("Old File contents:")){Ne=!0;continue}Ne&&(Lt.startsWith("- Content Preview:")||Lt.trim()===""&&!/^\s*\d+\s*\|/.test(Lt)?Ne=!1:/^\s*\d+\s*\|/.test(Lt)&&De++)}}(fe>0||De>0)&&(wn("linesAdded",fe),wn("linesRemoved",De))}continue}let Ce=V.content;if(V.type==="text"&&Ce.includes("Request Cancelled")){if(global.gc){for(let R=0;R<3;R++)global.gc(),await new Promise(fe=>setImmediate(fe));x.current=Date.now()}continue}let be=Ce.toLowerCase();if(Ce.includes("```")&&(We=!We),(be.includes("tool:")||be.includes("action:"))&&(Je=!0,le=0,xe=null,(Ce.includes("[tool:")||Ce.includes("[action:"))&&(le=0)),Je){for(let R=0;R<Ce.length;R++){let fe=Ce[R];!xe&&(fe==="'"||fe==='"'||fe==="`")?xe=fe:xe&&fe===xe&&Ce[R-1]!=="\\"&&(xe=null),xe||(fe==="("||fe==="["?le++:(fe===")"||fe==="]")&&le--)}le<=0&&!xe&&(Je=!1)}let Ae=/^\s*(?:<think_fluxflow[^>]*>|<\|channel>thought|\[think_fluxflow\])/i,at=(R,fe,De=1)=>{let tt=fe>0?R[fe-1]:"",Ne=fe+De<R.length?R[fe+De]:"";return tt==="`"&&Ne==="`"},ke=R=>{let fe=/(?:<\/think_fluxflow>|<channel\|>|\[\/think_fluxflow\])/gi,De;for(;(De=fe.exec(R))!==null;)if(!at(R,De.index,De[0].length))return{index:De.index,length:De[0].length};return{index:-1,length:0}},Re=W.current?.role==="agent"&&W.current.text||"",bt=!je&&Re.trim().length===0;if(!X&&bt&&(Ae.test(Ce)||Ae.test(Re+Ce))){let R=Ae.test(Ce)?Ce:Re+Ce,fe=R.match(Ae),De=fe.index,tt=fe[0].length,Ne=R.substring(De+tt);Ge(),W.current=null,X=!0,je=!0,Ze="think-"+Date.now(),W.current={id:Ze,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let Lt=ke(Ne);if(Lt.index!==-1){let Vt=Ne.substring(0,Lt.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),wo=Ne.substring(Lt.index+Lt.length);W.current.text=_t(Vt);let ir=W.current.startTime||Date.now();W.current.duration=Date.now()-ir,yt(),X=!1,Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:"",isStreaming:!0},wo&&Pe(wo)}else{let bo=Ne.replace(/^\r?\n+/,"");bo&&Pe(bo)}continue}if(!X&&!je&&Ce.trim().length>0&&(je=!0),X&&W.current?.role==="think"){Ge();let fe=(W.current.text||"")+Ce,De=ke(fe);if(De.index!==-1){let tt=fe.substring(0,De.index),Ne=fe.substring(De.index+De.length);W.current.text=_t(tt);let Lt=W.current.startTime||Date.now();W.current.duration=Date.now()-Lt,yt(),X=!1,Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:"",isStreaming:!0},Ne&&Pe(Ne)}else Pe(Ce);continue}else if(!X){let R=Ce.toLowerCase();!rt&&(R.includes("tool:")||R.includes("action:"))&&(rt=!0),!W.current||W.current.role!=="agent"?(Ue="agent-"+Date.now(),W.current={id:Ue,role:"agent",text:_t(Ce),isStreaming:!0},Ee()):Pe(Ce)}}let st=Date.now();Oa(V=>V+(st-_))}catch(Y){A(q=>(O(q.length+1),[...q,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${Y.message}`}]))}finally{let Y=Date.now()-_;if(W.current&&(W.current.workedDuration=Y),Oe.current&&(await ye(),clearInterval(Oe.current),Oe.current=null),Fs(!1),Os(null),or(0),clearInterval(nr),yt(),$s.current&&h(),Ho(),global.gc)try{for(let q=0;q<3;q++)global.gc(),await new Promise(j=>setImmediate(j));x.current=Date.now()}catch{}if(C||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),_o.current){_s(_o.current),Us(null);let q=_o.current;_o.current=null,A(j=>{let Z=[...j],te=Z.reverse().find(X=>X.text?.includes("[STEERING HINT: QUEUED]")||X.text?.includes("[QUESTION: QUEUED]"));return te&&(te.text.includes("[STEERING HINT: QUEUED]")?te.text=te.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]"):te.text.includes("[QUESTION: QUEUED]")&&(te.text=te.text.replace("[QUESTION: QUEUED]","[QUESTION: FINISHED_TURN]"))),Z.reverse()}),J("resolution")}A(q=>{let j=Date.now()-_,Z=!1,te=[...q].reverse().map(Ue=>{let We=Ue.isStreaming?{...Ue,isStreaming:!1}:Ue;return We.text&&(We.text=(" "+We.text).slice(1)),!Z&&We.role==="agent"&&(Z=!0,We={...We,workedDuration:j}),We}).reverse();if(!te.some(Ue=>Ue.role==="agent"&&Ue.text?.trim().length>0)){let Ue=[...te].reverse().find(We=>We.role==="think"&&We.text?.trim().length>0);Ue&&te.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Ue.text,isStreaming:!1,workedDuration:j})}let Ze=te.filter(Ue=>!String(Ue.id).startsWith("welcome")&&(!Ue.isMeta||Ue.text&&Ue.text.includes("Request Cancelled")));return yn(ht,null,Ze),O(te.length),te})}})()}w(""),B(!1)}},lt=Vn(()=>{if(T.startsWith("/")&&!ie){let f=T.split(" "),v=f[f.length-1].toLowerCase();if(f.length===1){let a=v.startsWith("/")?v.slice(1):v;return Qi.filter(h=>(h.cmd.startsWith("/")?h.cmd.slice(1):h.cmd).toLowerCase().includes(a))}let u=Qi;for(let a=0;a<f.length-1;a++){let h=f[a].toLowerCase(),C=u.find(_=>_.cmd.toLowerCase()===h);if(C&&C.subs)u=C.subs;else return[]}return u.filter(a=>a.cmd.toLowerCase().includes(v))}let n=T.split(" "),o=n[n.length-1],c=o&&o.startsWith("\\@");if((o&&o.startsWith("@")||c)&&!ie){let f=o.indexOf("#"),v=f!==-1,u=c?2:1,a=v?o.substring(u,f).toLowerCase():o.slice(u).toLowerCase(),h=v?o.substring(f):"";return Gd(process.cwd()).filter(H=>H.name.toLowerCase().includes(a)).map(H=>{let Y=H.relativePath.replace(/\\/g,"/"),q=Y.startsWith(".")?Y:"./"+Y;return{cmd:(c?"\\@":"@")+"["+q+h+"]",desc:H.relativePath}})}return[]},[T,ie]);ft(()=>{let n=0;for(;n<lt.length;){let o=lt[n],c=o?.cmd||o||"";if(typeof c=="string"&&c.trimStart().startsWith("---"))n++;else break}ge(n<lt.length?n:0)},[lt]);let[Hr,Xr]=Q(0),Ji=it(0);ft(()=>{let n=Ji.current>0,o=lt.length>0;if(Ji.current=lt.length,!o){Xr(0);return}if(!n){Xr(1);return}Xr(lt.length)},[lt]),ft(()=>{if(Hr>0&&Hr<lt.length){let n=setTimeout(()=>{Xr(o=>Math.min(o+1,lt.length))},1);return()=>clearTimeout(n)}},[Hr,lt.length]),ft(()=>{if(wt!=="providerBudgetSelect")return;let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=$e.providerBudgets||{},c=n.reduce((m,f)=>(m[f]=!!(o[f]&&(o[f].agentLimit||o[f].tokenLimit||o[f].monthlyTokenLimit||o[f].dailyCostLimit||o[f].monthlyCostLimit)),m),{});bi(c),Ir(0)},[wt]),ft(()=>{if(wt!=="providerBudgetFlow")return;let n={},o=$e.providerBudgets||{};for(let c of Mn){let m=o[c]||{};n[c]={agentLimit:Ko(m.agentLimit),tokenLimit:Ko(m.tokenLimit),monthlyTokenLimit:Ko(m.monthlyTokenLimit),dailyCostLimit:Ko(m.dailyCostLimit),monthlyCostLimit:Ko(m.monthlyCostLimit)}}Qn(n),fo(0)},[wt,Mn]);let nu=({label:n,isSelected:o})=>{let c=n==="Cancel"||n==="Back"||n.toLowerCase().includes("exit")||n.toLowerCase().includes("back");return e.createElement(d,{marginTop:c?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(s,{color:o?"white":"gray",bold:o},o?"\u276F ":" ",n))},io=(n,o,c,m=10,f=2,v=9)=>{let u=co(c),a=!u&&c>0?Math.min(100,o/c*100):0,h=Math.round(a),C=Math.round(h/100*m),_="\u2588".repeat(C)+"\u2591".repeat(Math.max(0,m-C)),H=r.success||"green";h>=40&&h<=80?H=r.warning||"yellow":h>80&&(H=r.danger||"red");let Y=n.toLowerCase().includes("cost")||n.toLowerCase().includes("spend"),q=!Y&&(n.toLowerCase().includes("token")||n.toLowerCase().includes("daily")||n.toLowerCase().includes("monthly")),j=u?"\u221E":Y?`$${Number(c).toFixed(2)}`:q?Dt(c):c,Z=Number(o)||0,te=Y?`$${Z.toFixed(Z<.01&&Z>0?4:2)}`:q?Dt(o):o,X;return u||a===0?X="0%":a>0&&a<1?X="<1%":X=`${h}%`,e.createElement(d,{flexDirection:"row",paddingLeft:f,key:n},e.createElement(d,{width:v},e.createElement(s,{color:r.textMuted},n,": ")),e.createElement(s,{color:H},_),e.createElement(s,{color:r.textMuted}," ",X," (",te,"/",j,")"))},ec=()=>{switch(wt){case"settings":return e.createElement(is,{systemSettings:ce,setSystemSettings:Ot,apiTier:gt,setActiveView:J,setInputConfig:St,saveSettings:Xt,quotas:$e,setMessages:A,aiProvider:P,autoCompletion:zn,setAutoCompletion:Cs,profileData:cn,setProfileData:ys,setProviderReturnView:ws});case"theme":return e.createElement(is,{systemSettings:ce,setSystemSettings:Ot,apiTier:gt,setActiveView:J,setInputConfig:St,saveSettings:Xt,quotas:$e,setMessages:A,aiProvider:P,autoCompletion:zn,setAutoCompletion:Cs,profileData:cn,setProfileData:ys,initialSelectingTheme:!0,onCloseTheme:()=>J("chat"),setProviderReturnView:ws});case"selectProvider":return e.createElement(At,{title:"SELECT AI PROVIDER",searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"},{label:"Back",value:qo}],theme:ce.theme,onSelect:async n=>{if(n.value===qo||n.value==="settings"||n.value==="Back"){J(qo);return}let o=n.value,c=await Ro(o),m="";if(o==="9router"){let f=await mi();f.ok||(m=`
290
290
 
291
- \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${x.url}.\x1B[39m
292
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}if(o==="c_openai"){if(!ce.customOpenAIBaseUrl){St({label:"Enter Custom OpenAI Base URL (.../v1):",key:"customOpenAIBaseUrl",value:"",returnView:qo}),J("input");return}let x=c||"";dt(o),Xe(x),Wo(x,{aiProvider:o,onIDEApproval:$o});let v=($e.providerTiers||{})[o]||"Free",u=no(o,v)||"";Jt(u),vo(v),Ot(a=>({...a,memory:!1})),Xt({aiProvider:o,activeModel:u,apiTier:v,quotas:$e,systemSettings:{...ce,memory:!1}}),A(a=>[...a,{role:"system",text:`\u2726 Switched to Custom (OpenAI)!${u?`
291
+ \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${f.url}.\x1B[39m
292
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}if(o==="c_openai"){if(!ce.customOpenAIBaseUrl){St({label:"Enter Custom OpenAI Base URL (.../v1):",key:"customOpenAIBaseUrl",value:"",returnView:qo}),J("input");return}let f=c||"";dt(o),Xe(f),Wo(f,{aiProvider:o,onIDEApproval:$o});let v=($e.providerTiers||{})[o]||"Free",u=no(o,v)||"";Jt(u),vo(v),Ot(a=>({...a,memory:!1})),Xt({aiProvider:o,activeModel:u,apiTier:v,quotas:$e,systemSettings:{...ce,memory:!1}}),A(a=>[...a,{role:"system",text:`\u2726 Switched to Custom (OpenAI)!${u?`
293
293
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${u}.`:""}
294
294
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${ce.customOpenAIBaseUrl}${ce.memory?`
295
295
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom (OpenAI).`:""}
296
- \u2800`,isMeta:!0}]),J(qo);return}if(c){dt(o),Xe(c),Wo(c,{aiProvider:o,onIDEApproval:$o});let x=($e.providerTiers||{})[o]||"Free",v=no(o,x);Jt(v),vo(x),o==="NVIDIA"&&process.env.NVIDIA_BASE_URL||o==="Ollama"||o==="InferX"||o==="SenseNova"||o==="Poolside"||o==="9router"||o==="ExpLabs"||o==="TokenHarbor"||o==="Infron"||o==="APInex"||o==="c_openai"?(Ot(a=>({...a,memory:!1})),Xt({aiProvider:o,activeModel:v,apiTier:x,quotas:$e,systemSettings:{...ce,memory:!1}})):Xt({aiProvider:o,activeModel:v,apiTier:x,quotas:$e});let u=o==="c_openai"?"Custom (OpenAI)":o;A(a=>[...a,{role:"system",text:`\u2726 Switched to ${u} (cached)!${v?`
296
+ \u2800`,isMeta:!0}]),J(qo);return}if(c){dt(o),Xe(c),Wo(c,{aiProvider:o,onIDEApproval:$o});let f=($e.providerTiers||{})[o]||"Free",v=no(o,f);Jt(v),vo(f),o==="NVIDIA"&&process.env.NVIDIA_BASE_URL||o==="Ollama"||o==="InferX"||o==="SenseNova"||o==="Poolside"||o==="9router"||o==="ExpLabs"||o==="TokenHarbor"||o==="Infron"||o==="APInex"||o==="c_openai"?(Ot(a=>({...a,memory:!1})),Xt({aiProvider:o,activeModel:v,apiTier:f,quotas:$e,systemSettings:{...ce,memory:!1}})):Xt({aiProvider:o,activeModel:v,apiTier:f,quotas:$e});let u=o==="c_openai"?"Custom (OpenAI)":o;A(a=>[...a,{role:"system",text:`\u2726 Switched to ${u} (cached)!${v?`
297
297
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${v}.`:""}${(o==="Ollama"||o==="InferX"||o==="SenseNova"||o==="AIHubMix"||o==="Poolside"||o==="9router"||o==="ExpLabs"||o==="TokenHarbor"||o==="Infron"||o==="APInex"||o==="c_openai")&&ce.memory?`
298
298
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with ${u}.`:""}${o==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&ce.memory?`
299
299
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom Endpoints.`:""}${m}
300
- \u2800`,isMeta:!0}]),J(qo)}else St({label:`Enter ${o==="c_openai"?"Custom (OpenAI)":o} API Key:`,key:"providerKey",provider:o,value:"",returnView:qo}),J("input")},onClose:()=>J(qo)});case"apiTier":return e.createElement(At,{title:`Show Paid models from ${P.toUpperCase()}?`,subtitle:"Curated model list. Can use anything if typed manually.",items:[{label:"No (For Free APIs) [Shows Free model list]",value:"Free"},{label:`Yes (For Billing APIs) [Shows Paid model list] ${gt==="Paid"?"\u25CF":""}`,value:"Paid"},{label:"Back",value:"settings"}],theme:ce.theme,onSelect:n=>{if(n.value==="settings"||n.value==="Back"){J("settings");return}let o=n.value;vo(o);let c={...$e.providerTiers||{},[P]:o},m={...$e,providerTiers:c};wt(m),Xt({apiTier:o,quotas:m}),J("settings")}});case"resetMode":return e.createElement(At,{title:"SELECT MONTHLY RESET MODE",items:[{label:"Default (Rolling 30-Day Window)",value:"Rolling"},{label:"Custom (Set reset day of month)",value:"Custom"},{label:"Back",value:"apiTier"}],theme:ce.theme,onSelect:n=>{if(n.value==="apiTier"||n.value==="Back"){J("apiTier");return}let o=n.value,c={...$e,resetMode:o};wt(c),o==="Custom"?(St({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String($e.resetDay||1),returnView:"settings"}),J("input")):(Xt({apiTier:gt,quotas:c}),J("settings"))},onClose:()=>J("apiTier")});case"budgetTypeSelect":return e.createElement(At,{title:"SELECT BUDGET TYPE",items:[{label:`Global Budget (single limit for all providers) ${gt==="Paid"&&!$e.providerBudgets?.__useProvider?"\u25CF":""}`,value:"global"},{label:`Provider Budgets (set limits per provider individually) ${$e.providerBudgets?.__useProvider?"\u25CF":""}`,value:"provider"},{label:"Back",value:No}],theme:ce.theme,onSelect:n=>{if(n.value===No||n.value==="Back"){J(No);return}if(n.value==="global"){let o={...$e,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{__useProvider:!1}};wt(o);let c=No==="settings"?"resetMode":"budgetResetMode";St({label:"Enter Agent daily budget (tokens used):",key:"quotas",subKey:"tokenLimit",value:Ko(o.tokenLimit),returnView:No,next:m=>({label:"Enter Agent monthly budget (tokens used):",key:"quotas",subKey:"monthlyTokenLimit",value:Ko(m.monthlyTokenLimit),returnView:No,next:x=>({label:"Enter Daily Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"dailyCostLimit",value:Ko(x.dailyCostLimit),returnView:No,next:v=>({label:"Enter Monthly Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"monthlyCostLimit",value:Ko(v.monthlyCostLimit),returnView:c})})})}),J("input")}else if(n.value==="provider"){let o={...$e,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{...$e.providerBudgets||{},__useProvider:!0}};wt(o),J("providerBudgetSelect")}},onClose:()=>J(No)});case"providerBudgetSelect":{let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=n.some(c=>bs[c]);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.text,bold:!0},"SELECT PROVIDERS TO SET LIMITS FOR")),n.map((c,m)=>{let x=m===xi,v=!!bs[c];return e.createElement(d,{key:c,backgroundColor:x?r.highlightBg||"#2a2a2a":void 0,paddingX:1,width:"100%",flexDirection:"row"},e.createElement(s,{color:x?r.text:r.textMuted,bold:x},x?"\u276F ":" "),e.createElement(s,{color:v?r.success||"green":r.textMuted},v?"\u2611":"\u2610"),e.createElement(s,{color:x?r.text:r.textMuted,bold:x}," ",c),v&&($e.providerBudgets?.[c]?.agentLimit||$e.providerBudgets?.[c]?.tokenLimit||$e.providerBudgets?.[c]?.monthlyTokenLimit||$e.providerBudgets?.[c]?.dailyCostLimit||$e.providerBudgets?.[c]?.monthlyCostLimit)?e.createElement(s,{color:r.primary||"cyan"}," (budget set)"):null)}),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"column"},e.createElement(s,{color:r.textMuted,italic:!0},"\u2191\u2193 Navigate \u2022 Space to toggle \u2022 Enter to confirm \u2022 ESC to go back"),!o&&e.createElement(s,{color:r.warning||"yellow",italic:!0}," Select at least one provider to continue")))}case"providerBudgetFlow":{let n=Mn.length,o=n*4;return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",flexDirection:"row"},e.createElement(s,{color:r.text,bold:!0},"PROVIDER BUDGET CONFIGURATION"),e.createElement(s,{color:r.textMuted,italic:!0},"(0 or blank = unlimited)")),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"row"},e.createElement(d,{width:13},e.createElement(s,{color:r.textMuted,bold:!0},"PROVIDER")),e.createElement(d,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY TOKENS")),e.createElement(d,{width:22,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY TOKENS")),e.createElement(d,{width:18,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY COST ($)")),e.createElement(d,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY COST ($)"))),e.createElement(d,{paddingX:1},e.createElement(s,{color:r.borderMuted},"\u2500".repeat(93))),Mn.map((c,m)=>{let x=m*4,v=m*4+1,u=m*4+2,a=m*4+3,h=Sn===x,C=Sn===v,_=Sn===u,H=Sn===a,Y=h||C||_||H,q=qn[c]?.tokenLimit??"",j=qn[c]?.monthlyTokenLimit??"",Z=qn[c]?.dailyCostLimit??"",te=qn[c]?.monthlyCostLimit??"";return e.createElement(d,{key:c,flexDirection:"row",paddingX:1,marginY:0,backgroundColor:Y?r.highlightBg||"#2a2a2a":void 0},e.createElement(d,{width:13,flexDirection:"row"},e.createElement(s,{color:Y?r.primary||"cyan":r.text,bold:Y},Y?"\u276F ":" ",c)),e.createElement(d,{width:20,paddingLeft:1,flexDirection:"row"},h?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Yn,{value:q,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},tokenLimit:X}}))},onSubmit:()=>fo(v)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:q?r.text:r.textMuted},"[ ",q||"0 (\u221E)"," ]")),e.createElement(d,{width:22,paddingLeft:1,flexDirection:"row"},C?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Yn,{value:j,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},monthlyTokenLimit:X}}))},onSubmit:()=>fo(u)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:j?r.text:r.textMuted},"[ ",j||"0 (\u221E)"," ]")),e.createElement(d,{width:18,paddingLeft:1,flexDirection:"row"},_?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Yn,{value:Z,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},dailyCostLimit:X}}))},onSubmit:()=>fo(a)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:Z?r.warning||"yellow":r.textMuted},"[ ",Z?`$${Z}`:"0 (\u221E)"," ]")),e.createElement(d,{width:20,paddingLeft:1,flexDirection:"row"},H?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Yn,{value:te,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},monthlyCostLimit:X}}))},onSubmit:()=>{m+1<n?fo((m+1)*4):fo(o)}}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:te?r.warning||"yellow":r.textMuted},"[ ",te?`$${te}`:"0 (\u221E)"," ]")))}),e.createElement(d,{paddingX:1,marginTop:1},Sn===o?e.createElement(d,{backgroundColor:r.highlightBg||"#2a2a2a",paddingX:1},e.createElement(s,{color:r.success||"green",bold:!0},"\u276F [ Save & Apply Budgets ]")):e.createElement(s,{color:r.textMuted}," [ Save & Apply Budgets ]")),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"column"},e.createElement(s,{color:r.textMuted,italic:!0},"\u2191\u2193/\u2190\u2192 Navigate \u2022 Enter next / save \u2022 ESC to go back")))}case"budgetResetMode":return e.createElement(At,{title:"SELECT MONTHLY RESET MODE",items:[{label:"Default (Rolling 30-Day Window)",value:"Rolling"},{label:"Custom (Set reset day of month)",value:"Custom"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value,c={...$e,resetMode:o};wt(c),o==="Custom"?(St({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String($e.resetDay||1),returnView:"chat"}),J("input")):(Xt({apiTier:gt,quotas:c}),J("chat"))},onClose:()=>J("chat")});case"budgetView":{let n=Ln?.agent||0,o=$e.agentLimit||99999999,c=Ln?.tokens||0,m=$e.tokenLimit||99999999999999,x=$e.resetMode==="Custom"?Pr?.tokens||0:Jn?.tokens||0,v=$e.monthlyTokenLimit||99999999999999,u=Ln?.cost||0,a=$e.dailyCostLimit||99999999999999,h=$e.resetMode==="Custom"?Pr?.cost||0:Jn?.cost||0,C=$e.monthlyCostLimit||99999999999999,_=gt!=="Paid",H=!!$e.providerBudgets?.__useProvider,Y=$e.providerBudgets||{},q=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"].filter(X=>Y[X]&&(Y[X].agentLimit||Y[X].tokenLimit||Y[X].monthlyTokenLimit||Y[X].dailyCostLimit||Y[X].monthlyCostLimit)),j=!H&&(co(m)||co(v))&&(co(a)||co(C)),Z="",te="";if($e.resetMode==="Custom"){let X=new Date,Ze=$e.resetDay||1,Ue=X.getFullYear(),We=X.getMonth();X.getDate()>=Ze&&(We+=1,We>11&&(We=0,Ue+=1));let Je=new Date(Ue,We,Ze,0,0,0);Z=`${Je.toLocaleString("default",{month:"short"}).toUpperCase()}-${Ze}`;let rt=Math.max(0,Je.getTime()-X.getTime()),le=Math.floor(rt/(1e3*60*60)),xe=Math.floor(le/24),Ke=le%24;te=`(${xe} days: ${Ke} hrs left)`}return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:1,paddingBottom:0,paddingTop:0,width:"100%"},e.createElement(d,{marginBottom:1,justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"USAGE LIMITS"),e.createElement(s,{color:r.textMuted},"[ ESC to Close ]")),j?e.createElement(d,{padding:1,justifyContent:"center",alignItems:"center",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"LIMITS NOT SET")):H&&q.length>0?e.createElement(d,{flexDirection:"column",gap:0,width:"100%"},(()=>{let X=l?.columns||K?.columns||80;if(X<115){let We=Math.max(5,Math.min(30,X-50));return q.map(Je=>{let je=Y[Je],rt=0,le=Ln?.models?.[Je]||{};for(let be in le)rt+=le[be]?.tokens||0;let xe=0,st=($e.resetMode==="Custom"?Pr:Jn)?.models?.[Je]||{};for(let be in st)xe+=st[be]?.tokens||0;let V=0;for(let be in le)V+=le[be]?.cost||0;let Ce=0;for(let be in st)Ce+=st[be]?.cost||0;return e.createElement(d,{key:Je,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},e.createElement(d,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",Je)),io("Daily",rt,je.tokenLimit||99999999999999,We,2,9),io("Monthly",xe,je.monthlyTokenLimit||99999999999999,We,2,9),(!co(je.dailyCostLimit)||!co(je.monthlyCostLimit))&&e.createElement(e.Fragment,null,io("Daily Cost",V,je.dailyCostLimit||99999999999999,We,2,11),io("Monthly Cost",Ce,je.monthlyCostLimit||99999999999999,We,2,11)))})}let Ue=[];for(let We=0;We<q.length;We+=2)Ue.push(q.slice(We,We+2));return Ue.map((We,Je)=>e.createElement(d,{key:Je,flexDirection:"row",width:"100%"},We.map(je=>{let rt=Y[je],le=0,xe=Ln?.models?.[je]||{};for(let Re in xe)le+=xe[Re]?.tokens||0;let Ke=0,V=($e.resetMode==="Custom"?Pr:Jn)?.models?.[je]||{};for(let Re in V)Ke+=V[Re]?.tokens||0;let Ce=0;for(let Re in xe)Ce+=xe[Re]?.cost||0;let be=0;for(let Re in V)be+=V[Re]?.cost||0;let Ae=We.length===1,at=Ae?X:Math.floor(X/2),ke=Math.max(5,Math.min(25,at-36));return e.createElement(d,{key:je,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:Ae?"100%":"50%"},e.createElement(d,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",je)),io("Daily",le,rt.tokenLimit||99999999999999,ke,2,9),io("Monthly",Ke,rt.monthlyTokenLimit||99999999999999,ke,2,9),(!co(rt.dailyCostLimit)||!co(rt.monthlyCostLimit))&&e.createElement(e.Fragment,null,io("Daily Cost",Ce,rt.dailyCostLimit||99999999999999,ke,2,11),io("Monthly Cost",be,rt.monthlyCostLimit||99999999999999,ke,2,11)))})))})(),Z?e.createElement(d,{marginLeft:2,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},Z),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(d,{marginLeft:2,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.secondary||"blue",bold:!0},"Rolling 30-Day Window"))):e.createElement(d,{flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},io("Daily Tokens",c,m,"green"),io("Monthly Tokens",x,v,"yellow"),(!co(a)||!co(C))&&e.createElement(e.Fragment,null,io("Daily Cost",u,a,"cyan"),io("Monthly Cost",h,C,"magenta")),Z?e.createElement(d,{marginLeft:4,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},Z),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(d,{marginLeft:4,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.secondary||"blue",bold:!0},"Rolling 30-Day Window"))))}case"input":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1},e.createElement(s,{color:r.text,bold:!0},"DATA CONFIGURATION")),Pt?.note&&e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.textMuted,italic:!0},Pt.note)),e.createElement(d,{paddingX:1,flexDirection:"row"},e.createElement(s,{color:r.text,bold:!0},Pt?.label," "),e.createElement(Yn,{value:Pt?.value||"",onChange:n=>St(o=>({...o,value:n})),onSubmit:async n=>{let{key:o,subKey:c,next:m,onDone:x}=Pt,v={...$e},u={};if(o==="quotas"){let a;c.toLowerCase().includes("costlimit")?a=parseFloat(n)||0:c.toLowerCase().includes("limit")||c==="resetDay"?a=parseInt(n)||0:a=n,c==="resetDay"&&(a=Math.max(1,Math.min(30,a))),v[c]=a,wt(v),u.quotas=v}else if(o==="providerBudgets"){let a=Pt.providerKey,h=c.toLowerCase().includes("limit")?parseInt(n)||0:n,C=v.providerBudgets||{};v.providerBudgets={...C,[a]:{...C[a]||{},[c]:h}},wt(v),u.quotas=v}else if(o==="activeModel")Jt(n),u.activeModel=n;else if(o==="janitorModel")ae(n),u.janitorModel=n;else if(o==="autoApproveCommands"||o==="autoDisallowCommands"||o==="alwaysAskCommands"){let a={...ce,[o]:n.trim(),sandboxPreset:"Custom"};Ot(a),u.systemSettings=a}else if(o==="externalDataPath"){let a={...ce,useExternalData:!0,externalDataPath:n.trim()};Ot(a),u.systemSettings=a,A(h=>[...h,{id:Date.now(),role:"system",text:"[EXTERNAL STORAGE] Flux Flow will use "+n.trim()+" for data after restart."}])}else if(o==="customOpenAIBaseUrl"){let a=n.trim().replace(/\/+$/,""),h={...ce,customOpenAIBaseUrl:a,memory:!1};Ot(h),u.systemSettings=h;let C=($e.providerTiers||{}).c_openai||"Free",_=no("c_openai",C)||"";dt("c_openai"),Jt(_),vo(C),u.aiProvider="c_openai",u.activeModel=_,u.apiTier=C;let Y=await Ro("c_openai")||"";Xe(Y),Wo(Y,{aiProvider:"c_openai",onIDEApproval:$o}),A(q=>[...q,{id:Date.now(),role:"system",text:`\u2726 Custom OpenAI Base URL saved!
300
+ \u2800`,isMeta:!0}]),J(qo)}else St({label:`Enter ${o==="c_openai"?"Custom (OpenAI)":o} API Key:`,key:"providerKey",provider:o,value:"",returnView:qo}),J("input")},onClose:()=>J(qo)});case"apiTier":return e.createElement(At,{title:`Show Paid models from ${P.toUpperCase()}?`,subtitle:"Curated model list. Can use anything if typed manually.",items:[{label:"No (For Free APIs) [Shows Free model list]",value:"Free"},{label:`Yes (For Billing APIs) [Shows Paid model list] ${gt==="Paid"?"\u25CF":""}`,value:"Paid"},{label:"Back",value:"settings"}],theme:ce.theme,onSelect:n=>{if(n.value==="settings"||n.value==="Back"){J("settings");return}let o=n.value;vo(o);let c={...$e.providerTiers||{},[P]:o},m={...$e,providerTiers:c};Tt(m),Xt({apiTier:o,quotas:m}),J("settings")}});case"resetMode":return e.createElement(At,{title:"SELECT MONTHLY RESET MODE",items:[{label:"Default (Rolling 30-Day Window)",value:"Rolling"},{label:"Custom (Set reset day of month)",value:"Custom"},{label:"Back",value:"apiTier"}],theme:ce.theme,onSelect:n=>{if(n.value==="apiTier"||n.value==="Back"){J("apiTier");return}let o=n.value,c={...$e,resetMode:o};Tt(c),o==="Custom"?(St({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String($e.resetDay||1),returnView:"settings"}),J("input")):(Xt({apiTier:gt,quotas:c}),J("settings"))},onClose:()=>J("apiTier")});case"budgetTypeSelect":return e.createElement(At,{title:"SELECT BUDGET TYPE",items:[{label:`Global Budget (single limit for all providers) ${gt==="Paid"&&!$e.providerBudgets?.__useProvider?"\u25CF":""}`,value:"global"},{label:`Provider Budgets (set limits per provider individually) ${$e.providerBudgets?.__useProvider?"\u25CF":""}`,value:"provider"},{label:"Back",value:No}],theme:ce.theme,onSelect:n=>{if(n.value===No||n.value==="Back"){J(No);return}if(n.value==="global"){let o={...$e,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{__useProvider:!1}};Tt(o);let c=No==="settings"?"resetMode":"budgetResetMode";St({label:"Enter Agent daily budget (tokens used):",key:"quotas",subKey:"tokenLimit",value:Ko(o.tokenLimit),returnView:No,next:m=>({label:"Enter Agent monthly budget (tokens used):",key:"quotas",subKey:"monthlyTokenLimit",value:Ko(m.monthlyTokenLimit),returnView:No,next:f=>({label:"Enter Daily Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"dailyCostLimit",value:Ko(f.dailyCostLimit),returnView:No,next:v=>({label:"Enter Monthly Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"monthlyCostLimit",value:Ko(v.monthlyCostLimit),returnView:c})})})}),J("input")}else if(n.value==="provider"){let o={...$e,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{...$e.providerBudgets||{},__useProvider:!0}};Tt(o),J("providerBudgetSelect")}},onClose:()=>J(No)});case"providerBudgetSelect":{let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=n.some(c=>Ts[c]);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.text,bold:!0},"SELECT PROVIDERS TO SET LIMITS FOR")),n.map((c,m)=>{let f=m===pi,v=!!Ts[c];return e.createElement(d,{key:c,backgroundColor:f?r.highlightBg||"#2a2a2a":void 0,paddingX:1,width:"100%",flexDirection:"row"},e.createElement(s,{color:f?r.text:r.textMuted,bold:f},f?"\u276F ":" "),e.createElement(s,{color:v?r.success||"green":r.textMuted},v?"\u2611":"\u2610"),e.createElement(s,{color:f?r.text:r.textMuted,bold:f}," ",c),v&&($e.providerBudgets?.[c]?.agentLimit||$e.providerBudgets?.[c]?.tokenLimit||$e.providerBudgets?.[c]?.monthlyTokenLimit||$e.providerBudgets?.[c]?.dailyCostLimit||$e.providerBudgets?.[c]?.monthlyCostLimit)?e.createElement(s,{color:r.primary||"cyan"}," (budget set)"):null)}),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"column"},e.createElement(s,{color:r.textMuted,italic:!0},"\u2191\u2193 Navigate \u2022 Space to toggle \u2022 Enter to confirm \u2022 ESC to go back"),!o&&e.createElement(s,{color:r.warning||"yellow",italic:!0}," Select at least one provider to continue")))}case"providerBudgetFlow":{let n=Mn.length,o=n*4;return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",flexDirection:"row"},e.createElement(s,{color:r.text,bold:!0},"PROVIDER BUDGET CONFIGURATION"),e.createElement(s,{color:r.textMuted,italic:!0},"(0 or blank = unlimited)")),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"row"},e.createElement(d,{width:13},e.createElement(s,{color:r.textMuted,bold:!0},"PROVIDER")),e.createElement(d,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY TOKENS")),e.createElement(d,{width:22,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY TOKENS")),e.createElement(d,{width:18,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY COST ($)")),e.createElement(d,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY COST ($)"))),e.createElement(d,{paddingX:1},e.createElement(s,{color:r.borderMuted},"\u2500".repeat(93))),Mn.map((c,m)=>{let f=m*4,v=m*4+1,u=m*4+2,a=m*4+3,h=Sn===f,C=Sn===v,_=Sn===u,H=Sn===a,Y=h||C||_||H,q=qn[c]?.tokenLimit??"",j=qn[c]?.monthlyTokenLimit??"",Z=qn[c]?.dailyCostLimit??"",te=qn[c]?.monthlyCostLimit??"";return e.createElement(d,{key:c,flexDirection:"row",paddingX:1,marginY:0,backgroundColor:Y?r.highlightBg||"#2a2a2a":void 0},e.createElement(d,{width:13,flexDirection:"row"},e.createElement(s,{color:Y?r.primary||"cyan":r.text,bold:Y},Y?"\u276F ":" ",c)),e.createElement(d,{width:20,paddingLeft:1,flexDirection:"row"},h?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Yn,{value:q,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},tokenLimit:X}}))},onSubmit:()=>fo(v)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:q?r.text:r.textMuted},"[ ",q||"0 (\u221E)"," ]")),e.createElement(d,{width:22,paddingLeft:1,flexDirection:"row"},C?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Yn,{value:j,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},monthlyTokenLimit:X}}))},onSubmit:()=>fo(u)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:j?r.text:r.textMuted},"[ ",j||"0 (\u221E)"," ]")),e.createElement(d,{width:18,paddingLeft:1,flexDirection:"row"},_?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Yn,{value:Z,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},dailyCostLimit:X}}))},onSubmit:()=>fo(a)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:Z?r.warning||"yellow":r.textMuted},"[ ",Z?`$${Z}`:"0 (\u221E)"," ]")),e.createElement(d,{width:20,paddingLeft:1,flexDirection:"row"},H?e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Yn,{value:te,onChange:X=>{Qn(Ze=>({...Ze,[c]:{...Ze[c]||{},monthlyCostLimit:X}}))},onSubmit:()=>{m+1<n?fo((m+1)*4):fo(o)}}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:te?r.warning||"yellow":r.textMuted},"[ ",te?`$${te}`:"0 (\u221E)"," ]")))}),e.createElement(d,{paddingX:1,marginTop:1},Sn===o?e.createElement(d,{backgroundColor:r.highlightBg||"#2a2a2a",paddingX:1},e.createElement(s,{color:r.success||"green",bold:!0},"\u276F [ Save & Apply Budgets ]")):e.createElement(s,{color:r.textMuted}," [ Save & Apply Budgets ]")),e.createElement(d,{paddingX:1,marginTop:1,flexDirection:"column"},e.createElement(s,{color:r.textMuted,italic:!0},"\u2191\u2193/\u2190\u2192 Navigate \u2022 Enter next / save \u2022 ESC to go back")))}case"budgetResetMode":return e.createElement(At,{title:"SELECT MONTHLY RESET MODE",items:[{label:"Default (Rolling 30-Day Window)",value:"Rolling"},{label:"Custom (Set reset day of month)",value:"Custom"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value,c={...$e,resetMode:o};Tt(c),o==="Custom"?(St({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String($e.resetDay||1),returnView:"chat"}),J("input")):(Xt({apiTier:gt,quotas:c}),J("chat"))},onClose:()=>J("chat")});case"budgetView":{let n=Ln?.agent||0,o=$e.agentLimit||99999999,c=Ln?.tokens||0,m=$e.tokenLimit||99999999999999,f=$e.resetMode==="Custom"?Or?.tokens||0:Jn?.tokens||0,v=$e.monthlyTokenLimit||99999999999999,u=Ln?.cost||0,a=$e.dailyCostLimit||99999999999999,h=$e.resetMode==="Custom"?Or?.cost||0:Jn?.cost||0,C=$e.monthlyCostLimit||99999999999999,_=gt!=="Paid",H=!!$e.providerBudgets?.__useProvider,Y=$e.providerBudgets||{},q=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"].filter(X=>Y[X]&&(Y[X].agentLimit||Y[X].tokenLimit||Y[X].monthlyTokenLimit||Y[X].dailyCostLimit||Y[X].monthlyCostLimit)),j=!H&&(co(m)||co(v))&&(co(a)||co(C)),Z="",te="";if($e.resetMode==="Custom"){let X=new Date,Ze=$e.resetDay||1,Ue=X.getFullYear(),We=X.getMonth();X.getDate()>=Ze&&(We+=1,We>11&&(We=0,Ue+=1));let Je=new Date(Ue,We,Ze,0,0,0);Z=`${Je.toLocaleString("default",{month:"short"}).toUpperCase()}-${Ze}`;let rt=Math.max(0,Je.getTime()-X.getTime()),le=Math.floor(rt/(1e3*60*60)),xe=Math.floor(le/24),Ke=le%24;te=`(${xe} days: ${Ke} hrs left)`}return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:1,paddingBottom:0,paddingTop:0,width:"100%"},e.createElement(d,{marginBottom:1,justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"USAGE LIMITS"),e.createElement(s,{color:r.textMuted},"[ ESC to Close ]")),j?e.createElement(d,{padding:1,justifyContent:"center",alignItems:"center",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"LIMITS NOT SET")):H&&q.length>0?e.createElement(d,{flexDirection:"column",gap:0,width:"100%"},(()=>{let X=l?.columns||K?.columns||80;if(X<115){let We=Math.max(5,Math.min(30,X-50));return q.map(Je=>{let je=Y[Je],rt=0,le=Ln?.models?.[Je]||{};for(let be in le)rt+=le[be]?.tokens||0;let xe=0,st=($e.resetMode==="Custom"?Or:Jn)?.models?.[Je]||{};for(let be in st)xe+=st[be]?.tokens||0;let V=0;for(let be in le)V+=le[be]?.cost||0;let Ce=0;for(let be in st)Ce+=st[be]?.cost||0;return e.createElement(d,{key:Je,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},e.createElement(d,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",Je)),io("Daily",rt,je.tokenLimit||99999999999999,We,2,9),io("Monthly",xe,je.monthlyTokenLimit||99999999999999,We,2,9),(!co(je.dailyCostLimit)||!co(je.monthlyCostLimit))&&e.createElement(e.Fragment,null,io("Daily Cost",V,je.dailyCostLimit||99999999999999,We,2,11),io("Monthly Cost",Ce,je.monthlyCostLimit||99999999999999,We,2,11)))})}let Ue=[];for(let We=0;We<q.length;We+=2)Ue.push(q.slice(We,We+2));return Ue.map((We,Je)=>e.createElement(d,{key:Je,flexDirection:"row",width:"100%"},We.map(je=>{let rt=Y[je],le=0,xe=Ln?.models?.[je]||{};for(let Re in xe)le+=xe[Re]?.tokens||0;let Ke=0,V=($e.resetMode==="Custom"?Or:Jn)?.models?.[je]||{};for(let Re in V)Ke+=V[Re]?.tokens||0;let Ce=0;for(let Re in xe)Ce+=xe[Re]?.cost||0;let be=0;for(let Re in V)be+=V[Re]?.cost||0;let Ae=We.length===1,at=Ae?X:Math.floor(X/2),ke=Math.max(5,Math.min(25,at-36));return e.createElement(d,{key:je,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:Ae?"100%":"50%"},e.createElement(d,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",je)),io("Daily",le,rt.tokenLimit||99999999999999,ke,2,9),io("Monthly",Ke,rt.monthlyTokenLimit||99999999999999,ke,2,9),(!co(rt.dailyCostLimit)||!co(rt.monthlyCostLimit))&&e.createElement(e.Fragment,null,io("Daily Cost",Ce,rt.dailyCostLimit||99999999999999,ke,2,11),io("Monthly Cost",be,rt.monthlyCostLimit||99999999999999,ke,2,11)))})))})(),Z?e.createElement(d,{marginLeft:2,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},Z),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(d,{marginLeft:2,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.secondary||"blue",bold:!0},"Rolling 30-Day Window"))):e.createElement(d,{flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},io("Daily Tokens",c,m,"green"),io("Monthly Tokens",f,v,"yellow"),(!co(a)||!co(C))&&e.createElement(e.Fragment,null,io("Daily Cost",u,a,"cyan"),io("Monthly Cost",h,C,"magenta")),Z?e.createElement(d,{marginLeft:4,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},Z),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(d,{marginLeft:4,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.secondary||"blue",bold:!0},"Rolling 30-Day Window"))))}case"input":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(d,{paddingX:1},e.createElement(s,{color:r.text,bold:!0},"DATA CONFIGURATION")),Pt?.note&&e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.textMuted,italic:!0},Pt.note)),e.createElement(d,{paddingX:1,flexDirection:"row"},e.createElement(s,{color:r.text,bold:!0},Pt?.label," "),e.createElement(Yn,{value:Pt?.value||"",onChange:n=>St(o=>({...o,value:n})),onSubmit:async n=>{let{key:o,subKey:c,next:m,onDone:f}=Pt,v={...$e},u={};if(o==="quotas"){let a;c.toLowerCase().includes("costlimit")?a=parseFloat(n)||0:c.toLowerCase().includes("limit")||c==="resetDay"?a=parseInt(n)||0:a=n,c==="resetDay"&&(a=Math.max(1,Math.min(30,a))),v[c]=a,Tt(v),u.quotas=v}else if(o==="providerBudgets"){let a=Pt.providerKey,h=c.toLowerCase().includes("limit")?parseInt(n)||0:n,C=v.providerBudgets||{};v.providerBudgets={...C,[a]:{...C[a]||{},[c]:h}},Tt(v),u.quotas=v}else if(o==="activeModel")Jt(n),u.activeModel=n;else if(o==="janitorModel")ae(n),u.janitorModel=n;else if(o==="autoApproveCommands"||o==="autoDisallowCommands"||o==="alwaysAskCommands"){let a={...ce,[o]:n.trim(),sandboxPreset:"Custom"};Ot(a),u.systemSettings=a}else if(o==="externalDataPath"){let a={...ce,useExternalData:!0,externalDataPath:n.trim()};Ot(a),u.systemSettings=a,A(h=>[...h,{id:Date.now(),role:"system",text:"[EXTERNAL STORAGE] Flux Flow will use "+n.trim()+" for data after restart."}])}else if(o==="customOpenAIBaseUrl"){let a=n.trim().replace(/\/+$/,""),h={...ce,customOpenAIBaseUrl:a,memory:!1};Ot(h),u.systemSettings=h;let C=($e.providerTiers||{}).c_openai||"Free",_=no("c_openai",C)||"";dt("c_openai"),Jt(_),vo(C),u.aiProvider="c_openai",u.activeModel=_,u.apiTier=C;let Y=await Ro("c_openai")||"";Xe(Y),Wo(Y,{aiProvider:"c_openai",onIDEApproval:$o}),A(q=>[...q,{id:Date.now(),role:"system",text:`\u2726 Custom OpenAI Base URL saved!
301
301
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Switched to Custom (OpenAI)
302
302
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${a}${_?`
303
303
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${_}`:""}
304
- \u2800`,isMeta:!0}])}else if(o==="imageSettings"){let a=n.trim();if(a.startsWith("sk_")){let h={...Fo,apiKey:a};Ir(h),u.imageSettings=h,A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:"[IMAGE KEY] Custom API key saved successfully.",isMeta:!0}]))}}else if(o==="providerKey"){let a=n.trim(),h=Pt.provider;(h==="Ollama"||h==="9router")&&(a==="LOCAL"||a==="")&&(a="LOCAL",h==="Ollama"&&(Ot(Y=>({...Y,ollamaEndpoint:"Local"})),u.systemSettings={...ce,ollamaEndpoint:"Local"}));let C="";if(h==="9router"){let Y=await ai();Y.ok||(C=`
304
+ \u2800`,isMeta:!0}])}else if(o==="imageSettings"){let a=n.trim();if(a.startsWith("sk_")){let h={...Fo,apiKey:a};Ar(h),u.imageSettings=h,A(C=>(O(C.length+1),[...C,{id:Date.now(),role:"system",text:"[IMAGE KEY] Custom API key saved successfully.",isMeta:!0}]))}}else if(o==="providerKey"){let a=n.trim(),h=Pt.provider;(h==="Ollama"||h==="9router")&&(a==="LOCAL"||a==="")&&(a="LOCAL",h==="Ollama"&&(Ot(Y=>({...Y,ollamaEndpoint:"Local"})),u.systemSettings={...ce,ollamaEndpoint:"Local"}));let C="";if(h==="9router"){let Y=await mi();Y.ok||(C=`
305
305
 
306
306
  \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${Y.url}.\x1B[39m
307
- \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}await Gs(h,a),dt(h),Xe(a),Wo(a,{aiProvider:h,onIDEApproval:$o});let _=($e.providerTiers||{})[h]||"Free",H=no(h,_);Jt(H),vo(_),u.aiProvider=h,u.activeModel=H,u.apiTier=_,(h==="NVIDIA"&&process.env.NVIDIA_BASE_URL||h==="Ollama"||h==="CrofAI"||h==="InferX"||h==="SenseNova"||h==="AIHubMix"||h==="Poolside"||h==="9router"||h==="ExpLabs"||h==="TokenHarbor"||h==="Infron"||h==="APInex")&&(Ot(Y=>({...Y,memory:!1})),u.systemSettings={...ce,memory:!1}),A(Y=>(O(Y.length+1),[...Y,{id:Date.now(),role:"system",text:`\u2726 ${h} API Key saved successfully! ${H?`
307
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}await Ys(h,a),dt(h),Xe(a),Wo(a,{aiProvider:h,onIDEApproval:$o});let _=($e.providerTiers||{})[h]||"Free",H=no(h,_);Jt(H),vo(_),u.aiProvider=h,u.activeModel=H,u.apiTier=_,(h==="NVIDIA"&&process.env.NVIDIA_BASE_URL||h==="Ollama"||h==="CrofAI"||h==="InferX"||h==="SenseNova"||h==="AIHubMix"||h==="Poolside"||h==="9router"||h==="ExpLabs"||h==="TokenHarbor"||h==="Infron"||h==="APInex")&&(Ot(Y=>({...Y,memory:!1})),u.systemSettings={...ce,memory:!1}),A(Y=>(O(Y.length+1),[...Y,{id:Date.now(),role:"system",text:`\u2726 ${h} API Key saved successfully! ${H?`
308
308
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${H}`:""}${h==="Ollama"&&a==="LOCAL"?`
309
309
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Ollama Endpoint automatically switched to Local`:""}${h==="Ollama"||h==="CrofAI"||h==="InferX"||h==="SenseNova"||h==="AIHubMix"||h==="Poolside"||h==="9router"||h==="ExpLabs"||h==="TokenHarbor"||h==="Infron"||h==="APInex"?`
310
310
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with ${h}`:""}${h==="NVIDIA"&&process.env.NVIDIA_BASE_URL?`
311
311
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available`:""}${C}
312
- \u2800\u2800`,isMeta:!0}]))}if(m){let a=m(o==="quotas"||o==="providerBudgets"?v:n);St(a)}else x?(Xt({...u,apiTier:gt,quotas:v,imageSettings:u.imageSettings||Fo}),St(null),x(v)):(Xt({...u,apiTier:gt,quotas:v,imageSettings:u.imageSettings||Fo}),St(null),J(Pt?.returnView||"settings"))}})),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},"(Press Enter to confirm selection)")));case"stats":{let n=Pn==="modelBreakdown"||Pn==="dailyModelBreakdown",o=Pn==="daily"||Pn==="dailyModelBreakdown",c=o?Ln:Jn,m=o?"TODAY's USAGE":"LAST 30 DAYS USAGE",x=o?"TODAY'S MODEL TOKEN BREAKDOWN":"30-DAY MODEL TOKEN BREAKDOWN",v="Wall Time:",u="Tokens Used:",a="Images Made:",h="Image Credits:",C="Code Changes:",_="Tool Calls:",H=Math.max(4,(l?.rows||K?.rows||24)-15),Y=(Je,je,rt,le,xe,Ke=0,st=!1)=>{let V=l?.columns||K?.columns||80,Ce=Math.min(125,V-2),be=Math.max(20,Ce-6),Ae=Math.max(5,be-Ke-rt.length-5),at=je;at.length>Ae&&(at=at.substring(0,Ae-1)+"\u2026");let ke=Math.max(2,be-Ke-at.length-rt.length-2),Re=" "+".".repeat(ke)+" ",bt=" ".repeat(Ke);return e.createElement(d,{key:Je,width:be},e.createElement(s,{wrap:"truncate"},e.createElement(s,null,bt),e.createElement(s,{color:le,bold:st},at),e.createElement(s,{color:r.textMuted,dimColor:!0},Re),e.createElement(s,{color:xe,bold:st},rt)))},q=Je=>{let je=Number(Je)||0;return je<=0?"":je<.001?" [<$0.001]":` [$${je.toFixed(je<.01?4:3)}]`},j=Je=>{let je=Number(Je)||0;return je<=0?"":je<.001?"<$0.001":`$${je.toFixed(je<.01?4:3)}`},Z=[],te=c?.models;if(!te||Object.keys(te).length===0)Z.push(e.createElement(d,{key:"empty",marginTop:1},e.createElement(s,{color:r.textMuted,italic:!0},"No model token usage recorded for ",o?"today":"the last 30 days",".")));else{let Je=(Rn||"").trim(),je="",rt="";if(Je.includes(":")){let xe=Je.indexOf(":");je=Je.substring(0,xe).trim().toLowerCase(),rt=Je.substring(xe+1).trim().toLowerCase()}else je=Je.toLowerCase();let le=Object.entries(te).sort(([xe],[Ke])=>xe.localeCompare(Ke,void 0,{sensitivity:"base"})).filter(([xe,Ke])=>je&&!xe.toLowerCase().includes(je)?!1:rt?Object.keys(Ke).some(st=>st.toLowerCase().includes(rt)):!0);le.length===0?Z.push(e.createElement(d,{key:"no-matches",marginTop:1},e.createElement(s,{color:r.textMuted,italic:!0},'No results found matching "',Rn,'".'))):le.forEach(([xe,Ke],st)=>{let V=Object.entries(Ke).sort(([ke],[Re])=>ke.localeCompare(Re,void 0,{sensitivity:"base"})).filter(([ke])=>!rt||ke.toLowerCase().includes(rt));if(V.length===0)return;let Ce=V.reduce((ke,[,Re])=>ke+(Re.tokens||0),0),be=V.reduce((ke,[Re,bt])=>{if((bt.cost||0)>0)return ke+bt.cost;let R=ar(xe,Re);if(!R)return ke;let fe=(bt.tokens||0)-(bt.candidateTokens||0),De=bt.cachedTokens||0,tt=Math.max(0,fe-De),Ne=bt.candidateTokens||0,Lt=tt/1e6*R.IN+De/1e6*R.CR+Ne/1e6*R.OUT;return ke+Lt},0),Ae=c?.providerRequests&&c.providerRequests[xe]||0;st>0&&Z.length>0&&Z.push(e.createElement(d,{key:`space-prov-${xe}`},e.createElement(s,null," ")));let at=q(be);Z.push(Y(`prov-${xe}`,`${xe}:`,`${Dt(Ce)} (${Ae})${at}`,r.primary,r.text,0,!0)),V.forEach(([ke,Re],bt)=>{bt>0&&Z.push(e.createElement(d,{key:`space-mod-${xe}-${ke}`},e.createElement(s,null," ")));let R=ar(xe,ke),fe=(Re.tokens||0)-(Re.candidateTokens||0),De=Re.cachedTokens||0,tt=Math.max(0,fe-De),Ne=Re.candidateTokens||0,Lt=0,bo=0,Vt=0;R&&(Lt=tt/1e6*R.IN,bo=De/1e6*R.CR,Vt=Ne/1e6*R.OUT);let To=(Re.cost||0)>0?Re.cost:Lt+bo+Vt,ir=q(To);Z.push(Y(`mod-${xe}-${ke}`,`\xBB ${ke}:`,`${Dt(Re.tokens||0)}${ir}`,r.secondary,r.text,2,!0));let _s=q(Lt),Xr=q(bo),hn=q(Vt);Z.push(Y(`in-${xe}-${ke}`,"\xBB Input Tokens:",`${Dt(fe)}${_s}`,r.textMuted,r.text,5,!1)),De>0&&Z.push(Y(`cache-${xe}-${ke}`,"\xBB Cached:",`${Dt(De)}${Xr}`,r.textMuted,r.text,7,!1)),Z.push(Y(`out-${xe}-${ke}`,"\xBB Output Tokens:",`${Dt(Ne)}${hn}`,r.textMuted,r.text,5,!1))})})}let X=Z.length,Ze=Math.max(0,X-H);_e.current=Ze;let Ue=Math.min(Fa,Ze),We=Z.slice(Ue,Ue+H);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:3,paddingY:1,paddingBottom:0,width:Math.min(125,(l?.columns||100)-2)},n?e.createElement(d,{flexDirection:"column"},e.createElement(d,{justifyContent:"space-between"},e.createElement(s,{color:r.text,bold:!0,underline:!0},x),X>H&&e.createElement(s,{color:r.textMuted,dimColor:!0},"[",Ue+1,"-",Math.min(X,Ue+H)," of ",X,"] \u25B2\u25BC")),e.createElement(d,{marginTop:1},e.createElement(s,{color:r.secondary,bold:!0},"Filter (provider:model): "),e.createElement(s,{color:r.text},Rn),e.createElement(s,{color:r.primary,bold:!0},"\u258A"),Rn.length>0&&e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0}," (Type to search, Esc/Backspace to clear)")),e.createElement(d,{flexDirection:"column",height:H,marginTop:1},We)):e.createElement(e.Fragment,null,e.createElement(d,{marginBottom:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"SESSION TELEMETRY")),e.createElement(d,{flexDirection:"column"},e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Session Duration:")),e.createElement(s,{color:r.text},xn(Date.now()-di))),pi>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},pi)),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},xn(Ar))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},xn(kr)))),Ti>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},Ti)),to>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Dt(to))),(vt?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},j(vt.cost))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt(to-kn))),go>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(go))),kn>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(kn)))),Eo?.tokens>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Active Context:")),e.createElement(s,{color:r.text},Dt(Eo.tokens)," ",(()=>{let je={"16k":16e3,"32k":32e3,"64k":64e3,"128k":128e3,"256k":256e3,"512k":512e3,"1M":1e6}[ce?.contextLength]||256e3,rt=process.env.HIGH_CONTEXT,le=process.env.GOOGLE_GEMMA_NONSENSE==="true"||process.env.GOOGLE_GEMMA_NONSENSE===!0||!1;if(rt&&rt!=="false"){let st=parseInt(rt,10);!isNaN(st)&&st>=0&&st<=1e6&&(je=st)}(P==="NVIDIA"&&(nt?.includes("gpt")||nt?.includes("qwen")||nt?.includes("medium")||nt.includes("muse"))||P==="Mistral")&&(je=126e3),P==="Google"&&nt?.includes("gemma")&&le&&(je=16e3);let xe=Eo.tokens/je*100,Ke=xe<60?r.text:xe<80?r.warning:r.danger;return e.createElement(s,{color:Ke,dimColor:!0},"(",xe.toFixed(0),"%)")})())),Lr>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Lr)),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((Si||0)*1e3).toFixed(0))," credits"))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Code Changes (Sess):")),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",vt.linesAdded)," ",e.createElement(s,{color:r.danger||"red"},"-",vt.linesRemoved))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Tool Calls (Sess):")),e.createElement(s,{color:r.text},vt.toolSuccess+vt.toolFailure+vt.toolDenied," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",vt.toolSuccess),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",vt.toolDenied),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",vt.toolFailure),e.createElement(s,{color:r.text}," )"))),e.createElement(d,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},m),e.createElement(d,{marginTop:1},e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},v)),e.createElement(s,{color:r.text},ki(c?.duration||0))),(c?.agent||0)>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},c?.agent||0)),(c?.background||0)>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},c?.background||0)),(c?.tokens||0)>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},u)),e.createElement(s,{color:r.text},Dt(c?.tokens||0))),(c?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},j(c.cost))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt((c?.tokens||0)-(c?.candidateTokens||0)))),(c?.cachedTokens||0)>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(c.cachedTokens))),(c?.candidateTokens||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(c.candidateTokens)))),(c?.imageCalls?.length||0)>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},a)),e.createElement(s,{color:r.text},c.imageCalls.length)),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},h)),e.createElement(s,{color:r.text},Number(((c.imageCalls.reduce((Je,je)=>Je+je.cost,0)||0)*1e3).toFixed(0))," credits"))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},C)),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",c?.linesAdded||0)," ",e.createElement(s,{color:r.danger||"red"},"-",c?.linesRemoved||0))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},_)),e.createElement(s,{color:r.text},(c?.toolSuccess||0)+(c?.toolFailure||0)+(c?.toolDenied||0)," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",c?.toolSuccess||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",c?.toolDenied||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",c?.toolFailure||0),e.createElement(s,{color:r.text}," )")))),e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},`
312
+ \u2800\u2800`,isMeta:!0}]))}if(m){let a=m(o==="quotas"||o==="providerBudgets"?v:n);St(a)}else f?(Xt({...u,apiTier:gt,quotas:v,imageSettings:u.imageSettings||Fo}),St(null),f(v)):(Xt({...u,apiTier:gt,quotas:v,imageSettings:u.imageSettings||Fo}),St(null),J(Pt?.returnView||"settings"))}})),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},"(Press Enter to confirm selection)")));case"stats":{let n=Pn==="modelBreakdown"||Pn==="dailyModelBreakdown",o=Pn==="daily"||Pn==="dailyModelBreakdown",c=o?Ln:Jn,m=o?"TODAY's USAGE":"LAST 30 DAYS USAGE",f=o?"TODAY'S MODEL TOKEN BREAKDOWN":"30-DAY MODEL TOKEN BREAKDOWN",v="Wall Time:",u="Tokens Used:",a="Images Made:",h="Image Credits:",C="Code Changes:",_="Tool Calls:",H=Math.max(4,(l?.rows||K?.rows||24)-15),Y=(Je,je,rt,le,xe,Ke=0,st=!1)=>{let V=l?.columns||K?.columns||80,Ce=Math.min(125,V-2),be=Math.max(20,Ce-6),Ae=Math.max(5,be-Ke-rt.length-5),at=je;at.length>Ae&&(at=at.substring(0,Ae-1)+"\u2026");let ke=Math.max(2,be-Ke-at.length-rt.length-2),Re=" "+".".repeat(ke)+" ",bt=" ".repeat(Ke);return e.createElement(d,{key:Je,width:be},e.createElement(s,{wrap:"truncate"},e.createElement(s,null,bt),e.createElement(s,{color:le,bold:st},at),e.createElement(s,{color:r.textMuted,dimColor:!0},Re),e.createElement(s,{color:xe,bold:st},rt)))},q=Je=>{let je=Number(Je)||0;return je<=0?"":je<.001?" [<$0.001]":` [$${je.toFixed(je<.01?4:3)}]`},j=Je=>{let je=Number(Je)||0;return je<=0?"":je<.001?"<$0.001":`$${je.toFixed(je<.01?4:3)}`},Z=[],te=c?.models;if(!te||Object.keys(te).length===0)Z.push(e.createElement(d,{key:"empty",marginTop:1},e.createElement(s,{color:r.textMuted,italic:!0},"No model token usage recorded for ",o?"today":"the last 30 days",".")));else{let Je=(Rn||"").trim(),je="",rt="";if(Je.includes(":")){let xe=Je.indexOf(":");je=Je.substring(0,xe).trim().toLowerCase(),rt=Je.substring(xe+1).trim().toLowerCase()}else je=Je.toLowerCase();let le=Object.entries(te).sort(([xe],[Ke])=>xe.localeCompare(Ke,void 0,{sensitivity:"base"})).filter(([xe,Ke])=>je&&!xe.toLowerCase().includes(je)?!1:rt?Object.keys(Ke).some(st=>st.toLowerCase().includes(rt)):!0);le.length===0?Z.push(e.createElement(d,{key:"no-matches",marginTop:1},e.createElement(s,{color:r.textMuted,italic:!0},'No results found matching "',Rn,'".'))):le.forEach(([xe,Ke],st)=>{let V=Object.entries(Ke).sort(([ke],[Re])=>ke.localeCompare(Re,void 0,{sensitivity:"base"})).filter(([ke])=>!rt||ke.toLowerCase().includes(rt));if(V.length===0)return;let Ce=V.reduce((ke,[,Re])=>ke+(Re.tokens||0),0),be=V.reduce((ke,[Re,bt])=>{if((bt.cost||0)>0)return ke+bt.cost;let R=ar(xe,Re);if(!R)return ke;let fe=(bt.tokens||0)-(bt.candidateTokens||0),De=bt.cachedTokens||0,tt=Math.max(0,fe-De),Ne=bt.candidateTokens||0,Lt=tt/1e6*R.IN+De/1e6*R.CR+Ne/1e6*R.OUT;return ke+Lt},0),Ae=c?.providerRequests&&c.providerRequests[xe]||0;st>0&&Z.length>0&&Z.push(e.createElement(d,{key:`space-prov-${xe}`},e.createElement(s,null," ")));let at=q(be);Z.push(Y(`prov-${xe}`,`${xe}:`,`${Dt(Ce)} (${Ae})${at}`,r.primary,r.text,0,!0)),V.forEach(([ke,Re],bt)=>{bt>0&&Z.push(e.createElement(d,{key:`space-mod-${xe}-${ke}`},e.createElement(s,null," ")));let R=ar(xe,ke),fe=(Re.tokens||0)-(Re.candidateTokens||0),De=Re.cachedTokens||0,tt=Math.max(0,fe-De),Ne=Re.candidateTokens||0,Lt=0,bo=0,Vt=0;R&&(Lt=tt/1e6*R.IN,bo=De/1e6*R.CR,Vt=Ne/1e6*R.OUT);let wo=(Re.cost||0)>0?Re.cost:Lt+bo+Vt,ir=q(wo);Z.push(Y(`mod-${xe}-${ke}`,`\xBB ${ke}:`,`${Dt(Re.tokens||0)}${ir}`,r.secondary,r.text,2,!0));let Xs=q(Lt),Wr=q(bo),hn=q(Vt);Z.push(Y(`in-${xe}-${ke}`,"\xBB Input Tokens:",`${Dt(fe)}${Xs}`,r.textMuted,r.text,5,!1)),De>0&&Z.push(Y(`cache-${xe}-${ke}`,"\xBB Cached:",`${Dt(De)}${Wr}`,r.textMuted,r.text,7,!1)),Z.push(Y(`out-${xe}-${ke}`,"\xBB Output Tokens:",`${Dt(Ne)}${hn}`,r.textMuted,r.text,5,!1))})})}let X=Z.length,Ze=Math.max(0,X-H);_e.current=Ze;let Ue=Math.min(Ua,Ze),We=Z.slice(Ue,Ue+H);return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:3,paddingY:1,paddingBottom:0,width:Math.min(125,(l?.columns||100)-2)},n?e.createElement(d,{flexDirection:"column"},e.createElement(d,{justifyContent:"space-between"},e.createElement(s,{color:r.text,bold:!0,underline:!0},f),X>H&&e.createElement(s,{color:r.textMuted,dimColor:!0},"[",Ue+1,"-",Math.min(X,Ue+H)," of ",X,"] \u25B2\u25BC")),e.createElement(d,{marginTop:1},e.createElement(s,{color:r.secondary,bold:!0},"Filter (provider:model): "),e.createElement(s,{color:r.text},Rn),e.createElement(s,{color:r.primary,bold:!0},"\u258A"),Rn.length>0&&e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0}," (Type to search, Esc/Backspace to clear)")),e.createElement(d,{flexDirection:"column",height:H,marginTop:1},We)):e.createElement(e.Fragment,null,e.createElement(d,{marginBottom:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"SESSION TELEMETRY")),e.createElement(d,{flexDirection:"column"},e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Session Duration:")),e.createElement(s,{color:r.text},xn(Date.now()-fi))),yi>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},yi)),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},xn(kr))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},xn(Lr)))),Mi>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},Mi)),to>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Dt(to))),(vt?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},j(vt.cost))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt(to-kn))),go>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(go))),kn>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(kn)))),Eo?.tokens>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Active Context:")),e.createElement(s,{color:r.text},Dt(Eo.tokens)," ",(()=>{let je={"16k":16e3,"32k":32e3,"64k":64e3,"128k":128e3,"256k":256e3,"512k":512e3,"1M":1e6}[ce?.contextLength]||256e3,rt=process.env.HIGH_CONTEXT,le=process.env.GOOGLE_GEMMA_NONSENSE==="true"||process.env.GOOGLE_GEMMA_NONSENSE===!0||!1;if(rt&&rt!=="false"){let st=parseInt(rt,10);!isNaN(st)&&st>=0&&st<=1e6&&(je=st)}(P==="NVIDIA"&&(nt?.includes("gpt")||nt?.includes("qwen")||nt?.includes("medium")||nt.includes("muse"))||P==="Mistral")&&(je=126e3),P==="Google"&&nt?.includes("gemma")&&le&&(je=16e3);let xe=Eo.tokens/je*100,Ke=xe<60?r.text:xe<80?r.warning:r.danger;return e.createElement(s,{color:Ke,dimColor:!0},"(",xe.toFixed(0),"%)")})())),Pr>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Pr)),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((Di||0)*1e3).toFixed(0))," credits"))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Code Changes (Sess):")),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",vt.linesAdded)," ",e.createElement(s,{color:r.danger||"red"},"-",vt.linesRemoved))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Tool Calls (Sess):")),e.createElement(s,{color:r.text},vt.toolSuccess+vt.toolFailure+vt.toolDenied," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",vt.toolSuccess),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",vt.toolDenied),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",vt.toolFailure),e.createElement(s,{color:r.text}," )"))),e.createElement(d,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},m),e.createElement(d,{marginTop:1},e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},v)),e.createElement(s,{color:r.text},Ni(c?.duration||0))),(c?.agent||0)>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},c?.agent||0)),(c?.background||0)>0&&e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},c?.background||0)),(c?.tokens||0)>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},u)),e.createElement(s,{color:r.text},Dt(c?.tokens||0))),(c?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},j(c.cost))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt((c?.tokens||0)-(c?.candidateTokens||0)))),(c?.cachedTokens||0)>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(c.cachedTokens))),(c?.candidateTokens||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(c.candidateTokens)))),(c?.imageCalls?.length||0)>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},a)),e.createElement(s,{color:r.text},c.imageCalls.length)),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},h)),e.createElement(s,{color:r.text},Number(((c.imageCalls.reduce((Je,je)=>Je+je.cost,0)||0)*1e3).toFixed(0))," credits"))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},C)),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",c?.linesAdded||0)," ",e.createElement(s,{color:r.danger||"red"},"-",c?.linesRemoved||0))),e.createElement(d,null,e.createElement(d,{width:25},e.createElement(s,{color:r.secondary},_)),e.createElement(s,{color:r.text},(c?.toolSuccess||0)+(c?.toolFailure||0)+(c?.toolDenied||0)," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",c?.toolSuccess||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",c?.toolDenied||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",c?.toolFailure||0),e.createElement(s,{color:r.text}," )")))),e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},`
313
313
  `,"(Press TAB to toggle Today/30-Day views, SPACE to toggle Model Breakdown, ESC to return)"))}case"dynamicDirDanger":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:r.warning||"yellow",bold:!0,underline:!0},"DYNAMIC DIRECTORY AWARENESS"),e.createElement(s,{marginTop:1,color:r.text},"Enabling this keeps the agent aware of filesystem state in real time, but may reduce prompt cache efficiency."),e.createElement(s,{color:r.text},`
314
314
  `,"RECOMMENDED SCENARIOS TO TURN ON:"),e.createElement(s,{color:r.textMuted},"\u2022 Repo is small."),e.createElement(s,{color:r.textMuted},"\u2022 The task benefits from real-time filesystem awareness."),e.createElement(s,{color:r.textMuted},"\u2022 Files are often created, renamed, or deleted."),e.createElement(s,{color:r.textMuted},"\u2022 You know exactly what you're signing up for."),e.createElement(s,{color:r.textMuted},"\u2022 You don't have conflicting decisions regarding token bills."),e.createElement(s,{color:r.textMuted},"\u2022 You want to see your wallet crying at 3am."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Confirm Intent",theme:ce.theme,items:[{label:"Turn On Dynamic Directory Awareness",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&Ot(o=>{let c={...o,dynamicDirAwareness:!0};return Xt({systemSettings:c,apiTier:gt,quotas:$e}),c}),J("settings")}})));case"dynamicDirHelp":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"DYNAMIC DIRECTORY AWARENESS \u2014 HELP & EXPLANATION"),e.createElement(s,{color:r.text,bold:!0},`
315
315
  `,"OFF (Default):"),e.createElement(s,{color:r.textMuted},"\u2022 Takes a static directory snapshot at conversation/session start and places it in System Context."),e.createElement(s,{color:r.textMuted},"\u2022 Prompt cache remains stable across user turns, saving tokens and money."),e.createElement(s,{color:r.text,bold:!0},`
316
316
  `,"ON:"),e.createElement(s,{color:r.textMuted},"\u2022 Rescans and updates the directory's state dynamically on every single user turn."),e.createElement(s,{color:r.textMuted},"\u2022 Provides real-time filesystem awareness if files are continuously created, renamed, or removed."),e.createElement(s,{color:r.textMuted},"\u2022 Changes Prompt Context on each turn, invalidating part of prompt caches and increasing token usage."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Actions",theme:ce.theme,items:[{label:"Back to Settings",value:"back"}],onSelect:()=>J("settings")})));case"autoExecDanger":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:r.warning||"yellow",bold:!0,underline:!0},"SECURITY WARNING: YOLO MODE"),e.createElement(s,{marginTop:1,color:r.text},"Turning this ON allows the agent to execute terminal commands automatically without requiring your approval for each step."),e.createElement(s,{marginTop:1,color:r.text,bold:!0},"RISKS INVOLVED:"),e.createElement(s,{color:r.textMuted},"\u2022 The agent may execute destructive commands (rm -rf, etc.) by mistake unless specified in sandbox rules."),e.createElement(s,{color:r.textMuted},"\u2022 Unintended system changes if the agent hallucinates a path or command."),e.createElement(s,{color:r.textMuted},"\u2022 Reduced control over the agent's step-by-step decision making."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Confirm Intent",theme:ce.theme,items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&Ot(o=>({...o,autoExec:!0})),J("settings")}})));case"advanceRollbackDanger":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,paddingTop:0,width:"100%"},e.createElement(s,{color:r.warning||"yellow",bold:!0},"\u26A0 Emergency Rollback Notice"),e.createElement(s,{marginTop:1,color:r.text},"When enabled, full repo snapshots exist only during active AI turns."),e.createElement(s,{marginTop:1,color:r.text},"If catastrophic changes occur during a turn, avoid abruptly stopping the agent unless absolutely necessary (external damages out of codebase)."),e.createElement(s,{color:r.textMuted},"The agent may be able to automatically restore the repo to a safe state."),e.createElement(s,{marginTop:1,color:r.textMuted},"Once the turn ends, emergency snapshots are deleted and standard /revert takes over which may not retain full repo content."),e.createElement(s,{marginTop:1,color:r.textMuted},"(Requires Restart to take effect)"),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Confirm",theme:ce.theme,items:[{label:"I understand and wish to enable",value:"on"},{label:"Keep Off",value:"off"}],onSelect:n=>{n.value==="on"&&Ot(o=>({...o,advanceRollback:!0})),J("settings")}})));case"externalDanger":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:r.warning||"yellow",bold:!0,underline:!0},"SECURITY WARNING: EXTERNAL WORKSPACE ACCESS"),e.createElement(s,{marginTop:1,color:r.text},"Turning this ON allows the agent to execute tools (Read/Write/Exec) outside of the current active workspace directory."),e.createElement(s,{marginTop:1,color:r.text,bold:!0},"RISKS INVOLVED:"),e.createElement(s,{color:r.textMuted},"\u2022 Access to sensitive system files (SSH keys, Browser data, etc.)"),e.createElement(s,{color:r.textMuted},"\u2022 Potential for accidental or malicious deletion of OS-critical files."),e.createElement(s,{color:r.textMuted},"\u2022 Unauthorized script execution across your entire file system."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Confirm Intent",theme:ce.theme,items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&Ot(o=>({...o,allowExternalAccess:!0})),J("settings")}})));case"doubleDanger":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:r.danger||"red",bold:!0,underline:!0},"CRITICAL SECURITY WARNING: COMBINED SYSTEM RISK"),e.createElement(s,{marginTop:1,color:r.text},"You are attempting to enable BOTH [YOLO Mode] and [External Workspace Access] simultaneously."),e.createElement(s,{marginTop:1,color:r.danger||"red",bold:!0},"THIS IS NOT RECOMMENDED."),e.createElement(s,{marginTop:1,color:r.text,bold:!0},"THE CRITICAL RISK:"),e.createElement(s,{color:r.textMuted},"The agent will have the power to execute any command across your entire system WITHOUT your approval or supervision."),e.createElement(s,{color:r.danger||"red",italic:!0,marginTop:1},"A single hallucination or error could result in full system wipe or data theft."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Final Confirmation",theme:ce.theme,items:[{label:"I agree knowing the consequences",value:"on"},{label:"Keep Off",value:"off"}],onSelect:n=>{n.value==="on"&&Ot(o=>({...o,autoExec:!0,allowExternalAccess:!0})),J("settings")}})));case"key":return e.createElement(At,{title:"API KEY MANAGEMENT",items:[{label:"Edit Current Key (Update)",value:"edit"},{label:"Remove Current Key (Delete)",value:"remove"},{label:"Cancel",value:"Cancel"}],onSelect:n=>{if(n.value==="edit"){Xe(null),J("chat");let o=pt(2);A(c=>[...c,{id:Date.now(),role:"system",text:`\u2726 Flux waiting for new API Key...
317
- \u2800`}])}else n.value==="remove"?J("deleteKey"):J("chat")}});case"deleteKey":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"grey",paddingX:2,paddingY:1},(()=>{let n=pt(2);return e.createElement(s,{color:"white",bold:!0},"DANGER: CLEAR CREDENTIALS")})(),e.createElement(s,{marginTop:1},"This will permanently delete all saved API keys in credential cache. You will need to enter it again to use Flux."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Are you sure?",items:[{label:"YES, CLEAR CREDENTIALS",value:"yes"},{label:"NO, GO BACK",value:"no"}],onSelect:async n=>{if(n.value==="yes"){await rl(),Xe(null),J("chat");let o=pt(2);A(c=>[...c,{id:Date.now(),role:"system",text:"[CREDENTIAL CLEARED] API Key removed successfully."}])}else J("key")},theme:ce.theme})));case"exit":return null;case"ask":return e.createElement(d,{width:"100%"},e.createElement(zl,{question:mn?.question,options:mn?.options,onResolve:n=>{mn?.resolve&&mn.resolve(n),ks(null),J("chat")},theme:ce.theme}));case"revert":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(li,{prompts:ja,onSelect:async n=>{l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h"));try{let o=await mr.rollbackToBefore(n);if(o.success){let{targetPrompt:c}=o;Pl(ht),Us(a=>a+1),Ho(),oo.current={completedIndex:0,columns:K.columns,historicalBlocks:[],seenSelections:new Set,chatId:ht,clearKey:gn+1};let m=kt.findLastIndex(a=>a.role==="user"&&a.text&&(a.text.startsWith(c)||a.text.includes(c))),x=[...kt];m!==-1&&(x=kt.slice(0,m)),A(x),O(x.length),T(c),B(c.split(`
318
- `).length>2);let v=x.filter(a=>!String(a.id).startsWith("welcome")&&(!a.isMeta||a.text&&a.text.includes("Request Cancelled")));await yn(ht,null,v);let u=pt(2);A(a=>{let h=[...a,{id:"revert-ok-"+Date.now(),role:"system",text:`\u2726 Rollback Successful
317
+ \u2800`}])}else n.value==="remove"?J("deleteKey"):J("chat")}});case"deleteKey":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"grey",paddingX:2,paddingY:1},(()=>{let n=pt(2);return e.createElement(s,{color:"white",bold:!0},"DANGER: CLEAR CREDENTIALS")})(),e.createElement(s,{marginTop:1},"This will permanently delete all saved API keys in credential cache. You will need to enter it again to use Flux."),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Are you sure?",items:[{label:"YES, CLEAR CREDENTIALS",value:"yes"},{label:"NO, GO BACK",value:"no"}],onSelect:async n=>{if(n.value==="yes"){await al(),Xe(null),J("chat");let o=pt(2);A(c=>[...c,{id:Date.now(),role:"system",text:"[CREDENTIAL CLEARED] API Key removed successfully."}])}else J("key")},theme:ce.theme})));case"exit":return null;case"ask":return e.createElement(d,{width:"100%"},e.createElement(ea,{question:mn?.question,options:mn?.options,onResolve:n=>{mn?.resolve&&mn.resolve(n),Ps(null),J("chat")},theme:ce.theme}));case"revert":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(ui,{prompts:qa,onSelect:async n=>{l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h"));try{let o=await mr.rollbackToBefore(n);if(o.success){let{targetPrompt:c}=o;$l(ht),Hs(a=>a+1),Ho(),oo.current={completedIndex:0,columns:K.columns,historicalBlocks:[],seenSelections:new Set,chatId:ht,clearKey:gn+1};let m=kt.findLastIndex(a=>a.role==="user"&&a.text&&(a.text.startsWith(c)||a.text.includes(c))),f=[...kt];m!==-1&&(f=kt.slice(0,m)),A(f),O(f.length),w(c),B(c.split(`
318
+ `).length>2);let v=f.filter(a=>!String(a.id).startsWith("welcome")&&(!a.isMeta||a.text&&a.text.includes("Request Cancelled")));await yn(ht,null,v);let u=pt(2);A(a=>{let h=[...a,{id:"revert-ok-"+Date.now(),role:"system",text:`\u2726 Rollback Successful
319
319
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Reverted prompt loaded to input box.
320
- \u2800`,isMeta:!0}];return O(h.length),h}),J("chat")}}catch(o){let c=pt(2);A(m=>{let x=[...m,{id:"revert-err-"+Date.now(),role:"system",text:`\u2726 ERROR
320
+ \u2800`,isMeta:!0}];return O(h.length),h}),J("chat")}}catch(o){let c=pt(2);A(m=>{let f=[...m,{id:"revert-err-"+Date.now(),role:"system",text:`\u2726 ERROR
321
321
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${o.message}
322
- \u2800`,isMeta:!0}];return O(x.length),x}),J("chat")}},onClose:()=>J("chat"),theme:ce.theme}));case"resume":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(ni,{onSelect:async n=>{let o=await Xo();if(o[n]){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let v=o[n]?.name||"",u=v&&!v.startsWith("flow-")&&!v.startsWith("Session ")?v:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${u}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${u}\x07`)}Ho(),Uo.current=!0,Or(n);let c=await fr(n);En.current=to-c.total,Dn.current=go,An.current=un,jt.current=[],vn(c.total),Bn(0),dn(0),In(0),Qo({tokens:c.context}),Uo.current=!1;let m=[...o[n].messages];m[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||m.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(m),J("chat"),A(v=>{let u=[...v,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
322
+ \u2800`,isMeta:!0}];return O(f.length),f}),J("chat")}},onClose:()=>J("chat"),theme:ce.theme}));case"resume":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(li,{onSelect:async n=>{let o=await Xo();if(o[n]){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let v=o[n]?.name||"",u=v&&!v.startsWith("flow-")&&!v.startsWith("Session ")?v:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${u}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${u}\x07`)}Ho(),Uo.current=!0,Nr(n);let c=await fr(n);En.current=to-c.total,Dn.current=go,An.current=un,jt.current=[],vn(c.total),Bn(0),dn(0),In(0),Qo({tokens:c.context}),Uo.current=!1;let m=[...o[n].messages];m[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||m.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),A(m),J("chat"),A(v=>{let u=[...v,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
323
323
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${n}
324
- \u2800`,isMeta:!0}];return O(u.length),u})}},onDelete:async n=>await zr(n),onClose:()=>J("chat"),theme:ce.theme}));case"keybindingsPrompt":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"grey",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},"CONFIGURE SHIFT+ENTER NEWLINE"),e.createElement(s,null,`
324
+ \u2800`,isMeta:!0}];return O(u.length),u})}},onDelete:async n=>await Jr(n),onClose:()=>J("chat"),theme:ce.theme}));case"keybindingsPrompt":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"grey",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},"CONFIGURE SHIFT+ENTER NEWLINE"),e.createElement(s,null,`
325
325
  `,"To support multi-line inputs with ",e.createElement(s,{bold:!0,color:"white"},"Shift + Enter")," for newline, a terminal sequence keybinding needs to be added to your IDE configuration.",`
326
326
 
327
- `,"Would you like FluxFlow to automatically add this to your ",sn()," keybindings?"),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Add Keybinding?",items:[{label:"Yes, configure automatically",value:"yes"},{label:"No, skip",value:"no"}],onSelect:async n=>{n.value==="yes"?await xo(sn()):xs="\\ + Enter",J("chat")},theme:ce.theme})));case"memory":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(si,{onClose:()=>J("chat"),theme:ce.theme}));case"parserDownload":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(ii,{onClose:()=>J("settings")}));case"resolution":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Xd,{data:Ka,theme:ce.theme,onResolve:n=>{$s(null),J("chat"),setTimeout(()=>{ji(n,!0)},500)},onEdit:n=>{$s(null),J("chat"),T(n)}}));case"approval":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"white",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},so?.tool==="view_file"?"FILE READ PERMISSION":"FILE WRITE PERMISSION"),e.createElement(s,{marginTop:1},"The agent is attempting to ",so?.tool==="view_file"?"read":"modify",": ",e.createElement(s,{color:"cyan"},ur(so?.args||"{}").path||"Unknown File")),so?.tool==="view_file"?null:wn()?e.createElement(d,{marginTop:1,paddingX:1},e.createElement(s,{color:"cyan",italic:!0},"FluxFlow Companion is active. Review the changes in your editor.")):e.createElement(d,{marginTop:1,borderStyle:"single",borderColor:"#333",paddingX:1,flexDirection:"column"},e.createElement(s,{color:"gray"},"--- PROPOSED CONTENT ---"),(()=>{let n=ur(so?.args||"{}"),o=[],c=new Set;if(Object.keys(n).forEach(v=>{let u=v.match(/^(searchContent|replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(u){let a=u[2]?parseInt(u[2]):1;c.add(a)}}),Array.from(c).sort((v,u)=>v-u).forEach(v=>{let u,a;v===1?(u=n.searchContent1??n.searchContent??n.replaceContent1??n.content_to_replace1??n.replaceContent??n.content_to_replace??n.TargetContent??null,a=n.newContent1??n.content_to_add1??n.newContent??n.content_to_add??n.ReplacementContent??n.replacementContent??null):(u=n[`searchContent${v}`]??n[`replaceContent${v}`]??n[`content_to_replace${v}`]??null,a=n[`newContent${v}`]??n[`content_to_add${v}`]??null),(u!==null||a!==null)&&o.push({replace:u,new:a})}),o.length>0)return e.createElement(d,{flexDirection:"column",marginTop:1},o.map((v,u)=>{let a=v.replace!==null,h=v.new!==null;return e.createElement(d,{key:u,flexDirection:"column",marginTop:u>0?1:0},o.length>1&&e.createElement(s,{color:"gray"},"Block ",u+1,":"),a&&e.createElement(d,null,e.createElement(s,{color:"red",wrap:"anywhere",bold:!0},"- ",v.replace)),h&&e.createElement(d,{marginTop:0},e.createElement(s,{color:"green",wrap:"anywhere",bold:!0},"+ ",v.new.replace(/\[\/n\]?/g,"\\n"))))}));let x=n.content||n.ReplacementContent||n.content_to_add||n.replacementContent||n.newContent||null;return e.createElement(s,{color:"white",wrap:"anywhere"},(x?x.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Action Required",items:[{label:"Accept this time",value:"allow"},...so?.tool==="view_file"?[]:[{label:"Accept for this session",value:"always"}],{label:"Don't accept",value:"deny"}],onSelect:n=>{n.value==="always"&&Ha(!0);let o=n.value==="deny"?"deny":"allow";so.resolve(o),$n(null),J("chat")},theme:ce.theme})));case"mode":return e.createElement(At,{title:"SELECT EXECUTION MODE",items:[{label:`Flux (Dev Toolset Mode) ${E==="Flux"?"\u25CF":""}`,value:"Flux"},{label:`Flow (Chat / Conversation Mode) ${E==="Flow"?"\u25CF":""}`,value:"Flow"},{label:`ICU (Interactive Computer Use) ${E==="ICU"?"\u25CF":""}`,value:"ICU"},{label:`FluxCU (Autonomous Flux Computer Use) ${E==="FluxCU"?"\u25CF":""}`,value:"FluxCU"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value;$(o),A(c=>(O(c.length+1),[...c,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${ci(o)}
328
- \u2800`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"display":return e.createElement(At,{title:"SELECT ACTIVE DISPLAY FOR COMPUTER USE",items:[{label:`Primary Display (Display 1) ${U===0?"\u25CF":""}`,value:0},{label:`Secondary Display (Display 2) ${U===1?"\u25CF":""}`,value:1},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=Number(n.value);N(o),Xt({display:o}).catch(()=>{});let c=o===0?"Primary (Display 1)":"Secondary (Display 2)";A(m=>(O(m.length+1),[...m,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${c}`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"updateManager":return e.createElement(At,{title:"Select Preferred Update Manager",subtitle:"NOTE: If you are unsure about these, go with NPM",items:[{label:"NPM (Standard)",value:"npm"},{label:"PNPM (Recommended)",value:"pnpm"},{label:"BUN (Ultra Fast)",value:"bun"},{label:"YARN (Classic)",value:"yarn"},{label:"Custom Command",value:"custom"},{label:"Back",value:"settings"}],onSelect:n=>{if(n.value==="settings"||n.value==="Back"){J("settings");return}n.value==="custom"?(St({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:ce.customUpdateCommand,next:o=>(Ot(c=>({...c,updateManager:"custom",customUpdateCommand:o})),null)}),J("input")):(Ot(o=>({...o,updateManager:n.value})),J("settings"))},theme:ce.theme});case"update":return e.createElement(sa,{latest:ln,current:uo,settings:ce,theme:ce.theme,onClose:()=>J("chat"),onSuccess:()=>{A(n=>(O(n.length+1),[...n,{id:"update-success-"+Date.now(),role:"system",text:`**[UPDATE COMPLETED]** Flux Flow successfully updated to v${ln}.
329
- **Restart to see changes.**`,isMeta:!0}])),J("chat")},onUpdateSettings:n=>{J("updateManager")}});case"terminalApproval":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"white",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},"TERMINAL COMMAND OVERSIGHT"),e.createElement(d,{marginTop:1},e.createElement(s,null,"Agent requested to run: ",e.createElement(s,{color:"yellow",bold:!0},ur(so?.args||"{}").command||"Unknown Command"))),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Risk Assessment Required",items:[{label:"Run",value:"allow"},{label:"Deny",value:"deny"}],onSelect:n=>{so.resolve(n.value),$n(null),J("chat")},theme:ce.theme})));default:return e.createElement(d,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},_i&&Ui&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%",marginBottom:1},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"INQUIRY RESPONSE"),e.createElement(s,{color:r.textMuted},"[ ESC to Close ]")),e.createElement(d,{marginTop:1,width:"100%"},e.createElement(es,{text:Ui,columns:K.columns-6,theme:ce.theme}))),vs.filter(n=>n.status==="running").length>0&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:1},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"ACTIVE SUBAGENTS")),e.createElement(d,{flexDirection:"column",marginTop:1,width:"100%"},vs.filter(n=>n.status==="running").map(n=>e.createElement(Vd,{key:n.id,sa:n,showTPMEstimate:ce.showTPMEstimate})))),sr&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:0},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(d,{flexDirection:"row",gap:1},e.createElement(s,{color:r.warning||"yellow",bold:!0},"\u2726 ",sr.startsWith("/btw")?"Question Queued":"Steering Hint Queued"))),e.createElement(d,{marginTop:0,paddingLeft:2},e.createElement(s,{color:r.text,bold:!0},"\u2514\u2500 ",sr.startsWith("/btw")?sr.replace(/^\/btw\s*/,""):sr))),e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(d,null,zo?e.createElement(d,{gap:1},e.createElement(Ld,null),e.createElement(Cr,{text:zo.trim().length>40&&!zo.toLowerCase().includes("trying")?`${zo.trim().slice(0,40)}...`:zo.trim(),baseColor:r.textExclusive||r.text,glintColor:r.textMutedExclusive||r.textMuted,speed:60,italic:!0,glintWidth:2,typeSpeed:10}),e.createElement(s,{color:r.textMuted},Pi>0?`(${Pi.toFixed(0)}s)`:"")):e.createElement(s,{color:r.textMuted,italic:!0},w.length>0&&Fi?"Press ESC again to clear input":Xa?"Press CTRL + O to expand":process.env.HALLOWEEN_EEGG==="true"?"Listening for shadows...":"Waiting for input...")),e.createElement(d,null,(()=>{let n=zo?.toLowerCase()??"";return Un&&Date.now()-gi>15e3&&vs.length===0&&(n.includes("connecting")||n.includes("consulting")||n.includes("working")||n.includes("haunting")||n.includes("queue"))?e.createElement(d,null,e.createElement(Cr,{text:"Waiting for API Response",baseColor:r.text,glintColor:r.textMuted,glintWidth:4,speed:100}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):Ps?e.createElement(d,null,e.createElement(Cr,{text:Ps,baseColor:r.text,glintColor:r.textMuted,italic:!0,speed:85,typeSpeed:15}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):null})(),e.createElement(Cr,{text:Ut.basename(nt)||(nt.length>1?nt:"Use '/model model-id' to select model"),baseColor:r.text,glintColor:r.textMuted,glintWidth:3,speed:80}),e.createElement(s,{color:r.textMuted},nt.length>0?Qe.toLocaleLowerCase().includes("xhigh")?"":` (${Qe})`:""),Qr>0&&e.createElement(s,{color:r.textMuted}," [",Qr," ",Qr===1?"file":"files","]"))),e.createElement(d,{flexDirection:"column",width:"100%"},e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,K.columns)))),e.createElement(d,{paddingX:1,paddingY:0,width:"100%",flexDirection:"column"},e.createElement(d,{flexDirection:"column",width:"100%"},e.createElement(d,{flexDirection:"row",width:"100%",paddingY:0},e.createElement(d,{flexShrink:0,width:4},e.createElement(s,{color:r.inputPrompt,bold:!0},Un||Fr?"\u2726 ":" \u276F ")),e.createElement(d,{flexGrow:1},e.createElement(d,{flexGrow:1,position:"relative"},w===""&&e.createElement(d,{position:"absolute",paddingLeft:0},po&&!tr?e.createElement(s,{color:"yellow"},Ja?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):po&&tr?e.createElement(s,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):Fi===1?e.createElement(s,{color:r.inputPrompt,bold:!0}," Press ESC again to ",w.length>0?"clear input":"revert codebase to checkpoint","..."):e.createElement(s,{color:r.inputPlaceholder},Va?" Press ESC again to cancel the request.":Fr?" Compacting session history, please wait...":Un?" Enter a prompt to steer the agent.":kt.filter(n=>n.role==="user").length===0?` Send message, @file or /cmd (${Ua.shortcut} for newline)`:" Ask Follow-ups")),e.createElement(Fl,{key:`input-${S}`,onPasteStateChange:Wa,focus:!tr&&!Fr,showCursor:ve&&!Fr,cursorColor:r.inputText,lastFocusEventTime:ct.current,value:w,textStyle:{bold:!0,color:r.inputText},columns:K.columns,onChange:n=>{let o=n.replace(/\r\n/g,`
327
+ `,"Would you like FluxFlow to automatically add this to your ",sn()," keybindings?"),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Add Keybinding?",items:[{label:"Yes, configure automatically",value:"yes"},{label:"No, skip",value:"no"}],onSelect:async n=>{n.value==="yes"?await xo(sn()):gs="\\ + Enter",J("chat")},theme:ce.theme})));case"memory":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(ci,{onClose:()=>J("chat"),theme:ce.theme}));case"parserDownload":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(di,{onClose:()=>J("settings")}));case"resolution":return e.createElement(d,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Wd,{data:Qa,theme:ce.theme,onResolve:n=>{_s(null),J("chat"),setTimeout(()=>{zi(n,!0)},500)},onEdit:n=>{_s(null),J("chat"),w(n)}}));case"approval":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"white",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},so?.tool==="view_file"?"FILE READ PERMISSION":"FILE WRITE PERMISSION"),e.createElement(s,{marginTop:1},"The agent is attempting to ",so?.tool==="view_file"?"read":"modify",": ",e.createElement(s,{color:"cyan"},ur(so?.args||"{}").path||"Unknown File")),so?.tool==="view_file"?null:Tn()?e.createElement(d,{marginTop:1,paddingX:1},e.createElement(s,{color:"cyan",italic:!0},"FluxFlow Companion is active. Review the changes in your editor.")):e.createElement(d,{marginTop:1,borderStyle:"single",borderColor:"#333",paddingX:1,flexDirection:"column"},e.createElement(s,{color:"gray"},"--- PROPOSED CONTENT ---"),(()=>{let n=ur(so?.args||"{}"),o=[],c=new Set;if(Object.keys(n).forEach(v=>{let u=v.match(/^(searchContent|replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(u){let a=u[2]?parseInt(u[2]):1;c.add(a)}}),Array.from(c).sort((v,u)=>v-u).forEach(v=>{let u,a;v===1?(u=n.searchContent1??n.searchContent??n.replaceContent1??n.content_to_replace1??n.replaceContent??n.content_to_replace??n.TargetContent??null,a=n.newContent1??n.content_to_add1??n.newContent??n.content_to_add??n.ReplacementContent??n.replacementContent??null):(u=n[`searchContent${v}`]??n[`replaceContent${v}`]??n[`content_to_replace${v}`]??null,a=n[`newContent${v}`]??n[`content_to_add${v}`]??null),(u!==null||a!==null)&&o.push({replace:u,new:a})}),o.length>0)return e.createElement(d,{flexDirection:"column",marginTop:1},o.map((v,u)=>{let a=v.replace!==null,h=v.new!==null;return e.createElement(d,{key:u,flexDirection:"column",marginTop:u>0?1:0},o.length>1&&e.createElement(s,{color:"gray"},"Block ",u+1,":"),a&&e.createElement(d,null,e.createElement(s,{color:"red",wrap:"anywhere",bold:!0},"- ",v.replace)),h&&e.createElement(d,{marginTop:0},e.createElement(s,{color:"green",wrap:"anywhere",bold:!0},"+ ",v.new.replace(/\[\/n\]?/g,"\\n"))))}));let f=n.content||n.ReplacementContent||n.content_to_add||n.replacementContent||n.newContent||null;return e.createElement(s,{color:"white",wrap:"anywhere"},(f?f.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Action Required",items:[{label:"Accept this time",value:"allow"},...so?.tool==="view_file"?[]:[{label:"Accept for this session",value:"always"}],{label:"Don't accept",value:"deny"}],onSelect:n=>{n.value==="always"&&Wa(!0);let o=n.value==="deny"?"deny":"allow";so.resolve(o),$n(null),J("chat")},theme:ce.theme})));case"mode":return e.createElement(At,{title:"SELECT EXECUTION MODE",items:[{label:`Flux (Dev Toolset Mode) ${E==="Flux"?"\u25CF":""}`,value:"Flux"},{label:`Flow (Chat / Conversation Mode) ${E==="Flow"?"\u25CF":""}`,value:"Flow"},{label:`ICU (Interactive Computer Use) ${E==="ICU"?"\u25CF":""}`,value:"ICU"},{label:`FluxCU (Autonomous Flux Computer Use) ${E==="FluxCU"?"\u25CF":""}`,value:"FluxCU"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value;$(o),A(c=>(O(c.length+1),[...c,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${xi(o)}
328
+ \u2800`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"display":return e.createElement(At,{title:"SELECT ACTIVE DISPLAY FOR COMPUTER USE",items:[{label:`Primary Display (Display 1) ${U===0?"\u25CF":""}`,value:0},{label:`Secondary Display (Display 2) ${U===1?"\u25CF":""}`,value:1},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=Number(n.value);N(o),Xt({display:o}).catch(()=>{});let c=o===0?"Primary (Display 1)":"Secondary (Display 2)";A(m=>(O(m.length+1),[...m,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${c}`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"updateManager":return e.createElement(At,{title:"Select Preferred Update Manager",subtitle:"NOTE: If you are unsure about these, go with NPM",items:[{label:"NPM (Standard)",value:"npm"},{label:"PNPM (Recommended)",value:"pnpm"},{label:"BUN (Ultra Fast)",value:"bun"},{label:"YARN (Classic)",value:"yarn"},{label:"Custom Command",value:"custom"},{label:"Back",value:"settings"}],onSelect:n=>{if(n.value==="settings"||n.value==="Back"){J("settings");return}n.value==="custom"?(St({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:ce.customUpdateCommand,next:o=>(Ot(c=>({...c,updateManager:"custom",customUpdateCommand:o})),null)}),J("input")):(Ot(o=>({...o,updateManager:n.value})),J("settings"))},theme:ce.theme});case"update":return e.createElement(la,{latest:ln,current:uo,settings:ce,theme:ce.theme,onClose:()=>J("chat"),onSuccess:()=>{A(n=>(O(n.length+1),[...n,{id:"update-success-"+Date.now(),role:"system",text:`**[UPDATE COMPLETED]** Flux Flow successfully updated to v${ln}.
329
+ **Restart to see changes.**`,isMeta:!0}])),J("chat")},onUpdateSettings:n=>{J("updateManager")}});case"terminalApproval":return e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:"white",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},"TERMINAL COMMAND OVERSIGHT"),e.createElement(d,{marginTop:1},e.createElement(s,null,"Agent requested to run: ",e.createElement(s,{color:"yellow",bold:!0},ur(so?.args||"{}").command||"Unknown Command"))),e.createElement(d,{marginTop:1},e.createElement(At,{title:"Risk Assessment Required",items:[{label:"Run",value:"allow"},{label:"Deny",value:"deny"}],onSelect:n=>{so.resolve(n.value),$n(null),J("chat")},theme:ce.theme})));default:return e.createElement(d,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},Gi&&Wi&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%",marginBottom:1},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"INQUIRY RESPONSE"),e.createElement(s,{color:r.textMuted},"[ ESC to Close ]")),e.createElement(d,{marginTop:1,width:"100%"},e.createElement(ts,{text:Wi,columns:K.columns-6,theme:ce.theme}))),Bs.filter(n=>n.status==="running").length>0&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:1},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"ACTIVE SUBAGENTS")),e.createElement(d,{flexDirection:"column",marginTop:1,width:"100%"},Bs.filter(n=>n.status==="running").map(n=>e.createElement(Yd,{key:n.id,sa:n,showTPMEstimate:ce.showTPMEstimate})))),sr&&e.createElement(d,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:0},e.createElement(d,{justifyContent:"space-between",width:"100%"},e.createElement(d,{flexDirection:"row",gap:1},e.createElement(s,{color:r.warning||"yellow",bold:!0},"\u2726 ",sr.startsWith("/btw")?"Question Queued":"Steering Hint Queued"))),e.createElement(d,{marginTop:0,paddingLeft:2},e.createElement(s,{color:r.text,bold:!0},"\u2514\u2500 ",sr.startsWith("/btw")?sr.replace(/^\/btw\s*/,""):sr))),e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(d,null,zo?e.createElement(d,{gap:1},e.createElement(Pd,null),e.createElement(Mr,{text:zo.trim().length>40&&!zo.toLowerCase().includes("trying")?`${zo.trim().slice(0,40)}...`:zo.trim(),baseColor:r.textExclusive||r.text,glintColor:r.textMutedExclusive||r.textMuted,speed:60,italic:!0,glintWidth:2,typeSpeed:10}),e.createElement(s,{color:r.textMuted},$i>0?`(${$i.toFixed(0)}s)`:"")):e.createElement(s,{color:r.textMuted,italic:!0},T.length>0&&Hi?"Press ESC again to clear input":Ga?"Press CTRL + O to expand":process.env.HALLOWEEN_EEGG==="true"?"Listening for shadows...":"Waiting for input...")),e.createElement(d,null,(()=>{let n=zo?.toLowerCase()??"";return Un&&Date.now()-wi>15e3&&Bs.length===0&&(n.includes("connecting")||n.includes("consulting")||n.includes("working")||n.includes("haunting")||n.includes("queue"))?e.createElement(d,null,e.createElement(Mr,{text:"Waiting for API Response",baseColor:r.text,glintColor:r.textMuted,glintWidth:4,speed:100}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):Ns?e.createElement(d,null,e.createElement(Mr,{text:Ns,baseColor:r.text,glintColor:r.textMuted,italic:!0,speed:85,typeSpeed:15}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):null})(),e.createElement(Mr,{text:Ut.basename(nt)||(nt.length>1?nt:"Use '/model model-id' to select model"),baseColor:r.text,glintColor:r.textMuted,glintWidth:3,speed:80}),e.createElement(s,{color:r.textMuted},nt.length>0?Qe.toLocaleLowerCase().includes("xhigh")?"":` (${Qe})`:""),zr>0&&e.createElement(s,{color:r.textMuted}," [",zr," ",zr===1?"file":"files","]"))),e.createElement(d,{flexDirection:"column",width:"100%"},e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,K.columns)))),e.createElement(d,{paddingX:1,paddingY:0,width:"100%",flexDirection:"column"},e.createElement(d,{flexDirection:"column",width:"100%"},e.createElement(d,{flexDirection:"row",width:"100%",paddingY:0},e.createElement(d,{flexShrink:0,width:4},e.createElement(s,{color:r.inputPrompt,bold:!0},Un||$r?"\u2726 ":" \u276F ")),e.createElement(d,{flexGrow:1},e.createElement(d,{flexGrow:1,position:"relative"},T===""&&e.createElement(d,{position:"absolute",paddingLeft:0},po&&!tr?e.createElement(s,{color:"yellow"},Ra?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):po&&tr?e.createElement(s,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):Hi===1?e.createElement(s,{color:r.inputPrompt,bold:!0}," Press ESC again to ",T.length>0?"clear input":"revert codebase to checkpoint","..."):e.createElement(s,{color:r.inputPlaceholder},ja?" Press ESC again to cancel the request.":$r?" Compacting session history, please wait...":Un?" Enter a prompt to steer the agent.":kt.filter(n=>n.role==="user").length===0?` Send message, @file or /cmd (${Ha.shortcut} for newline)`:" Ask Follow-ups")),e.createElement(Hl,{key:`input-${S}`,onPasteStateChange:Va,focus:!tr&&!$r,showCursor:ve&&!$r,cursorColor:r.inputText,lastFocusEventTime:ct.current,value:T,textStyle:{bold:!0,color:r.inputText},columns:K.columns,onChange:n=>{let o=n.replace(/\r\n/g,`
330
330
  `).replace(/\r/g,`
331
331
  `).replace(/\\\s*\n/g,`
332
- `);T(o),oe(!1)},onSubmit:ji,rows:1,maxRows:10,keyBindings:{submit:n=>n.return&&!n.shift&&!n.ctrl,newline:n=>n.return&&n.shift||n.return&&n.ctrl}})))))),e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,K.columns))))))}};return e.createElement(d,{flexDirection:"column",width:"100%"},p?null:Ve?e.createElement(Ud,{width:l?.columns||80,height:l?.rows||24,aiProvider:P,theme:ce.theme,reason:Ve}):ue?e.createElement($d,{width:l?.columns||80,height:l?.rows||24,selectedIndex:pe,aiProvider:P,theme:ce.theme}):e.createElement(e.Fragment,null,e.createElement(d,{paddingX:1,flexDirection:"column",width:"100%"},e.createElement(kd,{key:`static-${gn}-${ht}-${K.columns}-${ce.theme}`,items:Gi.completed},n=>e.createElement(os,{key:n.key,block:n,columns:(l?.columns||80)-2,showFullThinking:an,aiProvider:P,version:uo,theme:ce.theme}))),e.createElement(d,{flexDirection:"column",paddingX:1,paddingBottom:0,width:"100%"},(Tt==="chat"||["ask","approval","terminalApproval"].includes(Tt))&&e.createElement(d,{flexDirection:"column",width:"100%"},Gi.active.map(n=>e.createElement(os,{key:n.key,block:n,columns:Math.max(20,(l?.columns||80)-2),showFullThinking:an,aiProvider:P,version:uo,theme:ce.theme})),po&&e.createElement(d,{marginTop:1},e.createElement(Rr,{command:po,output:Nn,isFocused:tr,isPty:Hn,terminalHeight:K.rows,columns:K.columns}))),p?e.createElement(d,{borderStyle:"double",borderColor:"grey",padding:1,flexShrink:0},e.createElement(s,{color:"white"},"Starting Flux Flow...")):!ot&&!(P==="c_openai"&&ce.customOpenAIBaseUrl)?e.createElement(d,{borderStyle:"round",borderColor:"white",padding:0,flexDirection:"column",flexShrink:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:"gray",bold:!0},P==="c_openai"?"CUSTOM BASE URL REQUIRED":"API KEY REQUIRED")),e.createElement(d,{paddingX:1,flexDirection:"column"},Kn===0?e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},"Select your Preferred Provider:"),e.createElement(d,{marginTop:1},e.createElement(At,{searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"}],onSelect:n=>{dt(n.value),Mr(1)}}))):e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},P==="Ollama"?"Enter Ollama API Key (or type LOCAL to use local host):":P==="c_openai"?"Enter Custom OpenAI Base URL (.../v1):":`Enter your ${P} API Key:`),e.createElement(d,{marginTop:1},e.createElement(s,{color:"gray",bold:!0}," ",">"," "),e.createElement(Yn,{value:mo,onChange:ze,onSubmit:Vi,mask:P==="c_openai"?void 0:"*"})))),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:"gray",italic:!0},Kn===0?"(Use arrows to select and Enter to confirm, ESC to go back)":"(Press Enter to confirm and initialize, ESC to go back)"))):Za(),g&&e.createElement(d,{borderStyle:"round",borderColor:r.borderMuted,paddingX:1,marginY:0,width:"100%"},e.createElement(s,null,e.createElement(s,{color:"red",bold:!0},"\u{1F534} EXIT: "),e.createElement(s,{color:r.text},"Press "),e.createElement(s,{color:r.text,bold:!0},"CTRL+C"),e.createElement(s,{color:r.text}," again to exit (",y,"s) \u2022 Press "),e.createElement(s,{color:r.textMuted,bold:!0},"ESC"),e.createElement(s,{color:r.text}," to cancel"))),lt.length>0&&(()=>{let o=et.current,c=0;for(;c<lt.length;){let H=lt[c],Y=H?.cmd||H||"";if(typeof Y=="string"&&Y.trimStart().startsWith("---"))c++;else break}de<=c?o=0:de<o?o=de:de>=o+5&&(o=de-5+1),o=Math.max(0,Math.min(o,Math.max(0,lt.length-5))),et.current=o;let m=lt.slice(o,o+5),x=lt.length-(o+m.length),v=lt[0]?.cmd?.startsWith("@")||lt[0]?.cmd?.startsWith("\\@"),u=w.startsWith("/model"),a=w.startsWith("/kill"),h=w.startsWith("/thinking"),C=lt.length,_=Math.min(C,de+1);return e.createElement(d,{flexDirection:"column",width:"100%",marginBottom:1,marginTop:0},e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||r.text,bold:!0},v?"WORKSPACE FILES":u?"SAVED MODELS":a?"ACTIVE PROCESSES":h?"THINKING LEVELS":"COMMANDS"),e.createElement(s,{color:r.textMuted}," (",C,")")),e.createElement(d,{flexDirection:"row"},v?e.createElement(s,{color:r.textMuted,italic:!0},"Use #Lstart-Lend for line range \u2022 Tab to select"):e.createElement(s,{color:r.textMuted,italic:!0},"\u2191/\u2193 navigate \u2022 Tab / Enter select \u2022 Esc dismiss"))),e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.borderDim||r.inputBorder||r.textDim},"\u2500".repeat(Math.max(1,K.columns)))),m.slice(0,_r).map((H,Y)=>{let j=o+Y===de,Z=typeof H.cmd=="string"&&H.cmd.trimStart().startsWith("---"),te=H.cmd===no("Google","Free")&&gt!=="Free",X=H.display||(H.cmd&&(H.cmd.startsWith("@[")||H.cmd.startsWith("\\@["))&&H.cmd.endsWith("]")?(()=>{let Ue=(H.cmd.startsWith("\\@[")?H.cmd.slice(3,-1):H.cmd.slice(2,-1)).split(/[\/\\]/);return Ue[Ue.length-1]})():!u&&!a&&H.cmd&&H.cmd.includes("/")?H.cmd.split("/").pop():H.cmd);if(u){let Ue=H.multimodal===!0||Yr(H.cmd||H)?"Vision":"Text Only";return e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(d,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(s,{color:Z?r.textDim:te?r.textMuted:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexShrink:0,marginLeft:2},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},Ue)))}return a&&H.rightDesc?e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(d,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(s,{color:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexShrink:0,marginLeft:2},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},H.rightDesc))):e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(d,{width:26,flexShrink:0},e.createElement(s,{color:Z?r.textDim:te?r.textMuted:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexGrow:1,overflow:"hidden"},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},H.desc)))}),lt.length>5&&e.createElement(d,{paddingX:1,height:1,justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},x>0?`... ${x} more available`:"(End of list)"),e.createElement(s,{color:r.textMuted,dimColor:!0},`${_}/${C}`)))})(),e.createElement(d,{flexShrink:0,width:"100%"},e.createElement(jl,{mode:E,thinkingLevel:Qe,tokens:Eo.tokens,tokensTotal:va,cachedTokens:Ea,promptTokens:Da,chatCacheTokenLatest:Ba,cacheCalculateMode:ce.cacheCalculateMode||"Session",chatId:ht,isMemoryEnabled:ce.memory,apiTier:gt,aiProvider:P,activeModel:nt,isProcessing:Un,lastChunkTime:gi,theme:ce.theme,wps:Cs.current.wps,showTPMEstimate:ce.showTPMEstimate})),Tt==="exit"&&(()=>{let n=Date.now()-di,o=vt.toolSuccess+vt.toolFailure,c=o>0?(vt.toolSuccess/o*100).toFixed(1):"0.0",m=Ar+kr,x=m>0?(Ar/m*100).toFixed(1):"0.0",v=m>0?(kr/m*100).toFixed(1):"0.0";return e.createElement(d,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,borderColor:r.borderMuted,width:Math.min(100,(l?.columns||100)-2),marginTop:0,marginBottom:0},e.createElement(d,{marginBottom:1},e.createElement(s,{bold:!0},Od(r.logoGradient||["blue","purple"])("Agent powering down. Goodbye!"))),e.createElement(d,{flexDirection:"column"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Interaction Summary"),e.createElement(d,{marginTop:1},e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Session ID:")),e.createElement(s,{color:r.text},ht)),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Tool Calls:")),e.createElement(s,{color:r.text},vt.toolSuccess+vt.toolFailure+vt.toolDenied," ( ",e.createElement(s,{color:"green"},"\u2714 ",vt.toolSuccess)," ",e.createElement(s,{color:"yellow"},"\u{1F6C7} ",vt.toolDenied)," ",e.createElement(s,{color:"red"},"\u2718 ",vt.toolFailure)," )")),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Success Rate:")),e.createElement(s,{color:r.text},c,"%")),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Code Changes:")),e.createElement(s,{color:r.text},e.createElement(s,{color:"green"},"+",vt.linesAdded)," ",e.createElement(s,{color:"red"},"-",vt.linesRemoved))),to>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Dt(to))),(vt?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},(()=>{let u=Number(vt.cost)||0;return u<=0?"":u<.001?"<$0.001":`$${u.toFixed(u<.01?4:3)}`})())),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt(to-kn))),go>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:16},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(go))),kn>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(kn)))),Lr>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Lr)),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((Si||0)*1e3).toFixed(0))," credits")))),e.createElement(d,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Performance"),e.createElement(d,{marginTop:1},e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Wall Time:")),e.createElement(s,{color:r.text},xn(n))),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Agent Active:")),e.createElement(s,{color:r.text},xn(m))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},xn(Ar)," (",x,"%)")),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},xn(kr)," (",v,"%)"))))})())))}export{ai as check9RouterReachable,Yd as default};
332
+ `);w(o),oe(!1)},onSubmit:zi,rows:1,maxRows:10,keyBindings:{submit:n=>n.return&&!n.shift&&!n.ctrl,newline:n=>n.return&&n.shift||n.return&&n.ctrl}})))))),e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,K.columns))))))}};return e.createElement(d,{flexDirection:"column",width:"100%"},p?null:Ve?e.createElement(_d,{width:l?.columns||80,height:l?.rows||24,aiProvider:P,theme:ce.theme,reason:Ve}):ue?e.createElement(Ud,{width:l?.columns||80,height:l?.rows||24,selectedIndex:pe,aiProvider:P,theme:ce.theme}):e.createElement(e.Fragment,null,e.createElement(d,{paddingX:1,flexDirection:"column",width:"100%"},e.createElement(Ld,{key:`static-${gn}-${ht}-${K.columns}-${ce.theme}`,items:Ki.completed},n=>e.createElement(ns,{key:n.key,block:n,columns:(l?.columns||80)-2,showFullThinking:an,aiProvider:P,version:uo,theme:ce.theme}))),e.createElement(d,{flexDirection:"column",paddingX:1,paddingBottom:0,width:"100%"},(wt==="chat"||["ask","approval","terminalApproval"].includes(wt))&&e.createElement(d,{flexDirection:"column",width:"100%"},Ki.active.map(n=>e.createElement(ns,{key:n.key,block:n,columns:Math.max(20,(l?.columns||80)-2),showFullThinking:an,aiProvider:P,version:uo,theme:ce.theme})),po&&e.createElement(d,{marginTop:1},e.createElement(es,{command:po,output:Nn,isFocused:tr,isPty:Hn,terminalHeight:K.rows,columns:K.columns}))),p?e.createElement(d,{borderStyle:"double",borderColor:"grey",padding:1,flexShrink:0},e.createElement(s,{color:"white"},"Starting Flux Flow...")):!ot&&!(P==="c_openai"&&ce.customOpenAIBaseUrl)?e.createElement(d,{borderStyle:"round",borderColor:"white",padding:0,flexDirection:"column",flexShrink:0,width:"100%"},e.createElement(d,{paddingX:1,marginBottom:1},e.createElement(s,{color:"gray",bold:!0},P==="c_openai"?"CUSTOM BASE URL REQUIRED":"API KEY REQUIRED")),e.createElement(d,{paddingX:1,flexDirection:"column"},Kn===0?e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},"Select your Preferred Provider:"),e.createElement(d,{marginTop:1},e.createElement(At,{searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"}],onSelect:n=>{dt(n.value),Sr(1)}}))):e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},P==="Ollama"?"Enter Ollama API Key (or type LOCAL to use local host):":P==="c_openai"?"Enter Custom OpenAI Base URL (.../v1):":`Enter your ${P} API Key:`),e.createElement(d,{marginTop:1},e.createElement(s,{color:"gray",bold:!0}," ",">"," "),e.createElement(Yn,{value:mo,onChange:ze,onSubmit:qi,mask:P==="c_openai"?void 0:"*"})))),e.createElement(d,{paddingX:1,marginTop:1},e.createElement(s,{color:"gray",italic:!0},Kn===0?"(Use arrows to select and Enter to confirm, ESC to go back)":"(Press Enter to confirm and initialize, ESC to go back)"))):ec(),g&&e.createElement(d,{borderStyle:"round",borderColor:r.borderMuted,paddingX:1,marginY:0,width:"100%"},e.createElement(s,null,e.createElement(s,{color:"red",bold:!0},"\u{1F534} EXIT: "),e.createElement(s,{color:r.text},"Press "),e.createElement(s,{color:r.text,bold:!0},"CTRL+C"),e.createElement(s,{color:r.text}," again to exit (",y,"s) \u2022 Press "),e.createElement(s,{color:r.textMuted,bold:!0},"ESC"),e.createElement(s,{color:r.text}," to cancel"))),lt.length>0&&(()=>{let o=et.current,c=0;for(;c<lt.length;){let H=lt[c],Y=H?.cmd||H||"";if(typeof Y=="string"&&Y.trimStart().startsWith("---"))c++;else break}de<=c?o=0:de<o?o=de:de>=o+5&&(o=de-5+1),o=Math.max(0,Math.min(o,Math.max(0,lt.length-5))),et.current=o;let m=lt.slice(o,o+5),f=lt.length-(o+m.length),v=lt[0]?.cmd?.startsWith("@")||lt[0]?.cmd?.startsWith("\\@"),u=T.startsWith("/model"),a=T.startsWith("/kill"),h=T.startsWith("/thinking"),C=lt.length,_=Math.min(C,de+1);return e.createElement(d,{flexDirection:"column",width:"100%",marginBottom:1,marginTop:0},e.createElement(d,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(d,{flexDirection:"row"},e.createElement(s,{color:r.primary||r.text,bold:!0},v?"WORKSPACE FILES":u?"SAVED MODELS":a?"ACTIVE PROCESSES":h?"THINKING LEVELS":"COMMANDS"),e.createElement(s,{color:r.textMuted}," (",C,")")),e.createElement(d,{flexDirection:"row"},v?e.createElement(s,{color:r.textMuted,italic:!0},"Use #Lstart-Lend for line range \u2022 Tab to select"):e.createElement(s,{color:r.textMuted,italic:!0},"\u2191/\u2193 navigate \u2022 Tab / Enter select \u2022 Esc dismiss"))),e.createElement(d,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.borderDim||r.inputBorder||r.textDim},"\u2500".repeat(Math.max(1,K.columns)))),m.slice(0,Hr).map((H,Y)=>{let j=o+Y===de,Z=typeof H.cmd=="string"&&H.cmd.trimStart().startsWith("---"),te=H.cmd===no("Google","Free")&&gt!=="Free",X=H.display||(H.cmd&&(H.cmd.startsWith("@[")||H.cmd.startsWith("\\@["))&&H.cmd.endsWith("]")?(()=>{let Ue=(H.cmd.startsWith("\\@[")?H.cmd.slice(3,-1):H.cmd.slice(2,-1)).split(/[\/\\]/);return Ue[Ue.length-1]})():!u&&!a&&H.cmd&&H.cmd.includes("/")?H.cmd.split("/").pop():H.cmd);if(u){let Ue=H.multimodal===!0||jr(H.cmd||H)?"Vision":"Text Only";return e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(d,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(s,{color:Z?r.textDim:te?r.textMuted:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexShrink:0,marginLeft:2},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},Ue)))}return a&&H.rightDesc?e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(d,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(s,{color:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexShrink:0,marginLeft:2},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},H.rightDesc))):e.createElement(d,{key:H.cmd||Y,flexDirection:"row",backgroundColor:j?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center"},e.createElement(d,{width:3,flexShrink:0},e.createElement(s,{color:j?r.primary||r.text:r.textMuted,bold:j},j?"\u276F ":" ")),e.createElement(d,{width:26,flexShrink:0},e.createElement(s,{color:Z?r.textDim:te?r.textMuted:j&&r.inputText||r.text,bold:j},X)),e.createElement(d,{flexGrow:1,overflow:"hidden"},e.createElement(s,{color:j?r.text:r.textMuted,italic:!j},H.desc)))}),lt.length>5&&e.createElement(d,{paddingX:1,height:1,justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},f>0?`... ${f} more available`:"(End of list)"),e.createElement(s,{color:r.textMuted,dimColor:!0},`${_}/${C}`)))})(),e.createElement(d,{flexShrink:0,width:"100%"},e.createElement(zl,{mode:E,thinkingLevel:Qe,tokens:Eo.tokens,tokensTotal:Ba,cachedTokens:Da,promptTokens:Aa,chatCacheTokenLatest:Ia,cacheCalculateMode:ce.cacheCalculateMode||"Session",chatId:ht,isMemoryEnabled:ce.memory,apiTier:gt,aiProvider:P,activeModel:nt,isProcessing:Un,lastChunkTime:wi,theme:ce.theme,wps:Ss.current.wps,showTPMEstimate:ce.showTPMEstimate})),wt==="exit"&&(()=>{let n=Date.now()-fi,o=vt.toolSuccess+vt.toolFailure,c=o>0?(vt.toolSuccess/o*100).toFixed(1):"0.0",m=kr+Lr,f=m>0?(kr/m*100).toFixed(1):"0.0",v=m>0?(Lr/m*100).toFixed(1):"0.0";return e.createElement(d,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,borderColor:r.borderMuted,width:Math.min(100,(l?.columns||100)-2),marginTop:0,marginBottom:0},e.createElement(d,{marginBottom:1},e.createElement(s,{bold:!0},Nd(r.logoGradient||["blue","purple"])("Agent powering down. Goodbye!"))),e.createElement(d,{flexDirection:"column"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Interaction Summary"),e.createElement(d,{marginTop:1},e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Session ID:")),e.createElement(s,{color:r.text},ht)),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Tool Calls:")),e.createElement(s,{color:r.text},vt.toolSuccess+vt.toolFailure+vt.toolDenied," ( ",e.createElement(s,{color:"green"},"\u2714 ",vt.toolSuccess)," ",e.createElement(s,{color:"yellow"},"\u{1F6C7} ",vt.toolDenied)," ",e.createElement(s,{color:"red"},"\u2718 ",vt.toolFailure)," )")),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Success Rate:")),e.createElement(s,{color:r.text},c,"%")),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Code Changes:")),e.createElement(s,{color:r.text},e.createElement(s,{color:"green"},"+",vt.linesAdded)," ",e.createElement(s,{color:"red"},"-",vt.linesRemoved))),to>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Dt(to))),(vt?.cost||0)>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},(()=>{let u=Number(vt.cost)||0;return u<=0?"":u<.001?"<$0.001":`$${u.toFixed(u<.01?4:3)}`})())),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Dt(to-kn))),go>0&&e.createElement(d,{marginLeft:4},e.createElement(d,{width:16},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Dt(go))),kn>0&&e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Dt(kn)))),Pr>0&&e.createElement(e.Fragment,null,e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Pr)),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((Di||0)*1e3).toFixed(0))," credits")))),e.createElement(d,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Performance"),e.createElement(d,{marginTop:1},e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Wall Time:")),e.createElement(s,{color:r.text},xn(n))),e.createElement(d,null,e.createElement(d,{width:20},e.createElement(s,{color:r.secondary},"Agent Active:")),e.createElement(s,{color:r.text},xn(m))),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},xn(kr)," (",f,"%)")),e.createElement(d,{marginLeft:2},e.createElement(d,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},xn(Lr)," (",v,"%)"))))})())))}export{mi as check9RouterReachable,jd as default};