fluxflow-cli 4.38.0 → 4.39.0

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.
Files changed (52) hide show
  1. package/README.md +1 -0
  2. package/dist/chunks/{9router-E4LQZ5XF.js → 9router-LRFKCJF4.js} +1 -1
  3. package/dist/chunks/{ai-YQJYUPXQ.js → ai-Z2RCLVQR.js} +1 -1
  4. package/dist/chunks/{aihubmix-UBV5ARET.js → aihubmix-TETL5QYQ.js} +1 -1
  5. package/dist/chunks/{apinex-L3Y6BP6J.js → apinex-FAYOPQSL.js} +1 -1
  6. package/dist/chunks/app-IKYO4AHO.js +331 -0
  7. package/dist/chunks/auto_completion-AIWB2XM2.js +3 -0
  8. package/dist/chunks/chunk-EUNKA2MP.js +1 -0
  9. package/dist/chunks/chunk-HIP66OBL.js +926 -0
  10. package/dist/chunks/{chunk-MQCO3GXM.js → chunk-IUN7DBB4.js} +15 -15
  11. package/dist/chunks/{chunk-QW6IGMYV.js → chunk-IXXTQAO2.js} +1 -1
  12. package/dist/chunks/{chunk-CZK3QF2C.js → chunk-M2LU3TCU.js} +1 -1
  13. package/dist/chunks/chunk-M46I73DX.js +42 -0
  14. package/dist/chunks/{chunk-77QN4HDY.js → chunk-MX5Q32YU.js} +1 -1
  15. package/dist/chunks/{chunk-NL4MAQSB.js → chunk-PTFCY2D5.js} +1 -1
  16. package/dist/chunks/{chunk-ODBYCQHC.js → chunk-SDPX2VPK.js} +1 -1
  17. package/dist/chunks/{click-J7DMHVDU.js → click-O33RKVOZ.js} +2 -2
  18. package/dist/chunks/{computer_action-D52LLX3E.js → computer_action-BUZAZ3LJ.js} +1 -1
  19. package/dist/chunks/{custom_openai-S6YIOHQN.js → custom_openai-XMDYE7NM.js} +1 -1
  20. package/dist/chunks/{deepseek-CQRKTOL6.js → deepseek-WNWZJTNE.js} +1 -1
  21. package/dist/chunks/{drag-CMUD2ZB5.js → drag-BZRZLDLG.js} +1 -1
  22. package/dist/chunks/{exec_command-A5JWE55Q.js → exec_command-WB2PILWK.js} +1 -1
  23. package/dist/chunks/{explabs-6TWS34VQ.js → explabs-XHHXTERB.js} +1 -1
  24. package/dist/chunks/{generate_image-5D57XGLP.js → generate_image-N2SIC5BA.js} +1 -1
  25. package/dist/chunks/{inferx-A42H43ZV.js → inferx-HP5AGET3.js} +2 -2
  26. package/dist/chunks/{infron-NZI2FQFA.js → infron-ULXG7VDA.js} +1 -1
  27. package/dist/chunks/{invoke-4P5QQPCF.js → invoke-O2YAE4FY.js} +2 -2
  28. package/dist/chunks/{invokeSync-BSFWXLD7.js → invokeSync-URGZXNDC.js} +2 -2
  29. package/dist/chunks/{key_press-LWJGR25H.js → key_press-Y7F3VAKL.js} +1 -1
  30. package/dist/chunks/{keyboard_typing-A72GI7EW.js → keyboard_typing-IEVRWQJJ.js} +1 -1
  31. package/dist/chunks/{mistral-OXTDZX3G.js → mistral-XDIMWAU3.js} +1 -1
  32. package/dist/chunks/{nvidia-5DDRU422.js → nvidia-BN4YCFGY.js} +1 -1
  33. package/dist/chunks/{openrouter-YU3RE7RH.js → openrouter-6MRG4RT6.js} +1 -1
  34. package/dist/chunks/{poolside-H2NCP5XT.js → poolside-ODFAIK4C.js} +1 -1
  35. package/dist/chunks/{screen_grid-4Z2EBIB2.js → screen_grid-7APUBF2H.js} +1 -1
  36. package/dist/chunks/{scroll-LXQJ25NK.js → scroll-FIN5Z7W4.js} +1 -1
  37. package/dist/chunks/{search_keyword-ABVAWJKX.js → search_keyword-YLKWY2XH.js} +1 -1
  38. package/dist/chunks/{sensenova-UT5CZFCW.js → sensenova-3K44URJQ.js} +1 -1
  39. package/dist/chunks/settings-IGHDSHFT.js +1 -0
  40. package/dist/chunks/{tokenharbor-S66MGK52.js → tokenharbor-YV2GV2LM.js} +1 -1
  41. package/dist/chunks/{update_file-6F64CFSU.js → update_file-CYGKZXSH.js} +1 -1
  42. package/dist/chunks/{usage-WOYKJLZL.js → usage-IR23BYQX.js} +1 -1
  43. package/dist/chunks/{usageServer-3KLDOFIX.js → usageServer-ZYJCDO27.js} +1 -1
  44. package/dist/chunks/{write_file-JDMRLJKT.js → write_file-TZ2Q6CEB.js} +1 -1
  45. package/dist/cli.js +10 -10
  46. package/dist/package.json +2 -2
  47. package/package.json +2 -2
  48. package/dist/chunks/app-SIXVPE6Z.js +0 -331
  49. package/dist/chunks/chunk-EYTM4NZD.js +0 -41
  50. package/dist/chunks/chunk-IZQAF6KJ.js +0 -1
  51. package/dist/chunks/chunk-ZCXQPXVK.js +0 -919
  52. package/dist/chunks/settings-ZBXCJL25.js +0 -1
@@ -0,0 +1,331 @@
1
+ import{a as Cl}from"./chunk-UEV335RW.js";import{b as xl,c as fl,d as gl}from"./chunk-IHDJDAG3.js";import{c as rl,e as Fn,f as to,g as sl}from"./chunk-SDPX2VPK.js";import{A as wl,B as yl,a as nl,b as ct,c as ht,d as ar,e as $s,f as al,g as gn,h as _r,i as Hr,j as dl,t as pl,w as bl,x as $o,z as Tl}from"./chunk-HIP66OBL.js";import{a as Qt,b as il,c as ll}from"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import{a as hl}from"./chunk-56EJGQU3.js";import{a as Nt,b as St,d as el,e as Et,f as tl,j as Ns,k as Fs,l as lr,m as ol,n as Fo}from"./chunk-M46I73DX.js";import"./chunk-IUN7DBB4.js";import{a as ml}from"./chunk-A73NNVCZ.js";import{a as Jo,b as $n,d as Xr,e as Us,f as cl,h as ul,i as ur}from"./chunk-6H2P5XUL.js";import{a as cr}from"./chunk-6EYQQ7GQ.js";import"./chunk-4BLSASW6.js";import{a as dr}from"./chunk-Y5JU726N.js";import{b as zo,c as Ls,k as qi}from"./chunk-FXRFFNRK.js";import{a as zi,b as Ji,i as Zi,j as $r,k as Ur,m as Ct,n as fn,o as Ps,u as Ri}from"./chunk-IXXTQAO2.js";import{a as Qi,b as Os,c as Ft}from"./chunk-EUNKA2MP.js";import{d as Xi,e as ks,f as Gi,g as Wi,h as Vi,i as Yi,j as ji,l as Fr,n as Qo,o as eo,p as ir,q as Ki}from"./chunk-KMOTPBF5.js";import{c as Pr,d as Hi,e as Nr}from"./chunk-P5HBJA23.js";import{a as ho,b as xn,c as Co,d as Is,e as As,k as sr,y as _i}from"./chunk-26BQ45XP.js";import oi from"os";import e,{useState as Z,useEffect as ft,useRef as rt,useMemo as Gn}from"react";import{Box as c,Text as s,useInput as mc,useStdout as xc,Static as fc}from"ink";import gc from"ink-spinner";import xt from"fs-extra";import Ot from"path";import{exec as Io}from"child_process";import{fileURLToPath as hc}from"url";import Vt,{useState as Gr,useEffect as _s,useMemo as mr,useCallback as $a,useRef as Uo}from"react";import{Box as Ua,Text as po,useInput as _a}from"ink";function Ha(t,f){return t.replace(/\t/g," ".repeat(f))}function Wr(t){return t==null?"":t.replace(/\r\n/g,`
2
+ `).replace(/\r/g,`
3
+ `)}function hn(t,f,g){let S=t,T=[...f].sort((l,w)=>l.start-w.start),p=0;for(let l of T){let w=l.start-p,b=Wr(l.text).split(`
4
+ `).length,M=l.text.length,F=(b>3?`[Pasted ${b} lines]`:`[Pasted ${M} chars]`).length,O=w+F;if(t<=w)break;if(t<O){S=l.end;break}else{let E=l.text.length-F;S+=E,p+=E}}return Math.min(S,g.length)}function Hs(t,f,g,S,T=[]){let p=(t||"").slice(0,f),l=S(p).length,w=S(t||""),b=[...T].sort((P,k)=>k.start-P.start);for(let P of b){let k=S(t.slice(0,P.start)).length,j=S(P.text),K=k+j.length,de=Wr(P.text).split(`
5
+ `).length,he=P.text.length,oe=de>3?`[Pasted ${de} lines]`:`[Pasted ${he} chars]`;w=w.slice(0,k)+oe+w.slice(K),l>k&&l<K?l=k+oe.length:l>=K&&(l=l-(K-k)+oe.length)}let M=w.split(`
6
+ `),F=[],O=0,E=0,v=0,G=!1;for(let P=0;P<M.length;P++){let k=M[P];if(k.length===0){!G&&l===O&&(E=F.length,v=0,G=!0),F.push({text:"",globalStart:hn(O,T,t),formattedStart:O}),O+=1;continue}let K=St(k,g).split(`
7
+ `),de=0,he=[];for(let oe=0;oe<K.length;oe++){let Q=K[oe],ce=Q.trim();if(ce.length===0){let Se=Q.length||1;he.push({text:Q,start:de,length:Se}),de+=Se}else{let Se=k.indexOf(ce,de);if(Se!==-1){let Pe=de,Ze=oe<K.length-1?K[oe+1].trim():"",pe=k.length;if(Ze.length>0){let fe=k.indexOf(Ze,Se+ce.length);fe!==-1&&(pe=fe)}he.push({text:k.slice(Pe,pe),start:Pe,length:pe-Pe}),de=pe}else he.push({text:Q,start:de,length:Q.length}),de+=Q.length}}for(let oe=0;oe<he.length;oe++){let Q=he[oe],ce=Q.text,Se=O+Q.start,Pe=Se+Q.length;!G&&l>=Se&&(l<Pe||l===Pe&&oe===he.length-1)&&(E=F.length,v=l-Se,G=!0),F.push({text:ce,globalStart:hn(Se,T,t),formattedStart:Se})}O+=k.length+1}return G||(F.length===0?F.push({text:"",globalStart:0,formattedStart:0}):w.endsWith(`
8
+ `)?(F.push({text:"",globalStart:hn(O,T,t),formattedStart:O}),E=F.length-1,v=0):(E=F.length-1,v=F[E].text.length)),{visualLines:F,cursorLine:E,cursorCol:v}}var Xa=({value:t,rows:f,maxRows:g,highlightStyle:S,textStyle:T,placeholder:p="",mask:l,showCursor:w=!0,focus:b=!0,tabSize:M=4,cursorIndex:F=0,highlight:O,columns:E=80,pasteBlocks:v=[],cursorColor:G})=>{let P=Uo(0),k=mr(()=>Math.max(20,E-10),[E]),j=$a((et,We=!1)=>{let q=Wr(et);if(!We&&l)return q.replace(/[^\n]/g,l);let _=Ha(q,M);return We?_:_.replace(/@\[(.*?)\]/g,(ne,ue)=>{let Be=ue.indexOf("#"),ke=ue.indexOf(":L"),Ae=ue,Ge="";Be!==-1?(Ae=ue.slice(0,Be),Ge=ue.slice(Be)):ke!==-1&&(Ae=ue.slice(0,ke),Ge=ue.slice(ke));let st=Ae.replace(/\\/g,"/"),at=(process.cwd()||"").replace(/\\/g,"/");at&&st.toLowerCase().startsWith(at.toLowerCase()+"/")?st=st.slice(at.length+1):st.startsWith("./")&&(st=st.slice(2));let Me=st.split("/");return`[${Me[Me.length-1]}${Ge}]`})},[M,l]),{visualLines:K,cursorLine:de,cursorCol:he}=mr(()=>Hs(t,F,k,j,v),[t,F,k,j,v]),oe=K.length,Q=mr(()=>Math.max(f??g??1,Math.min(g??f??1,oe)),[f,g,oe]),ce=de+1,Se=P.current+Q,Pe=P.current;ce<=P.current?Pe=Math.max(0,ce-1):ce>Se?Pe=ce-Q:oe&&(oe<Q?Pe=0:oe<Se&&(Pe=oe-Q)),P.current=Pe;let Ze=mr(()=>K.slice(Pe,Pe+Q),[K,Pe,Q]),[pe,fe]=Gr(!0);_s(()=>{if(fe(!0),!b||!w)return;let et=setInterval(()=>{fe(We=>!We)},530);return()=>clearInterval(et)},[b,w,t,F]);let ge=mr(()=>({...T,color:w&&b&&pe?G||"white":void 0,bold:w&&b&&pe,inverse:w&&b&&pe}),[T,w,b,pe,G]),_e=(et,We,q,_)=>{if(!et){let Ae=p&&t.length===0?j(p,!0):"";if(We){let Ge=Ae[0]||" ",st=Ae.slice(1);return Vt.createElement(po,null,Vt.createElement(po,{..._},Ge),Vt.createElement(po,{color:"gray",dimColor:!0},st))}return Vt.createElement(po,{color:"gray",dimColor:!0},Ae||" ")}let ne=/(\[Pasted \d+ (?:lines|chars)\])/g,ue=et.split(ne),Be=0,ke=[];for(let Ae=0;Ae<ue.length;Ae++){let Ge=ue[Ae];if(Ge==="")continue;let st=Ge.match(/^\[Pasted \d+ (?:lines|chars)\]$/),at=Ge.length,Me=Be+at;if(We&&q>=Be&&q<Me){let Ce=q-Be,Oe=Ge.slice(0,Ce),le=Ge[Ce]||" ",we=Ge.slice(Ce+1);ke.push(Vt.createElement(po,{key:Ae},Vt.createElement(po,{color:st?"magenta":void 0},Oe),Vt.createElement(po,{..._},le),Vt.createElement(po,{color:st?"magenta":void 0},we)))}else ke.push(Vt.createElement(po,{key:Ae,color:st?"magenta":void 0},Ge));Be=Me}return We&&q>=et.length&&ke.push(Vt.createElement(po,{key:"cursor-end",..._}," ")),Vt.createElement(Vt.Fragment,null,ke)};return Vt.createElement(Ua,{height:Q,width:k+1,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},Ze.map((et,We)=>{let q=Pe+We,_=q===de&&b&&w;return Vt.createElement(po,{key:q,...T,wrap:"truncate"},_e(et.text,_,he,ge))}))},Ml=({value:t,onChange:f,onSubmit:g,keyBindings:S,showCursor:T=!0,highlightPastedText:p=!1,focus:l=!0,columns:w=80,useCustomInput:b=(E,v)=>_a(E,{isActive:v}),onPasteStateChange:M,cursorColor:F,...O})=>{let[E,v]=Gr(t.length),[G,P]=Gr(0),[k,j]=Gr([]),K=Uo(t.length),de=Uo(t),he=Uo(0),oe=Uo([]),Q=Uo(""),ce=Uo(-1),Se=Uo(null),Pe=Uo(0);K.current=E,de.current=t,he.current=G,oe.current=k,_s(()=>{K.current>t.length&&(K.current=t.length,v(t.length)),t?j(fe=>fe.filter(ge=>ge.end<=t.length&&ge.start<=t.length)):(j([]),P(0))},[t]),_s(()=>{M?.(k.length>0)},[k,M]);let Ze=()=>{let fe=Q.current,ge=ce.current,_e=ge+fe.length,et=de.current,We=et.slice(0,ge)+fe+et.slice(ge);f(We),K.current=_e,v(_e),P(fe.length>1?fe.length:0);let q=Wr(fe).split(`
9
+ `).length,_=fe.length;if(_>50&&(q>3||q<=3&&_>200)){let ne={start:ge,end:_e,text:fe};j(ue=>{let Be=fe.length;return[...ue.map(Ae=>ge<=Ae.start?{...Ae,start:Ae.start+Be,end:Ae.end+Be}:Ae),ne]})}Q.current="",ce.current=-1,Se.current=null},pe=()=>{Se.current&&(clearTimeout(Se.current),Ze())};return b((fe,ge)=>{if(fe==="\x1B[I"||fe==="\x1B[O"||fe==="[I"||fe==="[O")return;let _e=fe,et=!1,We=!1;_e&&typeof _e=="string"&&(_e.includes("\x1B[200~")&&(et=!0,_e=_e.replace(/\x1b\[200~/g,"")),_e.includes("\x1B[201~")&&(We=!0,_e=_e.replace(/\x1b\[201~/g,"")));let q=K.current,_=de.current,ne=oe.current,ue=Math.max(20,w-10),Be=(Me,Ce)=>{if(ne.length===0)return;let Oe=ne.map(le=>Me<=le.start?{...le,start:le.start+Ce,end:le.end+Ce}:Me>le.start&&Me<le.end?null:le).filter(Boolean);j(Oe)},ke=Me=>{for(let Ce of ne)if(Me>Ce.start&&Me<Ce.end)return Ce.start;return Me};if(ge.ctrl&&(_e==="o"||_e==="")){j([]);return}if(ge.ctrl&&(_e.toLowerCase()==="r"||_e===""||_e===""))return;if(ge.upArrow||ge.downArrow||ge.leftArrow||ge.rightArrow){pe();let Me=Date.now();if(Me-Pe.current<33)return;Pe.current=Me}let Ge=S?.submit??(Me=>Me.return&&Me.ctrl),st=S?.newline??(Me=>Me.return);if(Ge(ge)){pe(),g?.(_);return}else if(st(ge)){pe(),Be(q,1);let Me=_.slice(0,q)+`
10
+ `+_.slice(q);f(Me),K.current=q+1,v(q+1),P(0);return}if(ge.tab||ge.shift&&ge.tab||ge.ctrl&&_e==="c")return;let at=Me=>Me;if(ge.upArrow||ge.downArrow){if(pe(),T){let{visualLines:Me,cursorLine:Ce,cursorCol:Oe}=Hs(_,q,ue,at,ne),le=ge.upArrow?Ce-1:Ce+1;if(le>=0&&le<Me.length){let we=Me[le],Ye=Math.min(Oe,we.text.length),wt=we.formattedStart+Ye,$=hn(wt,ne,_);$=ke($),K.current=$,v($),P(0)}else if(ge.upArrow&&Ce===0)K.current=0,v(0),P(0);else if(ge.downArrow&&Ce===Me.length-1){let we=Me[Me.length-1],Ye=we.formattedStart+we.text.length,wt=hn(Ye,ne,_);wt=ke(wt),K.current=wt,v(wt),P(0)}}}else if(ge.leftArrow){if(pe(),T){let Me=Math.max(0,q-1),Ce=ne.find(Oe=>q===Oe.end);Ce&&(Me=Ce.start),K.current=Me,v(Me),P(0)}}else if(ge.rightArrow){if(pe(),T){let Me=Math.min(_.length,q+1),Ce=ne.find(Oe=>q===Oe.start);Ce&&(Me=Ce.end),K.current=Me,v(Me),P(0)}}else if(ge.backspace){pe();let Me=ne.findIndex(Ce=>q===Ce.end);if(Me!==-1){let Ce=ne[Me],Oe=-(Ce.end-Ce.start),le=_.slice(0,Ce.start)+_.slice(Ce.end);f(le),K.current=Ce.start,v(Ce.start),P(0);let we=ne.filter((Ye,wt)=>wt!==Me).map(Ye=>Ye.start>=Ce.end?{...Ye,start:Ye.start+Oe,end:Ye.end+Oe}:Ye);j(we)}else if(q>0){Be(q-1,-1);let Ce=_.slice(0,q-1)+_.slice(q);f(Ce),K.current=q-1,v(q-1),P(0)}}else if(ge.delete){pe();let Me=ne.findIndex(Ce=>q===Ce.start);if(Me!==-1){let Ce=ne[Me],Oe=-(Ce.end-Ce.start),le=_.slice(0,Ce.start)+_.slice(Ce.end);f(le),P(0);let we=ne.filter((Ye,wt)=>wt!==Me).map(Ye=>Ye.start>=Ce.end?{...Ye,start:Ye.start+Oe,end:Ye.end+Oe}:Ye);j(we)}else if(Be(q,-1),q<_.length){let Ce=_.slice(0,q)+_.slice(q+1);f(Ce),P(0)}}else if(ge.home||ge.end){if(pe(),T){let{visualLines:Me,cursorLine:Ce}=Hs(_,q,ue,at,ne),Oe=Me[Ce];if(Oe){let le;ge.home?le=hn(Oe.formattedStart,ne,_):ge.end&&(le=hn(Oe.formattedStart+Oe.text.length,ne,_)),le=ke(le),K.current=le,v(le),P(0)}}}else if(_e!==""||et||We)if(et||We||_e.length>1||Se.current!==null)Se.current?(clearTimeout(Se.current),Q.current+=_e):(ce.current=q,Q.current=_e),We?(Se.current=null,Ze()):Se.current=setTimeout(()=>{Ze()},80);else{Be(q,_e.length);let Ce=_.slice(0,q)+_e+_.slice(q);f(Ce);let Oe=q+_e.length;K.current=Oe,v(Oe),P(0)}},l),Vt.createElement(Xa,{...O,value:t,cursorIndex:E,showCursor:T,focus:l,columns:w,pasteBlocks:k,cursorColor:F})};import Wn from"ink-text-input";import"ink-select-input";import i from"react";import{Box as D,Text as se}from"ink";import At,{useState as Sl,useEffect as Ga}from"react";import{Box as _o,Text as bo,useInput as Wa}from"ink";var Vr=At.memo(({command:t,output:f,completed:g=!1,isFocused:S=!1,columns:T=80,isPty:p=!1,terminalHeight:l=24,theme:w="Dark"})=>{let b=ct(w),F=(_=>{if(!_)return"";let ne=[[]],ue=0,Be=0,ke="",Ae=/\x1b\[([0-9;]*?)([a-zA-Z])/g,Ge=0,st,at=Ce=>{for(let Oe=0;Oe<Ce.length;Oe++){let le=Ce[Oe];if(le===`
11
+ `)for(ue++,Be=0;ue>=ne.length;)ne.push([]);else if(le==="\r")Be=0;else{for(;ue>=ne.length;)ne.push([]);let we=ne[ue];for(;Be>we.length;)we.push({char:" ",style:""});we[Be]={char:le,style:ke},Be++}}};for(;(st=Ae.exec(_))!==null;){at(_.substring(Ge,st.index));let Ce=st[1],Oe=st[2],le=Ce?Ce.split(";").map(Number):[];if(Oe==="A"){let we=le[0]||1;ue=Math.max(0,ue-we)}else if(Oe==="B"){let we=le[0]||1;for(ue=ue+we;ue>=ne.length;)ne.push([])}else if(Oe==="C"){let we=le[0]||1;Be=Be+we}else if(Oe==="D"){let we=le[0]||1;Be=Math.max(0,Be-we)}else if(Oe==="G"){let we=(le[0]||1)-1;Be=Math.max(0,we)}else if(Oe==="H"||Oe==="f"){let we=(le[0]||1)-1,Ye=(le[1]||1)-1;for(ue=Math.max(0,we),Be=Math.max(0,Ye);ue>=ne.length;)ne.push([])}else if(Oe==="K"){let we=le[0]||0;if(ue<ne.length){let Ye=ne[ue];if(we===0)Ye.length=Be;else if(we===1)for(let wt=0;wt<Be&&wt<Ye.length;wt++)Ye[wt]={char:" ",style:""};else we===2&&(Ye.length=0)}}else if(Oe==="J"){let we=le[0]||0;(we===2||we===3)&&(ne.length=0,ne.push([]),ue=0,Be=0)}else if(Oe==="m"){let we=st[0];we==="\x1B[0m"?ke="":ke=we}Ge=Ae.lastIndex}at(_.substring(Ge));let Me=ne.map(Ce=>{let Oe="",le="";for(let we=0;we<Ce.length;we++){let Ye=Ce[we]||{char:" ",style:""};Ye.style!==le&&(le&&(Oe+="\x1B[0m"),Oe+=Ye.style,le=Ye.style),Oe+=Ye.char}return le&&(Oe+="\x1B[0m"),Oe});for(;Me.length>0&&Me[Me.length-1]==="";)Me.pop();return Me.join(`
12
+ `)})(f).replace(/\n{3,}/g,`
13
+
14
+ `),O=Math.max(10,(T||80)-6),E=F?F.split(`
15
+ `).flatMap(_=>_?St(_,O).split(`
16
+ `):[""]):[],[v,G]=Sl(!1),[P,k]=Sl(0);Ga(()=>{S||k(0)},[S]);let j=l&&l>0?l:process.stdout.rows||24,K=j<=24,he=Math.max(1,j-(K?11:14)),oe=j<=16?4:j<=22?5:j<=28?6:10,Q=Math.min(oe,he),ce=E.length>Q,Se=Math.max(0,E.length-Q);Wa((_,ne)=>{if(!S)return;let ue=ne.pageUp||_==="\x1B[5~"||_==="[5~",Be=ne.pageDown||_==="\x1B[6~"||_==="[6~";ne.ctrl&&(_==="o"||_==="")?(G(ke=>!ke),k(0)):ue?k(ke=>Math.min(Se,ke+5)):Be&&k(ke=>Math.max(0,ke-5))},{isActive:S});let Pe;if(!ce||v)Pe=E;else{let _=Math.max(0,E.length-Q-P),ne=_+Q;Pe=E.slice(_,ne)}let Ze=(Pe||[]).join(`
17
+ `).trim(),pe=(Pe||[]).join(`
18
+ `),fe=ce&&!v?Math.max(0,E.length-Q-P):0,ge=ce&&!v?P:0,_e=g?"\u{1F3C1} FINISHED: ":"\u26A1 EXECUTING: ",et=Math.max(10,(T||80)-(p?24:14)),We=St((t||"").replace(/\r?\n/g," ").trim(),et).split(`
19
+ `),q=(t||"").replace(/\r?\n/g," ").trim();return We.length>1&&(q=We[0].length>3?We[0].slice(0,-3)+"...":We[0]+"..."),At.createElement(_o,{flexDirection:"column",borderStyle:S?"double":"single",borderLeft:!1,borderRight:!1,borderTop:!0,borderBottom:!0,borderColor:b.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:K?0:1,paddingBottom:1,marginY:K?0:1,width:T-2},At.createElement(_o,{marginBottom:K?0:1,justifyContent:"space-between",width:"100%"},At.createElement(_o,{flexShrink:1,paddingRight:2},At.createElement(bo,null,At.createElement(bo,{color:b.text,bold:!0},_e),At.createElement(bo,{color:b.text},q))),p&&At.createElement(_o,{flexShrink:0,paddingX:1},At.createElement(bo,{color:"green",bold:!0},"ADVANCE"))),Ze?At.createElement(_o,{flexDirection:"column",marginTop:0,backgroundColor:p?void 0:b.codeBg,paddingX:1,width:"100%"},fe>0&&At.createElement(_o,{marginBottom:0},At.createElement(bo,{color:"magenta"},"\u25B2 ...",fe," lines above (Use PageUp to scroll)...")),At.createElement(bo,{color:b.text},pe),ge>0&&At.createElement(_o,{marginTop:0},At.createElement(bo,{color:"magenta"},"\u25BC ...",ge," lines below (Use PageDown to scroll)..."))):!g&&At.createElement(_o,{marginTop:K?0:1,backgroundColor:p?void 0:b.codeBg,paddingX:1,width:"100%"},At.createElement(bo,{color:b.textMuted,italic:!0},"Waiting for output...")),At.createElement(_o,{justifyContent:"space-between",marginTop:K?0:1},g?At.createElement(bo,{color:b.textMuted,italic:!0},S?"Use PgUp/PgDn to scroll \u2022 Ctrl+O to expand/collapse \u2022 TAB to unfocus.":"Press TAB to focus & scroll."):At.createElement(bo,{color:b.textMuted,italic:!0},S?"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."),At.createElement(bo,{color:b.textMuted,bold:!0},g?S?"\u25CF ARCHIVED (FOCUSED) ":"\u25CF ARCHIVED ":S?"\u25B6 TERMINAL FOCUSED ":"\u25CF LIVE (Press TAB to focus) ")))});import{diffWordsWithSpace as Va}from"diff";var xr=null,vl=t=>{xr=t!==!1},Dl=()=>{if(xr===null)try{xr=Nr(xn,{})?.systemSettings?.preserveThinking!==!1}catch{xr=!0}return xr},El=(t,f,g)=>t,Ya=(t,f=80)=>{if(!t)return null;let g=t.replaceAll(" "," "),S=f-10,T=g.trim();if(!T.includes("```"))return i.createElement(D,{width:"100%",flexDirection:"column"},i.createElement(_n,{text:T,color:"#969696",columns:S,italic:!0}));let p=T.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return i.createElement(D,{width:"100%",flexDirection:"column"},p.map((l,w)=>{if(l.startsWith("```")){let M=l.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),F=M?M[2]:l.replace(/^```\w*\n?/,"").replace(/```$/,""),O=St(F.trimEnd(),S);return i.createElement(D,{key:w,flexDirection:"column",width:"100%"},O.split(`
20
+ `).map((E,v)=>i.createElement(se,{key:v,color:"cyan"},E)))}let b=l;return w>0&&(b=b.replace(/^[\r\n]+/,"")),w<p.length-1&&(b=b.replace(/[\r\n]+$/,"")),b?i.createElement(_n,{key:w,text:b,color:"gray",columns:S,italic:!0}):null}))},ja=/(```[\s\S]*?```|`[^`\r\n]+`|@\[.*?\]|\*\*.*?\*\*|\*.*?\*|\\\(.*?\\\)|\\\[.*?\\\]|\$.*?\$|\[.*?\]\s*\(.*?\)|\[.*?\]\s*\[.*?\]|https?:\/\/[^\s]+)/g;var Ka=/\\frac\s*\{([^{}]*)\}\s*\{([^{}]*)\}/g,qa=/(\\(?:mathbf|textbf|textit|underline|texttt)\{[^{}]*\})/g,Qa=/^(#{1,6})\s+(.*)/,za=/\\multiply|\\mul|\\times/g,Ja=/\\div/g,Za=/\\cdot/g,Ra=/\\infty/g,ed=/\\pm/g,td=/\\leq/g,od=/\\geq/g,nd=/\\neq/g,rd=/\\sqrt\s*\{([^}]+)\}/g,sd=/\\sqrt\s*(\w+|\d+)/g,id=/\\alpha/g,ld=/\\beta/g,ad=/\\theta/g,dd=/\\pi/g,cd=/\\approx/g,ud=/\\Delta/g,md=/\\sigma/g,xd=/\\sum/g,fd=/\\prod/g,gd=/\\rightarrow|\\to/g,hd=/\\left\b|\\right\b/g,pd=/\\left\(|\\right\)/g,bd=/\\left\[|\\right\]/g,Td=/\\\{|\\\}/g,wd=/\\text\s*\{([^}]+)\}/g,yd=/\\text\s+(\w+)/g,Cd=/\\%/g,Md=/\\\(|\\\)/g,Sd=/\\\[|\\\]/g,Ed=/@\[(.*?)\]/g,Bl=/:L/gi,Bd=/\[(.*?)\]\s*\((.*?)\)/,vd=/\[(.*?)\]\s*\[(.*?)\]/,Dd=/\\(\w+)\{([^{}]*)\}/,Id=t=>t.replace(Md,f=>f.includes("(")?"(":")").replace(Sd,f=>f.includes("[")?"[":"]").replace(za,"\xD7").replace(Ja,"\xF7").replace(Za,"\u22C5").replace(Ra,"\u221E").replace(ed,"\xB1").replace(td,"\u2264").replace(od,"\u2265").replace(nd,"\u2260").replace(rd,"\u221A($1)").replace(sd,"\u221A($1)").replace(id,"\u03B1").replace(ld,"\u03B2").replace(ad,"\u03B8").replace(dd,"\u03C0").replace(cd,"\u2248").replace(ud,"\u0394").replace(md,"\u03C3").replace(xd,"\u03A3").replace(fd,"\u03A0").replace(gd,"\u2192").replace(hd,"").replace(pd,f=>f.includes("left")?"(":")").replace(bd,f=>f.includes("left")?"[":"]").replace(Td,f=>f.includes("{")?"{":"}").replace(wd,"$1").replace(yd,"$1").replace(Cd,"%"),Ad=/\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/,kd=[/((?<=\binclude\s+)(?:<[^>]+>|"[^"]+"))/.source,/((?<=\b(?:from|import|require\s*\(\s*)\s*)(?:'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"))/.source,/(\/\/.*|#.*)/.source,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^\`\\])*`)/.source,Ad.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],Xs=new RegExp(kd.join("|"),"g"),Un=new Map,Ld=1e3,Od=(t,f)=>{if(!t)return[];let g=`${f}:${t}`;if(Un.has(g))return Un.get(g);let S=0,T=[],p;for(Xs.lastIndex=0;(p=Xs.exec(t))!==null;){let l=p[0],w=p.index;w>S&&T.push({text:Nt(t.substring(S,w))});let b,M=!1;p[1]||p[2]?b="#ce9178":p[3]?b="#9ece6a":p[4]?b="#fcfca4":p[5]?(b="#ff7b72",M=!0):p[6]?b="#b392f0":(p[7]||p[8])&&(b="#ff9e64"),T.push({text:Nt(l),color:b,bold:M}),S=Xs.lastIndex}if(S<t.length&&T.push({text:Nt(t.substring(S))}),Un.size>=Ld){let l=Un.keys().next().value;Un.delete(l)}return Un.set(g,T),T},Tt=(t,f,g=void 0,S=void 0)=>{if(!t)return i.createElement(se,{backgroundColor:S}," ");let T=Od(t,f);return i.createElement(se,{color:g,backgroundColor:S},T.map((p,l)=>i.createElement(se,{key:l,color:p.color||g,backgroundColor:S,bold:p.bold},p.text)))},Gs=(t,f)=>{if(!t)return null;let g=t.replace(Ka,"($1/$2)");g=Id(g);let S=g.split(qa);return i.createElement(i.Fragment,{key:f},S.map((T,p)=>{if(T.startsWith("\\")){let l=T.match(Dd);if(l){let w=l[1],b=l[2];return i.createElement(se,{key:p,bold:w==="mathbf"||w==="textbf",italic:w==="textit",underline:w==="underline",color:w==="texttt"?"cyan":void 0},b)}}return T}))},Yt=i.memo(({text:t,color:f,italic:g,theme:S="Dark"})=>{if(!t)return null;let T=t.replaceAll(" "," "),p=ct(S),l=f||p.text,w=p.codeText||p.logoGradient&&p.logoGradient[0]||p.info||p.secondary||"cyan",b=T.split(ja);return i.createElement(se,{color:l,wrap:"anywhere",italic:g},b.map((M,F)=>{if(!M)return null;if(M.startsWith("```")&&M.endsWith("```")){let O=M.slice(3,-3);return i.createElement(se,{key:F,color:w},O)}if(M.startsWith("**")&&M.endsWith("**"))return i.createElement(se,{key:F,bold:!0,color:l},i.createElement(Yt,{text:M.slice(2,-2),color:l,theme:S}));if(M.startsWith("*")&&M.endsWith("*"))return i.createElement(se,{key:F,italic:!0,color:l},i.createElement(Yt,{text:M.slice(1,-1),color:l,italic:g,theme:S}));if(M.startsWith("`"))if(M.endsWith("`")&&M.length>1){let O=M.slice(1,-1),E=O.replace(Ed,(G,P)=>P.split("/").pop().split("\\").pop().replace(Bl,"#L")),v=O.includes("@[");return i.createElement(se,{key:F,color:w,bold:v},E)}else return i.createElement(se,{key:F,color:w},M.slice(1));if(M.startsWith("@[")&&M.endsWith("]")){let E=M.slice(2,-1).split("/").pop().split("\\").pop().replace(Bl,"#L");return i.createElement(se,{key:F,color:w,bold:!0},E)}if(M.startsWith("\\(")&&M.endsWith("\\)")||M.startsWith("\\[")&&M.endsWith("\\]")){let O=M.slice(2,-2);return i.createElement(se,{key:F,color:"yellow"},Gs(O,F))}if(M.startsWith("$")&&M.endsWith("$")){let O=M.slice(1,-1);return i.createElement(se,{key:F,color:"yellow"},Gs(O,F))}if(M.startsWith("[")&&(M.includes("](")||M.includes("] ("))){let O=M.match(Bd);if(O){let E=O[1]||O[2],G=`\x1B]8;;${O[2]||O[1]}\x07${E}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:w,underline:!0,italic:!0},G)}}if(M.startsWith("[")&&(M.includes("][")||M.includes("] ["))){let O=M.match(vd);if(O){let E=O[1]||O[2],G=`\x1B]8;;${O[2]||O[1]}\x07${E}\x1B]8;;\x07`;return i.createElement(se,{key:F,color:w,underline:!0,italic:!0},G)}}return M.startsWith("http")?i.createElement(se,{key:F,color:w,underline:!0,italic:!0},M):Gs(M,F)}))}),Il=i.memo(({buffer:t,terminalWidth:f=80,theme:g="Dark"})=>{if(t.length<2)return null;let S=ct(g),T=S.codeText||S.secondary||S.info||"cyan",p=t.map(O=>{let E=O.split("|");return E[0]!==void 0&&E[0].trim()===""&&E.shift(),E.length>0&&E[E.length-1].trim()===""&&E.pop(),E.map(v=>v.trim())}),l=p[0],w=p.slice(2),b=Math.floor(100/l.length),M=f-8,F=Math.floor(M/l.length)-2;return i.createElement(D,{flexDirection:"column",borderStyle:"round",borderColor:S.borderMuted,paddingX:1,marginY:0,width:f-2},i.createElement(D,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:S.borderMuted,marginBottom:1,paddingBottom:0,width:"100%"},l.map((O,E)=>i.createElement(D,{key:E,flexBasis:`${b}%`,flexGrow:1,flexShrink:0,paddingRight:2},i.createElement(Yt,{text:St(O,F),color:T,theme:g})))),w.map((O,E)=>i.createElement(D,{key:E,flexDirection:"row",marginBottom:E===w.length-1?0:1,width:"100%"},O.map((v,G)=>i.createElement(D,{key:G,flexBasis:`${b}%`,flexGrow:1,flexShrink:0,paddingRight:2,flexDirection:"column"},i.createElement(Yt,{text:St(v,F),color:S.text,theme:g}))))))}),_n=i.memo(({text:t,color:f,columns:g=80,italic:S=!1,theme:T="Dark"})=>{if(!t)return null;let p=t.replaceAll(" "," "),l=ct(T),w=f||l.text,b=p.split(`
21
+ `),M=[],F=[],O=[],E=v=>{if(F.length>0&&(M.push(i.createElement(Il,{key:`table-${v}`,buffer:[...F],terminalWidth:g,theme:T})),F=[]),O.length>0){let G=g-6,P=O.flatMap(k=>St(k,G).split(`
22
+ `));M.push(i.createElement(D,{key:`quote-${v}`,borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:l.borderMuted,paddingLeft:1,marginY:1,flexDirection:"column"},P.map((k,j)=>i.createElement(Yt,{key:j,text:k,color:l.textMuted,italic:S,theme:T})))),O=[]}};return b.forEach((v,G)=>{let P=v.trim(),k=P.startsWith("|"),j=P.startsWith(">");if(k)O.length>0&&E(G),F.push(v);else if(j)F.length>0&&E(G),O.push(P.replace(/^>\s*/,""));else{if(E(G),P===""){M.push(i.createElement(D,{key:G,height:1}));return}if(P==="---"||P==="***"||P==="___"){M.push(i.createElement(D,{key:G,marginY:0,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:l.borderMuted}));return}let K=P.match(/^(#{1,6})\s+(.*)/);if(K){let ce=K[1].length,Se=K[2];M.push(i.createElement(D,{key:G,marginTop:1,marginBottom:0,width:"100%"},i.createElement(se,{bold:!0,color:ce===1?"yellow":ce===2?"magenta":ce===3?l.info||"cyan":ce===4?"green":ce===5?"blue":l.text,underline:!0},Se)));return}let de=/^[\*\-\+]\s/.test(P),he=/^\d+\.\s/.test(P),oe=v.includes("\u2588")||v.includes("\u2554")||v.includes("\u255A")||v.includes("\u2550"),Q="";if(oe)Q=v;else if(de||he){let ce=de?" \u2022 ":P.match(/^\d+\.\s/)[0],Se=" ".repeat(ce.length),Pe=St(P.replace(/^[\*\-\d+\.]+\s/,""),g-(ce.length+6));Q=ce+Pe.split(`
23
+ `).join(`
24
+ `+Se)}else Q=St(P,g-4);M.push(i.createElement(D,{key:G,flexDirection:"column",width:"100%"},i.createElement(Yt,{text:Q,color:w,italic:S,theme:T})))}}),E("final"),i.createElement(D,{flexDirection:"column",width:g-2},M)}),Al=i.memo(({line:t,pairContent:f,parentText:g,columns:S=80,extension:T,theme:p="Dark"})=>{let l=ct(p),w=(t||"").replaceAll(" "," "),b=w.includes("[UI_CONTEXT]"),M=w.replace("[UI_CONTEXT]","");if(b&&M.includes("\u2550"))return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:S},i.createElement(se,{color:"gray"},"\u2550".repeat(Math.max(10,S-4))));let F=Ns(w);if(!F)return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:S},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"},St(M,S-14))));let{isR:O,isA:E,num:v,content:G}=F,P=f&&f.replaceAll(" "," "),k=[];if(P!=null){let Se=O?G:P,Pe=O?P:G;try{k=Va(Se,Pe)}catch{k=[]}}let j=k.some(Se=>O&&Se.removed||E&&Se.added),K=!P&&(O||E),de=O?l.diffRemovalBg:E?l.diffAdditionBg:void 0,he=O||E?O?l.diffRemovalNum:l.diffAdditionNum:l.textMuted,oe=O?l.diffRemovalPrefix:l.diffAdditionPrefix,Q=O?"-":E?"+":" ",ce=()=>{if(K){let q=O?l.diffRemovalHighlightBg:l.diffAdditionHighlightBg;return i.createElement(D,{flexDirection:"column"},Tt(St(G,S-15),T,void 0,q))}if(!(O||E)||k.length===0||!j)return i.createElement(D,{flexDirection:"column"},Tt(St(G,S-15),T,void 0,void 0));let Se=Math.max(10,S-15),Pe=St(G,Se).split(`
25
+ `),Ze=[];if(k.forEach((q,_)=>{let ne=/^\s+$/.test(q.value);if(O){let ue=k[_-1]?.removed||k[_+1]?.removed;q.removed||ne&&ue?Ze.push({text:q.value,isHighlight:!0}):q.added||Ze.push({text:q.value,isHighlight:!1})}else if(E){let ue=k[_-1]?.added||k[_+1]?.added;q.added||ne&&ue?Ze.push({text:q.value,isHighlight:!0}):q.removed||Ze.push({text:q.value,isHighlight:!1})}}),Pe.length<=1)return i.createElement(se,{wrap:"wrap"},Ze.map((q,_)=>O?q.isHighlight?i.createElement(i.Fragment,{key:_},Tt(q.text,T,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:_},Tt(q.text,T,void 0)):E?q.isHighlight?i.createElement(i.Fragment,{key:_},Tt(q.text,T,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:_},Tt(q.text,T,void 0)):i.createElement(i.Fragment,{key:_},Tt(q.text,T,void 0))));let pe=0,fe=0,ge=G.match(/^(\s*)/),_e=ge?ge[1]:"",et=_e.substring(0,Math.min(_e.length,8)),We=Pe.map((q,_)=>{let ne=[],ue=q;_>0&&et&&q.startsWith(et)&&((Ze[pe]?Ze[pe].text.substring(fe):"").startsWith(et)||(ne.push({text:et,isHighlight:!1}),ue=q.substring(et.length)));let Be=ue.length;for(;Be>0&&pe<Ze.length;){let ke=Ze[pe],Ae=ke.text.length-fe;if(Ae<=0){pe++,fe=0;continue}let Ge=Math.min(Be,Ae);ne.push({text:ke.text.substring(fe,fe+Ge),isHighlight:ke.isHighlight}),fe+=Ge,Be-=Ge,fe>=ke.text.length&&(pe++,fe=0)}for(;pe<Ze.length;){let ke=Ze[pe],Ae=ke.text.substring(fe);if(/^\s+$/.test(Ae))pe++,fe=0;else if(Ae.startsWith(" ")||Ae.startsWith(" ")){let Ge=0;for(;Ge<Ae.length&&(Ae[Ge]===" "||Ae[Ge]===" ");)Ge++;fe+=Ge,fe>=ke.text.length&&(pe++,fe=0);break}else break}return ne});if(pe<Ze.length){let q=We[We.length-1];for(;pe<Ze.length;){let _=Ze[pe];q.push({text:_.text.substring(fe),isHighlight:_.isHighlight}),pe++,fe=0}}return i.createElement(D,{flexDirection:"column"},We.map((q,_)=>i.createElement(D,{key:_},i.createElement(se,{wrap:"wrap"},q.map((ne,ue)=>O?ne.isHighlight?i.createElement(i.Fragment,{key:ue},Tt(ne.text,T,void 0,l.diffRemovalHighlightBg)):i.createElement(i.Fragment,{key:ue},Tt(ne.text,T,void 0)):E?ne.isHighlight?i.createElement(i.Fragment,{key:ue},Tt(ne.text,T,void 0,l.diffAdditionHighlightBg)):i.createElement(i.Fragment,{key:ue},Tt(ne.text,T,void 0)):i.createElement(i.Fragment,{key:ue},Tt(ne.text,T,void 0)))))))};return i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:S},i.createElement(D,{width:4,flexShrink:0,justifyContent:"flex-end"},i.createElement(se,{color:he},v)),i.createElement(D,{width:1,flexShrink:0,marginLeft:1},i.createElement(se,{color:oe},Q)),i.createElement(D,{marginLeft:1,backgroundColor:de,flexGrow:1},ce()))}),Pd=i.memo(({text:t,columns:f=80,extension:g,theme:S="Dark"})=>{let T=ct(S),p=t.match(/\[DIFF_START\]([\s\S]*?)(?:\[DIFF_END\]|$)/),b=(p?p[1].trim():"").split(`
26
+ `).map(F=>{let O=F.replaceAll(" "," ");return{line:O,parsed:Ns(O),pairContent:null}}),M=[];for(let F=0;F<b.length;F++){let O=b[F];O.parsed&&(O.parsed.isR||O.parsed.isA)?M.push(O):M.length>0&&(Fs(M),M=[])}return M.length>0&&Fs(M),i.createElement(D,{flexDirection:"column",width:f-3,marginBottom:1},i.createElement(D,{flexDirection:"column",paddingY:0,width:"100%"},i.createElement(D,{backgroundColor:T.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," "))),b.map((F,O)=>i.createElement(Al,{key:O,line:F.line,pairContent:F.pairContent,columns:f-3,extension:g,theme:S})),i.createElement(D,{backgroundColor:T.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," ")))))}),Yr=i.memo(({text:t,columns:f=80,theme:g="Dark"})=>{if(!t)return null;let S=ct(g),T="",p=t.match(/File\s+\[(.*?)\]/i);if(p&&(T=p[1].split(".").pop().toLowerCase()),t.includes("[DIFF_START]"))return i.createElement(Pd,{text:t,columns:f,extension:T,theme:g});if(t.includes("- Content Preview:")){let l=t.split("- Content Preview:"),w=l[0],b=l[1]||"",M="[SYSTEM] Check the content preview for verification [/SYSTEM]",F=b.split(M),O=(F[0]?.trim()||"").replaceAll(" "," "),E=F[1]?`${M}${F[1]}`:"",v=O.split(`
27
+ `),G=String(v.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:S.codeBorder,paddingLeft:2,paddingRight:0,width:"100%",marginBottom:1,backgroundColor:S.codeBg},i.createElement(D,{flexDirection:"column",width:"100%"},i.createElement(D,{width:"100%"},i.createElement(D,{width:G+2,flexShrink:0},i.createElement(se,null," ")),i.createElement(D,{flexGrow:1},i.createElement(se,null," "))),v.map((P,k)=>i.createElement(D,{key:k,width:"100%"},i.createElement(D,{width:G+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(k+1).padStart(G," ")," ")),i.createElement(D,{flexGrow:1},Tt(P,T,S.text)))),i.createElement(D,{width:"100%"},i.createElement(D,{width:G+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,b)=>{if(w.startsWith("```")){let F=w.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),O=F?F[1]:"code",E=(F?F[2]:w.replace(/^```\w*\n?/,"").replace(/```$/,"")).replaceAll(" "," "),v=E.trimEnd().split(`
28
+ `),G=String(v.length).length,P=f-7-G,j=(P>5?St(E,P):E).trimEnd().split(`
29
+ `);return i.createElement(D,{key:b,flexDirection:"column",marginY:0,paddingLeft:2,paddingRight:0,width:"100%"},i.createElement(D,null,i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",O.toUpperCase()||"TEXT")),i.createElement(D,{flexDirection:"column",width:"100%"},j.map((K,de)=>{let oe=St(K,Math.max(10,P)).split(`
30
+ `);return i.createElement(D,{key:de,flexDirection:"column",width:"100%"},oe.map((Q,ce)=>i.createElement(D,{key:ce,width:"100%"},i.createElement(D,{width:G+2,flexShrink:0},i.createElement(se,{color:"gray"},ce===0?String(de+1).padStart(G," ")+" ":" ".repeat(G+1))),i.createElement(D,{flexGrow:1},Tt(Q,O,S.text)))))})))}let M=w;return b>0&&(M=M.replace(/^[\r\n]+/,"")),b<l.length-1&&(M=M.replace(/[\r\n]+$/,"")),M?i.createElement(_n,{key:b,text:M,columns:f-3,theme:g}):null}))}return i.createElement(_n,{text:t,columns:f-3,theme:g})}),jr=t=>{let f=Math.round(t/1e3);if(f<=0)return"0s";let g=Math.floor(f/60),S=f%60;return g>0?`${g}m ${S}s`:`${f}s`},kl=i.memo(({msg:t,showFullThinking:f,columns:g=80,aiProvider:S,version:T,theme:p="Dark"})=>{let l=ct(p),w=t.role==="system"&&(t.text?.includes("[DIFF_START]")||t.text?.includes("- Content Preview:")),b=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")),M=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,ar(T,S,p)));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 P=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"},St(P.replace(/\r\n/g,`
31
+ `).replace(/\r/g,`
32
+ `).replace(/\\\n/g,`
33
+ `).replace(/\\$/,""),g-7).split(`
34
+ `).map((k,j)=>i.createElement(D,{key:j,flexDirection:"row",width:"100%"},i.createElement(D,{flexShrink:0,width:2},i.createElement(se,{bold:!0,color:l.userMsgText},j===0?"\u2726":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(Yt,{text:k,color:l.userMsgText,theme:p}))))),i.createElement(D,{width:g-1,height:1,overflow:"hidden"},i.createElement(se,{color:l.userMsgBorder},"\u2580".repeat(Math.max(1,g-1)))))}if(b)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&&!M&&!b)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((P,k)=>i.createElement(se,{key:k,color:l.textMuted},P)))));if(t.isAskRecord){let P=t.text.match(/Selection: (.*)/),k=P?P[1]:"No selection",j=t.text.match(/Question: (.*)/),K=j?j[1]:null,de=K==="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")),K&&i.createElement(D,{paddingX:1,marginTop:1},i.createElement(se,{color:l.secondary},K)),i.createElement(D,{paddingX:1,marginTop:1,marginBottom:0},i.createElement(se,{color:l.text},"Selection: ",i.createElement(se,{color:l.textMuted,bold:!0},k)))))}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(Yr,{text:t.text,columns:g,theme:p}))));if(t.isHelpRecord){let P=[{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:"/profile",desc:"Edit developer persona"},{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},P.map((k,j)=>i.createElement(D,{key:j,flexDirection:"row"},i.createElement(D,{width:20},i.createElement(se,{color:l.text,bold:!0},k.cmd)),i.createElement(se,{color:l.textMuted}," - ",k.desc))))))}if(t.isTerminalRecord){let P=t.text.match(/COMMAND: (.*)/),k=t.text.match(/PTY: (true|false)/),j=t.text.match(/OUTPUT: ([\s\S]*)/),K=P?P[1]:"No Command",de=k?k[1]==="true":!1,he=j?j[1]:"";return i.createElement(D,{marginBottom:0,paddingX:1,width:"100%"},i.createElement(Vr,{command:K,output:he,completed:!0,columns:g,isPty:de,theme:p}))}let[O,E]=i.useState(!t.isStreaming),v=i.useMemo(()=>(ol(t.text,t.role)||"").replaceAll(" "," "),[t.text,t.role]);i.useEffect(()=>{t.isStreaming&&E(!1)},[t.id]);let G=i.useMemo(()=>t.role==="think"&&!f?"Thinking...":t.isStreaming?v:v.trimEnd(),[v,t.role,f,t.isStreaming]);return t.role==="think"&&!Dl()||t.role==="agent"&&G.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"},St(G.replace(/\r\n/g,`
36
+ `).replace(/\r/g,`
37
+ `).replace(/\\\n/g,`
38
+ `).replace(/\\$/,""),g-7).split(`
39
+ `).map((P,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?">":" ")),i.createElement(D,{flexGrow:1,marginLeft:1},i.createElement(Yt,{text:P,color:t.color||l.userMsgText,theme:p}))))),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},jr(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%"},Ya(G,g))):i.createElement(D,{flexDirection:"column",paddingX:1,marginTop:0,width:"100%"},i.createElement(Yr,{text:G.replace(/ \|\n\n/g,` |
40
+ `),columns:g,theme:p}),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},jr(t.workedDuration))),i.createElement(se,{color:l.textMuted},"]")):null))}),Kr=i.memo(({block:t,columns:f=80,showFullThinking:g,aiProvider:S,version:T,theme:p="Dark"})=>{let l=ct(p),{msg:w,type:b,text:M,isStreamingMsg:F,workedDuration:O}=t;if((b==="think-header"||b==="think-line"||b==="think-footer-padding")&&!Dl())return null;if(b==="chunk")return i.createElement(D,{flexDirection:"column",width:"100%"},t.blocks.map(E=>i.createElement(Kr,{key:E.key,block:E,columns:f,showFullThinking:g,aiProvider:S,version:T,theme:p})));if(b==="full-message")return i.createElement(kl,{msg:w,showFullThinking:g,columns:f,aiProvider:S,version:T,theme:p});if(b==="think-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},(()=>{let E=t.duration||w?.duration||O;return F&&!E?i.createElement(se,{bold:!0,color:l.text},"\u2727 Thinking..."):i.createElement(se,{bold:!0,color:l.text},"\u2726 Thought",E?i.createElement(se,{color:l.textMuted}," for ",i.createElement(se,{bold:!0,color:l.text},jr(E)),"..."):"s...")})(),g&&i.createElement(D,{flexDirection:"row",width:"100%"},i.createElement(se,{color:l.textMuted},"\u2502 ")));if(b==="think-line"){if(!g)return null;if(!M||M.trim()==="")return i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 "));let E=El(M,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(Yt,{text:E,color:l.textMuted,italic:!0,theme:p})))}if(b==="think-footer-padding")return g?i.createElement(D,{flexDirection:"row",width:"100%",paddingX:1},i.createElement(se,{color:l.textMuted},"\u2502 ")):null;if(b==="agent-line"){if(!M||M.trim()==="")return i.createElement(D,{height:1});let E=El(M,F,t.isActiveBlock)?.replaceAll(" "," ")||"",v=E.trim();if(v==="---"||v==="***"||v==="___")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 G=v.match(Qa);if(G){let j=G[1].length,K=G[2],he=["yellow",l.secondary||"magenta",l.info||"cyan","green","blue",l.text][j-1]||l.text;return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%",marginTop:0,marginBottom:0},i.createElement(se,{bold:!0,color:he,underline:!0},i.createElement(Yt,{text:K,color:he,theme:p})))}if(v.startsWith(">")){let j=v.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(Yt,{text:j,color:l.textMuted,italic:!0,theme:p})))}let P=/^[\*\-\+]\s/.test(v),k=/^\d+\.\s/.test(v);if(P||k){let j=P?" \u2022 ":v.match(/^\d+\.\s/)[0],K=v.replace(/^[\*\-\+\d+\.]+\s*/,"");return i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%"},i.createElement(se,{color:l.info||l.textMuted},j),i.createElement(D,{flexGrow:1},i.createElement(Yt,{text:K,color:l.text,theme:p})))}return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(Yt,{text:E,color:l.text,theme:p}))}if(b==="table-header"||b==="table-row"){let E=b==="table-header",v=l.codeText||l.secondary||l.info||"cyan",G=t.colHeaders||[],P=E?G:t.cells||[],k=Math.max(1,t.colCount||G.length||P.length||1),j=Array.from({length:k},(pe,fe)=>P[fe]||""),K=Math.max(20,(f||80)-8),de=k>=4,he=/^(#|no\.?|num\.?|status|state|type|ok|done|✔|✘|active)$/i,oe=[],Q=0,ce=0;for(let pe=0;pe<k;pe++){let fe=(G[pe]||"").trim();if(de&&(he.test(fe)||fe==="#")){let ge=Math.max(fe.length+4,8);oe.push(ge),Q+=ge}else oe.push(null),ce++}let Se=Math.max(ce*12,K-Q),Pe=ce>0?Math.max(10,Math.floor(Se/ce)):10;for(let pe=0;pe<k;pe++)oe[pe]===null&&(oe[pe]=Pe);let Ze=oe.reduce((pe,fe)=>pe+fe,0);return E?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:Ze},G.map((pe,fe)=>{let ge=oe[fe]||6;return i.createElement(D,{key:fe,width:ge,paddingRight:1,flexDirection:"column"},i.createElement(Yt,{text:St(pe,Math.max(2,ge-1)),color:v,theme:p}))}))):i.createElement(D,{flexDirection:"row",paddingX:1,width:"100%",marginBottom:1},j.map((pe,fe)=>{let ge=oe[fe]||6;return i.createElement(D,{key:fe,width:ge,paddingRight:1,flexDirection:"column"},i.createElement(Yt,{text:St(pe,Math.max(2,ge-1)),color:l.text,theme:p}))}))}if(b==="table-close")return i.createElement(D,{height:0});if(b==="table")return i.createElement(D,{flexDirection:"column",paddingX:1,width:"100%"},i.createElement(Il,{buffer:M.split(`
41
+ `),terminalWidth:f,theme:p}));if(b==="diff-line"){let{isFirstLine:E,isLastLine:v}=t,G=(P=!1)=>i.createElement(D,{backgroundColor:l.codeBg,paddingX:1,width:f,marginBottom:P?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"},E&&G(!1),i.createElement(Al,{line:M,pairContent:t.pairContent,parentText:void 0,columns:f,theme:p}),v&&G(!0))}if(b==="code-fence-open"){let E={paddingLeft:2,width:"100%"};return i.createElement(D,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},i.createElement(D,{flexDirection:"row",...E},i.createElement(se,null," ")),i.createElement(D,{flexDirection:"row",...E},i.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",(M||"TEXT").toUpperCase())))}if(b==="code-line"){let{lineNum:E,lang:v}=t,G=f-12,P=(M||"").replaceAll(" "," "),j=St(P,Math.max(10,G)).split(`
42
+ `);return i.createElement(D,{flexDirection:"column",width:"100%"},j.map((K,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(E).padStart(4," ")+" ":" ")),i.createElement(D,{flexGrow:1},Tt(K,v,l.text)))))}if(b==="code-fence-close")return i.createElement(D,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},i.createElement(se,null," "));if(b==="write-header")return i.createElement(D,{flexDirection:"column",paddingX:1,width:f},i.createElement(_n,{text:M,columns:f,theme:p}));if(b==="write-line"){let{gutterWidth:E,lineNum:v,isFirstLine:G,isLastLine:P,extension:k,wrappedLines:j}=t,K=(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:E+2,flexShrink:0},i.createElement(se,null," ".repeat(E+2))),i.createElement(D,{flexGrow:1},i.createElement(se,null," ")));return i.createElement(D,{flexDirection:"column"},G&&K(!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:E+2,flexShrink:0},i.createElement(se,{color:"gray",dimColor:!0},String(v).padStart(E," ")," ")),i.createElement(D,{flexGrow:1,flexDirection:"column"},(j||[M]).map((de,he)=>i.createElement(D,{key:he},Tt((de||"").replaceAll(" "," "),k,l.text))))),P&&K(!0))}return b==="write-footer"?i.createElement(D,{flexDirection:"column",paddingX:1,width:f,marginTop:1,marginBottom:1},i.createElement(_n,{text:M,columns:f,theme:p})):b==="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},jr(O))),i.createElement(se,{color:l.textMuted},"]")):null}),du=i.memo(({messages:t,showFullThinking:f,columns:g=80,aiProvider:S,version:T,theme:p="Dark"})=>i.createElement(D,{flexDirection:"column",width:"100%"},t.map((l,w)=>i.createElement(kl,{key:l.id||w,msg:l,showFullThinking:f,columns:g,aiProvider:S,version:T,theme:p}))));import Bt from"react";import{Box as Zo,Text as Mo}from"ink";import{useState as fr,useEffect as gr,useRef as qr}from"react";var hr=null;function Ll(){hr&&hr()}var Nd=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 S=f[g],T=f[g+1];if(t>=S.t&&t<=T.t){let p=(t-S.t)/(T.t-S.t);p=p*p*(3-2*p);let l=Math.round(S.r+(T.r-S.r)*p),w=Math.round(S.g+(T.g-S.g)*p),b=Math.round(S.b+(T.b-S.b)*p);return`#${((1<<24)+(l<<16)+(w<<8)+b).toString(16).slice(1)}`}}return"#ff0000"},Fd=Bt.memo(({mode:t,thinkingLevel:f,tokens:g="0.0k",tokensTotal:S="0.0k",cachedTokens:T=0,promptTokens:p=0,chatId:l="NEW-SESSION",isMemoryEnabled:w=!0,apiTier:b="Free",aiProvider:M="Google",activeModel:F="",isProcessing:O=!1,lastChunkTime:E=0,theme:v="Dark",wps:G=0,showTPMEstimate:P=!1})=>{let k=ct(v),j="",[K,de]=fr(0),[he,oe]=fr(0),[Q,ce]=fr("MB"),[Se,Pe]=fr("green"),[Ze,pe]=fr(0),fe=qr([]),ge=qr(370),_e=qr([]),et=qr(E);gr(()=>{et.current=E},[E]),gr(()=>{if(!O){_e.current=[];return}if(G>0){let q=_e.current;q.push(G),q.length>3&&q.shift()}},[O,G,E]),gr(()=>{if(!O){pe(0);return}let q=setInterval(()=>{let _=et.current,ne=_>0?Date.now()-_:0;if(_>0&&ne>=1e3)_e.current=[],pe(0);else if(_>0&&ne>500){_e.current.length>0&&_e.current.shift();let ue=_e.current;if(ue.length>0){let Be=ue.reduce((ke,Ae)=>ke+Ae,0);pe(Math.round(Be/ue.length))}else pe(0)}else{let ue=_e.current;if(ue.length>0){let Be=ue.reduce((ke,Ae)=>ke+Ae,0);pe(Math.round(Be/ue.length))}else G>0&&pe(Math.round(G))}},750);return()=>clearInterval(q)},[O]),gr(()=>{if(!O){fe.current=[];return}if(E>0){let ne=fe.current;(ne.length===0||ne[ne.length-1]!==E)&&(ne.push(E),ne.length>10&&ne.shift())}let q=()=>{if(!E){Pe("#00a564");return}let ne=fe.current,ue=0;if(ne.length>1){let Me=0;for(let Ce=1;Ce<ne.length;Ce++)Me+=ne[Ce]-ne[Ce-1];ue=Me/(ne.length-1)}let Be=Date.now()-E,Ae=Be>=2500,Ge=!Ae&&ue>0?Math.min(Be,ue*3):Be,st=Math.max(ue,Ge),at=Ae?.4:.2;ge.current=ge.current*(1-at)+st*at,Pe(Nd(ge.current))};q();let _=setInterval(q,100);return()=>clearInterval(_)},[O,E]);let We=()=>{let q=process.memoryUsage(),_=q.heapTotal/(1024*1024)>=1024,ne=_?"GB":"MB",ue=(Be,ke)=>{let Ae=Be/(1048576*(ke?1024:1));return ke?parseFloat(Ae.toFixed(2)):Math.round(Ae)};ce(ne),oe(ue(q.heapTotal,_)),de(ue(q.heapUsed,_))};return gr(()=>{hr=We,We();let q=setInterval(()=>{We()},6e4);return()=>{clearInterval(q),hr===We&&(hr=null)}},[]),Bt.createElement(Zo,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},Bt.createElement(Zo,null,Bt.createElement(Zo,{marginRight:1},Bt.createElement(Mo,{color:k.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),Bt.createElement(Mo,{color:k.textMuted,dimColor:!0},"\u2503 "),Bt.createElement(Zo,null,Bt.createElement(Mo,{color:k.text,italic:!0},tl(process.cwd(),35)))),Bt.createElement(Zo,null,O&&!P?Bt.createElement(Zo,null,Bt.createElement(Mo,{color:Se},"\u25CF ")):null,O&&P&&Bt.createElement(Bt.Fragment,null,Bt.createElement(Mo,{color:k.textMuted},"~",Ze," tok/s"),Bt.createElement(Mo,{color:k.textMuted,dimColor:!0}," \u2503")),g>0&&Bt.createElement(Bt.Fragment,null,Bt.createElement(Zo,{marginX:1},Bt.createElement(Mo,{color:k.text},Et(S)," tok",(()=>{let q=typeof p=="number"?p:0,_=typeof T=="number"?T:0,ne=q>0?_/q*100:0;return ne<1?null:Bt.createElement(Mo,{color:k.success||"green",dimColor:!0}," [",ne.toFixed(0),"% cached]")})())),Bt.createElement(Mo,{color:k.textMuted,dimColor:!0},"\u2503")),Bt.createElement(Zo,{marginLeft:1},Bt.createElement(Mo,{color:k.textMuted,bold:!0},K," ",Q))))}),Ol=Fd;import mt,{useState as Qr,useMemo as $d,useEffect as Pl}from"react";import{Box as jt,Text as Kt,useInput as Ud}from"ink";import _d from"ink-select-input";var Hd=({label:t,isSelected:f,theme:g="Dark"})=>{let S=ct(g),T=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return mt.createElement(jt,{marginTop:T?1:0,backgroundColor:f?S.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(Kt,{color:f?S.text:S.textMuted,bold:f},f?"\u276F ":" ",t))},Xd=8;function vt({title:t,subtitle:f,items:g=[],onSelect:S,theme:T="Dark",searchable:p=!1,maxVisible:l=Xd}){let w=ct(T),[b,M]=Qr(""),[F,O]=Qr(0),[E,v]=Qr("list"),G=$d(()=>{if(!p||!b.trim())return g;let he=b.toLowerCase().trim();return g.filter(oe=>oe.label&&oe.label.toLowerCase().includes(he))},[g,b,p]);Pl(()=>{O(0)},[b]);let[P,k]=Qr(0);Pl(()=>{k(he=>G.length<=l?0:F<he?F:F>=he+l?F-l+1:he)},[F,G.length,l]),Ud((he,oe)=>{if(p){if(oe.upArrow){v("list"),O(Q=>G.length===0?0:Q>0?Q-1:G.length-1);return}if(oe.downArrow){v("list"),O(Q=>G.length===0?0:Q<G.length-1?Q+1:0);return}if(oe.return){G.length>0&&G[F]&&S(G[F]);return}if(oe.escape){if(b)M(""),v("list"),O(0);else{let Q=g.find(ce=>ce.value==="Back"||ce.label==="Back"||ce.value==="Cancel"||ce.label==="Cancel");Q&&S(Q)}return}if(oe.backspace||oe.delete){v("search"),M(Q=>Q.slice(0,-1));return}if(he&&!oe.ctrl&&!oe.meta&&!oe.tab){v("search"),M(Q=>Q+he);return}}},{isActive:p});let j=G.length,K=P;j<=l?K=0:K=Math.max(0,Math.min(P,j-l));let de=G.slice(K,K+l);return p?mt.createElement(jt,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},mt.createElement(jt,{paddingX:1,paddingY:0,marginBottom:0,flexDirection:"row",justifyContent:"space-between"},t?mt.createElement(Kt,{color:w.text,bold:!0},typeof t=="string"?t.toUpperCase():t):mt.createElement(jt,null),j>0&&mt.createElement(Kt,{color:w.textMuted},F+1,"/",j)),f&&mt.createElement(jt,{paddingX:1,marginBottom:0},mt.createElement(Kt,{color:w.textMuted,italic:!0}," ",f)),mt.createElement(jt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},mt.createElement(Kt,{color:E==="search"?w.primary||"cyan":w.textMuted,bold:E==="search"},"\u{1F50D} Search:"),mt.createElement(Kt,{color:w.text,bold:!0}," ",b),E==="search"?mt.createElement(Kt,{color:w.primary||"cyan"},"\u2588"):b?null:mt.createElement(Kt,{color:w.textMuted,italic:!0}," (type to search...)")),mt.createElement(jt,{flexDirection:"column",width:"100%"},G.length===0?mt.createElement(jt,{paddingX:1,marginY:0},mt.createElement(Kt,{color:w.warning||"yellow",italic:!0}," No matching items found")):de.map((he,oe)=>{let Q=K+oe,ce=Q===F,Se=he.label==="Cancel"||he.label==="Back"||he.label.toLowerCase().includes("exit")||he.label.toLowerCase().includes("back");return mt.createElement(jt,{key:he.value??he.label??Q,marginTop:Se?1:0,backgroundColor:ce?w.highlightBg:void 0,paddingX:1,width:"100%"},mt.createElement(Kt,{color:ce?w.text:w.textMuted,bold:ce},ce?"\u276F ":" ",he.label))})),mt.createElement(jt,{paddingX:1,marginTop:1},mt.createElement(Kt,{color:w.textMuted,italic:!0},E==="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(jt,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&mt.createElement(jt,{paddingX:1,paddingY:0,marginBottom:f?0:1,flexDirection:"row",justifyContent:"space-between"},mt.createElement(Kt,{color:w.text,bold:!0},typeof t=="string"?t.toUpperCase():t),g.length>l&&mt.createElement(Kt,{color:w.textMuted,italic:!0},g.length," options")),f&&mt.createElement(jt,{paddingX:1,marginBottom:1},mt.createElement(Kt,{color:w.textMuted,italic:!0}," ",f)),mt.createElement(jt,{flexDirection:"column",width:"100%"},mt.createElement(_d,{items:g,onSelect:S,limit:l,itemComponent:he=>mt.createElement(Hd,{...he,theme:T}),indicatorComponent:()=>null})),mt.createElement(jt,{paddingX:1,marginTop:1},mt.createElement(Kt,{color:w.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import A,{useState as $t,useEffect as pr}from"react";import{Box as Ue,Text as ee,useInput as Gd}from"ink";import Wd from"ink-text-input";import Vd from"v8";import Nl from"os";var So=[...Object.keys(nl),"Mystery"],Eo=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Memory",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"}],Fl=t=>{let f=t.autoApproveCommands||"",g=t.autoDisallowCommands||"",S=t.alwaysAskCommands||"",T=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"&&S==="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,p=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"&&S==="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===""&&S==="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 T?"Strict":p?"Balanced":l?"Autonomous":t.sandboxPreset||"Custom"},zr=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function Jr({systemSettings:t,setSystemSettings:f,apiTier:g,setActiveView:S,setInputConfig:T,saveSettings:p,quotas:l,setMessages:w,aiProvider:b,autoCompletion:M,setAutoCompletion:F,initialSelectingTheme:O=!1,onCloseTheme:E=null,setProviderReturnView:v=null}){let G=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",P=So.indexOf(G),[k,j]=$t("categories"),[K,de]=$t(0),[he,oe]=$t(0),[Q,ce]=$t(null),[Se,Pe]=$t(""),[Ze,pe]=$t(O),[fe,ge]=$t(P>=0?P:0),[_e,et]=$t(t.theme||"Dark"),[We,q]=$t(!1),[_,ne]=$t("subAgent"),[ue,Be]=$t(0),[ke,Ae]=$t(0),[Ge,st]=$t(""),[at,Me]=$t("list"),[Ce,Oe]=$t({});pr(()=>{(async()=>{let y=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],L={};for(let Ee of y)try{await zo(Ee)&&(L[Ee]=!0)}catch{}Oe(L)})()},[]);let le=A.useMemo(()=>{let xe=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],L=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",Ee=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:L,value:"ENV",isHeader:!1}],Ve=l?.providerTiers?.[b]||g||"Free",dt=Qo(b,Ve)||[];dt.length>0&&(Ee.push({label:`\u2500\u2500 ${b.toUpperCase()}${Ve!=="Free"?` (${Ve})`:""} \u2500\u2500`,isHeader:!0}),dt.forEach(gt=>{let ze=typeof gt=="string"?gt:gt.cmd||gt.name||gt.id||String(gt);ze&&!ze.trim().startsWith("---")&&!ze.startsWith(`
43
+ ---`)&&Ee.push({label:ze,value:ze,isHeader:!1,provider:b})}));for(let gt of xe)if(gt!==b&&Ce[gt]){let ze=l?.providerTiers?.[gt]||"Free",oo=Qo(gt,ze)||[];oo.length>0&&(Ee.push({label:`\u2500\u2500 ${gt.toUpperCase()}${ze!=="Free"?` (${ze})`:""} \u2500\u2500`,isHeader:!0}),oo.forEach(tt=>{let _t=typeof tt=="string"?tt:tt.cmd||tt.name||tt.id||String(tt);_t&&!_t.trim().startsWith("---")&&!_t.startsWith(`
44
+ ---`)&&Ee.push({label:_t,value:_t,isHeader:!1,provider:gt})}))}return Ee},[b,g,l,Ce]),we=A.useMemo(()=>{if(!Ge.trim())return le;let xe=Ge.trim().toLowerCase(),y=[],L=null;for(let Ee of le)Ee.isHeader?L=Ee:(Ee.label.toLowerCase().includes(xe)||Ee.value&&Ee.value.toLowerCase().includes(xe))&&(L&&!y.includes(L)&&y.push(L),y.push(Ee));return y},[le,Ge]);pr(()=>{if(We){let xe=we.findIndex(y=>!y.isHeader);Be(xe>=0?xe:0),Ae(0)}},[Ge]),pr(()=>{if(We){if(we.length===0){Be(0),Ae(0);return}if(ue>=we.length||we[ue]?.isHeader){let xe=we.findIndex(y=>!y.isHeader);Be(xe>=0?xe:0)}}},[we,We]);let[Ye,wt]=$t(0),[$,Go]=$t(0),[Yn,wr]=$t("MB"),[Wo,rs]=$t(!1);pr(()=>{let xe=!1;return import("./exec_command-WB2PILWK.js").then(y=>{xe||rs(!!y.isPtyAvailable)}).catch(()=>{}),()=>{xe=!0}},[]),pr(()=>{let xe=Vd.getHeapStatistics().heap_size_limit,y=xe>=1024*1024*1024,L=y?"GB":"MB",Ee=y?1024*1024*1024:1024*1024;Go(parseFloat((xe/Ee).toFixed(2))),wr(L);let Ve=()=>{let oo=process.memoryUsage().rss/Ee,tt=y?parseFloat(oo.toFixed(2)):Math.round(oo);wt(tt)};Ve();let dt=setInterval(()=>{Ve()},3e4);return()=>clearInterval(dt)},[]);let rn=xe=>{switch(xe){case"providers":{let L=[{label:"Current Provider",value:"aiProvider",status:b==="c_openai"?"Custom (OpenAI)":b}];return b==="Ollama"&&L.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(b==="c_openai"||b==="Custom (OpenAI)")&&(L.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),L.push({label:"API Key (if needed)",value:"customOpenAIKey",status:Ce.c_openai?"Set":"None"})),L}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:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Fl(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:zr(t.alwaysAskCommands),section:"Sandbox"},{label:"Always Ask Files/Paths",value:"alwaysAskFiles",status:zr(t.alwaysAskFiles||".env, .env.*, *.env"),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:zr(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:zr(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"}];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:M?.enabled?"ON":"OFF"},{label:"Auto-Completion Model",value:"autoCompletionModel",status:M?.model&&M.model!=="Default"?M.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:"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"}];default:return[]}},pn=Eo[K].id,qe=rn(pn);Gd((xe,y)=>{if(We){if(y.tab){Me(L=>L==="search"?"list":"search");return}if(at==="search"){y.escape?q(!1):y.downArrow||y.return?Me("list"):y.backspace||y.delete?st(L=>L.slice(0,-1)):xe&&!y.ctrl&&!y.meta&&xe.length===1&&st(L=>L+xe);return}if(y.upArrow)Be(L=>{if(we.length===0)return 0;let Ee=(L-1+we.length)%we.length,Ve=0;for(;we[Ee]?.isHeader&&Ve<we.length;)Ee=(Ee-1+we.length)%we.length,Ve++;return Ee});else if(y.downArrow)Be(L=>{if(we.length===0)return 0;let Ee=(L+1)%we.length,Ve=0;for(;we[Ee]?.isHeader&&Ve<we.length;)Ee=(Ee+1)%we.length,Ve++;return Ee});else if(y.return){let L=we[ue];if(L&&!L.isHeader){let Ee=L.value==="Default";_==="autoCompletion"?F(Ve=>{let dt=Ee?"":L.provider||"",gt={...Ve,model:L.value,provider:dt,baseUrl:Ee?"":Qi[dt]||""};return p({autoCompletion:gt,apiTier:g,quotas:l}),gt}):f(Ve=>{let dt={...Ve,CustomSubAgent:!Ee,SubAgentModel:L.value,SubAgentProvider:Ee?"":L.provider||""};return p({systemSettings:dt,apiTier:g,quotas:l}),dt}),q(!1)}}else y.escape?q(!1):xe&&!y.ctrl&&!y.meta&&xe.length===1&&(st(L=>L+xe),Me("search"));return}if(Ze){if(y.upArrow){let L=(fe-1+So.length)%So.length;ge(L)}else if(y.downArrow){let L=(fe+1)%So.length;ge(L)}else if(y.return){let L=So[fe];f(Ee=>{let Ve={...Ee,theme:L};return p({systemSettings:Ve,apiTier:g,quotas:l}),Ve}),E?E():pe(!1)}else y.escape&&(E?E():pe(!1));return}if(Q){y.escape&&ce(null);return}if(k==="categories")y.upArrow?de(L=>(L-1+Eo.length)%Eo.length):y.downArrow?de(L=>(L+1)%Eo.length):y.return||y.rightArrow?Eo[K].id==="exit"?S("chat"):(j("items"),oe(0)):y.escape&&S("chat");else if(k==="items"){if(y.upArrow)oe(L=>(L-1+qe.length)%qe.length);else if(y.downArrow)oe(L=>(L+1)%qe.length);else if(y.leftArrow||y.escape)j("categories");else if(y.return){let L=qe[he];qt(L)}}});let qt=xe=>{if(xe.value==="memory")f(y=>({...y,memory:!y.memory}));else if(xe.value==="sandboxPreset"){let y=Fl(t),L=["Autonomous","Balanced","Strict"],Ve=(L.indexOf(y)+1)%L.length,dt=L[Ve];f(gt=>{let ze={...gt,sandboxPreset:dt};return dt==="Strict"?(ze.autoExec=!1,ze.allowExternalAccess=!1,ze.networkAccess=!1,ze.autoApproveCommands="",ze.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",ze.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",ze.autoApproveGit=!1):dt==="Balanced"?(ze.autoExec=!0,ze.allowExternalAccess=!1,ze.networkAccess=!0,ze.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",ze.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",ze.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",ze.autoApproveGit=!1):dt==="Autonomous"&&(ze.autoExec=!0,ze.allowExternalAccess=!0,ze.networkAccess=!0,ze.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",ze.autoDisallowCommands="",ze.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",ze.autoApproveGit=!0),ze})}else if(xe.value==="autoExec")t.autoExec?f(y=>({...y,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?S("doubleDanger"):S("autoExecDanger");else if(xe.value==="externalAccess")t.allowExternalAccess?f(y=>({...y,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?S("doubleDanger"):S("externalDanger");else if(xe.value==="networkAccess")f(y=>({...y,networkAccess:y.networkAccess===!1,sandboxPreset:"Custom"}));else if(xe.value==="alwaysAsk")ce("alwaysAskCommands"),Pe(t.alwaysAskCommands||"");else if(xe.value==="alwaysAskFiles")ce("alwaysAskFiles"),Pe(t.alwaysAskFiles||".env, .env.*, *.env");else if(xe.value==="autoApprove")ce("autoApproveCommands"),Pe(t.autoApproveCommands||"");else if(xe.value==="autoApproveGit")f(y=>({...y,autoApproveGit:!y.autoApproveGit,sandboxPreset:"Custom"}));else if(xe.value==="customOpenAIBaseUrl")ce("customOpenAIBaseUrl"),Pe(t.customOpenAIBaseUrl||"");else if(xe.value==="customOpenAIKey")ce("customOpenAIKey"),Pe("");else if(xe.value==="ollamaEndpoint")f(y=>{let L=y.ollamaEndpoint==="Local"?"Cloud":"Local",Ee={...y,ollamaEndpoint:L};return p({systemSettings:Ee,apiTier:g,quotas:l}),Ee});else if(xe.value==="apiTier")S("apiTier");else if(xe.value==="aiProvider")v&&v("settings"),S("selectProvider");else if(xe.value==="advanceRollback")t.advanceRollback?f(y=>{let L={...y,advanceRollback:!1};return p({systemSettings:L,apiTier:g,quotas:l}),L}):S("advanceRollbackDanger");else if(xe.value==="autoDelete"){let y=["1d","7d","30d"],Ee=(y.indexOf(t.autoDeleteHistory||"30d")+1)%y.length;f(Ve=>({...Ve,autoDeleteHistory:y[Ee]}))}else if(xe.value==="autoUpdate")f(y=>({...y,autoUpdate:!y.autoUpdate}));else if(xe.value==="externalData")if(!t.useExternalData)T({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||""}),S("input");else{let y={...t,useExternalData:!1};f(y),p({systemSettings:y,apiTier:g,quotas:l}),w(L=>[...L,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),S("chat")}else if(xe.value==="updateManager")S("updateManager");else if(xe.value==="parserDownload")S("parserDownload");else if(xe.value==="indentationTree")f(y=>{let L={...y,indentationTree:y.indentationTree===!1};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="compressToolResults")f(y=>{let L={...y,compressToolResults:!y.compressToolResults};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="autoTruncateResults")f(y=>{let L={...y,autoTruncateResults:!y.autoTruncateResults};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="imageHistoryCU"){let y=["Low","Standard","Extended","Max"],Ee=(y.indexOf(t.imageHistoryCU||"Standard")+1)%y.length;f(Ve=>{let dt={...Ve,imageHistoryCU:y[Ee]};return p({systemSettings:dt,apiTier:g,quotas:l}),dt})}else if(xe.value==="contextLength"){let y=["16k","32k","64k","128k","256k","512k","1M"],Ee=(y.indexOf(t.contextLength||"256k")+1)%y.length;f(Ve=>{let dt={...Ve,contextLength:y[Ee]};return p({systemSettings:dt,apiTier:g,quotas:l}),dt})}else if(xe.value==="keepReasoningContext")f(y=>{let L={...y,keepReasoningContext:!y.keepReasoningContext};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="autoExcludeMetadata")f(y=>{let L={...y,autoExcludeMetadata:!y.autoExcludeMetadata};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="disableTodo")f(y=>{let L={...y,disableTodo:!y.disableTodo};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="subAgents")f(y=>{let L={...y,subAgents:y.subAgents===!1};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="subAgentModel"){let y=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",L=we.findIndex(Ee=>Ee.value===y);Be(L>=0?L:0),ne("subAgent"),q(!0)}else if(xe.value==="autoCompletionEnabled")F(y=>{let L={...y,enabled:!y.enabled};return p({autoCompletion:L,apiTier:g,quotas:l}),L});else if(xe.value==="clipboardContext")f(y=>{let L={...y,clipboardContext:!y.clipboardContext};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="autoCompletionModel"){let y=M?.model||"Default",L=we.findIndex(Ee=>Ee.value===y);Be(L>=0?L:0),ne("autoCompletion"),q(!0)}else if(xe.value==="preserveThinking")f(y=>{let L={...y,preserveThinking:y.preserveThinking===!1};return vl(L.preserveThinking),p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="loadingPhrases")f(y=>{let L={...y,loadingPhrases:y.loadingPhrases===!1};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="progressiveRendering")f(y=>{let L={...y,progressiveRendering:!y.progressiveRendering};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="showTPMEstimate")f(y=>{let L={...y,showTPMEstimate:!y.showTPMEstimate};return p({systemSettings:L,apiTier:g,quotas:l}),L});else if(xe.value==="theme"){let y=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",L=So.indexOf(y);ge(L>=0?L:0),et(t.theme||"Dark"),pe(!0)}},ve=ct(t.theme);if(We){let xe=_==="autoCompletion"?M?.model||"Default":t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",y=15,L=ke;ue<L?L=ue:ue>=L+y&&(L=ue-y+1),L=Math.max(0,Math.min(L,Math.max(0,we.length-y))),L!==ke&&Ae(L);let Ee=we.slice(L,L+y);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:ve.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(ee,{color:ve.text,bold:!0,underline:!0},_==="autoCompletion"?"Select Auto-Completion Model:":"Select Sub-Agent Model:"),we.length>0&&A.createElement(ee,{color:"gray"},ue+1,"/",we.length)),A.createElement(Ue,{borderStyle:"single",borderColor:at==="search"?ve.primary||"cyan":"gray",paddingX:1,marginBottom:1},A.createElement(ee,{color:at==="search"?ve.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),A.createElement(ee,{color:ve.text},Ge),at==="search"&&A.createElement(ee,{color:ve.primary||"cyan"},"\u2588"),!Ge&&at!=="search"&&A.createElement(ee,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),A.createElement(Ue,{flexDirection:"column",flexGrow:1,height:y},Ee.length>0?Ee.map((Ve,dt)=>{let gt=L+dt;if(Ve.isHeader)return A.createElement(Ue,{key:`hdr-${gt}`,paddingX:1},A.createElement(ee,{color:"gray",bold:!0,underline:!0},Ve.label));let ze=ue===gt&&at==="list",oo=xe===Ve.value;return A.createElement(Ue,{key:`item-${Ve.value}-${gt}`,paddingX:1,backgroundColor:ze?ve.highlightBg:void 0},A.createElement(ee,{color:ze?ve.text:ve.textDim,bold:ze},ze?"\u276F ":" ",Ve.label,oo?A.createElement(ee,{color:ve.primary||"cyan",italic:!0}," (active)"):""))}):A.createElement(Ue,{paddingX:1},A.createElement(ee,{color:"gray",italic:!0},'No models matching "',Ge,'"'))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(ee,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(ee,{color:at==="search"?ve.primary||"cyan":"gray",bold:!0},"[",at.toUpperCase()," MODE]")))}if(Ze){let xe=So[fe],y=ct(xe);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:y.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1},A.createElement(ee,{color:y.text,bold:!0},"Choose your color scheme:")),A.createElement(Ue,{flexDirection:"row",width:"100%",flexGrow:1},A.createElement(Ue,{flexDirection:"column",width:"30%",paddingRight:1},So.map((L,Ee)=>{let Ve=fe===Ee,dt=(t.theme||"Dark")===L,gt=L==="Forest Sprite"||L==="Spookfest";return A.createElement(Ue,{key:L,paddingX:0},A.createElement(ee,{color:Ve?y.text:y.textDim,bold:Ve},Ve?"> ":" ",L,gt&&A.createElement(ee,{color:Ve?y.success||"#52b788":"green",bold:!0}," \u2605"),dt?A.createElement(ee,{color:y.primary||"cyan",italic:!0}," (saved)"):""))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:y.borderMuted,paddingX:2,paddingY:1,backgroundColor:y.cardBg},A.createElement(Ue,{marginBottom:1},A.createElement(ee,{color:y.secondary||"cyan",bold:!0},"> ","you: "),A.createElement(ee,{color:y.text},"add a greeting function")),A.createElement(Ue,{marginBottom:1},A.createElement(ee,{color:y.success||"green"}," Here's the change:")),A.createElement(Ue,{flexDirection:"column",marginLeft:2,marginBottom:1},A.createElement(ee,null,A.createElement(ee,{color:y.textDim},"3 "),Tt(' import "fmt"',".go",void 0)),A.createElement(ee,{color:y.textDim},"4"),A.createElement(Ue,{backgroundColor:y.diffRemovalBg},A.createElement(ee,null,A.createElement(ee,{color:y.diffRemovalNum||y.diffRemovalText},"5 "),A.createElement(ee,{color:y.diffRemovalPrefix||y.diffRemovalText},"- "),Tt("func ",".go",void 0),Tt("main()",".go",void 0,y.diffRemovalHighlightBg),Tt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:y.diffAdditionBg},A.createElement(ee,null,A.createElement(ee,{color:y.diffAdditionNum||y.diffAdditionText},"5 "),A.createElement(ee,{color:y.diffAdditionPrefix||y.diffAdditionText},"+ "),Tt("func ",".go",void 0),Tt("greet(name string)",".go",void 0,y.diffAdditionHighlightBg),Tt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:y.diffAdditionBg},A.createElement(ee,null,A.createElement(ee,{color:y.diffAdditionNum||y.diffAdditionText},"6 "),A.createElement(ee,{color:y.diffAdditionPrefix||y.diffAdditionText},"+ "),A.createElement(ee,null," "),Tt('fmt.Printf("Hello, %s!\\n", name)',".go",void 0,y.diffAdditionHighlightBg))),A.createElement(ee,null,"7 }")),A.createElement(Ue,{flexDirection:"column",marginTop:1,marginBottom:1},A.createElement(ee,{color:y.textDim},"\u25BE Thought Process"),A.createElement(ee,{color:y.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),A.createElement(Ue,{flexDirection:"column"},A.createElement(ee,null,A.createElement(ee,{color:y.warning||"yellow"},"\u2699 tool: "),A.createElement(ee,{color:y.text},"write_file main.go")),A.createElement(ee,null,A.createElement(ee,{color:y.accent||"magenta"},"\u29BF task: "),A.createElement(ee,{color:y.text},"Implementing greeting")),A.createElement(ee,null,A.createElement(ee,{color:y.danger||"red"},"X error: "),A.createElement(ee,{color:y.text},"compilation failed")),A.createElement(ee,null,A.createElement(ee,{color:y.warning||"yellow"},"\u26A0 warning: "),A.createElement(ee,{color:y.text},"deprecation warning")),A.createElement(ee,null,A.createElement(ee,{color:y.info||"blue"},"\u2192 link: "),A.createElement(ee,{color:y.info||"blue",underline:!0},"file:///path/to/main.go")),A.createElement(ee,null,A.createElement(ee,{color:y.accent||"magenta"},"\u2605 accent: "),A.createElement(ee,{color:y.text},"highlighted text")),A.createElement(ee,{color:y.textDim},"\xB7 dim: press Enter to continue")))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(ee,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(ee,{color:"gray"},"Previewing: ",So[fe],So[fe]==="Forest Sprite"?" \u2605":"")))}return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:ve.border,padding:0,width:"100%",minHeight:32},A.createElement(Ue,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:ve.borderMuted,width:"100%"},A.createElement(ee,{color:ve.text,bold:!0},"SYSTEM CONFIGURATION")),A.createElement(Ue,{flexDirection:"row",width:"100%",minHeight:26},A.createElement(Ue,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:k==="categories"?ve.border:ve.borderMuted,padding:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(ee,{color:k==="categories"?ve.text:ve.textDim,bold:!0,underline:!0},"CATEGORIES")),Eo.map((xe,y)=>{let L=K===y,Ee=xe.id==="exit";return A.createElement(Ue,{key:xe.id,marginTop:Ee?15:0,backgroundColor:L?k==="categories"?ve.highlightBg:ve.cardBg:void 0,paddingX:1},A.createElement(ee,{color:L&&k==="categories"?ve.text:ve.textDim,bold:L},L?"\u276F ":" ",xe.label))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:k==="items"?ve.border:ve.borderMuted,paddingX:1,marginLeft:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(ee,{color:k==="items"?ve.text:ve.textDim,bold:!0,underline:!0},Eo[K].label.toUpperCase().includes("EXIT")?"Runtime Information":`${Eo[K].label} Settings`)),qe.length>0?(()=>{let xe=null,y=[],L=tt=>(tt||"").split(",").map(_t=>_t.trim().toLowerCase()).filter(Boolean),Ee=L(t.autoApproveCommands),Ve=L(t.autoDisallowCommands),dt=L(t.alwaysAskCommands),gt=[...Ee,...Ve,...dt],ze=new Set(gt),oo=pn==="security"&&gt.length!==ze.size;return qe.forEach((tt,_t)=>{let Xt=k==="items"&&he===_t,ss=tt.label.length,sn=Math.max(2,38-ss),is=".".repeat(sn),yt=Wt=>pn==="security"?(Wt.value==="autoExec"||Wt.value==="externalAccess")&&Wt.status==="ON"?ve.statusOn:ve.statusOff:Wt.status?.startsWith("\u2713")?ve.statusOn:Wt.status?.startsWith("\u26A0")?ve.statusOff:Wt.status==="ON"?ve.statusOn:Wt.status==="OFF"?ve.statusOff:ve.text;tt.section&&tt.section!==xe&&(xe=tt.section,y.push(A.createElement(Ue,{key:`sec-hdr-${tt.section}`,marginTop:y.length>0?1:0,marginBottom:0,paddingX:1},A.createElement(ee,{color:"gray",bold:!0,underline:!0},tt.section.toUpperCase()))));let J=Xt&&Q&&(Q==="alwaysAskCommands"&&tt.value==="alwaysAsk"||Q==="alwaysAskFiles"&&tt.value==="alwaysAskFiles"||Q==="autoApproveCommands"&&tt.value==="autoApprove"||Q==="autoDisallowCommands"&&tt.value==="autoDisallow"||Q==="customOpenAIBaseUrl"&&tt.value==="customOpenAIBaseUrl"||Q==="customOpenAIKey"&&tt.value==="customOpenAIKey"),jn=tt.value==="alwaysAsk"||tt.value==="alwaysAskFiles"||tt.value==="autoApprove"||tt.value==="autoDisallow",ls=tt.value==="parserDownload";y.push(A.createElement(Ue,{key:tt.value,flexDirection:"column"},A.createElement(Ue,{backgroundColor:Xt&&!J?ve.highlightBg:void 0,paddingX:2},A.createElement(ee,{color:Xt?ve.text:ve.textDim,bold:Xt},Xt?"\u276F ":" ",tt.label),!jn&&!ls&&A.createElement(A.Fragment,null,A.createElement(ee,{color:"gray"},is),A.createElement(ee,{color:yt(tt),bold:!0},tt.value==="aiProvider"?tt.status:`[ ${tt.status} ]`))),jn&&!J&&tt.status!=="None"&&A.createElement(Ue,{paddingX:4,marginBottom:1},A.createElement(ee,{color:"gray"},"\u21B3 ",tt.status)),J&&A.createElement(Ue,{flexDirection:"column",marginLeft:4,marginBottom:1},A.createElement(Ue,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},A.createElement(ee,{color:"gray",bold:!0},"> "," "),A.createElement(Wd,{value:Se,onChange:Pe,onSubmit:async Wt=>{if(Q==="customOpenAIBaseUrl"){let ut=Wt.trim().replace(/\/+$/,""),no={...t,customOpenAIBaseUrl:ut};f(no),p({systemSettings:no,apiTier:g,quotas:l})}else if(Q==="customOpenAIKey"){let{saveProviderAPIKey:ut}=await import("./secrets-5TCTEPEV.js");await ut("c_openai",Wt.trim()),Oe(no=>({...no,c_openai:!!Wt.trim()}))}else{let ut={...t,[Q]:Wt.trim(),sandboxPreset:"Custom"};f(ut),p({systemSettings:ut,apiTier:g,quotas:l})}ce(null)}})),A.createElement(ee,{color:"gray",italic:!0}," ",Q==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":Q==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),oo&&y.push(A.createElement(Ue,{key:"conflict-warning",marginTop:1,paddingX:1},A.createElement(ee,{color:ve.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),y})():A.createElement(Ue,{paddingX:1,flexDirection:"column",width:"100%"},pn==="exit"?A.createElement(A.Fragment,null,A.createElement(Ue,{flexDirection:"column",marginBottom:1},A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"OS"," "),A.createElement(ee,{color:"gray"},"..................... "),A.createElement(ee,{color:ve.text},process.env.OS||process.platform||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"Computer Name"," "),A.createElement(ee,{color:"gray"},".......... "),A.createElement(ee,{color:ve.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"Processor Count"," "),A.createElement(ee,{color:"gray"},"........ "),A.createElement(ee,{color:ve.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"Node.js Version"," "),A.createElement(ee,{color:"gray"},"........ "),A.createElement(ee,{color:ve.text},"v",process.versions.node)),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"V8 Version"," "),A.createElement(ee,{color:"gray"},"...... ...... "),A.createElement(ee,{color:ve.text},"v",process.versions.v8)),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"Data Directory"," "),A.createElement(ee,{color:"gray"},"......... "),ho===Co?"":A.createElement(ee,{color:ve.text},ho.replaceAll(Nl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),A.createElement(ee,{color:ve.text},Co.replaceAll(Nl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),A.createElement(Ue,{flexDirection:"row"},A.createElement(ee,{color:ve.textDim},"Viewport"," "),A.createElement(ee,{color:"gray"},"............... "),A.createElement(ee,{color:ve.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),A.createElement(Ue,{flexDirection:"row",marginBottom:0},A.createElement(ee,{color:ve.textDim},"Memory Load"," "),A.createElement(ee,{color:"gray"},"............ "),A.createElement(ee,{color:ve.text},Ye,"/",$," ",Yn))),A.createElement(Ue,{key:"pty-notice",paddingX:0,marginTop:0},A.createElement(ee,{color:Wo?ve.statusOn:ve.warning},Wo?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):A.createElement(ee,{color:"gray",italic:!0},Eo[K].desc)))),A.createElement(Ue,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},A.createElement(ee,{color:"gray",italic:!0},k==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),k==="categories"&&A.createElement(ee,{color:"gray"},Eo[K].desc)))}import io,{useState as Ws,useEffect as Yd}from"react";import{Box as Hn,Text as br}from"ink";import jd from"ink-text-input";function Vs({initialData:t,onSave:f,onCancel:g,theme:S="Dark"}){let T=ct(S),[p,l]=Ws(0),[w,b]=Ws(""),[M,F]=Ws(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),O=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],E=O[p];Yd(()=>{let k=O[p].key;b((M[k]||"").slice(0,O[p].maxLength))},[p,M]);let v=k=>{k.length>E.maxLength?b(k.slice(0,E.maxLength)):b(k)},G=k=>{if(k.trim().toLowerCase()==="/cancel"){g();return}let j=E.key,K={...M,[j]:k.trim().slice(0,E.maxLength)};F(K),b(""),p<O.length-1?l(p+1):f(K)},P=w.length>=E.maxLength;return io.createElement(Hn,{borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},io.createElement(Hn,{paddingX:1,marginBottom:1},io.createElement(br,{color:T.text,bold:!0},"USER PROFILE CONFIGURATION")),io.createElement(Hn,{paddingX:1,flexDirection:"column"},io.createElement(Hn,null,io.createElement(br,{color:T.text,bold:!0},E.label),io.createElement(jd,{value:w,onChange:v,onSubmit:G})),io.createElement(Hn,{marginTop:1,justifyContent:"space-between"},io.createElement(br,{color:T.textMuted,italic:!0},"Step ",p+1," of ",O.length),io.createElement(br,{color:P?T.warning||"yellow":T.textMuted},"[",w.length,"/",E.maxLength,"]"))),io.createElement(Hn,{paddingX:1,marginTop:1},io.createElement(br,{color:T.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import kt,{useState as Ys}from"react";import{Box as lo,Text as Ro,useInput as Kd}from"ink";import qd from"ink-text-input";var Qd=({question:t,options:f,onResolve:g,theme:S="Dark"})=>{let T=ct(S),[p,l]=Ys(!1),[w,b]=Ys(""),[M,F]=Ys(0),O=!1,E=[],v=Array.isArray(f)&&f.length>0,G=t==="Agent has been running for a long time. Do you want to continue execution?";try{G&&v?E=[...f]:E=[...v?f:[],v?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{O=!0}Kd((k,j)=>{if(!p&&((j.leftArrow||j.upArrow)&&F(K=>Math.max(0,K-1)),(j.rightArrow||j.downArrow)&&F(K=>Math.min(E.length-1,K+1)),j.return)){let K=E[M];K?.id==="CUSTOM"?l(!0):g(O?"Selected Nothing":K.label)}});let P=ht(2);return p?kt.createElement(lo,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:T.codeBg,width:"100%"},kt.createElement(lo,{paddingX:1},kt.createElement(Ro,{color:T.text,bold:!0},"SUGGEST SOMETHING")),kt.createElement(lo,{marginTop:1,paddingX:1},kt.createElement(Ro,{italic:!0,color:T.textMuted},"Replying to: ",t)),kt.createElement(lo,{marginTop:1,paddingX:1,flexDirection:"row"},kt.createElement(qd,{value:w,onChange:b,onSubmit:()=>g(w)})),kt.createElement(lo,{marginTop:1,paddingX:1,marginBottom:1},kt.createElement(Ro,{color:T.textMuted,italic:!0},"(Press Enter to send)"))):kt.createElement(lo,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},kt.createElement(lo,{paddingX:1,marginBottom:1},kt.createElement(Ro,{color:"yellow",bold:!0},G?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),kt.createElement(lo,{paddingX:1,marginBottom:1},kt.createElement(Ro,{color:T.text},t)),kt.createElement(lo,{flexDirection:"column",width:"100%"},E.map((k,j)=>{let K=j===M;return kt.createElement(lo,{key:k.id,flexDirection:"column",width:"100%",backgroundColor:K?T.highlightBg:void 0,paddingX:1,marginBottom:j===E.length-1?0:1},kt.createElement(Ro,{color:K?T.text:T.textMuted,bold:K},K?"\u276F ":" ",k.label),k.description&&kt.createElement(lo,{marginLeft:4},kt.createElement(Ro,{color:T.textMuted,italic:!0},k.description)))})),kt.createElement(lo,{paddingX:1,marginTop:1,marginBottom:1},kt.createElement(Ro,{color:T.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},$l=Qd;import pc from"gradient-string";import Ht,{useState as js,useEffect as zd}from"react";import{Box as Bo,Text as en,useInput as Jd}from"ink";function Ks({onSelect:t,onDelete:f,onClose:g,theme:S="Dark"}){let T=ct(S),[p,l]=js({}),[w,b]=js([]),[M,F]=js(0);zd(()=>{(async()=>{let k=await Jo();l(k),b(Object.keys(k).sort((j,K)=>(k[K].updatedAt||0)-(k[j].updatedAt||0)))})()},[]),Jd((P,k)=>{if(k.escape&&g(),k.upArrow&&F(j=>Math.max(0,j-1)),k.downArrow&&F(j=>Math.min(w.length-1,j+1)),k.return&&w[M]&&t(w[M]),P==="x"&&w[M]){let j=w[M];f(j).then(K=>{let de=K||{};l(de);let he=Object.keys(de).sort((oe,Q)=>(de[Q]?.updatedAt||0)-(de[oe]?.updatedAt||0));b(he),F(oe=>Math.max(0,Math.min(he.length-1,oe)))})}});let O=ht(2),E=15,v=0;if(w.length>E){let P=Math.floor(E/2);v=M-P,v<0?v=0:v+E>w.length&&(v=w.length-E)}let G=w.slice(v,v+E);return Ht.createElement(Bo,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Ht.createElement(Bo,{paddingX:1,marginBottom:1},Ht.createElement(en,{color:T.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),w.length===0?Ht.createElement(Bo,{paddingX:2,paddingY:1},Ht.createElement(en,{italic:!0,color:T.textMuted},"No saved chats found.")):Ht.createElement(Bo,{flexDirection:"column",width:"100%"},v>0&&Ht.createElement(Bo,{paddingX:2,marginBottom:1},Ht.createElement(en,{color:T.textMuted},"\u25B2 (+",v," more chats above)")),G.map((P,k)=>{let j=p[P],de=v+k===M,he=Zd(j?.updatedAt);return Ht.createElement(Bo,{key:P,paddingX:1,backgroundColor:de?T.highlightBg:void 0,width:"100%"},Ht.createElement(Bo,{flexGrow:1},Ht.createElement(en,{color:de?T.text:T.textMuted,bold:de},de?"\u276F ":" ",(()=>{let oe=Q=>(Q||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return j?.name&&!j.name.startsWith("Session")?oe(j.name):j?.prompt?oe(j.prompt):oe(j?.name)||P})(),Ht.createElement(en,{color:T.textMuted}," [",he," \u2022 ",P,"]"))),de&&Ht.createElement(Bo,{flexShrink:0},Ht.createElement(en,{color:T.danger,bold:!0},"[X] DELETE ")))}),v+E<w.length&&Ht.createElement(Bo,{paddingX:2,marginTop:1},Ht.createElement(en,{color:T.textMuted},"\u25BC (+",w.length-(v+E)," more chats below)"))),Ht.createElement(Bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Ht.createElement(en,{color:T.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Zd(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"),S=g(f.getMonth()+1),T=g(f.getDate()),p=g(f.getHours()),l=g(f.getMinutes());return`${S}-${T} ${p}:${l}`}import Lt,{useState as qs,useEffect as Rd}from"react";import{Box as vo,Text as To,useInput as ec,useStdout as tc}from"ink";function Qs({onClose:t,theme:f="Dark"}){let g=ct(f),{stdout:S}=tc(),T=S?.columns||80,[p,l]=qs([]),[w,b]=qs(0),[M,F]=qs(!0),O=()=>{let oe=Pr(sr,[]);l(oe);try{let ce=Nr(xn,{}).systemSettings?.memory!==!1;F(ce)}catch{F(!0)}};Rd(()=>{O()},[]),ec((oe,Q)=>{if(Q.escape&&t(),Q.upArrow&&b(ce=>Math.max(0,ce-1)),Q.downArrow&&b(ce=>Math.min(p.length-1,ce+1)),oe==="x"&&p.length>0){let ce=p[w].id,Se=p.filter(Pe=>Pe.id!==ce);Hi(sr,Se),l(Se),w>=Se.length&&Se.length>0&&b(Se.length-1)}});let E=(oe,Q,ce)=>{if(!oe)return"";let Se=oe.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Ze=`${ce?"\u276F ":" "}${Q+1}. `.length,pe=ce?22:2;return Se.split(`
45
+ `).map((ge,_e)=>{let et=_e===0,We=Math.max(10,T-4-(et?Ze:3)-pe),q=Math.max(10,T-4-3-pe),_=ge.split(/(\s+)/),ne=[],ue="";if(_.forEach(ke=>{if(ke.length===0)return;let Ae=ne.length===0?We:q;ue.length+ke.length>Ae?ue.trim().length>0?(ne.push(ue.trimEnd()),ue=ke):(ne.push(ke.substring(0,Ae)),ue=ke.substring(Ae)):ue+=ke}),ue.trimEnd().length>0&&ne.push(ue.trimEnd()),ne.length===0)return"";let Be=ne.join(`
46
+ `);return et?Be:" "+Be}).join(`
47
+ `)},v=4*1024*2,G=p.reduce((oe,Q)=>oe+(Q.memory?.length||0),0),P=Math.min(100,Math.round(G/v*100)),k=12,j=Math.round(P/100*k),K="\u2588".repeat(j)+"\u2591".repeat(Math.max(0,k-j)),de=()=>P<50?g.textMuted:P<90?g.warning:g.danger,he=ht(2);return Lt.createElement(vo,{flexDirection:"column",borderStyle:"round",borderColor:g.borderMuted,padding:0,width:"100%"},Lt.createElement(vo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},Lt.createElement(To,{color:g.text,bold:!0},"SAVED MEMORIES"),Lt.createElement(vo,null,Lt.createElement(To,{color:g.textMuted},"Vault: "),Lt.createElement(To,{color:de()},K),Lt.createElement(To,{color:g.text,bold:!0}," ",P,"%"))),!M&&p.length>0?Lt.createElement(vo,{paddingX:2,paddingY:1},Lt.createElement(To,{italic:!0,color:g.textMuted},"Memory is currently Off...")):p.length===0?Lt.createElement(vo,{paddingX:2,paddingY:1},Lt.createElement(To,{italic:!0,color:g.textMuted},M?"Learning...":"Memory not available...")):Lt.createElement(vo,{flexDirection:"column"},p.map((oe,Q)=>{let ce=Q===w;return Lt.createElement(vo,{key:oe.id,paddingX:1,backgroundColor:ce?g.highlightBg:void 0,width:"100%"},Lt.createElement(vo,{flexGrow:1},Lt.createElement(To,{color:ce?g.text:g.textMuted,bold:ce},ce?"\u276F ":" ",Q+1,". ",E(oe.memory,Q,ce))),ce&&Lt.createElement(vo,{flexShrink:0},Lt.createElement(To,{color:g.textMuted,dimColor:!0}," [",Lt.createElement(To,{italic:!0},oe.score),"] "),Lt.createElement(To,{color:g.danger,bold:!0},"[X] WIPE ")))})),Lt.createElement(vo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:g.borderMuted},Lt.createElement(To,{color:g.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import Mt,{useState as Zr,useEffect as Ul}from"react";import{Box as tn,Text as Gt}from"ink";import{spawn as _l}from"child_process";var Hl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],oc=({latest:t,current:f,settings:g,theme:S="Dark",onClose:T,onUpdateSettings:p,onSuccess:l})=>{let w=ct(S),[b,M]=Zr("initializing"),[F,O]=Zr(""),[E,v]=Zr(null),[G,P]=Zr(0);if(Ul(()=>{let k=setInterval(()=>{P(j=>(j+1)%1e3)},33);return()=>clearInterval(k)},[]),Ul(()=>{let k;return(async()=>{let K=g?.updateManager||"npm";if(!g?.updateManager){p();return}let de="";K==="pnpm"?de=`pnpm add -g fluxflow-cli@${t}`:K==="bun"?de=`bun add -g fluxflow-cli@${t}`:K==="yarn"?de=`yarn global add fluxflow-cli@${t}`:K==="custom"?de=g.customUpdateCommand:de=`npm install -g fluxflow-cli@${t}`,M("downloading"),O(`Running: ${de}...`);let he=process.platform==="win32",oe=ce=>new Promise(Se=>{let Pe=he?ce?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",Ze=he?ce?["-NoProfile","-Command",de]:["/c",de]:["-c",de],pe=ge=>{let et=ge.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();et&&O(We=>{let q=We.split(`
48
+ `);return q[q.length-1]?.startsWith("Progress:")&&et.startsWith("Progress:")?(q[q.length-1]=et,q.slice(-5).join(`
49
+ `)):(We+`
50
+ `+et).split(`
51
+ `).slice(-10).join(`
52
+ `)})},fe=he?_l(Pe,Ze,{cwd:process.cwd(),env:process.env}):_l(de,{shell:!0,cwd:process.cwd(),env:process.env});k=fe,fe.stdout.on("data",pe),fe.stderr.on("data",pe),fe.on("close",ge=>{k=null,Se(ge!==0?{error:`Process exited with code ${ge}`}:{success:!0})}),fe.on("error",ge=>{he&&ce&&ge.code==="ENOENT"?Se({retryCmd:!0}):(k=null,Se({error:ge.message}))})}),Q={};he?(Q=await oe(!0),Q.retryCmd&&(Q=await oe(!1))):Q=await oe(!1),Q.error?(v(Q.error),M("error")):Q.success&&(M("success"),l&&l())})(),()=>{if(k)try{typeof k.destroy=="function"?k.destroy():typeof k.kill=="function"&&k.kill()}catch{}}},[]),b==="initializing"||b==="downloading"){let k=Hl[Math.floor(G/3)%Hl.length];return Mt.createElement(tn,{flexDirection:"column",borderStyle:"round",borderColor:w.border,paddingX:2,paddingY:1},Mt.createElement(tn,null,Mt.createElement(Gt,{color:w.accent||w.primary},k),Mt.createElement(Gt,{marginLeft:1,bold:!0,color:w.text}," Updating Flux Flow to v",t,"...")),Mt.createElement(tn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:w.borderMuted},Mt.createElement(Gt,{color:w.textMuted,italic:!0},F||"Preparing environment...")),Mt.createElement(Gt,{marginTop:1,color:w.textDim||w.textMuted},"(Please do not close the terminal)"))}return b==="success"?Mt.createElement(tn,{flexDirection:"column",borderStyle:"round",borderColor:w.success||w.border,paddingX:2,paddingY:1},Mt.createElement(Gt,{color:w.success||w.text,bold:!0},"\u2705 UPDATE SUCCESSFUL!"),Mt.createElement(Gt,{marginTop:1,color:w.text},"Flux Flow has been updated to ",Mt.createElement(Gt,{color:w.accent||w.primary},"v",t),"."),Mt.createElement(Gt,{marginTop:1,color:w.text,bold:!0},"Please restart your terminal session to apply changes."),Mt.createElement(tn,{marginTop:1},Mt.createElement(Gt,{color:w.textMuted},"(Press ESC to return to chat)"))):b==="error"?Mt.createElement(tn,{flexDirection:"column",borderStyle:"round",borderColor:w.danger||w.border,paddingX:2,paddingY:1},Mt.createElement(Gt,{color:w.danger||w.text,bold:!0},"\u274C UPDATE FAILED"),Mt.createElement(tn,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:w.borderMuted},Mt.createElement(Gt,{color:w.danger||w.text},E)),Mt.createElement(Gt,{marginTop:1,color:w.text,bold:!0},"Possible causes:"),Mt.createElement(Gt,{color:w.textMuted},"\u2022 Missing permissions (Try running as Administrator/Sudo)"),Mt.createElement(Gt,{color:w.textMuted},"\u2022 Package manager (",g?.updateManager,") not found"),Mt.createElement(Gt,{color:w.textMuted},"\u2022 Network failure"),Mt.createElement(tn,{marginTop:1},Mt.createElement(Gt,{color:w.textDim||w.textMuted},"(Press ESC to return to chat)"))):null},Xl=oc;import zt,{useState as Gl,useEffect as nc}from"react";import{Box as on,Text as Xn,useInput as rc}from"ink";var Rr=[{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 zs({onClose:t}){let[f,g]=Gl(0),[S,T]=Gl({});return nc(()=>{let p={};Rr.forEach(l=>{fl(l.file)?p[l.file]="ready":p[l.file]="idle"}),T(p)},[]),rc(async(p,l)=>{l.escape&&t(),l.upArrow&&g(b=>Math.max(0,b-1)),l.downArrow&&g(b=>Math.min(Rr.length-1,b+1));let w=Rr[f];if(p==="x"||p==="X"){if(S[w.file]==="downloading")return;try{await gl(w.file),T(b=>({...b,[w.file]:"idle"}))}catch(b){T(M=>({...M,[w.file]:`error: ${b.message}`}))}}if(l.return){if(S[w.file]==="downloading")return;T(b=>({...b,[w.file]:"downloading"}));try{await xl(w.file),T(b=>({...b,[w.file]:"ready"}))}catch(b){T(M=>({...M,[w.file]:`error: ${b.message}`}))}}}),zt.createElement(on,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},zt.createElement(on,{paddingX:1,marginBottom:1},zt.createElement(Xn,{color:"white",bold:!0},"LANGUAGE PARSER MANAGER")),zt.createElement(on,{flexDirection:"column"},Rr.map((p,l)=>{let w=l===f,b=S[p.file]||"idle",M="[ DOWNLOAD ]",F="gray";b==="downloading"?(M="[ DOWNLOADING... ]",F="yellow"):b==="ready"?(M="[ READY ]",F="green"):b.startsWith("error")&&(M=`[ ${b.toUpperCase()} ]`,F="red");let O=`${p.label} (${p.exts.join(", ")})`,E=Math.max(2,45-O.length),v=".".repeat(E);return zt.createElement(on,{key:p.file,paddingX:1,backgroundColor:w?"#2a2a2a":void 0,width:"100%"},zt.createElement(on,null,zt.createElement(Xn,{color:w?"white":"grey",bold:w},w?"\u276F ":" ",p.label," ",zt.createElement(Xn,{dimColor:!0},"(",p.exts.join(", "),")"))),zt.createElement(on,{flexGrow:1},zt.createElement(Xn,{color:"gray",dimColor:!0},v)),zt.createElement(on,{width:20},zt.createElement(Xn,{color:F,bold:!0},M)))})),zt.createElement(on,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},zt.createElement(Xn,{color:"grey",italic:!0},"\u2191\u2193 navigate \u2022 Enter download \u2022 x delete \u2022 Esc close")))}import Ut,{useState as sc}from"react";import{Box as Do,Text as Ho,useInput as ic}from"ink";function Js({prompts:t,onSelect:f,onClose:g,theme:S="Dark"}){let T=ct(S),[p,l]=sc(0);ic((O,E)=>{E.escape&&g(),E.upArrow&&l(v=>Math.max(0,v-1)),E.downArrow&&l(v=>Math.min(t.length-1,v+1)),E.return&&t[p]&&f(t[p].id)});let w=ht(2),b=10,M=0;if(t.length>b){let O=Math.floor(b/2);M=p-O,M<0?M=0:M+b>t.length&&(M=t.length-b)}let F=t.slice(M,M+b);return Ut.createElement(Do,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Ut.createElement(Do,{paddingX:1,marginBottom:1},Ut.createElement(Ho,{color:T.text,bold:!0},"CODEBASE TIME TRAVEL: SELECT UNDO POINT")),Ut.createElement(Do,{paddingX:2,marginBottom:1},Ut.createElement(Ho,{color:T.text},"Select a prompt to revert the codebase back to the state ",Ut.createElement(Ho,{bold:!0,color:T.secondary||"cyan"},"immediately before")," it was executed:")),t.length===0?Ut.createElement(Do,{paddingX:2,paddingY:1},Ut.createElement(Ho,{italic:!0,color:T.textMuted},"No prompt checkpoints found for this session.")):Ut.createElement(Do,{flexDirection:"column",width:"100%"},M>0&&Ut.createElement(Do,{paddingX:2,marginBottom:1},Ut.createElement(Ho,{color:T.textMuted},"\u25B2 (+",M," more prompts above)")),F.map((O,E)=>{let G=M+E===p,P=ac(O.timestamp),k=O.changes?O.changes.length:0;return Ut.createElement(Do,{key:O.id,paddingX:1,backgroundColor:G?T.highlightBg:void 0,width:"100%"},Ut.createElement(Do,{flexGrow:1},Ut.createElement(Ho,{color:G?T.text:T.textMuted,bold:G},G?"\u276F ":" ",'"',lc(O.prompt),'"',Ut.createElement(Ho,{color:T.textMuted}," [",P," \u2022 ",k," file(s) changed]"))))}),M+b<t.length&&Ut.createElement(Do,{paddingX:2,marginTop:1},Ut.createElement(Ho,{color:T.textMuted},"\u25BC (+",t.length-(M+b)," more prompts below)"))),Ut.createElement(Do,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Ut.createElement(Ho,{color:T.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select undo point \u2022 Esc close")))}function lc(t){if(!t)return"";let g=(t.split(`
53
+ `)[0]||"").replace(/@\[(.*?)\]/g,(S,T)=>{let p=T.replace(/\\/g,"/").split("/");return`[${p[p.length-1]}]`});return g.length>69?g.slice(0,67)+"...":t.includes(`
54
+ `)?g+"...":g}function ac(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"),S=g(f.getHours()),T=g(f.getMinutes()),p=g(f.getSeconds());return`${S}:${T}:${p}`}import{exec as dc}from"child_process";import{promisify as cc}from"util";import Wl from"fs";var Vl=cc(dc),Yl=async()=>{try{let t=ml();if(t.executablePath&&Wl.existsSync(t.executablePath))return!0;let{default:f}=await import("puppeteer"),g=f.executablePath();if(g&&Wl.existsSync(g))return!0}catch{return!1}return!1},jl=async t=>{t&&t("\u{1F4E5} Downloading Chromium engine (chrome@148)...");try{try{await Vl("pnpm exec puppeteer browsers install chrome@148")}catch{await Vl("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 Kl,{useState as ql,useEffect as Ql}from"react";import{Text as zl}from"ink";var uc=({text:t,baseColor:f="grey",glintColor:g="gray",speed:S=200,glintWidth:T=6,typeSpeed:p=30,...l})=>{let[w,b]=ql(-T),[M,F]=ql(t);return Ql(()=>{let O=setInterval(()=>{b(E=>E>M.length+T?-T-40:E+1)},S);return()=>clearInterval(O)},[M.length,S,T]),Ql(()=>{if(t&&(t.includes("Trying to reach")&&M&&M.includes("Trying to reach")||t.includes("Error Occurred")&&M&&M.includes("Error Occurred"))){F(t);return}if(M===t)return;let O=setTimeout(()=>{let E=0,v=Math.min(M.length,t.length);for(;E<v&&M[E]===t[E];)E++;M.length>E?F(G=>G.slice(0,-1)):M.length<t.length&&F(t.slice(0,M.length+1))},p);return()=>clearTimeout(O)},[t,M,p]),Kl.createElement(zl,null,M.split("").map((O,E)=>{let G=Math.abs(E-w)<=T/2?g:f;return Kl.createElement(zl,{key:E,color:G,...l},O)}))},Tr=uc;var es=null,Vn=null,ts=null,os=null,ao=t=>{let f=String(t);return f.startsWith("999")&&f.endsWith("9")},Zs=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}}},Xo=t=>t==null||t===0||ao(t)?"":String(t),nn=()=>{let t=(process.env.TERM_PROGRAM||"").toLowerCase(),f=(process.env.VSCODE_CWD||"").toLowerCase(),g=(process.env.VSCODE_CODE_CACHE_PATH||"").toLowerCase(),S=(process.env.GIT_ASKPASS||"").toLowerCase(),T=(process.env.VSCODE_GIT_ASKPASS_NODE||"").toLowerCase(),p=(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")||S.includes("antigravity")||T.includes("antigravity")||p.includes("antigravity")?"Antigravity":t==="cursor"||process.env.CURSOR_SETTINGS_DIR||process.env.CURSOR_CONFIG_DIR||f.includes("cursor")||g.includes("cursor")||S.includes("cursor")||T.includes("cursor")?"Cursor":t==="windsurf"||process.env.WINDSURF_SETTINGS_DIR||f.includes("windsurf")||g.includes("windsurf")||S.includes("windsurf")||T.includes("windsurf")?"Windsurf":t==="trae"||process.env.TRAE_SETTINGS_DIR||f.includes("trae")||T.includes("trae")?"Trae":t==="positron"||f.includes("positron")||T.includes("positron")?"Positron":t==="codium"||t==="vscode-oss"||f.includes("codium")||g.includes("codium")||T.includes("codium")?"VSCodium":t==="vscode-insiders"||f.includes("code - insiders")||g.includes("code - insiders")||T.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")||T.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"},bc=t=>{switch(t){case"VS Code":return"Code";case"VS Code Insiders":return"Code - Insiders";case"Antigravity":return"Antigravity IDE";default:return t}},Jl={Flux:"Workspace",Flow:"Studio",ICU:"Computer Use",FluxCU:"Omni"},Rs=t=>{if(!t)return"Workspace";let f=Object.keys(Jl).find(g=>g.toLowerCase()===t.toLowerCase());return f?Jl[f]:t},Zl=t=>{let f=bc(t),g=oi.homedir();if(process.platform==="win32"){let S=process.env.APPDATA;return S?Ot.join(S,f,"User","keybindings.json"):null}else return process.platform==="darwin"?Ot.join(g,"Library","Application Support",f,"User","keybindings.json"):Ot.join(g,".config",f,"User","keybindings.json")},Rl=t=>{let f=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1");return JSON.parse(f)},Tc=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},wc=({width:t,height:f,selectedIndex:g,aiProvider:S,theme:T="Dark"})=>{let p=nn(),l=ta(p);return e.createElement(c,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:f},e.createElement(c,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,ar(co,S,T))),e.createElement(c,{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(c,{marginY:1,flexDirection:"column",alignItems:"left"},e.createElement(s,null,"You're in ",e.createElement(s,{bold:!0,color:"cyan"},p),", but the ",e.createElement(s,{bold:!0,color:"white"},"FluxFlow-CLI Companion")," is not installed."),e.createElement(c,{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(c,{flexDirection:"column",marginTop:1},l.map((w,b)=>e.createElement(c,{key:b},e.createElement(s,{color:g===b?"yellow":"white",bold:g===b},g===b?" \u276F ":" ",w.label)))),e.createElement(c,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Use arrows to navigate, Enter to select)"))))},yc=({width:t,height:f,aiProvider:g,theme:S="Dark",reason:T})=>{let p=nn(),l=T==="version_mismatch";return e.createElement(c,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:t,height:f},e.createElement(c,{marginBottom:1,width:Math.min(80,t-4),justifyContent:"flex-start"},e.createElement(s,null,ar(co,g,S))),e.createElement(c,{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(c,{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"},p),!l&&" workspace. ","IDE features aren't available right now."),!l&&e.createElement(c,{marginTop:1},e.createElement(s,{dimColor:!0},"Tip: Launch FluxFlow CLI from the same folder open in ",p,"."))),e.createElement(c,{marginTop:1},e.createElement(s,{color:"yellow",bold:!0}," \u276F Understood")),e.createElement(c,{marginTop:1,alignItems:"center",justifyContent:"center"},e.createElement(s,{dimColor:!0,italic:!0},"(Press Enter to dismiss)"))))},ei=Date.now(),ea="https://fluxflow-cli.onrender.com/changelog",ti="https://fluxflow-cli.onrender.com/",Cc=Ot.join(Ot.dirname(hc(import.meta.url)),"../package.json"),oa=JSON.parse(xt.readFileSync(Cc,"utf8")),co=oa.version,Mc=oa.date||"2026-05-20";var Sc=({data:t,onResolve:f,onEdit:g,theme:S="Dark"})=>{let T=ct(S);return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},e.createElement(c,{paddingX:1},e.createElement(s,{color:T.text,bold:!0,underline:!0},t.startsWith("/btw")?"QUESTION":"STEERING HINT"," RESOLUTION")),e.createElement(c,{paddingX:1,marginTop:1},e.createElement(s,{color:T.text},"The agent already finished the task before your ",t.startsWith("/btw")?"question":"hint"," was consumed.")),e.createElement(c,{marginTop:1,backgroundColor:T.cardBg||T.codeBg||"#222",paddingX:2,width:"100%"},e.createElement(s,{italic:!0,color:T.textMuted},'"',t.replace("/btw","").trim(),'"')),e.createElement(c,{paddingX:1,marginTop:1},e.createElement(s,{color:T.textDim||T.textMuted},"How would you like to proceed?")),e.createElement(c,{marginTop:0},e.createElement(vt,{title:"Select Action",items:[{label:"Send Anyway",value:"send"},{label:"Edit Prompt",value:"edit"}],onSelect:p=>{(typeof p=="object"&&p!==null?p.value:p)==="send"?f(t):g(t)},theme:S})))};var Ec=(()=>{let t=null,f=0;return g=>{let S=Date.now();if(t&&S-f<1e4)return t;let T=[],p=l=>{if(!(T.length>=2e3))try{let w=xt.readdirSync(l);for(let b of w){if(T.length>=2e3)return;if(["node_modules",".git",".gemini","dist","build",".next",".cache","out"].includes(b))continue;let M=Ot.join(l,b);xt.statSync(M).isDirectory()?p(M):T.push({name:Nt(b),relativePath:Nt(Ot.relative(process.cwd(),M))})}}catch{}};return p(g),t=T,f=S,T}})(),ns="Ctrl + Enter",Bc=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 S=f[g],T=f[g+1];if(t>=S.t&&t<=T.t){let p=(t-S.t)/(T.t-S.t);p=p*p*(3-2*p);let l=Math.round(S.r+(T.r-S.r)*p),w=Math.round(S.g+(T.g-S.g)*p),b=Math.round(S.b+(T.b-S.b)*p);return`#${((1<<24)+(l<<16)+(w<<8)+b).toString(16).slice(1)}`}}return"#ff0000"},vc=e.memo(({sa:t,showTPMEstimate:f=!1})=>{let[g,S]=Z("green"),[T,p]=Z(0),l=rt([]),w=rt(370),b=rt([]),M=rt(t.lastChunkTime);return ft(()=>{M.current=t.lastChunkTime},[t.lastChunkTime]),ft(()=>{if(t.status!=="running"){b.current=[];return}if(t.wps>0){let F=b.current;F.push(t.wps),F.length>3&&F.shift()}},[t.status,t.wps,t.lastChunkTime]),ft(()=>{if(t.status!=="running"){p(0);return}let F=setInterval(()=>{let O=M.current,E=O>0?Date.now()-O:0;if(O>0&&E>=1e3)b.current=[],p(0);else if(O>0&&E>500){b.current.length>0&&b.current.shift();let v=b.current;if(v.length>0){let G=v.reduce((P,k)=>P+k,0);p(Math.round(G/v.length))}else p(0)}else{let v=b.current;if(v.length>0){let G=v.reduce((P,k)=>P+k,0);p(Math.round(G/v.length))}else t.wps>0&&p(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 v=l.current;(v.length===0||v[v.length-1]!==F)&&(v.push(F),v.length>10&&v.shift())}let O=()=>{if(!F){S("#00a564");return}let v=l.current,G=0;if(v.length>1){let oe=0;for(let Q=1;Q<v.length;Q++)oe+=v[Q]-v[Q-1];G=oe/(v.length-1)}let P=Date.now()-F,j=P>=2500,K=!j&&G>0?Math.min(P,G*3):P,de=Math.max(G,K),he=j?.4:.2;w.current=w.current*(1-he)+de*he,S(Bc(w.current))};O();let E=setInterval(O,100);return()=>clearInterval(E)},[t.status,t.lastChunkTime]),e.createElement(c,{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}," ~",T," tok/s")))});function Dc({args:t=[]}){let f=rt(1),[g,S]=Z(!1),[T,p]=Z(10),{stdout:l}=xc(),[w,b]=Z(""),[M,F]=Z(0),[O,E]=Z(!1),[v,G]=Z("Flux"),[P,k]=Z(0),[j,K]=Z({columns:l?.columns||80,rows:l?.rows||24}),[de,he]=Z(0),[oe,Q]=Z(!1),[ce,Se]=Z(!1),[Pe,Ze]=Z(null),[pe,fe]=Z(0),ge=rt(null),_e=rt(!1),et=rt(0),We=rt(0),q=rt(null),_=rt(null),ne=rt(0),[ue,Be]=Z(0),ke=()=>Be(n=>n+1),Ae=rt([]),Ge=rt(null),st=()=>{let n=Ae.current;if(n.length>0&&_.current){let o=n.join("");n.length=0,_.current.text=Nt(_.current.text+o),ke()}},at=()=>{if(st(),_.current){let n=Nt(_.current.text);_.current.role==="think"&&(n=n.replace(/^\r?\n+/,"").replace(/\r?\n+$/,""));let o={..._.current,text:n,isStreaming:!1};I(d=>{let x=[...d,o];return N(x.length),x}),_.current=null}li.current=0,ms.current={totalWords:0,startTime:0,wps:0,chunks:[]}},Me=()=>{Ge.current&&clearInterval(Ge.current),Ae.current=[],Ge.current=setInterval(()=>{try{let n=Ae.current;if(n.length>0&&_.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 d="";for(let x=0;x<o&&n.length>0;x++)d+=n.shift();_.current.text=Nt(_.current.text+d),ke()}}catch{}},80)},Ce=async()=>{for(;ae.progressiveRendering&&Ae.current.length>0;)await new Promise(n=>setTimeout(n,10))},Oe=n=>{if(ae.progressiveRendering&&Ge.current){let o=el(n);for(let d of o)Ae.current.push(d)}else _.current?_.current.text=Nt(_.current.text+n):_.current={id:"agent-"+Date.now(),role:"agent",text:Nt(n),isStreaming:!0},ke()};ft(()=>{let n=nn(),o=!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL,d=setTimeout(()=>{o&&!gn()&&!ge.current&&Se(!0)},500),x=setInterval(()=>{gn()&&(Se(!1),Ze(null),ge.current=null,_e.current=!1)},1e3);f.current=Date.now();let m=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(d),clearInterval(x),clearInterval(m)}},[]),ft(()=>{(async()=>{try{let o=await Os(),d=o?.systemSettings||{},x=d.CustomSubAgent,m=d.SubAgentModel;if(!x||!m||m==="Default")return;let B=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(B&&!C){let te=o.aiProvider||$||"Google";I(X=>(N(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(m==="ENV"){B||I(te=>(N(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 U=o.aiProvider||$||"Google",H=o.apiTier||ut||"Free",V=o.quotas||Fe||{},z=new Set;(Qo(U,H)||[]).forEach(te=>{let X=typeof te=="string"?te:te.cmd||te.name||te.id||String(te);X&&z.add(X)});for(let te of a)try{if(await zo(te)){let je=V?.providerTiers?.[te]||"Free";(Qo(te,je)||[]).forEach($e=>{let Ke=typeof $e=="string"?$e:$e.cmd||$e.name||$e.id||String($e);Ke&&z.add(Ke)})}}catch{}let R=z.has(m);B?B!==m&&I(te=>(N(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}])):R||I(te=>(N(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 le=Gn(()=>{let n={};for(let o=0;o<t.length;o++)if(t[o]==="--key"&&t[o+1]){let x=t[o+1];if(n.key=x,x.includes("@")){let m=x.split("@"),B=m[0],u=m[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=B,n.provider=a}}}for(let o=0;o<t.length;o++){let d=t[o];if(d==="--key"){o++;continue}if(d==="--model"&&t[o+1])n.model=t[o+1],o++;else if(d==="--memory"&&t[o+1])n.memory=t[o+1].toLowerCase(),o++;else if(d==="--resume"&&t[o+1])n.resume=t[o+1],o++;else if(d==="--package"&&t[o+1]){let x=t[o+1].toLowerCase();["npm","pnpm","yarn","bun"].includes(x)&&(n.package=x),o++}else if(d==="--auto-del"&&t[o+1]){let x=t[o+1].toLowerCase();["1d","7d","30d"].includes(x)&&(n.autoDel=x),o++}else if(d==="--auto-exec"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(d==="--yolo"&&t[o+1])n.autoExec=t[o+1].toLowerCase(),o++;else if(d==="--external-access"&&t[o+1])n.externalAccess=t[o+1].toLowerCase(),o++;else if(d==="--mode"&&t[o+1]){let m=t[o+1].toLowerCase();if(["flux","flow","icu","computer","fluxcu"].includes(m)){let B="Flux";m==="flux"?B="Flux":m==="flow"?B="Flow":m==="icu"||m==="computer"?B="ICU":m==="fluxcu"&&(B="FluxCU"),n.mode=B}o++}else if(d==="--thinking"&&t[o+1]){let m=t[o+1].toLowerCase();if(["fast","low","medium","high","xhigh","standard"].includes(m)){let B="Medium";m==="fast"?B="Fast":m==="low"?B="Low":m==="standard"?B="Standard":m==="medium"?B="Medium":m==="high"?B="High":m==="xhigh"&&(B="xHigh"),n.thinking=B}o++}else if(d==="--provider"&&t[o+1]){let x=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(x)){let m="Google";x==="google"?m="Google":x==="deepseek"?m="DeepSeek":x==="openrouter"?m="OpenRouter":x==="nvidia"?m="NVIDIA":x==="mistral"?m="Mistral":x==="ollama"?m="Ollama":x==="inferx"?m="InferX":x==="sensenova"?m="SenseNova":x==="poolside"||x==="pool"?m="Poolside":x==="9router"||x==="9r"?m="9router":x==="aihubmix"||x==="aihub"?m="AIHubMix":x==="explabs"?m="ExpLabs":x==="tokenharbor"||x==="token_harbor"||x==="thk"?m="TokenHarbor":x==="infron"?m="Infron":(x==="apinex"||x==="apx")&&(m="APInex"),n.provider=m}o++}else(d==="--resume"||d==="-r")&&t[o+1]?(n.resume=t[o+1],o++):d==="--playground"?n.playground=!0:(d==="--original-cwd"||d==="--orginal-cwd")&&t[o+1]&&(n.originalCwd=t[o+1],o++)}return n},[t]),we=async(n=!1,o=null)=>{let d=o||ae;n&&I(x=>(N(x.length+1),[...x,{id:"check-"+Date.now(),role:"system",text:"\u2726 Checking for updates...",isMeta:!0}]));try{let m=await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json(),B=m["dist-tags"]?.latest,u=m["dist-tags"]?.stable;if(B&&rs(B),B&&B!==co){let a=B===u?`v${B}`:`v${B}`;!n&&d.autoUpdate?J("update"):I(h=>{let C=[...h],U=n?C.length:Math.min(C.length,3);return C.splice(U,0,{id:"update-"+Date.now(),role:"system",text:`A new version (${a}) is here.
55
+
56
+ \u2022 Type \`/update latest\` to apply the update.
57
+ \u2022 Type \`/changelog\` to view the release notes.`,isUpdateNotification:!0,isMeta:!0}),C})}else n&&I(a=>{N(a.length+1);let h=B&&B===u?`${co}`:co;return[...a,{id:"uptodate-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Already up to date (${h}).
58
+ \u2800`,isMeta:!0}]})}catch(x){n&&I(m=>(N(m.length+1),[...m,{id:"check-err-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to check for updates: ${x.message}.
59
+ \u2800`,isMeta:!0}]))}};ft(()=>{let n=l?.columns||80,o=()=>{let d=l?.columns||80,x=l?.rows||24;d!==n&&(n=d,l.write("\x1B[2J\x1B[3J\x1B[H")),K({columns:d,rows:x})};return l.on("resize",o),()=>{l.off("resize",o)}},[l]);let[Ye,wt]=Z("Medium"),[$,Go]=Z("Google"),[Yn,wr]=Z(0),[Wo,rs]=Z(null),[rn,pn]=Z(!1),[qe,qt]=Z(eo("Google","Free")||"gemma-4-31b-it"),[ve,xe]=Z(!1),[y,L]=Z(!1),[Ee,Ve]=Z(Ki("gemma_janitor_fallback_google")||"gemma-4-26b-a4b-it"),[dt,gt]=Z(!0),[ze,oo]=Z(!0),tt=rt(0),[_t,Xt]=Z(null),[ss,sn]=Z(""),is=async n=>{let o=Zl(n);if(o)try{await xt.ensureDir(Ot.dirname(o));let d=[];if(xt.existsSync(o)){let x=xt.readFileSync(o,"utf8").trim();if(x)try{d=Rl(x)}catch{d=[]}}Array.isArray(d)||(d=[]),d.push({key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:"\x1B[13;2u"},when:"terminalFocus"}),xt.writeFileSync(o,JSON.stringify(d,null,4),"utf8"),ns="Shift + Enter",I(x=>(N(x.length+1),[...x,{id:"kb-success-"+Date.now(),role:"system",text:`\u2726 Successfully configured Shift+Enter in your ${n} keybindings!
60
+ `,isMeta:!0}]))}catch(d){I(x=>(N(x.length+1),[...x,{id:"kb-error-"+Date.now(),role:"system",text:`\u2726 Failed to update keybindings: ${d.message}.
61
+ \u2800`,isMeta:!0}]))}},[yt,J]=Z("chat"),[jn,ls]=Z([]),Wt=w.startsWith("/k");ft(()=>{if(!Wt)return;let n=!0,o=async()=>{try{let x=await Cl(process.pid);n&&ls(x||[])}catch{}};o();let d=setInterval(o,5e3);return()=>{n=!1,clearInterval(d)}},[Wt]);let[ut,no]=Z("Free"),[Fe,uo]=Z({limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}}),[Vo,Jt]=Z(null),[Ao,na]=Z("chat"),[Yo,as]=Z("settings"),[bn,ra]=Z([]),[Ic,sa]=Z(0),[ni,yr]=Z(0),[ds,ri]=Z({}),[Kn,qn]=Z({}),[Tn,mo]=Z(0),[ae,It]=Z({memory:!0,theme:"Dark",compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",clipboardContext:!1}),r=Gn(()=>ct(ae.theme),[ae.theme]),[wn,si]=Z({name:null,nickname:null,instructions:null}),[ko,Cr]=Z({keyType:"Default",quality:"Low-High",apiKey:""}),[Qn,cs]=Z({enabled:!1,model:"Default",provider:"",baseUrl:""}),[wo,jo]=Z({tokens:0}),[ii,us]=Z(0),li=rt(0),ms=rt({totalWords:0,startTime:0,wps:0,chunks:[]}),[ai,di]=Z(0),[ci,ia]=Z(0),[Zt,ui]=Z(0),[la,yn]=Z(0),Cn=rt(0),[aa,Mn]=Z(0),Sn=rt(0),[da,En]=Z(0),Bn=rt(0),[ln,mi]=Z(0),[xo,xi]=Z(0),[vn,fi]=Z(0),[Ac,ca]=Z(0),[kc,ua]=Z(0),[Lc,ma]=Z(0),[Mr,xa]=Z(0),[Sr,fa]=Z(0),[Er,ga]=Z(0),[gi,ha]=Z(0),[Dn,xs]=Z(null),[zn,fs]=Z(null),[Br,hi]=Z(null),[In,Jn]=Z("daily"),[pa,fo]=Z(0),[Zn,Rn]=Z(""),An="flow-playground",[bt,vr]=Z(t.includes("--playground")?An:Us());ft(()=>{if(Oo.current)return;let n=Zt-Cn.current,o=xo-Sn.current,d=ln-Bn.current;yn(n),Mn(o),En(Math.max(0,d)),bt&&ul(bt,n,wo.tokens).catch(()=>{})},[Zt,xo,ln,bt,wo.tokens]),ft(()=>{yt==="apiTier"&&(async()=>{let o=await $r();xs(o);let d=await Ur();fs(d);let x=await Ps(Fe.resetDay||1);hi(x)})()},[yt,Fe.resetDay]);let[go,pi]=Z(null),[kn,Ln]=Z(""),[er,bi]=Z(!1),[gs,ba]=Z([]),[Oc,Pc]=Z(0),hs=rt(!0),Ti=rt(!0),ps=rt($),bs=rt(!1),Ts=rt(!0);ft(()=>{(ve||y)&&(I(n=>(N(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Wild${y?"er":""}Card Tooling:
62
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
63
+ \u2800`,isMeta:!0}])),xe(!1),L(!1)),process.env.forcedReasoning&&(I(n=>(N(n.length+1),[...n,{id:Date.now(),role:"system",text:`\u2726 Forced Reasoning:
64
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
65
+ \u2800`,isMeta:!0}])),process.env.forcedReasoning=!1),Ye==="xHigh"&&!hs.current&&wt("Medium")},[qe]);let wi;ft(()=>{if(Ti.current){wi=setTimeout(()=>{Ti.current=!1,ps.current=$},1e3);return}return ps.current!==$&&(ps.current=$,wt($==="SenseNova"||$==="Poolside"?"High":"Low")),()=>{clearTimeout(wi)}},[$,qe]);let yi;ft(()=>{if(!_t)return;if(hs.current){yi=setTimeout(()=>{hs.current=!1},1500);return}let n=eo($,ut),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"),qt(n),Ft({apiTier:ut,activeModel:n}),()=>{clearTimeout(yi)}},[ut,$,_t]);let Ta=Gn(()=>{let n=nn();return{isIDE:!["Terminal","Windows Terminal"].includes(n)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS,get shortcut(){return ns}}},[]),Dr=rt(null),ws=rt("");ft(()=>{Dr.current=go},[go]),ft(()=>{ws.current=kn},[kn]);let[wa,ya]=Z(!1),[ro,On]=Z(null),[an,ys]=Z(null),Lo=n=>{On(null),J("chat")},Ci=n=>{let o=Math.floor(n/3600),d=Math.floor(n%3600/60),x=n%60,m=[];return o>0&&m.push(`${o}h`),(d>0||o>0)&&m.push(`${d}m`),m.push(`${x}s`),m.join(" ")},dn=n=>n<1e3?`${n}ms`:Ci(Math.floor(n/1e3)),[cn,Cs]=Z(null),[Ms,Mi]=Z(""),[Ca,Ma]=Z(!1),[Si,tr]=Z(0),or;ft(()=>{let n;if(cn&&ae.loadingPhrases!==!1){let o=x=>{Mi(x[Math.floor(Math.random()*x.length)])},d=()=>{Vn?o(Vn):process.env.HALLOWEEN_EEGG==="true"||process.env.HALLOWEEN_EEGG===!0?import("./halloween_witty_phrases-IJGE3RWX.js").then(({HALLOWEEN_WITTY_PHRASES:m})=>{Vn=m,o(Vn)}):import("./witty_phrases-EEDEYYAH.js").then(({WITTY_LOADING_PHRASES:m})=>{Vn=m,o(Vn)})};Ms||d(),n=setInterval(d,1e4)}else Mi("");return()=>{clearInterval(n)}},[cn,ae]);let[Nc,Sa]=Z(!0),[Pn,Ss]=Z(!1),[Ir,Ei]=Z(!1),[Ea,Ba]=Z(!1),[Bi,Fc]=Z(null),[vi,nr]=Z(0),[va,Di]=Z([]),un=rt(null),Oo=rt(!1);ft(()=>()=>{un.current&&clearTimeout(un.current)},[]);let Es=rt(!1),[rr,Bs]=Z(null),[Da,vs]=Z(null),[$c,Ia]=Z(null);ft(()=>nr(0),[w]);let[Dt,Aa]=Z(()=>{let n={id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0},o=process.cwd()===oi.homedir(),d=(()=>{let m=process.cwd().toLowerCase();if(process.platform==="win32"){let B=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 m.startsWith(B)||m.startsWith(u)||m.startsWith(a)}else return m==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(u=>m.startsWith(u))})(),x=[n];return d?x.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&&x.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${oi.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please open FluxFlow in project folder.`,isHomeWarning:!0}),x}),I=n=>{Aa(o=>{let d=typeof n=="function"?n(o):n;if(d.length>1){let x=d[d.length-1],m=d[d.length-2];if(x?.text?.includes("Request Cancelled")&&m?.text?.includes("Request Cancelled"))return d.slice(0,-1)}return d})},Po=rt(null),[Ii,ka]=Z(""),[Ai,ki]=Z(!1),Li=rt(""),Oi=rt(null);ft(()=>{if(Dt.length===0)return;let n=Dt[Dt.length-1];if(n&&(n.role==="agent"||n.role==="assistant")){let d=(n.text||"").match(/\[ANSWER\]([\s\S]*?)(?:\[\/ANSWER\]|$)/i);if(d){let x=d[1].trim();x&&x!==Li.current&&(ka(x),Li.current=x,Oi.current!==n.id&&ki(!0))}}},[Dt]);let[Ko,N]=Z(Dt.length),[mn,Ds]=Z(0),Uc=rt([]),Rt=rt({completedIndex:0,columns:0,historicalBlocks:[],seenSelections:new Set,chatId:"",clearKey:0,theme:""}),Pi=Gn(()=>{let n=j.columns||80,o=/Selection: (.*)/,d=[],x=new Set,m=Rt.current.columns!==n,B=Ko<Rt.current.completedIndex,u=Rt.current.chatId!==bt,a=Rt.current.clearKey!==mn,h=Rt.current.theme!==ae.theme;if(m||B||u||a||h){let z=Dt.slice(0,Ko);for(let Y=0;Y<z.length;Y++){let R=z[Y];if(R.isAskRecord&&R.text){let X=R.text.match(o);if(X&&X[1].trim()){let je=X[1].trim();if(x.has(je))continue;x.add(je)}}let te=lr(R,n);for(let X=0;X<te.completed.length;X++)d.push(te.completed[X]);for(let X=0;X<te.active.length;X++)d.push(te.active[X])}Rt.current={completedIndex:Ko,columns:n,historicalBlocks:d,seenSelections:new Set(x),chatId:bt,clearKey:mn,theme:ae.theme}}else if(d=Rt.current.historicalBlocks,x=Rt.current.seenSelections,Ko>Rt.current.completedIndex){d=[...d],x=new Set(x);let z=Dt.slice(Rt.current.completedIndex,Ko);for(let Y=0;Y<z.length;Y++){let R=z[Y];if(R.isAskRecord&&R.text){let X=R.text.match(o);if(X&&X[1].trim()){let je=X[1].trim();if(x.has(je))continue;x.add(je)}}let te=lr(R,n);for(let X=0;X<te.completed.length;X++)d.push(te.completed[X]);for(let X=0;X<te.active.length;X++)d.push(te.active[X])}Rt.current={completedIndex:Ko,columns:n,historicalBlocks:d,seenSelections:x,chatId:bt,clearKey:mn}}let C=Dt.slice(Ko),U=[],H=[];for(let z=0;z<C.length;z++){let Y=C[z];if(Y.isAskRecord&&Y.text){let te=Y.text.match(o);if(te&&te[1].trim()){let X=te[1].trim();if(x.has(X))continue}}let R=lr(Y,n);for(let te=0;te<R.completed.length;te++)U.push(R.completed[te]);for(let te=0;te<R.active.length;te++)H.push(R.active[te])}if(_.current){let z=lr(_.current,n);for(let Y=0;Y<z.completed.length;Y++)U.push(z.completed[Y]);for(let Y=0;Y<z.active.length;Y++)H.push(z.active[Y])}let V=U.length===0?d:d.concat(U);return V.length>=75e3&&(V=[...V],V.push({key:`memory-warning-block-${V.length}`,msg:{role:"system",text:"\u26A0\uFE0F MEMORY WARNING: CHAT IS GETTING VERY LONG",subText:`This session has reached ${V.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:V,active:H}},[Dt,Ko,j.columns,mn,bt,ue]),La=Gn(()=>{if(!go||!kn)return!1;let n=kn.trim();return n.endsWith("?")||n.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(n)||/\([yYnN]\)\s*$/.test(n)},[go,kn]);mc((n,o)=>{if(!(n==="\x1B[I"||n==="\x1B[O"||n==="[I"||n==="[O")){if(o.ctrl&&(n.toLowerCase()==="r"||n===""||n==="")){Ll();return}if(yt==="stats"){if(In==="dailyModelBreakdown"||In==="modelBreakdown"){if(o.tab&&!o.shift){Jn(x=>x==="dailyModelBreakdown"?"modelBreakdown":"dailyModelBreakdown"),fo(0);return}if(o.space||n===" "){Jn(x=>x==="dailyModelBreakdown"?"daily":"monthly"),fo(0),Rn("");return}if(o.escape){if(Zn){Rn(""),fo(0);return}J("chat");return}if(o.upArrow){fo(x=>Math.max(0,x-1));return}if(o.downArrow){fo(x=>Math.min(We.current,x+1));return}if(o.backspace||o.delete){Rn(x=>x.slice(0,-1)),fo(0);return}if(n&&n!==" "&&!o.space&&!o.ctrl&&!o.meta&&n.length===1&&n.charCodeAt(0)>=32){Rn(x=>x+n),fo(0);return}return}if(o.tab&&!o.shift){Jn(x=>x==="daily"?"monthly":"daily"),fo(0);return}if(o.space||n===" "){Jn(x=>x==="daily"?"dailyModelBreakdown":"modelBreakdown"),fo(0),Rn("");return}if(o.upArrow){fo(x=>Math.max(0,x-1));return}if(o.downArrow){fo(x=>Math.min(We.current,x+1));return}}if(Pe){(o.return||o.escape)&&(_e.current=!0,Ze(null));return}if(ce){let d=nn(),x=ta(d);if(o.upArrow)fe(m=>m>0?m-1:x.length-1);else if(o.downArrow)fe(m=>m<x.length-1?m+1:0);else if(o.return){let m=x[pe];if(m.action==="dismiss")Se(!1);else if(m.url){let B=process.platform==="win32"?`start ${m.url}`:process.platform==="darwin"?`open ${m.url}`:`xdg-open ${m.url}`;Io(B),Se(!1)}}return}if(o.tab&&go){bi(d=>!d);return}if(er&&go){let d=o.pageUp||n==="\x1B[5~"||n==="[5~",x=o.pageDown||n==="\x1B[6~"||n==="[6~",m=o.ctrl&&(n==="o"||n==="");if(d||x||m)return;if(o.return)if(Fn)to("\r");else{let B=process.platform==="win32";to(B?`\r
66
+ `:`
67
+ `),Ln(u=>u+`
68
+ `)}else if(o.backspace||o.delete)Fn?to("\x7F"):(to("\b \b"),Ln(B=>B.slice(0,-1)));else if(o.upArrow)to(o.shift?"\x1B[1;2A":"\x1B[A");else if(o.downArrow)to(o.shift?"\x1B[1;2B":"\x1B[B");else if(o.rightArrow)to(o.shift?"\x1B[1;2C":"\x1B[C");else if(o.leftArrow)to(o.shift?"\x1B[1;2D":"\x1B[D");else if(o.escape)to("\x1B");else if(o.ctrl&&n){let B=n.toLowerCase().charCodeAt(0);B>=97&&B<=122?to(String.fromCharCode(B-96)):to(n)}else n&&(to(n),Fn||Ln(B=>B+n));return}if(yt==="providerBudgetSelect"){let d=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"];if(o.upArrow){yr(x=>(x-1+d.length)%d.length);return}else if(o.downArrow){yr(x=>(x+1)%d.length);return}else if(n===" "){let x=d[ni];ri(m=>({...m,[x]:!m[x]}));return}else if(o.return){let x=d.filter(B=>ds[B]);if(x.length===0)return;let m={...Fe,providerBudgets:{...Fe.providerBudgets||{},__useProvider:!0}};uo(m),ra(x),sa(0),yr(0),J("providerBudgetFlow");return}else if(o.escape){J("budgetTypeSelect");return}return}if(yt==="providerBudgetFlow"){let d=bn.length,x=d*4+1;if(o.upArrow){mo(m=>m===x-1?Math.max(0,(d-1)*4):m>=4?m-4:m);return}else if(o.downArrow){mo(m=>m===x-1?m:m+4<x-1?m+4:x-1);return}else if(o.leftArrow){mo(m=>m===x-1?m:m%4>0?m-1:m);return}else if(o.rightArrow||o.tab){mo(m=>m===x-1?m:m+1<x?m+1:m);return}else if(o.return){if(Tn===x-1){let m=Fe.providerBudgets||{},B={__useProvider:!0};for(let h of bn){let C=Kn[h]||{};B[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={...Fe,providerBudgets:B};uo(u),Ft({apiTier:ut,quotas:u}),J(Ao==="settings"?"resetMode":"budgetResetMode")}else mo(m=>Math.min(x-1,m+1));return}else if(o.escape){J("providerBudgetSelect");return}return}if(o.escape){if(Ai){if(ki(!1),Dt.length>0){let d=Dt[Dt.length-1];d&&(Oi.current=d.id)}return}if(it.length>0&&yt==="chat"){Q(!0);return}if(g){S(!1);return}if(Pn||go||ro||an)Es.current=!0,pl(),sl(),ro&&(ro.resolve("deny"),On(null)),an&&(an.resolve(null),ys(null)),Ba(!1),Bi&&clearTimeout(Bi);else if(yt==="revert")J("chat"),nr(0);else if(yt!=="chat"&&yt!=="settings")J("chat");else{if(!_t&&Yn===1){wr(0),sn("");return}nr(d=>{let x=d+1;return x===1?(un.current&&clearTimeout(un.current),un.current=setTimeout(()=>nr(0),2e3)):x===2&&(un.current&&clearTimeout(un.current),nr(0),w.length>0?b(""):cr.getChatHistory(bt).then(m=>{m.length>0?(Di(m.reverse()),J("revert")):I(B=>(N(B.length+1),[...B,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
69
+ \u2800`,isMeta:!0}]))})),x})}}if(it.length>0&&yt==="chat"){if(o.upArrow){he(d=>{let x=d>0?d-1:it.length-1,m=0;for(;x!==d&&m<it.length;){let B=it[x],u=B?.cmd||B||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))x=x>0?x-1:it.length-1,m++;else break}return x});return}if(o.downArrow){he(d=>{let x=d<it.length-1?d+1:0,m=0;for(;x!==d&&m<it.length;){let B=it[x],u=B?.cmd||B||"";if(typeof u=="string"&&u.trimStart().startsWith("---"))x=x<it.length-1?x+1:0,m++;else break}return x});return}if(o.return)return}if(o.tab&&yt==="chat"){if(it.length>0){let d=it[de]||it[0],x=w.split(" ");if(x.length===1)b(d.cmd+" ");else{let m=x.slice(0,-1);b(m.join(" ")+" "+d.cmd+" ")}he(0),F(m=>m+1);return}else if(w.trim()===""){let d=Date.now();if(d-ne.current<500)return;ne.current=d;let x=["Flux","Flow","ICU","FluxCU"],m=(x.indexOf(v)+1)%x.length,B=x[m>=0?m:0];G(B),I(u=>[...u,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Rs(B)}
70
+ \u2800`,isMeta:!0}]);return}}if(o.ctrl&&n==="c"&&yt!=="exit"){if(w.length>0){b("");return}if(o.shift){J("exit"),S(!1);return}g?(J("exit"),S(!1)):S(!0)}o.return&&(o.shift||o.ctrl||o.meta||o.leftAlt||o.rightAlt)&&b(d=>d.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
71
+ `)}}),ft(()=>{process.stdout.write("\x1B[?1004h");let n=o=>{let d=o.toString();d.includes("\x1B[I")?(oo(!0),tt.current=Date.now()):d.includes("\x1B[O")&&(oo(!1),tt.current=Date.now())};return process.stdin.on("data",n),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",n)}},[]);let Ar=rt(ae.theme);ft(()=>{Ar.current&&Ar.current!==ae.theme?(Ar.current=ae.theme,l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h")),Ds(n=>n+1),Fo()):Ar.current=ae.theme},[ae.theme,l]),ft(()=>{async function n(){al(C=>{let U=C?.reason||"cwd_mismatch";ge.current=U,Se(!1),_e.current||Ze(U)});try{let C=JSON.parse(xt.readFileSync(Ot.join(process.cwd(),"package.json"),"utf8"));$s(co||C.version||"2.0.0")}catch{$s("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),await Yl()||(I(C=>(N(C.length+1),[...C,{id:"setup-"+Date.now(),role:"system",text:"\u2726 Installing Required dependencies... (One-time setup)",isMeta:!0}])),await jl(),I(C=>(N(C.length+1),[...C,{id:"setup-done-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m All dependencies installed successfully.
72
+ \u2800`,isMeta:!0}])));let o=await Os();bs.current=o.systemSettings?.allowExternalAccess??!1,Ts.current=o.systemSettings?.memory??!0,le.mode?G(le.mode):G(o.mode),k(o.display??0),le.thinking?wt(le.thinking):wt(o.thinkingLevel);let d=le.provider||o.aiProvider||"Google";Go(d);let m=(o.quotas?.providerTiers||{})[d]||o.apiTier||"Free";if(q.current=o.activeModel,le.model)qt(le.model);else if(le.provider){let C=eo(d,m);qt(C)}else qt(o.activeModel);pn(o.showFullThinking),no(m),uo(o.quotas||{limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}});let B={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...o.systemSettings||{}};le.memory==="on"?B.memory=!0:le.memory==="off"&&(B.memory=!1),d==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&(B.memory=!1,I(C=>[...C,{role:"system",text:`\u2726 MEMORY
73
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Currently not available.
74
+ \u2800`,isMeta:!0}])),le.package&&(B.updateManager=le.package),le.autoDel&&(B.autoDeleteHistory=le.autoDel),le.autoExec==="on"?B.autoExec=!0:le.autoExec==="off"&&(B.autoExec=!1),le.externalAccess==="on"?B.allowExternalAccess=!0:le.externalAccess==="off"&&(B.allowExternalAccess=!1),le.playground&&(B.allowExternalAccess=!1,B.memory=!1),It(B),si(o.profileData),Cr(o.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""}),cs({enabled:!1,model:"Default",provider:"",baseUrl:"",...o.autoCompletion||{}});let u=le.key;if(u||(u=await zo(d)),d==="c_openai"){let C=u||"";Xt(C),$o(C,{aiProvider:d,onIDEApproval:Lo})}else u&&(Xt(u),$o(u,{aiProvider:d,onIDEApproval:Lo}));if(o.systemSettings?.autoDeleteHistory&&cl(o.systemSettings.autoDeleteHistory),le.playground||(Xr(An).catch(()=>{}),xt.remove(Ot.join(Co,"playground")).catch(()=>{})),we(!1,B),await Promise.all([Zi(),cr.recoverCrashedTransaction()]),le.resume){let C=await Jo(),U=le.resume;if(C[U]){Oo.current=!0,vr(U);let H=await ur(U);Cn.current=Zt-H.total,Sn.current=xo,Bn.current=ln,yn(H.total),Mn(0),En(0),jo({tokens:H.context}),Oo.current=!1;let V=[...C[U].messages];V[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||V.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),I(V),J("chat"),I(Y=>{let R=[...Y,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
75
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '${U}'.
76
+ \u2800`,isMeta:!0}];return N(R.length),R})}else I(H=>[...H,{id:"sys-err-"+Date.now(),role:"system",text:`\u2726 Chat session [${U}] not found. Started new session.
77
+ \u2800`,isMeta:!0}])}if(le.playground){let C=Ot.join(Co,"playground");try{xt.ensureDirSync(C),process.chdir(C)}catch{}let U=await Jo();if(U[An]){Oo.current=!0;let H=await ur(An);Cn.current=Zt-H.total,Sn.current=xo,Bn.current=ln,yn(H.total),Mn(0),En(0),jo({tokens:H.context}),Oo.current=!1;let V=[...U[An].messages];V[0]?.isLogo||V.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),I(V),I(z=>{let Y=[...z,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND Session restored
78
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m CWD locked to: '${C}'.
79
+ \u2800`,isMeta:!0}];return N(Y.length),Y})}else I(H=>{let V=[...H,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND Mode active
80
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m CWD locked to: 'FluxFlow/playground'.
81
+ \u2800`,isMeta:!0}];return N(V.length),V})}let a=nn();if(!["Terminal","Windows Terminal"].includes(a)){let C=Zl(a);if(C)try{let U=[];if(xt.existsSync(C)){let H=xt.readFileSync(C,"utf8").trim();H&&(U=Rl(H))}Tc(U)?ns="Shift + Enter":J("keybindingsPrompt")}catch{}}gt(!1)}n()},[]),ft(()=>{let n;return g&&(p(10),n=setInterval(()=>{p(o=>o<=1?(S(!1),0):o-1)},1e3)),()=>{n&&clearInterval(n)}},[g]),ft(()=>{if(!dt){let n=le.model&&qe===le.model?q.current:qe,o=ae;le.playground&&(o={...ae,allowExternalAccess:bs.current,memory:Ts.current}),Ft({mode:v,thinkingLevel:Ye,aiProvider:$,activeModel:n||qe,showFullThinking:rn,systemSettings:o,profileData:wn,imageSettings:ko,autoCompletion:Qn,apiTier:ut})}},[v,Ye,$,qe,rn,ae,wn,ko,Qn,dt,le,ut]);let Ni=async n=>{let o=n.trim(),d={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:x,minLength:m}=d[$]??{prefix:"",minLength:0},B=($==="Ollama"||$==="9router")&&(o.trim()==="LOCAL"||o.trim()===""),u=$==="c_openai",a=B?"LOCAL":o;if(u){let h=o.trim().replace(/\/+$/,""),C={...ae,customOpenAIBaseUrl:h,memory:!1};It(C);let H=await zo("c_openai")||"";Xt(H),$o(H,{aiProvider:"c_openai",onIDEApproval:Lo});let V=eo("c_openai",ut)||"";qt(V),await Ft({mode:v,thinkingLevel:Ye,aiProvider:"c_openai",activeModel:V,showFullThinking:rn,systemSettings:C,profileData:wn,imageSettings:ko,autoCompletion:Qn,apiTier:ut}),I(z=>[...z,{role:"system",text:`\u2726 Custom (OpenAI) Base URL saved!
82
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${h}${V?`
83
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${V}`:""}
84
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom (OpenAI).
85
+ \u2800`,isMeta:!0}]),sn("");return}if(B||o.startsWith(x)&&o.length>=m){await Ls($,a),Xt(a),$o(a,{aiProvider:$,onIDEApproval:Lo});let h="gemma-4-31b-it";$==="OpenRouter"?h="google/gemma-4-31b-it:free":$==="DeepSeek"?h="deepseek-v4-flash":$==="NVIDIA"?h="deepseek-ai/deepseek-v4-flash":$==="Ollama"||$==="9router"?h=qe||"":($==="InferX"||$==="SenseNova"||$==="AIHubMix"||$==="Poolside"||$==="ExpLabs"||$==="TokenHarbor"||$==="Infron"||$==="APInex")&&(h=eo($,ut)||""),qt(h);let C={...ae};B&&$==="Ollama"&&(C={...C,ollamaEndpoint:"Local"},It(C)),($==="Ollama"||$==="InferX"||$==="SenseNova"||$==="AIHubMix"||$==="Poolside"||$==="9router"||$==="ExpLabs"||$==="TokenHarbor"||$==="Infron"||$==="APInex")&&(C={...C,memory:!1},It(C));let U="";if($==="9router"){let H=await Zs();H.ok||(U=`
86
+
87
+ \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${H.url}.\x1B[39m
88
+ \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`)}I(H=>[...H,{role:"system",text:`\u2726 ${$} API Key saved successfully! ${h?`
89
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model set to ${h}.`:""}${B&&$==="Ollama"?`
90
+ \u2726 Ollama Endpoint switched to Local.
91
+ \u2514\u2500\u2800`:`
92
+
93
+ \u2726\u2800`}${$==="Ollama"||$==="InferX"||$==="SenseNova"||$==="AIHubMix"||$==="Poolside"||$==="9router"||$==="ExpLabs"||$==="TokenHarbor"||$==="Infron"||$==="APInex"?`Memory is not available with ${$}.
94
+ \u2514\u2500\u2800`:""}Initialization complete.${U}
95
+ \u2800`,isMeta:!0}])}else I(h=>[...h,{role:"system",text:`\u2726 INVALID KEY
96
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${$} API key must start with "${x}" and be at least ${m} characters long.`,isMeta:!0}]),sn("")},kr=rt(ei);ft(()=>{if(yt==="exit"){(async()=>{let d=Date.now(),x=Math.floor((d-kr.current)/1e3);x>=1&&(await fn("duration",x),kr.current+=x*1e3),await Ji()})();let o=setTimeout(()=>{process.exit(0)},50);return()=>clearTimeout(o)}},[yt]),ft(()=>{let n=setInterval(async()=>{if(!dt){let o=Date.now(),d=Math.floor((o-kr.current)/1e3);d>=1&&(await fn("duration",d),kr.current+=d*1e3),zi()}},5e3);return()=>clearInterval(n)},[dt]);let Fi=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/kill",desc:"Kill a process by PID",subs:jn.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"},...le.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:Qt($,qe,"Low")!==null?`Low (${Qt($,qe,"Low")})`:"Low",desc:"Quick Reasoning"},{cmd:"Medium",display:Qt($,qe,"Medium")!==null?`Medium (${Qt($,qe,"Medium")})`:"Medium",desc:"Balanced Reasoning"},{cmd:"High",display:Qt($,qe,"High")!==null?`High (${Qt($,qe,"High")})`:"High",desc:"Deep Reasoning"},{cmd:"custom",display:Qt($,qe,"xHigh")!==null?`Custom (${Qt($,qe,"xHigh")})`:"Custom",desc:"Custom Reasoning Value"}]},{cmd:"/model",desc:"Select Agent Model",subs:v==="ICU"||v.toLowerCase()==="fluxcu"?Qo($,ut).filter(n=>Fr(n.cmd||n)):Qo($,ut)},{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:"/profile",desc:"Edit developer persona"},{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"}]}],$i=async(n,o=!1)=>{if(!o&&it.length>0){let m=it[de]||it[0],B=n.split(" ");if(B.length===1)b(m.cmd+" ");else{let u=B.slice(0,-1);b(u.join(" ")+" "+m.cmd+" ")}he(0),F(u=>u+1);return}Es.current=!1;let d=n.replace(/\r\n/g,`
97
+ `).replace(/\r/g,`
98
+ `).trimEnd();if(d.endsWith("\\")){b(d.slice(0,-1)+`
99
+ `);return}let x=d.replace(/\\\s*\n/g,`
100
+ `).split(/\r?\n/).map(m=>m.replace(/\\$/,"")).join(`
101
+ `);if(x.trim()){if(Pn){let m=x.trim();if(m.startsWith("/btw")){if(m.replace(/^\/btw\s*/,"").trim().length<=3){I(u=>(N(u.length+1),[...u,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
102
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Inquiry question must be more than 3 characters.
103
+ \u2800`,isMeta:!0}])),b("");return}}else if(m.startsWith("/")){I(B=>(N(B.length+1),[...B,{id:"hint-err-"+Date.now(),role:"system",text:`\u2726 RESTRICTED
104
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Steering Hints cannot start with '/'.
105
+ \u2800`,isMeta:!0}])),b("");return}Bs(m),Po.current=m,b("");return}if(!_t&&!($==="c_openai"&&ae.customOpenAIBaseUrl)){Ni(x),sn("");return}if(x.startsWith("/")){b("");let m=x.split(" "),B=m[0]?.toLowerCase();switch(B){case"/quit":{J("exit");break}case"/resume":{if(m[1]){let u=m[1];(async()=>{let h=await Jo(),C=h[u]||Object.values(h).find(U=>U.name.toLowerCase()===u.toLowerCase());if(C){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let z=C?.name||"",Y=z&&!z.startsWith("flow-")&&!z.startsWith("Session ")?z:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${Y}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${Y}\x07`)}Fo(),Oo.current=!0,vr(u);let U=await ur(u);Cn.current=Zt-U.total,Sn.current=xo,Bn.current=ln,yn(U.total),Mn(0),En(0),jo({tokens:U.context}),Oo.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}),I(H),I(z=>[...z,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
106
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${u}.
107
+ \u2800`,isMeta:!0}]),N(0)}else I(U=>[...U,{id:"err-"+Date.now(),role:"system",text:`\u2726 ERROR: Session [${u}] not found.
108
+ \u2800`,isMeta:!0}])})()}else J("resume");break}case"/move":{if(!le.playground){I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
109
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '/move' is only available in playground mode.
110
+ \u2800`,isMeta:!0}]));break}if(!le.originalCwd){I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
111
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Original CWD not found.
112
+ \u2800`,isMeta:!0}]));break}let u=Ot.join(Co,"playground"),a=Ot.join(le.originalCwd,"playground-export");(async()=>{try{I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 EXPORTING PLAYGROUND CONTENT
113
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${a}
114
+ `,isMeta:!0}])),await xt.ensureDir(a);let C=["node_modules",".git",".venv","venv","env",".next","dist","build",".cache"];await xt.copy(u,a,{overwrite:!0,filter:U=>{let H=Ot.relative(u,U);return H?!H.split(Ot.sep).some(z=>C.includes(z)):!0}}),I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 SUCCESS
115
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m playground content copied to ${a}
116
+ `,isMeta:!0}]))}catch(C){I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 FAILED TO MOVE CONTENT
117
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${C.message}
118
+ `,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"))),I([{id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}]),N(1),Ds(u=>u+1),Fo(),Rt.current={completedIndex:0,columns:j.columns,historicalBlocks:[],seenSelections:new Set,chatId:bt,clearKey:mn+1},le.playground){if(le.playground=!1,Xr(An).catch(()=>{}),le.originalCwd)try{process.chdir(le.originalCwd),I(u=>{let a=[...u,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
119
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Restored Working Directory to ${le.originalCwd}
120
+ \u2800`,isMeta:!0}];return N(a.length),a})}catch{}setTimeout(()=>{xt.emptyDir(Ot.join(Co,"playground")).catch(u=>{I(a=>{let h=[...a,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
121
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear session: ${Co+"/playground"}`,isMeta:!0}];return N(h.length),h})})},500),It(u=>({...u,allowExternalAccess:bs.current,memory:Ts.current}))}vr(Us()),jo({tokens:0}),E(!1),yn(0),Mn(0),En(0),Cn.current=Zt,Sn.current=xo,Bn.current=ln,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":{cr.getChatHistory(bt).then(u=>{if(u.length>0)Di(u.reverse()),J("revert");else{let a=ht(2);I(h=>(N(h.length+1),[...h,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
122
+ \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(m[1]){let u=m[1].toLowerCase(),a="Flux";u==="flow"?a="Flow":u==="icu"?a="ICU":u==="fluxcu"?a="FluxCU":u==="flux"&&(a="Flux"),G(a);let h=ht(2);I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Rs(a)}.
123
+ \u2800`,isMeta:!0}]))}else J("mode");break}case"/display":{if(m[1]){let u=m[1].toLowerCase(),a=0;u==="secondary"||u==="1"||u==="2"?a=1:a=0,k(a),Ft({display:a}).catch(()=>{});let h=a===0?"Primary (Display 1)":"Secondary (Display 2)";I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${h}.
124
+ \u2800`,isMeta:!0}]))}else J("display");break}case"/image_deprecated":{if(m[1]?.toLowerCase()==="stats"){let u=ht(2);if(ko.keyType==="Custom")I(a=>(N(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}])),Io("start https://enter.pollinations.ai/#pollen");else try{let a=await Ri();I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((a.limit*1e3).toFixed(0))} credits
125
+ \u2022 Spent (Last 1hr): ${Number((a.totalSpent*1e3).toFixed(0))} credits
126
+ \u2022 Remaining: ${Number((a.remaining*1e3).toFixed(0))} credits
127
+ \u2022 Requests (Last 1hr): ${a.activeCallsCount} requests
128
+ `+(a.nextResetMin>0?`\u2022 Refreshes in: ${a.nextResetMin}m`:""),isMeta:!0}]))}catch{I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(m[1]?.toLowerCase()==="setup")if(m[2]?.toLowerCase()==="key")if(m[3]){let u=["default","custom"].find(a=>a===m[3].toLowerCase());if(u){let a=u==="default"?"Default":"Custom";Cr(C=>({...C,keyType:a}));let h=ht(2);I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`[SYSTEM] Image key strategy set to ${a}`,isMeta:!0}])),a==="Custom"&&(Jt({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:ko.apiKey||"",returnView:"chat"}),J("input"))}else{let a=ht(2);I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let u=ht(2);I(a=>(N(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(m[2]?.toLowerCase()==="quality")if(m[3]){let u=["low","low-high","medium","medium-high","high","ultra","premium"].find(a=>a===m[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];Cr(U=>({...U,quality:h}));let C=ht(2);I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`[SYSTEM] Image quality set to ${h}`,isMeta:!0}]))}else{let a=ht(2);I(h=>(N(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=ht(2);I(a=>(N(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=ht(2);I(a=>(N(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let u=ht(2);I(a=>(N(a.length+1),[...a,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let u;if(m[1]){let a=m.slice(1),h=a.includes("--bypass")||a.includes("-b"),C=a.includes("--force")||a.includes("-f"),U=a.findIndex(Y=>Y==="--map"||Y==="-m");if(U!==-1){let Y=a.slice(0,U).join(" ").trim(),R=a.slice(U+1).join(" ").trim(),te=["fast","low","medium","standard","high","xhigh","custom","max"];if(!Y||!R)I(X=>(N(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mINVALID USAGE\x1B[0m
129
+ \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)
130
+ \u2800`,isMeta:!0}]));else if(!te.includes(Y.toLowerCase()))I(X=>(N(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mUNKNOWN LEVEL\x1B[0m
131
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unknown level "\x1B[33m${Y}\x1B[0m" to map. Available: \x1B[36mLow, Medium, High, Custom\x1B[0m.
132
+ \u2800`,isMeta:!0}]));else if(R.toLowerCase()==="rm"||R.toLowerCase()==="--remove"||R.toLowerCase()==="-rm"){let X=Y.toLowerCase()==="custom"?"xHigh":Y,je=ll($,qe,X);je.success?I(Ne=>(N(Ne.length+1),[...Ne,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapping Removed:
133
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Target: \x1B[36m${$}::${qe}\x1B[0m
134
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Removed mapping for: \x1B[33m${Y}\x1B[0m
135
+ \u2800`,isMeta:!0}])):I(Ne=>(N(Ne.length+1),[...Ne,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mFAILED TO REMOVE MAPPING\x1B[0m
136
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${je.reason}
137
+ \u2800`,isMeta:!0}]))}else{let X=Y.toLowerCase()==="custom"?"xHigh":Y,je=isNaN(Number(R))?R:Number(R),Ne=il($,qe,X,je);Ne.success?I($e=>(N($e.length+1),[...$e,{id:Date.now(),role:"system",text:`\u2726 Thinking Level Mapped:
138
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Target: \x1B[36m${$}::${qe}\x1B[0m
139
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Mapping: \x1B[33m${Y}\x1B[0m \u2794 \x1B[32m${R}\x1B[0m
140
+ \u2800`,isMeta:!0}])):I($e=>(N($e.length+1),[...$e,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mFAILED TO SAVE MAPPING\x1B[0m
141
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${Ne.reason}
142
+ \u2800`,isMeta:!0}]))}break}let H=a[0].toLowerCase();if(!["fast","low","medium","standard","high","xhigh","custom","max"].includes(H)){I(Y=>(N(Y.length+1),[...Y,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mUNKNOWN THINKING LEVEL\x1B[0m
143
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Level "\x1B[33m${a[0]}\x1B[0m" is not supported. Available levels: \x1B[36mLow, Medium, High, Custom\x1B[0m.
144
+ \u2800`,isMeta:!0}]));break}if(H==="standard"&&(H="medium"),H==="custom"&&(H="xhigh"),u=H.charAt(0).toUpperCase()+H.slice(1),H==="xhigh"&&(u="xHigh"),u==="xHigh"&&!(Qt($,qe,"xHigh")!==null)){I(R=>(N(R.length+1),[...R,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mCUSTOM LEVEL NOT MAPPED\x1B[0m
145
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Custom Effort level is not mapped. Use \x1B[36m/thinking custom --map <target_value>\x1B[0m first.
146
+ \u2800`,isMeta:!0}]));break}let z="";if(C&&(process.env.NVIDIA_BASE_URL,z=`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Enabled Forced Reasoning.
147
+ \u2800`,process.env.forcedReasoning="true"),!h&&v==="Flow"&&u==="xHigh")I(Y=>(N(Y.length+1),[...Y,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
148
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m"${u}" is restricted in Flow mode. Switch to Flux to enable Higher Thinking Levels.
149
+ \u2800${z}.`,isMeta:!0}]));else{wt(u);let Y=ht(1),R=u==="xHigh"?Qt($,qe,"xHigh")!==null?`Custom (${Qt($,qe,"xHigh")})`:"Custom":u;I(te=>(N(te.length+1),[...te,{id:Date.now(),role:"system",text:`\u2726 ${$}
150
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${qe}.
151
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Thinking Level: ${R}.
152
+ ${z} \u2800`,isMeta:!0}]))}}else J("thinking");break}case"/model":{if(m[1]){let u=m.slice(1).join(" "),a=null,h=!1,C=null,U=u,H=/(?:^|\s)(?:--info|-i)(?:\s+(?:"([^"]*)"|'([^']*)'|\{([^}]*)\}|((?:(?!--[a-z]|-[a-z]\b).)+)))?(?=\s+--|\s+-[a-z]\b|$)/i,V=U.match(H);if(V){if(C=(V[1]??V[2]??V[3]??V[4]??"").trim(),U=(U.slice(0,V.index)+" "+U.slice(V.index+V[0].length)).trim(),C==="0")h=!0,a=null;else if(a={},C){let ie=C.split(",");for(let me of ie){let nt=me.trim().match(/^(IN|OUT|CR|CW)\s+([0-9]*\.?[0-9]+)$/i);nt&&(a[nt[1].toUpperCase()]=parseFloat(nt[2]))}}}let z=U.split(/\s+/).filter(Boolean),Y=z.some(ie=>ie==="--multimodal"||ie==="-m"||ie==="--vision"||ie==="-v"),R=z.some(ie=>ie==="--save"||ie==="-sv"||ie==="--add"),te=z.some(ie=>ie==="--remove"||ie==="-rm"),X=z.some(ie=>ie==="--rename"||ie==="-rn"||ie==="-mv"),je=z.some(ie=>ie==="--default"||ie==="-df"),Ne=z.some(ie=>ie==="--price"||ie==="-p"),$e=z.some(ie=>ie==="--raw"||ie==="-r"),Ke=z.filter(ie=>!ie.startsWith("-")),He=(ie=a)=>h?`
153
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing: \x1B[33mReset (info removed)\x1B[0m`:ie?Object.keys(ie).length>0?`
154
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing:
155
+ `+Object.entries(ie).map(([me,Xe])=>` \x1B[2m\u2022\x1B[22m \x1B[36m${me}\x1B[0m: $${Xe}`).join(`
156
+ `):C?`
157
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Pricing: \x1B[33mNo valid IN, OUT, CR, CW tokens parsed from: "${C}"\x1B[0m`:"":"";if(R||te||X||je){if(je){let ie=Ke.join(" ").trim();if(!ie)I(me=>(N(me.length+1),[...me,{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 me=Wi($,ie,Y,a);me.success?I(Xe=>{N(Xe.length+1);let nt=$==="c_openai"?ae?.customOpenAIBaseUrl||"Custom Endpoint":$.replace("c_openai","Custom Endpoint");return[...Xe,{id:Date.now(),role:"system",text:`\u2726 Default Model Set:
158
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${nt}
159
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Default Model: \x1B[32m${ie}\x1B[0m
160
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${Y?"ON":"OFF"}${He()}
161
+ \u2800`,isMeta:!0}]}):I(Xe=>(N(Xe.length+1),[...Xe,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to set default model: ${me.reason}`,isMeta:!0}]))}}else if(R){let ie=Ke.join(" ").trim();if(!ie)I(me=>(N(me.length+1),[...me,{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 me=Xi($,ie,Y,a);me.success?I(Xe=>(N(Xe.length+1),[...Xe,{id:Date.now(),role:"system",text:`\u2726 Model Saved:
162
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${$}
163
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: \x1B[32m${ie}\x1B[0m
164
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${Y?"ON":"OFF"}${He()}
165
+ \u2800`,isMeta:!0}])):I(Xe=>(N(Xe.length+1),[...Xe,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to save model: ${me.reason}`,isMeta:!0}]))}}else if(te){let ie=Ke.join(" ").trim();if(!ie)I(me=>(N(me.length+1),[...me,{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 me=Vi($,ie);me.success?I(Xe=>(N(Xe.length+1),[...Xe,{id:Date.now(),role:"system",text:`\u2726 Model Removed:
166
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${$}
167
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: \x1B[31m${ie}\x1B[0m
168
+ \u2800`,isMeta:!0}])):I(Xe=>(N(Xe.length+1),[...Xe,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to remove model: ${me.reason}`,isMeta:!0}]))}}else if(X)if(Ke.length<2)I(ie=>(N(ie.length+1),[...ie,{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 ie=Ke[0].trim(),me=Ke.slice(1).join(" ").trim(),Xe=Yi($,ie,me);Xe.success?I(nt=>(N(nt.length+1),[...nt,{id:Date.now(),role:"system",text:`\u2726 Model Renamed:
169
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${$}
170
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Old Model: \x1B[31m${ie}\x1B[0m
171
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m New Model: \x1B[32m${me}\x1B[0m
172
+ \u2800`,isMeta:!0}])):I(nt=>(N(nt.length+1),[...nt,{id:Date.now(),role:"system",text:`\x1B[31m[Error]\x1B[0m Failed to rename model: ${Xe.reason}`,isMeta:!0}]))}break}if(Ne){let ie=Ke.join(" ").trim()||qe,me=ir($,ie),Xe=$==="c_openai"?ae?.customOpenAIBaseUrl||"Custom Endpoint":$.replace("c_openai","Custom Endpoint"),nt=me&&Object.keys(me).length>0;if($e){let ye=nt?Object.entries(me).map(([be,De])=>`${be}=${De}`).join(" "):`Price not set for ${ie}`;I(be=>(N(be.length+1),[...be,{id:Date.now(),role:"system",text:ye,isMeta:!0}]));break}let W=nt?`
173
+ `+Object.entries(me).map(([ye,be])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m \x1B[36m${ye}\x1B[0m: $${be}`).join(`
174
+ `):`
175
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m \x1B[33mPrice not set\x1B[0m
176
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m \x1B[2mHint: /model ${ie} -i 'IN 0.15, OUT 0.6, CR 0.05, CW 0.1'
177
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m \x1B[2mNote: CR = Cache Read, CW = Cache Write\x1B[0m`;I(ye=>(N(ye.length+1),[...ye,{id:Date.now(),role:"system",text:`\u2726 Model Price:
178
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${Xe}
179
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model ID: \x1B[32m${ie}\x1B[0m${W}
180
+ \u2800`,isMeta:!0}]));break}if(a!==null||h){let ie=Ke.join(" ").trim();if(!ie)I(me=>(N(me.length+1),[...me,{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?ks($,ie,null):Object.keys(a).length>0&&ks($,ie,a);let me=h?null:ir($,ie),Xe=$==="c_openai"?ae?.customOpenAIBaseUrl||"Custom Endpoint":$.replace("c_openai","Custom Endpoint");I(nt=>(N(nt.length+1),[...nt,{id:Date.now(),role:"system",text:`\u2726 Model Info ${h?"Reset":"Saved"}:
181
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Provider: ${Xe}
182
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model ID: \x1B[32m${ie}\x1B[0m${He(me||a)}
183
+ \u2800`,isMeta:!0}]))}break}let ot=Ke.join(" ").trim();if(ji(Y),ot){Y&&Gi($,ot,!0);let ie=eo("Google","Free"),me=eo("Google","Paid");{qt(ot);let Xe=Y||Fr(ot),nt=Ye==="xHigh"?Qt($,ot,"xHigh")!==null?`Custom (${Qt($,ot,"xHigh")})`:"Custom":Ye,W=$==="c_openai"?ae?.customOpenAIBaseUrl||"Custom Endpoint":$.replace("c_openai","Custom Endpoint");I(ye=>(N(ye.length+1),[...ye,{id:Date.now(),role:"system",text:`\u2726 ${W}
184
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${ot}
185
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Thinking Level: ${nt}
186
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Multimodal: ${Xe?"ON":"OFF"}
187
+ \u2800`,isMeta:!0}]))}}}else J("model");break}case"/wildcard-tooling":{xe(u=>{let a=!u;return I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildcard Tooling:
188
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${a?"Enabled":"Disabled"}
189
+ \u2800`,isMeta:!0}])),a});break}case"/wildercard-tooling":{L(u=>{let a=!u;return I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildercard Tooling:
190
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${a?"Enabled":"Disabled"}
191
+ \u2800`,isMeta:!0}])),a});break}case"/settings":{J("settings");break}case"/provider":case"/providers":{as("chat"),J("selectProvider");break}case"/theme":{J("theme");break}case"/key":{J("key");break}case"/profile":{J("profile");break}case"/stats":{(async()=>{let a=await $r(),h=await Ur();xs(a),fs(h),Jn("daily"),J("stats")})();break}case"/usage":{(async()=>{try{let{openUsageDashboard:a}=await import("./usageServer-ZYJCDO27.js"),{url:h}=await a();I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Launching Token Analytics Dashboard
192
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Serving at ${h}
193
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Opening in your default browser...
194
+ \u2800`,isMeta:!0}]))}catch(a){I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
195
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to launch dashboard: ${a.message}
196
+ \u2800`,isMeta:!0}]))}})();break}case"/save":{let u,a=Dt.find(C=>C.role==="user");if(a&&a.text){let C=a.text.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").trim(),U=C.split(/\s+/),H;U.length>7?H=U.slice(0,7).join(" ")+"...":C.length>45?H=C.substring(0,45).trimEnd()+"...":H=C,u=H}let h=m.slice(1).join(" ")||u||`Session ${new Date().toLocaleTimeString()}`;$n(bt,h,Dt),I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Saved
197
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m "${h}" (ID: ${bt})
198
+ \u2800`,isMeta:!0}]));break}case"/export":{(async()=>{try{let{handleExport:a}=await import("./export-RU6LCZUB.js"),h=await a(m,{chatId:bt,messages:Dt});I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:h.message,isMeta:!0}]))}catch(a){I(h=>(N(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 Jo(),h=Object.entries(a).sort((C,U)=>(U[1].updatedAt||0)-(C[1].updatedAt||0)).map(([C,U])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${C}: ${U.name}${C===bt?" (current)":""}`).join(`
199
+ `);I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 Saved Chats:
200
+ ${h||"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No saved chats found."}
201
+ \u2800`,isMeta:!0}]))})();break}case"/memory":{if((m[1]||"view").toLowerCase()==="migrate")try{let a=Pr(sr,[]);if(!a||a.length===0){I(R=>(N(R.length+1),[...R,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
202
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No persistent memories found in memories.json to migrate.
203
+ \u2800`,isMeta:!0}]));break}let h=a.map(R=>`- ${(R.memory||"").replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim()}`).filter(R=>R!=="- ").join(`
204
+ `);if(!h){I(R=>(N(R.length+1),[...R,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
205
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No valid memory entries found to migrate.
206
+ \u2800`,isMeta:!0}]));break}xt.existsSync(ho)||xt.mkdirSync(ho,{recursive:!0});let C=Ot.join(ho,"AGENTS.md"),U="";xt.existsSync(C)&&(U=xt.readFileSync(C,"utf8"));let H=U.trimEnd(),z=`${H.length>0?`
207
+
208
+ `:""}User Memories:
209
+ ${h}
210
+ `,Y=`${H}${z}`;xt.writeFileSync(C,Y,"utf8"),I(R=>(N(R.length+1),[...R,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
211
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Successfully migrated ${a.length} memories to ${C.replaceAll("\\\\","/").replaceAll("\\","/")}
212
+ \u2800`,isMeta:!0}]))}catch(a){I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Memory Migration Failed
213
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Error: ${a.message}
214
+ \u2800`,isMeta:!0}]))}else J("memory");break}case"/files":{I(u=>(N(u.length+1),[...u,{id:"files-"+Date.now(),role:"system",text:dl(),isMeta:!0}]));break}case"/target":{I(u=>(N(u.length+1),[...u,{id:"target-"+Date.now(),role:"system",text:`\u2726 Unique Model Id for FluxFlow
215
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${$}@${qe}
216
+ \u2800`,isMeta:!0}]));break}case"/reset":{(async()=>{try{I(a=>(N(a.length+1),[...a,{id:Date.now(),role:"system",text:`\u2726 Initiating reset...
217
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Clearing logs, secrets, and settings.
218
+ \u2800`,isMeta:!0}])),xt.existsSync(Is)&&xt.removeSync(Is),xt.existsSync(As)&&xt.removeSync(As),xt.existsSync(xn)&&xt.removeSync(xn);try{xt.readdirSync(ho).length===0&&xt.removeSync(ho)}catch{}setTimeout(()=>{J("exit"),setTimeout(()=>process.exit(0),500)},500)}catch(a){I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
219
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear data: ${a.message}.
220
+ \u2800`}]))}})();break}case"/about":{let u=ht(2),a=`\u2022 FluxFlow Version: v${co}
221
+ \u2022 Status: ${Wo&&Wo!==co?`Update Available [v${Wo}]`:"Up to date"}
222
+ \u2022 Released on: ${Mc}`;I(h=>(N(h.length+1),[...h,{id:"about-"+Date.now(),role:"system",text:a,isAboutRecord:!0,isMeta:!0}]));break}case"/changelog":{let u=process.platform;Io(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${ea}`),I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Changelog
223
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${ea}.`,isMeta:!0}]));break}case"/docs":{if(!ti){I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
224
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Documentation URL is not configured.`,isMeta:!0}]));break}let u=process.platform;Io(`${u==="win32"?"start":u==="darwin"?"open":"xdg-open"} ${ti}`),I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Documentation
225
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${ti}.
226
+ \u2800`,isMeta:!0}]));break}case"/budget":{let u=m[1]?.toLowerCase();if(u==="web"||u==="gui"||u==="dashboard")(async()=>{try{let{openUsageDashboard:h}=await import("./usageServer-ZYJCDO27.js"),{url:C}=await h();I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 Token Usage & Budget Dashboard
227
+ \u2800\u2800\u2514\u2500 Opened at ${C}
228
+ \u2800`,isMeta:!0}]))}catch(h){I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2726 ERROR: Failed to launch dashboard: ${h.message}
229
+ \u2800`,isMeta:!0}]))}})();else if(u==="set")na("chat"),J("budgetTypeSelect");else if(u==="view")(async()=>{let h=await $r(),C=await Ur(),U=await Ps(Fe.resetDay||1);xs(h),fs(C),hi(U),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"}};uo(a),no("Free"),Ft({apiTier:"Free",quotas:a}),I(h=>(N(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Budgets reset successfully.
230
+ \u2800`,isMeta:!0}]))}else I(a=>(N(a.length+1),[...a,{id:Date.now(),role:"system",text:`\u2726 ERROR
231
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Usage: /budget <View|Web|Set|Reset>.
232
+ \u2800`,isMeta:!0}]));break}case"/fluxflow":{let a=m.slice(1)[0]?.toLowerCase()?.trim();if(a==="global"){let h=Ot.normalize(ho);try{xt.ensureDirSync(h)}catch{}let C=process.platform;C==="win32"?Io(`explorer "${h}"`):C==="darwin"?Io(`open "${h}"`):Io(`xdg-open "${h}"`)}else if(a==="saves"){let h=Ot.normalize(Co);try{xt.ensureDirSync(h)}catch{h=Ot.normalize(ho);try{xt.ensureDirSync(h)}catch{}}let C=process.platform;C==="win32"?Io(`explorer "${h}"`):C==="darwin"?Io(`open "${h}"`):Io(`xdg-open "${h}"`)}else I(h=>(N(h.length+1),[...h,{id:"ff-err-"+Date.now(),role:"system",text:"Usage: /fluxflow global/saves",isMeta:!0}]));break}case"/update":{if(m[1]?.toLowerCase()==="check"){we(!0);break}let a=m.includes("--latest");J("update");break}case"/gemini":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u2728 GEMINI CLI
233
+ \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
234
+ \u2800`}]))};es?u(es):import("./gemini_quotes-B5IXNP2I.js").then(({GEMINI_QUOTES:a})=>{es=a,u(es)}),b("");break}case"/meow":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F431} MEOW
235
+ \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
236
+ \u2800`}]))};ts?u(ts):import("./meow-SQBRZB7H.js").then(({MEOW_LINES:a})=>{ts=a,u(ts)}),b("");break}case"/halloween":case"/trick-or-treat":{let u=a=>{let h=a[Math.floor(Math.random()*a.length)];I(C=>(N(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F383} TRICK OR TREAT
237
+ \u2800\u2800 \x1B[2m\u2514\u2500\x1B[22m ${h}
238
+ \u2800`}]))};os?u(os):import("./halloween-EZTJXDUW.js").then(({SPOOKY_LINES:a})=>{os=a,u(os)}),b("");break}case"/compress":{b("");let u=Dt.filter(C=>(C.role==="user"||C.role==="agent"||C.role==="system")&&!String(C.id).startsWith("welcome")&&!C.isMeta).length,a=wo?.tokens||0;if(u<64||a<16384){let C=ht(2);I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 Compression skipped
239
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m History requires at least 64 messages and 16k tokens
240
+ \u2800\u2800 \u2514\u2500 Current: ${u}/64 msgs, ${a}/16384 tokens.
241
+ \u2800`,isMeta:!0}]));break}(async()=>{Ei(!0);let C=ht(2);I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:"\u2726 Compacting session history...",isMeta:!0}]));try{if(await Tl({chatId:bt,aiProvider:$,apiKey:_t,thinkingLevel:Ye,mode:v,janitorModel:Ee,systemSettings:ae,sessionStats:wo},Dt)){let V=ht(2);I(z=>{let Y=[...z,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Chat History compacted saving tokens.
242
+ \u2800`,isMeta:!0}];return N(Y.length),Y})}else I(V=>(N(V.length+1),[...V,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Compaction failed.
243
+ \u2800`,isMeta:!0}]))}catch(U){I(H=>(N(H.length+1),[...H,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Error during compaction: ${U.message}
244
+ \u2800`,isMeta:!0}]))}finally{Ei(!1)}})();break}case"/truncate":{b("");let u=0;I(a=>{let C=[...a.map(U=>{let H=U.fullText||U.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:(u++,{...U,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"})}),{id:Date.now(),role:"system",text:`\u2726 Tool Truncation...
245
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Truncated ${u} tool result(s).
246
+ \u2800`,isMeta:!0}];return $n(bt,null,C),N(C.length),C});break}case"/kill":{(async()=>{let a=m[1]?parseInt(m[1],10):null,{getProcessTree:h,killProcess:C}=await import("./process-6Y7LS2MS.js");if(!a||isNaN(a))I(U=>(N(U.length+1),[...U,{id:Date.now(),role:"system",text:`\u2726 Usage: \x1B[36m/kill <pid>\x1B[0m
247
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Select an active process PID from the autocomplete list.
248
+ \u2800`,isMeta:!0}]));else{let U=a===process.pid,H=jn.some(V=>V.pid===a&&(V.isRoot||V.url&&V.url.includes(":52991")||V.cmd&&V.cmd.includes("usage-daemon-worker")));if(U||H){let V=U?"FluxFlow (Main Process)":"Internal Process";I(z=>(N(z.length+1),[...z,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mPROTECTED PROCESS\x1B[0m
249
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m PID: \x1B[33m${a}\x1B[0m (${V})
250
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unable to kill protected core process. Use \x1B[36m/quit\x1B[0m to safely shutdown FluxFlow.
251
+ \u2800`,isMeta:!0}]));return}try{let V=await C(a);V.success?I(z=>(N(z.length+1),[...z,{id:Date.now(),role:"system",text:`\u2726 Process Terminated:
252
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m PID: \x1B[31m${a}\x1B[0m (${V.message})
253
+ \u2800`,isMeta:!0}])):I(z=>(N(z.length+1),[...z,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mFAILED TO KILL PROCESS\x1B[0m
254
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m PID: ${a}
255
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Reason: ${V.message}
256
+ \u2800`,isMeta:!0}]))}catch(V){I(z=>(N(z.length+1),[...z,{id:Date.now(),role:"system",text:`\u2726 \x1B[31mERROR\x1B[0m
257
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${V.message}
258
+ \u2800`,isMeta:!0}]))}}})();break}case"/help":{I(u=>(N(u.length+1),[...u,{id:Date.now(),role:"system",isHelpRecord:!0,isMeta:!0}]));break}case"/btw":{I(u=>(N(u.length+1),[...u,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
259
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '/btw' only available when agent is working
260
+ \u2800`,isMeta:!0}]));break}default:I(u=>(N(u.length+1),[...u,{id:Date.now(),role:"system",text:`\u2726 ERROR
261
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Unknown command: '${B}'
262
+ \u2800`,isMeta:!0}]))}}else{let m=`[Prompted on: ${new Date().toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}]`,B={id:"user-"+Date.now(),role:"user",text:`${x}
263
+
264
+ ${m}`};I(a=>(N(a.length+1),[...a,B])),(async()=>{let a=!1,h=()=>{a||(a=!0,I(V=>{let z=V[V.length-1];if(z&&z.text&&z.text.includes("Request Cancelled"))return V;let R=[...V.map(te=>te.isStreaming?{...te,isStreaming:!1}:te),{id:"cancel-"+Date.now(),role:"agent",text:`
265
+
266
+ \x1B[33m\u24D8 Request Cancelled\x1B[0m`,isMeta:!1}];return N(R.length),R}))},C=!1;Ss(!0),us(Date.now()),E(!1);let U=Date.now(),H=!0;try{let V=[...Dt,B].filter(W=>W.role!=="think"&&!W.isVisualFeedback&&!W.isMeta&&!W.isTerminalRecord&&!(W.text&&W.text.includes("[TERMINAL_RECORD]"))&&!String(W.id).startsWith("welcome")),z=[],Y=V.map((W,ye)=>{let be=W.fullText||W.text||"";if(W.role==="user"&&ye<V.length-1)if(be.includes("**CONTEXT SUMMARY OF PREVIOUS TURNS")){let De=be.indexOf("**CONTEXT SUMMARY OF PREVIOUS TURNS");if(De!==-1){let Le=be.substring(0,De).lastIndexOf("[SYSTEM METADATA]");Le!==-1?be=be.substring(Le).trim():be=be.substring(De).trim()}}else{let De=be.lastIndexOf("[USER]"),lt=be.lastIndexOf("[USER PROMPT]");De!==-1?be=be.substring(De+6).trim():lt!==-1&&(be=be.substring(lt).trim())}return{...W,text:be}}),R=0;for(;R<Y.length;){let W=Y[R];if(W.role==="user")z.push(W),R++;else{let ye=[];for(;R<Y.length&&Y[R].role!=="user";)ye.push(Y[R]),R++;let be=[],De=[],lt=null,Le=!1,Je=()=>{be.length>0&&(z.push({role:"agent",text:be.join(`
267
+ `).trim()}),be=[]),De.length>0&&(z.push({role:"system",text:De.join(`
268
+
269
+ `),...lt?{binaryPart:lt}:{}}),De=[],lt=null),Le=!1};for(let pt=0;pt<ye.length;pt++){let re=ye[pt],Te=re.role==="system"&&(re.text?.startsWith("[ACTION RESULT]")||re.text?.startsWith("[TOOL RESULT]")||re.text?.startsWith("SUCCESS:")||re.text?.startsWith("ERROR:")||re.fullText?.startsWith("[ACTION RESULT]")||re.fullText?.startsWith("[TOOL RESULT]")||re.fullText?.startsWith("SUCCESS:")||re.fullText?.startsWith("ERROR:")),Ie=re.fullText||re.text||"",Qe=Ie.trim();if(!(!Qe&&!re.binaryPart)){if(Te){let Re=!Qe.startsWith("[ACTION RESULT]")&&!Qe.startsWith("[TOOL RESULT]")?`[ACTION RESULT]: ${Qe}`:Qe;De.push(Re),re.binaryPart&&(lt=re.binaryPart)}else if(re.role==="agent"){!Le&&De.length>0&&Je();let Re=Ie.endsWith(`
270
+ `),Pt=Qe.toLowerCase().includes("tool:")||Qe.toLowerCase().includes("action:"),yo=!1;for(let No=pt+1;No<ye.length;No++){let qo=ye[No];if(qo.role==="agent"){let Nn=(qo.fullText||qo.text||"").trim();if(Nn){yo=Nn.startsWith("[");break}}}be.push(Qe),Pt&&Re&&yo?Le=!0:Le=!1}}}Je()}}let te=yl(qe,z,{profile:wn,thinkingLevel:Ye,mode:v,systemSettings:ae,janitorModel:Ee,sessionStats:wo,chatId:bt,isPlayground:!!le.playground,aiProvider:$,apiKey:_t,apiTier:ut,wildcardTooling:ve,wildercardTooling:y,cols:j.columns-6,rows:30,onTokenChunk:(W,ye)=>{let be=Date.now();if(us(be),typeof ye=="number"){li.current=ye;let De=ms.current;De.startTime||(De.startTime=be,De.totalWords=0,De.chunks=[]),De.totalWords+=ye,De.chunks||(De.chunks=[]),De.chunks.push({time:be,words:ye});let Le=be-400;if(De.chunks=De.chunks.filter(Je=>Je.time>=Le),De.chunks.length>0){let Je=De.chunks.reduce((Te,Ie)=>Te+Ie.words,0),pt=De.chunks[0].time,re=Math.max(.4,(be-pt)/1e3);De.wps=Math.round(Je/re*10)/10}}},onVisualFeedback:W=>{I(ye=>[...ye.map(De=>De.isStreaming?{...De,isStreaming:!1}:De),{id:"visual-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:W,isVisualFeedback:!0}])},onSubagentUpdate:()=>{ba(hl.map(W=>({...W})))},onExecStart:W=>{st(),at(),pi(W),Ln("")},onExecChunk:W=>{Ln(ye=>ye+W)},onExecEnd:()=>{I(W=>{if(!Dr.current)return W;let ye=ws.current||"",be=rl(ye),De=`[TERMINAL_RECORD]
271
+ COMMAND: ${Dr.current}
272
+ PTY: ${Fn}
273
+ OUTPUT: ${be.replace(/\n{3,}/g,`
274
+
275
+ `)}`,Le=[...W.map(Je=>Je.isStreaming?{...Je,isStreaming:!1}:Je),{id:"term-"+Date.now(),role:"system",text:De,isTerminalRecord:!0}];return N(Le.length),Le}),pi(null),bi(!1),Ln(""),Dr.current=null,ws.current=""},onToolResult:(W,ye)=>{if(W==="success"){if(ca(be=>be+1),ye==="generate_image"){ga(lt=>lt+1);let De={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[ko.quality]||.002;ha(lt=>lt+De)}}else W==="denied"?ma(be=>be+1):ua(be=>be+1)},onIDEApproval:Lo,onToolApproval:async(W,ye)=>{let be=dr(ye||"{}"),De=be.path||be.targetPath||be.file||"",lt=ae?.alwaysAskFiles||".env, .env.*, *.env",Je=!((W==="view_file"||W==="write_file"||W==="update_file")&&_i(De,lt))&&(wa||ae.autoExec);if(W==="exec_command"){let{command:pt}=be;return Je||pt&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(pt.trim())?"allow":new Promise(Te=>{On({tool:W,args:ye,resolve:Te}),J("terminalApproval")})}return Je?"allow":new Promise(pt=>{On({tool:W,args:ye,resolve:pt}),J("approval")})},onAskUser:async(W,ye)=>(st(),at(),new Promise(be=>{let De=!1;ys({question:W,options:ye,resolve:lt=>{De||(De=!0,I(Le=>{if(Le.some(re=>re.isAskRecord&&re.text?.includes(`Selection: ${lt}`)))return Le;let pt=[...Le,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
276
+ Question: ${W}
277
+ Selection: ${lt}`,isAskRecord:!0}];return N(pt.length),pt}),be(lt))}}),J("ask")})),onUsage:W=>{let ye=W.totalTokenCount||0,be=W.cachedContentTokenCount||0,De=W.candidatesTokenCount||0,lt=Math.max(0,ye-De);jo({tokens:ye}),ui(Le=>Le+ye),lt>0&&mi(Le=>Le+lt),be>0&&xi(Le=>Le+be),De>0&&fi(Le=>Le+De),di(Le=>Le+1)}},async()=>Po.current?Po.current:null,co),X=!1,je=null,Ne=null,$e=!1,Ke=!1,He=!1,ot=!1,ie=0,me=null,Xe=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let W of te){if(await new Promise(re=>setTimeout(re,3)),W.type==="text"&&us(Date.now()),H&&W.type==="text"&&(U=Date.now(),H=!1,ae.progressiveRendering&&Me()),W.type==="status"){if(W.content&&(W.content.includes("Steering Hint Injected")||W.content.includes("Question Forwarded"))){let re=Po.current;re&&(I(Te=>{N(Te.length+1);let Ie=re.startsWith("/btw"),Qe=Ie?re.replace(/^\/btw\s*/,""):re,Re=Ie?"[QUESTION]":"[STEERING HINT]";return[...Te,{id:"hint-"+Date.now(),role:"user",text:`${Re}
278
+ ${Qe}`,color:"cyan",isSteeringHint:!0,hintType:Ie?"QUESTION":"STEERING HINT",hintContent:Qe}]}),Bs(null),Po.current=null)}W.content?.includes("[start]")||Cs(W.content),W.content?.includes("[start]")?(clearInterval(or),tr(0),or=setInterval(()=>{tr(re=>re+1)},1e3)):W.content?.includes("[end]")&&(tr(0),clearInterval(or)),gn()&&_r(W.content),W.content==="Request Cancelled"&&(st(),at(),h());continue}if(W.type==="status_history"){Cs(W.content),gn()&&_r(W.content),I(re=>[...re,{id:"condense-"+Date.now(),role:"system",text:`\u2726 ${W.content}
279
+ \u2800`,isMeta:!0}]);continue}if(W.type==="summary_injected"){I(re=>re.map(Te=>Te.id===W.content.id?{...Te,fullText:W.content.text}:Te));continue}if(W.type==="spinner"){Sa(W.content);continue}if(W.type==="model_update"){Ia(W.content);continue}if(W.type==="turn_reset"){if(st(),at(),je=null,Ne=null,X=!1,$e=!1,Ke=!1,ot=!1,He=!1,I(re=>{let Te=re.map(Ie=>{if(Ie.isStreaming){let Qe=Ie.text?Nt(Ie.text):Ie.text,Re=Ie.fullText?Nt(Ie.fullText):Ie.fullText;return{...Ie,isStreaming:!1,text:Qe,fullText:Re}}return Ie});return N(Te.length),Te}),Fo(),global.gc){for(let re=0;re<2;re++)global.gc(),await new Promise(Te=>setImmediate(Te));f.current=Date.now()}continue}if(W.type==="interactive_turn_finished"){Ss(!1),tr(0),clearInterval(or),gn()&&_r(null),C=!0,Fo(),ae?.autoTruncateResults&&I(re=>{let Te=re.map(Ie=>{let Qe=Ie.fullText||Ie.text||"";return!Qe.startsWith("[ACTION RESULT]:")&&!Qe.startsWith("[TOOL RESULT]:")||Qe.startsWith("[ACTION RESULT]: Goal")||Qe.includes("...Success result truncated to save tokens")||Qe.startsWith("[ACTION RESULT]: USER CHOOSE")||Qe.startsWith("[ACTION RESULT]: Skill:")||Qe.startsWith("[ACTION RESULT]: DOCs:")||Qe.startsWith("[ACTION RESULT]: Markdown parsed")||Qe.startsWith("[ACTION RESULT]: Search results for [")||Qe.startsWith("[ACTION RESULT]: AI Mode temporarily failed")?Ie:{...Ie,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"}});return $n(bt,null,Te),N(Te.length),Te}),bl({profile:wn,thinkingLevel:Ye,mode:v,janitorModel:Ee,chatId:bt,systemSettings:ae,sessionStats:wo,aiProvider:$,apiKey:_t},W.data.agentText,W.data.fullAgentTextRaw,W.data.history,{onMemoryUpdated:()=>I(re=>{let Te=[...re];return Te.length>0&&(Te[Te.length-1].memoryUpdated=!0),Te}),onBackgroundIncrement:()=>ia(re=>re+1)});continue}if(W.type==="visual_feedback"){st(),at(),I(re=>{let Te=[...re,{id:"feedback-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:Nt(W.content),isVisualFeedback:!0}];return N(Te.length),Te});continue}if(W.type==="exec_start"){st(),at();continue}if(W.type==="liveTokens"){jo({tokens:W.content});continue}if(W.type==="usage"){let re=W.content.totalTokenCount||0,Te=W.content.cachedContentTokenCount||0,Ie=W.content.candidatesTokenCount||0,Qe=Math.max(0,re-Ie);jo({tokens:re}),ui(Re=>Re+re),Qe>0&&mi(Re=>Re+Qe),Te>0&&xi(Re=>Re+Te),Ie>0&&fi(Re=>Re+Ie),di(Re=>Re+1);continue}if(W.type==="tool_time"){fa(re=>re+W.content);continue}if(W.type==="tool_result"){if(at(),je=null,Ne=null,X=!1,$e=!1,Ke=!1,ot=!1,He=!1,ie=0,me=null,I(re=>{let Te=[...re,{id:"tool-"+Date.now()+"-"+Math.random().toString(36).substring(2,7),role:"system",text:Nt(W.content),fullText:Nt(W.aiContent),binaryPart:W.binaryPart,toolName:W.toolName}];return N(Te.length),Te}),W.toolName==="update_file"&&W.aiContent){let re=W.aiContent.split(`
280
+ `),Te=0,Ie=0,Qe=!1;for(let Re of re){if(Re.includes("[DIFF_START]")){Qe=!0;continue}if(Re.includes("[DIFF_END]")){Qe=!1;continue}Qe&&(/^\+\s*\d+/.test(Re)?Te++:/^\-\s*\d+/.test(Re)&&Ie++)}fn("linesAdded",Te),fn("linesRemoved",Ie)}else if(W.toolName==="write_file"&&W.aiContent){let re=W.aiContent.match(/- Stats: \[(\d+) lines/),Te=re?parseInt(re[1]):0,Ie=0;if(W.aiContent.includes("Old File contents:")){let Qe=W.aiContent.split(`
281
+ `),Re=!1;for(let Pt of Qe){if(Pt.includes("Old File contents:")){Re=!0;continue}Re&&(Pt.startsWith("- Content Preview:")||Pt.trim()===""&&!/^\s*\d+\s*\|/.test(Pt)?Re=!1:/^\s*\d+\s*\|/.test(Pt)&&Ie++)}}(Te>0||Ie>0)&&(fn("linesAdded",Te),fn("linesRemoved",Ie))}continue}let ye=W.content;if(W.type==="text"&&ye.includes("Request Cancelled")){if(global.gc){for(let re=0;re<3;re++)global.gc(),await new Promise(Te=>setImmediate(Te));f.current=Date.now()}continue}let be=ye.toLowerCase();if(ye.includes("```")&&($e=!$e),(be.includes("tool:")||be.includes("action:"))&&(Ke=!0,ie=0,me=null,(ye.includes("[tool:")||ye.includes("[action:"))&&(ie=0)),Ke){for(let re=0;re<ye.length;re++){let Te=ye[re];!me&&(Te==="'"||Te==='"'||Te==="`")?me=Te:me&&Te===me&&ye[re-1]!=="\\"&&(me=null),me||(Te==="("||Te==="["?ie++:(Te===")"||Te==="]")&&ie--)}ie<=0&&!me&&(Ke=!1)}let De=/^\s*(?:<think_fluxflow[^>]*>|<\|channel>thought|\[think_fluxflow\])/i,lt=(re,Te,Ie=1)=>{let Qe=Te>0?re[Te-1]:"",Re=Te+Ie<re.length?re[Te+Ie]:"";return Qe==="`"&&Re==="`"},Le=re=>{let Te=/(?:<\/think_fluxflow>|<channel\|>|\[\/think_fluxflow\])/gi,Ie;for(;(Ie=Te.exec(re))!==null;)if(!lt(re,Ie.index,Ie[0].length))return{index:Ie.index,length:Ie[0].length};return{index:-1,length:0}},Je=_.current?.role==="agent"&&_.current.text||"",pt=!He&&Je.trim().length===0;if(!X&&pt&&(De.test(ye)||De.test(Je+ye))){let re=De.test(ye)?ye:Je+ye,Te=re.match(De),Ie=Te.index,Qe=Te[0].length,Re=re.substring(Ie+Qe);st(),_.current=null,X=!0,He=!0,je="think-"+Date.now(),_.current={id:je,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let Pt=Le(Re);if(Pt.index!==-1){let No=Re.substring(0,Pt.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),qo=Re.substring(Pt.index+Pt.length);_.current.text=Nt(No);let Nn=_.current.startTime||Date.now();_.current.duration=Date.now()-Nn,at(),X=!1,Ne="agent-"+Date.now(),_.current={id:Ne,role:"agent",text:"",isStreaming:!0},qo&&Oe(qo)}else{let yo=Re.replace(/^\r?\n+/,"");yo&&Oe(yo)}continue}if(!X&&!He&&ye.trim().length>0&&(He=!0),X&&_.current?.role==="think"){st();let Te=(_.current.text||"")+ye,Ie=Le(Te);if(Ie.index!==-1){let Qe=Te.substring(0,Ie.index),Re=Te.substring(Ie.index+Ie.length);_.current.text=Nt(Qe);let Pt=_.current.startTime||Date.now();_.current.duration=Date.now()-Pt,at(),X=!1,Ne="agent-"+Date.now(),_.current={id:Ne,role:"agent",text:"",isStreaming:!0},Re&&Oe(Re)}else Oe(ye);continue}else if(!X){let re=ye.toLowerCase();!ot&&(re.includes("tool:")||re.includes("action:"))&&(ot=!0),!_.current||_.current.role!=="agent"?(Ne="agent-"+Date.now(),_.current={id:Ne,role:"agent",text:Nt(ye),isStreaming:!0},ke()):Oe(ye)}}let nt=Date.now();xa(W=>W+(nt-U))}catch(V){I(z=>(N(z.length+1),[...z,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${V.message}`}]))}finally{let V=Date.now()-U;if(_.current&&(_.current.workedDuration=V),Ge.current&&(await Ce(),clearInterval(Ge.current),Ge.current=null),Ss(!1),Cs(null),tr(0),clearInterval(or),at(),Es.current&&h(),Fo(),global.gc)try{for(let z=0;z<3;z++)global.gc(),await new Promise(Y=>setImmediate(Y));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")),Po.current){vs(Po.current),Bs(null);let z=Po.current;Po.current=null,I(Y=>{let R=[...Y],te=R.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]"))),R.reverse()}),J("resolution")}I(z=>{let Y=Date.now()-U,R=!1,te=[...z].reverse().map(Ne=>{let $e=Ne.isStreaming?{...Ne,isStreaming:!1}:Ne;return $e.text&&($e.text=(" "+$e.text).slice(1)),!R&&$e.role==="agent"&&(R=!0,$e={...$e,workedDuration:Y}),$e}).reverse();if(!te.some(Ne=>Ne.role==="agent"&&Ne.text?.trim().length>0)){let Ne=[...te].reverse().find($e=>$e.role==="think"&&$e.text?.trim().length>0);Ne&&te.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Ne.text,isStreaming:!1,workedDuration:Y})}let je=te.filter(Ne=>!String(Ne.id).startsWith("welcome")&&(!Ne.isMeta||Ne.text&&Ne.text.includes("Request Cancelled")));return $n(bt,null,je),N(te.length),te})}})()}b(""),E(!1)}},it=Gn(()=>{if(w.startsWith("/")&&!oe){let m=w.split(" "),B=m[m.length-1].toLowerCase();if(m.length===1){let a=B.startsWith("/")?B.slice(1):B;return Fi.filter(h=>(h.cmd.startsWith("/")?h.cmd.slice(1):h.cmd).toLowerCase().includes(a))}let u=Fi;for(let a=0;a<m.length-1;a++){let h=m[a].toLowerCase(),C=u.find(U=>U.cmd.toLowerCase()===h);if(C&&C.subs)u=C.subs;else return[]}return u.filter(a=>a.cmd.toLowerCase().includes(B))}let n=w.split(" "),o=n[n.length-1],d=o&&o.startsWith("\\@");if((o&&o.startsWith("@")||d)&&!oe){let m=o.indexOf("#"),B=m!==-1,u=d?2:1,a=B?o.substring(u,m).toLowerCase():o.slice(u).toLowerCase(),h=B?o.substring(m):"";return Ec(process.cwd()).filter(H=>H.name.toLowerCase().includes(a)).map(H=>{let V=H.relativePath.replace(/\\/g,"/"),z=V.startsWith(".")?V:"./"+V;return{cmd:(d?"\\@":"@")+"["+z+h+"]",desc:H.relativePath}})}return[]},[w,oe]);ft(()=>{let n=0;for(;n<it.length;){let o=it[n],d=o?.cmd||o||"";if(typeof d=="string"&&d.trimStart().startsWith("---"))n++;else break}he(n<it.length?n:0)},[it]);let[Lr,Or]=Z(0),Ui=rt(0);ft(()=>{let n=Ui.current>0,o=it.length>0;if(Ui.current=it.length,!o){Or(0);return}if(!n){Or(1);return}Or(it.length)},[it]),ft(()=>{if(Lr>0&&Lr<it.length){let n=setTimeout(()=>{Or(o=>Math.min(o+1,it.length))},1);return()=>clearTimeout(n)}},[Lr,it.length]),ft(()=>{if(yt!=="providerBudgetSelect")return;let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=Fe.providerBudgets||{},d=n.reduce((x,m)=>(x[m]=!!(o[m]&&(o[m].agentLimit||o[m].tokenLimit||o[m].monthlyTokenLimit||o[m].dailyCostLimit||o[m].monthlyCostLimit)),x),{});ri(d),yr(0)},[yt]),ft(()=>{if(yt!=="providerBudgetFlow")return;let n={},o=Fe.providerBudgets||{};for(let d of bn){let x=o[d]||{};n[d]={agentLimit:Xo(x.agentLimit),tokenLimit:Xo(x.tokenLimit),monthlyTokenLimit:Xo(x.monthlyTokenLimit),dailyCostLimit:Xo(x.dailyCostLimit),monthlyCostLimit:Xo(x.monthlyCostLimit)}}qn(n),mo(0)},[yt,bn]);let _c=({label:n,isSelected:o})=>{let d=n==="Cancel"||n==="Back"||n.toLowerCase().includes("exit")||n.toLowerCase().includes("back");return e.createElement(c,{marginTop:d?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(s,{color:o?"white":"gray",bold:o},o?"\u276F ":" ",n))},so=(n,o,d,x=10,m=2,B=9)=>{let u=ao(d),a=!u&&d>0?Math.min(100,o/d*100):0,h=Math.round(a),C=Math.round(h/100*x),U="\u2588".repeat(C)+"\u2591".repeat(Math.max(0,x-C)),H=r.success||"green";h>=40&&h<=80?H=r.warning||"yellow":h>80&&(H=r.danger||"red");let V=n.toLowerCase().includes("cost")||n.toLowerCase().includes("spend"),z=!V&&(n.toLowerCase().includes("token")||n.toLowerCase().includes("daily")||n.toLowerCase().includes("monthly")),Y=u?"\u221E":V?`$${Number(d).toFixed(2)}`:z?Et(d):d,R=Number(o)||0,te=V?`$${R.toFixed(R<.01&&R>0?4:2)}`:z?Et(o):o,X;return u||a===0?X="0%":a>0&&a<1?X="<1%":X=`${h}%`,e.createElement(c,{flexDirection:"row",paddingLeft:m,key:n},e.createElement(c,{width:B},e.createElement(s,{color:r.textMuted},n,": ")),e.createElement(s,{color:H},U),e.createElement(s,{color:r.textMuted}," ",X," (",te,"/",Y,")"))},Oa=()=>{switch(yt){case"settings":return e.createElement(Jr,{systemSettings:ae,setSystemSettings:It,apiTier:ut,setActiveView:J,setInputConfig:Jt,saveSettings:Ft,quotas:Fe,setMessages:I,aiProvider:$,autoCompletion:Qn,setAutoCompletion:cs,setProviderReturnView:as});case"theme":return e.createElement(Jr,{systemSettings:ae,setSystemSettings:It,apiTier:ut,setActiveView:J,setInputConfig:Jt,saveSettings:Ft,quotas:Fe,setMessages:I,aiProvider:$,autoCompletion:Qn,setAutoCompletion:cs,initialSelectingTheme:!0,onCloseTheme:()=>J("chat"),setProviderReturnView:as});case"selectProvider":return e.createElement(vt,{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:Yo}],theme:ae.theme,onSelect:async n=>{if(n.value===Yo||n.value==="settings"||n.value==="Back"){J(Yo);return}let o=n.value,d=await zo(o),x="";if(o==="9router"){let m=await Zs();m.ok||(x=`
282
+
283
+ \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${m.url}.\x1B[39m
284
+ \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(!ae.customOpenAIBaseUrl){Jt({label:"Enter Custom OpenAI Base URL (.../v1):",key:"customOpenAIBaseUrl",value:"",returnView:Yo}),J("input");return}let m=d||"";Go(o),Xt(m),$o(m,{aiProvider:o,onIDEApproval:Lo});let B=(Fe.providerTiers||{})[o]||"Free",u=eo(o,B)||"";qt(u),no(B),It(a=>({...a,memory:!1})),Ft({aiProvider:o,activeModel:u,apiTier:B,quotas:Fe,systemSettings:{...ae,memory:!1}}),I(a=>[...a,{role:"system",text:`\u2726 Switched to Custom (OpenAI)!${u?`
285
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${u}.`:""}
286
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${ae.customOpenAIBaseUrl}${ae.memory?`
287
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom (OpenAI).`:""}
288
+ \u2800`,isMeta:!0}]),J(Yo);return}if(d){Go(o),Xt(d),$o(d,{aiProvider:o,onIDEApproval:Lo});let m=(Fe.providerTiers||{})[o]||"Free",B=eo(o,m);qt(B),no(m),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"?(It(a=>({...a,memory:!1})),Ft({aiProvider:o,activeModel:B,apiTier:m,quotas:Fe,systemSettings:{...ae,memory:!1}})):Ft({aiProvider:o,activeModel:B,apiTier:m,quotas:Fe});let u=o==="c_openai"?"Custom (OpenAI)":o;I(a=>[...a,{role:"system",text:`\u2726 Switched to ${u} (cached)!${B?`
289
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${B}.`:""}${(o==="Ollama"||o==="InferX"||o==="SenseNova"||o==="AIHubMix"||o==="Poolside"||o==="9router"||o==="ExpLabs"||o==="TokenHarbor"||o==="Infron"||o==="APInex"||o==="c_openai")&&ae.memory?`
290
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with ${u}.`:""}${o==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&ae.memory?`
291
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom Endpoints.`:""}${x}
292
+ \u2800`,isMeta:!0}]),J(Yo)}else Jt({label:`Enter ${o==="c_openai"?"Custom (OpenAI)":o} API Key:`,key:"providerKey",provider:o,value:"",returnView:Yo}),J("input")},onClose:()=>J(Yo)});case"apiTier":return e.createElement(vt,{title:`Show Paid models from ${$.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] ${ut==="Paid"?"\u25CF":""}`,value:"Paid"},{label:"Back",value:"settings"}],theme:ae.theme,onSelect:n=>{if(n.value==="settings"||n.value==="Back"){J("settings");return}let o=n.value;no(o);let d={...Fe.providerTiers||{},[$]:o},x={...Fe,providerTiers:d};uo(x),Ft({apiTier:o,quotas:x}),J("settings")}});case"resetMode":return e.createElement(vt,{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:ae.theme,onSelect:n=>{if(n.value==="apiTier"||n.value==="Back"){J("apiTier");return}let o=n.value,d={...Fe,resetMode:o};uo(d),o==="Custom"?(Jt({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String(Fe.resetDay||1),returnView:"settings"}),J("input")):(Ft({apiTier:ut,quotas:d}),J("settings"))},onClose:()=>J("apiTier")});case"budgetTypeSelect":return e.createElement(vt,{title:"SELECT BUDGET TYPE",items:[{label:`Global Budget (single limit for all providers) ${ut==="Paid"&&!Fe.providerBudgets?.__useProvider?"\u25CF":""}`,value:"global"},{label:`Provider Budgets (set limits per provider individually) ${Fe.providerBudgets?.__useProvider?"\u25CF":""}`,value:"provider"},{label:"Back",value:Ao}],theme:ae.theme,onSelect:n=>{if(n.value===Ao||n.value==="Back"){J(Ao);return}if(n.value==="global"){let o={...Fe,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{__useProvider:!1}};uo(o);let d=Ao==="settings"?"resetMode":"budgetResetMode";Jt({label:"Enter Agent daily budget (tokens used):",key:"quotas",subKey:"tokenLimit",value:Xo(o.tokenLimit),returnView:Ao,next:x=>({label:"Enter Agent monthly budget (tokens used):",key:"quotas",subKey:"monthlyTokenLimit",value:Xo(x.monthlyTokenLimit),returnView:Ao,next:m=>({label:"Enter Daily Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"dailyCostLimit",value:Xo(m.dailyCostLimit),returnView:Ao,next:B=>({label:"Enter Monthly Cost Limit ($ or 0 for unlimited):",key:"quotas",subKey:"monthlyCostLimit",value:Xo(B.monthlyCostLimit),returnView:d})})})}),J("input")}else if(n.value==="provider"){let o={...Fe,agentLimit:99999999,tokenLimit:99999999999999,monthlyTokenLimit:99999999999999,providerBudgets:{...Fe.providerBudgets||{},__useProvider:!0}};uo(o),J("providerBudgetSelect")}},onClose:()=>J(Ao)});case"providerBudgetSelect":{let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=n.some(d=>ds[d]);return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(c,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.text,bold:!0},"SELECT PROVIDERS TO SET LIMITS FOR")),n.map((d,x)=>{let m=x===ni,B=!!ds[d];return e.createElement(c,{key:d,backgroundColor:m?r.highlightBg||"#2a2a2a":void 0,paddingX:1,width:"100%",flexDirection:"row"},e.createElement(s,{color:m?r.text:r.textMuted,bold:m},m?"\u276F ":" "),e.createElement(s,{color:B?r.success||"green":r.textMuted},B?"\u2611":"\u2610"),e.createElement(s,{color:m?r.text:r.textMuted,bold:m}," ",d),B&&(Fe.providerBudgets?.[d]?.agentLimit||Fe.providerBudgets?.[d]?.tokenLimit||Fe.providerBudgets?.[d]?.monthlyTokenLimit||Fe.providerBudgets?.[d]?.dailyCostLimit||Fe.providerBudgets?.[d]?.monthlyCostLimit)?e.createElement(s,{color:r.primary||"cyan"}," (budget set)"):null)}),e.createElement(c,{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=bn.length,o=n*4;return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(c,{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(c,{paddingX:1,marginTop:1,flexDirection:"row"},e.createElement(c,{width:13},e.createElement(s,{color:r.textMuted,bold:!0},"PROVIDER")),e.createElement(c,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY TOKENS")),e.createElement(c,{width:22,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY TOKENS")),e.createElement(c,{width:18,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"DAILY COST ($)")),e.createElement(c,{width:20,paddingLeft:1},e.createElement(s,{color:r.textMuted,bold:!0},"MONTHLY COST ($)"))),e.createElement(c,{paddingX:1},e.createElement(s,{color:r.borderMuted},"\u2500".repeat(93))),bn.map((d,x)=>{let m=x*4,B=x*4+1,u=x*4+2,a=x*4+3,h=Tn===m,C=Tn===B,U=Tn===u,H=Tn===a,V=h||C||U||H,z=Kn[d]?.tokenLimit??"",Y=Kn[d]?.monthlyTokenLimit??"",R=Kn[d]?.dailyCostLimit??"",te=Kn[d]?.monthlyCostLimit??"";return e.createElement(c,{key:d,flexDirection:"row",paddingX:1,marginY:0,backgroundColor:V?r.highlightBg||"#2a2a2a":void 0},e.createElement(c,{width:13,flexDirection:"row"},e.createElement(s,{color:V?r.primary||"cyan":r.text,bold:V},V?"\u276F ":" ",d)),e.createElement(c,{width:20,paddingLeft:1,flexDirection:"row"},h?e.createElement(c,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Wn,{value:z,onChange:X=>{qn(je=>({...je,[d]:{...je[d]||{},tokenLimit:X}}))},onSubmit:()=>mo(B)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:z?r.text:r.textMuted},"[ ",z||"0 (\u221E)"," ]")),e.createElement(c,{width:22,paddingLeft:1,flexDirection:"row"},C?e.createElement(c,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ "),e.createElement(Wn,{value:Y,onChange:X=>{qn(je=>({...je,[d]:{...je[d]||{},monthlyTokenLimit:X}}))},onSubmit:()=>mo(u)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:Y?r.text:r.textMuted},"[ ",Y||"0 (\u221E)"," ]")),e.createElement(c,{width:18,paddingLeft:1,flexDirection:"row"},U?e.createElement(c,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Wn,{value:R,onChange:X=>{qn(je=>({...je,[d]:{...je[d]||{},dailyCostLimit:X}}))},onSubmit:()=>mo(a)}),e.createElement(s,{color:r.primary||"cyan",bold:!0}," ]")):e.createElement(s,{color:R?r.warning||"yellow":r.textMuted},"[ ",R?`$${R}`:"0 (\u221E)"," ]")),e.createElement(c,{width:20,paddingLeft:1,flexDirection:"row"},H?e.createElement(c,{flexDirection:"row"},e.createElement(s,{color:r.primary||"cyan",bold:!0},"[ $"),e.createElement(Wn,{value:te,onChange:X=>{qn(je=>({...je,[d]:{...je[d]||{},monthlyCostLimit:X}}))},onSubmit:()=>{x+1<n?mo((x+1)*4):mo(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(c,{paddingX:1,marginTop:1},Tn===o?e.createElement(c,{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(c,{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(vt,{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:ae.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value,d={...Fe,resetMode:o};uo(d),o==="Custom"?(Jt({label:"Enter monthly reset day (1-30):",key:"quotas",subKey:"resetDay",value:String(Fe.resetDay||1),returnView:"chat"}),J("input")):(Ft({apiTier:ut,quotas:d}),J("chat"))},onClose:()=>J("chat")});case"budgetView":{let n=Dn?.agent||0,o=Fe.agentLimit||99999999,d=Dn?.tokens||0,x=Fe.tokenLimit||99999999999999,m=Fe.resetMode==="Custom"?Br?.tokens||0:zn?.tokens||0,B=Fe.monthlyTokenLimit||99999999999999,u=Dn?.cost||0,a=Fe.dailyCostLimit||99999999999999,h=Fe.resetMode==="Custom"?Br?.cost||0:zn?.cost||0,C=Fe.monthlyCostLimit||99999999999999,U=ut!=="Paid",H=!!Fe.providerBudgets?.__useProvider,V=Fe.providerBudgets||{},z=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"].filter(X=>V[X]&&(V[X].agentLimit||V[X].tokenLimit||V[X].monthlyTokenLimit||V[X].dailyCostLimit||V[X].monthlyCostLimit)),Y=!H&&(ao(x)||ao(B))&&(ao(a)||ao(C)),R="",te="";if(Fe.resetMode==="Custom"){let X=new Date,je=Fe.resetDay||1,Ne=X.getFullYear(),$e=X.getMonth();X.getDate()>=je&&($e+=1,$e>11&&($e=0,Ne+=1));let Ke=new Date(Ne,$e,je,0,0,0);R=`${Ke.toLocaleString("default",{month:"short"}).toUpperCase()}-${je}`;let ot=Math.max(0,Ke.getTime()-X.getTime()),ie=Math.floor(ot/(1e3*60*60)),me=Math.floor(ie/24),Xe=ie%24;te=`(${me} days: ${Xe} hrs left)`}return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:1,paddingBottom:0,paddingTop:0,width:"100%"},e.createElement(c,{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 ]")),Y?e.createElement(c,{padding:1,justifyContent:"center",alignItems:"center",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"LIMITS NOT SET")):H&&z.length>0?e.createElement(c,{flexDirection:"column",gap:0,width:"100%"},(()=>{let X=l?.columns||j?.columns||80;if(X<115){let $e=Math.max(5,Math.min(30,X-50));return z.map(Ke=>{let He=V[Ke],ot=0,ie=Dn?.models?.[Ke]||{};for(let be in ie)ot+=ie[be]?.tokens||0;let me=0,nt=(Fe.resetMode==="Custom"?Br:zn)?.models?.[Ke]||{};for(let be in nt)me+=nt[be]?.tokens||0;let W=0;for(let be in ie)W+=ie[be]?.cost||0;let ye=0;for(let be in nt)ye+=nt[be]?.cost||0;return e.createElement(c,{key:Ke,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},e.createElement(c,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",Ke)),so("Daily",ot,He.tokenLimit||99999999999999,$e,2,9),so("Monthly",me,He.monthlyTokenLimit||99999999999999,$e,2,9),(!ao(He.dailyCostLimit)||!ao(He.monthlyCostLimit))&&e.createElement(e.Fragment,null,so("Daily Cost",W,He.dailyCostLimit||99999999999999,$e,2,11),so("Monthly Cost",ye,He.monthlyCostLimit||99999999999999,$e,2,11)))})}let Ne=[];for(let $e=0;$e<z.length;$e+=2)Ne.push(z.slice($e,$e+2));return Ne.map(($e,Ke)=>e.createElement(c,{key:Ke,flexDirection:"row",width:"100%"},$e.map(He=>{let ot=V[He],ie=0,me=Dn?.models?.[He]||{};for(let Je in me)ie+=me[Je]?.tokens||0;let Xe=0,W=(Fe.resetMode==="Custom"?Br:zn)?.models?.[He]||{};for(let Je in W)Xe+=W[Je]?.tokens||0;let ye=0;for(let Je in me)ye+=me[Je]?.cost||0;let be=0;for(let Je in W)be+=W[Je]?.cost||0;let De=$e.length===1,lt=De?X:Math.floor(X/2),Le=Math.max(5,Math.min(25,lt-36));return e.createElement(c,{key:He,flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:De?"100%":"50%"},e.createElement(c,{marginBottom:0},e.createElement(s,{color:r.primary,bold:!0},"\u25C6 ",He)),so("Daily",ie,ot.tokenLimit||99999999999999,Le,2,9),so("Monthly",Xe,ot.monthlyTokenLimit||99999999999999,Le,2,9),(!ao(ot.dailyCostLimit)||!ao(ot.monthlyCostLimit))&&e.createElement(e.Fragment,null,so("Daily Cost",ye,ot.dailyCostLimit||99999999999999,Le,2,11),so("Monthly Cost",be,ot.monthlyCostLimit||99999999999999,Le,2,11)))})))})(),R?e.createElement(c,{marginLeft:2,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},R),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(c,{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(c,{flexDirection:"column",borderStyle:"single",borderColor:r.borderMuted,paddingX:1,width:"100%"},so("Daily Tokens",d,x,"green"),so("Monthly Tokens",m,B,"yellow"),(!ao(a)||!ao(C))&&e.createElement(e.Fragment,null,so("Daily Cost",u,a,"cyan"),so("Monthly Cost",h,C,"magenta")),R?e.createElement(c,{marginLeft:4,marginTop:1},e.createElement(s,{color:r.textMuted},"Monthly Reset: "),e.createElement(s,{color:r.accent||"magenta",bold:!0},R),te?e.createElement(s,{color:r.textMuted},` ${te}`):null):e.createElement(c,{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(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,padding:0,width:"100%"},e.createElement(c,{paddingX:1},e.createElement(s,{color:r.text,bold:!0},"DATA CONFIGURATION")),Vo?.note&&e.createElement(c,{paddingX:1,marginBottom:1},e.createElement(s,{color:r.textMuted,italic:!0},Vo.note)),e.createElement(c,{paddingX:1,flexDirection:"row"},e.createElement(s,{color:r.text,bold:!0},Vo?.label," "),e.createElement(Wn,{value:Vo?.value||"",onChange:n=>Jt(o=>({...o,value:n})),onSubmit:async n=>{let{key:o,subKey:d,next:x,onDone:m}=Vo,B={...Fe},u={};if(o==="quotas"){let a;d.toLowerCase().includes("costlimit")?a=parseFloat(n)||0:d.toLowerCase().includes("limit")||d==="resetDay"?a=parseInt(n)||0:a=n,d==="resetDay"&&(a=Math.max(1,Math.min(30,a))),B[d]=a,uo(B),u.quotas=B}else if(o==="providerBudgets"){let a=Vo.providerKey,h=d.toLowerCase().includes("limit")?parseInt(n)||0:n,C=B.providerBudgets||{};B.providerBudgets={...C,[a]:{...C[a]||{},[d]:h}},uo(B),u.quotas=B}else if(o==="activeModel")qt(n),u.activeModel=n;else if(o==="janitorModel")Ve(n),u.janitorModel=n;else if(o==="autoApproveCommands"||o==="autoDisallowCommands"||o==="alwaysAskCommands"){let a={...ae,[o]:n.trim(),sandboxPreset:"Custom"};It(a),u.systemSettings=a}else if(o==="externalDataPath"){let a={...ae,useExternalData:!0,externalDataPath:n.trim()};It(a),u.systemSettings=a,I(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={...ae,customOpenAIBaseUrl:a,memory:!1};It(h),u.systemSettings=h;let C=(Fe.providerTiers||{}).c_openai||"Free",U=eo("c_openai",C)||"";Go("c_openai"),qt(U),no(C),u.aiProvider="c_openai",u.activeModel=U,u.apiTier=C;let V=await zo("c_openai")||"";Xt(V),$o(V,{aiProvider:"c_openai",onIDEApproval:Lo}),I(z=>[...z,{id:Date.now(),role:"system",text:`\u2726 Custom OpenAI Base URL saved!
293
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Switched to Custom (OpenAI)
294
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Endpoint: ${a}${U?`
295
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${U}`:""}
296
+ \u2800`,isMeta:!0}])}else if(o==="imageSettings"){let a=n.trim();if(a.startsWith("sk_")){let h={...ko,apiKey:a};Cr(h),u.imageSettings=h,I(C=>(N(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=Vo.provider;(h==="Ollama"||h==="9router")&&(a==="LOCAL"||a==="")&&(a="LOCAL",h==="Ollama"&&(It(V=>({...V,ollamaEndpoint:"Local"})),u.systemSettings={...ae,ollamaEndpoint:"Local"}));let C="";if(h==="9router"){let V=await Zs();V.ok||(C=`
297
+
298
+ \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${V.url}.\x1B[39m
299
+ \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 Ls(h,a),Go(h),Xt(a),$o(a,{aiProvider:h,onIDEApproval:Lo});let U=(Fe.providerTiers||{})[h]||"Free",H=eo(h,U);qt(H),no(U),u.aiProvider=h,u.activeModel=H,u.apiTier=U,(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")&&(It(V=>({...V,memory:!1})),u.systemSettings={...ae,memory:!1}),I(V=>(N(V.length+1),[...V,{id:Date.now(),role:"system",text:`\u2726 ${h} API Key saved successfully! ${H?`
300
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${H}`:""}${h==="Ollama"&&a==="LOCAL"?`
301
+ \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"?`
302
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with ${h}`:""}${h==="NVIDIA"&&process.env.NVIDIA_BASE_URL?`
303
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available`:""}${C}
304
+ \u2800\u2800`,isMeta:!0}]))}if(x){let a=x(o==="quotas"||o==="providerBudgets"?B:n);Jt(a)}else m?(Ft({...u,apiTier:ut,quotas:B,imageSettings:u.imageSettings||ko}),Jt(null),m(B)):(Ft({...u,apiTier:ut,quotas:B,imageSettings:u.imageSettings||ko}),Jt(null),J(Vo?.returnView||"settings"))}})),e.createElement(c,{paddingX:1,marginTop:1},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},"(Press Enter to confirm selection)")));case"stats":{let n=In==="modelBreakdown"||In==="dailyModelBreakdown",o=In==="daily"||In==="dailyModelBreakdown",d=o?Dn:zn,x=o?"TODAY's USAGE":"LAST 30 DAYS USAGE",m=o?"TODAY'S MODEL TOKEN BREAKDOWN":"30-DAY MODEL TOKEN BREAKDOWN",B="Wall Time:",u="Tokens Used:",a="Images Made:",h="Image Credits:",C="Code Changes:",U="Tool Calls:",H=Math.max(4,(l?.rows||j?.rows||24)-15),V=(Ke,He,ot,ie,me,Xe=0,nt=!1)=>{let W=l?.columns||j?.columns||80,ye=Math.min(125,W-2),be=Math.max(20,ye-6),De=Math.max(5,be-Xe-ot.length-5),lt=He;lt.length>De&&(lt=lt.substring(0,De-1)+"\u2026");let Le=Math.max(2,be-Xe-lt.length-ot.length-2),Je=" "+".".repeat(Le)+" ",pt=" ".repeat(Xe);return e.createElement(c,{key:Ke,width:be},e.createElement(s,{wrap:"truncate"},e.createElement(s,null,pt),e.createElement(s,{color:ie,bold:nt},lt),e.createElement(s,{color:r.textMuted,dimColor:!0},Je),e.createElement(s,{color:me,bold:nt},ot)))},z=Ke=>{let He=Number(Ke)||0;return He<=0?"":He<.001?" [<$0.001]":` [$${He.toFixed(He<.01?4:3)}]`},Y=Ke=>{let He=Number(Ke)||0;return He<=0?"":He<.001?"<$0.001":`$${He.toFixed(He<.01?4:3)}`},R=[],te=d?.models;if(!te||Object.keys(te).length===0)R.push(e.createElement(c,{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 Ke=(Zn||"").trim(),He="",ot="";if(Ke.includes(":")){let me=Ke.indexOf(":");He=Ke.substring(0,me).trim().toLowerCase(),ot=Ke.substring(me+1).trim().toLowerCase()}else He=Ke.toLowerCase();let ie=Object.entries(te).sort(([me],[Xe])=>me.localeCompare(Xe,void 0,{sensitivity:"base"})).filter(([me,Xe])=>He&&!me.toLowerCase().includes(He)?!1:ot?Object.keys(Xe).some(nt=>nt.toLowerCase().includes(ot)):!0);ie.length===0?R.push(e.createElement(c,{key:"no-matches",marginTop:1},e.createElement(s,{color:r.textMuted,italic:!0},'No results found matching "',Zn,'".'))):ie.forEach(([me,Xe],nt)=>{let W=Object.entries(Xe).sort(([Le],[Je])=>Le.localeCompare(Je,void 0,{sensitivity:"base"})).filter(([Le])=>!ot||Le.toLowerCase().includes(ot));if(W.length===0)return;let ye=W.reduce((Le,[,Je])=>Le+(Je.tokens||0),0),be=W.reduce((Le,[Je,pt])=>{if((pt.cost||0)>0)return Le+pt.cost;let re=ir(me,Je);if(!re)return Le;let Te=(pt.tokens||0)-(pt.candidateTokens||0),Ie=pt.cachedTokens||0,Qe=Math.max(0,Te-Ie),Re=pt.candidateTokens||0,Pt=Qe/1e6*re.IN+Ie/1e6*re.CR+Re/1e6*re.OUT;return Le+Pt},0),De=d?.providerRequests&&d.providerRequests[me]||0;nt>0&&R.length>0&&R.push(e.createElement(c,{key:`space-prov-${me}`},e.createElement(s,null," ")));let lt=z(be);R.push(V(`prov-${me}`,`${me}:`,`${Et(ye)} (${De})${lt}`,r.primary,r.text,0,!0)),W.forEach(([Le,Je],pt)=>{pt>0&&R.push(e.createElement(c,{key:`space-mod-${me}-${Le}`},e.createElement(s,null," ")));let re=ir(me,Le),Te=(Je.tokens||0)-(Je.candidateTokens||0),Ie=Je.cachedTokens||0,Qe=Math.max(0,Te-Ie),Re=Je.candidateTokens||0,Pt=0,yo=0,No=0;re&&(Pt=Qe/1e6*re.IN,yo=Ie/1e6*re.CR,No=Re/1e6*re.OUT);let qo=(Je.cost||0)>0?Je.cost:Pt+yo+No,Nn=z(qo);R.push(V(`mod-${me}-${Le}`,`\xBB ${Le}:`,`${Et(Je.tokens||0)}${Nn}`,r.secondary,r.text,2,!0));let Pa=z(Pt),Na=z(yo),Fa=z(No);R.push(V(`in-${me}-${Le}`,"\xBB Input Tokens:",`${Et(Te)}${Pa}`,r.textMuted,r.text,5,!1)),Ie>0&&R.push(V(`cache-${me}-${Le}`,"\xBB Cached:",`${Et(Ie)}${Na}`,r.textMuted,r.text,7,!1)),R.push(V(`out-${me}-${Le}`,"\xBB Output Tokens:",`${Et(Re)}${Fa}`,r.textMuted,r.text,5,!1))})})}let X=R.length,je=Math.max(0,X-H);We.current=je;let Ne=Math.min(pa,je),$e=R.slice(Ne,Ne+H);return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:3,paddingY:1,paddingBottom:0,width:Math.min(125,(l?.columns||100)-2)},n?e.createElement(c,{flexDirection:"column"},e.createElement(c,{justifyContent:"space-between"},e.createElement(s,{color:r.text,bold:!0,underline:!0},m),X>H&&e.createElement(s,{color:r.textMuted,dimColor:!0},"[",Ne+1,"-",Math.min(X,Ne+H)," of ",X,"] \u25B2\u25BC")),e.createElement(c,{marginTop:1},e.createElement(s,{color:r.secondary,bold:!0},"Filter (provider:model): "),e.createElement(s,{color:r.text},Zn),e.createElement(s,{color:r.primary,bold:!0},"\u258A"),Zn.length>0&&e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0}," (Type to search, Esc/Backspace to clear)")),e.createElement(c,{flexDirection:"column",height:H,marginTop:1},$e)):e.createElement(e.Fragment,null,e.createElement(c,{marginBottom:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"SESSION TELEMETRY")),e.createElement(c,{flexDirection:"column"},e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Session Duration:")),e.createElement(s,{color:r.text},dn(Date.now()-ei))),ai>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},ai)),e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},dn(Mr))),e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},dn(Sr)))),ci>0&&e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},ci)),Zt>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Et(Zt))),(Ct?.cost||0)>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},Y(Ct.cost))),e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Et(Zt-vn))),xo>0&&e.createElement(c,{marginLeft:4},e.createElement(c,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Et(xo))),vn>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Et(vn)))),wo?.tokens>0&&e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Active Context:")),e.createElement(s,{color:r.text},Et(wo.tokens)," ",(()=>{let He={"16k":16e3,"32k":32e3,"64k":64e3,"128k":128e3,"256k":256e3,"512k":512e3,"1M":1e6}[ae?.contextLength]||256e3,ot=process.env.HIGH_CONTEXT,ie=process.env.GOOGLE_GEMMA_NONSENSE==="true"||process.env.GOOGLE_GEMMA_NONSENSE===!0||!1;if(ot&&ot!=="false"){let nt=parseInt(ot,10);!isNaN(nt)&&nt>=0&&nt<=1e6&&(He=nt)}($==="NVIDIA"&&(qe?.includes("gpt")||qe?.includes("qwen")||qe?.includes("medium")||qe.includes("muse"))||$==="Mistral")&&(He=126e3),$==="Google"&&qe?.includes("gemma")&&ie&&(He=16e3);let me=wo.tokens/He*100,Xe=me<60?r.text:me<80?r.warning:r.danger;return e.createElement(s,{color:Xe,dimColor:!0},"(",me.toFixed(0),"%)")})())),Er>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Er)),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((gi||0)*1e3).toFixed(0))," credits"))),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Code Changes (Sess):")),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",Ct.linesAdded)," ",e.createElement(s,{color:r.danger||"red"},"-",Ct.linesRemoved))),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Tool Calls (Sess):")),e.createElement(s,{color:r.text},Ct.toolSuccess+Ct.toolFailure+Ct.toolDenied," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",Ct.toolSuccess),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",Ct.toolDenied),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",Ct.toolFailure),e.createElement(s,{color:r.text}," )"))),e.createElement(c,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},x),e.createElement(c,{marginTop:1},e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},B)),e.createElement(s,{color:r.text},Ci(d?.duration||0))),(d?.agent||0)>0&&e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Model Requests:")),e.createElement(s,{color:r.text},d?.agent||0)),(d?.background||0)>0&&e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},"Memory Agent:")),e.createElement(s,{color:r.text},d?.background||0)),(d?.tokens||0)>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},u)),e.createElement(s,{color:r.text},Et(d?.tokens||0))),(d?.cost||0)>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},Y(d.cost))),e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Et((d?.tokens||0)-(d?.candidateTokens||0)))),(d?.cachedTokens||0)>0&&e.createElement(c,{marginLeft:4},e.createElement(c,{width:21},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Et(d.cachedTokens))),(d?.candidateTokens||0)>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:23},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Et(d.candidateTokens)))),(d?.imageCalls?.length||0)>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},a)),e.createElement(s,{color:r.text},d.imageCalls.length)),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},h)),e.createElement(s,{color:r.text},Number(((d.imageCalls.reduce((Ke,He)=>Ke+He.cost,0)||0)*1e3).toFixed(0))," credits"))),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},C)),e.createElement(s,{color:r.text},e.createElement(s,{color:r.success||"green"},"+",d?.linesAdded||0)," ",e.createElement(s,{color:r.danger||"red"},"-",d?.linesRemoved||0))),e.createElement(c,null,e.createElement(c,{width:25},e.createElement(s,{color:r.secondary},U)),e.createElement(s,{color:r.text},(d?.toolSuccess||0)+(d?.toolFailure||0)+(d?.toolDenied||0)," ( "),e.createElement(s,{color:r.success||"green"},"\u2714 ",d?.toolSuccess||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.warning||"yellow"},"\u{1F6C7} ",d?.toolDenied||0),e.createElement(s,{color:r.text}," "),e.createElement(s,{color:r.danger||"red"},"\u2718 ",d?.toolFailure||0),e.createElement(s,{color:r.text}," )")))),e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},`
305
+ `,"(Press TAB to toggle Today/30-Day views, SPACE to toggle Model Breakdown, ESC to return)"))}case"dynamicDirDanger":return e.createElement(c,{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},`
306
+ `,"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(c,{marginTop:1},e.createElement(vt,{title:"Confirm Intent",theme:ae.theme,items:[{label:"Turn On Dynamic Directory Awareness",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&It(o=>{let d={...o,dynamicDirAwareness:!0};return Ft({systemSettings:d,apiTier:ut,quotas:Fe}),d}),J("settings")}})));case"dynamicDirHelp":return e.createElement(c,{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},`
307
+ `,"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},`
308
+ `,"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(c,{marginTop:1},e.createElement(vt,{title:"Actions",theme:ae.theme,items:[{label:"Back to Settings",value:"back"}],onSelect:()=>J("settings")})));case"autoExecDanger":return e.createElement(c,{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(c,{marginTop:1},e.createElement(vt,{title:"Confirm Intent",theme:ae.theme,items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&It(o=>({...o,autoExec:!0})),J("settings")}})));case"advanceRollbackDanger":return e.createElement(c,{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(c,{marginTop:1},e.createElement(vt,{title:"Confirm",theme:ae.theme,items:[{label:"I understand and wish to enable",value:"on"},{label:"Keep Off",value:"off"}],onSelect:n=>{n.value==="on"&&It(o=>({...o,advanceRollback:!0})),J("settings")}})));case"externalDanger":return e.createElement(c,{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(c,{marginTop:1},e.createElement(vt,{title:"Confirm Intent",theme:ae.theme,items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:n=>{n.value==="on"&&It(o=>({...o,allowExternalAccess:!0})),J("settings")}})));case"doubleDanger":return e.createElement(c,{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(c,{marginTop:1},e.createElement(vt,{title:"Final Confirmation",theme:ae.theme,items:[{label:"I agree knowing the consequences",value:"on"},{label:"Keep Off",value:"off"}],onSelect:n=>{n.value==="on"&&It(o=>({...o,autoExec:!0,allowExternalAccess:!0})),J("settings")}})));case"key":return e.createElement(vt,{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"){Xt(null),J("chat");let o=ht(2);I(d=>[...d,{id:Date.now(),role:"system",text:`\u2726 Flux waiting for new API Key...
309
+ \u2800`}])}else n.value==="remove"?J("deleteKey"):J("chat")}});case"deleteKey":return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:"grey",paddingX:2,paddingY:1},(()=>{let n=ht(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(c,{marginTop:1},e.createElement(vt,{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 qi(),Xt(null),J("chat");let o=ht(2);I(d=>[...d,{id:Date.now(),role:"system",text:"[CREDENTIAL CLEARED] API Key removed successfully."}])}else J("key")},theme:ae.theme})));case"exit":return null;case"ask":return e.createElement(c,{width:"100%"},e.createElement($l,{question:an?.question,options:an?.options,onResolve:n=>{an?.resolve&&an.resolve(n),ys(null),J("chat")},theme:ae.theme}));case"revert":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Js,{prompts:va,onSelect:async n=>{l&&(l.write("\x1B[2J\x1B[3J\x1B[H"),l.isTTY&&l.write("\x1B[?2004h"));try{let o=await cr.rollbackToBefore(n);if(o.success){let{targetPrompt:d}=o;wl(bt),Ds(a=>a+1),Fo(),Rt.current={completedIndex:0,columns:j.columns,historicalBlocks:[],seenSelections:new Set,chatId:bt,clearKey:mn+1};let x=Dt.findLastIndex(a=>a.role==="user"&&a.text&&(a.text.startsWith(d)||a.text.includes(d))),m=[...Dt];x!==-1&&(m=Dt.slice(0,x)),I(m),N(m.length),b(d),E(d.split(`
310
+ `).length>2);let B=m.filter(a=>!String(a.id).startsWith("welcome")&&(!a.isMeta||a.text&&a.text.includes("Request Cancelled")));await $n(bt,null,B);let u=ht(2);I(a=>{let h=[...a,{id:"revert-ok-"+Date.now(),role:"system",text:`\u2726 Rollback Successful
311
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Reverted prompt loaded to input box.
312
+ \u2800`,isMeta:!0}];return N(h.length),h}),J("chat")}}catch(o){let d=ht(2);I(x=>{let m=[...x,{id:"revert-err-"+Date.now(),role:"system",text:`\u2726 ERROR
313
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${o.message}
314
+ \u2800`,isMeta:!0}];return N(m.length),m}),J("chat")}},onClose:()=>J("chat"),theme:ae.theme}));case"resume":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Ks,{onSelect:async n=>{let o=await Jo();if(o[n]){if(l.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY){let B=o[n]?.name||"",u=B&&!B.startsWith("flow-")&&!B.startsWith("Session ")?B:"FluxFlow | Resumed";process.stdout.write(`\x1B]0;${u}\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=${u}\x07`)}Fo(),Oo.current=!0,vr(n);let d=await ur(n);Cn.current=Zt-d.total,Sn.current=xo,Bn.current=ln,yn(d.total),Mn(0),En(0),jo({tokens:d.context}),Oo.current=!1;let x=[...o[n].messages];x[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||x.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),I(x),J("chat"),I(B=>{let u=[...B,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
315
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${n}
316
+ \u2800`,isMeta:!0}];return N(u.length),u})}},onDelete:async n=>await Xr(n),onClose:()=>J("chat"),theme:ae.theme}));case"keybindingsPrompt":return e.createElement(c,{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,`
317
+ `,"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.",`
318
+
319
+ `,"Would you like FluxFlow to automatically add this to your ",nn()," keybindings?"),e.createElement(c,{marginTop:1},e.createElement(vt,{title:"Add Keybinding?",items:[{label:"Yes, configure automatically",value:"yes"},{label:"No, skip",value:"no"}],onSelect:async n=>{n.value==="yes"?await is(nn()):ns="\\ + Enter",J("chat")},theme:ae.theme})));case"memory":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Qs,{onClose:()=>J("chat"),theme:ae.theme}));case"parserDownload":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(zs,{onClose:()=>J("settings")}));case"profile":return e.createElement(Vs,{initialData:wn,onSave:n=>{si(n),I(o=>[...o,{id:Date.now(),role:"system",text:`${n.name.length>0||n.nickname.length>0?`\u2726 Profile Updated${n.name.length>0?`
320
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Name: ${n.name} `:""}${n.nickname.length>0?`
321
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Nickname: ${n.nickname}`:""}`:`\u2726 Profile
322
+ \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Nothing to Update`}
323
+
324
+ \u2726 Custom Instructions
325
+ ${n.instructions.length>0?`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${n.instructions.substring(0,30)}${n.instructions.length>30?"...":""}`:"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No Instructions Provided."}
326
+ \u2800`,isMeta:!0}]),J("chat")},onCancel:()=>J("chat"),theme:ae.theme});case"resolution":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement(Sc,{data:Da,theme:ae.theme,onResolve:n=>{vs(null),J("chat"),setTimeout(()=>{$i(n,!0)},500)},onEdit:n=>{vs(null),J("chat"),b(n)}}));case"approval":return e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:"white",paddingX:2,paddingY:1,width:"100%"},e.createElement(s,{color:"white",bold:!0,underline:!0},ro?.tool==="view_file"?"FILE READ PERMISSION":"FILE WRITE PERMISSION"),e.createElement(s,{marginTop:1},"The agent is attempting to ",ro?.tool==="view_file"?"read":"modify",": ",e.createElement(s,{color:"cyan"},dr(ro?.args||"{}").path||"Unknown File")),ro?.tool==="view_file"?null:gn()?e.createElement(c,{marginTop:1,paddingX:1},e.createElement(s,{color:"cyan",italic:!0},"FluxFlow Companion is active. Review the changes in your editor.")):e.createElement(c,{marginTop:1,borderStyle:"single",borderColor:"#333",paddingX:1,flexDirection:"column"},e.createElement(s,{color:"gray"},"--- PROPOSED CONTENT ---"),(()=>{let n=dr(ro?.args||"{}"),o=[],d=new Set;if(Object.keys(n).forEach(B=>{let u=B.match(/^(searchContent|replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(u){let a=u[2]?parseInt(u[2]):1;d.add(a)}}),Array.from(d).sort((B,u)=>B-u).forEach(B=>{let u,a;B===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${B}`]??n[`replaceContent${B}`]??n[`content_to_replace${B}`]??null,a=n[`newContent${B}`]??n[`content_to_add${B}`]??null),(u!==null||a!==null)&&o.push({replace:u,new:a})}),o.length>0)return e.createElement(c,{flexDirection:"column",marginTop:1},o.map((B,u)=>{let a=B.replace!==null,h=B.new!==null;return e.createElement(c,{key:u,flexDirection:"column",marginTop:u>0?1:0},o.length>1&&e.createElement(s,{color:"gray"},"Block ",u+1,":"),a&&e.createElement(c,null,e.createElement(s,{color:"red",wrap:"anywhere",bold:!0},"- ",B.replace)),h&&e.createElement(c,{marginTop:0},e.createElement(s,{color:"green",wrap:"anywhere",bold:!0},"+ ",B.new.replace(/\[\/n\]?/g,"\\n"))))}));let m=n.content||n.ReplacementContent||n.content_to_add||n.replacementContent||n.newContent||null;return e.createElement(s,{color:"white",wrap:"anywhere"},(m?m.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),e.createElement(c,{marginTop:1},e.createElement(vt,{title:"Action Required",items:[{label:"Accept this time",value:"allow"},...ro?.tool==="view_file"?[]:[{label:"Accept for this session",value:"always"}],{label:"Don't accept",value:"deny"}],onSelect:n=>{n.value==="always"&&ya(!0);let o=n.value==="deny"?"deny":"allow";ro.resolve(o),On(null),J("chat")},theme:ae.theme})));case"mode":return e.createElement(vt,{title:"SELECT EXECUTION MODE",items:[{label:`Flux (Dev Toolset Mode) ${v==="Flux"?"\u25CF":""}`,value:"Flux"},{label:`Flow (Chat / Conversation Mode) ${v==="Flow"?"\u25CF":""}`,value:"Flow"},{label:`ICU (Interactive Computer Use) ${v==="ICU"?"\u25CF":""}`,value:"ICU"},{label:`FluxCU (Autonomous Flux Computer Use) ${v==="FluxCU"?"\u25CF":""}`,value:"FluxCU"},{label:"Back",value:"chat"}],theme:ae.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=n.value;G(o),I(d=>(N(d.length+1),[...d,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Rs(o)}
327
+ \u2800`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"display":return e.createElement(vt,{title:"SELECT ACTIVE DISPLAY FOR COMPUTER USE",items:[{label:`Primary Display (Display 1) ${P===0?"\u25CF":""}`,value:0},{label:`Secondary Display (Display 2) ${P===1?"\u25CF":""}`,value:1},{label:"Back",value:"chat"}],theme:ae.theme,onSelect:n=>{if(n.value==="chat"||n.value==="Back"){J("chat");return}let o=Number(n.value);k(o),Ft({display:o}).catch(()=>{});let d=o===0?"Primary (Display 1)":"Secondary (Display 2)";I(x=>(N(x.length+1),[...x,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${d}`,isMeta:!0}])),J("chat")},onClose:()=>J("chat")});case"updateManager":return e.createElement(vt,{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"?(Jt({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:ae.customUpdateCommand,next:o=>(It(d=>({...d,updateManager:"custom",customUpdateCommand:o})),null)}),J("input")):(It(o=>({...o,updateManager:n.value})),J("settings"))},theme:ae.theme});case"update":return e.createElement(Xl,{latest:Wo,current:co,settings:ae,theme:ae.theme,onClose:()=>J("chat"),onSuccess:()=>{I(n=>(N(n.length+1),[...n,{id:"update-success-"+Date.now(),role:"system",text:`**[UPDATE COMPLETED]** Flux Flow successfully updated to v${Wo}.
328
+ **Restart to see changes.**`,isMeta:!0}])),J("chat")},onUpdateSettings:n=>{J("updateManager")}});case"terminalApproval":return e.createElement(c,{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(c,{marginTop:1},e.createElement(s,null,"Agent requested to run: ",e.createElement(s,{color:"yellow",bold:!0},dr(ro?.args||"{}").command||"Unknown Command"))),e.createElement(c,{marginTop:1},e.createElement(vt,{title:"Risk Assessment Required",items:[{label:"Run",value:"allow"},{label:"Deny",value:"deny"}],onSelect:n=>{ro.resolve(n.value),On(null),J("chat")},theme:ae.theme})));default:return e.createElement(c,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},Ai&&Ii&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:1,width:"100%",marginBottom:1},e.createElement(c,{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(c,{marginTop:1,width:"100%"},e.createElement(Yr,{text:Ii,columns:j.columns-6,theme:ae.theme}))),gs.filter(n=>n.status==="running").length>0&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:1},e.createElement(c,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.text,bold:!0},"ACTIVE SUBAGENTS")),e.createElement(c,{flexDirection:"column",marginTop:1,width:"100%"},gs.filter(n=>n.status==="running").map(n=>e.createElement(vc,{key:n.id,sa:n,showTPMEstimate:ae.showTPMEstimate})))),rr&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:r.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:0},e.createElement(c,{justifyContent:"space-between",width:"100%"},e.createElement(c,{flexDirection:"row",gap:1},e.createElement(s,{color:r.warning||"yellow",bold:!0},"\u2726 ",rr.startsWith("/btw")?"Question Queued":"Steering Hint Queued"))),e.createElement(c,{marginTop:0,paddingLeft:2},e.createElement(s,{color:r.text,bold:!0},"\u2514\u2500 ",rr.startsWith("/btw")?rr.replace(/^\/btw\s*/,""):rr))),e.createElement(c,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(c,null,cn?e.createElement(c,{gap:1},e.createElement(gc,null),e.createElement(Tr,{text:cn.trim().length>40?`${cn.trim().slice(0,40)}...`:cn.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},Si>0?`(${Si.toFixed(0)}s)`:"")):e.createElement(s,{color:r.textMuted,italic:!0},w.length>0&&vi?"Press ESC again to clear input":Ca?"Press CTRL + O to expand":process.env.HALLOWEEN_EEGG==="true"?"Listening for shadows...":"Waiting for input...")),e.createElement(c,null,(()=>{let n=cn?.toLowerCase()??"";return Pn&&Date.now()-ii>15e3&&gs.length===0&&(n.includes("connecting")||n.includes("consulting")||n.includes("working")||n.includes("haunting")||n.includes("queue"))?e.createElement(c,null,e.createElement(Tr,{text:"Waiting for API Response",baseColor:r.text,glintColor:r.textMuted,glintWidth:4,speed:100}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):Ms?e.createElement(c,null,e.createElement(Tr,{text:Ms,baseColor:r.text,glintColor:r.textMuted,italic:!0,speed:85,typeSpeed:15}),e.createElement(s,{color:r.textMuted,dimColor:!0}," \u2503 ")):null})(),e.createElement(Tr,{text:Ot.basename(qe)||(qe.length>1?qe:"Use '/model model-id' to select model"),baseColor:r.text,glintColor:r.textMuted,glintWidth:3,speed:80}),e.createElement(s,{color:r.textMuted},qe.length>0?Ye.toLocaleLowerCase().includes("xhigh")?"":` (${Ye})`:""),Hr>0&&e.createElement(s,{color:r.textMuted}," [",Hr," ",Hr===1?"file":"files","]"))),e.createElement(c,{flexDirection:"column",width:"100%"},e.createElement(c,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,j.columns)))),e.createElement(c,{paddingX:1,paddingY:0,width:"100%",flexDirection:"column"},e.createElement(c,{flexDirection:"column",width:"100%"},e.createElement(c,{flexDirection:"row",width:"100%",paddingY:0},e.createElement(c,{flexShrink:0,width:4},e.createElement(s,{color:r.inputPrompt,bold:!0},Pn||Ir?"\u2726 ":" \u276F ")),e.createElement(c,{flexGrow:1},e.createElement(c,{flexGrow:1,position:"relative"},w===""&&e.createElement(c,{position:"absolute",paddingLeft:0},go&&!er?e.createElement(s,{color:"yellow"},La?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):go&&er?e.createElement(s,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):vi===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},Ea?" Press ESC again to cancel the request.":Ir?" Compacting session history, please wait...":Pn?" Enter a prompt to steer the agent.":Dt.filter(n=>n.role==="user").length===0?` Send message, @file or /cmd (${Ta.shortcut} for newline)`:" Ask Follow-ups")),e.createElement(Ml,{key:`input-${M}`,onPasteStateChange:Ma,focus:!er&&!Ir,showCursor:ze&&!Ir,cursorColor:r.inputText,lastFocusEventTime:tt.current,value:w,textStyle:{bold:!0,color:r.inputText},columns:j.columns,onChange:n=>{let o=n.replace(/\r\n/g,`
329
+ `).replace(/\r/g,`
330
+ `).replace(/\\\s*\n/g,`
331
+ `);b(o),Q(!1)},onSubmit:$i,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(c,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.inputBorder},"\u2500".repeat(Math.max(1,j.columns))))))}};return e.createElement(c,{flexDirection:"column",width:"100%"},dt?null:Pe?e.createElement(yc,{width:l?.columns||80,height:l?.rows||24,aiProvider:$,theme:ae.theme,reason:Pe}):ce?e.createElement(wc,{width:l?.columns||80,height:l?.rows||24,selectedIndex:pe,aiProvider:$,theme:ae.theme}):e.createElement(e.Fragment,null,e.createElement(c,{paddingX:1,flexDirection:"column",width:"100%"},e.createElement(fc,{key:`static-${mn}-${bt}-${j.columns}-${ae.theme}`,items:Pi.completed},n=>e.createElement(Kr,{key:n.key,block:n,columns:(l?.columns||80)-2,showFullThinking:rn,aiProvider:$,version:co,theme:ae.theme}))),e.createElement(c,{flexDirection:"column",paddingX:1,paddingBottom:0,width:"100%"},(yt==="chat"||["ask","approval","terminalApproval"].includes(yt))&&e.createElement(c,{flexDirection:"column",width:"100%"},Pi.active.map(n=>e.createElement(Kr,{key:n.key,block:n,columns:Math.max(20,(l?.columns||80)-2),showFullThinking:rn,aiProvider:$,version:co,theme:ae.theme})),go&&e.createElement(c,{marginTop:1},e.createElement(Vr,{command:go,output:kn,isFocused:er,isPty:Fn,terminalHeight:j.rows,columns:j.columns}))),dt?e.createElement(c,{borderStyle:"double",borderColor:"grey",padding:1,flexShrink:0},e.createElement(s,{color:"white"},"Starting Flux Flow...")):!_t&&!($==="c_openai"&&ae.customOpenAIBaseUrl)?e.createElement(c,{borderStyle:"round",borderColor:"white",padding:0,flexDirection:"column",flexShrink:0,width:"100%"},e.createElement(c,{paddingX:1,marginBottom:1},e.createElement(s,{color:"gray",bold:!0},$==="c_openai"?"CUSTOM BASE URL REQUIRED":"API KEY REQUIRED")),e.createElement(c,{paddingX:1,flexDirection:"column"},Yn===0?e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},"Select your Preferred Provider:"),e.createElement(c,{marginTop:1},e.createElement(vt,{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=>{Go(n.value),wr(1)}}))):e.createElement(e.Fragment,null,e.createElement(s,{color:"white"},$==="Ollama"?"Enter Ollama API Key (or type LOCAL to use local host):":$==="c_openai"?"Enter Custom OpenAI Base URL (.../v1):":`Enter your ${$} API Key:`),e.createElement(c,{marginTop:1},e.createElement(s,{color:"gray",bold:!0}," ",">"," "),e.createElement(Wn,{value:ss,onChange:sn,onSubmit:Ni,mask:$==="c_openai"?void 0:"*"})))),e.createElement(c,{paddingX:1,marginTop:1},e.createElement(s,{color:"gray",italic:!0},Yn===0?"(Use arrows to select and Enter to confirm, ESC to go back)":"(Press Enter to confirm and initialize, ESC to go back)"))):Oa(),g&&e.createElement(c,{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 (",T,"s) \u2022 Press "),e.createElement(s,{color:r.textMuted,bold:!0},"ESC"),e.createElement(s,{color:r.text}," to cancel"))),it.length>0&&(()=>{let o=et.current,d=0;for(;d<it.length;){let H=it[d],V=H?.cmd||H||"";if(typeof V=="string"&&V.trimStart().startsWith("---"))d++;else break}de<=d?o=0:de<o?o=de:de>=o+5&&(o=de-5+1),o=Math.max(0,Math.min(o,Math.max(0,it.length-5))),et.current=o;let x=it.slice(o,o+5),m=it.length-(o+x.length),B=it[0]?.cmd?.startsWith("@")||it[0]?.cmd?.startsWith("\\@"),u=w.startsWith("/model"),a=w.startsWith("/kill"),h=w.startsWith("/thinking"),C=it.length,U=Math.min(C,de+1);return e.createElement(c,{flexDirection:"column",width:"100%",marginBottom:1,marginTop:0},e.createElement(c,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(c,{flexDirection:"row"},e.createElement(s,{color:r.primary||r.text,bold:!0},B?"WORKSPACE FILES":u?"SAVED MODELS":a?"ACTIVE PROCESSES":h?"THINKING LEVELS":"COMMANDS"),e.createElement(s,{color:r.textMuted}," (",C,")")),e.createElement(c,{flexDirection:"row"},B?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(c,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:r.borderDim||r.inputBorder||r.textDim},"\u2500".repeat(Math.max(1,j.columns)))),x.slice(0,Lr).map((H,V)=>{let Y=o+V===de,R=typeof H.cmd=="string"&&H.cmd.trimStart().startsWith("---"),te=H.cmd===eo("Google","Free")&&ut!=="Free",X=H.display||(H.cmd&&(H.cmd.startsWith("@[")||H.cmd.startsWith("\\@["))&&H.cmd.endsWith("]")?(()=>{let Ne=(H.cmd.startsWith("\\@[")?H.cmd.slice(3,-1):H.cmd.slice(2,-1)).split(/[\/\\]/);return Ne[Ne.length-1]})():!u&&!a&&H.cmd&&H.cmd.includes("/")?H.cmd.split("/").pop():H.cmd);if(u){let Ne=H.multimodal===!0||Fr(H.cmd||H)?"Vision":"Text Only";return e.createElement(c,{key:H.cmd||V,flexDirection:"row",backgroundColor:Y?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(c,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(c,{width:3,flexShrink:0},e.createElement(s,{color:Y?r.primary||r.text:r.textMuted,bold:Y},Y?"\u276F ":" ")),e.createElement(s,{color:R?r.textDim:te?r.textMuted:Y&&r.inputText||r.text,bold:Y},X)),e.createElement(c,{flexShrink:0,marginLeft:2},e.createElement(s,{color:Y?r.text:r.textMuted,italic:!Y},Ne)))}return a&&H.rightDesc?e.createElement(c,{key:H.cmd||V,flexDirection:"row",backgroundColor:Y?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center",justifyContent:"space-between"},e.createElement(c,{flexDirection:"row",alignItems:"center",flexGrow:1,overflow:"hidden"},e.createElement(c,{width:3,flexShrink:0},e.createElement(s,{color:Y?r.primary||r.text:r.textMuted,bold:Y},Y?"\u276F ":" ")),e.createElement(s,{color:Y&&r.inputText||r.text,bold:Y},X)),e.createElement(c,{flexShrink:0,marginLeft:2},e.createElement(s,{color:Y?r.text:r.textMuted,italic:!Y},H.rightDesc))):e.createElement(c,{key:H.cmd||V,flexDirection:"row",backgroundColor:Y?r.highlightBg:void 0,paddingX:1,height:1,alignItems:"center"},e.createElement(c,{width:3,flexShrink:0},e.createElement(s,{color:Y?r.primary||r.text:r.textMuted,bold:Y},Y?"\u276F ":" ")),e.createElement(c,{width:26,flexShrink:0},e.createElement(s,{color:R?r.textDim:te?r.textMuted:Y&&r.inputText||r.text,bold:Y},X)),e.createElement(c,{flexGrow:1,overflow:"hidden"},e.createElement(s,{color:Y?r.text:r.textMuted,italic:!Y},H.desc)))}),it.length>5&&e.createElement(c,{paddingX:1,height:1,justifyContent:"space-between",width:"100%"},e.createElement(s,{color:r.textMuted,dimColor:!0,italic:!0},m>0?`... ${m} more available`:"(End of list)"),e.createElement(s,{color:r.textMuted,dimColor:!0},`${U}/${C}`)))})(),e.createElement(c,{flexShrink:0,width:"100%"},e.createElement(Ol,{mode:v,thinkingLevel:Ye,tokens:wo.tokens,tokensTotal:la,cachedTokens:aa,promptTokens:da,chatId:bt,isMemoryEnabled:ae.memory,apiTier:ut,aiProvider:$,activeModel:qe,isProcessing:Pn,lastChunkTime:ii,theme:ae.theme,wps:ms.current.wps,showTPMEstimate:ae.showTPMEstimate})),yt==="exit"&&(()=>{let n=Date.now()-ei,o=Ct.toolSuccess+Ct.toolFailure,d=o>0?(Ct.toolSuccess/o*100).toFixed(1):"0.0",x=Mr+Sr,m=x>0?(Mr/x*100).toFixed(1):"0.0",B=x>0?(Sr/x*100).toFixed(1):"0.0";return e.createElement(c,{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(c,{marginBottom:1},e.createElement(s,{bold:!0},pc(r.logoGradient||["blue","purple"])("Agent powering down. Goodbye!"))),e.createElement(c,{flexDirection:"column"},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Interaction Summary"),e.createElement(c,{marginTop:1},e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Session ID:")),e.createElement(s,{color:r.text},bt)),e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Tool Calls:")),e.createElement(s,{color:r.text},Ct.toolSuccess+Ct.toolFailure+Ct.toolDenied," ( ",e.createElement(s,{color:"green"},"\u2714 ",Ct.toolSuccess)," ",e.createElement(s,{color:"yellow"},"\u{1F6C7} ",Ct.toolDenied)," ",e.createElement(s,{color:"red"},"\u2718 ",Ct.toolFailure)," )")),e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Success Rate:")),e.createElement(s,{color:r.text},d,"%")),e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Code Changes:")),e.createElement(s,{color:r.text},e.createElement(s,{color:"green"},"+",Ct.linesAdded)," ",e.createElement(s,{color:"red"},"-",Ct.linesRemoved))),Zt>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Tokens Consumed:")),e.createElement(s,{color:r.text},Et(Zt))),(Ct?.cost||0)>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Cost Estimate:")),e.createElement(s,{color:r.success||"green"},(()=>{let u=Number(Ct.cost)||0;return u<=0?"":u<.001?"<$0.001":`$${u.toFixed(u<.01?4:3)}`})())),e.createElement(c,{marginLeft:2},e.createElement(c,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Input Tokens:")),e.createElement(s,{color:r.text},Et(Zt-vn))),xo>0&&e.createElement(c,{marginLeft:4},e.createElement(c,{width:16},e.createElement(s,{color:r.textMuted},"\xBB Cached:")),e.createElement(s,{color:r.text},Et(xo))),vn>0&&e.createElement(c,{marginLeft:2},e.createElement(c,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Output Tokens:")),e.createElement(s,{color:r.text},Et(vn)))),Er>0&&e.createElement(e.Fragment,null,e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Images Made:")),e.createElement(s,{color:r.text},Er)),e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Image Credits:")),e.createElement(s,{color:r.text},Number(((gi||0)*1e3).toFixed(0))," credits")))),e.createElement(c,{flexDirection:"column",marginTop:1},e.createElement(s,{color:r.text,bold:!0,underline:!0},"Performance"),e.createElement(c,{marginTop:1},e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Wall Time:")),e.createElement(s,{color:r.text},dn(n))),e.createElement(c,null,e.createElement(c,{width:20},e.createElement(s,{color:r.secondary},"Agent Active:")),e.createElement(s,{color:r.text},dn(x))),e.createElement(c,{marginLeft:2},e.createElement(c,{width:18},e.createElement(s,{color:r.textMuted},"\xBB API Time:")),e.createElement(s,{color:r.text},dn(Mr)," (",m,"%)")),e.createElement(c,{marginLeft:2},e.createElement(c,{width:18},e.createElement(s,{color:r.textMuted},"\xBB Tool Time:")),e.createElement(s,{color:r.text},dn(Sr)," (",B,"%)"))))})())))}export{Zs as check9RouterReachable,Dc as default};