fluxflow-cli 4.8.4 → 4.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{ai-MNMJ5SVM.js → ai-BYQLFSZC.js} +1 -1
- package/dist/chunks/{app-MXCBVUNS.js → app-AKSJEPLD.js} +21 -21
- package/dist/chunks/{chunk-Z65NO4UN.js → chunk-VTA4J2NV.js} +204 -194
- package/dist/cli.js +1 -1
- package/dist/model_config.json +7 -55
- package/dist/package.json +1 -1
- package/model_config.json +7 -55
- package/package.json +1 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J as Ko,K as fr,T as Hi,W as Gi,X as Un,Y as Wi,Z as Yi,_ as Vi,a as Ct,b as pt,c as ut,d as Ei,e as ss,f as is,g as Pn,h as Di,i as po,j as Ii,k as je,l as qe,m as cr,n as Nn,o as ls,p as Ai,q as dn,r as Wt,s as ki,t as ur,u as Li,v as Fn,w as Lo,x as cn,y as mr,z as as}from"./chunk-
|
|
1
|
+
import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J as Ko,K as fr,T as Hi,W as Gi,X as Un,Y as Wi,Z as Yi,_ as Vi,a as Ct,b as pt,c as ut,d as Ei,e as ss,f as is,g as Pn,h as Di,i as po,j as Ii,k as je,l as qe,m as cr,n as Nn,o as ls,p as Ai,q as dn,r as Wt,s as ki,t as ur,u as Li,v as Fn,w as Lo,x as cn,y as mr,z as as}from"./chunk-VTA4J2NV.js";import{b as an,c as ts,k as Si}from"./chunk-LXTPAZBK.js";import{b as rs}from"./chunk-IBEWFYB6.js";import{a as Ci,b as Mi,c as ar,d as dr,f as St,g as jo,h as ns,l as vi}from"./chunk-S27ZX6SS.js";import{a as wi,b as Ti,c as bi,e as ko,f as io,g as yi,h as os,i as At}from"./chunk-4C4RG42K.js";import{c as hi,d as xi,e as pi}from"./chunk-SIINYZWE.js";import{e as Bi}from"./chunk-7PJOF5I2.js";import{a as Ao,b as On,c as so,d as lr,e as Rr,j as es}from"./chunk-4TZKD2XR.js";import{a as $i}from"./chunk-56EJGQU3.js";import"./chunk-GPHO47JC.js";import ks from"os";import e,{useState as K,useEffect as Qe,useRef as Ye,useMemo as hn}from"react";import{Box as c,Text as s,useInput as Id,useStdout as Ad,Static as kd}from"ink";import Ld from"ink-spinner";import st from"fs-extra";import Mt from"path";import{exec as fo}from"child_process";import{fileURLToPath as Od}from"url";import Ut,{useState as hr,useEffect as cs,useMemo as _n,useCallback as ea,useRef as wo}from"react";import{Box as ta,Text as eo,useInput as oa}from"ink";function na(t,h){return t.replace(/\t/g," ".repeat(h))}function xr(t){return t==null?"":t.replace(/\r\n/g,`
|
|
2
2
|
`).replace(/\r/g,`
|
|
3
3
|
`)}function qo(t,h,x){let S=t,p=[...h].sort((i,E)=>i.start-E.start),w=0;for(let i of p){let E=i.start-w,m=xr(i.text).split(`
|
|
4
4
|
`).length,M=i.text.length,v=(m>3?`[Pasted ${m} lines]`:`[Pasted ${M} chars]`).length,N=E+v;if(t<=E)break;if(t<N){S=i.end;break}else{let I=i.text.length-v;S+=I,w+=I}}return Math.min(S,x.length)}function us(t,h,x,S,p=[]){let w=(t||"").slice(0,h),i=S(w).length,E=S(t||""),m=[...p].sort((A,O)=>O.start-A.start);for(let A of m){let O=S(t.slice(0,A.start)).length,X=S(A.text),R=O+X.length,ae=xr(A.text).split(`
|
|
5
5
|
`).length,he=A.text.length,Q=ae>3?`[Pasted ${ae} lines]`:`[Pasted ${he} chars]`;E=E.slice(0,O)+Q+E.slice(R),i>O&&i<R?i=O+Q.length:i>=R&&(i=i-(R-O)+Q.length)}let M=E.split(`
|
|
6
6
|
`),v=[],N=0,I=0,B=0,L=!1;for(let A=0;A<M.length;A++){let O=M[A];if(O.length===0){!L&&i===N&&(I=v.length,B=0,L=!0),v.push({text:"",globalStart:qo(N,p,t),formattedStart:N}),N+=1;continue}let R=pt(O,x).split(`
|
|
7
7
|
`),ae=0,he=[];for(let Q=0;Q<R.length;Q++){let q=R[Q],ie=q.trim();if(ie.length===0){let ve=q.length||1;he.push({text:q,start:ae,length:ve}),ae+=ve}else{let ve=O.indexOf(ie,ae);if(ve!==-1){let Be=ae,De=Q<R.length-1?R[Q+1].trim():"",de=O.length;if(De.length>0){let Ue=O.indexOf(De,ve+ie.length);Ue!==-1&&(de=Ue)}he.push({text:O.slice(Be,de),start:Be,length:de-Be}),ae=de}else he.push({text:q,start:ae,length:q.length}),ae+=q.length}}for(let Q=0;Q<he.length;Q++){let q=he[Q],ie=q.text,ve=N+q.start,Be=ve+q.length;!L&&i>=ve&&(i<Be||i===Be&&Q===he.length-1)&&(I=v.length,B=i-ve,L=!0),v.push({text:ie,globalStart:qo(ve,p,t),formattedStart:ve})}N+=O.length+1}return L||(v.length===0?v.push({text:"",globalStart:0,formattedStart:0}):E.endsWith(`
|
|
8
|
-
`)?(v.push({text:"",globalStart:qo(N,p,t),formattedStart:N}),I=v.length-1,B=0):(I=v.length-1,B=v[I].text.length)),{visualLines:v,cursorLine:I,cursorCol:B}}var ra=({value:t,rows:h,maxRows:x,highlightStyle:S,textStyle:p,placeholder:w="",mask:i,showCursor:E=!0,focus:m=!0,tabSize:M=4,cursorIndex:v=0,highlight:N,columns:I=80,pasteBlocks:B=[],cursorColor:L})=>{let A=wo(0),O=_n(()=>Math.max(20,I-10),[I]),X=ea((xe,ee=!1)=>{let H=xr(xe);if(!ee&&i)return H.replace(/[^\n]/g,i);let le=na(H,M);return ee?le:le.replace(/@\[(.*?)\]/g,(oe,Se)=>{let pe=Se.indexOf("#"),ge=Se.indexOf(":L"),ke=Se,Je="";pe!==-1?(ke=Se.slice(0,pe),Je=Se.slice(pe)):ge!==-1&&(ke=Se.slice(0,ge),Je=Se.slice(ge));let Ve=ke.replace(/\\/g,"/"),Ce=(process.cwd()||"").replace(/\\/g,"/");Ce&&Ve.toLowerCase().startsWith(Ce.toLowerCase()+"/")?Ve=Ve.slice(Ce.length+1):Ve.startsWith("./")&&(Ve=Ve.slice(2));let ne=Ve.split("/");return`[${ne[ne.length-1]}${Je}]`})},[M,i]),{visualLines:R,cursorLine:ae,cursorCol:he}=_n(()=>us(t,v,O,X,B),[t,v,O,X,B]),Q=R.length,q=_n(()=>Math.max(h??x??1,Math.min(x??h??1,Q)),[h,x,Q]),ie=ae+1,ve=A.current+q,Be=A.current;ie<=A.current?Be=Math.max(0,ie-1):ie>ve?Be=ie-q:Q&&(Q<q?Be=0:Q<ve&&(Be=Q-q)),A.current=Be;let De=_n(()=>R.slice(Be,Be+q),[R,Be,q]),[de,Ue]=hr(!0);cs(()=>{if(Ue(!0),!m||!E)return;let xe=setInterval(()=>{Ue(ee=>!ee)},530);return()=>clearInterval(xe)},[m,E,t,v]);let fe=_n(()=>({...p,color:E&&m&&de?L||"white":void 0,bold:E&&m&&de,inverse:E&&m&&de}),[p,E,m,de,L]),j=(xe,ee,H,le)=>{if(!xe){let ke=w&&t.length===0?X(w,!0):"";if(ee){let Je=ke[0]||" ",Ve=ke.slice(1);return Ut.createElement(eo,null,Ut.createElement(eo,{...le},Je),Ut.createElement(eo,{color:"gray",dimColor:!0},Ve))}return Ut.createElement(eo,{color:"gray",dimColor:!0},ke||" ")}let oe=/(\[Pasted \d+ (?:lines|chars)\])/g,Se=xe.split(oe),pe=0,ge=[];for(let ke=0;ke<Se.length;ke++){let Je=Se[ke];if(Je==="")continue;let Ve=Je.match(/^\[Pasted \d+ (?:lines|chars)\]$/),Ce=Je.length,ne=pe+Ce;if(ee&&H>=pe&&H<ne){let we=H-pe
|
|
9
|
-
`).length,le=Ue.length;if(le>50&&(H>3||H<=3&&le>200)){let oe={start:fe,end:j,text:Ue};X(Se=>{let pe=Ue.length;return[...Se.map(ke=>fe<=ke.start?{...ke,start:ke.start+pe,end:ke.end+pe}:ke),oe]})}q.current="",ie.current=-1,ve.current=null},de=()=>{ve.current&&(clearTimeout(ve.current),De())};return m((Ue,fe)=>{if(Ue==="\x1B[I"||Ue==="\x1B[O"||Ue==="[I"||Ue==="[O")return;let j=Ue,xe=!1,ee=!1;j&&typeof j=="string"&&(j.includes("\x1B[200~")&&(xe=!0,j=j.replace(/\x1b\[200~/g,"")),j.includes("\x1B[201~")&&(ee=!0,j=j.replace(/\x1b\[201~/g,"")));let H=R.current,le=ae.current,oe=Q.current,Se=Math.max(20,E-10),pe=(ne,we)=>{if(oe.length===0)return;let
|
|
10
|
-
`+le.slice(H);h(ne),R.current=H+1,B(H+1),A(0);return}if(fe.tab||fe.shift&&fe.tab||fe.ctrl&&j==="c")return;let Ce=ne=>ne;if(fe.upArrow||fe.downArrow){if(de(),p){let{visualLines:ne,cursorLine:we,cursorCol
|
|
8
|
+
`)?(v.push({text:"",globalStart:qo(N,p,t),formattedStart:N}),I=v.length-1,B=0):(I=v.length-1,B=v[I].text.length)),{visualLines:v,cursorLine:I,cursorCol:B}}var ra=({value:t,rows:h,maxRows:x,highlightStyle:S,textStyle:p,placeholder:w="",mask:i,showCursor:E=!0,focus:m=!0,tabSize:M=4,cursorIndex:v=0,highlight:N,columns:I=80,pasteBlocks:B=[],cursorColor:L})=>{let A=wo(0),O=_n(()=>Math.max(20,I-10),[I]),X=ea((xe,ee=!1)=>{let H=xr(xe);if(!ee&&i)return H.replace(/[^\n]/g,i);let le=na(H,M);return ee?le:le.replace(/@\[(.*?)\]/g,(oe,Se)=>{let pe=Se.indexOf("#"),ge=Se.indexOf(":L"),ke=Se,Je="";pe!==-1?(ke=Se.slice(0,pe),Je=Se.slice(pe)):ge!==-1&&(ke=Se.slice(0,ge),Je=Se.slice(ge));let Ve=ke.replace(/\\/g,"/"),Ce=(process.cwd()||"").replace(/\\/g,"/");Ce&&Ve.toLowerCase().startsWith(Ce.toLowerCase()+"/")?Ve=Ve.slice(Ce.length+1):Ve.startsWith("./")&&(Ve=Ve.slice(2));let ne=Ve.split("/");return`[${ne[ne.length-1]}${Je}]`})},[M,i]),{visualLines:R,cursorLine:ae,cursorCol:he}=_n(()=>us(t,v,O,X,B),[t,v,O,X,B]),Q=R.length,q=_n(()=>Math.max(h??x??1,Math.min(x??h??1,Q)),[h,x,Q]),ie=ae+1,ve=A.current+q,Be=A.current;ie<=A.current?Be=Math.max(0,ie-1):ie>ve?Be=ie-q:Q&&(Q<q?Be=0:Q<ve&&(Be=Q-q)),A.current=Be;let De=_n(()=>R.slice(Be,Be+q),[R,Be,q]),[de,Ue]=hr(!0);cs(()=>{if(Ue(!0),!m||!E)return;let xe=setInterval(()=>{Ue(ee=>!ee)},530);return()=>clearInterval(xe)},[m,E,t,v]);let fe=_n(()=>({...p,color:E&&m&&de?L||"white":void 0,bold:E&&m&&de,inverse:E&&m&&de}),[p,E,m,de,L]),j=(xe,ee,H,le)=>{if(!xe){let ke=w&&t.length===0?X(w,!0):"";if(ee){let Je=ke[0]||" ",Ve=ke.slice(1);return Ut.createElement(eo,null,Ut.createElement(eo,{...le},Je),Ut.createElement(eo,{color:"gray",dimColor:!0},Ve))}return Ut.createElement(eo,{color:"gray",dimColor:!0},ke||" ")}let oe=/(\[Pasted \d+ (?:lines|chars)\])/g,Se=xe.split(oe),pe=0,ge=[];for(let ke=0;ke<Se.length;ke++){let Je=Se[ke];if(Je==="")continue;let Ve=Je.match(/^\[Pasted \d+ (?:lines|chars)\]$/),Ce=Je.length,ne=pe+Ce;if(ee&&H>=pe&&H<ne){let we=H-pe,$e=Je.slice(0,we),P=Je[we]||" ",Dt=Je.slice(we+1);ge.push(Ut.createElement(eo,{key:ke},Ut.createElement(eo,{color:Ve?"magenta":void 0},$e),Ut.createElement(eo,{...le},P),Ut.createElement(eo,{color:Ve?"magenta":void 0},Dt)))}else ge.push(Ut.createElement(eo,{key:ke,color:Ve?"magenta":void 0},Je));pe=ne}return ee&&H>=xe.length&&ge.push(Ut.createElement(eo,{key:"cursor-end",...le}," ")),Ut.createElement(Ut.Fragment,null,ge)};return Ut.createElement(ta,{height:q,width:O+1,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},De.map((xe,ee)=>{let H=Be+ee,le=H===ae&&m&&E;return Ut.createElement(eo,{key:H,...p,wrap:"truncate"},j(xe.text,le,he,fe))}))},ji=({value:t,onChange:h,onSubmit:x,keyBindings:S,showCursor:p=!0,highlightPastedText:w=!1,focus:i=!0,columns:E=80,useCustomInput:m=(I,B)=>oa(I,{isActive:B}),onPasteStateChange:M,cursorColor:v,...N})=>{let[I,B]=hr(t.length),[L,A]=hr(0),[O,X]=hr([]),R=wo(t.length),ae=wo(t),he=wo(0),Q=wo([]),q=wo(""),ie=wo(-1),ve=wo(null),Be=wo(0);R.current=I,ae.current=t,he.current=L,Q.current=O,cs(()=>{R.current>t.length&&(R.current=t.length,B(t.length)),t?X(Ue=>Ue.filter(fe=>fe.end<=t.length&&fe.start<=t.length)):(X([]),A(0))},[t]),cs(()=>{M?.(O.length>0)},[O,M]);let De=()=>{let Ue=q.current,fe=ie.current,j=fe+Ue.length,xe=ae.current,ee=xe.slice(0,fe)+Ue+xe.slice(fe);h(ee),R.current=j,B(j),A(Ue.length>1?Ue.length:0);let H=xr(Ue).split(`
|
|
9
|
+
`).length,le=Ue.length;if(le>50&&(H>3||H<=3&&le>200)){let oe={start:fe,end:j,text:Ue};X(Se=>{let pe=Ue.length;return[...Se.map(ke=>fe<=ke.start?{...ke,start:ke.start+pe,end:ke.end+pe}:ke),oe]})}q.current="",ie.current=-1,ve.current=null},de=()=>{ve.current&&(clearTimeout(ve.current),De())};return m((Ue,fe)=>{if(Ue==="\x1B[I"||Ue==="\x1B[O"||Ue==="[I"||Ue==="[O")return;let j=Ue,xe=!1,ee=!1;j&&typeof j=="string"&&(j.includes("\x1B[200~")&&(xe=!0,j=j.replace(/\x1b\[200~/g,"")),j.includes("\x1B[201~")&&(ee=!0,j=j.replace(/\x1b\[201~/g,"")));let H=R.current,le=ae.current,oe=Q.current,Se=Math.max(20,E-10),pe=(ne,we)=>{if(oe.length===0)return;let $e=oe.map(P=>ne<=P.start?{...P,start:P.start+we,end:P.end+we}:ne>P.start&&ne<P.end?null:P).filter(Boolean);X($e)},ge=ne=>{for(let we of oe)if(ne>we.start&&ne<we.end)return we.start;return ne};if(fe.ctrl&&(j==="o"||j==="")){X([]);return}if(fe.ctrl&&(j.toLowerCase()==="r"||j===""||j===""))return;if(fe.upArrow||fe.downArrow||fe.leftArrow||fe.rightArrow){de();let ne=Date.now();if(ne-Be.current<33)return;Be.current=ne}let Je=S?.submit??(ne=>ne.return&&ne.ctrl),Ve=S?.newline??(ne=>ne.return);if(Je(fe)){de(),x?.(le);return}else if(Ve(fe)){de(),pe(H,1);let ne=le.slice(0,H)+`
|
|
10
|
+
`+le.slice(H);h(ne),R.current=H+1,B(H+1),A(0);return}if(fe.tab||fe.shift&&fe.tab||fe.ctrl&&j==="c")return;let Ce=ne=>ne;if(fe.upArrow||fe.downArrow){if(de(),p){let{visualLines:ne,cursorLine:we,cursorCol:$e}=us(le,H,Se,Ce,oe),P=fe.upArrow?we-1:we+1;if(P>=0&&P<ne.length){let Dt=ne[P],dt=Math.min($e,Dt.text.length),Nt=Dt.formattedStart+dt,Vt=qo(Nt,oe,le);Vt=ge(Vt),R.current=Vt,B(Vt),A(0)}else if(fe.upArrow&&we===0)R.current=0,B(0),A(0);else if(fe.downArrow&&we===ne.length-1){let Dt=ne[ne.length-1],dt=Dt.formattedStart+Dt.text.length,Nt=qo(dt,oe,le);Nt=ge(Nt),R.current=Nt,B(Nt),A(0)}}}else if(fe.leftArrow){if(de(),p){let ne=Math.max(0,H-1),we=oe.find($e=>H===$e.end);we&&(ne=we.start),R.current=ne,B(ne),A(0)}}else if(fe.rightArrow){if(de(),p){let ne=Math.min(le.length,H+1),we=oe.find($e=>H===$e.start);we&&(ne=we.end),R.current=ne,B(ne),A(0)}}else if(fe.backspace){de();let ne=oe.findIndex(we=>H===we.end);if(ne!==-1){let we=oe[ne],$e=-(we.end-we.start),P=le.slice(0,we.start)+le.slice(we.end);h(P),R.current=we.start,B(we.start),A(0);let Dt=oe.filter((dt,Nt)=>Nt!==ne).map(dt=>dt.start>=we.end?{...dt,start:dt.start+$e,end:dt.end+$e}:dt);X(Dt)}else if(H>0){pe(H-1,-1);let we=le.slice(0,H-1)+le.slice(H);h(we),R.current=H-1,B(H-1),A(0)}}else if(fe.delete){de();let ne=oe.findIndex(we=>H===we.start);if(ne!==-1){let we=oe[ne],$e=-(we.end-we.start),P=le.slice(0,we.start)+le.slice(we.end);h(P),A(0);let Dt=oe.filter((dt,Nt)=>Nt!==ne).map(dt=>dt.start>=we.end?{...dt,start:dt.start+$e,end:dt.end+$e}:dt);X(Dt)}else if(pe(H,-1),H<le.length){let we=le.slice(0,H)+le.slice(H+1);h(we),A(0)}}else if(fe.home||fe.end){if(de(),p){let{visualLines:ne,cursorLine:we}=us(le,H,Se,Ce,oe),$e=ne[we];if($e){let P;fe.home?P=qo($e.formattedStart,oe,le):fe.end&&(P=qo($e.formattedStart+$e.text.length,oe,le)),P=ge(P),R.current=P,B(P),A(0)}}}else if(j!==""||xe||ee)if(xe||ee||j.length>1||ve.current!==null)ve.current?(clearTimeout(ve.current),q.current+=j):(ie.current=H,q.current=j),ee?(ve.current=null,De()):ve.current=setTimeout(()=>{De()},80);else{pe(H,j.length);let we=le.slice(0,H)+j+le.slice(H);h(we);let $e=H+j.length;R.current=$e,B($e),A(0)}},i),Ut.createElement(ra,{...N,value:t,cursorIndex:I,showCursor:p,focus:i,columns:E,pasteBlocks:O,cursorColor:v})};import vr from"ink-text-input";import"ink-select-input";import r from"react";import{Box as k,Text as J}from"ink";import Bt,{useState as sa}from"react";import{Box as To,Text as bo,useInput as ia}from"ink";var pr=Bt.memo(({command:t,output:h,completed:x=!1,isFocused:S=!1,columns:p=80,isPty:w=!1,terminalHeight:i=24,theme:E="Dark"})=>{let m=je(E),v=(he=>{if(!he)return"";let Q=[[]],q=0,ie=0,ve="",Be=/\x1b\[([0-9;]*?)([a-zA-Z])/g,De=0,de,Ue=j=>{for(let xe=0;xe<j.length;xe++){let ee=j[xe];if(ee===`
|
|
11
11
|
`)for(q++,ie=0;q>=Q.length;)Q.push([]);else if(ee==="\r")ie=0;else{for(;q>=Q.length;)Q.push([]);let H=Q[q];for(;ie>H.length;)H.push({char:" ",style:""});H[ie]={char:ee,style:ve},ie++}}};for(;(de=Be.exec(he))!==null;){Ue(he.substring(De,de.index));let j=de[1],xe=de[2],ee=j?j.split(";").map(Number):[];if(xe==="A"){let H=ee[0]||1;q=Math.max(0,q-H)}else if(xe==="B"){let H=ee[0]||1;for(q=q+H;q>=Q.length;)Q.push([])}else if(xe==="C"){let H=ee[0]||1;ie=ie+H}else if(xe==="D"){let H=ee[0]||1;ie=Math.max(0,ie-H)}else if(xe==="G"){let H=(ee[0]||1)-1;ie=Math.max(0,H)}else if(xe==="H"||xe==="f"){let H=(ee[0]||1)-1,le=(ee[1]||1)-1;for(q=Math.max(0,H),ie=Math.max(0,le);q>=Q.length;)Q.push([])}else if(xe==="K"){let H=ee[0]||0;if(q<Q.length){let le=Q[q];if(H===0)le.length=ie;else if(H===1)for(let oe=0;oe<ie&&oe<le.length;oe++)le[oe]={char:" ",style:""};else H===2&&(le.length=0)}}else if(xe==="J"){let H=ee[0]||0;(H===2||H===3)&&(Q.length=0,Q.push([]),q=0,ie=0)}else if(xe==="m"){let H=de[0];H==="\x1B[0m"?ve="":ve=H}De=Be.lastIndex}Ue(he.substring(De));let fe=Q.map(j=>{let xe="",ee="";for(let H=0;H<j.length;H++){let le=j[H]||{char:" ",style:""};le.style!==ee&&(ee&&(xe+="\x1B[0m"),xe+=le.style,ee=le.style),xe+=le.char}return ee&&(xe+="\x1B[0m"),xe});for(;fe.length>0&&fe[fe.length-1]==="";)fe.pop();return fe.join(`
|
|
12
12
|
`)})(h).replace(/\n{3,}/g,`
|
|
13
13
|
|
|
@@ -36,9 +36,9 @@ import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J
|
|
|
36
36
|
`+ae)}else O=pt(I,h-10);let X=O.split(`
|
|
37
37
|
`);return r.createElement(k,{flexDirection:"column",paddingX:1,width:"100%"},X.map((R,ae)=>r.createElement(k,{key:ae,flexDirection:"row",width:"100%"},r.createElement(J,{color:i.textMuted},"\u2502 "),r.createElement(k,{flexGrow:1,marginLeft:1},r.createElement(Oo,{text:R,color:i.textMuted,italic:!0,theme:w})))))}if(m==="think-footer-padding")return x?r.createElement(k,{flexDirection:"row",width:"100%",paddingX:1},r.createElement(J,{color:i.textMuted},"\u2502 ")):null;if(m==="agent-line"){if(!M||M.trim()==="")return r.createElement(k,{height:1});let I=Ki(M,v,t.isActiveBlock);return r.createElement(k,{flexDirection:"column",paddingX:1,width:"100%"},r.createElement(Xn,{text:I,columns:h,theme:w}))}if(m==="table")return r.createElement(k,{flexDirection:"column",paddingX:1,width:"100%"},r.createElement(Qi,{buffer:M.split(`
|
|
38
38
|
`),terminalWidth:h,theme:w}));if(m==="diff-line"){let{isFirstLine:I,isLastLine:B}=t,L=(A=!1)=>r.createElement(k,{backgroundColor:i.codeBg,paddingX:1,width:h,marginBottom:A?1:0},r.createElement(k,{width:3,flexShrink:0}),r.createElement(k,{width:1,flexShrink:0,marginLeft:1}),r.createElement(k,{flexGrow:1,marginLeft:1},r.createElement(J,null," ")));return r.createElement(k,{flexDirection:"column"},I&&L(!1),r.createElement(zi,{line:M,pairContent:t.pairContent,parentText:void 0,columns:h,theme:w}),B&&L(!0))}if(m==="code-fence-open"){let I={paddingLeft:2,width:"100%"};return r.createElement(k,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},r.createElement(k,{flexDirection:"row",...I},r.createElement(J,null," ")),r.createElement(k,{flexDirection:"row",...I},r.createElement(J,{color:"gray",bold:!0},"\u25B6_ ",(M||"TEXT").toUpperCase())))}if(m==="code-line"){let{lineNum:I,lang:B}=t,L=h-12,O=pt(M,Math.max(10,L)).split(`
|
|
39
|
-
`);return r.createElement(k,{flexDirection:"column",width:"100%"},O.map((X,R)=>r.createElement(k,{key:R,flexDirection:"row",borderColor:i.codeBorder,paddingLeft:2,width:"100%"},r.createElement(k,{width:5,flexShrink:0},r.createElement(J,{color:"gray",dimColor:!0},R===0?String(I).padStart(4," ")+" ":" ")),r.createElement(k,{flexGrow:1},Ot(X,B,i.text)))))}if(m==="code-fence-close")return r.createElement(k,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},r.createElement(J,null," "));if(m==="write-header")return r.createElement(k,{flexDirection:"column",paddingX:1,width:h},r.createElement(mn,{text:M,columns:h,theme:w}));if(m==="write-line"){let{gutterWidth:I,lineNum:B,isFirstLine:L,isLastLine:A,extension:O,wrappedLines:X}=t,R=(ae=!1)=>r.createElement(k,{flexDirection:"row",width:h,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:i.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:i.codeBg,marginBottom:ae?1:0},r.createElement(k,{width:I+2,flexShrink:0},r.createElement(J,null," ".repeat(I+2))),r.createElement(k,{flexGrow:1},r.createElement(J,null," ")));return r.createElement(k,{flexDirection:"column"},L&&R(!1),r.createElement(k,{flexDirection:"row",width:h,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:i.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:i.codeBg},r.createElement(k,{width:I+2,flexShrink:0},r.createElement(J,{color:"gray",dimColor:!0},String(B).padStart(I," ")," ")),r.createElement(k,{flexGrow:1,flexDirection:"column"},(X||[M]).map((ae,he)=>r.createElement(k,{key:he},Ot(ae,O,i.text))))),A&&R(!0))}return m==="write-footer"?r.createElement(k,{flexDirection:"column",paddingX:1,width:h,marginTop:1,marginBottom:1},r.createElement(mn,{text:M,columns:h,theme:w})):m==="worked-duration"?r.createElement(k,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},r.createElement(J,{color:i.textMuted},"["),r.createElement(J,{color:i.textMuted},"Worked for ",r.createElement(J,{bold:!0,color:i.text},fs(N))),r.createElement(J,{color:i.textMuted},"]")):null}),Cc=r.memo(({messages:t,showFullThinking:h,columns:x=80,aiProvider:S,version:p,theme:w="Dark"})=>r.createElement(k,{flexDirection:"column",width:"100%"},t.map((i,E)=>r.createElement(Ji,{key:i.id||E,msg:i,showFullThinking:h,columns:x,aiProvider:S,version:p,theme:w}))));import mt from"react";import{Box as Po,Text as lo}from"ink";import{useState as $n,useEffect as Hn,useRef as Tr}from"react";var Gn=null;function Zi(){Gn&&Gn()}var Ja=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let h=[{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 x=0;x<h.length-1;x++){let S=h[x],p=h[x+1];if(t>=S.t&&t<=p.t){let w=(t-S.t)/(p.t-S.t);w=w*w*(3-2*w);let i=Math.round(S.r+(p.r-S.r)*w),E=Math.round(S.g+(p.g-S.g)*w),m=Math.round(S.b+(p.b-S.b)*w);return`#${((1<<24)+(i<<16)+(E<<8)+m).toString(16).slice(1)}`}}return"#ff0000"},Za=mt.memo(({mode:t,thinkingLevel:h,tokens:x="0.0k",tokensTotal:S="0.0k",cachedTokens:p=0,chatId:w="NEW-SESSION",isMemoryEnabled:i=!0,apiTier:E="Free",aiProvider:m="Google",activeModel:M="",isProcessing:v=!1,lastChunkTime:N=0,theme:I="Dark",wps:B=0,showTPMEstimate:L=!1})=>{let A=je(I),O="",[X,R]=$n(0),[ae,he]=$n(0),[Q,q]=$n("MB"),[ie,ve]=$n("green"),[Be,De]=$n(0),de=Tr([]),Ue=Tr(370),fe=Tr([]),j=Tr(N);Hn(()=>{j.current=N},[N]),Hn(()=>{if(!v){fe.current=[];return}if(B>0){let oe=fe.current;oe.push(B),oe.length>3&&oe.shift()}},[v,B,N]),Hn(()=>{if(!v){De(0);return}let oe=setInterval(()=>{let Se=j.current,pe=Se>0?Date.now()-Se:0;if(Se>0&&pe>1500)fe.current=[],De(0);else if(Se>0&&pe>600){fe.current.length>0&&fe.current.shift();let ge=fe.current;if(ge.length>0){let ke=ge.reduce((Ve,Ce)=>Ve+Ce,0),Je=Math.round(ke/ge.length*10)/10;De(Je)}else De(0)}else{let ge=fe.current;if(ge.length>0){let ke=ge.reduce((Ve,Ce)=>Ve+Ce,0),Je=Math.round(ke/ge.length*10)/10;De(Je)}else B>0&&De(B)}},1350);return()=>clearInterval(oe)},[v]),Hn(()=>{if(!v){de.current=[];return}if(N>0){let pe=de.current;(pe.length===0||pe[pe.length-1]!==N)&&(pe.push(N),pe.length>10&&pe.shift())}let oe=()=>{if(!N){ve("#00a564");return}let pe=de.current,ge=0;if(pe.length>1){let Xe=0;for(let P=1;P<pe.length;P++)Xe+=pe[P]-pe[P-1];ge=Xe/(pe.length-1)}let ke=Date.now()-N,Ve=ke>=2500,Ce=!Ve&&ge>0?Math.min(ke,ge*3):ke,ne=Math.max(ge,Ce),we=Ve?.4:.2;Ue.current=Ue.current*(1-we)+ne*we,ve(Ja(Ue.current))};oe();let Se=setInterval(oe,100);return()=>clearInterval(Se)},[v,N]);let xe=()=>{let oe=process.memoryUsage(),Se=oe.heapTotal/(1024*1024)>=1024,pe=Se?"GB":"MB",ge=(ke,Je)=>{let Ve=ke/(1048576*(Je?1024:1));return Je?parseFloat(Ve.toFixed(2)):Math.round(Ve)};q(pe),he(ge(oe.heapTotal,Se)),R(ge(oe.heapUsed,Se))};Hn(()=>{Gn=xe,xe();let oe=setInterval(()=>{xe()},6e4);return()=>{clearInterval(oe),Gn===xe&&(Gn=null)}},[]);let ee=262144,H=process.env.HIGH_CONTEXT,le=process.env.GOOGLE_GEMMA_NONSENSE==="true"||process.env.GOOGLE_GEMMA_NONSENSE===!0||!1;if(H&&H!=="false"){let oe=parseInt(H,10);!isNaN(oe)&&oe>=32e3&&oe<=1e6&&(ee=oe)}return(m==="NVIDIA"&&(M?.includes("gpt")||M?.includes("qwen")||M?.includes("medium")||M.includes("muse"))||m==="Mistral")&&(ee=128e3),m==="Google"&&M?.includes("gemma")&&le&&(ee=16e3),mt.createElement(Po,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},mt.createElement(Po,null,mt.createElement(Po,{marginRight:1},mt.createElement(lo,{color:A.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),mt.createElement(lo,{color:A.textMuted,dimColor:!0},"\u2503 "),mt.createElement(Po,null,mt.createElement(lo,{color:A.text,italic:!0},Ei(process.cwd(),35)))),mt.createElement(Po,null,v?mt.createElement(Po,null,mt.createElement(lo,{color:ie},"\u25CF"),L&&mt.createElement(mt.Fragment,null,mt.createElement(lo,{color:A.textMuted,bold:!0}," ",Be," tps"),mt.createElement(lo,{color:A.textMuted,dimColor:!0}," \u2503"))):null,x>0&&mt.createElement(mt.Fragment,null,mt.createElement(Po,{marginX:1},mt.createElement(lo,{color:A.text},ut(S),(()=>{let oe=typeof S=="number"?S:0,Se=typeof p=="number"?p:0,pe=oe>0?Se/oe*100:0;return pe<=0?null:mt.createElement(lo,{color:A.success||"green",dimColor:!0}," ",pe.toFixed(0),"%")})())),mt.createElement(lo,{color:A.textMuted,dimColor:!0},"\u2503")),mt.createElement(Po,{marginLeft:1},mt.createElement(lo,{color:A.textMuted,bold:!0},X," ",Q))))}),Ri=Za;import ze,{useState as hs,useMemo as Ra,useEffect as ed}from"react";import{Box as Xt,Text as Yt,useInput as td}from"ink";import od from"ink-select-input";var nd=({label:t,isSelected:h,theme:x="Dark"})=>{let S=je(x),p=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return ze.createElement(Xt,{marginTop:p?1:0,backgroundColor:h?S.highlightBg:void 0,paddingX:1,width:"100%"},ze.createElement(Yt,{color:h?S.text:S.textMuted,bold:h},h?"\u276F ":" ",t))};function gt({title:t,subtitle:h,items:x=[],onSelect:S,theme:p="Dark",searchable:w=!1}){let i=je(p),[E,m]=hs(""),[M,v]=hs(0),[N,I]=hs("list"),B=Ra(()=>{if(!w||!E.trim())return x;let L=E.toLowerCase().trim();return x.filter(A=>A.label&&A.label.toLowerCase().includes(L))},[x,E,w]);return ed(()=>{v(0)},[E]),td((L,A)=>{if(w){if(A.upArrow){I("list"),v(O=>B.length>0?O>0?O-1:B.length-1:0);return}if(A.downArrow){I("list"),v(O=>B.length>0&&O<B.length-1?O+1:0);return}if(A.return){B.length>0&&B[M]&&S(B[M]);return}if(A.escape){if(E)m(""),I("list"),v(0);else{let O=x.find(X=>X.value==="Back"||X.label==="Back"||X.value==="Cancel"||X.label==="Cancel");O&&S(O)}return}if(A.backspace||A.delete){I("search"),m(O=>O.slice(0,-1));return}if(L&&!A.ctrl&&!A.meta&&!A.tab){I("search"),m(O=>O+L);return}}},{isActive:w}),w?ze.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:i.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&ze.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:0},ze.createElement(Yt,{color:i.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),h&&ze.createElement(Xt,{paddingX:1,marginBottom:0},ze.createElement(Yt,{color:i.textMuted,italic:!0}," ",h)),ze.createElement(Xt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},ze.createElement(Yt,{color:N==="search"?i.primary||"cyan":i.textMuted,bold:N==="search"},"\u{1F50D} Search:"),ze.createElement(Yt,{color:i.text,bold:!0}," ",E),N==="search"?ze.createElement(Yt,{color:i.primary||"cyan"},"\u2588"):E?null:ze.createElement(Yt,{color:i.textMuted,italic:!0}," (type to search...)")),ze.createElement(Xt,{flexDirection:"column",width:"100%"},B.length===0?ze.createElement(Xt,{paddingX:1,marginY:0},ze.createElement(Yt,{color:i.warning||"yellow",italic:!0}," No matching items found")):B.map((L,A)=>{let O=A===M,X=L.label==="Cancel"||L.label==="Back"||L.label.toLowerCase().includes("exit")||L.label.toLowerCase().includes("back");return ze.createElement(Xt,{key:L.value??L.label??A,marginTop:X?1:0,backgroundColor:O?i.highlightBg:void 0,paddingX:1,width:"100%"},ze.createElement(Yt,{color:O?i.text:i.textMuted,bold:O},O?"\u276F ":" ",L.label))})),ze.createElement(Xt,{paddingX:1,marginTop:1},ze.createElement(Yt,{color:i.textMuted,italic:!0},N==="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)"))):ze.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:i.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&ze.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:h?0:1},ze.createElement(Yt,{color:i.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),h&&ze.createElement(Xt,{paddingX:1,marginBottom:1},ze.createElement(Yt,{color:i.textMuted,italic:!0}," ",h)),ze.createElement(Xt,{flexDirection:"column",width:"100%"},ze.createElement(od,{items:x,onSelect:S,itemComponent:L=>ze.createElement(nd,{...L,theme:p}),indicatorComponent:()=>null})),ze.createElement(Xt,{paddingX:1,marginTop:1},ze.createElement(Yt,{color:i.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import C,{useState as Lt,useEffect as br}from"react";import{Box as Oe,Text as G,useInput as rd}from"ink";import sd from"ink-text-input";import id from"v8";import el from"os";var ao=[...Object.keys(Ii),"Mystery"],co=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Memory",desc:"Manage system context & agent's memory"},{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"}],tl=t=>{let h=t.autoApproveCommands||"",x=t.autoDisallowCommands||"",S=t.alwaysAskCommands||"",p=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&h===""&&x==="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,w=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&h==="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"&&x==="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,i=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&h==="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"&&x===""&&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 p?"Strict":w?"Balanced":i?"Autonomous":t.sandboxPreset||"Custom"},xs=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function yr({systemSettings:t,setSystemSettings:h,apiTier:x,setActiveView:S,setInputConfig:p,saveSettings:w,quotas:i,setMessages:E,aiProvider:m,initialSelectingTheme:M=!1,onCloseTheme:v=null,setProviderReturnView:N=null}){let I=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",B=ao.indexOf(I),[L,A]=Lt("categories"),[O,X]=Lt(0),[R,ae]=Lt(0),[he,Q]=Lt(null),[q,ie]=Lt(""),[ve,Be]=Lt(M),[De,de]=Lt(B>=0?B:0),[Ue,fe]=Lt(t.theme||"Dark"),[j,xe]=Lt(!1),[ee,H]=Lt(0),[le,oe]=Lt(0),[Se,pe]=Lt(""),[ge,ke]=Lt("list"),[Je,Ve]=Lt({});br(()=>{(async()=>{let b=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside","9router"],F={};for(let ye of b)try{await an(ye)&&(F[ye]=!0)}catch{}Ve(F)})()},[]);let Ce=C.useMemo(()=>{let se=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside","9router"],F=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",ye=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:F,value:"ENV",isHeader:!1}],He=i?.providerTiers?.[m]||x||"Free",it=ko(m,He)||[];it.length>0&&(ye.push({label:`\u2500\u2500 ${m.toUpperCase()}${He!=="Free"?` (${He})`:""} \u2500\u2500`,isHeader:!0}),it.forEach(ot=>{let _e=typeof ot=="string"?ot:ot.cmd||ot.name||ot.id||String(ot);_e&&!_e.trim().startsWith("---")&&!_e.startsWith(`
|
|
39
|
+
`);return r.createElement(k,{flexDirection:"column",width:"100%"},O.map((X,R)=>r.createElement(k,{key:R,flexDirection:"row",borderColor:i.codeBorder,paddingLeft:2,width:"100%"},r.createElement(k,{width:5,flexShrink:0},r.createElement(J,{color:"gray",dimColor:!0},R===0?String(I).padStart(4," ")+" ":" ")),r.createElement(k,{flexGrow:1},Ot(X,B,i.text)))))}if(m==="code-fence-close")return r.createElement(k,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},r.createElement(J,null," "));if(m==="write-header")return r.createElement(k,{flexDirection:"column",paddingX:1,width:h},r.createElement(mn,{text:M,columns:h,theme:w}));if(m==="write-line"){let{gutterWidth:I,lineNum:B,isFirstLine:L,isLastLine:A,extension:O,wrappedLines:X}=t,R=(ae=!1)=>r.createElement(k,{flexDirection:"row",width:h,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:i.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:i.codeBg,marginBottom:ae?1:0},r.createElement(k,{width:I+2,flexShrink:0},r.createElement(J,null," ".repeat(I+2))),r.createElement(k,{flexGrow:1},r.createElement(J,null," ")));return r.createElement(k,{flexDirection:"column"},L&&R(!1),r.createElement(k,{flexDirection:"row",width:h,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:i.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:i.codeBg},r.createElement(k,{width:I+2,flexShrink:0},r.createElement(J,{color:"gray",dimColor:!0},String(B).padStart(I," ")," ")),r.createElement(k,{flexGrow:1,flexDirection:"column"},(X||[M]).map((ae,he)=>r.createElement(k,{key:he},Ot(ae,O,i.text))))),A&&R(!0))}return m==="write-footer"?r.createElement(k,{flexDirection:"column",paddingX:1,width:h,marginTop:1,marginBottom:1},r.createElement(mn,{text:M,columns:h,theme:w})):m==="worked-duration"?r.createElement(k,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},r.createElement(J,{color:i.textMuted},"["),r.createElement(J,{color:i.textMuted},"Worked for ",r.createElement(J,{bold:!0,color:i.text},fs(N))),r.createElement(J,{color:i.textMuted},"]")):null}),Cc=r.memo(({messages:t,showFullThinking:h,columns:x=80,aiProvider:S,version:p,theme:w="Dark"})=>r.createElement(k,{flexDirection:"column",width:"100%"},t.map((i,E)=>r.createElement(Ji,{key:i.id||E,msg:i,showFullThinking:h,columns:x,aiProvider:S,version:p,theme:w}))));import mt from"react";import{Box as Po,Text as lo}from"ink";import{useState as $n,useEffect as Hn,useRef as Tr}from"react";var Gn=null;function Zi(){Gn&&Gn()}var Ja=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let h=[{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 x=0;x<h.length-1;x++){let S=h[x],p=h[x+1];if(t>=S.t&&t<=p.t){let w=(t-S.t)/(p.t-S.t);w=w*w*(3-2*w);let i=Math.round(S.r+(p.r-S.r)*w),E=Math.round(S.g+(p.g-S.g)*w),m=Math.round(S.b+(p.b-S.b)*w);return`#${((1<<24)+(i<<16)+(E<<8)+m).toString(16).slice(1)}`}}return"#ff0000"},Za=mt.memo(({mode:t,thinkingLevel:h,tokens:x="0.0k",tokensTotal:S="0.0k",cachedTokens:p=0,chatId:w="NEW-SESSION",isMemoryEnabled:i=!0,apiTier:E="Free",aiProvider:m="Google",activeModel:M="",isProcessing:v=!1,lastChunkTime:N=0,theme:I="Dark",wps:B=0,showTPMEstimate:L=!1})=>{let A=je(I),O="",[X,R]=$n(0),[ae,he]=$n(0),[Q,q]=$n("MB"),[ie,ve]=$n("green"),[Be,De]=$n(0),de=Tr([]),Ue=Tr(370),fe=Tr([]),j=Tr(N);Hn(()=>{j.current=N},[N]),Hn(()=>{if(!v){fe.current=[];return}if(B>0){let oe=fe.current;oe.push(B),oe.length>3&&oe.shift()}},[v,B,N]),Hn(()=>{if(!v){De(0);return}let oe=setInterval(()=>{let Se=j.current,pe=Se>0?Date.now()-Se:0;if(Se>0&&pe>1500)fe.current=[],De(0);else if(Se>0&&pe>600){fe.current.length>0&&fe.current.shift();let ge=fe.current;if(ge.length>0){let ke=ge.reduce((Ve,Ce)=>Ve+Ce,0),Je=Math.round(ke/ge.length*10)/10;De(Je)}else De(0)}else{let ge=fe.current;if(ge.length>0){let ke=ge.reduce((Ve,Ce)=>Ve+Ce,0),Je=Math.round(ke/ge.length*10)/10;De(Je)}else B>0&&De(B)}},1350);return()=>clearInterval(oe)},[v]),Hn(()=>{if(!v){de.current=[];return}if(N>0){let pe=de.current;(pe.length===0||pe[pe.length-1]!==N)&&(pe.push(N),pe.length>10&&pe.shift())}let oe=()=>{if(!N){ve("#00a564");return}let pe=de.current,ge=0;if(pe.length>1){let $e=0;for(let P=1;P<pe.length;P++)$e+=pe[P]-pe[P-1];ge=$e/(pe.length-1)}let ke=Date.now()-N,Ve=ke>=2500,Ce=!Ve&&ge>0?Math.min(ke,ge*3):ke,ne=Math.max(ge,Ce),we=Ve?.4:.2;Ue.current=Ue.current*(1-we)+ne*we,ve(Ja(Ue.current))};oe();let Se=setInterval(oe,100);return()=>clearInterval(Se)},[v,N]);let xe=()=>{let oe=process.memoryUsage(),Se=oe.heapTotal/(1024*1024)>=1024,pe=Se?"GB":"MB",ge=(ke,Je)=>{let Ve=ke/(1048576*(Je?1024:1));return Je?parseFloat(Ve.toFixed(2)):Math.round(Ve)};q(pe),he(ge(oe.heapTotal,Se)),R(ge(oe.heapUsed,Se))};Hn(()=>{Gn=xe,xe();let oe=setInterval(()=>{xe()},6e4);return()=>{clearInterval(oe),Gn===xe&&(Gn=null)}},[]);let ee=262144,H=process.env.HIGH_CONTEXT,le=process.env.GOOGLE_GEMMA_NONSENSE==="true"||process.env.GOOGLE_GEMMA_NONSENSE===!0||!1;if(H&&H!=="false"){let oe=parseInt(H,10);!isNaN(oe)&&oe>=32e3&&oe<=1e6&&(ee=oe)}return(m==="NVIDIA"&&(M?.includes("gpt")||M?.includes("qwen")||M?.includes("medium")||M.includes("muse"))||m==="Mistral")&&(ee=128e3),m==="Google"&&M?.includes("gemma")&&le&&(ee=16e3),mt.createElement(Po,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},mt.createElement(Po,null,mt.createElement(Po,{marginRight:1},mt.createElement(lo,{color:A.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),mt.createElement(lo,{color:A.textMuted,dimColor:!0},"\u2503 "),mt.createElement(Po,null,mt.createElement(lo,{color:A.text,italic:!0},Ei(process.cwd(),35)))),mt.createElement(Po,null,v?mt.createElement(Po,null,mt.createElement(lo,{color:ie},"\u25CF"),L&&mt.createElement(mt.Fragment,null,mt.createElement(lo,{color:A.textMuted,bold:!0}," ",Be," tps"),mt.createElement(lo,{color:A.textMuted,dimColor:!0}," \u2503"))):null,x>0&&mt.createElement(mt.Fragment,null,mt.createElement(Po,{marginX:1},mt.createElement(lo,{color:A.text},ut(S),(()=>{let oe=typeof S=="number"?S:0,Se=typeof p=="number"?p:0,pe=oe>0?Se/oe*100:0;return pe<=0?null:mt.createElement(lo,{color:A.success||"green",dimColor:!0}," ",pe.toFixed(0),"%")})())),mt.createElement(lo,{color:A.textMuted,dimColor:!0},"\u2503")),mt.createElement(Po,{marginLeft:1},mt.createElement(lo,{color:A.textMuted,bold:!0},X," ",Q))))}),Ri=Za;import ze,{useState as hs,useMemo as Ra,useEffect as ed}from"react";import{Box as Xt,Text as Yt,useInput as td}from"ink";import od from"ink-select-input";var nd=({label:t,isSelected:h,theme:x="Dark"})=>{let S=je(x),p=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return ze.createElement(Xt,{marginTop:p?1:0,backgroundColor:h?S.highlightBg:void 0,paddingX:1,width:"100%"},ze.createElement(Yt,{color:h?S.text:S.textMuted,bold:h},h?"\u276F ":" ",t))};function gt({title:t,subtitle:h,items:x=[],onSelect:S,theme:p="Dark",searchable:w=!1}){let i=je(p),[E,m]=hs(""),[M,v]=hs(0),[N,I]=hs("list"),B=Ra(()=>{if(!w||!E.trim())return x;let L=E.toLowerCase().trim();return x.filter(A=>A.label&&A.label.toLowerCase().includes(L))},[x,E,w]);return ed(()=>{v(0)},[E]),td((L,A)=>{if(w){if(A.upArrow){I("list"),v(O=>B.length>0?O>0?O-1:B.length-1:0);return}if(A.downArrow){I("list"),v(O=>B.length>0&&O<B.length-1?O+1:0);return}if(A.return){B.length>0&&B[M]&&S(B[M]);return}if(A.escape){if(E)m(""),I("list"),v(0);else{let O=x.find(X=>X.value==="Back"||X.label==="Back"||X.value==="Cancel"||X.label==="Cancel");O&&S(O)}return}if(A.backspace||A.delete){I("search"),m(O=>O.slice(0,-1));return}if(L&&!A.ctrl&&!A.meta&&!A.tab){I("search"),m(O=>O+L);return}}},{isActive:w}),w?ze.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:i.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&ze.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:0},ze.createElement(Yt,{color:i.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),h&&ze.createElement(Xt,{paddingX:1,marginBottom:0},ze.createElement(Yt,{color:i.textMuted,italic:!0}," ",h)),ze.createElement(Xt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},ze.createElement(Yt,{color:N==="search"?i.primary||"cyan":i.textMuted,bold:N==="search"},"\u{1F50D} Search:"),ze.createElement(Yt,{color:i.text,bold:!0}," ",E),N==="search"?ze.createElement(Yt,{color:i.primary||"cyan"},"\u2588"):E?null:ze.createElement(Yt,{color:i.textMuted,italic:!0}," (type to search...)")),ze.createElement(Xt,{flexDirection:"column",width:"100%"},B.length===0?ze.createElement(Xt,{paddingX:1,marginY:0},ze.createElement(Yt,{color:i.warning||"yellow",italic:!0}," No matching items found")):B.map((L,A)=>{let O=A===M,X=L.label==="Cancel"||L.label==="Back"||L.label.toLowerCase().includes("exit")||L.label.toLowerCase().includes("back");return ze.createElement(Xt,{key:L.value??L.label??A,marginTop:X?1:0,backgroundColor:O?i.highlightBg:void 0,paddingX:1,width:"100%"},ze.createElement(Yt,{color:O?i.text:i.textMuted,bold:O},O?"\u276F ":" ",L.label))})),ze.createElement(Xt,{paddingX:1,marginTop:1},ze.createElement(Yt,{color:i.textMuted,italic:!0},N==="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)"))):ze.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:i.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&ze.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:h?0:1},ze.createElement(Yt,{color:i.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),h&&ze.createElement(Xt,{paddingX:1,marginBottom:1},ze.createElement(Yt,{color:i.textMuted,italic:!0}," ",h)),ze.createElement(Xt,{flexDirection:"column",width:"100%"},ze.createElement(od,{items:x,onSelect:S,itemComponent:L=>ze.createElement(nd,{...L,theme:p}),indicatorComponent:()=>null})),ze.createElement(Xt,{paddingX:1,marginTop:1},ze.createElement(Yt,{color:i.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import C,{useState as Lt,useEffect as br}from"react";import{Box as Oe,Text as G,useInput as rd}from"ink";import sd from"ink-text-input";import id from"v8";import el from"os";var ao=[...Object.keys(Ii),"Mystery"],co=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Memory",desc:"Manage system context & agent's memory"},{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"}],tl=t=>{let h=t.autoApproveCommands||"",x=t.autoDisallowCommands||"",S=t.alwaysAskCommands||"",p=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&h===""&&x==="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,w=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&h==="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"&&x==="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,i=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&h==="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"&&x===""&&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 p?"Strict":w?"Balanced":i?"Autonomous":t.sandboxPreset||"Custom"},xs=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function yr({systemSettings:t,setSystemSettings:h,apiTier:x,setActiveView:S,setInputConfig:p,saveSettings:w,quotas:i,setMessages:E,aiProvider:m,initialSelectingTheme:M=!1,onCloseTheme:v=null,setProviderReturnView:N=null}){let I=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",B=ao.indexOf(I),[L,A]=Lt("categories"),[O,X]=Lt(0),[R,ae]=Lt(0),[he,Q]=Lt(null),[q,ie]=Lt(""),[ve,Be]=Lt(M),[De,de]=Lt(B>=0?B:0),[Ue,fe]=Lt(t.theme||"Dark"),[j,xe]=Lt(!1),[ee,H]=Lt(0),[le,oe]=Lt(0),[Se,pe]=Lt(""),[ge,ke]=Lt("list"),[Je,Ve]=Lt({});br(()=>{(async()=>{let b=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside","9router"],F={};for(let ye of b)try{await an(ye)&&(F[ye]=!0)}catch{}Ve(F)})()},[]);let Ce=C.useMemo(()=>{let se=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside","9router"],F=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",ye=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:F,value:"ENV",isHeader:!1}],He=i?.providerTiers?.[m]||x||"Free",it=ko(m,He)||[];it.length>0&&(ye.push({label:`\u2500\u2500 ${m.toUpperCase()}${He!=="Free"?` (${He})`:""} \u2500\u2500`,isHeader:!0}),it.forEach(ot=>{let _e=typeof ot=="string"?ot:ot.cmd||ot.name||ot.id||String(ot);_e&&!_e.trim().startsWith("---")&&!_e.startsWith(`
|
|
40
40
|
---`)&&ye.push({label:_e,value:_e,isHeader:!1,provider:m})}));for(let ot of se)if(ot!==m&&Je[ot]){let _e=i?.providerTiers?.[ot]||"Free",jt=ko(ot,_e)||[];jt.length>0&&(ye.push({label:`\u2500\u2500 ${ot.toUpperCase()}${_e!=="Free"?` (${_e})`:""} \u2500\u2500`,isHeader:!0}),jt.forEach(We=>{let bt=typeof We=="string"?We:We.cmd||We.name||We.id||String(We);bt&&!bt.trim().startsWith("---")&&!bt.startsWith(`
|
|
41
|
-
---`)&&ye.push({label:bt,value:bt,isHeader:!1,provider:ot})}))}return ye},[m,x,i,Je]),ne=C.useMemo(()=>{if(!Se.trim())return Ce;let se=Se.trim().toLowerCase(),b=[],F=null;for(let ye of Ce)ye.isHeader?F=ye:(ye.label.toLowerCase().includes(se)||ye.value&&ye.value.toLowerCase().includes(se))&&(F&&!b.includes(F)&&b.push(F),b.push(ye));return b},[Ce,Se]);br(()=>{if(j){let se=ne.findIndex(b=>!b.isHeader);H(se>=0?se:0),oe(0)}},[Se]),br(()=>{if(j){if(ne.length===0){H(0),oe(0);return}if(ee>=ne.length||ne[ee]?.isHeader){let se=ne.findIndex(b=>!b.isHeader);H(se>=0?se:0)}}},[ne,j]);let[we,Xe]=Lt(0),[P,Dt]=Lt(0),[dt,Nt]=Lt("MB");br(()=>{let se=id.getHeapStatistics().heap_size_limit,b=se>=1024*1024*1024,F=b?"GB":"MB",ye=b?1024*1024*1024:1024*1024;Dt(parseFloat((se/ye).toFixed(2))),Nt(F);let He=()=>{let jt=process.memoryUsage().rss/ye,We=b?parseFloat(jt.toFixed(2)):Math.round(jt);Xe(We)};He();let it=setInterval(()=>{He()},3e4);return()=>clearInterval(it)},[]);let Vt=se=>{switch(se){case"providers":{let F=[{label:"Current Provider",value:"aiProvider",status:m},...m.toLowerCase()==="google"||m.toLowerCase()==="openrouter"?[{label:"Show Paid Models?",value:"apiTier",status:x==="Free"?"No":"Yes"}]:[]];return m==="Ollama"&&F.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),F}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"}];case"memory":return[{label:"Toggle Memory",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:tl(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:xs(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:xs(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:xs(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"}];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"other":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:"Preserve Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"},{label:"Dynamic Directory Awareness",value:"dynamicDirAwareness",status:t.dynamicDirAwareness?"ON":"OFF"},{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Classic (deprecated)"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"}];default:return[]}},zo=co[O].id,Ht=Vt(zo);rd((se,b)=>{if(j){if(b.tab){ke(F=>F==="search"?"list":"search");return}if(ge==="search"){b.escape?xe(!1):b.downArrow||b.return?ke("list"):b.backspace||b.delete?pe(F=>F.slice(0,-1)):se&&!b.ctrl&&!b.meta&&se.length===1&&pe(F=>F+se);return}if(b.upArrow)H(F=>{if(ne.length===0)return 0;let ye=(F-1+ne.length)%ne.length,He=0;for(;ne[ye]?.isHeader&&He<ne.length;)ye=(ye-1+ne.length)%ne.length,He++;return ye});else if(b.downArrow)H(F=>{if(ne.length===0)return 0;let ye=(F+1)%ne.length,He=0;for(;ne[ye]?.isHeader&&He<ne.length;)ye=(ye+1)%ne.length,He++;return ye});else if(b.return){let F=ne[ee];F&&!F.isHeader&&(h(ye=>{let He=F.value==="Default",it={...ye,CustomSubAgent:!He,SubAgentModel:F.value,SubAgentProvider:He?"":F.provider||""};return w({systemSettings:it,apiTier:x,quotas:i}),it}),xe(!1))}else b.escape?xe(!1):se&&!b.ctrl&&!b.meta&&se.length===1&&(pe(F=>F+se),ke("search"));return}if(ve){if(b.upArrow){let F=(De-1+ao.length)%ao.length;de(F)}else if(b.downArrow){let F=(De+1)%ao.length;de(F)}else if(b.return){let F=ao[De];h(ye=>{let He={...ye,theme:F};return w({systemSettings:He,apiTier:x,quotas:i}),He}),v?v():Be(!1)}else b.escape&&(v?v():Be(!1));return}if(he){b.escape&&Q(null);return}if(L==="categories")b.upArrow?X(F=>(F-1+co.length)%co.length):b.downArrow?X(F=>(F+1)%co.length):b.return||b.rightArrow?co[O].id==="exit"?S("chat"):(A("items"),ae(0)):b.escape&&S("chat");else if(L==="items"){let F=Ht[R];if(se==="?"&&F?.value==="dynamicDirAwareness"){S("dynamicDirHelp");return}if(b.upArrow)ae(ye=>(ye-1+Ht.length)%Ht.length);else if(b.downArrow)ae(ye=>(ye+1)%Ht.length);else if(b.leftArrow||b.escape)A("categories");else if(b.return){let ye=Ht[R];Er(ye)}}});let Er=se=>{if(se.value==="memory")h(b=>({...b,memory:!b.memory}));else if(se.value==="sandboxPreset"){let b=tl(t),F=["Autonomous","Balanced","Strict"],He=(F.indexOf(b)+1)%F.length,it=F[He];h(ot=>{let _e={...ot,sandboxPreset:it};return it==="Strict"?(_e.autoExec=!1,_e.allowExternalAccess=!1,_e.networkAccess=!1,_e.autoApproveCommands="",_e.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",_e.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",_e.autoApproveGit=!1):it==="Balanced"?(_e.autoExec=!0,_e.allowExternalAccess=!1,_e.networkAccess=!0,_e.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",_e.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",_e.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",_e.autoApproveGit=!1):it==="Autonomous"&&(_e.autoExec=!0,_e.allowExternalAccess=!0,_e.networkAccess=!0,_e.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",_e.autoDisallowCommands="",_e.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",_e.autoApproveGit=!0),_e})}else if(se.value==="autoExec")t.autoExec?h(b=>({...b,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?S("doubleDanger"):S("autoExecDanger");else if(se.value==="externalAccess")t.allowExternalAccess?h(b=>({...b,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?S("doubleDanger"):S("externalDanger");else if(se.value==="networkAccess")h(b=>({...b,networkAccess:b.networkAccess===!1,sandboxPreset:"Custom"}));else if(se.value==="alwaysAsk")Q("alwaysAskCommands"),ie(t.alwaysAskCommands||"");else if(se.value==="autoApprove")Q("autoApproveCommands"),ie(t.autoApproveCommands||"");else if(se.value==="autoApproveGit")h(b=>({...b,autoApproveGit:!b.autoApproveGit,sandboxPreset:"Custom"}));else if(se.value==="autoDisallow")Q("autoDisallowCommands"),ie(t.autoDisallowCommands||"");else if(se.value==="ollamaEndpoint")h(b=>{let F=b.ollamaEndpoint==="Local"?"Cloud":"Local",ye={...b,ollamaEndpoint:F};return w({systemSettings:ye,apiTier:x,quotas:i}),ye});else if(se.value==="apiTier")S("apiTier");else if(se.value==="aiProvider")N&&N("settings"),S("selectProvider");else if(se.value==="advanceRollback")t.advanceRollback?h(b=>{let F={...b,advanceRollback:!1};return w({systemSettings:F,apiTier:x,quotas:i}),F}):S("advanceRollbackDanger");else if(se.value==="autoDelete"){let b=["1d","7d","30d"],ye=(b.indexOf(t.autoDeleteHistory||"30d")+1)%b.length;h(He=>({...He,autoDeleteHistory:b[ye]}))}else if(se.value==="autoUpdate")h(b=>({...b,autoUpdate:!b.autoUpdate}));else if(se.value==="externalData")if(!t.useExternalData)p({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 b={...t,useExternalData:!1};h(b),w({systemSettings:b,apiTier:x,quotas:i}),E(F=>[...F,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),S("chat")}else if(se.value==="updateManager")S("updateManager");else if(se.value==="parserDownload")S("parserDownload");else if(se.value==="indentationTree")h(b=>{let F={...b,indentationTree:b.indentationTree===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="compressToolResults")h(b=>{let F={...b,compressToolResults:!b.compressToolResults};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="autoTruncateResults")h(b=>{let F={...b,autoTruncateResults:!b.autoTruncateResults};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="subAgents")h(b=>{let F={...b,subAgents:b.subAgents===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="subAgentModel"){let b=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",F=ne.findIndex(ye=>ye.value===b);H(F>=0?F:0),xe(!0)}else if(se.value==="preserveThinking")h(b=>{let F={...b,preserveThinking:b.preserveThinking===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="dynamicDirAwareness")t.dynamicDirAwareness?h(b=>{let F={...b,dynamicDirAwareness:!1};return w({systemSettings:F,apiTier:x,quotas:i}),F}):S("dynamicDirDanger");else if(se.value==="loadingPhrases")h(b=>{let F={...b,loadingPhrases:b.loadingPhrases===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="progressiveRendering")h(b=>{let F={...b,progressiveRendering:!b.progressiveRendering};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="showTPMEstimate")h(b=>{let F={...b,showTPMEstimate:!b.showTPMEstimate};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="theme"){let b=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",F=ao.indexOf(b);de(F>=0?F:0),fe(t.theme||"Dark"),Be(!0)}},te=je(t.theme);if(j){let se=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",b=15,F=le;ee<F?F=ee:ee>=F+b&&(F=ee-b+1),F=Math.max(0,Math.min(F,Math.max(0,ne.length-b))),F!==le&&oe(F);let ye=ne.slice(F,F+b);return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:te.border,padding:1,width:"100%",minHeight:32},C.createElement(Oe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:te.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),ne.length>0&&C.createElement(G,{color:"gray"},ee+1,"/",ne.length)),C.createElement(Oe,{borderStyle:"single",borderColor:ge==="search"?te.primary||"cyan":"gray",paddingX:1,marginBottom:1},C.createElement(G,{color:ge==="search"?te.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),C.createElement(G,{color:te.text},Se),ge==="search"&&C.createElement(G,{color:te.primary||"cyan"},"\u2588"),!Se&&ge!=="search"&&C.createElement(G,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),C.createElement(Oe,{flexDirection:"column",flexGrow:1,height:b},ye.length>0?ye.map((He,it)=>{let ot=F+it;if(He.isHeader)return C.createElement(Oe,{key:`hdr-${ot}`,paddingX:1},C.createElement(G,{color:"gray",bold:!0,underline:!0},He.label));let _e=ee===ot&&ge==="list",jt=se===He.value;return C.createElement(Oe,{key:`item-${He.value}-${ot}`,paddingX:1,backgroundColor:_e?te.highlightBg:void 0},C.createElement(G,{color:_e?te.text:te.textDim,bold:_e},_e?"\u276F ":" ",He.label,jt?C.createElement(G,{color:te.primary||"cyan",italic:!0}," (active)"):""))}):C.createElement(Oe,{paddingX:1},C.createElement(G,{color:"gray",italic:!0},'No models matching "',Se,'"'))),C.createElement(Oe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),C.createElement(G,{color:ge==="search"?te.primary||"cyan":"gray",bold:!0},"[",ge.toUpperCase()," MODE]")))}if(ve){let se=ao[De],b=je(se);return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:b.border,padding:1,width:"100%",minHeight:32},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.text,bold:!0},"Choose your color scheme:")),C.createElement(Oe,{flexDirection:"row",width:"100%",flexGrow:1},C.createElement(Oe,{flexDirection:"column",width:"30%",paddingRight:1},ao.map((F,ye)=>{let He=De===ye,it=(t.theme||"Dark")===F,ot=F==="Forest Sprite";return C.createElement(Oe,{key:F,paddingX:0},C.createElement(G,{color:He?b.text:b.textDim,bold:He},He?"> ":" ",F,ot&&C.createElement(G,{color:He?b.success||"#52b788":"green",bold:!0}," \u2605"),it?C.createElement(G,{color:b.primary||"cyan",italic:!0}," (saved)"):""))})),C.createElement(Oe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:b.borderMuted,paddingX:2,paddingY:1,backgroundColor:b.cardBg},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.secondary||"cyan",bold:!0},"> ","you: "),C.createElement(G,{color:b.text},"add a greeting function")),C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.success||"green"}," Here's the change:")),C.createElement(Oe,{flexDirection:"column",marginLeft:2,marginBottom:1},C.createElement(G,null,C.createElement(G,{color:b.textDim},"3 "),C.createElement(G,{color:b.textDim},' import "fmt"')),C.createElement(G,{color:b.textDim},"4"),C.createElement(Oe,{backgroundColor:b.diffRemovalBg},C.createElement(G,null,C.createElement(G,{color:b.diffRemovalNum||b.diffRemovalText},"5 "),C.createElement(G,{color:b.diffRemovalPrefix||b.diffRemovalText},"- "),C.createElement(G,{color:b.diffRemovalText},"func "),C.createElement(G,{color:b.diffRemovalHighlightColor||b.diffRemovalText,backgroundColor:b.diffRemovalHighlightBg,bold:!0},"main()"),C.createElement(G,{color:b.diffRemovalText}," {"))),C.createElement(Oe,{backgroundColor:b.diffAdditionBg},C.createElement(G,null,C.createElement(G,{color:b.diffAdditionNum||b.diffAdditionText},"5 "),C.createElement(G,{color:b.diffAdditionPrefix||b.diffAdditionText},"+ "),C.createElement(G,{color:b.diffAdditionText},"func "),C.createElement(G,{color:b.diffAdditionHighlightColor||b.diffAdditionText,backgroundColor:b.diffAdditionHighlightBg,bold:!0},"greet(name string)"),C.createElement(G,{color:b.diffAdditionText}," {"))),C.createElement(Oe,{backgroundColor:b.diffAdditionBg},C.createElement(G,null,C.createElement(G,{color:b.diffAdditionNum||b.diffAdditionText},"6 "),C.createElement(G,{color:b.diffAdditionPrefix||b.diffAdditionText},"+ "),C.createElement(G,{color:b.diffAdditionText}," "),C.createElement(G,{color:b.diffAdditionHighlightColor||b.diffAdditionText,backgroundColor:b.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),C.createElement(G,{color:b.textDim},"7 }")),C.createElement(Oe,{flexDirection:"column",marginTop:1,marginBottom:1},C.createElement(G,{color:b.textDim},"\u25BE Thought Process"),C.createElement(G,{color:b.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),C.createElement(Oe,{flexDirection:"column"},C.createElement(G,null,C.createElement(G,{color:b.warning||"yellow"},"\u2699 tool: "),C.createElement(G,{color:b.text},"write_file main.go")),C.createElement(G,null,C.createElement(G,{color:b.accent||"magenta"},"\u29BF task: "),C.createElement(G,{color:b.text},"Implementing greeting")),C.createElement(G,null,C.createElement(G,{color:b.danger||"red"},"X error: "),C.createElement(G,{color:b.text},"compilation failed")),C.createElement(G,null,C.createElement(G,{color:b.warning||"yellow"},"\u26A0 warning: "),C.createElement(G,{color:b.text},"deprecation warning")),C.createElement(G,null,C.createElement(G,{color:b.info||"blue"},"\u2192 link: "),C.createElement(G,{color:b.info||"blue",underline:!0},"file:///path/to/main.go")),C.createElement(G,null,C.createElement(G,{color:b.accent||"magenta"},"\u2605 accent: "),C.createElement(G,{color:b.text},"highlighted text")),C.createElement(G,{color:b.textDim},"\xB7 dim: press Enter to continue")))),C.createElement(Oe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),C.createElement(G,{color:"gray"},"Previewing: ",ao[De],ao[De]==="Forest Sprite"?" \u2605":"")))}return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:te.border,padding:0,width:"100%",minHeight:32},C.createElement(Oe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:te.borderMuted,width:"100%"},C.createElement(G,{color:te.text,bold:!0},"SYSTEM CONFIGURATION")),C.createElement(Oe,{flexDirection:"row",width:"100%",minHeight:26},C.createElement(Oe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:L==="categories"?te.border:te.borderMuted,padding:1,paddingY:0},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:L==="categories"?te.text:te.textDim,bold:!0,underline:!0},"CATEGORIES")),co.map((se,b)=>{let F=O===b,ye=se.id==="exit";return C.createElement(Oe,{key:se.id,marginTop:ye?15:0,backgroundColor:F?L==="categories"?te.highlightBg:te.cardBg:void 0,paddingX:1},C.createElement(G,{color:F&&L==="categories"?te.text:te.textDim,bold:F},F?"\u276F ":" ",se.label))})),C.createElement(Oe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:L==="items"?te.border:te.borderMuted,paddingX:1,marginLeft:1,paddingY:0},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:L==="items"?te.text:te.textDim,bold:!0,underline:!0},co[O].label.toUpperCase().includes("EXIT")?"Runtime Information":`${co[O].label} Settings`)),Ht.length>0?(()=>{let se=null,b=[],F=We=>(We||"").split(",").map(bt=>bt.trim().toLowerCase()).filter(Boolean),ye=F(t.autoApproveCommands),He=F(t.autoDisallowCommands),it=F(t.alwaysAskCommands),ot=[...ye,...He,...it],_e=new Set(ot),jt=zo==="security"&&ot.length!==_e.size;return Ht.forEach((We,bt)=>{let Kt=L==="items"&&R===bt,Dr=We.label.length,Jo=Math.max(2,38-Dr),Ir=".".repeat(Jo),lt=Le=>zo==="security"?(Le.value==="autoExec"||Le.value==="externalAccess")&&Le.status==="ON"?te.statusOn:te.statusOff:Le.status?.startsWith("\u2713")?te.statusOn:Le.status?.startsWith("\u26A0")?te.statusOff:Le.status==="ON"?te.statusOn:Le.status==="OFF"?te.statusOff:te.text;We.section&&We.section!==se&&(se=We.section,b.push(C.createElement(Oe,{key:`sec-hdr-${We.section}`,marginTop:b.length>0?1:0,marginBottom:0,paddingX:1},C.createElement(G,{color:"gray",bold:!0,underline:!0},We.section.toUpperCase()))));let W=Kt&&he&&(he==="alwaysAskCommands"&&We.value==="alwaysAsk"||he==="autoApproveCommands"&&We.value==="autoApprove"||he==="autoDisallowCommands"&&We.value==="autoDisallow"),Ze=We.value==="alwaysAsk"||We.value==="autoApprove"||We.value==="autoDisallow",Xo=We.value==="parserDownload";b.push(C.createElement(Oe,{key:We.value,flexDirection:"column"},C.createElement(Oe,{backgroundColor:Kt&&!W?te.highlightBg:void 0,paddingX:2},C.createElement(G,{color:Kt?te.text:te.textDim,bold:Kt},Kt?"\u276F ":" ",We.label),!Ze&&!Xo&&C.createElement(C.Fragment,null,C.createElement(G,{color:"gray"},Ir),C.createElement(G,{color:lt(We),bold:!0},We.value==="aiProvider"?We.status:`[ ${We.status} ]`))),Ze&&!W&&We.status!=="None"&&C.createElement(Oe,{paddingX:4,marginBottom:1},C.createElement(G,{color:"gray"},"\u21B3 ",We.status)),W&&C.createElement(Oe,{flexDirection:"column",marginLeft:4,marginBottom:1},C.createElement(Oe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},C.createElement(G,{color:"gray",bold:!0},"> "," "),C.createElement(sd,{value:q,onChange:ie,onSubmit:Le=>{let _t={...t,[he]:Le.trim(),sandboxPreset:"Custom"};h(_t),w({systemSettings:_t,apiTier:x,quotas:i}),Q(null)}})),C.createElement(G,{color:"gray",italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),jt&&b.push(C.createElement(Oe,{key:"conflict-warning",marginTop:1,paddingX:1},C.createElement(G,{color:te.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),b})():C.createElement(Oe,{paddingX:1,flexDirection:"column",width:"100%"},zo==="exit"?C.createElement(C.Fragment,null,C.createElement(Oe,{flexDirection:"column",marginBottom:1},C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"OS"," "),C.createElement(G,{color:"gray"},"..................... "),C.createElement(G,{color:te.text},process.env.OS||process.platform||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Computer Name"," "),C.createElement(G,{color:"gray"},".......... "),C.createElement(G,{color:te.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Processor Count"," "),C.createElement(G,{color:"gray"},"........ "),C.createElement(G,{color:te.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Node.js Version"," "),C.createElement(G,{color:"gray"},"........ "),C.createElement(G,{color:te.text},"v",process.versions.node)),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"V8 Version"," "),C.createElement(G,{color:"gray"},"...... ...... "),C.createElement(G,{color:te.text},"v",process.versions.v8)),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Data Directory"," "),C.createElement(G,{color:"gray"},"......... "),Ao===so?"":C.createElement(G,{color:te.text},Ao.replaceAll(el.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),C.createElement(G,{color:te.text},so.replaceAll(el.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Viewport"," "),C.createElement(G,{color:"gray"},"............... "),C.createElement(G,{color:te.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),C.createElement(Oe,{flexDirection:"row",marginBottom:0},C.createElement(G,{color:te.textDim},"Memory Load"," "),C.createElement(G,{color:"gray"},"............ "),C.createElement(G,{color:te.text},we,"/",P," ",dt))),C.createElement(Oe,{key:"pty-notice",paddingX:0,marginTop:0},C.createElement(G,{color:ls?te.statusOn:te.warning},ls?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):C.createElement(G,{color:"gray",italic:!0},co[O].desc)))),C.createElement(Oe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},L==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":Ht[R]?.value==="dynamicDirAwareness"?"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 ? HELP \u2022 \u25C4/ESC to go back":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),L==="categories"&&C.createElement(G,{color:"gray"},co[O].desc)))}import zt,{useState as ps,useEffect as ld}from"react";import{Box as gn,Text as Wn}from"ink";import ad from"ink-text-input";function ws({initialData:t,onSave:h,onCancel:x,theme:S="Dark"}){let p=je(S),[w,i]=ps(0),[E,m]=ps(""),[M,v]=ps(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),N=[{key:"name",label:"Enter your Name: ",maxLength:20},{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],I=N[w];ld(()=>{let O=N[w].key;m((M[O]||"").slice(0,N[w].maxLength))},[w,M]);let B=O=>{O.length>I.maxLength?m(O.slice(0,I.maxLength)):m(O)},L=O=>{if(O.trim().toLowerCase()==="/cancel"){x();return}let X=I.key,R={...M,[X]:O.trim().slice(0,I.maxLength)};v(R),m(""),w<N.length-1?i(w+1):h(R)},A=E.length>=I.maxLength;return zt.createElement(gn,{borderStyle:"round",borderColor:p.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},zt.createElement(gn,{paddingX:1,marginBottom:1},zt.createElement(Wn,{color:p.text,bold:!0},"USER PROFILE CONFIGURATION")),zt.createElement(gn,{paddingX:1,flexDirection:"column"},zt.createElement(gn,null,zt.createElement(Wn,{color:p.text,bold:!0},I.label),zt.createElement(ad,{value:E,onChange:B,onSubmit:L})),zt.createElement(gn,{marginTop:1,justifyContent:"space-between"},zt.createElement(Wn,{color:p.textMuted,italic:!0},"Step ",w+1," of ",N.length),zt.createElement(Wn,{color:A?p.warning||"yellow":p.textMuted},"[",E.length,"/",I.maxLength,"]"))),zt.createElement(gn,{paddingX:1,marginTop:1},zt.createElement(Wn,{color:p.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import wt,{useState as Ts}from"react";import{Box as Jt,Text as No,useInput as dd}from"ink";import cd from"ink-text-input";var ud=({question:t,options:h,onResolve:x,theme:S="Dark"})=>{let p=je(S),[w,i]=Ts(!1),[E,m]=Ts(""),[M,v]=Ts(0),N=!1,I=[],B=Array.isArray(h)&&h.length>0;try{I=[...B?h:[],B?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{N=!0}dd((A,O)=>{if(!w&&((O.leftArrow||O.upArrow)&&v(X=>Math.max(0,X-1)),(O.rightArrow||O.downArrow)&&v(X=>Math.min(I.length-1,X+1)),O.return)){let X=I[M];X?.id==="CUSTOM"?i(!0):x(N?"Selected Nothing":X.label)}});let L=qe(2);return w?wt.createElement(Jt,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:p.codeBg,width:"100%"},wt.createElement(Jt,{paddingX:1},wt.createElement(No,{color:p.text,bold:!0},"SUGGEST SOMETHING")),wt.createElement(Jt,{marginTop:1,paddingX:1},wt.createElement(No,{italic:!0,color:p.textMuted},"Replying to: ",t)),wt.createElement(Jt,{marginTop:1,paddingX:1,flexDirection:"row"},wt.createElement(cd,{value:E,onChange:m,onSubmit:()=>x(E)})),wt.createElement(Jt,{marginTop:1,paddingX:1,marginBottom:1},wt.createElement(No,{color:p.textMuted,italic:!0},"(Press Enter to send)"))):wt.createElement(Jt,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:p.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},wt.createElement(Jt,{paddingX:1,marginBottom:1},wt.createElement(No,{color:"yellow",bold:!0},"AGENT REQUEST: ACTION REQUIRED")),wt.createElement(Jt,{paddingX:1,marginBottom:1},wt.createElement(No,{color:p.text},t)),wt.createElement(Jt,{flexDirection:"column",width:"100%"},I.map((A,O)=>{let X=O===M;return wt.createElement(Jt,{key:A.id,flexDirection:"column",width:"100%",backgroundColor:X?p.highlightBg:void 0,paddingX:1,marginBottom:O===I.length-1?0:1},wt.createElement(No,{color:X?p.text:p.textMuted,bold:X},X?"\u276F ":" ",A.label),A.description&&wt.createElement(Jt,{marginLeft:4},wt.createElement(No,{color:p.textMuted,italic:!0},A.description)))})),wt.createElement(Jt,{paddingX:1,marginTop:1,marginBottom:1},wt.createElement(No,{color:p.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},ol=ud;import Pd from"gradient-string";import kt,{useState as bs,useEffect as md}from"react";import{Box as uo,Text as Fo,useInput as gd}from"ink";function ys({onSelect:t,onDelete:h,onClose:x,theme:S="Dark"}){let p=je(S),[w,i]=bs({}),[E,m]=bs([]),[M,v]=bs(0);md(()=>{(async()=>{let O=await Lo();i(O),m(Object.keys(O).sort((X,R)=>(O[R].updatedAt||0)-(O[X].updatedAt||0)))})()},[]),gd((A,O)=>{if(O.escape&&x(),O.upArrow&&v(X=>Math.max(0,X-1)),O.downArrow&&v(X=>Math.min(E.length-1,X+1)),O.return&&E[M]&&t(E[M]),A==="x"&&E[M]){let X=E[M];h(X).then(R=>{let ae=R||{};i(ae);let he=Object.keys(ae).sort((Q,q)=>(ae[q]?.updatedAt||0)-(ae[Q]?.updatedAt||0));m(he),v(Q=>Math.max(0,Math.min(he.length-1,Q)))})}});let N=qe(2),I=15,B=0;if(E.length>I){let A=Math.floor(I/2);B=M-A,B<0?B=0:B+I>E.length&&(B=E.length-I)}let L=E.slice(B,B+I);return kt.createElement(uo,{flexDirection:"column",borderStyle:"round",borderColor:p.borderMuted,padding:0,width:"100%"},kt.createElement(uo,{paddingX:1,marginBottom:1},kt.createElement(Fo,{color:p.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),E.length===0?kt.createElement(uo,{paddingX:2,paddingY:1},kt.createElement(Fo,{italic:!0,color:p.textMuted},"No saved chats found.")):kt.createElement(uo,{flexDirection:"column",width:"100%"},B>0&&kt.createElement(uo,{paddingX:2,marginBottom:1},kt.createElement(Fo,{color:p.textMuted},"\u25B2 (+",B," more chats above)")),L.map((A,O)=>{let X=w[A],ae=B+O===M,he=fd(X?.updatedAt);return kt.createElement(uo,{key:A,paddingX:1,backgroundColor:ae?p.highlightBg:void 0,width:"100%"},kt.createElement(uo,{flexGrow:1},kt.createElement(Fo,{color:ae?p.text:p.textMuted,bold:ae},ae?"\u276F ":" ",(()=>{let Q=q=>(q||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return X?.name&&!X.name.startsWith("Session")?Q(X.name):X?.prompt?Q(X.prompt):Q(X?.name)||A})(),kt.createElement(Fo,{color:p.textMuted}," [",he," \u2022 ",A,"]"))),ae&&kt.createElement(uo,{flexShrink:0},kt.createElement(Fo,{color:p.danger,bold:!0},"[X] DELETE ")))}),B+I<E.length&&kt.createElement(uo,{paddingX:2,marginTop:1},kt.createElement(Fo,{color:p.textMuted},"\u25BC (+",E.length-(B+I)," more chats below)"))),kt.createElement(uo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:p.borderMuted},kt.createElement(Fo,{color:p.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function fd(t){if(!t)return"N/A";let h=new Date(t);if(isNaN(h.getTime()))return"N/A";let x=E=>String(E).padStart(2,"0"),S=x(h.getMonth()+1),p=x(h.getDate()),w=x(h.getHours()),i=x(h.getMinutes());return`${S}-${p} ${w}:${i}`}import Tt,{useState as Ss,useEffect as hd}from"react";import{Box as mo,Text as to,useInput as xd,useStdout as pd}from"ink";function Cs({onClose:t,theme:h="Dark"}){let x=je(h),{stdout:S}=pd(),p=S?.columns||80,[w,i]=Ss([]),[E,m]=Ss(0),[M,v]=Ss(!0),N=()=>{let Q=hi(es,[]);i(Q);try{let ie=pi(On,{}).systemSettings?.memory!==!1;v(ie)}catch{v(!0)}};hd(()=>{N()},[]),xd((Q,q)=>{if(q.escape&&t(),q.upArrow&&m(ie=>Math.max(0,ie-1)),q.downArrow&&m(ie=>Math.min(w.length-1,ie+1)),Q==="x"&&w.length>0){let ie=w[E].id,ve=w.filter(Be=>Be.id!==ie);xi(es,ve),i(ve),E>=ve.length&&ve.length>0&&m(ve.length-1)}});let I=(Q,q,ie)=>{if(!Q)return"";let ve=Q.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),De=`${ie?"\u276F ":" "}${q+1}. `.length,de=ie?22:2;return ve.split(`
|
|
41
|
+
---`)&&ye.push({label:bt,value:bt,isHeader:!1,provider:ot})}))}return ye},[m,x,i,Je]),ne=C.useMemo(()=>{if(!Se.trim())return Ce;let se=Se.trim().toLowerCase(),b=[],F=null;for(let ye of Ce)ye.isHeader?F=ye:(ye.label.toLowerCase().includes(se)||ye.value&&ye.value.toLowerCase().includes(se))&&(F&&!b.includes(F)&&b.push(F),b.push(ye));return b},[Ce,Se]);br(()=>{if(j){let se=ne.findIndex(b=>!b.isHeader);H(se>=0?se:0),oe(0)}},[Se]),br(()=>{if(j){if(ne.length===0){H(0),oe(0);return}if(ee>=ne.length||ne[ee]?.isHeader){let se=ne.findIndex(b=>!b.isHeader);H(se>=0?se:0)}}},[ne,j]);let[we,$e]=Lt(0),[P,Dt]=Lt(0),[dt,Nt]=Lt("MB");br(()=>{let se=id.getHeapStatistics().heap_size_limit,b=se>=1024*1024*1024,F=b?"GB":"MB",ye=b?1024*1024*1024:1024*1024;Dt(parseFloat((se/ye).toFixed(2))),Nt(F);let He=()=>{let jt=process.memoryUsage().rss/ye,We=b?parseFloat(jt.toFixed(2)):Math.round(jt);$e(We)};He();let it=setInterval(()=>{He()},3e4);return()=>clearInterval(it)},[]);let Vt=se=>{switch(se){case"providers":{let F=[{label:"Current Provider",value:"aiProvider",status:m},...m.toLowerCase()==="google"||m.toLowerCase()==="openrouter"?[{label:"Show Paid Models?",value:"apiTier",status:x==="Free"?"No":"Yes"}]:[]];return m==="Ollama"&&F.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),F}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"}];case"memory":return[{label:"Toggle Memory",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:tl(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:xs(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:xs(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:xs(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"}];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"other":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:"Preserve Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"},{label:"Dynamic Directory Awareness",value:"dynamicDirAwareness",status:t.dynamicDirAwareness?"ON":"OFF"},{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Classic (deprecated)"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"}];default:return[]}},zo=co[O].id,Ht=Vt(zo);rd((se,b)=>{if(j){if(b.tab){ke(F=>F==="search"?"list":"search");return}if(ge==="search"){b.escape?xe(!1):b.downArrow||b.return?ke("list"):b.backspace||b.delete?pe(F=>F.slice(0,-1)):se&&!b.ctrl&&!b.meta&&se.length===1&&pe(F=>F+se);return}if(b.upArrow)H(F=>{if(ne.length===0)return 0;let ye=(F-1+ne.length)%ne.length,He=0;for(;ne[ye]?.isHeader&&He<ne.length;)ye=(ye-1+ne.length)%ne.length,He++;return ye});else if(b.downArrow)H(F=>{if(ne.length===0)return 0;let ye=(F+1)%ne.length,He=0;for(;ne[ye]?.isHeader&&He<ne.length;)ye=(ye+1)%ne.length,He++;return ye});else if(b.return){let F=ne[ee];F&&!F.isHeader&&(h(ye=>{let He=F.value==="Default",it={...ye,CustomSubAgent:!He,SubAgentModel:F.value,SubAgentProvider:He?"":F.provider||""};return w({systemSettings:it,apiTier:x,quotas:i}),it}),xe(!1))}else b.escape?xe(!1):se&&!b.ctrl&&!b.meta&&se.length===1&&(pe(F=>F+se),ke("search"));return}if(ve){if(b.upArrow){let F=(De-1+ao.length)%ao.length;de(F)}else if(b.downArrow){let F=(De+1)%ao.length;de(F)}else if(b.return){let F=ao[De];h(ye=>{let He={...ye,theme:F};return w({systemSettings:He,apiTier:x,quotas:i}),He}),v?v():Be(!1)}else b.escape&&(v?v():Be(!1));return}if(he){b.escape&&Q(null);return}if(L==="categories")b.upArrow?X(F=>(F-1+co.length)%co.length):b.downArrow?X(F=>(F+1)%co.length):b.return||b.rightArrow?co[O].id==="exit"?S("chat"):(A("items"),ae(0)):b.escape&&S("chat");else if(L==="items"){let F=Ht[R];if(se==="?"&&F?.value==="dynamicDirAwareness"){S("dynamicDirHelp");return}if(b.upArrow)ae(ye=>(ye-1+Ht.length)%Ht.length);else if(b.downArrow)ae(ye=>(ye+1)%Ht.length);else if(b.leftArrow||b.escape)A("categories");else if(b.return){let ye=Ht[R];Er(ye)}}});let Er=se=>{if(se.value==="memory")h(b=>({...b,memory:!b.memory}));else if(se.value==="sandboxPreset"){let b=tl(t),F=["Autonomous","Balanced","Strict"],He=(F.indexOf(b)+1)%F.length,it=F[He];h(ot=>{let _e={...ot,sandboxPreset:it};return it==="Strict"?(_e.autoExec=!1,_e.allowExternalAccess=!1,_e.networkAccess=!1,_e.autoApproveCommands="",_e.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",_e.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",_e.autoApproveGit=!1):it==="Balanced"?(_e.autoExec=!0,_e.allowExternalAccess=!1,_e.networkAccess=!0,_e.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",_e.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",_e.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",_e.autoApproveGit=!1):it==="Autonomous"&&(_e.autoExec=!0,_e.allowExternalAccess=!0,_e.networkAccess=!0,_e.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",_e.autoDisallowCommands="",_e.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",_e.autoApproveGit=!0),_e})}else if(se.value==="autoExec")t.autoExec?h(b=>({...b,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?S("doubleDanger"):S("autoExecDanger");else if(se.value==="externalAccess")t.allowExternalAccess?h(b=>({...b,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?S("doubleDanger"):S("externalDanger");else if(se.value==="networkAccess")h(b=>({...b,networkAccess:b.networkAccess===!1,sandboxPreset:"Custom"}));else if(se.value==="alwaysAsk")Q("alwaysAskCommands"),ie(t.alwaysAskCommands||"");else if(se.value==="autoApprove")Q("autoApproveCommands"),ie(t.autoApproveCommands||"");else if(se.value==="autoApproveGit")h(b=>({...b,autoApproveGit:!b.autoApproveGit,sandboxPreset:"Custom"}));else if(se.value==="autoDisallow")Q("autoDisallowCommands"),ie(t.autoDisallowCommands||"");else if(se.value==="ollamaEndpoint")h(b=>{let F=b.ollamaEndpoint==="Local"?"Cloud":"Local",ye={...b,ollamaEndpoint:F};return w({systemSettings:ye,apiTier:x,quotas:i}),ye});else if(se.value==="apiTier")S("apiTier");else if(se.value==="aiProvider")N&&N("settings"),S("selectProvider");else if(se.value==="advanceRollback")t.advanceRollback?h(b=>{let F={...b,advanceRollback:!1};return w({systemSettings:F,apiTier:x,quotas:i}),F}):S("advanceRollbackDanger");else if(se.value==="autoDelete"){let b=["1d","7d","30d"],ye=(b.indexOf(t.autoDeleteHistory||"30d")+1)%b.length;h(He=>({...He,autoDeleteHistory:b[ye]}))}else if(se.value==="autoUpdate")h(b=>({...b,autoUpdate:!b.autoUpdate}));else if(se.value==="externalData")if(!t.useExternalData)p({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 b={...t,useExternalData:!1};h(b),w({systemSettings:b,apiTier:x,quotas:i}),E(F=>[...F,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),S("chat")}else if(se.value==="updateManager")S("updateManager");else if(se.value==="parserDownload")S("parserDownload");else if(se.value==="indentationTree")h(b=>{let F={...b,indentationTree:b.indentationTree===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="compressToolResults")h(b=>{let F={...b,compressToolResults:!b.compressToolResults};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="autoTruncateResults")h(b=>{let F={...b,autoTruncateResults:!b.autoTruncateResults};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="subAgents")h(b=>{let F={...b,subAgents:b.subAgents===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="subAgentModel"){let b=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",F=ne.findIndex(ye=>ye.value===b);H(F>=0?F:0),xe(!0)}else if(se.value==="preserveThinking")h(b=>{let F={...b,preserveThinking:b.preserveThinking===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="dynamicDirAwareness")t.dynamicDirAwareness?h(b=>{let F={...b,dynamicDirAwareness:!1};return w({systemSettings:F,apiTier:x,quotas:i}),F}):S("dynamicDirDanger");else if(se.value==="loadingPhrases")h(b=>{let F={...b,loadingPhrases:b.loadingPhrases===!1};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="progressiveRendering")h(b=>{let F={...b,progressiveRendering:!b.progressiveRendering};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="showTPMEstimate")h(b=>{let F={...b,showTPMEstimate:!b.showTPMEstimate};return w({systemSettings:F,apiTier:x,quotas:i}),F});else if(se.value==="theme"){let b=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",F=ao.indexOf(b);de(F>=0?F:0),fe(t.theme||"Dark"),Be(!0)}},te=je(t.theme);if(j){let se=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",b=15,F=le;ee<F?F=ee:ee>=F+b&&(F=ee-b+1),F=Math.max(0,Math.min(F,Math.max(0,ne.length-b))),F!==le&&oe(F);let ye=ne.slice(F,F+b);return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:te.border,padding:1,width:"100%",minHeight:32},C.createElement(Oe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:te.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),ne.length>0&&C.createElement(G,{color:"gray"},ee+1,"/",ne.length)),C.createElement(Oe,{borderStyle:"single",borderColor:ge==="search"?te.primary||"cyan":"gray",paddingX:1,marginBottom:1},C.createElement(G,{color:ge==="search"?te.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),C.createElement(G,{color:te.text},Se),ge==="search"&&C.createElement(G,{color:te.primary||"cyan"},"\u2588"),!Se&&ge!=="search"&&C.createElement(G,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),C.createElement(Oe,{flexDirection:"column",flexGrow:1,height:b},ye.length>0?ye.map((He,it)=>{let ot=F+it;if(He.isHeader)return C.createElement(Oe,{key:`hdr-${ot}`,paddingX:1},C.createElement(G,{color:"gray",bold:!0,underline:!0},He.label));let _e=ee===ot&&ge==="list",jt=se===He.value;return C.createElement(Oe,{key:`item-${He.value}-${ot}`,paddingX:1,backgroundColor:_e?te.highlightBg:void 0},C.createElement(G,{color:_e?te.text:te.textDim,bold:_e},_e?"\u276F ":" ",He.label,jt?C.createElement(G,{color:te.primary||"cyan",italic:!0}," (active)"):""))}):C.createElement(Oe,{paddingX:1},C.createElement(G,{color:"gray",italic:!0},'No models matching "',Se,'"'))),C.createElement(Oe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),C.createElement(G,{color:ge==="search"?te.primary||"cyan":"gray",bold:!0},"[",ge.toUpperCase()," MODE]")))}if(ve){let se=ao[De],b=je(se);return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:b.border,padding:1,width:"100%",minHeight:32},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.text,bold:!0},"Choose your color scheme:")),C.createElement(Oe,{flexDirection:"row",width:"100%",flexGrow:1},C.createElement(Oe,{flexDirection:"column",width:"30%",paddingRight:1},ao.map((F,ye)=>{let He=De===ye,it=(t.theme||"Dark")===F,ot=F==="Forest Sprite";return C.createElement(Oe,{key:F,paddingX:0},C.createElement(G,{color:He?b.text:b.textDim,bold:He},He?"> ":" ",F,ot&&C.createElement(G,{color:He?b.success||"#52b788":"green",bold:!0}," \u2605"),it?C.createElement(G,{color:b.primary||"cyan",italic:!0}," (saved)"):""))})),C.createElement(Oe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:b.borderMuted,paddingX:2,paddingY:1,backgroundColor:b.cardBg},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.secondary||"cyan",bold:!0},"> ","you: "),C.createElement(G,{color:b.text},"add a greeting function")),C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:b.success||"green"}," Here's the change:")),C.createElement(Oe,{flexDirection:"column",marginLeft:2,marginBottom:1},C.createElement(G,null,C.createElement(G,{color:b.textDim},"3 "),C.createElement(G,{color:b.textDim},' import "fmt"')),C.createElement(G,{color:b.textDim},"4"),C.createElement(Oe,{backgroundColor:b.diffRemovalBg},C.createElement(G,null,C.createElement(G,{color:b.diffRemovalNum||b.diffRemovalText},"5 "),C.createElement(G,{color:b.diffRemovalPrefix||b.diffRemovalText},"- "),C.createElement(G,{color:b.diffRemovalText},"func "),C.createElement(G,{color:b.diffRemovalHighlightColor||b.diffRemovalText,backgroundColor:b.diffRemovalHighlightBg,bold:!0},"main()"),C.createElement(G,{color:b.diffRemovalText}," {"))),C.createElement(Oe,{backgroundColor:b.diffAdditionBg},C.createElement(G,null,C.createElement(G,{color:b.diffAdditionNum||b.diffAdditionText},"5 "),C.createElement(G,{color:b.diffAdditionPrefix||b.diffAdditionText},"+ "),C.createElement(G,{color:b.diffAdditionText},"func "),C.createElement(G,{color:b.diffAdditionHighlightColor||b.diffAdditionText,backgroundColor:b.diffAdditionHighlightBg,bold:!0},"greet(name string)"),C.createElement(G,{color:b.diffAdditionText}," {"))),C.createElement(Oe,{backgroundColor:b.diffAdditionBg},C.createElement(G,null,C.createElement(G,{color:b.diffAdditionNum||b.diffAdditionText},"6 "),C.createElement(G,{color:b.diffAdditionPrefix||b.diffAdditionText},"+ "),C.createElement(G,{color:b.diffAdditionText}," "),C.createElement(G,{color:b.diffAdditionHighlightColor||b.diffAdditionText,backgroundColor:b.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),C.createElement(G,{color:b.textDim},"7 }")),C.createElement(Oe,{flexDirection:"column",marginTop:1,marginBottom:1},C.createElement(G,{color:b.textDim},"\u25BE Thought Process"),C.createElement(G,{color:b.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),C.createElement(Oe,{flexDirection:"column"},C.createElement(G,null,C.createElement(G,{color:b.warning||"yellow"},"\u2699 tool: "),C.createElement(G,{color:b.text},"write_file main.go")),C.createElement(G,null,C.createElement(G,{color:b.accent||"magenta"},"\u29BF task: "),C.createElement(G,{color:b.text},"Implementing greeting")),C.createElement(G,null,C.createElement(G,{color:b.danger||"red"},"X error: "),C.createElement(G,{color:b.text},"compilation failed")),C.createElement(G,null,C.createElement(G,{color:b.warning||"yellow"},"\u26A0 warning: "),C.createElement(G,{color:b.text},"deprecation warning")),C.createElement(G,null,C.createElement(G,{color:b.info||"blue"},"\u2192 link: "),C.createElement(G,{color:b.info||"blue",underline:!0},"file:///path/to/main.go")),C.createElement(G,null,C.createElement(G,{color:b.accent||"magenta"},"\u2605 accent: "),C.createElement(G,{color:b.text},"highlighted text")),C.createElement(G,{color:b.textDim},"\xB7 dim: press Enter to continue")))),C.createElement(Oe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),C.createElement(G,{color:"gray"},"Previewing: ",ao[De],ao[De]==="Forest Sprite"?" \u2605":"")))}return C.createElement(Oe,{flexDirection:"column",borderStyle:"round",borderColor:te.border,padding:0,width:"100%",minHeight:32},C.createElement(Oe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:te.borderMuted,width:"100%"},C.createElement(G,{color:te.text,bold:!0},"SYSTEM CONFIGURATION")),C.createElement(Oe,{flexDirection:"row",width:"100%",minHeight:26},C.createElement(Oe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:L==="categories"?te.border:te.borderMuted,padding:1,paddingY:0},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:L==="categories"?te.text:te.textDim,bold:!0,underline:!0},"CATEGORIES")),co.map((se,b)=>{let F=O===b,ye=se.id==="exit";return C.createElement(Oe,{key:se.id,marginTop:ye?15:0,backgroundColor:F?L==="categories"?te.highlightBg:te.cardBg:void 0,paddingX:1},C.createElement(G,{color:F&&L==="categories"?te.text:te.textDim,bold:F},F?"\u276F ":" ",se.label))})),C.createElement(Oe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:L==="items"?te.border:te.borderMuted,paddingX:1,marginLeft:1,paddingY:0},C.createElement(Oe,{marginBottom:1},C.createElement(G,{color:L==="items"?te.text:te.textDim,bold:!0,underline:!0},co[O].label.toUpperCase().includes("EXIT")?"Runtime Information":`${co[O].label} Settings`)),Ht.length>0?(()=>{let se=null,b=[],F=We=>(We||"").split(",").map(bt=>bt.trim().toLowerCase()).filter(Boolean),ye=F(t.autoApproveCommands),He=F(t.autoDisallowCommands),it=F(t.alwaysAskCommands),ot=[...ye,...He,...it],_e=new Set(ot),jt=zo==="security"&&ot.length!==_e.size;return Ht.forEach((We,bt)=>{let Kt=L==="items"&&R===bt,Dr=We.label.length,Jo=Math.max(2,38-Dr),Ir=".".repeat(Jo),lt=Le=>zo==="security"?(Le.value==="autoExec"||Le.value==="externalAccess")&&Le.status==="ON"?te.statusOn:te.statusOff:Le.status?.startsWith("\u2713")?te.statusOn:Le.status?.startsWith("\u26A0")?te.statusOff:Le.status==="ON"?te.statusOn:Le.status==="OFF"?te.statusOff:te.text;We.section&&We.section!==se&&(se=We.section,b.push(C.createElement(Oe,{key:`sec-hdr-${We.section}`,marginTop:b.length>0?1:0,marginBottom:0,paddingX:1},C.createElement(G,{color:"gray",bold:!0,underline:!0},We.section.toUpperCase()))));let W=Kt&&he&&(he==="alwaysAskCommands"&&We.value==="alwaysAsk"||he==="autoApproveCommands"&&We.value==="autoApprove"||he==="autoDisallowCommands"&&We.value==="autoDisallow"),Ze=We.value==="alwaysAsk"||We.value==="autoApprove"||We.value==="autoDisallow",Xo=We.value==="parserDownload";b.push(C.createElement(Oe,{key:We.value,flexDirection:"column"},C.createElement(Oe,{backgroundColor:Kt&&!W?te.highlightBg:void 0,paddingX:2},C.createElement(G,{color:Kt?te.text:te.textDim,bold:Kt},Kt?"\u276F ":" ",We.label),!Ze&&!Xo&&C.createElement(C.Fragment,null,C.createElement(G,{color:"gray"},Ir),C.createElement(G,{color:lt(We),bold:!0},We.value==="aiProvider"?We.status:`[ ${We.status} ]`))),Ze&&!W&&We.status!=="None"&&C.createElement(Oe,{paddingX:4,marginBottom:1},C.createElement(G,{color:"gray"},"\u21B3 ",We.status)),W&&C.createElement(Oe,{flexDirection:"column",marginLeft:4,marginBottom:1},C.createElement(Oe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},C.createElement(G,{color:"gray",bold:!0},"> "," "),C.createElement(sd,{value:q,onChange:ie,onSubmit:Le=>{let _t={...t,[he]:Le.trim(),sandboxPreset:"Custom"};h(_t),w({systemSettings:_t,apiTier:x,quotas:i}),Q(null)}})),C.createElement(G,{color:"gray",italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),jt&&b.push(C.createElement(Oe,{key:"conflict-warning",marginTop:1,paddingX:1},C.createElement(G,{color:te.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),b})():C.createElement(Oe,{paddingX:1,flexDirection:"column",width:"100%"},zo==="exit"?C.createElement(C.Fragment,null,C.createElement(Oe,{flexDirection:"column",marginBottom:1},C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"OS"," "),C.createElement(G,{color:"gray"},"..................... "),C.createElement(G,{color:te.text},process.env.OS||process.platform||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Computer Name"," "),C.createElement(G,{color:"gray"},".......... "),C.createElement(G,{color:te.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Processor Count"," "),C.createElement(G,{color:"gray"},"........ "),C.createElement(G,{color:te.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Node.js Version"," "),C.createElement(G,{color:"gray"},"........ "),C.createElement(G,{color:te.text},"v",process.versions.node)),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"V8 Version"," "),C.createElement(G,{color:"gray"},"...... ...... "),C.createElement(G,{color:te.text},"v",process.versions.v8)),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Data Directory"," "),C.createElement(G,{color:"gray"},"......... "),Ao===so?"":C.createElement(G,{color:te.text},Ao.replaceAll(el.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),C.createElement(G,{color:te.text},so.replaceAll(el.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),C.createElement(Oe,{flexDirection:"row"},C.createElement(G,{color:te.textDim},"Viewport"," "),C.createElement(G,{color:"gray"},"............... "),C.createElement(G,{color:te.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),C.createElement(Oe,{flexDirection:"row",marginBottom:0},C.createElement(G,{color:te.textDim},"Memory Load"," "),C.createElement(G,{color:"gray"},"............ "),C.createElement(G,{color:te.text},we,"/",P," ",dt))),C.createElement(Oe,{key:"pty-notice",paddingX:0,marginTop:0},C.createElement(G,{color:ls?te.statusOn:te.warning},ls?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):C.createElement(G,{color:"gray",italic:!0},co[O].desc)))),C.createElement(Oe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},C.createElement(G,{color:"gray",italic:!0},L==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":Ht[R]?.value==="dynamicDirAwareness"?"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 ? HELP \u2022 \u25C4/ESC to go back":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),L==="categories"&&C.createElement(G,{color:"gray"},co[O].desc)))}import zt,{useState as ps,useEffect as ld}from"react";import{Box as gn,Text as Wn}from"ink";import ad from"ink-text-input";function ws({initialData:t,onSave:h,onCancel:x,theme:S="Dark"}){let p=je(S),[w,i]=ps(0),[E,m]=ps(""),[M,v]=ps(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),N=[{key:"name",label:"Enter your Name: ",maxLength:20},{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],I=N[w];ld(()=>{let O=N[w].key;m((M[O]||"").slice(0,N[w].maxLength))},[w,M]);let B=O=>{O.length>I.maxLength?m(O.slice(0,I.maxLength)):m(O)},L=O=>{if(O.trim().toLowerCase()==="/cancel"){x();return}let X=I.key,R={...M,[X]:O.trim().slice(0,I.maxLength)};v(R),m(""),w<N.length-1?i(w+1):h(R)},A=E.length>=I.maxLength;return zt.createElement(gn,{borderStyle:"round",borderColor:p.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},zt.createElement(gn,{paddingX:1,marginBottom:1},zt.createElement(Wn,{color:p.text,bold:!0},"USER PROFILE CONFIGURATION")),zt.createElement(gn,{paddingX:1,flexDirection:"column"},zt.createElement(gn,null,zt.createElement(Wn,{color:p.text,bold:!0},I.label),zt.createElement(ad,{value:E,onChange:B,onSubmit:L})),zt.createElement(gn,{marginTop:1,justifyContent:"space-between"},zt.createElement(Wn,{color:p.textMuted,italic:!0},"Step ",w+1," of ",N.length),zt.createElement(Wn,{color:A?p.warning||"yellow":p.textMuted},"[",E.length,"/",I.maxLength,"]"))),zt.createElement(gn,{paddingX:1,marginTop:1},zt.createElement(Wn,{color:p.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import wt,{useState as Ts}from"react";import{Box as Jt,Text as No,useInput as dd}from"ink";import cd from"ink-text-input";var ud=({question:t,options:h,onResolve:x,theme:S="Dark"})=>{let p=je(S),[w,i]=Ts(!1),[E,m]=Ts(""),[M,v]=Ts(0),N=!1,I=[],B=Array.isArray(h)&&h.length>0;try{I=[...B?h:[],B?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{N=!0}dd((A,O)=>{if(!w&&((O.leftArrow||O.upArrow)&&v(X=>Math.max(0,X-1)),(O.rightArrow||O.downArrow)&&v(X=>Math.min(I.length-1,X+1)),O.return)){let X=I[M];X?.id==="CUSTOM"?i(!0):x(N?"Selected Nothing":X.label)}});let L=qe(2);return w?wt.createElement(Jt,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:p.codeBg,width:"100%"},wt.createElement(Jt,{paddingX:1},wt.createElement(No,{color:p.text,bold:!0},"SUGGEST SOMETHING")),wt.createElement(Jt,{marginTop:1,paddingX:1},wt.createElement(No,{italic:!0,color:p.textMuted},"Replying to: ",t)),wt.createElement(Jt,{marginTop:1,paddingX:1,flexDirection:"row"},wt.createElement(cd,{value:E,onChange:m,onSubmit:()=>x(E)})),wt.createElement(Jt,{marginTop:1,paddingX:1,marginBottom:1},wt.createElement(No,{color:p.textMuted,italic:!0},"(Press Enter to send)"))):wt.createElement(Jt,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:p.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},wt.createElement(Jt,{paddingX:1,marginBottom:1},wt.createElement(No,{color:"yellow",bold:!0},"AGENT REQUEST: ACTION REQUIRED")),wt.createElement(Jt,{paddingX:1,marginBottom:1},wt.createElement(No,{color:p.text},t)),wt.createElement(Jt,{flexDirection:"column",width:"100%"},I.map((A,O)=>{let X=O===M;return wt.createElement(Jt,{key:A.id,flexDirection:"column",width:"100%",backgroundColor:X?p.highlightBg:void 0,paddingX:1,marginBottom:O===I.length-1?0:1},wt.createElement(No,{color:X?p.text:p.textMuted,bold:X},X?"\u276F ":" ",A.label),A.description&&wt.createElement(Jt,{marginLeft:4},wt.createElement(No,{color:p.textMuted,italic:!0},A.description)))})),wt.createElement(Jt,{paddingX:1,marginTop:1,marginBottom:1},wt.createElement(No,{color:p.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},ol=ud;import Pd from"gradient-string";import kt,{useState as bs,useEffect as md}from"react";import{Box as uo,Text as Fo,useInput as gd}from"ink";function ys({onSelect:t,onDelete:h,onClose:x,theme:S="Dark"}){let p=je(S),[w,i]=bs({}),[E,m]=bs([]),[M,v]=bs(0);md(()=>{(async()=>{let O=await Lo();i(O),m(Object.keys(O).sort((X,R)=>(O[R].updatedAt||0)-(O[X].updatedAt||0)))})()},[]),gd((A,O)=>{if(O.escape&&x(),O.upArrow&&v(X=>Math.max(0,X-1)),O.downArrow&&v(X=>Math.min(E.length-1,X+1)),O.return&&E[M]&&t(E[M]),A==="x"&&E[M]){let X=E[M];h(X).then(R=>{let ae=R||{};i(ae);let he=Object.keys(ae).sort((Q,q)=>(ae[q]?.updatedAt||0)-(ae[Q]?.updatedAt||0));m(he),v(Q=>Math.max(0,Math.min(he.length-1,Q)))})}});let N=qe(2),I=15,B=0;if(E.length>I){let A=Math.floor(I/2);B=M-A,B<0?B=0:B+I>E.length&&(B=E.length-I)}let L=E.slice(B,B+I);return kt.createElement(uo,{flexDirection:"column",borderStyle:"round",borderColor:p.borderMuted,padding:0,width:"100%"},kt.createElement(uo,{paddingX:1,marginBottom:1},kt.createElement(Fo,{color:p.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),E.length===0?kt.createElement(uo,{paddingX:2,paddingY:1},kt.createElement(Fo,{italic:!0,color:p.textMuted},"No saved chats found.")):kt.createElement(uo,{flexDirection:"column",width:"100%"},B>0&&kt.createElement(uo,{paddingX:2,marginBottom:1},kt.createElement(Fo,{color:p.textMuted},"\u25B2 (+",B," more chats above)")),L.map((A,O)=>{let X=w[A],ae=B+O===M,he=fd(X?.updatedAt);return kt.createElement(uo,{key:A,paddingX:1,backgroundColor:ae?p.highlightBg:void 0,width:"100%"},kt.createElement(uo,{flexGrow:1},kt.createElement(Fo,{color:ae?p.text:p.textMuted,bold:ae},ae?"\u276F ":" ",(()=>{let Q=q=>(q||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return X?.name&&!X.name.startsWith("Session")?Q(X.name):X?.prompt?Q(X.prompt):Q(X?.name)||A})(),kt.createElement(Fo,{color:p.textMuted}," [",he," \u2022 ",A,"]"))),ae&&kt.createElement(uo,{flexShrink:0},kt.createElement(Fo,{color:p.danger,bold:!0},"[X] DELETE ")))}),B+I<E.length&&kt.createElement(uo,{paddingX:2,marginTop:1},kt.createElement(Fo,{color:p.textMuted},"\u25BC (+",E.length-(B+I)," more chats below)"))),kt.createElement(uo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:p.borderMuted},kt.createElement(Fo,{color:p.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function fd(t){if(!t)return"N/A";let h=new Date(t);if(isNaN(h.getTime()))return"N/A";let x=E=>String(E).padStart(2,"0"),S=x(h.getMonth()+1),p=x(h.getDate()),w=x(h.getHours()),i=x(h.getMinutes());return`${S}-${p} ${w}:${i}`}import Tt,{useState as Ss,useEffect as hd}from"react";import{Box as mo,Text as to,useInput as xd,useStdout as pd}from"ink";function Cs({onClose:t,theme:h="Dark"}){let x=je(h),{stdout:S}=pd(),p=S?.columns||80,[w,i]=Ss([]),[E,m]=Ss(0),[M,v]=Ss(!0),N=()=>{let Q=hi(es,[]);i(Q);try{let ie=pi(On,{}).systemSettings?.memory!==!1;v(ie)}catch{v(!0)}};hd(()=>{N()},[]),xd((Q,q)=>{if(q.escape&&t(),q.upArrow&&m(ie=>Math.max(0,ie-1)),q.downArrow&&m(ie=>Math.min(w.length-1,ie+1)),Q==="x"&&w.length>0){let ie=w[E].id,ve=w.filter(Be=>Be.id!==ie);xi(es,ve),i(ve),E>=ve.length&&ve.length>0&&m(ve.length-1)}});let I=(Q,q,ie)=>{if(!Q)return"";let ve=Q.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),De=`${ie?"\u276F ":" "}${q+1}. `.length,de=ie?22:2;return ve.split(`
|
|
42
42
|
`).map((fe,j)=>{let xe=j===0,ee=Math.max(10,p-4-(xe?De:3)-de),H=Math.max(10,p-4-3-de),le=fe.split(/(\s+)/),oe=[],Se="";if(le.forEach(ge=>{if(ge.length===0)return;let ke=oe.length===0?ee:H;Se.length+ge.length>ke?Se.trim().length>0?(oe.push(Se.trimEnd()),Se=ge):(oe.push(ge.substring(0,ke)),Se=ge.substring(ke)):Se+=ge}),Se.trimEnd().length>0&&oe.push(Se.trimEnd()),oe.length===0)return"";let pe=oe.join(`
|
|
43
43
|
`);return xe?pe:" "+pe}).join(`
|
|
44
44
|
`)},B=4*1024*2,L=w.reduce((Q,q)=>Q+(q.memory?.length||0),0),A=Math.min(100,Math.round(L/B*100)),O=12,X=Math.round(A/100*O),R="\u2588".repeat(X)+"\u2591".repeat(Math.max(0,O-X)),ae=()=>A<50?x.textMuted:A<90?x.warning:x.danger,he=qe(2);return Tt.createElement(mo,{flexDirection:"column",borderStyle:"round",borderColor:x.borderMuted,padding:0,width:"100%"},Tt.createElement(mo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},Tt.createElement(to,{color:x.text,bold:!0},"SAVED MEMORIES"),Tt.createElement(mo,null,Tt.createElement(to,{color:x.textMuted},"Vault: "),Tt.createElement(to,{color:ae()},R),Tt.createElement(to,{color:x.text,bold:!0}," ",A,"%"))),!M&&w.length>0?Tt.createElement(mo,{paddingX:2,paddingY:1},Tt.createElement(to,{italic:!0,color:x.textMuted},"Memory is currently Off...")):w.length===0?Tt.createElement(mo,{paddingX:2,paddingY:1},Tt.createElement(to,{italic:!0,color:x.textMuted},M?"Learning...":"Memory not available...")):Tt.createElement(mo,{flexDirection:"column"},w.map((Q,q)=>{let ie=q===E;return Tt.createElement(mo,{key:Q.id,paddingX:1,backgroundColor:ie?x.highlightBg:void 0,width:"100%"},Tt.createElement(mo,{flexGrow:1},Tt.createElement(to,{color:ie?x.text:x.textMuted,bold:ie},ie?"\u276F ":" ",q+1,". ",I(Q.memory,q,ie))),ie&&Tt.createElement(mo,{flexShrink:0},Tt.createElement(to,{color:x.textMuted,dimColor:!0}," [",Tt.createElement(to,{italic:!0},Q.score),"] "),Tt.createElement(to,{color:x.danger,bold:!0},"[X] WIPE ")))})),Tt.createElement(mo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:x.borderMuted},Tt.createElement(to,{color:x.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import at,{useState as Sr,useEffect as nl}from"react";import{Box as Uo,Text as Pt}from"ink";import{spawn as rl}from"child_process";var Cr=null;try{let t=await import("node-pty");Cr=t.default||t,Cr=!1}catch{}var sl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],wd=({latest:t,current:h,settings:x,onClose:S,onUpdateSettings:p,onSuccess:w})=>{let[i,E]=Sr("initializing"),[m,M]=Sr(""),[v,N]=Sr(null),[I,B]=Sr(0);if(nl(()=>{let L=setInterval(()=>{B(A=>(A+1)%1e3)},33);return()=>clearInterval(L)},[]),nl(()=>{let L;return(async()=>{let O=x.updateManager||"npm";if(!x.updateManager){p();return}let X="";O==="pnpm"?X=`pnpm add -g fluxflow-cli@${t}`:O==="bun"?X=`bun add -g fluxflow-cli@${t}`:O==="yarn"?X=`yarn global add fluxflow-cli@${t}`:O==="custom"?X=x.customUpdateCommand:X=`npm install -g fluxflow-cli@${t}`,E("downloading"),M(`Running: ${X}...`);let R=process.platform==="win32",ae=Q=>new Promise(q=>{let ie=R?Q?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",ve=R?Q?["-NoProfile","-Command",X]:["/c",X]:["-c",X],Be=de=>{let fe=de.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();fe&&M(j=>{let xe=j.split(`
|
|
@@ -53,20 +53,20 @@ import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J
|
|
|
53
53
|
\u2022 Type \`/update latest\` to apply the update.
|
|
54
54
|
\u2022 Type \`/changelog\` to view the release notes.`,isUpdateNotification:!0,isMeta:!0}),D})}else o&&U(d=>{Y(d.length+1);let T=y&&y===f?`${oo}`:oo;return[...d,{id:"uptodate-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Already up to date (${T}).
|
|
55
55
|
\u2800`,isMeta:!0}]})}catch(g){o&&U(u=>(Y(u.length+1),[...u,{id:"check-err-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to check for updates: ${g.message}.
|
|
56
|
-
\u2800`,isMeta:!0}]))}};Qe(()=>{let o=()=>{i.write("\x1B[2J\x1B[3J\x1B[H"),R({columns:i.columns,rows:i.rows})};return i.on("resize",o),()=>{i.off("resize",o)}},[i]);let[we
|
|
56
|
+
\u2800`,isMeta:!0}]))}};Qe(()=>{let o=()=>{i.write("\x1B[2J\x1B[3J\x1B[H"),R({columns:i.columns,rows:i.rows})};return i.on("resize",o),()=>{i.off("resize",o)}},[i]);let[we,$e]=K("Medium"),[P,Dt]=K("Google"),[dt,Nt]=K(0),[Vt,zo]=K(null),[Ht,Er]=K(!1),[te,se]=K(io("Google","Free")||"gemma-4-31b-it"),[b,F]=K(!1),[ye,He]=K(yi("gemma_janitor_fallback_google")||"gemma-4-26b-a4b-it"),[it,ot]=K(!0),[_e,jt]=K(!0),We=Ye(0),[bt,Kt]=K(null),[Dr,Jo]=K(""),Ir=async o=>{let n=pl(o);if(n)try{await st.ensureDir(Mt.dirname(n));let a=[];if(st.existsSync(n)){let g=st.readFileSync(n,"utf8").trim();if(g)try{a=wl(g)}catch{a=[]}}Array.isArray(a)||(a=[]),a.push({key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:"\x1B[13;2u"},when:"terminalFocus"}),st.writeFileSync(n,JSON.stringify(a,null,4),"utf8"),Br="Shift + Enter",U(g=>(Y(g.length+1),[...g,{id:"kb-success-"+Date.now(),role:"system",text:`\u2726 Successfully configured Shift+Enter in your ${o} keybindings!
|
|
57
57
|
`,isMeta:!0}]))}catch(a){U(g=>(Y(g.length+1),[...g,{id:"kb-error-"+Date.now(),role:"system",text:`\u2726 Failed to update keybindings: ${a.message}.
|
|
58
58
|
\u2800`,isMeta:!0}]))}},[lt,W]=K("chat"),[Ze,Xo]=K("Free"),[Le,_t]=K({limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}}),[So,qt]=K(null),[Co,Sl]=K("chat"),[Zo,Ar]=K("settings"),[Ro,Cl]=K([]),[Vd,Ml]=K(0),[Ls,jn]=K(0),[kr,Os]=K({}),[Lr,Or]=K({}),[Kn,ho]=K(0),[ce,It]=K({memory:!0,theme:"Dark",compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:""}),l=hn(()=>je(ce.theme),[ce.theme]),[pn,Ps]=K({name:null,nickname:null,instructions:null}),[Mo,qn]=K({keyType:"Default",quality:"Low-High",apiKey:""}),[no,$o]=K({tokens:0}),[Ns,Pr]=K(0),Fs=Ye(0),Nr=Ye({totalWords:0,startTime:0,wps:0,chunks:[]}),[Us,_s]=K(0),[Xs,vl]=K(0),[Qt,$s]=K(0),[Bl,wn]=K(0),Tn=Ye(0),[El,bn]=K(0),yn=Ye(0),[ro,Hs]=K(0),[en,Gs]=K(0),[jd,Dl]=K(0),[Kd,Il]=K(0),[qd,Al]=K(0),[Qn,kl]=K(0),[zn,Ll]=K(0),[Jn,Ol]=K(0),[Ws,Pl]=K(0),[Sn,Fr]=K(null),[Zn,Ur]=K(null),[_r,Ys]=K(null),[tn,Cn]=K("daily"),[Nl,Zt]=K(0),[Mn,vn]=K(""),Bn="flow-playground",[nt,Rn]=K(t.includes("--playground")?Bn:as());Qe(()=>{if(Yo.current)return;let o=Qt-Tn.current,n=ro-yn.current;wn(o),bn(n),nt&&Ni(nt,o,no.tokens,n).catch(()=>{})},[Qt,ro,nt,no.tokens]),Qe(()=>{lt==="apiTier"&&(async()=>{let n=await ar();Fr(n);let a=await dr();Ur(a);let g=await ns(Le.resetDay||1);Ys(g)})()},[lt,Le.resetDay]);let[Rt,Vs]=K(null),[on,nn]=K(""),[En,js]=K(!1),[Xr,Fl]=K([]),[Qd,zd]=K(0),Ks=Ye(!0),qs=Ye(!0),$r=Ye(P),Hr=Ye(!1),Gr=Ye(!0);Qe(()=>{b&&(F(!1),U(o=>(Y(o.length+1),[...o,{id:Date.now(),role:"system",text:`\u2726 Wildcard Tooling:
|
|
59
59
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
|
|
60
60
|
\u2800`,isMeta:!0}]))),process.env.forcedReasoning&&(U(o=>(Y(o.length+1),[...o,{id:Date.now(),role:"system",text:`\u2726 Forced Reasoning:
|
|
61
61
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: Disabled.
|
|
62
|
-
\u2800`,isMeta:!0}])),process.env.forcedReasoning=!1)},[te]);let Qs;Qe(()=>{if(qs.current){Qs=setTimeout(()=>{qs.current=!1,$r.current=P},1e3);return}if($r.current!==P)if($r.current=P,P==="Mistral")
|
|
62
|
+
\u2800`,isMeta:!0}])),process.env.forcedReasoning=!1)},[te]);let Qs;Qe(()=>{if(qs.current){Qs=setTimeout(()=>{qs.current=!1,$r.current=P},1e3);return}if($r.current!==P)if($r.current=P,P==="Mistral")$e("Fast");else{if(P==="SenseNova"||P==="Poolside"){$e("High");return}$e(P==="DeepSeek"||P==="NVIDIA"||P==="CrofAI"||P==="InferX"||P==="Ollama"||P==="CroAI"||P==="OpenRouter"?"Standard":"Medium")}else P==="Google"&&we==="xHigh"&&te&&te.toLowerCase().startsWith("gemini-3")&&$e("High");return()=>{clearTimeout(Qs)}},[P,te]);let zs;Qe(()=>{if(!bt)return;if(Ks.current){zs=setTimeout(()=>{Ks.current=!1},1500);return}let o=io(P,Ze),n=o;return o.includes("gemma")?n="Gemma":o.includes("deepseek")?n="DeepSeek Flash":o.includes("devstral")?n="Devstral":o.includes("mistral")?n="Mistral":o.includes("gemini")&&(n="Gemini Flash"),se(o),At({apiTier:Ze,activeModel:o}),()=>{clearTimeout(zs)}},[Ze,P,bt]);let Ul=hn(()=>{let o=Qo();return{isIDE:!["Terminal","Windows Terminal"].includes(o)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS,get shortcut(){return Br}}},[]),er=Ye(null),Wr=Ye("");Qe(()=>{er.current=Rt},[Rt]),Qe(()=>{Wr.current=on},[on]);let[_l,Xl]=K(!1),[vo,rn]=K(null),[Ho,Yr]=K(null),tr=o=>{rn(null),W("chat")},Js=o=>{let n=Math.floor(o/3600),a=Math.floor(o%3600/60),g=o%60,u=[];return n>0&&u.push(`${n}h`),(a>0||n>0)&&u.push(`${a}m`),u.push(`${g}s`),u.join(" ")},Go=o=>o<1e3?`${o}ms`:Js(Math.floor(o/1e3)),[Dn,Vr]=K(null),[jr,Zs]=K(""),[$l,Hl]=K(!1),[Rs,In]=K(0),An;Qe(()=>{let o;if(Dn&&ce.loadingPhrases!==!1){let n=()=>{let a=Bs[Math.floor(Math.random()*Bs.length)];Zs(a)};jr||n(),o=setInterval(n,1e4)}else Zs("");return()=>{clearInterval(o)}},[Dn,ce]);let[Jd,Gl]=K(!0),[sn,Kr]=K(!1),[or,ei]=K(!1),[Wl,Yl]=K(!1),[ti,Zd]=K(null),[oi,kn]=K(0),[Vl,ni]=K([]),Wo=Ye(null),Yo=Ye(!1);Qe(()=>()=>{Wo.current&&clearTimeout(Wo.current)},[]);let qr=Ye(!1),[Ln,Qr]=K(null),[jl,zr]=K(null),[Rd,Kl]=K(null);Qe(()=>kn(0),[E]);let[ft,ql]=K(()=>{let o={id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0},n=process.cwd()===ks.homedir(),a=(()=>{let u=process.cwd().toLowerCase();if(process.platform==="win32"){let y=process.env.SystemRoot?.toLowerCase()||"c:\\windows",f=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",d=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return u.startsWith(y)||u.startsWith(f)||u.startsWith(d)}else return u==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(f=>u.startsWith(f))})(),g=[o];return a?g.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}):n&&g.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${ks.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please open FluxFlow in project folder.`,isHomeWarning:!0}),g}),U=o=>{ql(n=>{let a=typeof o=="function"?o(n):o;if(a.length>1){let g=a[a.length-1],u=a[a.length-2];if(g?.text?.includes("Request Cancelled")&&u?.text?.includes("Request Cancelled"))return a.slice(0,-1)}return a})},xo=Ye(null),[ri,Ql]=K(""),[si,ii]=K(!1),li=Ye(""),ai=Ye(null);Qe(()=>{if(ft.length===0)return;let o=ft[ft.length-1];if(o&&(o.role==="agent"||o.role==="assistant")){let a=(o.text||"").match(/\[ANSWER\]([\s\S]*?)(?:\[\/ANSWER\]|$)/i);if(a){let g=a[1].trim();g&&g!==li.current&&(Ql(g),li.current=g,ai.current!==o.id&&ii(!0))}}},[ft]);let[Bo,Y]=K(ft.length),[Vo,Jr]=K(0),ec=Ye([]),Gt=Ye({completedIndex:0,columns:0,historicalBlocks:[],seenSelections:new Set,chatId:"",clearKey:0,theme:""}),di=hn(()=>{let o=X.columns||80,n=/Selection: (.*)/,a=[],g=new Set,u=Gt.current.columns!==o,y=Bo<Gt.current.completedIndex,f=Gt.current.chatId!==nt,d=Gt.current.clearKey!==Vo,T=Gt.current.theme!==ce.theme;if(u||y||f||d||T){let z=ft.slice(0,Bo);for(let Me=0;Me<z.length;Me++){let Pe=z[Me];if(Pe.isAskRecord&&Pe.text){let re=Pe.text.match(n);if(re&&re[1].trim()){let rt=re[1].trim();if(g.has(rt))continue;g.add(rt)}}let Z=Pn(Pe,o);for(let re=0;re<Z.completed.length;re++)a.push(Z.completed[re]);for(let re=0;re<Z.active.length;re++)a.push(Z.active[re])}Gt.current={completedIndex:Bo,columns:o,historicalBlocks:a,seenSelections:new Set(g),chatId:nt,clearKey:Vo,theme:ce.theme}}else if(a=Gt.current.historicalBlocks,g=Gt.current.seenSelections,Bo>Gt.current.completedIndex){a=[...a],g=new Set(g);let z=ft.slice(Gt.current.completedIndex,Bo);for(let Me=0;Me<z.length;Me++){let Pe=z[Me];if(Pe.isAskRecord&&Pe.text){let re=Pe.text.match(n);if(re&&re[1].trim()){let rt=re[1].trim();if(g.has(rt))continue;g.add(rt)}}let Z=Pn(Pe,o);for(let re=0;re<Z.completed.length;re++)a.push(Z.completed[re]);for(let re=0;re<Z.active.length;re++)a.push(Z.active[re])}Gt.current={completedIndex:Bo,columns:o,historicalBlocks:a,seenSelections:g,chatId:nt,clearKey:Vo}}let D=ft.slice(Bo),$=[],V=[];for(let z=0;z<D.length;z++){let Me=D[z];if(Me.isAskRecord&&Me.text){let Z=Me.text.match(n);if(Z&&Z[1].trim()){let re=Z[1].trim();if(g.has(re))continue}}let Pe=Pn(Me,o);for(let Z=0;Z<Pe.completed.length;Z++)$.push(Pe.completed[Z]);for(let Z=0;Z<Pe.active.length;Z++)V.push(Pe.active[Z])}if(j.current){let z=Pn(j.current,o);for(let Me=0;Me<z.completed.length;Me++)$.push(z.completed[Me]);for(let Me=0;Me<z.active.length;Me++)V.push(z.active[Me])}let ue=$.length===0?a:a.concat($);return ue.length>=75e3&&(ue=[...ue],ue.push({key:`memory-warning-block-${ue.length}`,msg:{role:"system",text:"\u26A0\uFE0F MEMORY WARNING: CHAT IS GETTING VERY LONG",subText:`This session has reached ${ue.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:ue,active:V}},[ft,Bo,X.columns,Vo,nt,ee]),zl=hn(()=>{if(!Rt||!on)return!1;let o=on.trim();return o.endsWith("?")||o.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(o)||/\([yYnN]\)\s*$/.test(o)},[Rt,on]);Id((o,n)=>{if(!(o==="\x1B[I"||o==="\x1B[O"||o==="[I"||o==="[O")){if(n.ctrl&&(o.toLowerCase()==="r"||o===""||o==="")){Zi();return}if(lt==="stats"){if(tn==="dailyModelBreakdown"||tn==="modelBreakdown"){if(n.tab&&!n.shift){Cn(g=>g==="dailyModelBreakdown"?"modelBreakdown":"dailyModelBreakdown"),Zt(0);return}if(n.space||o===" "){Cn(g=>g==="dailyModelBreakdown"?"daily":"monthly"),Zt(0),vn("");return}if(n.escape){if(Mn){vn(""),Zt(0);return}W("chat");return}if(n.upArrow){Zt(g=>Math.max(0,g-1));return}if(n.downArrow){Zt(g=>Math.min(Ue.current,g+1));return}if(n.backspace||n.delete){vn(g=>g.slice(0,-1)),Zt(0);return}if(o&&o!==" "&&!n.space&&!n.ctrl&&!n.meta&&o.length===1&&o.charCodeAt(0)>=32){vn(g=>g+o),Zt(0);return}return}if(n.tab&&!n.shift){Cn(g=>g==="daily"?"monthly":"daily"),Zt(0);return}if(n.space||o===" "){Cn(g=>g==="daily"?"dailyModelBreakdown":"modelBreakdown"),Zt(0),vn("");return}if(n.upArrow){Zt(g=>Math.max(0,g-1));return}if(n.downArrow){Zt(g=>Math.min(Ue.current,g+1));return}}if(ie){let a=Qo(),g=bl(a);if(n.upArrow)De(u=>u>0?u-1:g.length-1);else if(n.downArrow)De(u=>u<g.length-1?u+1:0);else if(n.return){let u=g[Be];if(u.action==="dismiss")ve(!1);else if(u.url){let y=process.platform==="win32"?`start ${u.url}`:process.platform==="darwin"?`open ${u.url}`:`xdg-open ${u.url}`;fo(y),ve(!1)}}return}if(n.tab&&Rt){js(a=>!a);return}if(En&&Rt){if(n.return)if(dn)Wt("\r");else{let a=process.platform==="win32";Wt(a?`\r
|
|
63
63
|
`:`
|
|
64
64
|
`),nn(g=>g+`
|
|
65
65
|
`)}else if(n.backspace||n.delete)dn?Wt("\x7F"):(Wt("\b \b"),nn(a=>a.slice(0,-1)));else if(n.upArrow)Wt(n.shift?"\x1B[1;2A":"\x1B[A");else if(n.downArrow)Wt(n.shift?"\x1B[1;2B":"\x1B[B");else if(n.rightArrow)Wt(n.shift?"\x1B[1;2C":"\x1B[C");else if(n.leftArrow)Wt(n.shift?"\x1B[1;2D":"\x1B[D");else if(n.escape)Wt("\x1B");else if(n.ctrl&&o){let a=o.toLowerCase().charCodeAt(0);a>=97&&a<=122?Wt(String.fromCharCode(a-96)):Wt(o)}else o&&(Wt(o),dn||nn(a=>a+o));return}if(lt==="providerBudgetSelect"){let a=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside"];if(n.upArrow){jn(g=>(g-1+a.length)%a.length);return}else if(n.downArrow){jn(g=>(g+1)%a.length);return}else if(o===" "){let g=a[Ls];Os(u=>({...u,[g]:!u[g]}));return}else if(n.return){let g=a.filter(y=>kr[y]);if(g.length===0)return;let u={...Le,providerBudgets:{...Le.providerBudgets||{},__useProvider:!0}};_t(u),Cl(g),Ml(0),jn(0),W("providerBudgetFlow");return}else if(n.escape){W("budgetTypeSelect");return}return}if(lt==="providerBudgetFlow"){let a=Ro.length,g=a*2+1;if(n.upArrow){ho(u=>u===g-1?Math.max(0,(a-1)*2):u>=2?u-2:u);return}else if(n.downArrow){ho(u=>u===g-1?u:u+2<g-1?u+2:g-1);return}else if(n.leftArrow){ho(u=>u===g-1?u:u%2===1?u-1:u);return}else if(n.rightArrow||n.tab){ho(u=>u===g-1?u:u%2===0||u+1<g?u+1:u);return}else if(n.return){if(Kn===g-1){let u=Le.providerBudgets||{},y={__useProvider:!0};for(let T of Ro){let D=Lr[T]||{};y[T]={agentLimit:9999999999,tokenLimit:parseInt(D.tokenLimit,10)||0,monthlyTokenLimit:parseInt(D.monthlyTokenLimit,10)||0}}let f={...Le,providerBudgets:y};_t(f),At({apiTier:Ze,quotas:f}),W(Co==="settings"?"resetMode":"budgetResetMode")}else ho(u=>Math.min(g-1,u+1));return}else if(n.escape){W("providerBudgetSelect");return}return}if(n.escape){if(si){if(ii(!1),ft.length>0){let a=ft[ft.length-1];a&&(ai.current=a.id)}return}if(Ge.length>0&<==="chat"){q(!0);return}if(x){S(!1);return}if(sn||Rt||vo||Ho)qr.current=!0,Hi(),ki(),vo&&(vo.resolve("deny"),rn(null)),Ho&&(Ho.resolve(null),Yr(null)),Yl(!1),ti&&clearTimeout(ti);else if(lt==="revert")W("chat"),kn(0);else if(lt!=="chat"&<!=="settings")W("chat");else{if(!bt&&dt===1){Nt(0),Jo("");return}kn(a=>{let g=a+1;return g===1?(Wo.current&&clearTimeout(Wo.current),Wo.current=setTimeout(()=>kn(0),2e3)):g===2&&(Wo.current&&clearTimeout(Wo.current),kn(0),E.length>0?m(""):Fn.getChatHistory(nt).then(u=>{u.length>0?(ni(u.reverse()),W("revert")):U(y=>(Y(y.length+1),[...y,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
|
|
66
|
-
\u2800`,isMeta:!0}]))})),g})}}if(Ge.length>0&<==="chat"){if(n.upArrow){he(a=>{let g=a>0?a-1:Ge.length-1,u=0;for(;g!==a&&u<Ge.length;){let y=Ge[g],f=y?.cmd||y||"";if(typeof f=="string"&&f.trimStart().startsWith("---"))g=g>0?g-1:Ge.length-1,u++;else break}return g});return}if(n.downArrow){he(a=>{let g=a<Ge.length-1?a+1:0,u=0;for(;g!==a&&u<Ge.length;){let y=Ge[g],f=y?.cmd||y||"";if(typeof f=="string"&&f.trimStart().startsWith("---"))g=g<Ge.length-1?g+1:0,u++;else break}return g});return}if(n.return)return}if(n.tab&<==="chat"){if(Ge.length>0){let a=Ge[ae]||Ge[0],g=E.split(" ");if(g.length===1)m(a.cmd+" ");else{let u=g.slice(0,-1);m(u.join(" ")+" "+a.cmd+" ")}he(0),v(u=>u+1);return}else if(E.trim()===""){let a=Date.now();if(a-xe.current<500)return;xe.current=a;let g=["Flux","Flow","ICU","FluxCU"],u=(g.indexOf(B)+1)%g.length,y=g[u>=0?u:0];L(y),y==="Flow"
|
|
66
|
+
\u2800`,isMeta:!0}]))})),g})}}if(Ge.length>0&<==="chat"){if(n.upArrow){he(a=>{let g=a>0?a-1:Ge.length-1,u=0;for(;g!==a&&u<Ge.length;){let y=Ge[g],f=y?.cmd||y||"";if(typeof f=="string"&&f.trimStart().startsWith("---"))g=g>0?g-1:Ge.length-1,u++;else break}return g});return}if(n.downArrow){he(a=>{let g=a<Ge.length-1?a+1:0,u=0;for(;g!==a&&u<Ge.length;){let y=Ge[g],f=y?.cmd||y||"";if(typeof f=="string"&&f.trimStart().startsWith("---"))g=g<Ge.length-1?g+1:0,u++;else break}return g});return}if(n.return)return}if(n.tab&<==="chat"){if(Ge.length>0){let a=Ge[ae]||Ge[0],g=E.split(" ");if(g.length===1)m(a.cmd+" ");else{let u=g.slice(0,-1);m(u.join(" ")+" "+a.cmd+" ")}he(0),v(u=>u+1);return}else if(E.trim()===""){let a=Date.now();if(a-xe.current<500)return;xe.current=a;let g=["Flux","Flow","ICU","FluxCU"],u=(g.indexOf(B)+1)%g.length,y=g[u>=0?u:0];L(y),y==="Flow"?$e("Fast"):(y==="Flux"||y==="ICU"||y==="FluxCU")&&$e("High"),U(f=>[...f,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Ds(y)}
|
|
67
67
|
\u2800`,isMeta:!0}]);return}}if(n.ctrl&&o==="c"&<!=="exit"){if(E.length>0){m("");return}if(n.shift){W("exit"),S(!1);return}x?(W("exit"),S(!1)):S(!0)}n.return&&(n.shift||n.ctrl||n.meta||n.leftAlt||n.rightAlt)&&m(a=>a.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
|
|
68
68
|
`)}}),Qe(()=>{process.stdout.write("\x1B[?1004h");let o=n=>{let a=n.toString();a.includes("\x1B[I")?(jt(!0),We.current=Date.now()):a.includes("\x1B[O")&&(jt(!1),We.current=Date.now())};return process.stdin.on("data",o),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",o)}},[]);let nr=Ye(ce.theme);Qe(()=>{nr.current&&nr.current!==ce.theme?(nr.current=ce.theme,i&&(i.write("\x1B[2J\x1B[3J\x1B[H"),i.isTTY&&i.write("\x1B[?2004h")),Jr(o=>o+1),po()):nr.current=ce.theme},[ce.theme,i]),Qe(()=>{async function o(){try{let D=JSON.parse(st.readFileSync(Mt.join(process.cwd(),"package.json"),"utf8"));ds(oo||D.version||"2.0.0")}catch{ds("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),cl()||(U(D=>(Y(D.length+1),[...D,{id:"setup-"+Date.now(),role:"system",text:"\u2726 Installing Required dependencies... (One-time setup)",isMeta:!0}])),await ul(),U(D=>(Y(D.length+1),[...D,{id:"setup-done-"+Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m All dependencies installed successfully.
|
|
69
|
-
\u2800`,isMeta:!0}]))),await wi();let n=await os();Hr.current=n.systemSettings?.allowExternalAccess??!1,Gr.current=n.systemSettings?.memory??!0,Ce.mode?L(Ce.mode):L(n.mode),O(n.display??0),Ce.thinking
|
|
69
|
+
\u2800`,isMeta:!0}]))),await wi();let n=await os();Hr.current=n.systemSettings?.allowExternalAccess??!1,Gr.current=n.systemSettings?.memory??!0,Ce.mode?L(Ce.mode):L(n.mode),O(n.display??0),Ce.thinking?$e(Ce.thinking):$e(n.thinkingLevel);let a=Ce.provider||n.aiProvider||"Google";Dt(a);let u=(n.quotas?.providerTiers||{})[a]||n.apiTier||"Free";if(fe.current=n.activeModel,Ce.model)se(Ce.model);else if(Ce.provider){let D=io(a,u);se(D)}else se(n.activeModel);Er(n.showFullThinking),Xo(u),_t(n.quotas||{limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{}});let y={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...n.systemSettings||{}};Ce.memory==="on"?y.memory=!0:Ce.memory==="off"&&(y.memory=!1),a==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&(y.memory=!1,U(D=>[...D,{role:"system",text:`\u2726 MEMORY
|
|
70
70
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Currently not available.
|
|
71
71
|
\u2800`,isMeta:!0}])),Ce.package&&(y.updateManager=Ce.package),Ce.autoDel&&(y.autoDeleteHistory=Ce.autoDel),Ce.autoExec==="on"?y.autoExec=!0:Ce.autoExec==="off"&&(y.autoExec=!1),Ce.externalAccess==="on"?y.allowExternalAccess=!0:Ce.externalAccess==="off"&&(y.allowExternalAccess=!1),Ce.playground&&(y.allowExternalAccess=!1,y.memory=!1),It(y),Ps(n.profileData),qn(n.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""});let f=Ce.key;if(f||(f=await an(a)),f&&(Kt(f),Un(f,{aiProvider:a,onIDEApproval:tr})),n.systemSettings?.autoDeleteHistory&&Oi(n.systemSettings.autoDeleteHistory),Pi(lr),Ce.playground||(mr(Bn).catch(()=>{}),st.remove(Mt.join(so,"playground")).catch(()=>{})),ne(!1,y),await Promise.all([Ci(),Fn.recoverCrashedTransaction()]),Ce.resume){let D=await Lo(),$=Ce.resume;if(D[$]){Yo.current=!0,Rn($);let V=await gr($);Tn.current=Qt-V.total,yn.current=ro-(V.cached||0),Yo.current=!1,wn(V.total),bn(V.cached||0),$o({tokens:V.context});let ue=[...D[$].messages];ue[0]?.text?.includes("\u2591\u2591\u2591\u2588\u2588\u2588")||ue.unshift({id:"logo-"+Date.now(),role:"system",isLogo:!0,isMeta:!0}),U(ue),W("chat"),U(Me=>{let Pe=[...Me,{id:"sys-"+Date.now(),role:"system",text:`\u2726 SESSION RESUMED
|
|
72
72
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '${$}'.
|
|
@@ -109,7 +109,7 @@ import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J
|
|
|
109
109
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Restored Working Directory to ${Ce.originalCwd}
|
|
110
110
|
\u2800`,isMeta:!0}];return Y(d.length),d})}catch{}setTimeout(()=>{st.emptyDir(Mt.join(so,"playground")).catch(f=>{U(d=>{let T=[...d,{id:"playground-"+Date.now(),role:"system",text:`\u2726 PLAYGROUND
|
|
111
111
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to clear session: ${so+"/playground"}`,isMeta:!0}];return Y(T.length),T})})},500),It(f=>({...f,allowExternalAccess:Hr.current,memory:Gr.current}))}Rn(as()),$o({tokens:0}),I(!1),wn(0),bn(0),Tn.current=Qt,yn.current=ro,setTimeout(()=>{global.gc&&(async()=>{for(let d=0;d<3;d++)global.gc(),await new Promise(T=>setImmediate(T));h.current=Date.now()})()},500);break}case"/revert":{Fn.getChatHistory(nt).then(f=>{if(f.length>0)ni(f.reverse()),W("revert");else{let d=qe(2);U(T=>(Y(T.length+1),[...T,{id:"revert-empty-"+Date.now(),role:"system",text:`\u2726 Nothing to revert to.
|
|
112
|
-
\u2800`,isMeta:!0}]))}}),setTimeout(()=>{global.gc&&(async()=>{for(let d=0;d<3;d++)global.gc(),await new Promise(T=>setImmediate(T));h.current=Date.now()})()},500);break}case"/mode":{if(u[1]){let f=u[1].toLowerCase(),d="Flux";f==="flow"?d="Flow":f==="icu"?d="ICU":f==="fluxcu"?d="FluxCU":f==="flux"&&(d="Flux"),L(d),d==="Flow"
|
|
112
|
+
\u2800`,isMeta:!0}]))}}),setTimeout(()=>{global.gc&&(async()=>{for(let d=0;d<3;d++)global.gc(),await new Promise(T=>setImmediate(T));h.current=Date.now()})()},500);break}case"/mode":{if(u[1]){let f=u[1].toLowerCase(),d="Flux";f==="flow"?d="Flow":f==="icu"?d="ICU":f==="fluxcu"?d="FluxCU":f==="flux"&&(d="Flux"),L(d),d==="Flow"&&$e("Fast");let T=qe(2);U(D=>(Y(D.length+1),[...D,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Ds(d)}.
|
|
113
113
|
\u2800`,isMeta:!0}]))}else W("mode");break}case"/display":{if(u[1]){let f=u[1].toLowerCase(),d=0;f==="secondary"||f==="1"||f==="2"?d=1:d=0,O(d),At({display:d}).catch(()=>{});let T=d===0?"Primary (Display 1)":"Secondary (Display 2)";U(D=>(Y(D.length+1),[...D,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${T}.
|
|
114
114
|
\u2800`,isMeta:!0}]))}else W("display");break}case"/image_deprecated":{if(u[1]?.toLowerCase()==="stats"){let f=qe(2);if(Mo.keyType==="Custom")U(d=>(Y(d.length+1),[...d,{id:Date.now(),role:"system",text:"[SYSTEM] Key strategy is Custom. Redirecting to Pollinations dashboard (https://enter.pollinations.ai/#pollen)...",isMeta:!0}])),fo("start https://enter.pollinations.ai/#pollen");else try{let d=await vi();U(T=>(Y(T.length+1),[...T,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((d.limit*1e3).toFixed(0))} credits
|
|
115
115
|
\u2022 Spent (Last 1hr): ${Number((d.totalSpent*1e3).toFixed(0))} credits
|
|
@@ -118,7 +118,7 @@ import{A as Oi,B as Pi,C as Ni,D as gr,E as Fi,F as Ui,G as _i,H as Xi,I as ds,J
|
|
|
118
118
|
`+(d.nextResetMin>0?`\u2022 Refreshes in: ${d.nextResetMin}m`:""),isMeta:!0}]))}catch{U(T=>(Y(T.length+1),[...T,{id:Date.now(),role:"system",text:"[SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(u[1]?.toLowerCase()==="setup")if(u[2]?.toLowerCase()==="key")if(u[3]){let f=["default","custom"].find(d=>d===u[3].toLowerCase());if(f){let d=f==="default"?"Default":"Custom";qn(D=>({...D,keyType:d}));let T=qe(2);U(D=>(Y(D.length+1),[...D,{id:Date.now(),role:"system",text:`[SYSTEM] Image key strategy set to ${d}`,isMeta:!0}])),d==="Custom"&&(qt({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:Mo.apiKey||"",returnView:"chat"}),W("input"))}else{let d=qe(2);U(T=>(Y(T.length+1),[...T,{id:Date.now(),role:"system",text:"[SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let f=qe(2);U(d=>(Y(d.length+1),[...d,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(u[2]?.toLowerCase()==="quality")if(u[3]){let f=["low","low-high","medium","medium-high","high","ultra","premium"].find(d=>d===u[3].toLowerCase());if(f){let T={low:"Low","low-high":"Low-High",medium:"Medium","medium-high":"Medium-High",high:"High",ultra:"Ultra",premium:"Premium"}[f];qn($=>({...$,quality:T}));let D=qe(2);U($=>(Y($.length+1),[...$,{id:Date.now(),role:"system",text:`[SYSTEM] Image quality set to ${T}`,isMeta:!0}]))}else{let d=qe(2);U(T=>(Y(T.length+1),[...T,{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 f=qe(2);U(d=>(Y(d.length+1),[...d,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup Quality <Low|Low-High|Medium|Medium-High|High|Ultra>",isMeta:!0}]))}else{let f=qe(2);U(d=>(Y(d.length+1),[...d,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let f=qe(2);U(d=>(Y(d.length+1),[...d,{id:Date.now(),role:"system",text:"[SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let f;if(u[1]){let d=u[1].toLowerCase(),T=u.includes("--bypass"),D=u.includes("--force");f=d.charAt(0).toUpperCase()+d.slice(1),d==="xhigh"&&(f="xHigh");let $="";if(D&&(process.env.NVIDIA_BASE_URL,$=`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Enabled Forced Reasoning.
|
|
119
119
|
\u2800`,process.env.forcedReasoning="true"),!T&&B==="Flow"&&f==="xHigh")U(V=>(Y(V.length+1),[...V,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
|
|
120
120
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m"${f}" is restricted in Flow mode. Switch to Flux to enable Higher Thinking Levels.
|
|
121
|
-
\u2800${$}.`,isMeta:!0}]));else{
|
|
121
|
+
\u2800${$}.`,isMeta:!0}]));else{$e(f);let V=qe(1);U(ue=>(Y(ue.length+1),[...ue,{id:Date.now(),role:"system",text:`\u2726 ${P}
|
|
122
122
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${te}.
|
|
123
123
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Thinking Level: ${f}.
|
|
124
124
|
${$} \u2800`,isMeta:!0}]))}}else W("thinking");break}case"/model":{if(u[1]){let f=u.slice(1),d=!1,T=!1,D=[];for(let V of f)V==="--multimodal"||V==="-m"?P==="Ollama"?d=!0:T=!0:D.push(V);let $=D.join(" ");if(P==="Ollama"&&Ti(d),T&&U(V=>(Y(V.length+1),[...V,{id:Date.now(),role:"system",text:`\u2726 ERROR
|
|
@@ -163,7 +163,7 @@ ${T||"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No saved chats found."}
|
|
|
163
163
|
\u2800`,isMeta:!0}]));break}(async()=>{ei(!0);let D=qe(2);U($=>(Y($.length+1),[...$,{id:Date.now(),role:"system",text:"\u2726 Compacting session history...",isMeta:!0}]));try{if(await Wi({chatId:nt,aiProvider:P,apiKey:bt,thinkingLevel:we,mode:B,janitorModel:ye,systemSettings:ce,sessionStats:no},ft)){let ue=qe(2);U(z=>{let Me=[...z,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Chat History compacted saving tokens.
|
|
164
164
|
\u2800`,isMeta:!0}];return Y(Me.length),Me})}else U(ue=>(Y(ue.length+1),[...ue,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Compaction failed.
|
|
165
165
|
\u2800`,isMeta:!0}]))}catch($){U(V=>(Y(V.length+1),[...V,{id:Date.now(),role:"system",text:`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Error during compaction: ${$.message}
|
|
166
|
-
\u2800`,isMeta:!0}]))}finally{ei(!1)}})();break}case"/truncate":{m("");let f=0;U(d=>{let D=[...d.map($=>{let V=$.fullText||$.text||"";return!V.startsWith("[TOOL RESULT]:")||V.startsWith("[TOOL RESULT]: ERROR")||V.startsWith("[TOOL RESULT]: DENIED")||V.includes("...
|
|
166
|
+
\u2800`,isMeta:!0}]))}finally{ei(!1)}})();break}case"/truncate":{m("");let f=0;U(d=>{let D=[...d.map($=>{let V=$.fullText||$.text||"";return!V.startsWith("[TOOL RESULT]:")||V.startsWith("[TOOL RESULT]: ERROR")||V.startsWith("[TOOL RESULT]: DENIED")||V.startsWith("[TOOL RESULT]: SUCCESS: Goal")||V.includes("...Results Truncated by System on User Command")?$:(f++,V.startsWith("[TOOL RESULT]: SUCCESS")?{...$,fullText:"[TOOL RESULT]: SUCCESS: ...Results Truncated by System on User Command"}:{...$,fullText:"[TOOL RESULT]: ...Results Truncated by System on User Command"})}),{id:Date.now(),role:"system",text:`\u2726 Tool Truncation...
|
|
167
167
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Truncated ${f} tool result(s).
|
|
168
168
|
\u2800`,isMeta:!0}];return cn(nt,null,D),Y(D.length),D});break}case"/help":{U(f=>(Y(f.length+1),[...f,{id:Date.now(),role:"system",isHelpRecord:!0,isMeta:!0}]));break}case"/btw":{U(f=>(Y(f.length+1),[...f,{id:Date.now(),role:"system",text:`\u2726 RESTRICTED
|
|
169
169
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m '/btw' only available when agent is working
|
|
@@ -176,19 +176,19 @@ ${u}`};U(d=>(Y(d.length+1),[...d,y])),(async()=>{let d=!1,T=()=>{d||(d=!0,U(ue=>
|
|
|
176
176
|
\x1B[33m\u24D8 Request Cancelled\x1B[0m`,isMeta:!1}];return Y(Pe.length),Pe}))},D=!1;Kr(!0),Pr(Date.now()),I(!1);let $=Date.now(),V=!0;try{let ue=[...ft,y].filter(_=>_.role!=="think"&&!_.isVisualFeedback&&!_.isMeta&&!_.isTerminalRecord&&!(_.text&&_.text.includes("[TERMINAL_RECORD]"))&&!String(_.id).startsWith("welcome")),z=[],Me=ue.map((_,be)=>{let Ee=_.fullText||_.text||"";if(_.role==="user"&&be<ue.length-1)if(Ee.includes("**CONTEXT SUMMARY OF PREVIOUS TURNS")){let Ie=Ee.indexOf("**CONTEXT SUMMARY OF PREVIOUS TURNS");if(Ie!==-1){let ct=Ee.substring(0,Ie).lastIndexOf("[SYSTEM METADATA]");ct!==-1?Ee=Ee.substring(ct).trim():Ee=Ee.substring(Ie).trim()}}else{let Ie=Ee.lastIndexOf("[USER]"),Ke=Ee.lastIndexOf("[USER PROMPT]");Ie!==-1?Ee=Ee.substring(Ie+6).trim():Ke!==-1&&(Ee=Ee.substring(Ke).trim())}return{..._,text:Ee}}),Pe=0;for(;Pe<Me.length;){let _=Me[Pe];if(_.role==="user")z.push(_),Pe++;else{let be=[];for(;Pe<Me.length&&Me[Pe].role!=="user";)be.push(Me[Pe]),Pe++;let Ee=[],Ie=[],Ke=null,ct=!1,Ft=()=>{Ee.length>0&&(z.push({role:"agent",text:Ee.join(`
|
|
177
177
|
`).trim()}),Ee=[]),Ie.length>0&&(z.push({role:"system",text:Ie.join(`
|
|
178
178
|
|
|
179
|
-
`),...Ke?{binaryPart:Ke}:{}}),Ie=[],Ke=null),ct=!1};be.forEach(yt=>{let me=yt.role==="system"&&(yt.text?.startsWith("[TOOL RESULT]")||yt.text?.startsWith("SUCCESS:")||yt.text?.startsWith("ERROR:")||yt.fullText?.startsWith("[TOOL RESULT]")||yt.fullText?.startsWith("SUCCESS:")||yt.fullText?.startsWith("ERROR:")),Te=yt.fullText||yt.text||"",Ae=Te.trim();if(!(!Ae&&!yt.binaryPart)){if(me){let
|
|
180
|
-
`),xt=Ae.toLowerCase().includes("tool:functions.")||Ae.toLowerCase().includes("agent:generalist.");Ee.push(Ae),xt
|
|
179
|
+
`),...Ke?{binaryPart:Ke}:{}}),Ie=[],Ke=null),ct=!1};be.forEach(yt=>{let me=yt.role==="system"&&(yt.text?.startsWith("[TOOL RESULT]")||yt.text?.startsWith("SUCCESS:")||yt.text?.startsWith("ERROR:")||yt.fullText?.startsWith("[TOOL RESULT]")||yt.fullText?.startsWith("SUCCESS:")||yt.fullText?.startsWith("ERROR:")),Te=yt.fullText||yt.text||"",Ae=Te.trim();if(!(!Ae&&!yt.binaryPart)){if(me){let Xe=Ae.startsWith("[TOOL RESULT]")?Ae:`[TOOL RESULT]: ${Ae}`;Ie.push(Xe),yt.binaryPart&&(Ke=yt.binaryPart)}else if(yt.role==="agent"){!ct&&Ie.length>0&&Ft();let Xe=Te.endsWith(`
|
|
180
|
+
`),xt=Ae.toLowerCase().includes("tool:functions.")||Ae.toLowerCase().includes("agent:generalist.");Ee.push(Ae),xt&&Xe?ct=!0:ct=!1}}}),Ft()}}let Z=Vi(te,z,{profile:pn,thinkingLevel:we,mode:B,systemSettings:ce,janitorModel:ye,sessionStats:no,chatId:nt,isPlayground:!!Ce.playground,aiProvider:P,apiKey:bt,apiTier:Ze,wildcardTooling:b,cols:X.columns-6,rows:30,onTokenChunk:(_,be)=>{let Ee=Date.now();if(Pr(Ee),typeof be=="number"){Fs.current=be;let Ie=Nr.current;Ie.startTime||(Ie.startTime=Ee,Ie.totalWords=0,Ie.chunks=[]),Ie.totalWords+=be,Ie.chunks||(Ie.chunks=[]),Ie.chunks.push({time:Ee,words:be});let ct=Ee-400;if(Ie.chunks=Ie.chunks.filter(Ft=>Ft.time>=ct),Ie.chunks.length>0){let Ft=Ie.chunks.reduce((Te,Ae)=>Te+Ae.words,0),yt=Ie.chunks[0].time,me=Math.max(.4,(Ee-yt)/1e3);Ie.wps=Math.round(Ft/me*10)/10}}},onVisualFeedback:_=>{U(be=>[...be.map(Ie=>Ie.isStreaming?{...Ie,isStreaming:!1}:Ie),{id:"visual-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:_,isVisualFeedback:!0}])},onSubagentUpdate:()=>{Fl($i.map(_=>({..._})))},onExecStart:_=>{pe(),ge(),Vs(_),nn("")},onExecChunk:_=>{nn(be=>be+_)},onExecEnd:()=>{U(_=>{if(!er.current)return _;let be=Wr.current||"",Ee=Ai(be),Ie=`[TERMINAL_RECORD]
|
|
181
181
|
COMMAND: ${er.current}
|
|
182
182
|
PTY: ${dn}
|
|
183
183
|
OUTPUT: ${Ee.replace(/\n{3,}/g,`
|
|
184
184
|
|
|
185
185
|
`)}`,ct=[..._.map(Ft=>Ft.isStreaming?{...Ft,isStreaming:!1}:Ft),{id:"term-"+Date.now(),role:"system",text:Ie,isTerminalRecord:!0}];return Y(ct.length),ct}),Vs(null),js(!1),nn(""),er.current=null,Wr.current=""},onToolResult:(_,be)=>{if(_==="success"){if(Dl(Ee=>Ee+1),be==="generate_image"){Ol(Ke=>Ke+1);let Ie={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[Mo.quality]||.002;Pl(Ke=>Ke+Ie)}}else _==="denied"?Al(Ee=>Ee+1):Il(Ee=>Ee+1)},onToolApproval:async(_,be)=>{let Ee=_l||ce.autoExec;if(_==="exec_command"){let{command:Ie}=Nn(be||"{}");return Ee||Ie&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(Ie.trim())?"allow":new Promise(ct=>{rn({tool:_,args:be,resolve:ct}),W("terminalApproval")})}return Ee?"allow":new Promise(Ie=>{rn({tool:_,args:be,resolve:Ie}),W("approval")})},onAskUser:async(_,be)=>(pe(),ge(),new Promise(Ee=>{let Ie=!1;Yr({question:_,options:be,resolve:Ke=>{Ie||(Ie=!0,U(ct=>{if(ct.some(me=>me.isAskRecord&&me.text?.includes(`Selection: ${Ke}`)))return ct;let yt=[...ct,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
|
|
186
186
|
Question: ${_}
|
|
187
|
-
Selection: ${Ke}`,isAskRecord:!0}];return Y(yt.length),yt}),Ee(Ke))}}),W("ask")})),onUsage:_=>{let be=_.totalTokenCount||0,Ee=_.cachedContentTokenCount||0,Ie=_.candidatesTokenCount||0;$o({tokens:be}),$s(Ke=>Ke+be),Ee>0&&Hs(Ke=>Ke+Ee),Ie>0&&Gs(Ke=>Ke+Ie),_s(Ke=>Ke+1)}},async()=>xo.current?xo.current:null,oo),re=!1,rt=null,Ne=null,Fe=!1,Re=!1,ht=!1,et=!1,tt=0,vt=null,Eo=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let _ of Z){if(await new Promise(me=>setTimeout(me,3)),_.type==="text"&&Pr(Date.now()),V&&_.type==="text"&&($=Date.now(),V=!1,ce.progressiveRendering&&ke()),_.type==="status"){if(_.content&&(_.content.includes("Steering Hint Injected")||_.content.includes("Question Forwarded"))){let me=xo.current;me&&(U(Te=>{Y(Te.length+1);let Ae=me.startsWith("/btw")
|
|
188
|
-
${
|
|
189
|
-
\u2800`,isMeta:!0}]);continue}if(_.type==="summary_injected"){U(me=>me.map(Te=>Te.id===_.content.id?{...Te,fullText:_.content.text}:Te));continue}if(_.type==="spinner"){Gl(_.content);continue}if(_.type==="model_update"){Kl(_.content);continue}if(_.type==="turn_reset"){if(pe(),ge(),rt=null,Ne=null,re=!1,Fe=!1,Re=!1,et=!1,ht=!1,U(me=>{let Te=me.map(Ae=>{if(Ae.isStreaming){let
|
|
190
|
-
`),Te=0,Ae=0
|
|
191
|
-
`),xt=!1;for(let Io of
|
|
187
|
+
Selection: ${Ke}`,isAskRecord:!0}];return Y(yt.length),yt}),Ee(Ke))}}),W("ask")})),onUsage:_=>{let be=_.totalTokenCount||0,Ee=_.cachedContentTokenCount||0,Ie=_.candidatesTokenCount||0;$o({tokens:be}),$s(Ke=>Ke+be),Ee>0&&Hs(Ke=>Ke+Ee),Ie>0&&Gs(Ke=>Ke+Ie),_s(Ke=>Ke+1)}},async()=>xo.current?xo.current:null,oo),re=!1,rt=null,Ne=null,Fe=!1,Re=!1,ht=!1,et=!1,tt=0,vt=null,Eo=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let _ of Z){if(await new Promise(me=>setTimeout(me,3)),_.type==="text"&&Pr(Date.now()),V&&_.type==="text"&&($=Date.now(),V=!1,ce.progressiveRendering&&ke()),_.type==="status"){if(_.content&&(_.content.includes("Steering Hint Injected")||_.content.includes("Question Forwarded"))){let me=xo.current;me&&(U(Te=>{Y(Te.length+1);let Ae=me.startsWith("/btw"),Xe=Ae?me.replace(/^\/btw\s*/,""):me,xt=Ae?"[QUESTION]":"[STEERING HINT]";return[...Te,{id:"hint-"+Date.now(),role:"user",text:`${xt}
|
|
188
|
+
${Xe}`,color:"cyan",isSteeringHint:!0,hintType:Ae?"QUESTION":"STEERING HINT",hintContent:Xe}]}),Qr(null),xo.current=null)}_.content?.includes("[start]")||Vr(_.content),_.content?.includes("[start]")?(clearInterval(An),In(0),An=setInterval(()=>{In(me=>me+1)},1e3)):_.content?.includes("[end]")&&(In(0),clearInterval(An)),Ko()&&fr(_.content),_.content==="Request Cancelled"&&(pe(),ge(),T());continue}if(_.type==="status_history"){Vr(_.content),Ko()&&fr(_.content),U(me=>[...me,{id:"condense-"+Date.now(),role:"system",text:`\u2726 ${_.content}
|
|
189
|
+
\u2800`,isMeta:!0}]);continue}if(_.type==="summary_injected"){U(me=>me.map(Te=>Te.id===_.content.id?{...Te,fullText:_.content.text}:Te));continue}if(_.type==="spinner"){Gl(_.content);continue}if(_.type==="model_update"){Kl(_.content);continue}if(_.type==="turn_reset"){if(pe(),ge(),rt=null,Ne=null,re=!1,Fe=!1,Re=!1,et=!1,ht=!1,U(me=>{let Te=me.map(Ae=>{if(Ae.isStreaming){let Xe=Ae.text?Ct(Ae.text):Ae.text,xt=Ae.fullText?Ct(Ae.fullText):Ae.fullText;return{...Ae,isStreaming:!1,text:Xe,fullText:xt}}return Ae});return Y(Te.length),Te}),po(),global.gc){for(let me=0;me<2;me++)global.gc(),await new Promise(Te=>setImmediate(Te));h.current=Date.now()}continue}if(_.type==="interactive_turn_finished"){Kr(!1),In(0),clearInterval(An),Ko()&&fr(null),D=!0,po(),ce?.autoTruncateResults&&U(me=>{let Te=me.map(Ae=>{let Xe=Ae.fullText||Ae.text||"";return!Xe.startsWith("[TOOL RESULT]:")||Xe.startsWith("[TOOL RESULT]: ERROR")||Xe.startsWith("[TOOL RESULT]: DENIED")||Xe.startsWith("[TOOL RESULT]: SUCCESS: Goal")||Xe.includes("...Results Truncated by System on User Command")||Xe.startsWith("[TOOL RESULT]: Skill:")||Xe.includes("Skill: [")||Xe.startsWith("[TOOL RESULT]: DOCs:")||Xe.includes("DOCs: [")?Ae:Xe.startsWith("[TOOL RESULT]: SUCCESS")?{...Ae,fullText:"[TOOL RESULT]: SUCCESS: ...Results Truncated by System on User Command"}:{...Ae,fullText:"[TOOL RESULT]: ...Results Truncated by System on User Command"}});return cn(nt,null,Te),Y(Te.length),Te}),Gi({profile:pn,thinkingLevel:we,mode:B,janitorModel:ye,chatId:nt,systemSettings:ce,sessionStats:no,aiProvider:P,apiKey:bt},_.data.agentText,_.data.fullAgentTextRaw,_.data.history,{onMemoryUpdated:()=>U(me=>{let Te=[...me];return Te.length>0&&(Te[Te.length-1].memoryUpdated=!0),Te}),onBackgroundIncrement:()=>vl(me=>me+1)});continue}if(_.type==="visual_feedback"){pe(),ge(),U(me=>{let Te=[...me,{id:"feedback-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:Ct(_.content),isVisualFeedback:!0}];return Y(Te.length),Te});continue}if(_.type==="exec_start"){pe(),ge();continue}if(_.type==="liveTokens"){$o({tokens:_.content});continue}if(_.type==="usage"){let me=_.content.totalTokenCount||0,Te=_.content.cachedContentTokenCount||0,Ae=_.content.candidatesTokenCount||0;$o({tokens:me}),$s(Xe=>Xe+me),Te>0&&Hs(Xe=>Xe+Te),Ae>0&&Gs(Xe=>Xe+Ae),_s(Xe=>Xe+1);continue}if(_.type==="tool_time"){Ll(me=>me+_.content);continue}if(_.type==="tool_result"){if(ge(),rt=null,Ne=null,re=!1,Fe=!1,Re=!1,et=!1,ht=!1,tt=0,vt=null,U(me=>{let Te=[...me,{id:"tool-"+Date.now()+"-"+Math.random().toString(36).substring(2,7),role:"system",text:Ct(_.content),fullText:Ct(_.aiContent),binaryPart:_.binaryPart,toolName:_.toolName}];return Y(Te.length),Te}),_.toolName==="update_file"&&_.aiContent){let me=_.aiContent.split(`
|
|
190
|
+
`),Te=0,Ae=0,Xe=!1;for(let xt of me){if(xt.includes("[DIFF_START]")){Xe=!0;continue}if(xt.includes("[DIFF_END]")){Xe=!1;continue}Xe&&(/^\+\d+/.test(xt)?Te++:/^\-\d+/.test(xt)&&Ae++)}jo("linesAdded",Te),jo("linesRemoved",Ae)}else if(_.toolName==="write_file"&&_.aiContent){let me=_.aiContent.match(/- Stats: \[(\d+) lines/),Te=me?parseInt(me[1]):0,Ae=0;if(_.aiContent.includes("Old File contents:")){let Xe=_.aiContent.split(`
|
|
191
|
+
`),xt=!1;for(let Io of Xe){if(Io.includes("Old File contents:")){xt=!0;continue}xt&&(Io.trim()===""?xt=!1:/^\d+ \|/.test(Io)&&Ae++)}}jo("linesAdded",Te),jo("linesRemoved",Ae)}continue}let be=_.content;if(_.type==="text"&&be.includes("Request Cancelled")){if(global.gc){for(let me=0;me<3;me++)global.gc(),await new Promise(Te=>setImmediate(Te));h.current=Date.now()}continue}let Ee=be.toLowerCase();if(be.includes("```")&&(Fe=!Fe),(Ee.includes("tool:functions.")||Ee.includes("agent:generalist."))&&(Re=!0,tt=0,vt=null,(be.includes("[tool:functions.")||be.includes("[agent:generalist."))&&(tt=0)),Re){for(let me=0;me<be.length;me++){let Te=be[me];!vt&&(Te==="'"||Te==='"'||Te==="`")?vt=Te:vt&&Te===vt&&be[me-1]!=="\\"&&(vt=null),vt||(Te==="("||Te==="["?tt++:(Te===")"||Te==="]")&&tt--)}tt<=0&&!vt&&(Re=!1)}let Ie=/^\s*(?:<(think|thought|thoughts)[^>]*>|<\|channel>thought|\[(think|thought|thoughts)\])/i,Ke=(me,Te)=>{let Ae=!1;for(let Xe=0;Xe<Te;Xe++)me[Xe]==="`"&&(Ae=!Ae);return Ae},ct=me=>{let Te=/(?:<\/(think|thought|thoughts)>|<channel\|>|\[\/(think|thought|thoughts)\])/gi,Ae;for(;(Ae=Te.exec(me))!==null;)if(!Ke(me,Ae.index))return{index:Ae.index,length:Ae[0].length};return{index:-1,length:0}},Ft=j.current?.role==="agent"&&j.current.text||"",yt=!ht&&Ft.trim().length===0;if(!re&&yt&&(Ie.test(be)||Ie.test(Ft+be))){let me=Ie.test(be)?be:Ft+be,Te=me.match(Ie),Ae=Te.index,Xe=Te[0].length,xt=me.substring(Ae+Xe);pe(),j.current=null,re=!0,ht=!0,rt="think-"+Date.now(),j.current={id:rt,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let Io=ct(xt);if(Io.index!==-1){let Zl=xt.substring(0,Io.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),fi=xt.substring(Io.index+Io.length);j.current.text=Ct(Zl);let Rl=j.current.startTime||Date.now();j.current.duration=Date.now()-Rl,ge(),re=!1,Ne="agent-"+Date.now(),j.current={id:Ne,role:"agent",text:"",isStreaming:!0},fi&&Ve(fi)}else{let Zr=xt.replace(/^\r?\n+/,"");Zr&&Ve(Zr)}continue}if(!re&&!ht&&be.trim().length>0&&(ht=!0),re&&j.current?.role==="think"){pe();let me=j.current.text+be,Te=ct(me);if(Te.index!==-1){let Ae=me.substring(0,Te.index),Xe=me.substring(Te.index+Te.length);j.current.text=Ct(Ae);let xt=j.current.startTime||Date.now();j.current.duration=Date.now()-xt,ge(),re=!1,Ne="agent-"+Date.now(),j.current={id:Ne,role:"agent",text:"",isStreaming:!0},Xe&&Ve(Xe)}else Ve(be);continue}else if(!re){let me=be.toLowerCase();!et&&(me.includes("tool:functions.")||me.includes("agent:generalist."))&&(et=!0),!j.current||j.current.role!=="agent"?(Ne="agent-"+Date.now(),j.current={id:Ne,role:"agent",text:Ct(be),isStreaming:!0},le()):Ve(be)}}let Do=Date.now();kl(_=>_+(Do-$))}catch(ue){U(z=>(Y(z.length+1),[...z,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${ue.message}`}]))}finally{let ue=Date.now()-$;if(j.current&&(j.current.workedDuration=ue),Se.current&&(await Je(),clearInterval(Se.current),Se.current=null),Kr(!1),Vr(null),In(0),clearInterval(An),ge(),qr.current&&T(),po(),global.gc)try{for(let z=0;z<3;z++)global.gc(),await new Promise(Me=>setImmediate(Me));h.current=Date.now()}catch{}if(D||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),xo.current){zr(xo.current),Qr(null);let z=xo.current;xo.current=null,U(Me=>{let Pe=[...Me],Z=Pe.reverse().find(re=>re.text?.includes("[STEERING HINT: QUEUED]")||re.text?.includes("[QUESTION: QUEUED]"));return Z&&(Z.text.includes("[STEERING HINT: QUEUED]")?Z.text=Z.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]"):Z.text.includes("[QUESTION: QUEUED]")&&(Z.text=Z.text.replace("[QUESTION: QUEUED]","[QUESTION: FINISHED_TURN]"))),Pe.reverse()}),W("resolution")}U(z=>{let Me=Date.now()-$,Pe=!1,Z=[...z].reverse().map(Ne=>{let Fe=Ne.isStreaming?{...Ne,isStreaming:!1}:Ne;return Fe.text&&(Fe.text=(" "+Fe.text).slice(1)),!Pe&&Fe.role==="agent"&&(Pe=!0,Fe={...Fe,workedDuration:Me}),Fe}).reverse();if(!Z.some(Ne=>Ne.role==="agent"&&Ne.text?.trim().length>0)){let Ne=[...Z].reverse().find(Fe=>Fe.role==="think"&&Fe.text?.trim().length>0);Ne&&Z.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Ne.text,isStreaming:!1,workedDuration:Me})}let rt=Z.filter(Ne=>!String(Ne.id).startsWith("welcome")&&(!Ne.isMeta||Ne.text&&Ne.text.includes("Request Cancelled")));return cn(nt,null,rt),Y(Z.length),Z})}})()}m(""),I(!1)}},Ge=hn(()=>{if(E.startsWith("/")&&!Q){let u=E.split(" "),y=u[u.length-1].toLowerCase();if(u.length===1){let d=y.startsWith("/")?y.slice(1):y;return ui.filter(T=>(T.cmd.startsWith("/")?T.cmd.slice(1):T.cmd).toLowerCase().includes(d))}let f=ui;for(let d=0;d<u.length-1;d++){let T=u[d].toLowerCase(),D=f.find($=>$.cmd.toLowerCase()===T);if(D&&D.subs)f=D.subs;else return[]}return f.filter(d=>d.cmd.toLowerCase().includes(y))}let o=E.split(" "),n=o[o.length-1],a=n&&n.startsWith("\\@");if((n&&n.startsWith("@")||a)&&!Q){let u=n.indexOf("#"),y=u!==-1,f=a?2:1,d=y?n.substring(f,u).toLowerCase():n.slice(f).toLowerCase(),T=y?n.substring(u):"";return Hd(process.cwd()).filter(V=>V.name.toLowerCase().includes(d)).map(V=>{let ue=V.relativePath.replace(/\\/g,"/"),z=ue.startsWith(".")?ue:"./"+ue;return{cmd:(a?"\\@":"@")+"["+z+T+"]",desc:V.relativePath}})}return[]},[E,Q]);Qe(()=>{let o=0;for(;o<Ge.length;){let n=Ge[o],a=n?.cmd||n||"";if(typeof a=="string"&&a.trimStart().startsWith("---"))o++;else break}he(o<Ge.length?o:0)},[Ge]);let[sr,ir]=K(0),gi=Ye(0);Qe(()=>{let o=gi.current>0,n=Ge.length>0;if(gi.current=Ge.length,!n){ir(0);return}if(!o){ir(1);return}ir(Ge.length)},[Ge]),Qe(()=>{if(sr>0&&sr<Ge.length){let o=setTimeout(()=>{ir(n=>Math.min(n+1,Ge.length))},5);return()=>clearTimeout(o)}},[sr,Ge.length]),Qe(()=>{if(lt!=="providerBudgetSelect")return;let o=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside"],n=Le.providerBudgets||{},a=o.reduce((g,u)=>(g[u]=!!(n[u]&&(n[u].agentLimit||n[u].tokenLimit)),g),{});Os(a),jn(0)},[lt]),Qe(()=>{if(lt!=="providerBudgetFlow")return;let o={},n=Le.providerBudgets||{};for(let a of Ro){let g=n[a]||{};o[a]={agentLimit:xn(g.agentLimit),tokenLimit:xn(g.tokenLimit),monthlyTokenLimit:xn(g.monthlyTokenLimit)}}Or(o),ho(0)},[lt,Ro]);let tc=({label:o,isSelected:n})=>{let a=o==="Cancel"||o==="Back"||o.toLowerCase().includes("exit")||o.toLowerCase().includes("back");return e.createElement(c,{marginTop:a?1:0,backgroundColor:n?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(s,{color:n?"white":"gray",bold:n},n?"\u276F ":" ",o))},ln=(o,n,a,g=10,u=2,y=9)=>{let f=a>0?Math.min(100,n/a*100):0,d=Math.round(f),T=Math.round(d/100*g),D="\u2588".repeat(T)+"\u2591".repeat(Math.max(0,g-T)),$=l.success||"green";d>=40&&d<=80?$=l.warning||"yellow":d>80&&($=l.danger||"red");let V=o.toLowerCase().includes("token")||o.toLowerCase().includes("daily")||o.toLowerCase().includes("monthly"),ue=Vn(a)?"\u221E":V?ut(a):a,z=V?ut(n):n,Me;return f===0?Me="0%":f>0&&f<1?Me="<1%":Me=`${d}%`,e.createElement(c,{flexDirection:"row",paddingLeft:u,key:o},e.createElement(c,{width:y},e.createElement(s,{color:l.textMuted},o,": ")),e.createElement(s,{color:$},D),e.createElement(s,{color:l.textMuted}," ",Me," (",z,"/",ue,")"))},Jl=()=>{switch(lt){case"settings":return e.createElement(yr,{systemSettings:ce,setSystemSettings:It,apiTier:Ze,setActiveView:W,setInputConfig:qt,saveSettings:At,quotas:Le,setMessages:U,aiProvider:P,setProviderReturnView:Ar});case"theme":return e.createElement(yr,{systemSettings:ce,setSystemSettings:It,apiTier:Ze,setActiveView:W,setInputConfig:qt,saveSettings:At,quotas:Le,setMessages:U,aiProvider:P,initialSelectingTheme:!0,onCloseTheme:()=>W("chat"),setProviderReturnView:Ar});case"selectProvider":return e.createElement(gt,{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:"CrofAI",value:"CrofAI"},{label:"Poolside",value:"Poolside"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router",value:"9router"}]:[],{label:"Ollama",value:"Ollama"},{label:"AIHubMix [EXPERIMENTAL]",value:"AIHubMix"},{label:"Mistral [EXPERIMENTAL]",value:"Mistral"},{label:"OpenRouter [EXPERIMENTAL]",value:"OpenRouter"},{label:"Back",value:Zo}],theme:ce.theme,onSelect:async o=>{if(o.value===Zo||o.value==="settings"||o.value==="Back"){W(Zo);return}let n=o.value,a=await an(n);if(a){Dt(n),Kt(a),Un(a,{aiProvider:n,onIDEApproval:tr});let g=(Le.providerTiers||{})[n]||"Free",u=io(n,g);se(u),Xo(g),n==="NVIDIA"&&process.env.NVIDIA_BASE_URL||n==="Ollama"||n==="CrofAI"||n==="InferX"||n==="SenseNova"||n==="Poolside"||n==="9router"?(It(y=>({...y,memory:!1})),At({aiProvider:n,activeModel:u,apiTier:g,quotas:Le,systemSettings:{...ce,memory:!1}})):At({aiProvider:n,activeModel:u,apiTier:g,quotas:Le}),U(y=>[...y,{role:"system",text:`\u2726 Switched to ${n} (cached)!${u?`
|
|
192
192
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Model: ${u}.`:""}${(n==="Ollama"||n==="CrofAI"||n==="InferX"||n==="SenseNova"||n==="AIHubMix"||n==="Poolside"||n==="9router")&&ce.memory?`
|
|
193
193
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with ${n}.`:""}${n==="NVIDIA"&&process.env.NVIDIA_BASE_URL&&ce.memory?`
|
|
194
194
|
\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Memory is not available with Custom Endpoints.`:""}
|
|
@@ -219,7 +219,7 @@ ${$e}`,color:"cyan",isSteeringHint:!0,hintType:Ae?"QUESTION":"STEERING HINT",hin
|
|
|
219
219
|
|
|
220
220
|
\u2726 Custom Instructions
|
|
221
221
|
${o.instructions.length>0?`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${o.instructions.substring(0,30)}${o.instructions.length>30?"...":""}`:"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No Instructions Provided."}
|
|
222
|
-
\u2800`,isMeta:!0}]),W("chat")},onCancel:()=>W("chat"),theme:ce.theme});case"resolution":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement($d,{data:jl,theme:ce.theme,onResolve:o=>{zr(null),W("chat"),setTimeout(()=>{mi(o,!0)},500)},onEdit:o=>{zr(null),W("chat"),m(o)}}));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},"FILE WRITE PERMISSION"),e.createElement(s,{marginTop:1},"The agent is attempting to modify: ",e.createElement(s,{color:"cyan"},Nn(vo?.args||"{}").path||"Unknown File")),Ko()?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 o=Nn(vo?.args||"{}"),n=[],a=new Set;if(Object.keys(o).forEach(y=>{let f=y.match(/^(searchContent|replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(f){let d=f[2]?parseInt(f[2]):1;a.add(d)}}),Array.from(a).sort((y,f)=>y-f).forEach(y=>{let f,d;y===1?(f=o.searchContent1??o.searchContent??o.replaceContent1??o.content_to_replace1??o.replaceContent??o.content_to_replace??o.TargetContent??null,d=o.newContent1??o.content_to_add1??o.newContent??o.content_to_add??o.ReplacementContent??o.replacementContent??null):(f=o[`searchContent${y}`]??o[`replaceContent${y}`]??o[`content_to_replace${y}`]??null,d=o[`newContent${y}`]??o[`content_to_add${y}`]??null),(f!==null||d!==null)&&n.push({replace:f,new:d})}),n.length>0)return e.createElement(c,{flexDirection:"column",marginTop:1},n.map((y,f)=>{let d=y.replace!==null,T=y.new!==null;return e.createElement(c,{key:f,flexDirection:"column",marginTop:f>0?1:0},n.length>1&&e.createElement(s,{color:"gray"},"Block ",f+1,":"),d&&e.createElement(c,null,e.createElement(s,{color:"red",wrap:"anywhere",bold:!0},"- ",y.replace)),T&&e.createElement(c,{marginTop:0},e.createElement(s,{color:"green",wrap:"anywhere",bold:!0},"+ ",y.new.replace(/\[\/n\]?/g,"\\n"))))}));let u=o.content||o.ReplacementContent||o.content_to_add||o.replacementContent||o.newContent||null;return e.createElement(s,{color:"white",wrap:"anywhere"},(u?u.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),e.createElement(c,{marginTop:1},e.createElement(gt,{title:"Action Required",items:[{label:"Accept this time",value:"allow"},{label:"Accept for this session",value:"always"},{label:"Don't accept",value:"deny"}],onSelect:o=>{o.value==="always"&&Xl(!0);let n=o.value==="deny"?"deny":"allow";vo.resolve(n),rn(null),W("chat")},theme:ce.theme})));case"mode":return e.createElement(gt,{title:"SELECT EXECUTION MODE",items:[{label:`Flux (Dev Toolset Mode) ${B==="Flux"?"\u25CF":""}`,value:"Flux"},{label:`Flow (Chat / Conversation Mode) ${B==="Flow"?"\u25CF":""}`,value:"Flow"},{label:`ICU (Interactive Computer Use) ${B==="ICU"?"\u25CF":""}`,value:"ICU"},{label:`FluxCU (Autonomous Flux Computer Use) ${B==="FluxCU"?"\u25CF":""}`,value:"FluxCU"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:o=>{if(o.value==="chat"||o.value==="Back"){W("chat");return}let n=o.value;L(n)
|
|
222
|
+
\u2800`,isMeta:!0}]),W("chat")},onCancel:()=>W("chat"),theme:ce.theme});case"resolution":return e.createElement(c,{width:"100%",alignItems:"center",justifyContent:"center"},e.createElement($d,{data:jl,theme:ce.theme,onResolve:o=>{zr(null),W("chat"),setTimeout(()=>{mi(o,!0)},500)},onEdit:o=>{zr(null),W("chat"),m(o)}}));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},"FILE WRITE PERMISSION"),e.createElement(s,{marginTop:1},"The agent is attempting to modify: ",e.createElement(s,{color:"cyan"},Nn(vo?.args||"{}").path||"Unknown File")),Ko()?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 o=Nn(vo?.args||"{}"),n=[],a=new Set;if(Object.keys(o).forEach(y=>{let f=y.match(/^(searchContent|replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(f){let d=f[2]?parseInt(f[2]):1;a.add(d)}}),Array.from(a).sort((y,f)=>y-f).forEach(y=>{let f,d;y===1?(f=o.searchContent1??o.searchContent??o.replaceContent1??o.content_to_replace1??o.replaceContent??o.content_to_replace??o.TargetContent??null,d=o.newContent1??o.content_to_add1??o.newContent??o.content_to_add??o.ReplacementContent??o.replacementContent??null):(f=o[`searchContent${y}`]??o[`replaceContent${y}`]??o[`content_to_replace${y}`]??null,d=o[`newContent${y}`]??o[`content_to_add${y}`]??null),(f!==null||d!==null)&&n.push({replace:f,new:d})}),n.length>0)return e.createElement(c,{flexDirection:"column",marginTop:1},n.map((y,f)=>{let d=y.replace!==null,T=y.new!==null;return e.createElement(c,{key:f,flexDirection:"column",marginTop:f>0?1:0},n.length>1&&e.createElement(s,{color:"gray"},"Block ",f+1,":"),d&&e.createElement(c,null,e.createElement(s,{color:"red",wrap:"anywhere",bold:!0},"- ",y.replace)),T&&e.createElement(c,{marginTop:0},e.createElement(s,{color:"green",wrap:"anywhere",bold:!0},"+ ",y.new.replace(/\[\/n\]?/g,"\\n"))))}));let u=o.content||o.ReplacementContent||o.content_to_add||o.replacementContent||o.newContent||null;return e.createElement(s,{color:"white",wrap:"anywhere"},(u?u.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),e.createElement(c,{marginTop:1},e.createElement(gt,{title:"Action Required",items:[{label:"Accept this time",value:"allow"},{label:"Accept for this session",value:"always"},{label:"Don't accept",value:"deny"}],onSelect:o=>{o.value==="always"&&Xl(!0);let n=o.value==="deny"?"deny":"allow";vo.resolve(n),rn(null),W("chat")},theme:ce.theme})));case"mode":return e.createElement(gt,{title:"SELECT EXECUTION MODE",items:[{label:`Flux (Dev Toolset Mode) ${B==="Flux"?"\u25CF":""}`,value:"Flux"},{label:`Flow (Chat / Conversation Mode) ${B==="Flow"?"\u25CF":""}`,value:"Flow"},{label:`ICU (Interactive Computer Use) ${B==="ICU"?"\u25CF":""}`,value:"ICU"},{label:`FluxCU (Autonomous Flux Computer Use) ${B==="FluxCU"?"\u25CF":""}`,value:"FluxCU"},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:o=>{if(o.value==="chat"||o.value==="Back"){W("chat");return}let n=o.value;L(n),$e(n==="Flow"?"Fast":"High"),U(a=>(Y(a.length+1),[...a,{id:Date.now(),role:"system",text:`\u2726 Mode switched to ${Ds(n)}
|
|
223
223
|
\u2800`,isMeta:!0}])),W("chat")},onClose:()=>W("chat")});case"display":return e.createElement(gt,{title:"SELECT ACTIVE DISPLAY FOR COMPUTER USE",items:[{label:`Primary Display (Display 1) ${A===0?"\u25CF":""}`,value:0},{label:`Secondary Display (Display 2) ${A===1?"\u25CF":""}`,value:1},{label:"Back",value:"chat"}],theme:ce.theme,onSelect:o=>{if(o.value==="chat"||o.value==="Back"){W("chat");return}let n=Number(o.value);O(n),At({display:n}).catch(()=>{});let a=n===0?"Primary (Display 1)":"Secondary (Display 2)";U(g=>(Y(g.length+1),[...g,{id:Date.now(),role:"system",text:`\u2726 Active Computer Use display set to: ${a}`,isMeta:!0}])),W("chat")},onClose:()=>W("chat")});case"updateManager":return e.createElement(gt,{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:o=>{if(o.value==="settings"||o.value==="Back"){W("settings");return}o.value==="custom"?(qt({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:ce.customUpdateCommand,next:n=>(It(a=>({...a,updateManager:"custom",customUpdateCommand:n})),null)}),W("input")):(It(n=>({...n,updateManager:o.value})),W("settings"))},theme:ce.theme});case"update":return e.createElement(il,{latest:Vt,current:oo,settings:ce,onClose:()=>W("chat"),onSuccess:()=>{U(o=>(Y(o.length+1),[...o,{id:"update-success-"+Date.now(),role:"system",text:`**[UPDATE COMPLETED]** Flux Flow successfully updated to v${Vt}.
|
|
224
224
|
**Restart to see changes.**`,isMeta:!0}])),W("chat")},onUpdateSettings:o=>{W("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},Nn(vo?.args||"{}").command||"Unknown Command"))),e.createElement(c,{marginTop:1},e.createElement(gt,{title:"Risk Assessment Required",items:[{label:"Run",value:"allow"},{label:"Deny",value:"deny"}],onSelect:o=>{vo.resolve(o.value),rn(null),W("chat")},theme:ce.theme})));default:return e.createElement(c,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},si&&ri&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,paddingX:2,paddingY:1,width:"100%",marginBottom:1},e.createElement(c,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:l.text,bold:!0,underline:!0},"INQUIRY RESPONSE"),e.createElement(s,{color:l.textMuted},"[ ESC to Close ]")),e.createElement(c,{marginTop:1,width:"100%"},e.createElement(Xn,{text:ri,columns:X.columns-6,theme:ce.theme}))),Xr.filter(o=>o.status==="running").length>0&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:l.borderMuted,paddingX:2,paddingY:0,width:"100%",marginBottom:1},e.createElement(c,{justifyContent:"space-between",width:"100%"},e.createElement(s,{color:l.text,bold:!0},"ACTIVE SUBAGENTS")),e.createElement(c,{flexDirection:"column",marginTop:1,width:"100%"},Xr.filter(o=>o.status==="running").map(o=>e.createElement(Wd,{key:o.id,sa:o,showTPMEstimate:ce.showTPMEstimate})))),Ln&&e.createElement(c,{flexDirection:"column",borderStyle:"round",borderColor:l.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:l.warning||"yellow",bold:!0},"\u2726 ",Ln.startsWith("/btw")?"Question Queued":"Steering Hint Queued"))),e.createElement(c,{marginTop:0,paddingLeft:2},e.createElement(s,{color:l.text,bold:!0},"\u2514\u2500 ",Ln.startsWith("/btw")?Ln.replace(/^\/btw\s*/,""):Ln))),e.createElement(c,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},e.createElement(c,null,Dn?e.createElement(c,{gap:1},e.createElement(Ld,null),e.createElement(Yn,{text:Dn.trimEnd(),baseColor:l.textExclusive||l.text,glintColor:l.textMutedExclusive||l.textMuted,speed:60,italic:!0,glintWidth:2,typeSpeed:10}),e.createElement(s,{color:l.textMuted},Rs>0?`(${Rs.toFixed(0)}s)`:"")):e.createElement(s,{color:l.textMuted,italic:!0},E.length>0&&oi?"Press ESC again to clear input":$l?"Press CTRL + O to expand":"Waiting for input...")),e.createElement(c,null,(()=>{let o=Dn?.toLowerCase()??"";return sn&&Date.now()-Ns>15e3&&Xr.length===0&&(o.includes("connecting")||o.includes("working")||o.includes("queue"))?e.createElement(c,null,e.createElement(Yn,{text:"Waiting for API",baseColor:l.text,glintColor:l.textMuted,glintWidth:4,speed:80}),e.createElement(s,{color:l.textMuted,dimColor:!0}," \u2503 ")):jr?e.createElement(c,null,e.createElement(Yn,{text:jr,baseColor:l.text,glintColor:l.textMuted,italic:!0,speed:80,typeSpeed:15}),e.createElement(s,{color:l.textMuted,dimColor:!0}," \u2503 ")):null})(),e.createElement(Yn,{text:Mt.basename(te)||(te.length>1?te:"Use '/model model-id' to select model"),baseColor:l.text,glintColor:l.textMuted,glintWidth:3}),e.createElement(s,{color:l.textMuted}," ",te.length>0?`(${we})`:""),ur>0&&e.createElement(s,{color:l.textMuted}," [",ur," ",ur===1?"file":"files","]"))),e.createElement(c,{flexDirection:"column",width:"100%"},e.createElement(c,{width:"100%",height:1,overflow:"hidden"},e.createElement(s,{color:l.inputBorder},"\u2584".repeat(Math.max(1,X.columns)))),e.createElement(c,{backgroundColor:l.inputBg,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:l.inputPrompt,bold:!0},sn||or?"\u2726 ":" \u276F ")),e.createElement(c,{flexGrow:1},e.createElement(c,{flexGrow:1,position:"relative"},E===""&&e.createElement(c,{position:"absolute",paddingLeft:0},Rt&&!En?e.createElement(s,{color:"yellow"},zl?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):Rt&&En?e.createElement(s,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):oi===1?e.createElement(s,{color:l.inputPrompt,bold:!0}," Press ESC again to ",E.length>0?"clear input":"revert codebase to checkpoint","..."):e.createElement(s,{color:l.inputPlaceholder},Wl?" Press ESC again to cancel the request.":or?" Compacting session history, please wait...":sn?" Enter a prompt to steer the agent.":` Send message, @file or /cmd (${Ul.shortcut} for newline)`)),e.createElement(ji,{key:`input-${M}`,onPasteStateChange:Hl,focus:!En&&!or,showCursor:_e&&!or,cursorColor:l.inputText,lastFocusEventTime:We.current,value:E,textStyle:{bold:!0,color:l.inputText},columns:X.columns,onChange:o=>{let n=o.replace(/\r\n/g,`
|
|
225
225
|
`).replace(/\r/g,`
|