fluxflow-cli 4.30.1 → 4.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/chunks/{ai-GFTW3F45.js → ai-P2QF3HPK.js} +1 -1
  2. package/dist/chunks/{app-IAOFFAXL.js → app-GMBLK4TE.js} +3 -3
  3. package/dist/chunks/{chunk-PDIXJ5UN.js → chunk-5MFIJRT6.js} +206 -34
  4. package/dist/chunks/{chunk-RSLAMTAV.js → chunk-H4KXMWYP.js} +1 -1
  5. package/dist/chunks/{chunk-BEJW3JGZ.js → chunk-KHJAWDBM.js} +1 -1
  6. package/dist/chunks/{chunk-RVCMZTHS.js → chunk-KZTDLEUL.js} +1 -1
  7. package/dist/chunks/chunk-X6YW3TVC.js +12 -0
  8. package/dist/chunks/{chunk-LGI76ZQV.js → chunk-YBXYDH5B.js} +3 -3
  9. package/dist/chunks/{click-AHOXSDH6.js → click-PN3BLFOY.js} +2 -2
  10. package/dist/chunks/{computer_action-NNJOTL7H.js → computer_action-VMC545YJ.js} +1 -1
  11. package/dist/chunks/{drag-SOCUV5Z7.js → drag-NMHO3BAW.js} +1 -1
  12. package/dist/chunks/{generate_image-GMYCWQ4R.js → generate_image-ZNBMY2PT.js} +1 -1
  13. package/dist/chunks/{invoke-UECYKKCJ.js → invoke-UH2WOJRR.js} +2 -2
  14. package/dist/chunks/{invokeSync-AKLDZ6WL.js → invokeSync-4A2ELLCQ.js} +2 -2
  15. package/dist/chunks/{key_press-A5PRGC7E.js → key_press-RJIPXDAB.js} +1 -1
  16. package/dist/chunks/{keyboard_typing-OGUSR6BH.js → keyboard_typing-VXT53PRV.js} +1 -1
  17. package/dist/chunks/{screen_grid-VV7JGWQB.js → screen_grid-PMTAQA3B.js} +1 -1
  18. package/dist/chunks/{scroll-JDGCDDUB.js → scroll-OMBQDZHP.js} +1 -1
  19. package/dist/chunks/{settings-EMTQHDIH.js → settings-Q5OBKUO6.js} +1 -1
  20. package/dist/chunks/{update_file-WBHNB4AY.js → update_file-VIY6KSMT.js} +1 -1
  21. package/dist/chunks/usage-OUCURLG4.js +1 -0
  22. package/dist/chunks/usageServer-YPYMV3EB.js +1 -0
  23. package/dist/chunks/{write_file-LSRYHZN6.js → write_file-AMAYRCUC.js} +1 -1
  24. package/dist/cli.js +3 -3
  25. package/dist/package.json +2 -2
  26. package/package.json +2 -2
  27. package/dist/chunks/chunk-QJZ24WJZ.js +0 -12
  28. package/dist/chunks/usage-TITGX7QI.js +0 -1
  29. package/dist/chunks/usageServer-TZCW3K7K.js +0 -1
@@ -1 +1 @@
1
- import{A as s,B as t,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-LGI76ZQV.js";import"./chunk-JS5ZIGFR.js";import"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import"./chunk-U2NRX2PX.js";import"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import"./chunk-53AFLLUU.js";import"./chunk-FQBBOFNP.js";import"./chunk-Y5JU726N.js";import"./chunk-KHCAQOSP.js";import"./chunk-QJZ24WJZ.js";import"./chunk-RVCMZTHS.js";import{k as a}from"./chunk-63V6P5DU.js";import"./chunk-L3W2X74K.js";import"./chunk-DSVLWYIT.js";export{c as RE_LEADING_THINK,q as compressHistory,b as convertChannelThinkTags,r as deleteChatSummary,e as findGenuineThinkClose,p as generateSimpleContent,s as getAIStream,j as getCleanGroupedLength,m as getGoogleClient,f as getLeadingThinkBlock,o as initAI,d as isInsideBacktick,a as isModelMultimodal,l as isTerminationSignaled,n as runJanitorTask,t as runSubagent,k as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags,i as stripTrailingFluffAfterTools};
1
+ import{A as s,B as t,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-YBXYDH5B.js";import"./chunk-JS5ZIGFR.js";import"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import"./chunk-U2NRX2PX.js";import"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import"./chunk-53AFLLUU.js";import"./chunk-FQBBOFNP.js";import"./chunk-Y5JU726N.js";import"./chunk-KHCAQOSP.js";import"./chunk-X6YW3TVC.js";import"./chunk-KZTDLEUL.js";import{k as a}from"./chunk-63V6P5DU.js";import"./chunk-L3W2X74K.js";import"./chunk-DSVLWYIT.js";export{c as RE_LEADING_THINK,q as compressHistory,b as convertChannelThinkTags,r as deleteChatSummary,e as findGenuineThinkClose,p as generateSimpleContent,s as getAIStream,j as getCleanGroupedLength,m as getGoogleClient,f as getLeadingThinkBlock,o as initAI,d as isInsideBacktick,a as isModelMultimodal,l as isTerminationSignaled,n as runJanitorTask,t as runSubagent,k as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags,i as stripTrailingFluffAfterTools};
@@ -1,4 +1,4 @@
1
- import{A as ll,a as Yi,b as Ze,c as rt,d as Cr,e as vr,f as zi,g as Ss,h as nn,i as Br,s as nl,v as rl,w as Do,y as sl,z as il}from"./chunk-LGI76ZQV.js";import{a as Yt,b as Ki,c as qi}from"./chunk-JS5ZIGFR.js";import{b as Ri,c as el,d as tl}from"./chunk-SZYN3VHU.js";import{a as ol}from"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import{c as Vi,e as En,f as Zt,g as ji}from"./chunk-QXN5B2BR.js";import"./chunk-U2NRX2PX.js";import{a as Zi}from"./chunk-A73NNVCZ.js";import{a as Wo,b as Bn,d as Er,e as Ms,f as Qi,h as Ji,i as qn}from"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import{a as Bt,b as xt,d as Wi,e as ht,f as Xi,j as ws,k as ys,l as Vn,n as Gi,o as Io}from"./chunk-53AFLLUU.js";import{a as Kn}from"./chunk-FQBBOFNP.js";import{a as jn}from"./chunk-Y5JU726N.js";import{b as Ho,c as hs,k as Ni}from"./chunk-KHCAQOSP.js";import{b as Ts}from"./chunk-PDIXJ5UN.js";import{a as Fi,b as Ui,f as $i,g as Mr,h as Sr,j as Et,k as on,l as bs,r as _i}from"./chunk-QJZ24WJZ.js";import{a as ps,b as Dt}from"./chunk-RVCMZTHS.js";import{d as Ii,e as Di,f as ki,g as Ai,h as Li,i as Oi,k as yr,m as _o,n as Jt,o as Pi}from"./chunk-63V6P5DU.js";import{c as Tr,d as Bi,e as wr}from"./chunk-L3W2X74K.js";import{e as Hi}from"./chunk-NYIPDIEQ.js";import{a as lo,b as tn,c as fo,d as fs,e as xs,k as Yn}from"./chunk-DSVLWYIT.js";import Ys from"os";import e,{useState as R,useEffect as st,useRef as Ke,useMemo as Ln}from"react";import{Box as u,Text as l,useInput as qd,useStdout as zd,Static as Qd}from"ink";import Jd from"ink-spinner";import ot from"fs-extra";import Ct from"path";import{exec as yo}from"child_process";import{fileURLToPath as Zd}from"url";import _t,{useState as Ir,useEffect as Cs,useMemo as zn,useCallback as Ta,useRef as ko}from"react";import{Box as wa,Text as ao,useInput as ya}from"ink";function Ma(t,f){return t.replace(/\t/g," ".repeat(f))}function Dr(t){return t==null?"":t.replace(/\r\n/g,`
1
+ import{A as ll,a as Yi,b as Ze,c as rt,d as Cr,e as vr,f as zi,g as Ss,h as nn,i as Br,s as nl,v as rl,w as Do,y as sl,z as il}from"./chunk-YBXYDH5B.js";import{a as Yt,b as Ki,c as qi}from"./chunk-JS5ZIGFR.js";import{b as Ri,c as el,d as tl}from"./chunk-SZYN3VHU.js";import{a as ol}from"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import{c as Vi,e as En,f as Zt,g as ji}from"./chunk-QXN5B2BR.js";import"./chunk-U2NRX2PX.js";import{a as Zi}from"./chunk-A73NNVCZ.js";import{a as Wo,b as Bn,d as Er,e as Ms,f as Qi,h as Ji,i as qn}from"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import{a as Bt,b as xt,d as Wi,e as ht,f as Xi,j as ws,k as ys,l as Vn,n as Gi,o as Io}from"./chunk-53AFLLUU.js";import{a as Kn}from"./chunk-FQBBOFNP.js";import{a as jn}from"./chunk-Y5JU726N.js";import{b as Ho,c as hs,k as Ni}from"./chunk-KHCAQOSP.js";import{b as Ts}from"./chunk-5MFIJRT6.js";import{a as Fi,b as Ui,h as $i,i as Mr,j as Sr,l as Et,m as on,n as bs,t as _i}from"./chunk-X6YW3TVC.js";import{a as ps,b as Dt}from"./chunk-KZTDLEUL.js";import{d as Ii,e as Di,f as ki,g as Ai,h as Li,i as Oi,k as yr,m as _o,n as Jt,o as Pi}from"./chunk-63V6P5DU.js";import{c as Tr,d as Bi,e as wr}from"./chunk-L3W2X74K.js";import{e as Hi}from"./chunk-NYIPDIEQ.js";import{a as lo,b as tn,c as fo,d as fs,e as xs,k as Yn}from"./chunk-DSVLWYIT.js";import Ys from"os";import e,{useState as R,useEffect as st,useRef as Ke,useMemo as Ln}from"react";import{Box as u,Text as l,useInput as qd,useStdout as zd,Static as Qd}from"ink";import Jd from"ink-spinner";import ot from"fs-extra";import Ct from"path";import{exec as yo}from"child_process";import{fileURLToPath as Zd}from"url";import _t,{useState as Ir,useEffect as Cs,useMemo as zn,useCallback as Ta,useRef as ko}from"react";import{Box as wa,Text as ao,useInput as ya}from"ink";function Ma(t,f){return t.replace(/\t/g," ".repeat(f))}function Dr(t){return t==null?"":t.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
3
  `)}function rn(t,f,x){let M=t,T=[...f].sort((s,v)=>s.start-v.start),b=0;for(let s of T){let v=s.start-b,m=Dr(s.text).split(`
4
4
  `).length,A=s.text.length,k=(m>3?`[Pasted ${m} lines]`:`[Pasted ${A} chars]`).length,_=v+k;if(t<=v)break;if(t<_){M=s.end;break}else{let S=s.text.length-k;M+=S,b+=S}}return Math.min(M,x.length)}function vs(t,f,x,M,T=[]){let b=(t||"").slice(0,f),s=M(b).length,v=M(t||""),m=[...T].sort(($,F)=>F.start-$.start);for(let $ of m){let F=M(t.slice(0,$.start)).length,H=M($.text),K=F+H.length,xe=Dr($.text).split(`
@@ -41,7 +41,7 @@ import{A as ll,a as Yi,b as Ze,c as rt,d as Cr,e as vr,f as zi,g as Ss,h as nn,i
41
41
  `),terminalWidth:f,theme:b}));if(m==="diff-line"){let{isFirstLine:S,isLastLine:E}=t,O=($=!1)=>r.createElement(I,{backgroundColor:s.codeBg,paddingX:1,width:f,marginBottom:$?1:0},r.createElement(I,{width:3,flexShrink:0}),r.createElement(I,{width:1,flexShrink:0,marginLeft:1}),r.createElement(I,{flexGrow:1,marginLeft:1},r.createElement(re,null," ")));return r.createElement(I,{flexDirection:"column"},S&&O(!1),r.createElement(xl,{line:A,pairContent:t.pairContent,parentText:void 0,columns:f,theme:b}),E&&O(!0))}if(m==="code-fence-open"){let S={paddingLeft:2,width:"100%"};return r.createElement(I,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},r.createElement(I,{flexDirection:"row",...S},r.createElement(re,null," ")),r.createElement(I,{flexDirection:"row",...S},r.createElement(re,{color:"gray",bold:!0},"\u25B6_ ",(A||"TEXT").toUpperCase())))}if(m==="code-line"){let{lineNum:S,lang:E}=t,O=f-12,F=xt(A,Math.max(10,O)).split(`
42
42
  `);return r.createElement(I,{flexDirection:"column",width:"100%"},F.map((H,K)=>r.createElement(I,{key:K,flexDirection:"row",borderColor:s.codeBorder,paddingLeft:2,width:"100%"},r.createElement(I,{width:5,flexShrink:0},r.createElement(re,{color:"gray",dimColor:!0},K===0?String(S).padStart(4," ")+" ":" ")),r.createElement(I,{flexGrow:1},Ft(H,E,s.text)))))}if(m==="code-fence-close")return r.createElement(I,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},r.createElement(re,null," "));if(m==="write-header")return r.createElement(I,{flexDirection:"column",paddingX:1,width:f},r.createElement(Dn,{text:A,columns:f,theme:b}));if(m==="write-line"){let{gutterWidth:S,lineNum:E,isFirstLine:O,isLastLine:$,extension:F,wrappedLines:H}=t,K=(xe=!1)=>r.createElement(I,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:s.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:s.codeBg,marginBottom:xe?1:0},r.createElement(I,{width:S+2,flexShrink:0},r.createElement(re,null," ".repeat(S+2))),r.createElement(I,{flexGrow:1},r.createElement(re,null," ")));return r.createElement(I,{flexDirection:"column"},O&&K(!1),r.createElement(I,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:s.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:s.codeBg},r.createElement(I,{width:S+2,flexShrink:0},r.createElement(re,{color:"gray",dimColor:!0},String(E).padStart(S," ")," ")),r.createElement(I,{flexGrow:1,flexDirection:"column"},(H||[A]).map((xe,ie)=>r.createElement(I,{key:ie},Ft(xe,F,s.text))))),$&&K(!0))}return m==="write-footer"?r.createElement(I,{flexDirection:"column",paddingX:1,width:f,marginTop:1,marginBottom:1},r.createElement(Dn,{text:A,columns:f,theme:b})):m==="worked-duration"?r.createElement(I,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},r.createElement(re,{color:s.textMuted},"["),r.createElement(re,{color:s.textMuted},"Worked for ",r.createElement(re,{bold:!0,color:s.text},Lr(_))),r.createElement(re,{color:s.textMuted},"]")):null}),Yc=r.memo(({messages:t,showFullThinking:f,columns:x=80,aiProvider:M,version:T,theme:b="Dark"})=>r.createElement(I,{flexDirection:"column",width:"100%"},t.map((s,v)=>r.createElement(hl,{key:s.id||v,msg:s,showFullThinking:f,columns:x,aiProvider:M,version:T,theme:b}))));import pt from"react";import{Box as Xo,Text as xo}from"ink";import{useState as Jn,useEffect as Zn,useRef as Pr}from"react";var Rn=null;function pl(){Rn&&Rn()}var pd=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let f=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let x=0;x<f.length-1;x++){let M=f[x],T=f[x+1];if(t>=M.t&&t<=T.t){let b=(t-M.t)/(T.t-M.t);b=b*b*(3-2*b);let s=Math.round(M.r+(T.r-M.r)*b),v=Math.round(M.g+(T.g-M.g)*b),m=Math.round(M.b+(T.b-M.b)*b);return`#${((1<<24)+(s<<16)+(v<<8)+m).toString(16).slice(1)}`}}return"#ff0000"},bd=pt.memo(({mode:t,thinkingLevel:f,tokens:x="0.0k",tokensTotal:M="0.0k",cachedTokens:T=0,promptTokens:b=0,chatId:s="NEW-SESSION",isMemoryEnabled:v=!0,apiTier:m="Free",aiProvider:A="Google",activeModel:k="",isProcessing:_=!1,lastChunkTime:S=0,theme:E="Dark",wps:O=0,showTPMEstimate:$=!1})=>{let F=Ze(E),H="",[K,xe]=Jn(0),[ie,J]=Jn(0),[Z,de]=Jn("MB"),[De,Ce]=Jn("green"),[Ue,ce]=Jn(0),Ae=Pr([]),Te=Pr(370),oe=Pr([]),Xe=Pr(S);Zn(()=>{Xe.current=S},[S]),Zn(()=>{if(!_){oe.current=[];return}if(O>0){let te=oe.current;te.push(O),te.length>3&&te.shift()}},[_,O,S]),Zn(()=>{if(!_){ce(0);return}let te=setInterval(()=>{let ne=Xe.current,ee=ne>0?Date.now()-ne:0;if(ne>0&&ee>=1e3)oe.current=[],ce(0);else if(ne>0&&ee>500){oe.current.length>0&&oe.current.shift();let ue=oe.current;if(ue.length>0){let pe=ue.reduce((be,Le)=>be+Le,0);ce(Math.round(pe/ue.length))}else ce(0)}else{let ue=oe.current;if(ue.length>0){let pe=ue.reduce((be,Le)=>be+Le,0);ce(Math.round(pe/ue.length))}else O>0&&ce(Math.round(O))}},750);return()=>clearInterval(te)},[_]),Zn(()=>{if(!_){Ae.current=[];return}if(S>0){let ee=Ae.current;(ee.length===0||ee[ee.length-1]!==S)&&(ee.push(S),ee.length>10&&ee.shift())}let te=()=>{if(!S){Ce("#00a564");return}let ee=Ae.current,ue=0;if(ee.length>1){let se=0;for(let me=1;me<ee.length;me++)se+=ee[me]-ee[me-1];ue=se/(ee.length-1)}let pe=Date.now()-S,Le=pe>=2500,lt=!Le&&ue>0?Math.min(pe,ue*3):pe,Je=Math.max(ue,lt),Be=Le?.4:.2;Te.current=Te.current*(1-Be)+Je*Be,Ce(pd(Te.current))};te();let ne=setInterval(te,100);return()=>clearInterval(ne)},[_,S]);let he=()=>{let te=process.memoryUsage(),ne=te.heapTotal/(1024*1024)>=1024,ee=ne?"GB":"MB",ue=(pe,be)=>{let Le=pe/(1048576*(be?1024:1));return be?parseFloat(Le.toFixed(2)):Math.round(Le)};de(ee),J(ue(te.heapTotal,ne)),xe(ue(te.heapUsed,ne))};return Zn(()=>{Rn=he,he();let te=setInterval(()=>{he()},6e4);return()=>{clearInterval(te),Rn===he&&(Rn=null)}},[]),pt.createElement(Xo,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},pt.createElement(Xo,null,pt.createElement(Xo,{marginRight:1},pt.createElement(xo,{color:F.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),pt.createElement(xo,{color:F.textMuted,dimColor:!0},"\u2503 "),pt.createElement(Xo,null,pt.createElement(xo,{color:F.text,italic:!0},Xi(process.cwd(),35)))),pt.createElement(Xo,null,_&&!$?pt.createElement(Xo,null,pt.createElement(xo,{color:De},"\u25CF ")):null,_&&$&&pt.createElement(pt.Fragment,null,pt.createElement(xo,{color:F.textMuted},Ue," tok/s"),pt.createElement(xo,{color:F.textMuted,dimColor:!0}," \u2503")),x>0&&pt.createElement(pt.Fragment,null,pt.createElement(Xo,{marginX:1},pt.createElement(xo,{color:F.text},ht(M)," tok",(()=>{let te=typeof b=="number"?b:0,ne=typeof T=="number"?T:0,ee=te>0?ne/te*100:0;return ee<1?null:pt.createElement(xo,{color:F.success||"green",dimColor:!0}," [",ee.toFixed(0),"% cached]")})())),pt.createElement(xo,{color:F.textMuted,dimColor:!0},"\u2503")),pt.createElement(Xo,{marginLeft:1},pt.createElement(xo,{color:F.textMuted,bold:!0},K," ",Z))))}),bl=bd;import Re,{useState as Nr,useMemo as Td,useEffect as Tl}from"react";import{Box as Wt,Text as Xt,useInput as wd}from"ink";import yd from"ink-select-input";var Md=({label:t,isSelected:f,theme:x="Dark"})=>{let M=Ze(x),T=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return Re.createElement(Wt,{marginTop:T?1:0,backgroundColor:f?M.highlightBg:void 0,paddingX:1,width:"100%"},Re.createElement(Xt,{color:f?M.text:M.textMuted,bold:f},f?"\u276F ":" ",t))},Sd=8;function bt({title:t,subtitle:f,items:x=[],onSelect:M,theme:T="Dark",searchable:b=!1,maxVisible:s=Sd}){let v=Ze(T),[m,A]=Nr(""),[k,_]=Nr(0),[S,E]=Nr("list"),O=Td(()=>{if(!b||!m.trim())return x;let ie=m.toLowerCase().trim();return x.filter(J=>J.label&&J.label.toLowerCase().includes(ie))},[x,m,b]);Tl(()=>{_(0)},[m]);let[$,F]=Nr(0);Tl(()=>{F(ie=>O.length<=s?0:k<ie?k:k>=ie+s?k-s+1:ie)},[k,O.length,s]),wd((ie,J)=>{if(b){if(J.upArrow){E("list"),_(Z=>O.length===0?0:Z>0?Z-1:O.length-1);return}if(J.downArrow){E("list"),_(Z=>O.length===0?0:Z<O.length-1?Z+1:0);return}if(J.return){O.length>0&&O[k]&&M(O[k]);return}if(J.escape){if(m)A(""),E("list"),_(0);else{let Z=x.find(de=>de.value==="Back"||de.label==="Back"||de.value==="Cancel"||de.label==="Cancel");Z&&M(Z)}return}if(J.backspace||J.delete){E("search"),A(Z=>Z.slice(0,-1));return}if(ie&&!J.ctrl&&!J.meta&&!J.tab){E("search"),A(Z=>Z+ie);return}}},{isActive:b});let H=O.length,K=$;H<=s?K=0:K=Math.max(0,Math.min($,H-s));let xe=O.slice(K,K+s);return b?Re.createElement(Wt,{flexDirection:"column",borderStyle:"round",borderColor:v.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},Re.createElement(Wt,{paddingX:1,paddingY:0,marginBottom:0,flexDirection:"row",justifyContent:"space-between"},t?Re.createElement(Xt,{color:v.text,bold:!0},typeof t=="string"?t.toUpperCase():t):Re.createElement(Wt,null),H>0&&Re.createElement(Xt,{color:v.textMuted},k+1,"/",H)),f&&Re.createElement(Wt,{paddingX:1,marginBottom:0},Re.createElement(Xt,{color:v.textMuted,italic:!0}," ",f)),Re.createElement(Wt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},Re.createElement(Xt,{color:S==="search"?v.primary||"cyan":v.textMuted,bold:S==="search"},"\u{1F50D} Search:"),Re.createElement(Xt,{color:v.text,bold:!0}," ",m),S==="search"?Re.createElement(Xt,{color:v.primary||"cyan"},"\u2588"):m?null:Re.createElement(Xt,{color:v.textMuted,italic:!0}," (type to search...)")),Re.createElement(Wt,{flexDirection:"column",width:"100%"},O.length===0?Re.createElement(Wt,{paddingX:1,marginY:0},Re.createElement(Xt,{color:v.warning||"yellow",italic:!0}," No matching items found")):xe.map((ie,J)=>{let Z=K+J,de=Z===k,De=ie.label==="Cancel"||ie.label==="Back"||ie.label.toLowerCase().includes("exit")||ie.label.toLowerCase().includes("back");return Re.createElement(Wt,{key:ie.value??ie.label??Z,marginTop:De?1:0,backgroundColor:de?v.highlightBg:void 0,paddingX:1,width:"100%"},Re.createElement(Xt,{color:de?v.text:v.textMuted,bold:de},de?"\u276F ":" ",ie.label))})),Re.createElement(Wt,{paddingX:1,marginTop:1},Re.createElement(Xt,{color:v.textMuted,italic:!0},S==="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)"))):Re.createElement(Wt,{flexDirection:"column",borderStyle:"round",borderColor:v.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&Re.createElement(Wt,{paddingX:1,paddingY:0,marginBottom:f?0:1,flexDirection:"row",justifyContent:"space-between"},Re.createElement(Xt,{color:v.text,bold:!0},typeof t=="string"?t.toUpperCase():t),x.length>s&&Re.createElement(Xt,{color:v.textMuted,italic:!0},x.length," options")),f&&Re.createElement(Wt,{paddingX:1,marginBottom:1},Re.createElement(Xt,{color:v.textMuted,italic:!0}," ",f)),Re.createElement(Wt,{flexDirection:"column",width:"100%"},Re.createElement(yd,{items:x,onSelect:M,limit:s,itemComponent:ie=>Re.createElement(Md,{...ie,theme:T}),indicatorComponent:()=>null})),Re.createElement(Wt,{paddingX:1,marginTop:1},Re.createElement(Xt,{color:v.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import B,{useState as Ot,useEffect as er}from"react";import{Box as Fe,Text as q,useInput as Cd}from"ink";import vd from"ink-text-input";import Ed from"v8";import wl from"os";var ho=[...Object.keys(Yi),"Mystery"],po=[{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"}],yl=t=>{let f=t.autoApproveCommands||"",x=t.autoDisallowCommands||"",M=t.alwaysAskCommands||"",T=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&f===""&&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"&&M==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,b=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&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"&&M==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,s=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&x===""&&M==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&t.autoApproveGit===!0;return T?"Strict":b?"Balanced":s?"Autonomous":t.sandboxPreset||"Custom"},Is=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function Fr({systemSettings:t,setSystemSettings:f,apiTier:x,setActiveView:M,setInputConfig:T,saveSettings:b,quotas:s,setMessages:v,aiProvider:m,initialSelectingTheme:A=!1,onCloseTheme:k=null,setProviderReturnView:_=null}){let S=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",E=ho.indexOf(S),[O,$]=Ot("categories"),[F,H]=Ot(0),[K,xe]=Ot(0),[ie,J]=Ot(null),[Z,de]=Ot(""),[De,Ce]=Ot(A),[Ue,ce]=Ot(E>=0?E:0),[Ae,Te]=Ot(t.theme||"Dark"),[oe,Xe]=Ot(!1),[he,te]=Ot(0),[ne,ee]=Ot(0),[ue,pe]=Ot(""),[be,Le]=Ot("list"),[lt,Je]=Ot({});er(()=>{(async()=>{let w=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],N={};for(let Ie of w)try{await Ho(Ie)&&(N[Ie]=!0)}catch{}Je(N)})()},[]);let Be=B.useMemo(()=>{let fe=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],N=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",Ie=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:N,value:"ENV",isHeader:!1}],We=s?.providerTiers?.[m]||x||"Free",et=_o(m,We)||[];et.length>0&&(Ie.push({label:`\u2500\u2500 ${m.toUpperCase()}${We!=="Free"?` (${We})`:""} \u2500\u2500`,isHeader:!0}),et.forEach(at=>{let Ye=typeof at=="string"?at:at.cmd||at.name||at.id||String(at);Ye&&!Ye.trim().startsWith("---")&&!Ye.startsWith(`
43
43
  ---`)&&Ie.push({label:Ye,value:Ye,isHeader:!1,provider:m})}));for(let at of fe)if(at!==m&&lt[at]){let Ye=s?.providerTiers?.[at]||"Free",Rt=_o(at,Ye)||[];Rt.length>0&&(Ie.push({label:`\u2500\u2500 ${at.toUpperCase()}${Ye!=="Free"?` (${Ye})`:""} \u2500\u2500`,isHeader:!0}),Rt.forEach(Ve=>{let At=typeof Ve=="string"?Ve:Ve.cmd||Ve.name||Ve.id||String(Ve);At&&!At.trim().startsWith("---")&&!At.startsWith(`
44
- ---`)&&Ie.push({label:At,value:At,isHeader:!1,provider:at})}))}return Ie},[m,x,s,lt]),se=B.useMemo(()=>{if(!ue.trim())return Be;let fe=ue.trim().toLowerCase(),w=[],N=null;for(let Ie of Be)Ie.isHeader?N=Ie:(Ie.label.toLowerCase().includes(fe)||Ie.value&&Ie.value.toLowerCase().includes(fe))&&(N&&!w.includes(N)&&w.push(N),w.push(Ie));return w},[Be,ue]);er(()=>{if(oe){let fe=se.findIndex(w=>!w.isHeader);te(fe>=0?fe:0),ee(0)}},[ue]),er(()=>{if(oe){if(se.length===0){te(0),ee(0);return}if(he>=se.length||se[he]?.isHeader){let fe=se.findIndex(w=>!w.isHeader);te(fe>=0?fe:0)}}},[se,oe]);let[me,ve]=Ot(0),[D,Ne]=Ot(0),[qe,vt]=Ot("MB"),[jt,Xr]=Ot(!1);er(()=>{let fe=!1;return import("./exec_command-AB4DNQYP.js").then(w=>{fe||Xr(!!w.isPtyAvailable)}).catch(()=>{}),()=>{fe=!0}},[]),er(()=>{let fe=Ed.getHeapStatistics().heap_size_limit,w=fe>=1024*1024*1024,N=w?"GB":"MB",Ie=w?1024*1024*1024:1024*1024;Ne(parseFloat((fe/Ie).toFixed(2))),vt(N);let We=()=>{let Rt=process.memoryUsage().rss/Ie,Ve=w?parseFloat(Rt.toFixed(2)):Math.round(Rt);ve(Ve)};We();let et=setInterval(()=>{We()},3e4);return()=>clearInterval(et)},[]);let Ko=fe=>{switch(fe){case"providers":{let N=[{label:"Current Provider",value:"aiProvider",status:m==="c_openai"?"Custom (OpenAI)":m}];return m==="Ollama"&&N.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(m==="c_openai"||m==="Custom (OpenAI)")&&(N.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),N.push({label:"API Key (if needed)",value:"customOpenAIKey",status:lt.c_openai?"Set":"None"})),N}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:yl(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:Is(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Is(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Is(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:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"}];default:return[]}},ln=po[F].id,Ge=Ko(ln);Cd((fe,w)=>{if(oe){if(w.tab){Le(N=>N==="search"?"list":"search");return}if(be==="search"){w.escape?Xe(!1):w.downArrow||w.return?Le("list"):w.backspace||w.delete?pe(N=>N.slice(0,-1)):fe&&!w.ctrl&&!w.meta&&fe.length===1&&pe(N=>N+fe);return}if(w.upArrow)te(N=>{if(se.length===0)return 0;let Ie=(N-1+se.length)%se.length,We=0;for(;se[Ie]?.isHeader&&We<se.length;)Ie=(Ie-1+se.length)%se.length,We++;return Ie});else if(w.downArrow)te(N=>{if(se.length===0)return 0;let Ie=(N+1)%se.length,We=0;for(;se[Ie]?.isHeader&&We<se.length;)Ie=(Ie+1)%se.length,We++;return Ie});else if(w.return){let N=se[he];N&&!N.isHeader&&(f(Ie=>{let We=N.value==="Default",et={...Ie,CustomSubAgent:!We,SubAgentModel:N.value,SubAgentProvider:We?"":N.provider||""};return b({systemSettings:et,apiTier:x,quotas:s}),et}),Xe(!1))}else w.escape?Xe(!1):fe&&!w.ctrl&&!w.meta&&fe.length===1&&(pe(N=>N+fe),Le("search"));return}if(De){if(w.upArrow){let N=(Ue-1+ho.length)%ho.length;ce(N)}else if(w.downArrow){let N=(Ue+1)%ho.length;ce(N)}else if(w.return){let N=ho[Ue];f(Ie=>{let We={...Ie,theme:N};return b({systemSettings:We,apiTier:x,quotas:s}),We}),k?k():Ce(!1)}else w.escape&&(k?k():Ce(!1));return}if(ie){w.escape&&J(null);return}if(O==="categories")w.upArrow?H(N=>(N-1+po.length)%po.length):w.downArrow?H(N=>(N+1)%po.length):w.return||w.rightArrow?po[F].id==="exit"?M("chat"):($("items"),xe(0)):w.escape&&M("chat");else if(O==="items"){if(w.upArrow)xe(N=>(N-1+Ge.length)%Ge.length);else if(w.downArrow)xe(N=>(N+1)%Ge.length);else if(w.leftArrow||w.escape)$("categories");else if(w.return){let N=Ge[K];Gt(N)}}});let Gt=fe=>{if(fe.value==="memory")f(w=>({...w,memory:!w.memory}));else if(fe.value==="sandboxPreset"){let w=yl(t),N=["Autonomous","Balanced","Strict"],We=(N.indexOf(w)+1)%N.length,et=N[We];f(at=>{let Ye={...at,sandboxPreset:et};return et==="Strict"?(Ye.autoExec=!1,Ye.allowExternalAccess=!1,Ye.networkAccess=!1,Ye.autoApproveCommands="",Ye.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",Ye.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",Ye.autoApproveGit=!1):et==="Balanced"?(Ye.autoExec=!0,Ye.allowExternalAccess=!1,Ye.networkAccess=!0,Ye.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",Ye.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",Ye.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",Ye.autoApproveGit=!1):et==="Autonomous"&&(Ye.autoExec=!0,Ye.allowExternalAccess=!0,Ye.networkAccess=!0,Ye.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",Ye.autoDisallowCommands="",Ye.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",Ye.autoApproveGit=!0),Ye})}else if(fe.value==="autoExec")t.autoExec?f(w=>({...w,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?M("doubleDanger"):M("autoExecDanger");else if(fe.value==="externalAccess")t.allowExternalAccess?f(w=>({...w,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?M("doubleDanger"):M("externalDanger");else if(fe.value==="networkAccess")f(w=>({...w,networkAccess:w.networkAccess===!1,sandboxPreset:"Custom"}));else if(fe.value==="alwaysAsk")J("alwaysAskCommands"),de(t.alwaysAskCommands||"");else if(fe.value==="autoApprove")J("autoApproveCommands"),de(t.autoApproveCommands||"");else if(fe.value==="autoApproveGit")f(w=>({...w,autoApproveGit:!w.autoApproveGit,sandboxPreset:"Custom"}));else if(fe.value==="customOpenAIBaseUrl")J("customOpenAIBaseUrl"),de(t.customOpenAIBaseUrl||"");else if(fe.value==="customOpenAIKey")J("customOpenAIKey"),de("");else if(fe.value==="ollamaEndpoint")f(w=>{let N=w.ollamaEndpoint==="Local"?"Cloud":"Local",Ie={...w,ollamaEndpoint:N};return b({systemSettings:Ie,apiTier:x,quotas:s}),Ie});else if(fe.value==="apiTier")M("apiTier");else if(fe.value==="aiProvider")_&&_("settings"),M("selectProvider");else if(fe.value==="advanceRollback")t.advanceRollback?f(w=>{let N={...w,advanceRollback:!1};return b({systemSettings:N,apiTier:x,quotas:s}),N}):M("advanceRollbackDanger");else if(fe.value==="autoDelete"){let w=["1d","7d","30d"],Ie=(w.indexOf(t.autoDeleteHistory||"30d")+1)%w.length;f(We=>({...We,autoDeleteHistory:w[Ie]}))}else if(fe.value==="autoUpdate")f(w=>({...w,autoUpdate:!w.autoUpdate}));else if(fe.value==="externalData")if(!t.useExternalData)T({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),M("input");else{let w={...t,useExternalData:!1};f(w),b({systemSettings:w,apiTier:x,quotas:s}),v(N=>[...N,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),M("chat")}else if(fe.value==="updateManager")M("updateManager");else if(fe.value==="parserDownload")M("parserDownload");else if(fe.value==="indentationTree")f(w=>{let N={...w,indentationTree:w.indentationTree===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="compressToolResults")f(w=>{let N={...w,compressToolResults:!w.compressToolResults};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="autoTruncateResults")f(w=>{let N={...w,autoTruncateResults:!w.autoTruncateResults};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="imageHistoryCU"){let w=["Low","Standard","Extended","Max"],Ie=(w.indexOf(t.imageHistoryCU||"Standard")+1)%w.length;f(We=>{let et={...We,imageHistoryCU:w[Ie]};return b({systemSettings:et,apiTier:x,quotas:s}),et})}else if(fe.value==="contextLength"){let w=["16k","32k","64k","128k","256k","512k","1M"],Ie=(w.indexOf(t.contextLength||"256k")+1)%w.length;f(We=>{let et={...We,contextLength:w[Ie]};return b({systemSettings:et,apiTier:x,quotas:s}),et})}else if(fe.value==="keepReasoningContext")f(w=>{let N={...w,keepReasoningContext:!w.keepReasoningContext};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="autoExcludeMetadata")f(w=>{let N={...w,autoExcludeMetadata:!w.autoExcludeMetadata};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="disableTodo")f(w=>{let N={...w,disableTodo:!w.disableTodo};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="subAgents")f(w=>{let N={...w,subAgents:w.subAgents===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="subAgentModel"){let w=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",N=se.findIndex(Ie=>Ie.value===w);te(N>=0?N:0),Xe(!0)}else if(fe.value==="preserveThinking")f(w=>{let N={...w,preserveThinking:w.preserveThinking===!1};return ml(N.preserveThinking),b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="loadingPhrases")f(w=>{let N={...w,loadingPhrases:w.loadingPhrases===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="progressiveRendering")f(w=>{let N={...w,progressiveRendering:!w.progressiveRendering};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="showTPMEstimate")f(w=>{let N={...w,showTPMEstimate:!w.showTPMEstimate};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="theme"){let w=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",N=ho.indexOf(w);ce(N>=0?N:0),Te(t.theme||"Dark"),Ce(!0)}},Se=Ze(t.theme);if(oe){let fe=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",w=15,N=ne;he<N?N=he:he>=N+w&&(N=he-w+1),N=Math.max(0,Math.min(N,Math.max(0,se.length-w))),N!==ne&&ee(N);let Ie=se.slice(N,N+w);return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Se.border,padding:1,width:"100%",minHeight:32},B.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:Se.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),se.length>0&&B.createElement(q,{color:"gray"},he+1,"/",se.length)),B.createElement(Fe,{borderStyle:"single",borderColor:be==="search"?Se.primary||"cyan":"gray",paddingX:1,marginBottom:1},B.createElement(q,{color:be==="search"?Se.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),B.createElement(q,{color:Se.text},ue),be==="search"&&B.createElement(q,{color:Se.primary||"cyan"},"\u2588"),!ue&&be!=="search"&&B.createElement(q,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),B.createElement(Fe,{flexDirection:"column",flexGrow:1,height:w},Ie.length>0?Ie.map((We,et)=>{let at=N+et;if(We.isHeader)return B.createElement(Fe,{key:`hdr-${at}`,paddingX:1},B.createElement(q,{color:"gray",bold:!0,underline:!0},We.label));let Ye=he===at&&be==="list",Rt=fe===We.value;return B.createElement(Fe,{key:`item-${We.value}-${at}`,paddingX:1,backgroundColor:Ye?Se.highlightBg:void 0},B.createElement(q,{color:Ye?Se.text:Se.textDim,bold:Ye},Ye?"\u276F ":" ",We.label,Rt?B.createElement(q,{color:Se.primary||"cyan",italic:!0}," (active)"):""))}):B.createElement(Fe,{paddingX:1},B.createElement(q,{color:"gray",italic:!0},'No models matching "',ue,'"'))),B.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),B.createElement(q,{color:be==="search"?Se.primary||"cyan":"gray",bold:!0},"[",be.toUpperCase()," MODE]")))}if(De){let fe=ho[Ue],w=Ze(fe);return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:w.border,padding:1,width:"100%",minHeight:32},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.text,bold:!0},"Choose your color scheme:")),B.createElement(Fe,{flexDirection:"row",width:"100%",flexGrow:1},B.createElement(Fe,{flexDirection:"column",width:"30%",paddingRight:1},ho.map((N,Ie)=>{let We=Ue===Ie,et=(t.theme||"Dark")===N,at=N==="Forest Sprite";return B.createElement(Fe,{key:N,paddingX:0},B.createElement(q,{color:We?w.text:w.textDim,bold:We},We?"> ":" ",N,at&&B.createElement(q,{color:We?w.success||"#52b788":"green",bold:!0}," \u2605"),et?B.createElement(q,{color:w.primary||"cyan",italic:!0}," (saved)"):""))})),B.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:w.borderMuted,paddingX:2,paddingY:1,backgroundColor:w.cardBg},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.secondary||"cyan",bold:!0},"> ","you: "),B.createElement(q,{color:w.text},"add a greeting function")),B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.success||"green"}," Here's the change:")),B.createElement(Fe,{flexDirection:"column",marginLeft:2,marginBottom:1},B.createElement(q,null,B.createElement(q,{color:w.textDim},"3 "),B.createElement(q,{color:w.textDim},' import "fmt"')),B.createElement(q,{color:w.textDim},"4"),B.createElement(Fe,{backgroundColor:w.diffRemovalBg},B.createElement(q,null,B.createElement(q,{color:w.diffRemovalNum||w.diffRemovalText},"5 "),B.createElement(q,{color:w.diffRemovalPrefix||w.diffRemovalText},"- "),B.createElement(q,{color:w.diffRemovalText},"func "),B.createElement(q,{color:w.diffRemovalHighlightColor||w.diffRemovalText,backgroundColor:w.diffRemovalHighlightBg,bold:!0},"main()"),B.createElement(q,{color:w.diffRemovalText}," {"))),B.createElement(Fe,{backgroundColor:w.diffAdditionBg},B.createElement(q,null,B.createElement(q,{color:w.diffAdditionNum||w.diffAdditionText},"5 "),B.createElement(q,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),B.createElement(q,{color:w.diffAdditionText},"func "),B.createElement(q,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg,bold:!0},"greet(name string)"),B.createElement(q,{color:w.diffAdditionText}," {"))),B.createElement(Fe,{backgroundColor:w.diffAdditionBg},B.createElement(q,null,B.createElement(q,{color:w.diffAdditionNum||w.diffAdditionText},"6 "),B.createElement(q,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),B.createElement(q,{color:w.diffAdditionText}," "),B.createElement(q,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),B.createElement(q,{color:w.textDim},"7 }")),B.createElement(Fe,{flexDirection:"column",marginTop:1,marginBottom:1},B.createElement(q,{color:w.textDim},"\u25BE Thought Process"),B.createElement(q,{color:w.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),B.createElement(Fe,{flexDirection:"column"},B.createElement(q,null,B.createElement(q,{color:w.warning||"yellow"},"\u2699 tool: "),B.createElement(q,{color:w.text},"write_file main.go")),B.createElement(q,null,B.createElement(q,{color:w.accent||"magenta"},"\u29BF task: "),B.createElement(q,{color:w.text},"Implementing greeting")),B.createElement(q,null,B.createElement(q,{color:w.danger||"red"},"X error: "),B.createElement(q,{color:w.text},"compilation failed")),B.createElement(q,null,B.createElement(q,{color:w.warning||"yellow"},"\u26A0 warning: "),B.createElement(q,{color:w.text},"deprecation warning")),B.createElement(q,null,B.createElement(q,{color:w.info||"blue"},"\u2192 link: "),B.createElement(q,{color:w.info||"blue",underline:!0},"file:///path/to/main.go")),B.createElement(q,null,B.createElement(q,{color:w.accent||"magenta"},"\u2605 accent: "),B.createElement(q,{color:w.text},"highlighted text")),B.createElement(q,{color:w.textDim},"\xB7 dim: press Enter to continue")))),B.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),B.createElement(q,{color:"gray"},"Previewing: ",ho[Ue],ho[Ue]==="Forest Sprite"?" \u2605":"")))}return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Se.border,padding:0,width:"100%",minHeight:32},B.createElement(Fe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Se.borderMuted,width:"100%"},B.createElement(q,{color:Se.text,bold:!0},"SYSTEM CONFIGURATION")),B.createElement(Fe,{flexDirection:"row",width:"100%",minHeight:26},B.createElement(Fe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:O==="categories"?Se.border:Se.borderMuted,padding:1,paddingY:0},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:O==="categories"?Se.text:Se.textDim,bold:!0,underline:!0},"CATEGORIES")),po.map((fe,w)=>{let N=F===w,Ie=fe.id==="exit";return B.createElement(Fe,{key:fe.id,marginTop:Ie?15:0,backgroundColor:N?O==="categories"?Se.highlightBg:Se.cardBg:void 0,paddingX:1},B.createElement(q,{color:N&&O==="categories"?Se.text:Se.textDim,bold:N},N?"\u276F ":" ",fe.label))})),B.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:O==="items"?Se.border:Se.borderMuted,paddingX:1,marginLeft:1,paddingY:0},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:O==="items"?Se.text:Se.textDim,bold:!0,underline:!0},po[F].label.toUpperCase().includes("EXIT")?"Runtime Information":`${po[F].label} Settings`)),Ge.length>0?(()=>{let fe=null,w=[],N=Ve=>(Ve||"").split(",").map(At=>At.trim().toLowerCase()).filter(Boolean),Ie=N(t.autoApproveCommands),We=N(t.autoDisallowCommands),et=N(t.alwaysAskCommands),at=[...Ie,...We,...et],Ye=new Set(at),Rt=ln==="security"&&at.length!==Ye.size;return Ge.forEach((Ve,At)=>{let Nt=O==="items"&&K===At,Gr=Ve.label.length,qo=Math.max(2,38-Gr),Yr=".".repeat(qo),mt=Ee=>ln==="security"?(Ee.value==="autoExec"||Ee.value==="externalAccess")&&Ee.status==="ON"?Se.statusOn:Se.statusOff:Ee.status?.startsWith("\u2713")?Se.statusOn:Ee.status?.startsWith("\u26A0")?Se.statusOff:Ee.status==="ON"?Se.statusOn:Ee.status==="OFF"?Se.statusOff:Se.text;Ve.section&&Ve.section!==fe&&(fe=Ve.section,w.push(B.createElement(Fe,{key:`sec-hdr-${Ve.section}`,marginTop:w.length>0?1:0,marginBottom:0,paddingX:1},B.createElement(q,{color:"gray",bold:!0,underline:!0},Ve.section.toUpperCase()))));let z=Nt&&ie&&(ie==="alwaysAskCommands"&&Ve.value==="alwaysAsk"||ie==="autoApproveCommands"&&Ve.value==="autoApprove"||ie==="autoDisallowCommands"&&Ve.value==="autoDisallow"||ie==="customOpenAIBaseUrl"&&Ve.value==="customOpenAIBaseUrl"||ie==="customOpenAIKey"&&Ve.value==="customOpenAIKey"),it=Ve.value==="alwaysAsk"||Ve.value==="autoApprove"||Ve.value==="autoDisallow",Mo=Ve.value==="parserDownload";w.push(B.createElement(Fe,{key:Ve.value,flexDirection:"column"},B.createElement(Fe,{backgroundColor:Nt&&!z?Se.highlightBg:void 0,paddingX:2},B.createElement(q,{color:Nt?Se.text:Se.textDim,bold:Nt},Nt?"\u276F ":" ",Ve.label),!it&&!Mo&&B.createElement(B.Fragment,null,B.createElement(q,{color:"gray"},Yr),B.createElement(q,{color:mt(Ve),bold:!0},Ve.value==="aiProvider"?Ve.status:`[ ${Ve.status} ]`))),it&&!z&&Ve.status!=="None"&&B.createElement(Fe,{paddingX:4,marginBottom:1},B.createElement(q,{color:"gray"},"\u21B3 ",Ve.status)),z&&B.createElement(Fe,{flexDirection:"column",marginLeft:4,marginBottom:1},B.createElement(Fe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},B.createElement(q,{color:"gray",bold:!0},"> "," "),B.createElement(vd,{value:Z,onChange:de,onSubmit:async Ee=>{if(ie==="customOpenAIBaseUrl"){let Lt=Ee.trim().replace(/\/+$/,""),Kt={...t,customOpenAIBaseUrl:Lt};f(Kt),b({systemSettings:Kt,apiTier:x,quotas:s})}else if(ie==="customOpenAIKey"){let{saveProviderAPIKey:Lt}=await import("./secrets-UNXNDOLK.js");await Lt("c_openai",Ee.trim()),Je(Kt=>({...Kt,c_openai:!!Ee.trim()}))}else{let Lt={...t,[ie]:Ee.trim(),sandboxPreset:"Custom"};f(Lt),b({systemSettings:Lt,apiTier:x,quotas:s})}J(null)}})),B.createElement(q,{color:"gray",italic:!0}," ",ie==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel":ie==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),Rt&&w.push(B.createElement(Fe,{key:"conflict-warning",marginTop:1,paddingX:1},B.createElement(q,{color:Se.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),w})():B.createElement(Fe,{paddingX:1,flexDirection:"column",width:"100%"},ln==="exit"?B.createElement(B.Fragment,null,B.createElement(Fe,{flexDirection:"column",marginBottom:1},B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"OS"," "),B.createElement(q,{color:"gray"},"..................... "),B.createElement(q,{color:Se.text},process.env.OS||process.platform||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Computer Name"," "),B.createElement(q,{color:"gray"},".......... "),B.createElement(q,{color:Se.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Processor Count"," "),B.createElement(q,{color:"gray"},"........ "),B.createElement(q,{color:Se.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Node.js Version"," "),B.createElement(q,{color:"gray"},"........ "),B.createElement(q,{color:Se.text},"v",process.versions.node)),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"V8 Version"," "),B.createElement(q,{color:"gray"},"...... ...... "),B.createElement(q,{color:Se.text},"v",process.versions.v8)),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Data Directory"," "),B.createElement(q,{color:"gray"},"......... "),lo===fo?"":B.createElement(q,{color:Se.text},lo.replaceAll(wl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),B.createElement(q,{color:Se.text},fo.replaceAll(wl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Viewport"," "),B.createElement(q,{color:"gray"},"............... "),B.createElement(q,{color:Se.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),B.createElement(Fe,{flexDirection:"row",marginBottom:0},B.createElement(q,{color:Se.textDim},"Memory Load"," "),B.createElement(q,{color:"gray"},"............ "),B.createElement(q,{color:Se.text},me,"/",D," ",qe))),B.createElement(Fe,{key:"pty-notice",paddingX:0,marginTop:0},B.createElement(q,{color:jt?Se.statusOn:Se.warning},jt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):B.createElement(q,{color:"gray",italic:!0},po[F].desc)))),B.createElement(Fe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},O==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),O==="categories"&&B.createElement(q,{color:"gray"},po[F].desc)))}import to,{useState as Ds,useEffect as Bd}from"react";import{Box as kn,Text as tr}from"ink";import Id from"ink-text-input";function ks({initialData:t,onSave:f,onCancel:x,theme:M="Dark"}){let T=Ze(M),[b,s]=Ds(0),[v,m]=Ds(""),[A,k]=Ds(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),_=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],S=_[b];Bd(()=>{let F=_[b].key;m((A[F]||"").slice(0,_[b].maxLength))},[b,A]);let E=F=>{F.length>S.maxLength?m(F.slice(0,S.maxLength)):m(F)},O=F=>{if(F.trim().toLowerCase()==="/cancel"){x();return}let H=S.key,K={...A,[H]:F.trim().slice(0,S.maxLength)};k(K),m(""),b<_.length-1?s(b+1):f(K)},$=v.length>=S.maxLength;return to.createElement(kn,{borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},to.createElement(kn,{paddingX:1,marginBottom:1},to.createElement(tr,{color:T.text,bold:!0},"USER PROFILE CONFIGURATION")),to.createElement(kn,{paddingX:1,flexDirection:"column"},to.createElement(kn,null,to.createElement(tr,{color:T.text,bold:!0},S.label),to.createElement(Id,{value:v,onChange:E,onSubmit:O})),to.createElement(kn,{marginTop:1,justifyContent:"space-between"},to.createElement(tr,{color:T.textMuted,italic:!0},"Step ",b+1," of ",_.length),to.createElement(tr,{color:$?T.warning||"yellow":T.textMuted},"[",v.length,"/",S.maxLength,"]"))),to.createElement(kn,{paddingX:1,marginTop:1},to.createElement(tr,{color:T.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import Mt,{useState as As}from"react";import{Box as oo,Text as Go,useInput as Dd}from"ink";import kd from"ink-text-input";var Ad=({question:t,options:f,onResolve:x,theme:M="Dark"})=>{let T=Ze(M),[b,s]=As(!1),[v,m]=As(""),[A,k]=As(0),_=!1,S=[],E=Array.isArray(f)&&f.length>0,O=t==="Agent has been running for a long time. Do you want to continue execution?";try{O&&E?S=[...f]:S=[...E?f:[],E?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{_=!0}Dd((F,H)=>{if(!b&&((H.leftArrow||H.upArrow)&&k(K=>Math.max(0,K-1)),(H.rightArrow||H.downArrow)&&k(K=>Math.min(S.length-1,K+1)),H.return)){let K=S[A];K?.id==="CUSTOM"?s(!0):x(_?"Selected Nothing":K.label)}});let $=rt(2);return b?Mt.createElement(oo,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:T.codeBg,width:"100%"},Mt.createElement(oo,{paddingX:1},Mt.createElement(Go,{color:T.text,bold:!0},"SUGGEST SOMETHING")),Mt.createElement(oo,{marginTop:1,paddingX:1},Mt.createElement(Go,{italic:!0,color:T.textMuted},"Replying to: ",t)),Mt.createElement(oo,{marginTop:1,paddingX:1,flexDirection:"row"},Mt.createElement(kd,{value:v,onChange:m,onSubmit:()=>x(v)})),Mt.createElement(oo,{marginTop:1,paddingX:1,marginBottom:1},Mt.createElement(Go,{color:T.textMuted,italic:!0},"(Press Enter to send)"))):Mt.createElement(oo,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},Mt.createElement(oo,{paddingX:1,marginBottom:1},Mt.createElement(Go,{color:"yellow",bold:!0},O?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),Mt.createElement(oo,{paddingX:1,marginBottom:1},Mt.createElement(Go,{color:T.text},t)),Mt.createElement(oo,{flexDirection:"column",width:"100%"},S.map((F,H)=>{let K=H===A;return Mt.createElement(oo,{key:F.id,flexDirection:"column",width:"100%",backgroundColor:K?T.highlightBg:void 0,paddingX:1,marginBottom:H===S.length-1?0:1},Mt.createElement(Go,{color:K?T.text:T.textMuted,bold:K},K?"\u276F ":" ",F.label),F.description&&Mt.createElement(oo,{marginLeft:4},Mt.createElement(Go,{color:T.textMuted,italic:!0},F.description)))})),Mt.createElement(oo,{paddingX:1,marginTop:1,marginBottom:1},Mt.createElement(Go,{color:T.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},Ml=Ad;import Rd from"gradient-string";import Pt,{useState as Ls,useEffect as Ld}from"react";import{Box as bo,Text as Yo,useInput as Od}from"ink";function Os({onSelect:t,onDelete:f,onClose:x,theme:M="Dark"}){let T=Ze(M),[b,s]=Ls({}),[v,m]=Ls([]),[A,k]=Ls(0);Ld(()=>{(async()=>{let F=await Wo();s(F),m(Object.keys(F).sort((H,K)=>(F[K].updatedAt||0)-(F[H].updatedAt||0)))})()},[]),Od(($,F)=>{if(F.escape&&x(),F.upArrow&&k(H=>Math.max(0,H-1)),F.downArrow&&k(H=>Math.min(v.length-1,H+1)),F.return&&v[A]&&t(v[A]),$==="x"&&v[A]){let H=v[A];f(H).then(K=>{let xe=K||{};s(xe);let ie=Object.keys(xe).sort((J,Z)=>(xe[Z]?.updatedAt||0)-(xe[J]?.updatedAt||0));m(ie),k(J=>Math.max(0,Math.min(ie.length-1,J)))})}});let _=rt(2),S=15,E=0;if(v.length>S){let $=Math.floor(S/2);E=A-$,E<0?E=0:E+S>v.length&&(E=v.length-S)}let O=v.slice(E,E+S);return Pt.createElement(bo,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Pt.createElement(bo,{paddingX:1,marginBottom:1},Pt.createElement(Yo,{color:T.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),v.length===0?Pt.createElement(bo,{paddingX:2,paddingY:1},Pt.createElement(Yo,{italic:!0,color:T.textMuted},"No saved chats found.")):Pt.createElement(bo,{flexDirection:"column",width:"100%"},E>0&&Pt.createElement(bo,{paddingX:2,marginBottom:1},Pt.createElement(Yo,{color:T.textMuted},"\u25B2 (+",E," more chats above)")),O.map(($,F)=>{let H=b[$],xe=E+F===A,ie=Pd(H?.updatedAt);return Pt.createElement(bo,{key:$,paddingX:1,backgroundColor:xe?T.highlightBg:void 0,width:"100%"},Pt.createElement(bo,{flexGrow:1},Pt.createElement(Yo,{color:xe?T.text:T.textMuted,bold:xe},xe?"\u276F ":" ",(()=>{let J=Z=>(Z||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return H?.name&&!H.name.startsWith("Session")?J(H.name):H?.prompt?J(H.prompt):J(H?.name)||$})(),Pt.createElement(Yo,{color:T.textMuted}," [",ie," \u2022 ",$,"]"))),xe&&Pt.createElement(bo,{flexShrink:0},Pt.createElement(Yo,{color:T.danger,bold:!0},"[X] DELETE ")))}),E+S<v.length&&Pt.createElement(bo,{paddingX:2,marginTop:1},Pt.createElement(Yo,{color:T.textMuted},"\u25BC (+",v.length-(E+S)," more chats below)"))),Pt.createElement(bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Pt.createElement(Yo,{color:T.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Pd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let x=v=>String(v).padStart(2,"0"),M=x(f.getMonth()+1),T=x(f.getDate()),b=x(f.getHours()),s=x(f.getMinutes());return`${M}-${T} ${b}:${s}`}import St,{useState as Ps,useEffect as Nd}from"react";import{Box as To,Text as uo,useInput as Fd,useStdout as Ud}from"ink";function Ns({onClose:t,theme:f="Dark"}){let x=Ze(f),{stdout:M}=Ud(),T=M?.columns||80,[b,s]=Ps([]),[v,m]=Ps(0),[A,k]=Ps(!0),_=()=>{let J=Tr(Yn,[]);s(J);try{let de=wr(tn,{}).systemSettings?.memory!==!1;k(de)}catch{k(!0)}};Nd(()=>{_()},[]),Fd((J,Z)=>{if(Z.escape&&t(),Z.upArrow&&m(de=>Math.max(0,de-1)),Z.downArrow&&m(de=>Math.min(b.length-1,de+1)),J==="x"&&b.length>0){let de=b[v].id,De=b.filter(Ce=>Ce.id!==de);Bi(Yn,De),s(De),v>=De.length&&De.length>0&&m(De.length-1)}});let S=(J,Z,de)=>{if(!J)return"";let De=J.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Ue=`${de?"\u276F ":" "}${Z+1}. `.length,ce=de?22:2;return De.split(`
44
+ ---`)&&Ie.push({label:At,value:At,isHeader:!1,provider:at})}))}return Ie},[m,x,s,lt]),se=B.useMemo(()=>{if(!ue.trim())return Be;let fe=ue.trim().toLowerCase(),w=[],N=null;for(let Ie of Be)Ie.isHeader?N=Ie:(Ie.label.toLowerCase().includes(fe)||Ie.value&&Ie.value.toLowerCase().includes(fe))&&(N&&!w.includes(N)&&w.push(N),w.push(Ie));return w},[Be,ue]);er(()=>{if(oe){let fe=se.findIndex(w=>!w.isHeader);te(fe>=0?fe:0),ee(0)}},[ue]),er(()=>{if(oe){if(se.length===0){te(0),ee(0);return}if(he>=se.length||se[he]?.isHeader){let fe=se.findIndex(w=>!w.isHeader);te(fe>=0?fe:0)}}},[se,oe]);let[me,ve]=Ot(0),[D,Ne]=Ot(0),[qe,vt]=Ot("MB"),[jt,Xr]=Ot(!1);er(()=>{let fe=!1;return import("./exec_command-AB4DNQYP.js").then(w=>{fe||Xr(!!w.isPtyAvailable)}).catch(()=>{}),()=>{fe=!0}},[]),er(()=>{let fe=Ed.getHeapStatistics().heap_size_limit,w=fe>=1024*1024*1024,N=w?"GB":"MB",Ie=w?1024*1024*1024:1024*1024;Ne(parseFloat((fe/Ie).toFixed(2))),vt(N);let We=()=>{let Rt=process.memoryUsage().rss/Ie,Ve=w?parseFloat(Rt.toFixed(2)):Math.round(Rt);ve(Ve)};We();let et=setInterval(()=>{We()},3e4);return()=>clearInterval(et)},[]);let Ko=fe=>{switch(fe){case"providers":{let N=[{label:"Current Provider",value:"aiProvider",status:m==="c_openai"?"Custom (OpenAI)":m}];return m==="Ollama"&&N.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(m==="c_openai"||m==="Custom (OpenAI)")&&(N.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),N.push({label:"API Key (if needed)",value:"customOpenAIKey",status:lt.c_openai?"Set":"None"})),N}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:yl(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:Is(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Is(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Is(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:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"}];default:return[]}},ln=po[F].id,Ge=Ko(ln);Cd((fe,w)=>{if(oe){if(w.tab){Le(N=>N==="search"?"list":"search");return}if(be==="search"){w.escape?Xe(!1):w.downArrow||w.return?Le("list"):w.backspace||w.delete?pe(N=>N.slice(0,-1)):fe&&!w.ctrl&&!w.meta&&fe.length===1&&pe(N=>N+fe);return}if(w.upArrow)te(N=>{if(se.length===0)return 0;let Ie=(N-1+se.length)%se.length,We=0;for(;se[Ie]?.isHeader&&We<se.length;)Ie=(Ie-1+se.length)%se.length,We++;return Ie});else if(w.downArrow)te(N=>{if(se.length===0)return 0;let Ie=(N+1)%se.length,We=0;for(;se[Ie]?.isHeader&&We<se.length;)Ie=(Ie+1)%se.length,We++;return Ie});else if(w.return){let N=se[he];N&&!N.isHeader&&(f(Ie=>{let We=N.value==="Default",et={...Ie,CustomSubAgent:!We,SubAgentModel:N.value,SubAgentProvider:We?"":N.provider||""};return b({systemSettings:et,apiTier:x,quotas:s}),et}),Xe(!1))}else w.escape?Xe(!1):fe&&!w.ctrl&&!w.meta&&fe.length===1&&(pe(N=>N+fe),Le("search"));return}if(De){if(w.upArrow){let N=(Ue-1+ho.length)%ho.length;ce(N)}else if(w.downArrow){let N=(Ue+1)%ho.length;ce(N)}else if(w.return){let N=ho[Ue];f(Ie=>{let We={...Ie,theme:N};return b({systemSettings:We,apiTier:x,quotas:s}),We}),k?k():Ce(!1)}else w.escape&&(k?k():Ce(!1));return}if(ie){w.escape&&J(null);return}if(O==="categories")w.upArrow?H(N=>(N-1+po.length)%po.length):w.downArrow?H(N=>(N+1)%po.length):w.return||w.rightArrow?po[F].id==="exit"?M("chat"):($("items"),xe(0)):w.escape&&M("chat");else if(O==="items"){if(w.upArrow)xe(N=>(N-1+Ge.length)%Ge.length);else if(w.downArrow)xe(N=>(N+1)%Ge.length);else if(w.leftArrow||w.escape)$("categories");else if(w.return){let N=Ge[K];Gt(N)}}});let Gt=fe=>{if(fe.value==="memory")f(w=>({...w,memory:!w.memory}));else if(fe.value==="sandboxPreset"){let w=yl(t),N=["Autonomous","Balanced","Strict"],We=(N.indexOf(w)+1)%N.length,et=N[We];f(at=>{let Ye={...at,sandboxPreset:et};return et==="Strict"?(Ye.autoExec=!1,Ye.allowExternalAccess=!1,Ye.networkAccess=!1,Ye.autoApproveCommands="",Ye.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",Ye.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",Ye.autoApproveGit=!1):et==="Balanced"?(Ye.autoExec=!0,Ye.allowExternalAccess=!1,Ye.networkAccess=!0,Ye.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",Ye.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",Ye.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",Ye.autoApproveGit=!1):et==="Autonomous"&&(Ye.autoExec=!0,Ye.allowExternalAccess=!0,Ye.networkAccess=!0,Ye.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",Ye.autoDisallowCommands="",Ye.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",Ye.autoApproveGit=!0),Ye})}else if(fe.value==="autoExec")t.autoExec?f(w=>({...w,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?M("doubleDanger"):M("autoExecDanger");else if(fe.value==="externalAccess")t.allowExternalAccess?f(w=>({...w,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?M("doubleDanger"):M("externalDanger");else if(fe.value==="networkAccess")f(w=>({...w,networkAccess:w.networkAccess===!1,sandboxPreset:"Custom"}));else if(fe.value==="alwaysAsk")J("alwaysAskCommands"),de(t.alwaysAskCommands||"");else if(fe.value==="autoApprove")J("autoApproveCommands"),de(t.autoApproveCommands||"");else if(fe.value==="autoApproveGit")f(w=>({...w,autoApproveGit:!w.autoApproveGit,sandboxPreset:"Custom"}));else if(fe.value==="customOpenAIBaseUrl")J("customOpenAIBaseUrl"),de(t.customOpenAIBaseUrl||"");else if(fe.value==="customOpenAIKey")J("customOpenAIKey"),de("");else if(fe.value==="ollamaEndpoint")f(w=>{let N=w.ollamaEndpoint==="Local"?"Cloud":"Local",Ie={...w,ollamaEndpoint:N};return b({systemSettings:Ie,apiTier:x,quotas:s}),Ie});else if(fe.value==="apiTier")M("apiTier");else if(fe.value==="aiProvider")_&&_("settings"),M("selectProvider");else if(fe.value==="advanceRollback")t.advanceRollback?f(w=>{let N={...w,advanceRollback:!1};return b({systemSettings:N,apiTier:x,quotas:s}),N}):M("advanceRollbackDanger");else if(fe.value==="autoDelete"){let w=["1d","7d","30d"],Ie=(w.indexOf(t.autoDeleteHistory||"30d")+1)%w.length;f(We=>({...We,autoDeleteHistory:w[Ie]}))}else if(fe.value==="autoUpdate")f(w=>({...w,autoUpdate:!w.autoUpdate}));else if(fe.value==="externalData")if(!t.useExternalData)T({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),M("input");else{let w={...t,useExternalData:!1};f(w),b({systemSettings:w,apiTier:x,quotas:s}),v(N=>[...N,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),M("chat")}else if(fe.value==="updateManager")M("updateManager");else if(fe.value==="parserDownload")M("parserDownload");else if(fe.value==="indentationTree")f(w=>{let N={...w,indentationTree:w.indentationTree===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="compressToolResults")f(w=>{let N={...w,compressToolResults:!w.compressToolResults};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="autoTruncateResults")f(w=>{let N={...w,autoTruncateResults:!w.autoTruncateResults};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="imageHistoryCU"){let w=["Low","Standard","Extended","Max"],Ie=(w.indexOf(t.imageHistoryCU||"Standard")+1)%w.length;f(We=>{let et={...We,imageHistoryCU:w[Ie]};return b({systemSettings:et,apiTier:x,quotas:s}),et})}else if(fe.value==="contextLength"){let w=["16k","32k","64k","128k","256k","512k","1M"],Ie=(w.indexOf(t.contextLength||"256k")+1)%w.length;f(We=>{let et={...We,contextLength:w[Ie]};return b({systemSettings:et,apiTier:x,quotas:s}),et})}else if(fe.value==="keepReasoningContext")f(w=>{let N={...w,keepReasoningContext:!w.keepReasoningContext};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="autoExcludeMetadata")f(w=>{let N={...w,autoExcludeMetadata:!w.autoExcludeMetadata};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="disableTodo")f(w=>{let N={...w,disableTodo:!w.disableTodo};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="subAgents")f(w=>{let N={...w,subAgents:w.subAgents===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="subAgentModel"){let w=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",N=se.findIndex(Ie=>Ie.value===w);te(N>=0?N:0),Xe(!0)}else if(fe.value==="preserveThinking")f(w=>{let N={...w,preserveThinking:w.preserveThinking===!1};return ml(N.preserveThinking),b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="loadingPhrases")f(w=>{let N={...w,loadingPhrases:w.loadingPhrases===!1};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="progressiveRendering")f(w=>{let N={...w,progressiveRendering:!w.progressiveRendering};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="showTPMEstimate")f(w=>{let N={...w,showTPMEstimate:!w.showTPMEstimate};return b({systemSettings:N,apiTier:x,quotas:s}),N});else if(fe.value==="theme"){let w=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",N=ho.indexOf(w);ce(N>=0?N:0),Te(t.theme||"Dark"),Ce(!0)}},Se=Ze(t.theme);if(oe){let fe=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",w=15,N=ne;he<N?N=he:he>=N+w&&(N=he-w+1),N=Math.max(0,Math.min(N,Math.max(0,se.length-w))),N!==ne&&ee(N);let Ie=se.slice(N,N+w);return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Se.border,padding:1,width:"100%",minHeight:32},B.createElement(Fe,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:Se.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),se.length>0&&B.createElement(q,{color:"gray"},he+1,"/",se.length)),B.createElement(Fe,{borderStyle:"single",borderColor:be==="search"?Se.primary||"cyan":"gray",paddingX:1,marginBottom:1},B.createElement(q,{color:be==="search"?Se.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),B.createElement(q,{color:Se.text},ue),be==="search"&&B.createElement(q,{color:Se.primary||"cyan"},"\u2588"),!ue&&be!=="search"&&B.createElement(q,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),B.createElement(Fe,{flexDirection:"column",flexGrow:1,height:w},Ie.length>0?Ie.map((We,et)=>{let at=N+et;if(We.isHeader)return B.createElement(Fe,{key:`hdr-${at}`,paddingX:1},B.createElement(q,{color:"gray",bold:!0,underline:!0},We.label));let Ye=he===at&&be==="list",Rt=fe===We.value;return B.createElement(Fe,{key:`item-${We.value}-${at}`,paddingX:1,backgroundColor:Ye?Se.highlightBg:void 0},B.createElement(q,{color:Ye?Se.text:Se.textDim,bold:Ye},Ye?"\u276F ":" ",We.label,Rt?B.createElement(q,{color:Se.primary||"cyan",italic:!0}," (active)"):""))}):B.createElement(Fe,{paddingX:1},B.createElement(q,{color:"gray",italic:!0},'No models matching "',ue,'"'))),B.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),B.createElement(q,{color:be==="search"?Se.primary||"cyan":"gray",bold:!0},"[",be.toUpperCase()," MODE]")))}if(De){let fe=ho[Ue],w=Ze(fe);return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:w.border,padding:1,width:"100%",minHeight:32},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.text,bold:!0},"Choose your color scheme:")),B.createElement(Fe,{flexDirection:"row",width:"100%",flexGrow:1},B.createElement(Fe,{flexDirection:"column",width:"30%",paddingRight:1},ho.map((N,Ie)=>{let We=Ue===Ie,et=(t.theme||"Dark")===N,at=N==="Forest Sprite";return B.createElement(Fe,{key:N,paddingX:0},B.createElement(q,{color:We?w.text:w.textDim,bold:We},We?"> ":" ",N,at&&B.createElement(q,{color:We?w.success||"#52b788":"green",bold:!0}," \u2605"),et?B.createElement(q,{color:w.primary||"cyan",italic:!0}," (saved)"):""))})),B.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:w.borderMuted,paddingX:2,paddingY:1,backgroundColor:w.cardBg},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.secondary||"cyan",bold:!0},"> ","you: "),B.createElement(q,{color:w.text},"add a greeting function")),B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:w.success||"green"}," Here's the change:")),B.createElement(Fe,{flexDirection:"column",marginLeft:2,marginBottom:1},B.createElement(q,null,B.createElement(q,{color:w.textDim},"3 "),B.createElement(q,{color:w.textDim},' import "fmt"')),B.createElement(q,{color:w.textDim},"4"),B.createElement(Fe,{backgroundColor:w.diffRemovalBg},B.createElement(q,null,B.createElement(q,{color:w.diffRemovalNum||w.diffRemovalText},"5 "),B.createElement(q,{color:w.diffRemovalPrefix||w.diffRemovalText},"- "),B.createElement(q,{color:w.diffRemovalText},"func "),B.createElement(q,{color:w.diffRemovalHighlightColor||w.diffRemovalText,backgroundColor:w.diffRemovalHighlightBg,bold:!0},"main()"),B.createElement(q,{color:w.diffRemovalText}," {"))),B.createElement(Fe,{backgroundColor:w.diffAdditionBg},B.createElement(q,null,B.createElement(q,{color:w.diffAdditionNum||w.diffAdditionText},"5 "),B.createElement(q,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),B.createElement(q,{color:w.diffAdditionText},"func "),B.createElement(q,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg,bold:!0},"greet(name string)"),B.createElement(q,{color:w.diffAdditionText}," {"))),B.createElement(Fe,{backgroundColor:w.diffAdditionBg},B.createElement(q,null,B.createElement(q,{color:w.diffAdditionNum||w.diffAdditionText},"6 "),B.createElement(q,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),B.createElement(q,{color:w.diffAdditionText}," "),B.createElement(q,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),B.createElement(q,{color:w.textDim},"7 }")),B.createElement(Fe,{flexDirection:"column",marginTop:1,marginBottom:1},B.createElement(q,{color:w.textDim},"\u25BE Thought Process"),B.createElement(q,{color:w.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),B.createElement(Fe,{flexDirection:"column"},B.createElement(q,null,B.createElement(q,{color:w.warning||"yellow"},"\u2699 tool: "),B.createElement(q,{color:w.text},"write_file main.go")),B.createElement(q,null,B.createElement(q,{color:w.accent||"magenta"},"\u29BF task: "),B.createElement(q,{color:w.text},"Implementing greeting")),B.createElement(q,null,B.createElement(q,{color:w.danger||"red"},"X error: "),B.createElement(q,{color:w.text},"compilation failed")),B.createElement(q,null,B.createElement(q,{color:w.warning||"yellow"},"\u26A0 warning: "),B.createElement(q,{color:w.text},"deprecation warning")),B.createElement(q,null,B.createElement(q,{color:w.info||"blue"},"\u2192 link: "),B.createElement(q,{color:w.info||"blue",underline:!0},"file:///path/to/main.go")),B.createElement(q,null,B.createElement(q,{color:w.accent||"magenta"},"\u2605 accent: "),B.createElement(q,{color:w.text},"highlighted text")),B.createElement(q,{color:w.textDim},"\xB7 dim: press Enter to continue")))),B.createElement(Fe,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),B.createElement(q,{color:"gray"},"Previewing: ",ho[Ue],ho[Ue]==="Forest Sprite"?" \u2605":"")))}return B.createElement(Fe,{flexDirection:"column",borderStyle:"round",borderColor:Se.border,padding:0,width:"100%",minHeight:32},B.createElement(Fe,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Se.borderMuted,width:"100%"},B.createElement(q,{color:Se.text,bold:!0},"SYSTEM CONFIGURATION")),B.createElement(Fe,{flexDirection:"row",width:"100%",minHeight:26},B.createElement(Fe,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:O==="categories"?Se.border:Se.borderMuted,padding:1,paddingY:0},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:O==="categories"?Se.text:Se.textDim,bold:!0,underline:!0},"CATEGORIES")),po.map((fe,w)=>{let N=F===w,Ie=fe.id==="exit";return B.createElement(Fe,{key:fe.id,marginTop:Ie?15:0,backgroundColor:N?O==="categories"?Se.highlightBg:Se.cardBg:void 0,paddingX:1},B.createElement(q,{color:N&&O==="categories"?Se.text:Se.textDim,bold:N},N?"\u276F ":" ",fe.label))})),B.createElement(Fe,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:O==="items"?Se.border:Se.borderMuted,paddingX:1,marginLeft:1,paddingY:0},B.createElement(Fe,{marginBottom:1},B.createElement(q,{color:O==="items"?Se.text:Se.textDim,bold:!0,underline:!0},po[F].label.toUpperCase().includes("EXIT")?"Runtime Information":`${po[F].label} Settings`)),Ge.length>0?(()=>{let fe=null,w=[],N=Ve=>(Ve||"").split(",").map(At=>At.trim().toLowerCase()).filter(Boolean),Ie=N(t.autoApproveCommands),We=N(t.autoDisallowCommands),et=N(t.alwaysAskCommands),at=[...Ie,...We,...et],Ye=new Set(at),Rt=ln==="security"&&at.length!==Ye.size;return Ge.forEach((Ve,At)=>{let Nt=O==="items"&&K===At,Gr=Ve.label.length,qo=Math.max(2,38-Gr),Yr=".".repeat(qo),mt=Ee=>ln==="security"?(Ee.value==="autoExec"||Ee.value==="externalAccess")&&Ee.status==="ON"?Se.statusOn:Se.statusOff:Ee.status?.startsWith("\u2713")?Se.statusOn:Ee.status?.startsWith("\u26A0")?Se.statusOff:Ee.status==="ON"?Se.statusOn:Ee.status==="OFF"?Se.statusOff:Se.text;Ve.section&&Ve.section!==fe&&(fe=Ve.section,w.push(B.createElement(Fe,{key:`sec-hdr-${Ve.section}`,marginTop:w.length>0?1:0,marginBottom:0,paddingX:1},B.createElement(q,{color:"gray",bold:!0,underline:!0},Ve.section.toUpperCase()))));let z=Nt&&ie&&(ie==="alwaysAskCommands"&&Ve.value==="alwaysAsk"||ie==="autoApproveCommands"&&Ve.value==="autoApprove"||ie==="autoDisallowCommands"&&Ve.value==="autoDisallow"||ie==="customOpenAIBaseUrl"&&Ve.value==="customOpenAIBaseUrl"||ie==="customOpenAIKey"&&Ve.value==="customOpenAIKey"),it=Ve.value==="alwaysAsk"||Ve.value==="autoApprove"||Ve.value==="autoDisallow",Mo=Ve.value==="parserDownload";w.push(B.createElement(Fe,{key:Ve.value,flexDirection:"column"},B.createElement(Fe,{backgroundColor:Nt&&!z?Se.highlightBg:void 0,paddingX:2},B.createElement(q,{color:Nt?Se.text:Se.textDim,bold:Nt},Nt?"\u276F ":" ",Ve.label),!it&&!Mo&&B.createElement(B.Fragment,null,B.createElement(q,{color:"gray"},Yr),B.createElement(q,{color:mt(Ve),bold:!0},Ve.value==="aiProvider"?Ve.status:`[ ${Ve.status} ]`))),it&&!z&&Ve.status!=="None"&&B.createElement(Fe,{paddingX:4,marginBottom:1},B.createElement(q,{color:"gray"},"\u21B3 ",Ve.status)),z&&B.createElement(Fe,{flexDirection:"column",marginLeft:4,marginBottom:1},B.createElement(Fe,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},B.createElement(q,{color:"gray",bold:!0},"> "," "),B.createElement(vd,{value:Z,onChange:de,onSubmit:async Ee=>{if(ie==="customOpenAIBaseUrl"){let Lt=Ee.trim().replace(/\/+$/,""),Kt={...t,customOpenAIBaseUrl:Lt};f(Kt),b({systemSettings:Kt,apiTier:x,quotas:s})}else if(ie==="customOpenAIKey"){let{saveProviderAPIKey:Lt}=await import("./secrets-UNXNDOLK.js");await Lt("c_openai",Ee.trim()),Je(Kt=>({...Kt,c_openai:!!Ee.trim()}))}else{let Lt={...t,[ie]:Ee.trim(),sandboxPreset:"Custom"};f(Lt),b({systemSettings:Lt,apiTier:x,quotas:s})}J(null)}})),B.createElement(q,{color:"gray",italic:!0}," ",ie==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":ie==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),Rt&&w.push(B.createElement(Fe,{key:"conflict-warning",marginTop:1,paddingX:1},B.createElement(q,{color:Se.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),w})():B.createElement(Fe,{paddingX:1,flexDirection:"column",width:"100%"},ln==="exit"?B.createElement(B.Fragment,null,B.createElement(Fe,{flexDirection:"column",marginBottom:1},B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"OS"," "),B.createElement(q,{color:"gray"},"..................... "),B.createElement(q,{color:Se.text},process.env.OS||process.platform||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Computer Name"," "),B.createElement(q,{color:"gray"},".......... "),B.createElement(q,{color:Se.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Processor Count"," "),B.createElement(q,{color:"gray"},"........ "),B.createElement(q,{color:Se.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Node.js Version"," "),B.createElement(q,{color:"gray"},"........ "),B.createElement(q,{color:Se.text},"v",process.versions.node)),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"V8 Version"," "),B.createElement(q,{color:"gray"},"...... ...... "),B.createElement(q,{color:Se.text},"v",process.versions.v8)),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Data Directory"," "),B.createElement(q,{color:"gray"},"......... "),lo===fo?"":B.createElement(q,{color:Se.text},lo.replaceAll(wl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),B.createElement(q,{color:Se.text},fo.replaceAll(wl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),B.createElement(Fe,{flexDirection:"row"},B.createElement(q,{color:Se.textDim},"Viewport"," "),B.createElement(q,{color:"gray"},"............... "),B.createElement(q,{color:Se.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),B.createElement(Fe,{flexDirection:"row",marginBottom:0},B.createElement(q,{color:Se.textDim},"Memory Load"," "),B.createElement(q,{color:"gray"},"............ "),B.createElement(q,{color:Se.text},me,"/",D," ",qe))),B.createElement(Fe,{key:"pty-notice",paddingX:0,marginTop:0},B.createElement(q,{color:jt?Se.statusOn:Se.warning},jt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):B.createElement(q,{color:"gray",italic:!0},po[F].desc)))),B.createElement(Fe,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},B.createElement(q,{color:"gray",italic:!0},O==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),O==="categories"&&B.createElement(q,{color:"gray"},po[F].desc)))}import to,{useState as Ds,useEffect as Bd}from"react";import{Box as kn,Text as tr}from"ink";import Id from"ink-text-input";function ks({initialData:t,onSave:f,onCancel:x,theme:M="Dark"}){let T=Ze(M),[b,s]=Ds(0),[v,m]=Ds(""),[A,k]=Ds(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),_=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],S=_[b];Bd(()=>{let F=_[b].key;m((A[F]||"").slice(0,_[b].maxLength))},[b,A]);let E=F=>{F.length>S.maxLength?m(F.slice(0,S.maxLength)):m(F)},O=F=>{if(F.trim().toLowerCase()==="/cancel"){x();return}let H=S.key,K={...A,[H]:F.trim().slice(0,S.maxLength)};k(K),m(""),b<_.length-1?s(b+1):f(K)},$=v.length>=S.maxLength;return to.createElement(kn,{borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},to.createElement(kn,{paddingX:1,marginBottom:1},to.createElement(tr,{color:T.text,bold:!0},"USER PROFILE CONFIGURATION")),to.createElement(kn,{paddingX:1,flexDirection:"column"},to.createElement(kn,null,to.createElement(tr,{color:T.text,bold:!0},S.label),to.createElement(Id,{value:v,onChange:E,onSubmit:O})),to.createElement(kn,{marginTop:1,justifyContent:"space-between"},to.createElement(tr,{color:T.textMuted,italic:!0},"Step ",b+1," of ",_.length),to.createElement(tr,{color:$?T.warning||"yellow":T.textMuted},"[",v.length,"/",S.maxLength,"]"))),to.createElement(kn,{paddingX:1,marginTop:1},to.createElement(tr,{color:T.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import Mt,{useState as As}from"react";import{Box as oo,Text as Go,useInput as Dd}from"ink";import kd from"ink-text-input";var Ad=({question:t,options:f,onResolve:x,theme:M="Dark"})=>{let T=Ze(M),[b,s]=As(!1),[v,m]=As(""),[A,k]=As(0),_=!1,S=[],E=Array.isArray(f)&&f.length>0,O=t==="Agent has been running for a long time. Do you want to continue execution?";try{O&&E?S=[...f]:S=[...E?f:[],E?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{_=!0}Dd((F,H)=>{if(!b&&((H.leftArrow||H.upArrow)&&k(K=>Math.max(0,K-1)),(H.rightArrow||H.downArrow)&&k(K=>Math.min(S.length-1,K+1)),H.return)){let K=S[A];K?.id==="CUSTOM"?s(!0):x(_?"Selected Nothing":K.label)}});let $=rt(2);return b?Mt.createElement(oo,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:T.codeBg,width:"100%"},Mt.createElement(oo,{paddingX:1},Mt.createElement(Go,{color:T.text,bold:!0},"SUGGEST SOMETHING")),Mt.createElement(oo,{marginTop:1,paddingX:1},Mt.createElement(Go,{italic:!0,color:T.textMuted},"Replying to: ",t)),Mt.createElement(oo,{marginTop:1,paddingX:1,flexDirection:"row"},Mt.createElement(kd,{value:v,onChange:m,onSubmit:()=>x(v)})),Mt.createElement(oo,{marginTop:1,paddingX:1,marginBottom:1},Mt.createElement(Go,{color:T.textMuted,italic:!0},"(Press Enter to send)"))):Mt.createElement(oo,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},Mt.createElement(oo,{paddingX:1,marginBottom:1},Mt.createElement(Go,{color:"yellow",bold:!0},O?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),Mt.createElement(oo,{paddingX:1,marginBottom:1},Mt.createElement(Go,{color:T.text},t)),Mt.createElement(oo,{flexDirection:"column",width:"100%"},S.map((F,H)=>{let K=H===A;return Mt.createElement(oo,{key:F.id,flexDirection:"column",width:"100%",backgroundColor:K?T.highlightBg:void 0,paddingX:1,marginBottom:H===S.length-1?0:1},Mt.createElement(Go,{color:K?T.text:T.textMuted,bold:K},K?"\u276F ":" ",F.label),F.description&&Mt.createElement(oo,{marginLeft:4},Mt.createElement(Go,{color:T.textMuted,italic:!0},F.description)))})),Mt.createElement(oo,{paddingX:1,marginTop:1,marginBottom:1},Mt.createElement(Go,{color:T.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},Ml=Ad;import Rd from"gradient-string";import Pt,{useState as Ls,useEffect as Ld}from"react";import{Box as bo,Text as Yo,useInput as Od}from"ink";function Os({onSelect:t,onDelete:f,onClose:x,theme:M="Dark"}){let T=Ze(M),[b,s]=Ls({}),[v,m]=Ls([]),[A,k]=Ls(0);Ld(()=>{(async()=>{let F=await Wo();s(F),m(Object.keys(F).sort((H,K)=>(F[K].updatedAt||0)-(F[H].updatedAt||0)))})()},[]),Od(($,F)=>{if(F.escape&&x(),F.upArrow&&k(H=>Math.max(0,H-1)),F.downArrow&&k(H=>Math.min(v.length-1,H+1)),F.return&&v[A]&&t(v[A]),$==="x"&&v[A]){let H=v[A];f(H).then(K=>{let xe=K||{};s(xe);let ie=Object.keys(xe).sort((J,Z)=>(xe[Z]?.updatedAt||0)-(xe[J]?.updatedAt||0));m(ie),k(J=>Math.max(0,Math.min(ie.length-1,J)))})}});let _=rt(2),S=15,E=0;if(v.length>S){let $=Math.floor(S/2);E=A-$,E<0?E=0:E+S>v.length&&(E=v.length-S)}let O=v.slice(E,E+S);return Pt.createElement(bo,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Pt.createElement(bo,{paddingX:1,marginBottom:1},Pt.createElement(Yo,{color:T.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),v.length===0?Pt.createElement(bo,{paddingX:2,paddingY:1},Pt.createElement(Yo,{italic:!0,color:T.textMuted},"No saved chats found.")):Pt.createElement(bo,{flexDirection:"column",width:"100%"},E>0&&Pt.createElement(bo,{paddingX:2,marginBottom:1},Pt.createElement(Yo,{color:T.textMuted},"\u25B2 (+",E," more chats above)")),O.map(($,F)=>{let H=b[$],xe=E+F===A,ie=Pd(H?.updatedAt);return Pt.createElement(bo,{key:$,paddingX:1,backgroundColor:xe?T.highlightBg:void 0,width:"100%"},Pt.createElement(bo,{flexGrow:1},Pt.createElement(Yo,{color:xe?T.text:T.textMuted,bold:xe},xe?"\u276F ":" ",(()=>{let J=Z=>(Z||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return H?.name&&!H.name.startsWith("Session")?J(H.name):H?.prompt?J(H.prompt):J(H?.name)||$})(),Pt.createElement(Yo,{color:T.textMuted}," [",ie," \u2022 ",$,"]"))),xe&&Pt.createElement(bo,{flexShrink:0},Pt.createElement(Yo,{color:T.danger,bold:!0},"[X] DELETE ")))}),E+S<v.length&&Pt.createElement(bo,{paddingX:2,marginTop:1},Pt.createElement(Yo,{color:T.textMuted},"\u25BC (+",v.length-(E+S)," more chats below)"))),Pt.createElement(bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Pt.createElement(Yo,{color:T.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Pd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let x=v=>String(v).padStart(2,"0"),M=x(f.getMonth()+1),T=x(f.getDate()),b=x(f.getHours()),s=x(f.getMinutes());return`${M}-${T} ${b}:${s}`}import St,{useState as Ps,useEffect as Nd}from"react";import{Box as To,Text as uo,useInput as Fd,useStdout as Ud}from"ink";function Ns({onClose:t,theme:f="Dark"}){let x=Ze(f),{stdout:M}=Ud(),T=M?.columns||80,[b,s]=Ps([]),[v,m]=Ps(0),[A,k]=Ps(!0),_=()=>{let J=Tr(Yn,[]);s(J);try{let de=wr(tn,{}).systemSettings?.memory!==!1;k(de)}catch{k(!0)}};Nd(()=>{_()},[]),Fd((J,Z)=>{if(Z.escape&&t(),Z.upArrow&&m(de=>Math.max(0,de-1)),Z.downArrow&&m(de=>Math.min(b.length-1,de+1)),J==="x"&&b.length>0){let de=b[v].id,De=b.filter(Ce=>Ce.id!==de);Bi(Yn,De),s(De),v>=De.length&&De.length>0&&m(De.length-1)}});let S=(J,Z,de)=>{if(!J)return"";let De=J.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Ue=`${de?"\u276F ":" "}${Z+1}. `.length,ce=de?22:2;return De.split(`
45
45
  `).map((Te,oe)=>{let Xe=oe===0,he=Math.max(10,T-4-(Xe?Ue:3)-ce),te=Math.max(10,T-4-3-ce),ne=Te.split(/(\s+)/),ee=[],ue="";if(ne.forEach(be=>{if(be.length===0)return;let Le=ee.length===0?he:te;ue.length+be.length>Le?ue.trim().length>0?(ee.push(ue.trimEnd()),ue=be):(ee.push(be.substring(0,Le)),ue=be.substring(Le)):ue+=be}),ue.trimEnd().length>0&&ee.push(ue.trimEnd()),ee.length===0)return"";let pe=ee.join(`
46
46
  `);return Xe?pe:" "+pe}).join(`
47
47
  `)},E=4*1024*2,O=b.reduce((J,Z)=>J+(Z.memory?.length||0),0),$=Math.min(100,Math.round(O/E*100)),F=12,H=Math.round($/100*F),K="\u2588".repeat(H)+"\u2591".repeat(Math.max(0,F-H)),xe=()=>$<50?x.textMuted:$<90?x.warning:x.danger,ie=rt(2);return St.createElement(To,{flexDirection:"column",borderStyle:"round",borderColor:x.borderMuted,padding:0,width:"100%"},St.createElement(To,{paddingX:1,marginBottom:1,justifyContent:"space-between"},St.createElement(uo,{color:x.text,bold:!0},"SAVED MEMORIES"),St.createElement(To,null,St.createElement(uo,{color:x.textMuted},"Vault: "),St.createElement(uo,{color:xe()},K),St.createElement(uo,{color:x.text,bold:!0}," ",$,"%"))),!A&&b.length>0?St.createElement(To,{paddingX:2,paddingY:1},St.createElement(uo,{italic:!0,color:x.textMuted},"Memory is currently Off...")):b.length===0?St.createElement(To,{paddingX:2,paddingY:1},St.createElement(uo,{italic:!0,color:x.textMuted},A?"Learning...":"Memory not available...")):St.createElement(To,{flexDirection:"column"},b.map((J,Z)=>{let de=Z===v;return St.createElement(To,{key:J.id,paddingX:1,backgroundColor:de?x.highlightBg:void 0,width:"100%"},St.createElement(To,{flexGrow:1},St.createElement(uo,{color:de?x.text:x.textMuted,bold:de},de?"\u276F ":" ",Z+1,". ",S(J.memory,Z,de))),de&&St.createElement(To,{flexShrink:0},St.createElement(uo,{color:x.textMuted,dimColor:!0}," [",St.createElement(uo,{italic:!0},J.score),"] "),St.createElement(uo,{color:x.danger,bold:!0},"[X] WIPE ")))})),St.createElement(To,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:x.borderMuted},St.createElement(uo,{color:x.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import ft,{useState as Ur,useEffect as Sl}from"react";import{Box as Vo,Text as Ut}from"ink";import{spawn as Cl}from"child_process";var vl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],$d=({latest:t,current:f,settings:x,onClose:M,onUpdateSettings:T,onSuccess:b})=>{let[s,v]=Ur("initializing"),[m,A]=Ur(""),[k,_]=Ur(null),[S,E]=Ur(0);if(Sl(()=>{let O=setInterval(()=>{E($=>($+1)%1e3)},33);return()=>clearInterval(O)},[]),Sl(()=>{let O;return(async()=>{let F=x.updateManager||"npm";if(!x.updateManager){T();return}let H="";F==="pnpm"?H=`pnpm add -g fluxflow-cli@${t}`:F==="bun"?H=`bun add -g fluxflow-cli@${t}`:F==="yarn"?H=`yarn global add fluxflow-cli@${t}`:F==="custom"?H=x.customUpdateCommand:H=`npm install -g fluxflow-cli@${t}`,v("downloading"),A(`Running: ${H}...`);let K=process.platform==="win32",xe=J=>new Promise(Z=>{let de=K?J?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",De=K?J?["-NoProfile","-Command",H]:["/c",H]:["-c",H],Ce=ce=>{let Te=ce.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();Te&&A(oe=>{let Xe=oe.split(`
@@ -246,7 +246,7 @@ Selection: ${ct}`,isAskRecord:!0}];return W(io.length),io}),Me(ct))}}),z("ask")}
246
246
  ${_e}`,color:"cyan",isSteeringHint:!0,hintType:$e?"QUESTION":"STEERING HINT",hintContent:_e}]}),us(null),Bo.current=null)}j.content?.includes("[start]")||ls(j.content),j.content?.includes("[start]")?(clearInterval(Hn),_n(0),Hn=setInterval(()=>{_n(ae=>ae+1)},1e3)):j.content?.includes("[end]")&&(_n(0),clearInterval(Hn)),nn()&&Br(j.content),j.content==="Request Cancelled"&&(pe(),be(),p());continue}if(j.type==="status_history"){ls(j.content),nn()&&Br(j.content),L(ae=>[...ae,{id:"condense-"+Date.now(),role:"system",text:`\u2726 ${j.content}
247
247
  \u2800`,isMeta:!0}]);continue}if(j.type==="summary_injected"){L(ae=>ae.map(ye=>ye.id===j.content.id?{...ye,fullText:j.content.text}:ye));continue}if(j.type==="spinner"){da(j.content);continue}if(j.type==="model_update"){fa(j.content);continue}if(j.type==="turn_reset"){if(pe(),be(),He=null,Oe=null,U=!1,Pe=!1,nt=!1,tt=!1,It=!1,L(ae=>{let ye=ae.map($e=>{if($e.isStreaming){let _e=$e.text?Bt($e.text):$e.text,ze=$e.fullText?Bt($e.fullText):$e.fullText;return{...$e,isStreaming:!1,text:_e,fullText:ze}}return $e});return W(ye.length),ye}),Io(),global.gc){for(let ae=0;ae<2;ae++)global.gc(),await new Promise(ye=>setImmediate(ye));f.current=Date.now()}continue}if(j.type==="interactive_turn_finished"){ds(!1),_n(0),clearInterval(Hn),nn()&&Br(null),C=!0,Io(),ge?.autoTruncateResults&&L(ae=>{let ye=ae.map($e=>{let _e=$e.fullText||$e.text||"";return!_e.startsWith("[ACTION RESULT]:")&&!_e.startsWith("[TOOL RESULT]:")||_e.startsWith("[ACTION RESULT]: ERROR")||_e.startsWith("[TOOL RESULT]: ERROR")||_e.startsWith("[ACTION RESULT]: DENIED")||_e.startsWith("[TOOL RESULT]: DENIED")||_e.startsWith("[ACTION RESULT]: Goal")||_e.startsWith("[TOOL RESULT]: Goal")||_e.includes("...Success result truncated to save tokens")||_e.startsWith("[ACTION RESULT]: USER CHOOSE")||_e.startsWith("[ACTION RESULT]: Skill:")||_e.startsWith("[TOOL RESULT]: Skill:")||_e.includes("Skill: [")||_e.startsWith("[ACTION RESULT]: DOCs:")||_e.startsWith("[TOOL RESULT]: DOCs:")||_e.includes("DOCs: [")?$e:{...$e,fullText:"[ACTION RESULT]: ...Success result truncated to save tokens"}});return Bn(dt,null,ye),W(ye.length),ye}),rl({profile:dn,thinkingLevel:me,mode:E,janitorModel:Ie,chatId:dt,systemSettings:ge,sessionStats:go,aiProvider:D,apiKey:At},j.data.agentText,j.data.fullAgentTextRaw,j.data.history,{onMemoryUpdated:()=>L(ae=>{let ye=[...ae];return ye.length>0&&(ye[ye.length-1].memoryUpdated=!0),ye}),onBackgroundIncrement:()=>Vl(ae=>ae+1)});continue}if(j.type==="visual_feedback"){pe(),be(),L(ae=>{let ye=[...ae,{id:"feedback-"+Date.now()+"-"+Math.random().toString(36).substring(2,9),role:"system",text:Bt(j.content),isVisualFeedback:!0}];return W(ye.length),ye});continue}if(j.type==="exec_start"){pe(),be();continue}if(j.type==="liveTokens"){Po({tokens:j.content});continue}if(j.type==="usage"){let ae=j.content.totalTokenCount||0,ye=j.content.cachedContentTokenCount||0,$e=j.content.candidatesTokenCount||0,_e=Math.max(0,ae-$e);Po({tokens:ae}),Rs(ze=>ze+ae),_e>0&&ei(ze=>ze+_e),ye>0&&ti(ze=>ze+ye),$e>0&&oi(ze=>ze+$e),Js(ze=>ze+1);continue}if(j.type==="tool_time"){Rl(ae=>ae+j.content);continue}if(j.type==="tool_result"){if(be(),He=null,Oe=null,U=!1,Pe=!1,nt=!1,tt=!1,It=!1,ut=0,gt=null,L(ae=>{let ye=[...ae,{id:"tool-"+Date.now()+"-"+Math.random().toString(36).substring(2,7),role:"system",text:Bt(j.content),fullText:Bt(j.aiContent),binaryPart:j.binaryPart,toolName:j.toolName}];return W(ye.length),ye}),j.toolName==="update_file"&&j.aiContent){let ae=j.aiContent.split(`
248
248
  `),ye=0,$e=0,_e=!1;for(let ze of ae){if(ze.includes("[DIFF_START]")){_e=!0;continue}if(ze.includes("[DIFF_END]")){_e=!1;continue}_e&&(/^\+\s*\d+/.test(ze)?ye++:/^\-\s*\d+/.test(ze)&&$e++)}on("linesAdded",ye),on("linesRemoved",$e)}else if(j.toolName==="write_file"&&j.aiContent){let ae=j.aiContent.match(/- Stats: \[(\d+) lines/),ye=ae?parseInt(ae[1]):0,$e=0;if(j.aiContent.includes("Old File contents:")){let _e=j.aiContent.split(`
249
- `),ze=!1;for(let eo of _e){if(eo.includes("Old File contents:")){ze=!0;continue}ze&&(eo.startsWith("- Content Preview:")||eo.trim()===""&&!/^\s*\d+\s*\|/.test(eo)?ze=!1:/^\s*\d+\s*\|/.test(eo)&&$e++)}}(ye>0||$e>0)&&(on("linesAdded",ye),on("linesRemoved",$e))}continue}let we=j.content;if(j.type==="text"&&we.includes("Request Cancelled")){if(global.gc){for(let ae=0;ae<3;ae++)global.gc(),await new Promise(ye=>setImmediate(ye));f.current=Date.now()}continue}let Me=we.toLowerCase();if(we.includes("```")&&(Pe=!Pe),(Me.includes("tool:")||Me.includes("action:"))&&(nt=!0,ut=0,gt=null,(we.includes("[tool:")||we.includes("[action:"))&&(ut=0)),nt){for(let ae=0;ae<we.length;ae++){let ye=we[ae];!gt&&(ye==="'"||ye==='"'||ye==="`")?gt=ye:gt&&ye===gt&&we[ae-1]!=="\\"&&(gt=null),gt||(ye==="("||ye==="["?ut++:(ye===")"||ye==="]")&&ut--)}ut<=0&&!gt&&(nt=!1)}let ke=/^\s*(?:<(think|thought|thoughts)[^>]*>|<\|channel>thought|\[(think|thought|thoughts)\])/i,ct=(ae,ye,$e=1)=>{let _e=ye>0?ae[ye-1]:"",ze=ye+$e<ae.length?ae[ye+$e]:"";return _e==="`"&&ze==="`"},Qe=ae=>{let ye=/(?:<\/(think|thought|thoughts)>|<channel\|>|\[\/(think|thought|thoughts)\])/gi,$e;for(;($e=ye.exec(ae))!==null;)if(!ct(ae,$e.index,$e[0].length))return{index:$e.index,length:$e[0].length};return{index:-1,length:0}},$t=oe.current?.role==="agent"&&oe.current.text||"",io=!It&&$t.trim().length===0;if(!U&&io&&(ke.test(we)||ke.test($t+we))){let ae=ke.test(we)?we:$t+we,ye=ae.match(ke),$e=ye.index,_e=ye[0].length,ze=ae.substring($e+_e);pe(),oe.current=null,U=!0,It=!0,He="think-"+Date.now(),oe.current={id:He,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let eo=Qe(ze);if(eo.index!==-1){let Gn=ze.substring(0,eo.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),vn=ze.substring(eo.index+eo.length);oe.current.text=Bt(Gn);let br=oe.current.startTime||Date.now();oe.current.duration=Date.now()-br,be(),U=!1,Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:"",isStreaming:!0},vn&&Je(vn)}else{let Cn=ze.replace(/^\r?\n+/,"");Cn&&Je(Cn)}continue}if(!U&&!It&&we.trim().length>0&&(It=!0),U&&oe.current?.role==="think"){pe();let ae=oe.current.text+we,ye=Qe(ae);if(ye.index!==-1){let $e=ae.substring(0,ye.index),_e=ae.substring(ye.index+ye.length);oe.current.text=Bt($e);let ze=oe.current.startTime||Date.now();oe.current.duration=Date.now()-ze,be(),U=!1,Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:"",isStreaming:!0},_e&&Je(_e)}else Je(we);continue}else if(!U){let ae=we.toLowerCase();!tt&&(ae.includes("tool:")||ae.includes("action:"))&&(tt=!0),!oe.current||oe.current.role!=="agent"?(Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:Bt(we),isStreaming:!0},ne()):Je(we)}}let $o=Date.now();Zl(j=>j+($o-P))}catch(le){L(X=>(W(X.length+1),[...X,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${le.message}`}]))}finally{let le=Date.now()-P;if(oe.current&&(oe.current.workedDuration=le),ue.current&&(await lt(),clearInterval(ue.current),ue.current=null),ds(!1),ls(null),_n(0),clearInterval(Hn),be(),cs.current&&p(),Io(),global.gc)try{for(let X=0;X<3;X++)global.gc(),await new Promise(Y=>setImmediate(Y));f.current=Date.now()}catch{}if(C||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),Bo.current){ms(Bo.current),us(null);let X=Bo.current;Bo.current=null,L(Y=>{let Q=[...Y],G=Q.reverse().find(U=>U.text?.includes("[STEERING HINT: QUEUED]")||U.text?.includes("[QUESTION: QUEUED]"));return G&&(G.text.includes("[STEERING HINT: QUEUED]")?G.text=G.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]"):G.text.includes("[QUESTION: QUEUED]")&&(G.text=G.text.replace("[QUESTION: QUEUED]","[QUESTION: FINISHED_TURN]"))),Q.reverse()}),z("resolution")}L(X=>{let Y=Date.now()-P,Q=!1,G=[...X].reverse().map(Oe=>{let Pe=Oe.isStreaming?{...Oe,isStreaming:!1}:Oe;return Pe.text&&(Pe.text=(" "+Pe.text).slice(1)),!Q&&Pe.role==="agent"&&(Q=!0,Pe={...Pe,workedDuration:Y}),Pe}).reverse();if(!G.some(Oe=>Oe.role==="agent"&&Oe.text?.trim().length>0)){let Oe=[...G].reverse().find(Pe=>Pe.role==="think"&&Pe.text?.trim().length>0);Oe&&G.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Oe.text,isStreaming:!1,workedDuration:Y})}let He=G.filter(Oe=>!String(Oe.id).startsWith("welcome")&&(!Oe.isMeta||Oe.text&&Oe.text.includes("Request Cancelled")));return Bn(dt,null,He),W(G.length),G})}})()}m(""),S(!1)}},je=Ln(()=>{if(v.startsWith("/")&&!J){let g=v.split(" "),y=g[g.length-1].toLowerCase();if(g.length===1){let a=y.startsWith("/")?y.slice(1):y;return Ci.filter(p=>(p.cmd.startsWith("/")?p.cmd.slice(1):p.cmd).toLowerCase().includes(a))}let c=Ci;for(let a=0;a<g.length-1;a++){let p=g[a].toLowerCase(),C=c.find(P=>P.cmd.toLowerCase()===p);if(C&&C.subs)c=C.subs;else return[]}return c.filter(a=>a.cmd.toLowerCase().includes(y))}let n=v.split(" "),o=n[n.length-1],d=o&&o.startsWith("\\@");if((o&&o.startsWith("@")||d)&&!J){let g=o.indexOf("#"),y=g!==-1,c=d?2:1,a=y?o.substring(c,g).toLowerCase():o.slice(c).toLowerCase(),p=y?o.substring(g):"";return ic(process.cwd()).filter(V=>V.name.toLowerCase().includes(a)).map(V=>{let le=V.relativePath.replace(/\\/g,"/"),X=le.startsWith(".")?le:"./"+le;return{cmd:(d?"\\@":"@")+"["+X+p+"]",desc:V.relativePath}})}return[]},[v,J]);st(()=>{let n=0;for(;n<je.length;){let o=je[n],d=o?.cmd||o||"";if(typeof d=="string"&&d.trimStart().startsWith("---"))n++;else break}ie(n<je.length?n:0)},[je]);let[hr,pr]=R(0),Ei=Ke(0);st(()=>{let n=Ei.current>0,o=je.length>0;if(Ei.current=je.length,!o){pr(0);return}if(!n){pr(1);return}pr(je.length)},[je]),st(()=>{if(hr>0&&hr<je.length){let n=setTimeout(()=>{pr(o=>Math.min(o+1,je.length))},5);return()=>clearTimeout(n)}},[hr,je.length]),st(()=>{if(mt!=="providerBudgetSelect")return;let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","CrofAI","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=Ee.providerBudgets||{},d=n.reduce((h,g)=>(h[g]=!!(o[g]&&(o[g].agentLimit||o[g].tokenLimit||o[g].monthlyTokenLimit)),h),{});js(d),rr(0)},[mt]),st(()=>{if(mt!=="providerBudgetFlow")return;let n={},o=Ee.providerBudgets||{};for(let d of an){let h=o[d]||{};n[d]={agentLimit:nr(h.agentLimit),tokenLimit:nr(h.tokenLimit),monthlyTokenLimit:nr(h.monthlyTokenLimit)}}qr(n),So(0)},[mt,an]);let wc=({label:n,isSelected:o})=>{let d=n==="Cancel"||n==="Back"||n.toLowerCase().includes("exit")||n.toLowerCase().includes("back");return e.createElement(u,{marginTop:d?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(l,{color:o?"white":"gray",bold:o},o?"\u276F ":" ",n))},Sn=(n,o,d,h=10,g=2,y=9)=>{let c=Wr(d),a=!c&&d>0?Math.min(100,o/d*100):0,p=Math.round(a),C=Math.round(p/100*h),P="\u2588".repeat(C)+"\u2591".repeat(Math.max(0,h-C)),V=i.success||"green";p>=40&&p<=80?V=i.warning||"yellow":p>80&&(V=i.danger||"red");let le=n.toLowerCase().includes("token")||n.toLowerCase().includes("daily")||n.toLowerCase().includes("monthly"),X=c?"\u221E":le?ht(d):d,Y=le?ht(o):o,Q;return c||a===0?Q="0%":a>0&&a<1?Q="<1%":Q=`${p}%`,e.createElement(u,{flexDirection:"row",paddingLeft:g,key:n},e.createElement(u,{width:y},e.createElement(l,{color:i.textMuted},n,": ")),e.createElement(l,{color:V},P),e.createElement(l,{color:i.textMuted}," ",Q," (",Y,"/",X,")"))},ba=()=>{switch(mt){case"settings":return e.createElement(Fr,{systemSettings:ge,setSystemSettings:wt,apiTier:it,setActiveView:z,setInputConfig:qt,saveSettings:Dt,quotas:Ee,setMessages:L,aiProvider:D,setProviderReturnView:Vr});case"theme":return e.createElement(Fr,{systemSettings:ge,setSystemSettings:wt,apiTier:it,setActiveView:z,setInputConfig:qt,saveSettings:Dt,quotas:Ee,setMessages:L,aiProvider:D,initialSelectingTheme:!0,onCloseTheme:()=>z("chat"),setProviderReturnView:Vr});case"selectProvider":return e.createElement(bt,{title:"SELECT AI PROVIDER",searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"},{label:"Back",value:Oo}],theme:ge.theme,onSelect:async n=>{if(n.value===Oo||n.value==="settings"||n.value==="Back"){z(Oo);return}let o=n.value,d=await Ho(o),h="";if(o==="9router"){let g=await Hs();g.ok||(h=`
249
+ `),ze=!1;for(let eo of _e){if(eo.includes("Old File contents:")){ze=!0;continue}ze&&(eo.startsWith("- Content Preview:")||eo.trim()===""&&!/^\s*\d+\s*\|/.test(eo)?ze=!1:/^\s*\d+\s*\|/.test(eo)&&$e++)}}(ye>0||$e>0)&&(on("linesAdded",ye),on("linesRemoved",$e))}continue}let we=j.content;if(j.type==="text"&&we.includes("Request Cancelled")){if(global.gc){for(let ae=0;ae<3;ae++)global.gc(),await new Promise(ye=>setImmediate(ye));f.current=Date.now()}continue}let Me=we.toLowerCase();if(we.includes("```")&&(Pe=!Pe),(Me.includes("tool:")||Me.includes("action:"))&&(nt=!0,ut=0,gt=null,(we.includes("[tool:")||we.includes("[action:"))&&(ut=0)),nt){for(let ae=0;ae<we.length;ae++){let ye=we[ae];!gt&&(ye==="'"||ye==='"'||ye==="`")?gt=ye:gt&&ye===gt&&we[ae-1]!=="\\"&&(gt=null),gt||(ye==="("||ye==="["?ut++:(ye===")"||ye==="]")&&ut--)}ut<=0&&!gt&&(nt=!1)}let ke=/^\s*(?:<(think|thought|thoughts)[^>]*>|<\|channel>thought|\[(think|thought|thoughts)\])/i,ct=(ae,ye,$e=1)=>{let _e=ye>0?ae[ye-1]:"",ze=ye+$e<ae.length?ae[ye+$e]:"";return _e==="`"&&ze==="`"},Qe=ae=>{let ye=/(?:<\/(think|thought|thoughts)>|<channel\|>|\[\/(think|thought|thoughts)\])/gi,$e;for(;($e=ye.exec(ae))!==null;)if(!ct(ae,$e.index,$e[0].length))return{index:$e.index,length:$e[0].length};return{index:-1,length:0}},$t=oe.current?.role==="agent"&&oe.current.text||"",io=!It&&$t.trim().length===0;if(!U&&io&&(ke.test(we)||ke.test($t+we))){let ae=ke.test(we)?we:$t+we,ye=ae.match(ke),$e=ye.index,_e=ye[0].length,ze=ae.substring($e+_e);pe(),oe.current=null,U=!0,It=!0,He="think-"+Date.now(),oe.current={id:He,role:"think",text:"",isStreaming:!0,startTime:Date.now()};let eo=Qe(ze);if(eo.index!==-1){let Gn=ze.substring(0,eo.index).replace(/^\r?\n+/,"").replace(/\r?\n+$/,""),vn=ze.substring(eo.index+eo.length);oe.current.text=Bt(Gn);let br=oe.current.startTime||Date.now();oe.current.duration=Date.now()-br,be(),U=!1,Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:"",isStreaming:!0},vn&&Je(vn)}else{let Cn=ze.replace(/^\r?\n+/,"");Cn&&Je(Cn)}continue}if(!U&&!It&&we.trim().length>0&&(It=!0),U&&oe.current?.role==="think"){pe();let ae=oe.current.text+we,ye=Qe(ae);if(ye.index!==-1){let $e=ae.substring(0,ye.index),_e=ae.substring(ye.index+ye.length);oe.current.text=Bt($e);let ze=oe.current.startTime||Date.now();oe.current.duration=Date.now()-ze,be(),U=!1,Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:"",isStreaming:!0},_e&&Je(_e)}else Je(we);continue}else if(!U){let ae=we.toLowerCase();!tt&&(ae.includes("tool:")||ae.includes("action:"))&&(tt=!0),!oe.current||oe.current.role!=="agent"?(Oe="agent-"+Date.now(),oe.current={id:Oe,role:"agent",text:Bt(we),isStreaming:!0},ne()):Je(we)}}let $o=Date.now();Zl(j=>j+($o-P))}catch(le){L(X=>(W(X.length+1),[...X,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${le.message}`}]))}finally{let le=Date.now()-P;if(oe.current&&(oe.current.workedDuration=le),ue.current&&(await lt(),clearInterval(ue.current),ue.current=null),ds(!1),ls(null),_n(0),clearInterval(Hn),be(),cs.current&&p(),Io(),global.gc)try{for(let X=0;X<3;X++)global.gc(),await new Promise(Y=>setImmediate(Y));f.current=Date.now()}catch{}if(C||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),Bo.current){ms(Bo.current),us(null);let X=Bo.current;Bo.current=null,L(Y=>{let Q=[...Y],G=Q.reverse().find(U=>U.text?.includes("[STEERING HINT: QUEUED]")||U.text?.includes("[QUESTION: QUEUED]"));return G&&(G.text.includes("[STEERING HINT: QUEUED]")?G.text=G.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]"):G.text.includes("[QUESTION: QUEUED]")&&(G.text=G.text.replace("[QUESTION: QUEUED]","[QUESTION: FINISHED_TURN]"))),Q.reverse()}),z("resolution")}L(X=>{let Y=Date.now()-P,Q=!1,G=[...X].reverse().map(Oe=>{let Pe=Oe.isStreaming?{...Oe,isStreaming:!1}:Oe;return Pe.text&&(Pe.text=(" "+Pe.text).slice(1)),!Q&&Pe.role==="agent"&&(Q=!0,Pe={...Pe,workedDuration:Y}),Pe}).reverse();if(!G.some(Oe=>Oe.role==="agent"&&Oe.text?.trim().length>0)){let Oe=[...G].reverse().find(Pe=>Pe.role==="think"&&Pe.text?.trim().length>0);Oe&&G.push({id:"agent-fallback-"+Date.now(),role:"agent",text:Oe.text,isStreaming:!1,workedDuration:Y})}let He=G.filter(Oe=>!String(Oe.id).startsWith("welcome")&&(!Oe.isMeta||Oe.text&&Oe.text.includes("Request Cancelled")));return Bn(dt,null,He),W(G.length),G})}})()}m(""),S(!1)}},je=Ln(()=>{if(v.startsWith("/")&&!J){let g=v.split(" "),y=g[g.length-1].toLowerCase();if(g.length===1){let a=y.startsWith("/")?y.slice(1):y;return Ci.filter(p=>(p.cmd.startsWith("/")?p.cmd.slice(1):p.cmd).toLowerCase().includes(a))}let c=Ci;for(let a=0;a<g.length-1;a++){let p=g[a].toLowerCase(),C=c.find(P=>P.cmd.toLowerCase()===p);if(C&&C.subs)c=C.subs;else return[]}return c.filter(a=>a.cmd.toLowerCase().includes(y))}let n=v.split(" "),o=n[n.length-1],d=o&&o.startsWith("\\@");if((o&&o.startsWith("@")||d)&&!J){let g=o.indexOf("#"),y=g!==-1,c=d?2:1,a=y?o.substring(c,g).toLowerCase():o.slice(c).toLowerCase(),p=y?o.substring(g):"";return ic(process.cwd()).filter(V=>V.name.toLowerCase().includes(a)).map(V=>{let le=V.relativePath.replace(/\\/g,"/"),X=le.startsWith(".")?le:"./"+le;return{cmd:(d?"\\@":"@")+"["+X+p+"]",desc:V.relativePath}})}return[]},[v,J]);st(()=>{let n=0;for(;n<je.length;){let o=je[n],d=o?.cmd||o||"";if(typeof d=="string"&&d.trimStart().startsWith("---"))n++;else break}ie(n<je.length?n:0)},[je]);let[hr,pr]=R(0),Ei=Ke(0);st(()=>{let n=Ei.current>0,o=je.length>0;if(Ei.current=je.length,!o){pr(0);return}if(!n){pr(1);return}pr(je.length)},[je]),st(()=>{if(hr>0&&hr<je.length){let n=setTimeout(()=>{pr(o=>Math.min(o+1,je.length))},5);return()=>clearTimeout(n)}},[hr,je.length]),st(()=>{if(mt!=="providerBudgetSelect")return;let n=["Google","DeepSeek","Mistral","NVIDIA","OpenRouter","Ollama","InferX","SenseNova","AIHubMix","Poolside","ExpLabs","TokenHarbor","Infron","APInex"],o=Ee.providerBudgets||{},d=n.reduce((h,g)=>(h[g]=!!(o[g]&&(o[g].agentLimit||o[g].tokenLimit||o[g].monthlyTokenLimit)),h),{});js(d),rr(0)},[mt]),st(()=>{if(mt!=="providerBudgetFlow")return;let n={},o=Ee.providerBudgets||{};for(let d of an){let h=o[d]||{};n[d]={agentLimit:nr(h.agentLimit),tokenLimit:nr(h.tokenLimit),monthlyTokenLimit:nr(h.monthlyTokenLimit)}}qr(n),So(0)},[mt,an]);let wc=({label:n,isSelected:o})=>{let d=n==="Cancel"||n==="Back"||n.toLowerCase().includes("exit")||n.toLowerCase().includes("back");return e.createElement(u,{marginTop:d?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},e.createElement(l,{color:o?"white":"gray",bold:o},o?"\u276F ":" ",n))},Sn=(n,o,d,h=10,g=2,y=9)=>{let c=Wr(d),a=!c&&d>0?Math.min(100,o/d*100):0,p=Math.round(a),C=Math.round(p/100*h),P="\u2588".repeat(C)+"\u2591".repeat(Math.max(0,h-C)),V=i.success||"green";p>=40&&p<=80?V=i.warning||"yellow":p>80&&(V=i.danger||"red");let le=n.toLowerCase().includes("token")||n.toLowerCase().includes("daily")||n.toLowerCase().includes("monthly"),X=c?"\u221E":le?ht(d):d,Y=le?ht(o):o,Q;return c||a===0?Q="0%":a>0&&a<1?Q="<1%":Q=`${p}%`,e.createElement(u,{flexDirection:"row",paddingLeft:g,key:n},e.createElement(u,{width:y},e.createElement(l,{color:i.textMuted},n,": ")),e.createElement(l,{color:V},P),e.createElement(l,{color:i.textMuted}," ",Q," (",Y,"/",X,")"))},ba=()=>{switch(mt){case"settings":return e.createElement(Fr,{systemSettings:ge,setSystemSettings:wt,apiTier:it,setActiveView:z,setInputConfig:qt,saveSettings:Dt,quotas:Ee,setMessages:L,aiProvider:D,setProviderReturnView:Vr});case"theme":return e.createElement(Fr,{systemSettings:ge,setSystemSettings:wt,apiTier:it,setActiveView:z,setInputConfig:qt,saveSettings:Dt,quotas:Ee,setMessages:L,aiProvider:D,initialSelectingTheme:!0,onCloseTheme:()=>z("chat"),setProviderReturnView:Vr});case"selectProvider":return e.createElement(bt,{title:"SELECT AI PROVIDER",searchable:!0,items:[{label:"Google",value:"Google"},{label:"Nvidia",value:"NVIDIA"},{label:"DeepSeek",value:"DeepSeek"},{label:"InferX",value:"InferX"},{label:"SenseNova",value:"SenseNova"},{label:"Poolside",value:"Poolside"},{label:"Experiential Labs",value:"ExpLabs"},{label:"Token Harbor",value:"TokenHarbor"},{label:"Infron",value:"Infron"},{label:"APInex",value:"APInex"},{label:"Ollama",value:"Ollama"},...process.env.ENABLE_9ROUTER==="true"||process.env.ENABLE_9ROUTER===!0?[{label:"9router [Local Proxy]",value:"9router"}]:[],{label:"AIHubMix [Experimental]",value:"AIHubMix"},{label:"Mistral [Experimental]",value:"Mistral"},{label:"OpenRouter [Experimental]",value:"OpenRouter"},{label:"Custom [OpenAI Chat Completion]",value:"c_openai"},{label:"Back",value:Oo}],theme:ge.theme,onSelect:async n=>{if(n.value===Oo||n.value==="settings"||n.value==="Back"){z(Oo);return}let o=n.value,d=await Ho(o),h="";if(o==="9router"){let g=await Hs();g.ok||(h=`
250
250
 
251
251
  \x1B[33m\u2726 WARNING: 9router does not appear to be running on ${g.url}.\x1B[39m
252
252
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m To start 9router: \x1B[36mnpx 9router\x1B[39m or \x1B[36mnpm i -g 9router && 9router\x1B[39m`)}if(o==="c_openai"){if(!ge.customOpenAIBaseUrl){qt({label:"Enter Custom OpenAI Base URL (.../v1):",key:"customOpenAIBaseUrl",value:"",returnView:Oo}),z("input");return}let g=d||"";Ne(o),Nt(g),Do(g,{aiProvider:o,onIDEApproval:vo});let y=(Ee.providerTiers||{})[o]||"Free",c=Jt(o,y)||"";Gt(c),Mo(y),wt(a=>({...a,memory:!1})),Dt({aiProvider:o,activeModel:c,apiTier:y,quotas:Ee,systemSettings:{...ge,memory:!1}}),L(a=>[...a,{role:"system",text:`\u2726 Switched to Custom (OpenAI)!${c?`