fluxflow-cli 4.24.9 → 4.25.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 (27) hide show
  1. package/dist/chunks/{ai-HWPUAPBB.js → ai-IHT7BYEA.js} +1 -1
  2. package/dist/chunks/{app-2BGM34W3.js → app-FPNTVYSV.js} +2 -2
  3. package/dist/chunks/chunk-A73HW6DI.js +5 -0
  4. package/dist/chunks/{chunk-7M3AFLUN.js → chunk-NQTRYK6U.js} +1 -1
  5. package/dist/chunks/chunk-NYIPDIEQ.js +31 -0
  6. package/dist/chunks/{chunk-DYIWPH2W.js → chunk-RTT7P5KS.js} +1 -1
  7. package/dist/chunks/{chunk-CNPR3KRA.js → chunk-S5MJT3L5.js} +70 -70
  8. package/dist/chunks/{chunk-LQHSNXBM.js → chunk-U2NRX2PX.js} +4 -4
  9. package/dist/chunks/click-NULWZ3IK.js +2 -0
  10. package/dist/chunks/{computer_action-2XHXRO56.js → computer_action-OQ3CWQU3.js} +1 -1
  11. package/dist/chunks/{drag-UYQLP2NB.js → drag-RLRC6JFF.js} +1 -1
  12. package/dist/chunks/{exec_command-THB36X3Y.js → exec_command-J23EG77W.js} +1 -1
  13. package/dist/chunks/{export-DEFENSGY.js → export-GPCAD6JI.js} +1 -1
  14. package/dist/chunks/{invoke-HSJ7RUF6.js → invoke-AYPOVSTU.js} +2 -2
  15. package/dist/chunks/{invokeSync-B3MYVAN6.js → invokeSync-XW4AQKZ3.js} +2 -2
  16. package/dist/chunks/{key_press-IN6BOWVJ.js → key_press-7F6CAPZD.js} +1 -1
  17. package/dist/chunks/{keyboard_typing-YEMPELE2.js → keyboard_typing-RPPKNVTA.js} +1 -1
  18. package/dist/chunks/screen_grid-3F55Z22R.js +1 -0
  19. package/dist/chunks/{scroll-C7SG5G2G.js → scroll-QVQD7I6A.js} +1 -1
  20. package/dist/chunks/ui_detector_onnx-YGGFMOK5.js +1 -0
  21. package/dist/cli.js +5 -5
  22. package/dist/package.json +3 -2
  23. package/package.json +3 -2
  24. package/dist/chunks/chunk-6AWSJNXE.js +0 -31
  25. package/dist/chunks/chunk-KNCL7AK2.js +0 -5
  26. package/dist/chunks/click-2HXMMZIS.js +0 -2
  27. package/dist/chunks/screen_grid-GBIGOR5Q.js +0 -1
@@ -1 +1 @@
1
- import{A as p,B as q,C as r,D as s,E as t,m as b,n as c,o as d,p as e,q as f,r as g,s as h,t as i,u as j,v as k,w as l,x as m,y as n,z as o}from"./chunk-CNPR3KRA.js";import"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import"./chunk-LQHSNXBM.js";import"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import"./chunk-ZRP6USHC.js";import"./chunk-FQBBOFNP.js";import"./chunk-Y5JU726N.js";import"./chunk-3CZWTXIR.js";import"./chunk-4XXLWMY6.js";import"./chunk-GRQ7JZZP.js";import{k as a}from"./chunk-OSDQRSY6.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 p,B as q,C as r,D as s,E as t,m as b,n as c,o as d,p as e,q as f,r as g,s as h,t as i,u as j,v as k,w as l,x as m,y as n,z as o}from"./chunk-S5MJT3L5.js";import"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import"./chunk-U2NRX2PX.js";import"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import"./chunk-ZRP6USHC.js";import"./chunk-FQBBOFNP.js";import"./chunk-Y5JU726N.js";import"./chunk-3CZWTXIR.js";import"./chunk-4XXLWMY6.js";import"./chunk-GRQ7JZZP.js";import{k as a}from"./chunk-OSDQRSY6.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{B as sl,C as il,D as ll,a as Yi,b as Je,c as nt,d as Cr,e as Ht,f as Ki,g as qi,h as vr,i as zi,j as ys,k as Jo,l as Br,v as nl,y as rl,z as Kn}from"./chunk-CNPR3KRA.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 Sn,f as jt,g as ji}from"./chunk-DYIWPH2W.js";import"./chunk-LQHSNXBM.js";import{a as Zi}from"./chunk-A73NNVCZ.js";import{a as Fo,b as Cn,d as Er,e as ws,f as Qi,h as Ji,i as jn}from"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import{a as Et,b as xt,d as Xi,e as ht,f as Wi,j as bs,k as Ts,l as Gn,n as Gi,o as Co}from"./chunk-ZRP6USHC.js";import{a as Vn}from"./chunk-FQBBOFNP.js";import{a as Yn}from"./chunk-Y5JU726N.js";import{b as Mn,c as fs,k as Ni}from"./chunk-3CZWTXIR.js";import{b as ps}from"./chunk-AF7LASZ3.js";import{a as Fi,b as Ui,f as $i,g as Mr,h as Sr,j as vt,k as Qo,l as hs,r as _i}from"./chunk-4XXLWMY6.js";import{a as xs,b as Pt}from"./chunk-GRQ7JZZP.js";import{d as Di,e as ki,f as Ii,g as Ai,h as Li,i as Pi,k as yr,m as No,n as go,o as Oi}from"./chunk-OSDQRSY6.js";import{c as Tr,d as Bi,e as wr}from"./chunk-L3W2X74K.js";import{e as Hi}from"./chunk-6AWSJNXE.js";import{a as ro,b as zo,c as mo,d as ms,e as gs,k as Wn}from"./chunk-DSVLWYIT.js";import Ys from"os";import e,{useState as J,useEffect as rt,useRef as Ke,useMemo as kn}from"react";import{Box as c,Text as l,useInput as Kd,useStdout as qd,Static as zd}from"ink";import Qd from"ink-spinner";import et from"fs-extra";import St from"path";import{exec as wo}from"child_process";import{fileURLToPath as Jd}from"url";import Ut,{useState as Dr,useEffect as Ms,useMemo as qn,useCallback as ba,useRef as vo}from"react";import{Box as Ta,Text as so,useInput as wa}from"ink";function ya(t,m){return t.replace(/\t/g," ".repeat(m))}function kr(t){return t==null?"":t.replace(/\r\n/g,`
1
+ import{B as sl,C as il,D as ll,a as Yi,b as Je,c as nt,d as Cr,e as Ht,f as Ki,g as qi,h as vr,i as zi,j as ys,k as Jo,l as Br,v as nl,y as rl,z as Kn}from"./chunk-S5MJT3L5.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 Sn,f as jt,g as ji}from"./chunk-RTT7P5KS.js";import"./chunk-U2NRX2PX.js";import{a as Zi}from"./chunk-A73NNVCZ.js";import{a as Fo,b as Cn,d as Er,e as ws,f as Qi,h as Ji,i as jn}from"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import{a as Et,b as xt,d as Xi,e as ht,f as Wi,j as bs,k as Ts,l as Gn,n as Gi,o as Co}from"./chunk-ZRP6USHC.js";import{a as Vn}from"./chunk-FQBBOFNP.js";import{a as Yn}from"./chunk-Y5JU726N.js";import{b as Mn,c as fs,k as Ni}from"./chunk-3CZWTXIR.js";import{b as ps}from"./chunk-AF7LASZ3.js";import{a as Fi,b as Ui,f as $i,g as Mr,h as Sr,j as vt,k as Qo,l as hs,r as _i}from"./chunk-4XXLWMY6.js";import{a as xs,b as Pt}from"./chunk-GRQ7JZZP.js";import{d as Di,e as ki,f as Ii,g as Ai,h as Li,i as Pi,k as yr,m as No,n as go,o as Oi}from"./chunk-OSDQRSY6.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 ro,b as zo,c as mo,d as ms,e as gs,k as Wn}from"./chunk-DSVLWYIT.js";import Ys from"os";import e,{useState as J,useEffect as rt,useRef as Ke,useMemo as kn}from"react";import{Box as c,Text as l,useInput as Kd,useStdout as qd,Static as zd}from"ink";import Qd from"ink-spinner";import et from"fs-extra";import St from"path";import{exec as wo}from"child_process";import{fileURLToPath as Jd}from"url";import Ut,{useState as Dr,useEffect as Ms,useMemo as qn,useCallback as ba,useRef as vo}from"react";import{Box as Ta,Text as so,useInput as wa}from"ink";function ya(t,m){return t.replace(/\t/g," ".repeat(m))}function kr(t){return t==null?"":t.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
3
  `)}function Zo(t,m,h){let y=t,T=[...m].sort((s,k)=>s.start-k.start),b=0;for(let s of T){let k=s.start-b,f=kr(s.text).split(`
4
4
  `).length,I=s.text.length,A=(f>3?`[Pasted ${f} lines]`:`[Pasted ${I} chars]`).length,X=k+A;if(t<=k)break;if(t<X){y=s.end;break}else{let S=s.text.length-A;y+=S,b+=S}}return Math.min(y,h.length)}function Ss(t,m,h,y,T=[]){let b=(t||"").slice(0,m),s=y(b).length,k=y(t||""),f=[...T].sort((N,L)=>L.start-N.start);for(let N of f){let L=y(t.slice(0,N.start)).length,_=y(N.text),Q=L+_.length,ge=kr(N.text).split(`
@@ -41,7 +41,7 @@ import{B as sl,C as il,D as ll,a as Yi,b as Je,c as nt,d as Cr,e as Ht,f as Ki,g
41
41
  `),terminalWidth:m,theme:b}));if(f==="diff-line"){let{isFirstLine:S,isLastLine:C}=t,P=(N=!1)=>r.createElement(E,{backgroundColor:s.codeBg,paddingX:1,width:m,marginBottom:N?1:0},r.createElement(E,{width:3,flexShrink:0}),r.createElement(E,{width:1,flexShrink:0,marginLeft:1}),r.createElement(E,{flexGrow:1,marginLeft:1},r.createElement(ne,null," ")));return r.createElement(E,{flexDirection:"column"},S&&P(!1),r.createElement(xl,{line:I,pairContent:t.pairContent,parentText:void 0,columns:m,theme:b}),C&&P(!0))}if(f==="code-fence-open"){let S={paddingLeft:2,width:"100%"};return r.createElement(E,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},r.createElement(E,{flexDirection:"row",...S},r.createElement(ne,null," ")),r.createElement(E,{flexDirection:"row",...S},r.createElement(ne,{color:"gray",bold:!0},"\u25B6_ ",(I||"TEXT").toUpperCase())))}if(f==="code-line"){let{lineNum:S,lang:C}=t,P=m-12,L=xt(I,Math.max(10,P)).split(`
42
42
  `);return r.createElement(E,{flexDirection:"column",width:"100%"},L.map((_,Q)=>r.createElement(E,{key:Q,flexDirection:"row",borderColor:s.codeBorder,paddingLeft:2,width:"100%"},r.createElement(E,{width:5,flexShrink:0},r.createElement(ne,{color:"gray",dimColor:!0},Q===0?String(S).padStart(4," ")+" ":" ")),r.createElement(E,{flexGrow:1},Ot(_,C,s.text)))))}if(f==="code-fence-close")return r.createElement(E,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},r.createElement(ne,null," "));if(f==="write-header")return r.createElement(E,{flexDirection:"column",paddingX:1,width:m},r.createElement(En,{text:I,columns:m,theme:b}));if(f==="write-line"){let{gutterWidth:S,lineNum:C,isFirstLine:P,isLastLine:N,extension:L,wrappedLines:_}=t,Q=(ge=!1)=>r.createElement(E,{flexDirection:"row",width:m,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:s.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:s.codeBg,marginBottom:ge?1:0},r.createElement(E,{width:S+2,flexShrink:0},r.createElement(ne,null," ".repeat(S+2))),r.createElement(E,{flexGrow:1},r.createElement(ne,null," ")));return r.createElement(E,{flexDirection:"column"},P&&Q(!1),r.createElement(E,{flexDirection:"row",width:m,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:s.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:s.codeBg},r.createElement(E,{width:S+2,flexShrink:0},r.createElement(ne,{color:"gray",dimColor:!0},String(C).padStart(S," ")," ")),r.createElement(E,{flexGrow:1,flexDirection:"column"},(_||[I]).map((ge,ye)=>r.createElement(E,{key:ye},Ot(ge,L,s.text))))),N&&Q(!0))}return f==="write-footer"?r.createElement(E,{flexDirection:"column",paddingX:1,width:m,marginTop:1,marginBottom:1},r.createElement(En,{text:I,columns:m,theme:b})):f==="worked-duration"?r.createElement(E,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},r.createElement(ne,{color:s.textMuted},"["),r.createElement(ne,{color:s.textMuted},"Worked for ",r.createElement(ne,{bold:!0,color:s.text},Es(X))),r.createElement(ne,{color:s.textMuted},"]")):null}),Gc=r.memo(({messages:t,showFullThinking:m,columns:h=80,aiProvider:y,version:T,theme:b="Dark"})=>r.createElement(E,{flexDirection:"column",width:"100%"},t.map((s,k)=>r.createElement(hl,{key:s.id||k,msg:s,showFullThinking:m,columns:h,aiProvider:y,version:T,theme:b}))));import pt from"react";import{Box as Uo,Text as fo}from"ink";import{useState as Qn,useEffect as Jn,useRef as Pr}from"react";var Zn=null;function pl(){Zn&&Zn()}var hd=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let m=[{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 h=0;h<m.length-1;h++){let y=m[h],T=m[h+1];if(t>=y.t&&t<=T.t){let b=(t-y.t)/(T.t-y.t);b=b*b*(3-2*b);let s=Math.round(y.r+(T.r-y.r)*b),k=Math.round(y.g+(T.g-y.g)*b),f=Math.round(y.b+(T.b-y.b)*b);return`#${((1<<24)+(s<<16)+(k<<8)+f).toString(16).slice(1)}`}}return"#ff0000"},pd=pt.memo(({mode:t,thinkingLevel:m,tokens:h="0.0k",tokensTotal:y="0.0k",cachedTokens:T=0,promptTokens:b=0,chatId:s="NEW-SESSION",isMemoryEnabled:k=!0,apiTier:f="Free",aiProvider:I="Google",activeModel:A="",isProcessing:X=!1,lastChunkTime:S=0,theme:C="Dark",wps:P=0,showTPMEstimate:N=!1})=>{let L=Je(C),_="",[Q,ge]=Qn(0),[ye,se]=Qn(0),[ie,pe]=Qn("MB"),[Be,Ce]=Qn("green"),[Fe,le]=Qn(0),Ie=Pr([]),be=Pr(370),ee=Pr([]),We=Pr(S);Jn(()=>{We.current=S},[S]),Jn(()=>{if(!X){ee.current=[];return}if(P>0){let R=ee.current;R.push(P),R.length>3&&R.shift()}},[X,P,S]),Jn(()=>{if(!X){le(0);return}let R=setInterval(()=>{let te=We.current,Z=te>0?Date.now()-te:0;if(te>0&&Z>=1e3)ee.current=[],le(0);else if(te>0&&Z>500){ee.current.length>0&&ee.current.shift();let ae=ee.current;if(ae.length>0){let fe=ae.reduce((he,Ae)=>he+Ae,0);le(Math.round(fe/ae.length))}else le(0)}else{let ae=ee.current;if(ae.length>0){let fe=ae.reduce((he,Ae)=>he+Ae,0);le(Math.round(fe/ae.length))}else P>0&&le(Math.round(P))}},750);return()=>clearInterval(R)},[X]),Jn(()=>{if(!X){Ie.current=[];return}if(S>0){let Z=Ie.current;(Z.length===0||Z[Z.length-1]!==S)&&(Z.push(S),Z.length>10&&Z.shift())}let R=()=>{if(!S){Ce("#00a564");return}let Z=Ie.current,ae=0;if(Z.length>1){let oe=0;for(let ce=1;ce<Z.length;ce++)oe+=Z[ce]-Z[ce-1];ae=oe/(Z.length-1)}let fe=Date.now()-S,Ae=fe>=2500,at=!Ae&&ae>0?Math.min(fe,ae*3):fe,Ze=Math.max(ae,at),ve=Ae?.4:.2;be.current=be.current*(1-ve)+Ze*ve,Ce(hd(be.current))};R();let te=setInterval(R,100);return()=>clearInterval(te)},[X,S]);let me=()=>{let R=process.memoryUsage(),te=R.heapTotal/(1024*1024)>=1024,Z=te?"GB":"MB",ae=(fe,he)=>{let Ae=fe/(1048576*(he?1024:1));return he?parseFloat(Ae.toFixed(2)):Math.round(Ae)};pe(Z),se(ae(R.heapTotal,te)),ge(ae(R.heapUsed,te))};return Jn(()=>{Zn=me,me();let R=setInterval(()=>{me()},6e4);return()=>{clearInterval(R),Zn===me&&(Zn=null)}},[]),pt.createElement(Uo,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},pt.createElement(Uo,null,pt.createElement(Uo,{marginRight:1},pt.createElement(fo,{color:L.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),pt.createElement(fo,{color:L.textMuted,dimColor:!0},"\u2503 "),pt.createElement(Uo,null,pt.createElement(fo,{color:L.text,italic:!0},Wi(process.cwd(),35)))),pt.createElement(Uo,null,X&&!N?pt.createElement(Uo,null,pt.createElement(fo,{color:Be},"\u25CF ")):null,X&&N&&pt.createElement(pt.Fragment,null,pt.createElement(fo,{color:L.textMuted},Fe," tok/s"),pt.createElement(fo,{color:L.textMuted,dimColor:!0}," \u2503")),h>0&&pt.createElement(pt.Fragment,null,pt.createElement(Uo,{marginX:1},pt.createElement(fo,{color:L.text},ht(y)," tok",(()=>{let R=typeof b=="number"?b:0,te=typeof T=="number"?T:0,Z=R>0?te/R*100:0;return Z<1?null:pt.createElement(fo,{color:L.success||"green",dimColor:!0}," [",Z.toFixed(0),"% cached]")})())),pt.createElement(fo,{color:L.textMuted,dimColor:!0},"\u2503")),pt.createElement(Uo,{marginLeft:1},pt.createElement(fo,{color:L.textMuted,bold:!0},Q," ",ie))))}),bl=pd;import st,{useState as Bs,useMemo as bd,useEffect as Td}from"react";import{Box as Xt,Text as Kt,useInput as wd}from"ink";import yd from"ink-select-input";var Md=({label:t,isSelected:m,theme:h="Dark"})=>{let y=Je(h),T=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return st.createElement(Xt,{marginTop:T?1:0,backgroundColor:m?y.highlightBg:void 0,paddingX:1,width:"100%"},st.createElement(Kt,{color:m?y.text:y.textMuted,bold:m},m?"\u276F ":" ",t))};function bt({title:t,subtitle:m,items:h=[],onSelect:y,theme:T="Dark",searchable:b=!1}){let s=Je(T),[k,f]=Bs(""),[I,A]=Bs(0),[X,S]=Bs("list"),C=bd(()=>{if(!b||!k.trim())return h;let P=k.toLowerCase().trim();return h.filter(N=>N.label&&N.label.toLowerCase().includes(P))},[h,k,b]);return Td(()=>{A(0)},[k]),wd((P,N)=>{if(b){if(N.upArrow){S("list"),A(L=>C.length>0?L>0?L-1:C.length-1:0);return}if(N.downArrow){S("list"),A(L=>C.length>0&&L<C.length-1?L+1:0);return}if(N.return){C.length>0&&C[I]&&y(C[I]);return}if(N.escape){if(k)f(""),S("list"),A(0);else{let L=h.find(_=>_.value==="Back"||_.label==="Back"||_.value==="Cancel"||_.label==="Cancel");L&&y(L)}return}if(N.backspace||N.delete){S("search"),f(L=>L.slice(0,-1));return}if(P&&!N.ctrl&&!N.meta&&!N.tab){S("search"),f(L=>L+P);return}}},{isActive:b}),b?st.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:s.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&st.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:0},st.createElement(Kt,{color:s.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),m&&st.createElement(Xt,{paddingX:1,marginBottom:0},st.createElement(Kt,{color:s.textMuted,italic:!0}," ",m)),st.createElement(Xt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},st.createElement(Kt,{color:X==="search"?s.primary||"cyan":s.textMuted,bold:X==="search"},"\u{1F50D} Search:"),st.createElement(Kt,{color:s.text,bold:!0}," ",k),X==="search"?st.createElement(Kt,{color:s.primary||"cyan"},"\u2588"):k?null:st.createElement(Kt,{color:s.textMuted,italic:!0}," (type to search...)")),st.createElement(Xt,{flexDirection:"column",width:"100%"},C.length===0?st.createElement(Xt,{paddingX:1,marginY:0},st.createElement(Kt,{color:s.warning||"yellow",italic:!0}," No matching items found")):C.map((P,N)=>{let L=N===I,_=P.label==="Cancel"||P.label==="Back"||P.label.toLowerCase().includes("exit")||P.label.toLowerCase().includes("back");return st.createElement(Xt,{key:P.value??P.label??N,marginTop:_?1:0,backgroundColor:L?s.highlightBg:void 0,paddingX:1,width:"100%"},st.createElement(Kt,{color:L?s.text:s.textMuted,bold:L},L?"\u276F ":" ",P.label))})),st.createElement(Xt,{paddingX:1,marginTop:1},st.createElement(Kt,{color:s.textMuted,italic:!0},X==="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)"))):st.createElement(Xt,{flexDirection:"column",borderStyle:"round",borderColor:s.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&st.createElement(Xt,{paddingX:1,paddingY:0,marginBottom:m?0:1},st.createElement(Kt,{color:s.text,bold:!0},typeof t=="string"?t.toUpperCase():t)),m&&st.createElement(Xt,{paddingX:1,marginBottom:1},st.createElement(Kt,{color:s.textMuted,italic:!0}," ",m)),st.createElement(Xt,{flexDirection:"column",width:"100%"},st.createElement(yd,{items:h,onSelect:y,itemComponent:P=>st.createElement(Md,{...P,theme:T}),indicatorComponent:()=>null})),st.createElement(Xt,{paddingX:1,marginTop:1},st.createElement(Kt,{color:s.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import v,{useState as At,useEffect as Rn}from"react";import{Box as Ne,Text as K,useInput as Sd}from"ink";import Cd from"ink-text-input";import vd from"v8";import Tl from"os";var xo=[...Object.keys(Yi),"Mystery"],ho=[{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"}],wl=t=>{let m=t.autoApproveCommands||"",h=t.autoDisallowCommands||"",y=t.alwaysAskCommands||"",T=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&m===""&&h==="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"&&y==="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&&m==="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"&&h==="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"&&y==="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&&m==="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"&&h===""&&y==="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"},Ds=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function Or({systemSettings:t,setSystemSettings:m,apiTier:h,setActiveView:y,setInputConfig:T,saveSettings:b,quotas:s,setMessages:k,aiProvider:f,initialSelectingTheme:I=!1,onCloseTheme:A=null,setProviderReturnView:X=null}){let S=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",C=xo.indexOf(S),[P,N]=At("categories"),[L,_]=At(0),[Q,ge]=At(0),[ye,se]=At(null),[ie,pe]=At(""),[Be,Ce]=At(I),[Fe,le]=At(C>=0?C:0),[Ie,be]=At(t.theme||"Dark"),[ee,We]=At(!1),[me,R]=At(0),[te,Z]=At(0),[ae,fe]=At(""),[he,Ae]=At("list"),[at,Ze]=At({});Rn(()=>{(async()=>{let w=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","APInex"],U={};for(let Ee of w)try{await Mn(Ee)&&(U[Ee]=!0)}catch{}Ze(U)})()},[]);let ve=v.useMemo(()=>{let ue=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","APInex"],U=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",Ee=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:U,value:"ENV",isHeader:!1}],Xe=s?.providerTiers?.[f]||h||"Free",Re=No(f,Xe)||[];Re.length>0&&(Ee.push({label:`\u2500\u2500 ${f.toUpperCase()}${Xe!=="Free"?` (${Xe})`:""} \u2500\u2500`,isHeader:!0}),Re.forEach(it=>{let Ye=typeof it=="string"?it:it.cmd||it.name||it.id||String(it);Ye&&!Ye.trim().startsWith("---")&&!Ye.startsWith(`
43
43
  ---`)&&Ee.push({label:Ye,value:Ye,isHeader:!1,provider:f})}));for(let it of ue)if(it!==f&&at[it]){let Ye=s?.providerTiers?.[it]||"Free",qt=No(it,Ye)||[];qt.length>0&&(Ee.push({label:`\u2500\u2500 ${it.toUpperCase()}${Ye!=="Free"?` (${Ye})`:""} \u2500\u2500`,isHeader:!0}),qt.forEach(je=>{let kt=typeof je=="string"?je:je.cmd||je.name||je.id||String(je);kt&&!kt.trim().startsWith("---")&&!kt.startsWith(`
44
- ---`)&&Ee.push({label:kt,value:kt,isHeader:!1,provider:it})}))}return Ee},[f,h,s,at]),oe=v.useMemo(()=>{if(!ae.trim())return ve;let ue=ae.trim().toLowerCase(),w=[],U=null;for(let Ee of ve)Ee.isHeader?U=Ee:(Ee.label.toLowerCase().includes(ue)||Ee.value&&Ee.value.toLowerCase().includes(ue))&&(U&&!w.includes(U)&&w.push(U),w.push(Ee));return w},[ve,ae]);Rn(()=>{if(ee){let ue=oe.findIndex(w=>!w.isHeader);R(ue>=0?ue:0),Z(0)}},[ae]),Rn(()=>{if(ee){if(oe.length===0){R(0),Z(0);return}if(me>=oe.length||oe[me]?.isHeader){let ue=oe.findIndex(w=>!w.isHeader);R(ue>=0?ue:0)}}},[oe,ee]);let[ce,Se]=At(0),[D,Ue]=At(0),[qe,Ct]=At("MB"),[Gt,Hr]=At(!1);Rn(()=>{let ue=!1;return import("./exec_command-THB36X3Y.js").then(w=>{ue||Hr(!!w.isPtyAvailable)}).catch(()=>{}),()=>{ue=!0}},[]),Rn(()=>{let ue=vd.getHeapStatistics().heap_size_limit,w=ue>=1024*1024*1024,U=w?"GB":"MB",Ee=w?1024*1024*1024:1024*1024;Ue(parseFloat((ue/Ee).toFixed(2))),Ct(U);let Xe=()=>{let qt=process.memoryUsage().rss/Ee,je=w?parseFloat(qt.toFixed(2)):Math.round(qt);Se(je)};Xe();let Re=setInterval(()=>{Xe()},3e4);return()=>clearInterval(Re)},[]);let en=ue=>{switch(ue){case"providers":{let U=[{label:"Current Provider",value:"aiProvider",status:f}];return f==="Ollama"&&U.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),U}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:wl(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:Ds(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Ds(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Ds(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[]}},tn=ho[L].id,Ge=en(tn);Sd((ue,w)=>{if(ee){if(w.tab){Ae(U=>U==="search"?"list":"search");return}if(he==="search"){w.escape?We(!1):w.downArrow||w.return?Ae("list"):w.backspace||w.delete?fe(U=>U.slice(0,-1)):ue&&!w.ctrl&&!w.meta&&ue.length===1&&fe(U=>U+ue);return}if(w.upArrow)R(U=>{if(oe.length===0)return 0;let Ee=(U-1+oe.length)%oe.length,Xe=0;for(;oe[Ee]?.isHeader&&Xe<oe.length;)Ee=(Ee-1+oe.length)%oe.length,Xe++;return Ee});else if(w.downArrow)R(U=>{if(oe.length===0)return 0;let Ee=(U+1)%oe.length,Xe=0;for(;oe[Ee]?.isHeader&&Xe<oe.length;)Ee=(Ee+1)%oe.length,Xe++;return Ee});else if(w.return){let U=oe[me];U&&!U.isHeader&&(m(Ee=>{let Xe=U.value==="Default",Re={...Ee,CustomSubAgent:!Xe,SubAgentModel:U.value,SubAgentProvider:Xe?"":U.provider||""};return b({systemSettings:Re,apiTier:h,quotas:s}),Re}),We(!1))}else w.escape?We(!1):ue&&!w.ctrl&&!w.meta&&ue.length===1&&(fe(U=>U+ue),Ae("search"));return}if(Be){if(w.upArrow){let U=(Fe-1+xo.length)%xo.length;le(U)}else if(w.downArrow){let U=(Fe+1)%xo.length;le(U)}else if(w.return){let U=xo[Fe];m(Ee=>{let Xe={...Ee,theme:U};return b({systemSettings:Xe,apiTier:h,quotas:s}),Xe}),A?A():Ce(!1)}else w.escape&&(A?A():Ce(!1));return}if(ye){w.escape&&se(null);return}if(P==="categories")w.upArrow?_(U=>(U-1+ho.length)%ho.length):w.downArrow?_(U=>(U+1)%ho.length):w.return||w.rightArrow?ho[L].id==="exit"?y("chat"):(N("items"),ge(0)):w.escape&&y("chat");else if(P==="items"){if(w.upArrow)ge(U=>(U-1+Ge.length)%Ge.length);else if(w.downArrow)ge(U=>(U+1)%Ge.length);else if(w.leftArrow||w.escape)N("categories");else if(w.return){let U=Ge[Q];Rt(U)}}});let Rt=ue=>{if(ue.value==="memory")m(w=>({...w,memory:!w.memory}));else if(ue.value==="sandboxPreset"){let w=wl(t),U=["Autonomous","Balanced","Strict"],Xe=(U.indexOf(w)+1)%U.length,Re=U[Xe];m(it=>{let Ye={...it,sandboxPreset:Re};return Re==="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):Re==="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):Re==="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(ue.value==="autoExec")t.autoExec?m(w=>({...w,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?y("doubleDanger"):y("autoExecDanger");else if(ue.value==="externalAccess")t.allowExternalAccess?m(w=>({...w,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?y("doubleDanger"):y("externalDanger");else if(ue.value==="networkAccess")m(w=>({...w,networkAccess:w.networkAccess===!1,sandboxPreset:"Custom"}));else if(ue.value==="alwaysAsk")se("alwaysAskCommands"),pe(t.alwaysAskCommands||"");else if(ue.value==="autoApprove")se("autoApproveCommands"),pe(t.autoApproveCommands||"");else if(ue.value==="autoApproveGit")m(w=>({...w,autoApproveGit:!w.autoApproveGit,sandboxPreset:"Custom"}));else if(ue.value==="autoDisallow")se("autoDisallowCommands"),pe(t.autoDisallowCommands||"");else if(ue.value==="ollamaEndpoint")m(w=>{let U=w.ollamaEndpoint==="Local"?"Cloud":"Local",Ee={...w,ollamaEndpoint:U};return b({systemSettings:Ee,apiTier:h,quotas:s}),Ee});else if(ue.value==="apiTier")y("apiTier");else if(ue.value==="aiProvider")X&&X("settings"),y("selectProvider");else if(ue.value==="advanceRollback")t.advanceRollback?m(w=>{let U={...w,advanceRollback:!1};return b({systemSettings:U,apiTier:h,quotas:s}),U}):y("advanceRollbackDanger");else if(ue.value==="autoDelete"){let w=["1d","7d","30d"],Ee=(w.indexOf(t.autoDeleteHistory||"30d")+1)%w.length;m(Xe=>({...Xe,autoDeleteHistory:w[Ee]}))}else if(ue.value==="autoUpdate")m(w=>({...w,autoUpdate:!w.autoUpdate}));else if(ue.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||""}),y("input");else{let w={...t,useExternalData:!1};m(w),b({systemSettings:w,apiTier:h,quotas:s}),k(U=>[...U,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),y("chat")}else if(ue.value==="updateManager")y("updateManager");else if(ue.value==="parserDownload")y("parserDownload");else if(ue.value==="indentationTree")m(w=>{let U={...w,indentationTree:w.indentationTree===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="compressToolResults")m(w=>{let U={...w,compressToolResults:!w.compressToolResults};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="autoTruncateResults")m(w=>{let U={...w,autoTruncateResults:!w.autoTruncateResults};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="imageHistoryCU"){let w=["Low","Standard","Extended"],Ee=(w.indexOf(t.imageHistoryCU||"Standard")+1)%w.length;m(Xe=>{let Re={...Xe,imageHistoryCU:w[Ee]};return b({systemSettings:Re,apiTier:h,quotas:s}),Re})}else if(ue.value==="contextLength"){let w=["16k","32k","64k","128k","256k","512k","1M"],Ee=(w.indexOf(t.contextLength||"256k")+1)%w.length;m(Xe=>{let Re={...Xe,contextLength:w[Ee]};return b({systemSettings:Re,apiTier:h,quotas:s}),Re})}else if(ue.value==="keepReasoningContext")m(w=>{let U={...w,keepReasoningContext:!w.keepReasoningContext};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="autoExcludeMetadata")m(w=>{let U={...w,autoExcludeMetadata:!w.autoExcludeMetadata};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="disableTodo")m(w=>{let U={...w,disableTodo:!w.disableTodo};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="subAgents")m(w=>{let U={...w,subAgents:w.subAgents===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="subAgentModel"){let w=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",U=oe.findIndex(Ee=>Ee.value===w);R(U>=0?U:0),We(!0)}else if(ue.value==="preserveThinking")m(w=>{let U={...w,preserveThinking:w.preserveThinking===!1};return ml(U.preserveThinking),b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="loadingPhrases")m(w=>{let U={...w,loadingPhrases:w.loadingPhrases===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="progressiveRendering")m(w=>{let U={...w,progressiveRendering:!w.progressiveRendering};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="showTPMEstimate")m(w=>{let U={...w,showTPMEstimate:!w.showTPMEstimate};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="theme"){let w=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",U=xo.indexOf(w);le(U>=0?U:0),be(t.theme||"Dark"),Ce(!0)}},Me=Je(t.theme);if(ee){let ue=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",w=15,U=te;me<U?U=me:me>=U+w&&(U=me-w+1),U=Math.max(0,Math.min(U,Math.max(0,oe.length-w))),U!==te&&Z(U);let Ee=oe.slice(U,U+w);return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:1,width:"100%",minHeight:32},v.createElement(Ne,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:Me.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),oe.length>0&&v.createElement(K,{color:"gray"},me+1,"/",oe.length)),v.createElement(Ne,{borderStyle:"single",borderColor:he==="search"?Me.primary||"cyan":"gray",paddingX:1,marginBottom:1},v.createElement(K,{color:he==="search"?Me.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),v.createElement(K,{color:Me.text},ae),he==="search"&&v.createElement(K,{color:Me.primary||"cyan"},"\u2588"),!ae&&he!=="search"&&v.createElement(K,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),v.createElement(Ne,{flexDirection:"column",flexGrow:1,height:w},Ee.length>0?Ee.map((Xe,Re)=>{let it=U+Re;if(Xe.isHeader)return v.createElement(Ne,{key:`hdr-${it}`,paddingX:1},v.createElement(K,{color:"gray",bold:!0,underline:!0},Xe.label));let Ye=me===it&&he==="list",qt=ue===Xe.value;return v.createElement(Ne,{key:`item-${Xe.value}-${it}`,paddingX:1,backgroundColor:Ye?Me.highlightBg:void 0},v.createElement(K,{color:Ye?Me.text:Me.textDim,bold:Ye},Ye?"\u276F ":" ",Xe.label,qt?v.createElement(K,{color:Me.primary||"cyan",italic:!0}," (active)"):""))}):v.createElement(Ne,{paddingX:1},v.createElement(K,{color:"gray",italic:!0},'No models matching "',ae,'"'))),v.createElement(Ne,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),v.createElement(K,{color:he==="search"?Me.primary||"cyan":"gray",bold:!0},"[",he.toUpperCase()," MODE]")))}if(Be){let ue=xo[Fe],w=Je(ue);return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:w.border,padding:1,width:"100%",minHeight:32},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.text,bold:!0},"Choose your color scheme:")),v.createElement(Ne,{flexDirection:"row",width:"100%",flexGrow:1},v.createElement(Ne,{flexDirection:"column",width:"30%",paddingRight:1},xo.map((U,Ee)=>{let Xe=Fe===Ee,Re=(t.theme||"Dark")===U,it=U==="Forest Sprite";return v.createElement(Ne,{key:U,paddingX:0},v.createElement(K,{color:Xe?w.text:w.textDim,bold:Xe},Xe?"> ":" ",U,it&&v.createElement(K,{color:Xe?w.success||"#52b788":"green",bold:!0}," \u2605"),Re?v.createElement(K,{color:w.primary||"cyan",italic:!0}," (saved)"):""))})),v.createElement(Ne,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:w.borderMuted,paddingX:2,paddingY:1,backgroundColor:w.cardBg},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.secondary||"cyan",bold:!0},"> ","you: "),v.createElement(K,{color:w.text},"add a greeting function")),v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.success||"green"}," Here's the change:")),v.createElement(Ne,{flexDirection:"column",marginLeft:2,marginBottom:1},v.createElement(K,null,v.createElement(K,{color:w.textDim},"3 "),v.createElement(K,{color:w.textDim},' import "fmt"')),v.createElement(K,{color:w.textDim},"4"),v.createElement(Ne,{backgroundColor:w.diffRemovalBg},v.createElement(K,null,v.createElement(K,{color:w.diffRemovalNum||w.diffRemovalText},"5 "),v.createElement(K,{color:w.diffRemovalPrefix||w.diffRemovalText},"- "),v.createElement(K,{color:w.diffRemovalText},"func "),v.createElement(K,{color:w.diffRemovalHighlightColor||w.diffRemovalText,backgroundColor:w.diffRemovalHighlightBg,bold:!0},"main()"),v.createElement(K,{color:w.diffRemovalText}," {"))),v.createElement(Ne,{backgroundColor:w.diffAdditionBg},v.createElement(K,null,v.createElement(K,{color:w.diffAdditionNum||w.diffAdditionText},"5 "),v.createElement(K,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),v.createElement(K,{color:w.diffAdditionText},"func "),v.createElement(K,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg,bold:!0},"greet(name string)"),v.createElement(K,{color:w.diffAdditionText}," {"))),v.createElement(Ne,{backgroundColor:w.diffAdditionBg},v.createElement(K,null,v.createElement(K,{color:w.diffAdditionNum||w.diffAdditionText},"6 "),v.createElement(K,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),v.createElement(K,{color:w.diffAdditionText}," "),v.createElement(K,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),v.createElement(K,{color:w.textDim},"7 }")),v.createElement(Ne,{flexDirection:"column",marginTop:1,marginBottom:1},v.createElement(K,{color:w.textDim},"\u25BE Thought Process"),v.createElement(K,{color:w.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),v.createElement(Ne,{flexDirection:"column"},v.createElement(K,null,v.createElement(K,{color:w.warning||"yellow"},"\u2699 tool: "),v.createElement(K,{color:w.text},"write_file main.go")),v.createElement(K,null,v.createElement(K,{color:w.accent||"magenta"},"\u29BF task: "),v.createElement(K,{color:w.text},"Implementing greeting")),v.createElement(K,null,v.createElement(K,{color:w.danger||"red"},"X error: "),v.createElement(K,{color:w.text},"compilation failed")),v.createElement(K,null,v.createElement(K,{color:w.warning||"yellow"},"\u26A0 warning: "),v.createElement(K,{color:w.text},"deprecation warning")),v.createElement(K,null,v.createElement(K,{color:w.info||"blue"},"\u2192 link: "),v.createElement(K,{color:w.info||"blue",underline:!0},"file:///path/to/main.go")),v.createElement(K,null,v.createElement(K,{color:w.accent||"magenta"},"\u2605 accent: "),v.createElement(K,{color:w.text},"highlighted text")),v.createElement(K,{color:w.textDim},"\xB7 dim: press Enter to continue")))),v.createElement(Ne,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),v.createElement(K,{color:"gray"},"Previewing: ",xo[Fe],xo[Fe]==="Forest Sprite"?" \u2605":"")))}return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:0,width:"100%",minHeight:32},v.createElement(Ne,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Me.borderMuted,width:"100%"},v.createElement(K,{color:Me.text,bold:!0},"SYSTEM CONFIGURATION")),v.createElement(Ne,{flexDirection:"row",width:"100%",minHeight:26},v.createElement(Ne,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:P==="categories"?Me.border:Me.borderMuted,padding:1,paddingY:0},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:P==="categories"?Me.text:Me.textDim,bold:!0,underline:!0},"CATEGORIES")),ho.map((ue,w)=>{let U=L===w,Ee=ue.id==="exit";return v.createElement(Ne,{key:ue.id,marginTop:Ee?15:0,backgroundColor:U?P==="categories"?Me.highlightBg:Me.cardBg:void 0,paddingX:1},v.createElement(K,{color:U&&P==="categories"?Me.text:Me.textDim,bold:U},U?"\u276F ":" ",ue.label))})),v.createElement(Ne,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:P==="items"?Me.border:Me.borderMuted,paddingX:1,marginLeft:1,paddingY:0},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:P==="items"?Me.text:Me.textDim,bold:!0,underline:!0},ho[L].label.toUpperCase().includes("EXIT")?"Runtime Information":`${ho[L].label} Settings`)),Ge.length>0?(()=>{let ue=null,w=[],U=je=>(je||"").split(",").map(kt=>kt.trim().toLowerCase()).filter(Boolean),Ee=U(t.autoApproveCommands),Xe=U(t.autoDisallowCommands),Re=U(t.alwaysAskCommands),it=[...Ee,...Xe,...Re],Ye=new Set(it),qt=tn==="security"&&it.length!==Ye.size;return Ge.forEach((je,kt)=>{let zt=P==="items"&&Q===kt,Xr=je.label.length,on=Math.max(2,38-Xr),Wr=".".repeat(on),mt=Le=>tn==="security"?(Le.value==="autoExec"||Le.value==="externalAccess")&&Le.status==="ON"?Me.statusOn:Me.statusOff:Le.status?.startsWith("\u2713")?Me.statusOn:Le.status?.startsWith("\u26A0")?Me.statusOff:Le.status==="ON"?Me.statusOn:Le.status==="OFF"?Me.statusOff:Me.text;je.section&&je.section!==ue&&(ue=je.section,w.push(v.createElement(Ne,{key:`sec-hdr-${je.section}`,marginTop:w.length>0?1:0,marginBottom:0,paddingX:1},v.createElement(K,{color:"gray",bold:!0,underline:!0},je.section.toUpperCase()))));let z=zt&&ye&&(ye==="alwaysAskCommands"&&je.value==="alwaysAsk"||ye==="autoApproveCommands"&&je.value==="autoApprove"||ye==="autoDisallowCommands"&&je.value==="autoDisallow"),lt=je.value==="alwaysAsk"||je.value==="autoApprove"||je.value==="autoDisallow",Wo=je.value==="parserDownload";w.push(v.createElement(Ne,{key:je.value,flexDirection:"column"},v.createElement(Ne,{backgroundColor:zt&&!z?Me.highlightBg:void 0,paddingX:2},v.createElement(K,{color:zt?Me.text:Me.textDim,bold:zt},zt?"\u276F ":" ",je.label),!lt&&!Wo&&v.createElement(v.Fragment,null,v.createElement(K,{color:"gray"},Wr),v.createElement(K,{color:mt(je),bold:!0},je.value==="aiProvider"?je.status:`[ ${je.status} ]`))),lt&&!z&&je.status!=="None"&&v.createElement(Ne,{paddingX:4,marginBottom:1},v.createElement(K,{color:"gray"},"\u21B3 ",je.status)),z&&v.createElement(Ne,{flexDirection:"column",marginLeft:4,marginBottom:1},v.createElement(Ne,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},v.createElement(K,{color:"gray",bold:!0},"> "," "),v.createElement(Cd,{value:ie,onChange:pe,onSubmit:Le=>{let _t={...t,[ye]:Le.trim(),sandboxPreset:"Custom"};m(_t),b({systemSettings:_t,apiTier:h,quotas:s}),se(null)}})),v.createElement(K,{color:"gray",italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),qt&&w.push(v.createElement(Ne,{key:"conflict-warning",marginTop:1,paddingX:1},v.createElement(K,{color:Me.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),w})():v.createElement(Ne,{paddingX:1,flexDirection:"column",width:"100%"},tn==="exit"?v.createElement(v.Fragment,null,v.createElement(Ne,{flexDirection:"column",marginBottom:1},v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"OS"," "),v.createElement(K,{color:"gray"},"..................... "),v.createElement(K,{color:Me.text},process.env.OS||process.platform||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Computer Name"," "),v.createElement(K,{color:"gray"},".......... "),v.createElement(K,{color:Me.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Processor Count"," "),v.createElement(K,{color:"gray"},"........ "),v.createElement(K,{color:Me.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Node.js Version"," "),v.createElement(K,{color:"gray"},"........ "),v.createElement(K,{color:Me.text},"v",process.versions.node)),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"V8 Version"," "),v.createElement(K,{color:"gray"},"...... ...... "),v.createElement(K,{color:Me.text},"v",process.versions.v8)),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Data Directory"," "),v.createElement(K,{color:"gray"},"......... "),ro===mo?"":v.createElement(K,{color:Me.text},ro.replaceAll(Tl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),v.createElement(K,{color:Me.text},mo.replaceAll(Tl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Viewport"," "),v.createElement(K,{color:"gray"},"............... "),v.createElement(K,{color:Me.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),v.createElement(Ne,{flexDirection:"row",marginBottom:0},v.createElement(K,{color:Me.textDim},"Memory Load"," "),v.createElement(K,{color:"gray"},"............ "),v.createElement(K,{color:Me.text},ce,"/",D," ",qe))),v.createElement(Ne,{key:"pty-notice",paddingX:0,marginTop:0},v.createElement(K,{color:Gt?Me.statusOn:Me.warning},Gt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):v.createElement(K,{color:"gray",italic:!0},ho[L].desc)))),v.createElement(Ne,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},P==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),P==="categories"&&v.createElement(K,{color:"gray"},ho[L].desc)))}import Jt,{useState as ks,useEffect as Ed}from"react";import{Box as Bn,Text as er}from"ink";import Bd from"ink-text-input";function Is({initialData:t,onSave:m,onCancel:h,theme:y="Dark"}){let T=Je(y),[b,s]=ks(0),[k,f]=ks(""),[I,A]=ks(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),X=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],S=X[b];Ed(()=>{let L=X[b].key;f((I[L]||"").slice(0,X[b].maxLength))},[b,I]);let C=L=>{L.length>S.maxLength?f(L.slice(0,S.maxLength)):f(L)},P=L=>{if(L.trim().toLowerCase()==="/cancel"){h();return}let _=S.key,Q={...I,[_]:L.trim().slice(0,S.maxLength)};A(Q),f(""),b<X.length-1?s(b+1):m(Q)},N=k.length>=S.maxLength;return Jt.createElement(Bn,{borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},Jt.createElement(Bn,{paddingX:1,marginBottom:1},Jt.createElement(er,{color:T.text,bold:!0},"USER PROFILE CONFIGURATION")),Jt.createElement(Bn,{paddingX:1,flexDirection:"column"},Jt.createElement(Bn,null,Jt.createElement(er,{color:T.text,bold:!0},S.label),Jt.createElement(Bd,{value:k,onChange:C,onSubmit:P})),Jt.createElement(Bn,{marginTop:1,justifyContent:"space-between"},Jt.createElement(er,{color:T.textMuted,italic:!0},"Step ",b+1," of ",X.length),Jt.createElement(er,{color:N?T.warning||"yellow":T.textMuted},"[",k.length,"/",S.maxLength,"]"))),Jt.createElement(Bn,{paddingX:1,marginTop:1},Jt.createElement(er,{color:T.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import yt,{useState as As}from"react";import{Box as Zt,Text as $o,useInput as Dd}from"ink";import kd from"ink-text-input";var Id=({question:t,options:m,onResolve:h,theme:y="Dark"})=>{let T=Je(y),[b,s]=As(!1),[k,f]=As(""),[I,A]=As(0),X=!1,S=[],C=Array.isArray(m)&&m.length>0,P=t==="Agent has been running for a long time. Do you want to continue execution?";try{P&&C?S=[...m]:S=[...C?m:[],C?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{X=!0}Dd((L,_)=>{if(!b&&((_.leftArrow||_.upArrow)&&A(Q=>Math.max(0,Q-1)),(_.rightArrow||_.downArrow)&&A(Q=>Math.min(S.length-1,Q+1)),_.return)){let Q=S[I];Q?.id==="CUSTOM"?s(!0):h(X?"Selected Nothing":Q.label)}});let N=nt(2);return b?yt.createElement(Zt,{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%"},yt.createElement(Zt,{paddingX:1},yt.createElement($o,{color:T.text,bold:!0},"SUGGEST SOMETHING")),yt.createElement(Zt,{marginTop:1,paddingX:1},yt.createElement($o,{italic:!0,color:T.textMuted},"Replying to: ",t)),yt.createElement(Zt,{marginTop:1,paddingX:1,flexDirection:"row"},yt.createElement(kd,{value:k,onChange:f,onSubmit:()=>h(k)})),yt.createElement(Zt,{marginTop:1,paddingX:1,marginBottom:1},yt.createElement($o,{color:T.textMuted,italic:!0},"(Press Enter to send)"))):yt.createElement(Zt,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},yt.createElement(Zt,{paddingX:1,marginBottom:1},yt.createElement($o,{color:"yellow",bold:!0},P?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),yt.createElement(Zt,{paddingX:1,marginBottom:1},yt.createElement($o,{color:T.text},t)),yt.createElement(Zt,{flexDirection:"column",width:"100%"},S.map((L,_)=>{let Q=_===I;return yt.createElement(Zt,{key:L.id,flexDirection:"column",width:"100%",backgroundColor:Q?T.highlightBg:void 0,paddingX:1,marginBottom:_===S.length-1?0:1},yt.createElement($o,{color:Q?T.text:T.textMuted,bold:Q},Q?"\u276F ":" ",L.label),L.description&&yt.createElement(Zt,{marginLeft:4},yt.createElement($o,{color:T.textMuted,italic:!0},L.description)))})),yt.createElement(Zt,{paddingX:1,marginTop:1,marginBottom:1},yt.createElement($o,{color:T.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},yl=Id;import Zd from"gradient-string";import Lt,{useState as Ls,useEffect as Ad}from"react";import{Box as po,Text as _o,useInput as Ld}from"ink";function Ps({onSelect:t,onDelete:m,onClose:h,theme:y="Dark"}){let T=Je(y),[b,s]=Ls({}),[k,f]=Ls([]),[I,A]=Ls(0);Ad(()=>{(async()=>{let L=await Fo();s(L),f(Object.keys(L).sort((_,Q)=>(L[Q].updatedAt||0)-(L[_].updatedAt||0)))})()},[]),Ld((N,L)=>{if(L.escape&&h(),L.upArrow&&A(_=>Math.max(0,_-1)),L.downArrow&&A(_=>Math.min(k.length-1,_+1)),L.return&&k[I]&&t(k[I]),N==="x"&&k[I]){let _=k[I];m(_).then(Q=>{let ge=Q||{};s(ge);let ye=Object.keys(ge).sort((se,ie)=>(ge[ie]?.updatedAt||0)-(ge[se]?.updatedAt||0));f(ye),A(se=>Math.max(0,Math.min(ye.length-1,se)))})}});let X=nt(2),S=15,C=0;if(k.length>S){let N=Math.floor(S/2);C=I-N,C<0?C=0:C+S>k.length&&(C=k.length-S)}let P=k.slice(C,C+S);return Lt.createElement(po,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Lt.createElement(po,{paddingX:1,marginBottom:1},Lt.createElement(_o,{color:T.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),k.length===0?Lt.createElement(po,{paddingX:2,paddingY:1},Lt.createElement(_o,{italic:!0,color:T.textMuted},"No saved chats found.")):Lt.createElement(po,{flexDirection:"column",width:"100%"},C>0&&Lt.createElement(po,{paddingX:2,marginBottom:1},Lt.createElement(_o,{color:T.textMuted},"\u25B2 (+",C," more chats above)")),P.map((N,L)=>{let _=b[N],ge=C+L===I,ye=Pd(_?.updatedAt);return Lt.createElement(po,{key:N,paddingX:1,backgroundColor:ge?T.highlightBg:void 0,width:"100%"},Lt.createElement(po,{flexGrow:1},Lt.createElement(_o,{color:ge?T.text:T.textMuted,bold:ge},ge?"\u276F ":" ",(()=>{let se=ie=>(ie||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return _?.name&&!_.name.startsWith("Session")?se(_.name):_?.prompt?se(_.prompt):se(_?.name)||N})(),Lt.createElement(_o,{color:T.textMuted}," [",ye," \u2022 ",N,"]"))),ge&&Lt.createElement(po,{flexShrink:0},Lt.createElement(_o,{color:T.danger,bold:!0},"[X] DELETE ")))}),C+S<k.length&&Lt.createElement(po,{paddingX:2,marginTop:1},Lt.createElement(_o,{color:T.textMuted},"\u25BC (+",k.length-(C+S)," more chats below)"))),Lt.createElement(po,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Lt.createElement(_o,{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 m=new Date(t);if(isNaN(m.getTime()))return"N/A";let h=k=>String(k).padStart(2,"0"),y=h(m.getMonth()+1),T=h(m.getDate()),b=h(m.getHours()),s=h(m.getMinutes());return`${y}-${T} ${b}:${s}`}import Mt,{useState as Os,useEffect as Od}from"react";import{Box as bo,Text as lo,useInput as Nd,useStdout as Fd}from"ink";function Ns({onClose:t,theme:m="Dark"}){let h=Je(m),{stdout:y}=Fd(),T=y?.columns||80,[b,s]=Os([]),[k,f]=Os(0),[I,A]=Os(!0),X=()=>{let se=Tr(Wn,[]);s(se);try{let pe=wr(zo,{}).systemSettings?.memory!==!1;A(pe)}catch{A(!0)}};Od(()=>{X()},[]),Nd((se,ie)=>{if(ie.escape&&t(),ie.upArrow&&f(pe=>Math.max(0,pe-1)),ie.downArrow&&f(pe=>Math.min(b.length-1,pe+1)),se==="x"&&b.length>0){let pe=b[k].id,Be=b.filter(Ce=>Ce.id!==pe);Bi(Wn,Be),s(Be),k>=Be.length&&Be.length>0&&f(Be.length-1)}});let S=(se,ie,pe)=>{if(!se)return"";let Be=se.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Fe=`${pe?"\u276F ":" "}${ie+1}. `.length,le=pe?22:2;return Be.split(`
44
+ ---`)&&Ee.push({label:kt,value:kt,isHeader:!1,provider:it})}))}return Ee},[f,h,s,at]),oe=v.useMemo(()=>{if(!ae.trim())return ve;let ue=ae.trim().toLowerCase(),w=[],U=null;for(let Ee of ve)Ee.isHeader?U=Ee:(Ee.label.toLowerCase().includes(ue)||Ee.value&&Ee.value.toLowerCase().includes(ue))&&(U&&!w.includes(U)&&w.push(U),w.push(Ee));return w},[ve,ae]);Rn(()=>{if(ee){let ue=oe.findIndex(w=>!w.isHeader);R(ue>=0?ue:0),Z(0)}},[ae]),Rn(()=>{if(ee){if(oe.length===0){R(0),Z(0);return}if(me>=oe.length||oe[me]?.isHeader){let ue=oe.findIndex(w=>!w.isHeader);R(ue>=0?ue:0)}}},[oe,ee]);let[ce,Se]=At(0),[D,Ue]=At(0),[qe,Ct]=At("MB"),[Gt,Hr]=At(!1);Rn(()=>{let ue=!1;return import("./exec_command-J23EG77W.js").then(w=>{ue||Hr(!!w.isPtyAvailable)}).catch(()=>{}),()=>{ue=!0}},[]),Rn(()=>{let ue=vd.getHeapStatistics().heap_size_limit,w=ue>=1024*1024*1024,U=w?"GB":"MB",Ee=w?1024*1024*1024:1024*1024;Ue(parseFloat((ue/Ee).toFixed(2))),Ct(U);let Xe=()=>{let qt=process.memoryUsage().rss/Ee,je=w?parseFloat(qt.toFixed(2)):Math.round(qt);Se(je)};Xe();let Re=setInterval(()=>{Xe()},3e4);return()=>clearInterval(Re)},[]);let en=ue=>{switch(ue){case"providers":{let U=[{label:"Current Provider",value:"aiProvider",status:f}];return f==="Ollama"&&U.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),U}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:wl(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:Ds(t.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Ds(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Ds(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[]}},tn=ho[L].id,Ge=en(tn);Sd((ue,w)=>{if(ee){if(w.tab){Ae(U=>U==="search"?"list":"search");return}if(he==="search"){w.escape?We(!1):w.downArrow||w.return?Ae("list"):w.backspace||w.delete?fe(U=>U.slice(0,-1)):ue&&!w.ctrl&&!w.meta&&ue.length===1&&fe(U=>U+ue);return}if(w.upArrow)R(U=>{if(oe.length===0)return 0;let Ee=(U-1+oe.length)%oe.length,Xe=0;for(;oe[Ee]?.isHeader&&Xe<oe.length;)Ee=(Ee-1+oe.length)%oe.length,Xe++;return Ee});else if(w.downArrow)R(U=>{if(oe.length===0)return 0;let Ee=(U+1)%oe.length,Xe=0;for(;oe[Ee]?.isHeader&&Xe<oe.length;)Ee=(Ee+1)%oe.length,Xe++;return Ee});else if(w.return){let U=oe[me];U&&!U.isHeader&&(m(Ee=>{let Xe=U.value==="Default",Re={...Ee,CustomSubAgent:!Xe,SubAgentModel:U.value,SubAgentProvider:Xe?"":U.provider||""};return b({systemSettings:Re,apiTier:h,quotas:s}),Re}),We(!1))}else w.escape?We(!1):ue&&!w.ctrl&&!w.meta&&ue.length===1&&(fe(U=>U+ue),Ae("search"));return}if(Be){if(w.upArrow){let U=(Fe-1+xo.length)%xo.length;le(U)}else if(w.downArrow){let U=(Fe+1)%xo.length;le(U)}else if(w.return){let U=xo[Fe];m(Ee=>{let Xe={...Ee,theme:U};return b({systemSettings:Xe,apiTier:h,quotas:s}),Xe}),A?A():Ce(!1)}else w.escape&&(A?A():Ce(!1));return}if(ye){w.escape&&se(null);return}if(P==="categories")w.upArrow?_(U=>(U-1+ho.length)%ho.length):w.downArrow?_(U=>(U+1)%ho.length):w.return||w.rightArrow?ho[L].id==="exit"?y("chat"):(N("items"),ge(0)):w.escape&&y("chat");else if(P==="items"){if(w.upArrow)ge(U=>(U-1+Ge.length)%Ge.length);else if(w.downArrow)ge(U=>(U+1)%Ge.length);else if(w.leftArrow||w.escape)N("categories");else if(w.return){let U=Ge[Q];Rt(U)}}});let Rt=ue=>{if(ue.value==="memory")m(w=>({...w,memory:!w.memory}));else if(ue.value==="sandboxPreset"){let w=wl(t),U=["Autonomous","Balanced","Strict"],Xe=(U.indexOf(w)+1)%U.length,Re=U[Xe];m(it=>{let Ye={...it,sandboxPreset:Re};return Re==="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):Re==="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):Re==="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(ue.value==="autoExec")t.autoExec?m(w=>({...w,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?y("doubleDanger"):y("autoExecDanger");else if(ue.value==="externalAccess")t.allowExternalAccess?m(w=>({...w,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?y("doubleDanger"):y("externalDanger");else if(ue.value==="networkAccess")m(w=>({...w,networkAccess:w.networkAccess===!1,sandboxPreset:"Custom"}));else if(ue.value==="alwaysAsk")se("alwaysAskCommands"),pe(t.alwaysAskCommands||"");else if(ue.value==="autoApprove")se("autoApproveCommands"),pe(t.autoApproveCommands||"");else if(ue.value==="autoApproveGit")m(w=>({...w,autoApproveGit:!w.autoApproveGit,sandboxPreset:"Custom"}));else if(ue.value==="autoDisallow")se("autoDisallowCommands"),pe(t.autoDisallowCommands||"");else if(ue.value==="ollamaEndpoint")m(w=>{let U=w.ollamaEndpoint==="Local"?"Cloud":"Local",Ee={...w,ollamaEndpoint:U};return b({systemSettings:Ee,apiTier:h,quotas:s}),Ee});else if(ue.value==="apiTier")y("apiTier");else if(ue.value==="aiProvider")X&&X("settings"),y("selectProvider");else if(ue.value==="advanceRollback")t.advanceRollback?m(w=>{let U={...w,advanceRollback:!1};return b({systemSettings:U,apiTier:h,quotas:s}),U}):y("advanceRollbackDanger");else if(ue.value==="autoDelete"){let w=["1d","7d","30d"],Ee=(w.indexOf(t.autoDeleteHistory||"30d")+1)%w.length;m(Xe=>({...Xe,autoDeleteHistory:w[Ee]}))}else if(ue.value==="autoUpdate")m(w=>({...w,autoUpdate:!w.autoUpdate}));else if(ue.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||""}),y("input");else{let w={...t,useExternalData:!1};m(w),b({systemSettings:w,apiTier:h,quotas:s}),k(U=>[...U,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),y("chat")}else if(ue.value==="updateManager")y("updateManager");else if(ue.value==="parserDownload")y("parserDownload");else if(ue.value==="indentationTree")m(w=>{let U={...w,indentationTree:w.indentationTree===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="compressToolResults")m(w=>{let U={...w,compressToolResults:!w.compressToolResults};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="autoTruncateResults")m(w=>{let U={...w,autoTruncateResults:!w.autoTruncateResults};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="imageHistoryCU"){let w=["Low","Standard","Extended"],Ee=(w.indexOf(t.imageHistoryCU||"Standard")+1)%w.length;m(Xe=>{let Re={...Xe,imageHistoryCU:w[Ee]};return b({systemSettings:Re,apiTier:h,quotas:s}),Re})}else if(ue.value==="contextLength"){let w=["16k","32k","64k","128k","256k","512k","1M"],Ee=(w.indexOf(t.contextLength||"256k")+1)%w.length;m(Xe=>{let Re={...Xe,contextLength:w[Ee]};return b({systemSettings:Re,apiTier:h,quotas:s}),Re})}else if(ue.value==="keepReasoningContext")m(w=>{let U={...w,keepReasoningContext:!w.keepReasoningContext};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="autoExcludeMetadata")m(w=>{let U={...w,autoExcludeMetadata:!w.autoExcludeMetadata};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="disableTodo")m(w=>{let U={...w,disableTodo:!w.disableTodo};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="subAgents")m(w=>{let U={...w,subAgents:w.subAgents===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="subAgentModel"){let w=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",U=oe.findIndex(Ee=>Ee.value===w);R(U>=0?U:0),We(!0)}else if(ue.value==="preserveThinking")m(w=>{let U={...w,preserveThinking:w.preserveThinking===!1};return ml(U.preserveThinking),b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="loadingPhrases")m(w=>{let U={...w,loadingPhrases:w.loadingPhrases===!1};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="progressiveRendering")m(w=>{let U={...w,progressiveRendering:!w.progressiveRendering};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="showTPMEstimate")m(w=>{let U={...w,showTPMEstimate:!w.showTPMEstimate};return b({systemSettings:U,apiTier:h,quotas:s}),U});else if(ue.value==="theme"){let w=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",U=xo.indexOf(w);le(U>=0?U:0),be(t.theme||"Dark"),Ce(!0)}},Me=Je(t.theme);if(ee){let ue=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",w=15,U=te;me<U?U=me:me>=U+w&&(U=me-w+1),U=Math.max(0,Math.min(U,Math.max(0,oe.length-w))),U!==te&&Z(U);let Ee=oe.slice(U,U+w);return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:1,width:"100%",minHeight:32},v.createElement(Ne,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:Me.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),oe.length>0&&v.createElement(K,{color:"gray"},me+1,"/",oe.length)),v.createElement(Ne,{borderStyle:"single",borderColor:he==="search"?Me.primary||"cyan":"gray",paddingX:1,marginBottom:1},v.createElement(K,{color:he==="search"?Me.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),v.createElement(K,{color:Me.text},ae),he==="search"&&v.createElement(K,{color:Me.primary||"cyan"},"\u2588"),!ae&&he!=="search"&&v.createElement(K,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),v.createElement(Ne,{flexDirection:"column",flexGrow:1,height:w},Ee.length>0?Ee.map((Xe,Re)=>{let it=U+Re;if(Xe.isHeader)return v.createElement(Ne,{key:`hdr-${it}`,paddingX:1},v.createElement(K,{color:"gray",bold:!0,underline:!0},Xe.label));let Ye=me===it&&he==="list",qt=ue===Xe.value;return v.createElement(Ne,{key:`item-${Xe.value}-${it}`,paddingX:1,backgroundColor:Ye?Me.highlightBg:void 0},v.createElement(K,{color:Ye?Me.text:Me.textDim,bold:Ye},Ye?"\u276F ":" ",Xe.label,qt?v.createElement(K,{color:Me.primary||"cyan",italic:!0}," (active)"):""))}):v.createElement(Ne,{paddingX:1},v.createElement(K,{color:"gray",italic:!0},'No models matching "',ae,'"'))),v.createElement(Ne,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),v.createElement(K,{color:he==="search"?Me.primary||"cyan":"gray",bold:!0},"[",he.toUpperCase()," MODE]")))}if(Be){let ue=xo[Fe],w=Je(ue);return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:w.border,padding:1,width:"100%",minHeight:32},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.text,bold:!0},"Choose your color scheme:")),v.createElement(Ne,{flexDirection:"row",width:"100%",flexGrow:1},v.createElement(Ne,{flexDirection:"column",width:"30%",paddingRight:1},xo.map((U,Ee)=>{let Xe=Fe===Ee,Re=(t.theme||"Dark")===U,it=U==="Forest Sprite";return v.createElement(Ne,{key:U,paddingX:0},v.createElement(K,{color:Xe?w.text:w.textDim,bold:Xe},Xe?"> ":" ",U,it&&v.createElement(K,{color:Xe?w.success||"#52b788":"green",bold:!0}," \u2605"),Re?v.createElement(K,{color:w.primary||"cyan",italic:!0}," (saved)"):""))})),v.createElement(Ne,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:w.borderMuted,paddingX:2,paddingY:1,backgroundColor:w.cardBg},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.secondary||"cyan",bold:!0},"> ","you: "),v.createElement(K,{color:w.text},"add a greeting function")),v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:w.success||"green"}," Here's the change:")),v.createElement(Ne,{flexDirection:"column",marginLeft:2,marginBottom:1},v.createElement(K,null,v.createElement(K,{color:w.textDim},"3 "),v.createElement(K,{color:w.textDim},' import "fmt"')),v.createElement(K,{color:w.textDim},"4"),v.createElement(Ne,{backgroundColor:w.diffRemovalBg},v.createElement(K,null,v.createElement(K,{color:w.diffRemovalNum||w.diffRemovalText},"5 "),v.createElement(K,{color:w.diffRemovalPrefix||w.diffRemovalText},"- "),v.createElement(K,{color:w.diffRemovalText},"func "),v.createElement(K,{color:w.diffRemovalHighlightColor||w.diffRemovalText,backgroundColor:w.diffRemovalHighlightBg,bold:!0},"main()"),v.createElement(K,{color:w.diffRemovalText}," {"))),v.createElement(Ne,{backgroundColor:w.diffAdditionBg},v.createElement(K,null,v.createElement(K,{color:w.diffAdditionNum||w.diffAdditionText},"5 "),v.createElement(K,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),v.createElement(K,{color:w.diffAdditionText},"func "),v.createElement(K,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg,bold:!0},"greet(name string)"),v.createElement(K,{color:w.diffAdditionText}," {"))),v.createElement(Ne,{backgroundColor:w.diffAdditionBg},v.createElement(K,null,v.createElement(K,{color:w.diffAdditionNum||w.diffAdditionText},"6 "),v.createElement(K,{color:w.diffAdditionPrefix||w.diffAdditionText},"+ "),v.createElement(K,{color:w.diffAdditionText}," "),v.createElement(K,{color:w.diffAdditionHighlightColor||w.diffAdditionText,backgroundColor:w.diffAdditionHighlightBg},'fmt.Printf("Hello, %s!\\n", name)'))),v.createElement(K,{color:w.textDim},"7 }")),v.createElement(Ne,{flexDirection:"column",marginTop:1,marginBottom:1},v.createElement(K,{color:w.textDim},"\u25BE Thought Process"),v.createElement(K,{color:w.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),v.createElement(Ne,{flexDirection:"column"},v.createElement(K,null,v.createElement(K,{color:w.warning||"yellow"},"\u2699 tool: "),v.createElement(K,{color:w.text},"write_file main.go")),v.createElement(K,null,v.createElement(K,{color:w.accent||"magenta"},"\u29BF task: "),v.createElement(K,{color:w.text},"Implementing greeting")),v.createElement(K,null,v.createElement(K,{color:w.danger||"red"},"X error: "),v.createElement(K,{color:w.text},"compilation failed")),v.createElement(K,null,v.createElement(K,{color:w.warning||"yellow"},"\u26A0 warning: "),v.createElement(K,{color:w.text},"deprecation warning")),v.createElement(K,null,v.createElement(K,{color:w.info||"blue"},"\u2192 link: "),v.createElement(K,{color:w.info||"blue",underline:!0},"file:///path/to/main.go")),v.createElement(K,null,v.createElement(K,{color:w.accent||"magenta"},"\u2605 accent: "),v.createElement(K,{color:w.text},"highlighted text")),v.createElement(K,{color:w.textDim},"\xB7 dim: press Enter to continue")))),v.createElement(Ne,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),v.createElement(K,{color:"gray"},"Previewing: ",xo[Fe],xo[Fe]==="Forest Sprite"?" \u2605":"")))}return v.createElement(Ne,{flexDirection:"column",borderStyle:"round",borderColor:Me.border,padding:0,width:"100%",minHeight:32},v.createElement(Ne,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Me.borderMuted,width:"100%"},v.createElement(K,{color:Me.text,bold:!0},"SYSTEM CONFIGURATION")),v.createElement(Ne,{flexDirection:"row",width:"100%",minHeight:26},v.createElement(Ne,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:P==="categories"?Me.border:Me.borderMuted,padding:1,paddingY:0},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:P==="categories"?Me.text:Me.textDim,bold:!0,underline:!0},"CATEGORIES")),ho.map((ue,w)=>{let U=L===w,Ee=ue.id==="exit";return v.createElement(Ne,{key:ue.id,marginTop:Ee?15:0,backgroundColor:U?P==="categories"?Me.highlightBg:Me.cardBg:void 0,paddingX:1},v.createElement(K,{color:U&&P==="categories"?Me.text:Me.textDim,bold:U},U?"\u276F ":" ",ue.label))})),v.createElement(Ne,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:P==="items"?Me.border:Me.borderMuted,paddingX:1,marginLeft:1,paddingY:0},v.createElement(Ne,{marginBottom:1},v.createElement(K,{color:P==="items"?Me.text:Me.textDim,bold:!0,underline:!0},ho[L].label.toUpperCase().includes("EXIT")?"Runtime Information":`${ho[L].label} Settings`)),Ge.length>0?(()=>{let ue=null,w=[],U=je=>(je||"").split(",").map(kt=>kt.trim().toLowerCase()).filter(Boolean),Ee=U(t.autoApproveCommands),Xe=U(t.autoDisallowCommands),Re=U(t.alwaysAskCommands),it=[...Ee,...Xe,...Re],Ye=new Set(it),qt=tn==="security"&&it.length!==Ye.size;return Ge.forEach((je,kt)=>{let zt=P==="items"&&Q===kt,Xr=je.label.length,on=Math.max(2,38-Xr),Wr=".".repeat(on),mt=Le=>tn==="security"?(Le.value==="autoExec"||Le.value==="externalAccess")&&Le.status==="ON"?Me.statusOn:Me.statusOff:Le.status?.startsWith("\u2713")?Me.statusOn:Le.status?.startsWith("\u26A0")?Me.statusOff:Le.status==="ON"?Me.statusOn:Le.status==="OFF"?Me.statusOff:Me.text;je.section&&je.section!==ue&&(ue=je.section,w.push(v.createElement(Ne,{key:`sec-hdr-${je.section}`,marginTop:w.length>0?1:0,marginBottom:0,paddingX:1},v.createElement(K,{color:"gray",bold:!0,underline:!0},je.section.toUpperCase()))));let z=zt&&ye&&(ye==="alwaysAskCommands"&&je.value==="alwaysAsk"||ye==="autoApproveCommands"&&je.value==="autoApprove"||ye==="autoDisallowCommands"&&je.value==="autoDisallow"),lt=je.value==="alwaysAsk"||je.value==="autoApprove"||je.value==="autoDisallow",Wo=je.value==="parserDownload";w.push(v.createElement(Ne,{key:je.value,flexDirection:"column"},v.createElement(Ne,{backgroundColor:zt&&!z?Me.highlightBg:void 0,paddingX:2},v.createElement(K,{color:zt?Me.text:Me.textDim,bold:zt},zt?"\u276F ":" ",je.label),!lt&&!Wo&&v.createElement(v.Fragment,null,v.createElement(K,{color:"gray"},Wr),v.createElement(K,{color:mt(je),bold:!0},je.value==="aiProvider"?je.status:`[ ${je.status} ]`))),lt&&!z&&je.status!=="None"&&v.createElement(Ne,{paddingX:4,marginBottom:1},v.createElement(K,{color:"gray"},"\u21B3 ",je.status)),z&&v.createElement(Ne,{flexDirection:"column",marginLeft:4,marginBottom:1},v.createElement(Ne,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},v.createElement(K,{color:"gray",bold:!0},"> "," "),v.createElement(Cd,{value:ie,onChange:pe,onSubmit:Le=>{let _t={...t,[ye]:Le.trim(),sandboxPreset:"Custom"};m(_t),b({systemSettings:_t,apiTier:h,quotas:s}),se(null)}})),v.createElement(K,{color:"gray",italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),qt&&w.push(v.createElement(Ne,{key:"conflict-warning",marginTop:1,paddingX:1},v.createElement(K,{color:Me.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),w})():v.createElement(Ne,{paddingX:1,flexDirection:"column",width:"100%"},tn==="exit"?v.createElement(v.Fragment,null,v.createElement(Ne,{flexDirection:"column",marginBottom:1},v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"OS"," "),v.createElement(K,{color:"gray"},"..................... "),v.createElement(K,{color:Me.text},process.env.OS||process.platform||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Computer Name"," "),v.createElement(K,{color:"gray"},".......... "),v.createElement(K,{color:Me.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Processor Count"," "),v.createElement(K,{color:"gray"},"........ "),v.createElement(K,{color:Me.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Node.js Version"," "),v.createElement(K,{color:"gray"},"........ "),v.createElement(K,{color:Me.text},"v",process.versions.node)),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"V8 Version"," "),v.createElement(K,{color:"gray"},"...... ...... "),v.createElement(K,{color:Me.text},"v",process.versions.v8)),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Data Directory"," "),v.createElement(K,{color:"gray"},"......... "),ro===mo?"":v.createElement(K,{color:Me.text},ro.replaceAll(Tl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),v.createElement(K,{color:Me.text},mo.replaceAll(Tl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),v.createElement(Ne,{flexDirection:"row"},v.createElement(K,{color:Me.textDim},"Viewport"," "),v.createElement(K,{color:"gray"},"............... "),v.createElement(K,{color:Me.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),v.createElement(Ne,{flexDirection:"row",marginBottom:0},v.createElement(K,{color:Me.textDim},"Memory Load"," "),v.createElement(K,{color:"gray"},"............ "),v.createElement(K,{color:Me.text},ce,"/",D," ",qe))),v.createElement(Ne,{key:"pty-notice",paddingX:0,marginTop:0},v.createElement(K,{color:Gt?Me.statusOn:Me.warning},Gt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):v.createElement(K,{color:"gray",italic:!0},ho[L].desc)))),v.createElement(Ne,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},v.createElement(K,{color:"gray",italic:!0},P==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),P==="categories"&&v.createElement(K,{color:"gray"},ho[L].desc)))}import Jt,{useState as ks,useEffect as Ed}from"react";import{Box as Bn,Text as er}from"ink";import Bd from"ink-text-input";function Is({initialData:t,onSave:m,onCancel:h,theme:y="Dark"}){let T=Je(y),[b,s]=ks(0),[k,f]=ks(""),[I,A]=ks(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),X=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],S=X[b];Ed(()=>{let L=X[b].key;f((I[L]||"").slice(0,X[b].maxLength))},[b,I]);let C=L=>{L.length>S.maxLength?f(L.slice(0,S.maxLength)):f(L)},P=L=>{if(L.trim().toLowerCase()==="/cancel"){h();return}let _=S.key,Q={...I,[_]:L.trim().slice(0,S.maxLength)};A(Q),f(""),b<X.length-1?s(b+1):m(Q)},N=k.length>=S.maxLength;return Jt.createElement(Bn,{borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},Jt.createElement(Bn,{paddingX:1,marginBottom:1},Jt.createElement(er,{color:T.text,bold:!0},"USER PROFILE CONFIGURATION")),Jt.createElement(Bn,{paddingX:1,flexDirection:"column"},Jt.createElement(Bn,null,Jt.createElement(er,{color:T.text,bold:!0},S.label),Jt.createElement(Bd,{value:k,onChange:C,onSubmit:P})),Jt.createElement(Bn,{marginTop:1,justifyContent:"space-between"},Jt.createElement(er,{color:T.textMuted,italic:!0},"Step ",b+1," of ",X.length),Jt.createElement(er,{color:N?T.warning||"yellow":T.textMuted},"[",k.length,"/",S.maxLength,"]"))),Jt.createElement(Bn,{paddingX:1,marginTop:1},Jt.createElement(er,{color:T.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import yt,{useState as As}from"react";import{Box as Zt,Text as $o,useInput as Dd}from"ink";import kd from"ink-text-input";var Id=({question:t,options:m,onResolve:h,theme:y="Dark"})=>{let T=Je(y),[b,s]=As(!1),[k,f]=As(""),[I,A]=As(0),X=!1,S=[],C=Array.isArray(m)&&m.length>0,P=t==="Agent has been running for a long time. Do you want to continue execution?";try{P&&C?S=[...m]:S=[...C?m:[],C?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{X=!0}Dd((L,_)=>{if(!b&&((_.leftArrow||_.upArrow)&&A(Q=>Math.max(0,Q-1)),(_.rightArrow||_.downArrow)&&A(Q=>Math.min(S.length-1,Q+1)),_.return)){let Q=S[I];Q?.id==="CUSTOM"?s(!0):h(X?"Selected Nothing":Q.label)}});let N=nt(2);return b?yt.createElement(Zt,{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%"},yt.createElement(Zt,{paddingX:1},yt.createElement($o,{color:T.text,bold:!0},"SUGGEST SOMETHING")),yt.createElement(Zt,{marginTop:1,paddingX:1},yt.createElement($o,{italic:!0,color:T.textMuted},"Replying to: ",t)),yt.createElement(Zt,{marginTop:1,paddingX:1,flexDirection:"row"},yt.createElement(kd,{value:k,onChange:f,onSubmit:()=>h(k)})),yt.createElement(Zt,{marginTop:1,paddingX:1,marginBottom:1},yt.createElement($o,{color:T.textMuted,italic:!0},"(Press Enter to send)"))):yt.createElement(Zt,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:T.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},yt.createElement(Zt,{paddingX:1,marginBottom:1},yt.createElement($o,{color:"yellow",bold:!0},P?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),yt.createElement(Zt,{paddingX:1,marginBottom:1},yt.createElement($o,{color:T.text},t)),yt.createElement(Zt,{flexDirection:"column",width:"100%"},S.map((L,_)=>{let Q=_===I;return yt.createElement(Zt,{key:L.id,flexDirection:"column",width:"100%",backgroundColor:Q?T.highlightBg:void 0,paddingX:1,marginBottom:_===S.length-1?0:1},yt.createElement($o,{color:Q?T.text:T.textMuted,bold:Q},Q?"\u276F ":" ",L.label),L.description&&yt.createElement(Zt,{marginLeft:4},yt.createElement($o,{color:T.textMuted,italic:!0},L.description)))})),yt.createElement(Zt,{paddingX:1,marginTop:1,marginBottom:1},yt.createElement($o,{color:T.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},yl=Id;import Zd from"gradient-string";import Lt,{useState as Ls,useEffect as Ad}from"react";import{Box as po,Text as _o,useInput as Ld}from"ink";function Ps({onSelect:t,onDelete:m,onClose:h,theme:y="Dark"}){let T=Je(y),[b,s]=Ls({}),[k,f]=Ls([]),[I,A]=Ls(0);Ad(()=>{(async()=>{let L=await Fo();s(L),f(Object.keys(L).sort((_,Q)=>(L[Q].updatedAt||0)-(L[_].updatedAt||0)))})()},[]),Ld((N,L)=>{if(L.escape&&h(),L.upArrow&&A(_=>Math.max(0,_-1)),L.downArrow&&A(_=>Math.min(k.length-1,_+1)),L.return&&k[I]&&t(k[I]),N==="x"&&k[I]){let _=k[I];m(_).then(Q=>{let ge=Q||{};s(ge);let ye=Object.keys(ge).sort((se,ie)=>(ge[ie]?.updatedAt||0)-(ge[se]?.updatedAt||0));f(ye),A(se=>Math.max(0,Math.min(ye.length-1,se)))})}});let X=nt(2),S=15,C=0;if(k.length>S){let N=Math.floor(S/2);C=I-N,C<0?C=0:C+S>k.length&&(C=k.length-S)}let P=k.slice(C,C+S);return Lt.createElement(po,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,width:"100%"},Lt.createElement(po,{paddingX:1,marginBottom:1},Lt.createElement(_o,{color:T.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),k.length===0?Lt.createElement(po,{paddingX:2,paddingY:1},Lt.createElement(_o,{italic:!0,color:T.textMuted},"No saved chats found.")):Lt.createElement(po,{flexDirection:"column",width:"100%"},C>0&&Lt.createElement(po,{paddingX:2,marginBottom:1},Lt.createElement(_o,{color:T.textMuted},"\u25B2 (+",C," more chats above)")),P.map((N,L)=>{let _=b[N],ge=C+L===I,ye=Pd(_?.updatedAt);return Lt.createElement(po,{key:N,paddingX:1,backgroundColor:ge?T.highlightBg:void 0,width:"100%"},Lt.createElement(po,{flexGrow:1},Lt.createElement(_o,{color:ge?T.text:T.textMuted,bold:ge},ge?"\u276F ":" ",(()=>{let se=ie=>(ie||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return _?.name&&!_.name.startsWith("Session")?se(_.name):_?.prompt?se(_.prompt):se(_?.name)||N})(),Lt.createElement(_o,{color:T.textMuted}," [",ye," \u2022 ",N,"]"))),ge&&Lt.createElement(po,{flexShrink:0},Lt.createElement(_o,{color:T.danger,bold:!0},"[X] DELETE ")))}),C+S<k.length&&Lt.createElement(po,{paddingX:2,marginTop:1},Lt.createElement(_o,{color:T.textMuted},"\u25BC (+",k.length-(C+S)," more chats below)"))),Lt.createElement(po,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:T.borderMuted},Lt.createElement(_o,{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 m=new Date(t);if(isNaN(m.getTime()))return"N/A";let h=k=>String(k).padStart(2,"0"),y=h(m.getMonth()+1),T=h(m.getDate()),b=h(m.getHours()),s=h(m.getMinutes());return`${y}-${T} ${b}:${s}`}import Mt,{useState as Os,useEffect as Od}from"react";import{Box as bo,Text as lo,useInput as Nd,useStdout as Fd}from"ink";function Ns({onClose:t,theme:m="Dark"}){let h=Je(m),{stdout:y}=Fd(),T=y?.columns||80,[b,s]=Os([]),[k,f]=Os(0),[I,A]=Os(!0),X=()=>{let se=Tr(Wn,[]);s(se);try{let pe=wr(zo,{}).systemSettings?.memory!==!1;A(pe)}catch{A(!0)}};Od(()=>{X()},[]),Nd((se,ie)=>{if(ie.escape&&t(),ie.upArrow&&f(pe=>Math.max(0,pe-1)),ie.downArrow&&f(pe=>Math.min(b.length-1,pe+1)),se==="x"&&b.length>0){let pe=b[k].id,Be=b.filter(Ce=>Ce.id!==pe);Bi(Wn,Be),s(Be),k>=Be.length&&Be.length>0&&f(Be.length-1)}});let S=(se,ie,pe)=>{if(!se)return"";let Be=se.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),Fe=`${pe?"\u276F ":" "}${ie+1}. `.length,le=pe?22:2;return Be.split(`
45
45
  `).map((be,ee)=>{let We=ee===0,me=Math.max(10,T-4-(We?Fe:3)-le),R=Math.max(10,T-4-3-le),te=be.split(/(\s+)/),Z=[],ae="";if(te.forEach(he=>{if(he.length===0)return;let Ae=Z.length===0?me:R;ae.length+he.length>Ae?ae.trim().length>0?(Z.push(ae.trimEnd()),ae=he):(Z.push(he.substring(0,Ae)),ae=he.substring(Ae)):ae+=he}),ae.trimEnd().length>0&&Z.push(ae.trimEnd()),Z.length===0)return"";let fe=Z.join(`
46
46
  `);return We?fe:" "+fe}).join(`
47
47
  `)},C=4*1024*2,P=b.reduce((se,ie)=>se+(ie.memory?.length||0),0),N=Math.min(100,Math.round(P/C*100)),L=12,_=Math.round(N/100*L),Q="\u2588".repeat(_)+"\u2591".repeat(Math.max(0,L-_)),ge=()=>N<50?h.textMuted:N<90?h.warning:h.danger,ye=nt(2);return Mt.createElement(bo,{flexDirection:"column",borderStyle:"round",borderColor:h.borderMuted,padding:0,width:"100%"},Mt.createElement(bo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},Mt.createElement(lo,{color:h.text,bold:!0},"SAVED MEMORIES"),Mt.createElement(bo,null,Mt.createElement(lo,{color:h.textMuted},"Vault: "),Mt.createElement(lo,{color:ge()},Q),Mt.createElement(lo,{color:h.text,bold:!0}," ",N,"%"))),!I&&b.length>0?Mt.createElement(bo,{paddingX:2,paddingY:1},Mt.createElement(lo,{italic:!0,color:h.textMuted},"Memory is currently Off...")):b.length===0?Mt.createElement(bo,{paddingX:2,paddingY:1},Mt.createElement(lo,{italic:!0,color:h.textMuted},I?"Learning...":"Memory not available...")):Mt.createElement(bo,{flexDirection:"column"},b.map((se,ie)=>{let pe=ie===k;return Mt.createElement(bo,{key:se.id,paddingX:1,backgroundColor:pe?h.highlightBg:void 0,width:"100%"},Mt.createElement(bo,{flexGrow:1},Mt.createElement(lo,{color:pe?h.text:h.textMuted,bold:pe},pe?"\u276F ":" ",ie+1,". ",S(se.memory,ie,pe))),pe&&Mt.createElement(bo,{flexShrink:0},Mt.createElement(lo,{color:h.textMuted,dimColor:!0}," [",Mt.createElement(lo,{italic:!0},se.score),"] "),Mt.createElement(lo,{color:h.danger,bold:!0},"[X] WIPE ")))})),Mt.createElement(bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:h.borderMuted},Mt.createElement(lo,{color:h.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import ft,{useState as Nr,useEffect as Ml}from"react";import{Box as Ho,Text as Nt}from"ink";import{spawn as Sl}from"child_process";var Cl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Ud=({latest:t,current:m,settings:h,onClose:y,onUpdateSettings:T,onSuccess:b})=>{let[s,k]=Nr("initializing"),[f,I]=Nr(""),[A,X]=Nr(null),[S,C]=Nr(0);if(Ml(()=>{let P=setInterval(()=>{C(N=>(N+1)%1e3)},33);return()=>clearInterval(P)},[]),Ml(()=>{let P;return(async()=>{let L=h.updateManager||"npm";if(!h.updateManager){T();return}let _="";L==="pnpm"?_=`pnpm add -g fluxflow-cli@${t}`:L==="bun"?_=`bun add -g fluxflow-cli@${t}`:L==="yarn"?_=`yarn global add fluxflow-cli@${t}`:L==="custom"?_=h.customUpdateCommand:_=`npm install -g fluxflow-cli@${t}`,k("downloading"),I(`Running: ${_}...`);let Q=process.platform==="win32",ge=se=>new Promise(ie=>{let pe=Q?se?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",Be=Q?se?["-NoProfile","-Command",_]:["/c",_]:["-c",_],Ce=le=>{let be=le.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();be&&I(ee=>{let We=ee.split(`
@@ -0,0 +1,5 @@
1
+ import{screen as Z}from"@nut-tree-fork/nut-js";import P from"screenshot-desktop";import tt from"sharp";import J from"fs-extra";import K from"path";var M={TARGET_WIDTH:1280,TARGET_HEIGHT:720,COLS:40,ROWS:30},st=process.env.USE_UI_MODEL!=="false"&&!0,nt=process.env.RAW_MODEL_ONLY==="true"||!1,F=[];async function V(e,o=!1){try{let{data:X,info:T}=await tt(e).resize(M.TARGET_WIDTH,M.TARGET_HEIGHT,{fit:"fill"}).greyscale().raw().toBuffer({resolveWithObject:!0}),s=T.width,m=T.height,d=M.COLS,Y=M.ROWS,h=s/d,r=m/Y,H=[],x=1;for(let n=0;n<Y;n++)for(let l=0;l<d;l++){let i=Math.floor(l*h),p=Math.floor(n*r),g=Math.floor((l+1)*h),c=Math.floor((n+1)*r),t=Math.floor((c-p)/3),y=0,O=0,D=0,E=0,w=0,f=0;for(let b=p;b<c;b+=2)for(let S=i;S<g;S+=2){let q=X[b*s+S];b<p+t?(D+=q,E++):b>c-t?(w+=q,f++):(y+=q,O++)}let A=(D+y+w)/(E+O+f),C=0,v=0,G=0;for(let b=p;b<c;b+=2)for(let S=i;S<g;S+=2){let $=X[b*s+S]-A;b<p+t?v+=$*$:b>c-t?G+=$*$:C+=$*$}let N=Math.sqrt(C/(O||1)),I=Math.sqrt(v/(E||1)),R=Math.sqrt(G/(f||1)),_=Math.sqrt((v+C+G)/(E+O+f||1)),L=3;I>R+3?L=10:(R>I+3||N>12)&&(L=-8),_>18&&H.push({cellNum:x,cx:Math.floor(i+h/2),cy:Math.floor(p+r/2),cellW:h,cellH:r,startX:i,startY:p,yOffset:L,mean:A,stdDev:_}),x++}let a=Array.from({length:Y},()=>Array(d).fill(null));for(let n of H){let l=Math.floor((n.cellNum-1)/d),i=(n.cellNum-1)%d;a[l][i]=n}let W=Array.from({length:Y},()=>Array(d).fill(!1)),u=[];for(let n=0;n<Y;n++)for(let l=0;l<d;l++)if(a[n][l]&&!W[n][l]){let i=n,p=n,g=l,c=l,t=[[n,l]],y=[a[n][l]],O=Array.from({length:Y},()=>Array(d).fill(!1));for(O[n][l]=!0;t.length>0;){let[w,f]=t.shift();i=Math.min(i,w),p=Math.max(p,w),g=Math.min(g,f),c=Math.max(c,f);let A=[[w-1,f],[w+1,f],[w,f-1],[w,f+1],[w-1,f-1],[w-1,f+1],[w+1,f-1],[w+1,f+1]];for(let[C,v]of A)C>=0&&C<Y&&v>=0&&v<d&&a[C][v]&&!O[C][v]&&(O[C][v]=!0,t.push([C,v]),y.push(a[C][v]))}let D=p-i+1,E=c-g+1;if(D<=4&&E<=4){for(let I of y){let R=Math.floor((I.cellNum-1)/d),_=(I.cellNum-1)%d;W[R][_]=!0}let w=Math.floor(g*h),f=Math.floor(i*r),A=Math.floor((c+1)*h),C=Math.floor((p+1)*r),v=A-w,G=C-f,N=3;if(G>r){let I=y.filter(b=>b.startY<f+G/2),R=y.filter(b=>b.startY>=f+G/2),_=I.reduce((b,S)=>b+S.stdDev,0)/(I.length||1),L=R.reduce((b,S)=>b+S.stdDev,0)/(R.length||1);L>_+2?N=-Math.floor(G/4):_>L+2?N=Math.floor(G/4):N=-12}else N=(y.find(R=>R.yOffset!==3)||y[0]).yOffset;u.push({cellNum:y[0].cellNum,cx:Math.floor(w+v/2),cy:Math.floor(f+G/2),cellW:v,cellH:G,startX:w,startY:f,yOffset:N})}else{W[n][l]=!0;let w=a[n][l],f=n+1<Y?a[n+1][l]:null;if(f&&!W[n+1][l]){W[n+1][l]=!0;let A=Math.floor(l*h),C=Math.floor(n*r),v=Math.floor((l+1)*h),G=Math.floor((n+2)*r),N=v-A,I=G-C,R=Math.floor(r*.25),_=Math.floor(C+r-R),L=Math.floor(C+r+R),b=0,S=0;for(let k=_;k<L;k+=2)for(let B=A;B<v;B+=2)b+=X[k*s+B],S++;let q=b/(S||1),$=0;for(let k=_;k<L;k+=2)for(let B=A;B<v;B+=2){let j=X[k*s+B]-q;$+=j*j}let ot=Math.sqrt($/(S||1)),U;if(ot<14)U=Math.floor(C+r)+4;else{let k=w.stdDev||0,B=f.stdDev||0;k<B?U=Math.floor(C+r/2)+(w.yOffset!==3?w.yOffset:-4):U=Math.floor(C+r+r/2)+(f.yOffset!==3?f.yOffset:4)}U=Math.max(C+11,Math.min(C+I-2,U)),u.push({cellNum:w.cellNum,cx:Math.floor(A+N/2),cy:U,cellW:N,cellH:I,startX:A,startY:C,yOffset:0,isCustomY:!0})}else u.push(w)}}if(o){let n=[],l=u.filter(g=>g.isCustomY||g.cellH>r*1.5),i=u.filter(g=>!(g.isCustomY||g.cellH>r*1.5)),p=new Map;for(let g of l){let c=g.startY;p.has(c)||p.set(c,[]),p.get(c).push(g)}for(let[g,c]of p.entries()){c.sort((y,O)=>y.startX-O.startX);let t=[];for(let y=0;y<c.length;y++){let O=c[y];if(t.length===0)t.push(O);else{let D=t[t.length-1];if(Math.abs(D.startX+D.cellW-O.startX)<=3)t.push(O);else{if(t.length>=3){let E=t[0].startX,f=t[t.length-1].startX+t[t.length-1].cellW-E,A=t[0].cellH;n.push({cellNum:t[0].cellNum,cx:Math.floor(E+f/2),cy:t[0].cy,cellW:f,cellH:A,startX:E,startY:g,yOffset:0,isCustomY:!0})}else n.push(...t);t=[O]}}}if(t.length>=3){let y=t[0].startX,D=t[t.length-1].startX+t[t.length-1].cellW-y,E=t[0].cellH;n.push({cellNum:t[0].cellNum,cx:Math.floor(y+D/2),cy:t[0].cy,cellW:D,cellH:E,startX:y,startY:g,yOffset:0,isCustomY:!0})}else n.push(...t)}u.length=0,u.push(...n,...i)}return u.forEach((n,l)=>{n.badgeId=l+1}),F=u,u}catch(X){return console.error("UI Element Detection error:",X),[]}}function rt(e,o,X,T,s=[]){let m=e/X,d=o/T,Y="";for(let h of s){let{badgeId:r,cellNum:H,startX:x,startY:a,cellW:W,cellH:u,cx:n,cy:l}=h,i=r!==void 0?r:H;Y+=`
2
+ <rect x="${x+1}" y="${a+1}" width="${W-2}" height="${u-2}" fill="rgba(0, 255, 255, 0.015)" stroke="rgba(255, 255, 0, 0.3)" stroke-width="1.1" rx="2"/>
3
+ `;let p=s.some(t=>t!==h&&t.startY+t.cellH>=a-6&&t.startY<a&&Math.max(0,Math.min(x+W,t.startX+t.cellW)-Math.max(x,t.startX))>10),g=s.some(t=>t!==h&&t.startY<=a+u+6&&t.startY>a&&Math.max(0,Math.min(x+W,t.startX+t.cellW)-Math.max(x,t.startX))>10),c;if(h.isCustomY)c=l,!p&&c<a+11&&(c=Math.max(10,Math.min(c,a+4)));else{let t=h.yOffset!==void 0?h.yOffset:3;!p&&t<0&&(t=Math.min(t,-12));let y=l+t,O=!p&&(t<0||y<a+11)?Math.max(10,a+4):a+11,D=!g&&(t>0||y>a+u-2)?Math.min(o-2,a+u+6):a+u+3;c=Math.max(O,Math.min(D,y))}Y+=`
4
+ <text x="${n}" y="${c}" font-family="'Segoe UI', Roboto, sans-serif" font-size="14" font-weight="600" fill="#FFFF00" stroke="#000000" stroke-width="2" paint-order="stroke fill" stroke-linejoin="round" opacity="0.8" text-anchor="middle">${i}</text>
5
+ `}return`<svg width="${e}" height="${o}" xmlns="http://www.w3.org/2000/svg">${Y}</svg>`}var Q=1,z=e=>new Promise(o=>setTimeout(o,e));async function et(){try{let{loadSettings:e}=await import("./settings-KKYNW25D.js"),o=await e();return Number(o.display||0)}catch{return 0}}async function lt(){let e=await et();try{let o=await P.listDisplays();if(o&&o.length>0)return{format:"png",screen:(o[e]||o[0]).id}}catch{}return{format:"png"}}async function ct(){let e=0,o=await lt();for(;e<2;){let X=await P(o);await z(500);let T=await P(o);if(X.equals(T))return T;e++,e<2&&await z(3e3)}return await z(3e3),await P(o)}function at(e=[],o=[]){if(!e||e.length===0)return o||[];if(!o||o.length===0)return e;let X=[...e],T=typeof e.getModelConfidence=="function"?e.getModelConfidence.bind(e):null;for(let s of o){if(T&&T(s.startX,s.startY,s.cellW,s.cellH)<.01)continue;let m=s.startX,d=s.startX+s.cellW,Y=s.startY,h=s.startY+s.cellH;for(let i of e){let p=i.startX,g=i.startY,c=i.startX+i.cellW,t=i.startY+i.cellH;if(Math.max(0,Math.min(h,t)-Math.max(Y,g))>s.cellH*.4&&p<d&&c>m){let O=(p+c)/2,D=(m+d)/2;O<=D?m=Math.max(m,c):d=Math.min(d,p)}}let r=d-m;if(r<18)continue;let H=m,x=Y,a=d,W=h,u=Math.floor(m+r/2),n=s.cy,l=!1;for(let i of e){let p=i.startX,g=i.startY,c=i.startX+i.cellW,t=i.startY+i.cellH;if(u>=p&&u<=c&&n>=g&&n<=t){l=!0;break}let y=Math.max(H,p),O=Math.max(x,g),D=Math.min(a,c),E=Math.min(W,t),w=Math.max(0,D-y)*Math.max(0,E-O),f=(a-H)*(W-x);if(w/(f||1)>=.25){l=!0;break}}l||X.push({...s,startX:H,cellW:r,cx:u})}return X.sort((s,m)=>Math.abs(s.startY-m.startY)>18?s.startY-m.startY:s.startX-m.startX),X.forEach((s,m)=>{s.badgeId=m+1}),X}async function pt(){try{let e=await ct(),o=null;if(st){let h=(async()=>{try{let{detectUIBoxesONNX:r}=await import("./ui_detector_onnx-YGGFMOK5.js");return await r(e,M.TARGET_WIDTH,M.TARGET_HEIGHT)}catch{return null}})();if(nt)o=await h||[];else{let r=V(e,!0),[H,x]=await Promise.all([h,r]);o=H&&H.length>0?at(H,x):await V(e,!1)}}else o=await V(e,!1);F=o;let X=rt(M.TARGET_WIDTH,M.TARGET_HEIGHT,M.COLS,M.ROWS,o),T=await tt(e).resize(M.TARGET_WIDTH,M.TARGET_HEIGHT,{fit:"fill"}).composite([{input:Buffer.from(X),top:0,left:0}]).png({quality:100}).toBuffer();if(process.env.SHOW_DEBUG_GRID)try{let h=K.resolve(process.cwd(),"screenshots");await J.ensureDir(h);let r=K.join(h,`${Q}.png`);await J.writeFile(r,T),Q++}catch{}let s=T.toString("base64"),m=o.length,d=e,Y=T;return d=null,Y=null,{base64:s,mimeType:"image/png",width:M.TARGET_WIDTH,height:M.TARGET_HEIGHT,detectedCount:m}}catch(e){return console.error("Failed to capture gridded screenshot:",e),null}}function ft(e){if(e==null)return null;let o=null;if(typeof e=="number")o=e;else if(typeof e=="string"){let H=e.trim();if(/^\d+$/.test(H))o=parseInt(H,10);else{let x=H.match(/^([A-Z])([0-9]{1,2})$/i);if(x){let a=x[1].toUpperCase().charCodeAt(0)-65,W=parseInt(x[2],10)-1;o=a*M.COLS+W+1}}}if(o===null||isNaN(o))return null;if(F&&F.length>0){let H=F.find(x=>x.badgeId===o)||F.find(x=>x.cellNum===o);if(H){let x=Math.floor((H.cellNum-1)%M.COLS),a=Math.floor((H.cellNum-1)/M.COLS);return{x:H.cx,y:H.cy,colIdx:x>=0?x:0,rowIdx:a>=0?a:0,cellNum:o}}}let X=M.COLS*M.ROWS;if(o<1||o>X)return null;let T=o-1,s=Math.floor(T/M.COLS),m=T%M.COLS,d=M.TARGET_WIDTH/M.COLS,Y=M.TARGET_HEIGHT/M.ROWS,h=Math.floor(m*d+d/2),r=Math.floor(s*Y+Y/2);return{x:h,y:r,colIdx:m,rowIdx:s,cellNum:o}}async function yt(e,o,X){let T=null;if(typeof e=="number"||typeof e=="string"?T=ft(e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(T=e),!T)return null;let s=o,m=X,d=0,Y=0,h=await et();try{let W=await P.listDisplays();if(W&&W.length>0){let u=W[h]||W[0];u.width&&u.height&&(s=u.width,m=u.height),u.left!==void 0&&(d=u.left),u.top!==void 0&&(Y=u.top)}}catch{}if(!s||!m)try{s=await Z.width(),m=await Z.height()}catch{s=1920,m=1080}let r=s/M.TARGET_WIDTH,H=m/M.TARGET_HEIGHT,x=Math.round(T.x*r)+d,a=Math.round(T.y*H)+Y;return{x,y:a,screenW:s,screenH:m,offsetX:d,offsetY:Y}}export{M as a,st as b,nt as c,et as d,pt as e,ft as f,yt as g};
@@ -1 +1 @@
1
- import{e as f}from"./chunk-KNCL7AK2.js";import{mouse as c,keyboard as i,Button as u,Key as e,Point as l,clipboard as g}from"@nut-tree-fork/nut-js";c.config.autoDelayMs=50;i.config.autoDelayMs=50;async function w(){try{await i.releaseKey(e.LeftControl,e.RightControl,e.LeftAlt,e.RightAlt,e.LeftShift,e.RightShift,e.LeftSuper,e.RightSuper)}catch{}}async function h(n,t,s={}){let r=await f(t);if(!r&&(n==="move"||n==="click"||n==="drag"))return`ERROR: Invalid target location specified: ${JSON.stringify(t)}`;try{switch(n.toLowerCase()){case"move":return await c.setPosition(new l(r.x,r.y)),`Moved mouse to grid target ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`;case"click":{await c.setPosition(new l(r.x,r.y));let a=s.button==="right"?u.RIGHT:s.button==="middle"?u.MIDDLE:u.LEFT;return s.clickType==="double"?await c.doubleClick(a):await c.click(a),`${s.clickType||"Single"} clicked ${s.button||"left"} button at ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`}case"drag":{let a=await f(s.from||t),o=await f(s.to);return!a||!o?'ERROR: Drag requires valid "from" and "to" target coordinates/grid codes.':(await c.setPosition(new l(a.x,a.y)),await c.pressButton(u.LEFT),await c.setPosition(new l(o.x,o.y)),await c.releaseButton(u.LEFT),`Dragged mouse from (${a.x}, ${a.y}) to (${o.x}, ${o.y})`)}case"scroll":{let a=r||await f({x:640,y:360});a&&(await c.setPosition(new l(a.x,a.y)),await new Promise(d=>setTimeout(d,60)));let o=parseInt(s.amount,10);(isNaN(o)||o<=0)&&(o=5);let y=o>50?Math.min(20,Math.max(1,Math.round(o/100))):Math.min(20,o),R=s.direction==="up";for(let d=0;d<y;d++)R?await c.scrollUp(120):await c.scrollDown(120),await new Promise(L=>setTimeout(L,20));return`Scrolled ${s.direction||"down"} (${y} notches${r?` at target (${r.x}, ${r.y})`:" at screen center"})`}default:return`ERROR: Unsupported mouse action "${n}"`}}catch(a){return`ERROR: Mouse action failed: ${a.message}`}}var m={enter:e.Enter,return:e.Return,escape:e.Escape,esc:e.Escape,backspace:e.Backspace,tab:e.Tab,space:e.Space,up:e.Up,down:e.Down,left:e.Left,right:e.Right,ctrl:e.LeftControl,control:e.LeftControl,alt:e.LeftAlt,shift:e.LeftShift,cmd:e.LeftCmd,win:e.LeftWin,meta:e.LeftWin,super:e.LeftSuper,a:e.A,b:e.B,c:e.C,d:e.D,e:e.E,f:e.F,g:e.G,h:e.H,i:e.I,j:e.J,k:e.K,l:e.L,m:e.M,n:e.N,o:e.O,p:e.P,q:e.Q,r:e.R,s:e.S,t:e.T,u:e.U,v:e.V,w:e.W,x:e.X,y:e.Y,z:e.Z,0:e.Num0,1:e.Num1,2:e.Num2,3:e.Num3,4:e.Num4,5:e.Num5,6:e.Num6,7:e.Num7,8:e.Num8,9:e.Num9,f1:e.F1,f2:e.F2,f3:e.F3,f4:e.F4,f5:e.F5,f6:e.F6,f7:e.F7,f8:e.F8,f9:e.F9,f10:e.F10,f11:e.F11,f12:e.F12},p=n=>{if(!n)return;let t=String(n).toLowerCase().trim();if(m[t]!==void 0)return m[t];if(e[n]!==void 0)return e[n];if(e[t.toUpperCase()]!==void 0)return e[t.toUpperCase()]};async function E(n,t,s={}){try{switch(n.toLowerCase()){case"type":{if(typeof t!="string")return"ERROR: Type action requires a valid string input";await w(),await g.setContent(t);let a=process.platform==="darwin"?e.LeftSuper:e.LeftControl;return await i.pressKey(a,e.V),await i.releaseKey(a,e.V),await w(),s.autoPressEnter?(await new Promise(o=>setTimeout(o,50)),await i.type(e.Enter),`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}") and pressed Enter`):`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}")`}case"key_press":{let r=p(t);return r===void 0?`ERROR: Unknown key name "${t}"`:(await i.type(r),`Pressed key ${t}`)}case"key_combination":{if(!Array.isArray(t))return'ERROR: key_combination requires an array of keys (e.g. ["ctrl", "c"])';let r=t.map(a=>p(a)).filter(a=>a!==void 0);return r.length===0?"ERROR: Invalid key combination":(await i.pressKey(...r),await i.releaseKey(...r),`Executed key combination [${t.join(" + ")}]`)}case"clear_input":return await i.pressKey(e.LeftControl,e.A),await i.releaseKey(e.LeftControl,e.A),await i.type(e.Backspace),"Cleared active text input (Select All + Backspace)";case"browser_back":{let r=process.platform==="darwin";return r?(await i.pressKey(e.LeftSuper,e.Left),await i.releaseKey(e.LeftSuper,e.Left)):(await i.pressKey(e.LeftAlt,e.Left),await i.releaseKey(e.LeftAlt,e.Left)),await w(),`Browser back navigation (${r?"Cmd+Left":"Alt+Left"})`}default:return`ERROR: Unsupported keyboard action "${n}"`}}catch(r){return`ERROR: Keyboard action failed: ${r.message}`}}export{h as a,E as b};
1
+ import{g as f}from"./chunk-A73HW6DI.js";import{mouse as c,keyboard as i,Button as u,Key as e,Point as l,clipboard as g}from"@nut-tree-fork/nut-js";c.config.autoDelayMs=50;i.config.autoDelayMs=50;async function w(){try{await i.releaseKey(e.LeftControl,e.RightControl,e.LeftAlt,e.RightAlt,e.LeftShift,e.RightShift,e.LeftSuper,e.RightSuper)}catch{}}async function h(n,t,s={}){let r=await f(t);if(!r&&(n==="move"||n==="click"||n==="drag"))return`ERROR: Invalid target location specified: ${JSON.stringify(t)}`;try{switch(n.toLowerCase()){case"move":return await c.setPosition(new l(r.x,r.y)),`Moved mouse to grid target ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`;case"click":{await c.setPosition(new l(r.x,r.y));let a=s.button==="right"?u.RIGHT:s.button==="middle"?u.MIDDLE:u.LEFT;return s.clickType==="double"?await c.doubleClick(a):await c.click(a),`${s.clickType||"Single"} clicked ${s.button||"left"} button at ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`}case"drag":{let a=await f(s.from||t),o=await f(s.to);return!a||!o?'ERROR: Drag requires valid "from" and "to" target coordinates/grid codes.':(await c.setPosition(new l(a.x,a.y)),await c.pressButton(u.LEFT),await c.setPosition(new l(o.x,o.y)),await c.releaseButton(u.LEFT),`Dragged mouse from (${a.x}, ${a.y}) to (${o.x}, ${o.y})`)}case"scroll":{let a=r||await f({x:640,y:360});a&&(await c.setPosition(new l(a.x,a.y)),await new Promise(d=>setTimeout(d,60)));let o=parseInt(s.amount,10);(isNaN(o)||o<=0)&&(o=5);let y=o>50?Math.min(20,Math.max(1,Math.round(o/100))):Math.min(20,o),R=s.direction==="up";for(let d=0;d<y;d++)R?await c.scrollUp(120):await c.scrollDown(120),await new Promise(L=>setTimeout(L,20));return`Scrolled ${s.direction||"down"} (${y} notches${r?` at target (${r.x}, ${r.y})`:" at screen center"})`}default:return`ERROR: Unsupported mouse action "${n}"`}}catch(a){return`ERROR: Mouse action failed: ${a.message}`}}var m={enter:e.Enter,return:e.Return,escape:e.Escape,esc:e.Escape,backspace:e.Backspace,tab:e.Tab,space:e.Space,up:e.Up,down:e.Down,left:e.Left,right:e.Right,ctrl:e.LeftControl,control:e.LeftControl,alt:e.LeftAlt,shift:e.LeftShift,cmd:e.LeftCmd,win:e.LeftWin,meta:e.LeftWin,super:e.LeftSuper,a:e.A,b:e.B,c:e.C,d:e.D,e:e.E,f:e.F,g:e.G,h:e.H,i:e.I,j:e.J,k:e.K,l:e.L,m:e.M,n:e.N,o:e.O,p:e.P,q:e.Q,r:e.R,s:e.S,t:e.T,u:e.U,v:e.V,w:e.W,x:e.X,y:e.Y,z:e.Z,0:e.Num0,1:e.Num1,2:e.Num2,3:e.Num3,4:e.Num4,5:e.Num5,6:e.Num6,7:e.Num7,8:e.Num8,9:e.Num9,f1:e.F1,f2:e.F2,f3:e.F3,f4:e.F4,f5:e.F5,f6:e.F6,f7:e.F7,f8:e.F8,f9:e.F9,f10:e.F10,f11:e.F11,f12:e.F12},p=n=>{if(!n)return;let t=String(n).toLowerCase().trim();if(m[t]!==void 0)return m[t];if(e[n]!==void 0)return e[n];if(e[t.toUpperCase()]!==void 0)return e[t.toUpperCase()]};async function E(n,t,s={}){try{switch(n.toLowerCase()){case"type":{if(typeof t!="string")return"ERROR: Type action requires a valid string input";await w(),await g.setContent(t);let a=process.platform==="darwin"?e.LeftSuper:e.LeftControl;return await i.pressKey(a,e.V),await i.releaseKey(a,e.V),await w(),s.autoPressEnter?(await new Promise(o=>setTimeout(o,50)),await i.type(e.Enter),`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}") and pressed Enter`):`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}")`}case"key_press":{let r=p(t);return r===void 0?`ERROR: Unknown key name "${t}"`:(await i.type(r),`Pressed key ${t}`)}case"key_combination":{if(!Array.isArray(t))return'ERROR: key_combination requires an array of keys (e.g. ["ctrl", "c"])';let r=t.map(a=>p(a)).filter(a=>a!==void 0);return r.length===0?"ERROR: Invalid key combination":(await i.pressKey(...r),await i.releaseKey(...r),`Executed key combination [${t.join(" + ")}]`)}case"clear_input":return await i.pressKey(e.LeftControl,e.A),await i.releaseKey(e.LeftControl,e.A),await i.type(e.Backspace),"Cleared active text input (Select All + Backspace)";case"browser_back":{let r=process.platform==="darwin";return r?(await i.pressKey(e.LeftSuper,e.Left),await i.releaseKey(e.LeftSuper,e.Left)):(await i.pressKey(e.LeftAlt,e.Left),await i.releaseKey(e.LeftAlt,e.Left)),await w(),`Browser back navigation (${r?"Cmd+Left":"Alt+Left"})`}default:return`ERROR: Unsupported keyboard action "${n}"`}}catch(r){return`ERROR: Keyboard action failed: ${r.message}`}}export{h as a,E as b};
@@ -0,0 +1,31 @@
1
+ import{d as $}from"./chunk-DSVLWYIT.js";import R from"fs-extra";import y from"path";var N=l=>{if(!l)return[];let u=[],p=/\[(?:tool|action):(.*?)\(([\s\S]*?)\)\]/g,n=0,i;for(;(i=p.exec(l))!==null;){if(i.index>n){let t=l.slice(n,i.index);t.trim()&&u.push({type:"output",content:t})}u.push({type:"tool",toolName:i[1],args:i[2]}),n=p.lastIndex}if(n<l.length){let t=l.slice(n);t.trim()&&u.push({type:"output",content:t})}return u},b=async(l,u,p=process.cwd())=>{let n=`export-fluxflow-${l}.txt`,i=y.join(p,n),t=[],o=!1;for(let m=0;m<u.length;m++){let r=u[m];if(r&&!(r.role==="system"||r.isMeta||r.isLogo||String(r.id).startsWith("welcome"))){if(r.role==="user"){let s=r.text||"";s=s.replace(/\s*\[Prompted on:.*?\]/g,"").trim(),t.length>0&&t.push(""),t.push("[USER]"),t.push(s),o=!1}else if(r.role==="think"){o||(t.push(""),t.push("[AGENT]"),o=!0);let s=(r.text||"").replace(/\[\[\s*turn\s*:\s*(continue|finish)\s*\]\]/gi,"").replace(/\[\[END\]\]/gi,"").replace(/\[\[(?:TOOL|ACTION) RESULTS\]\]/gi,"").replace(/\[(?:TOOL|ACTION) RESULTS\]/gi,"").replace(/\[(?:TOOL|ACTION) RESULT\]/gi,"").trim();s&&(t.push("[thoughts]"),t.push(s))}else if(r.role==="agent"){o||(t.push(""),t.push("[AGENT]"),o=!0);let s=N(r.text||"");for(let c of s)if(c.type==="output"){let a=c.content.replace(/\[\[\s*turn\s*:\s*(continue|finish)\s*\]\]/gi,"").replace(/\[\[END\]\]/gi,"").replace(/\[\[(?:TOOL|ACTION) RESULTS\]\]/gi,"").replace(/\[(?:TOOL|ACTION) RESULTS\]/gi,"").replace(/\[(?:TOOL|ACTION) RESULT\]/gi,"").trim();a&&(t.push("[output]"),t.push(a))}else c.type==="tool"&&(t.push("[tool]"),t.push(`${c.toolName} ${c.args}`))}}}let O=t.join(`
2
+ `);return await R.writeFile(i,O,"utf8"),{exportFile:n,exportPath:i,totalLines:t.length}},j=(l,u="FluxFlow",p=null)=>{if(!l||!l.trim())return[];let n=l.split(`
3
+ `),i=[],t=[],o=/^\s*(?:CRITICAL\s+ERROR|ERROR|DEBUG|SEARCH|PUPPETEER|WARN|WARNING|INFO)\b/i,O=/^\s*-{3,}\s*$/,m=!1;for(let s of n)if(o.test(s)){m=!0;break}if(!m){let s=l.trim();if(!s)return[];let c=p?new Date(p).toLocaleString():"Unknown Time",a=/\bjanitor\b/i.test(s)?"Memory":u;return[{timestamp:c,level:"ERROR",source:a,message:s}]}for(let s of n)O.test(s)?t.length>0&&(i.push(t.join(`
4
+ `).trim()),t=[]):o.test(s)?(t.length>0&&(i.push(t.join(`
5
+ `).trim()),t=[]),t.push(s)):(t.length>0||s.trim())&&t.push(s);t.length>0&&i.push(t.join(`
6
+ `).trim());let r=[];for(let s of i){if(!s)continue;let c=s.split(`
7
+ `).map(e=>e.trimEnd()),a=c[0]||"";if(!/\bERROR\b/i.test(s))continue;let T=a.match(/\[(.*?)\]/),d=T?T[1]:null,L="ERROR";/CRITICAL\s+ERROR/i.test(a)&&(L="CRITICAL ERROR");let E="";if(T){let e=a.indexOf("]:");e!==-1?E=a.substring(e+2).trim():E=a.replace(o,"").replace(/\[.*?\]/,"").replace(/^:\s*/,"").trim()}else E=a.replace(o,"").replace(/^:\s*/,"").trim();if(c.length>1){let e=c.slice(1).join(`
8
+ `).trim();e&&(E=E?`${E}
9
+ ${e}`:e)}if(E){let e=/\bjanitor\b/i.test(s)?"Memory":u;r.push({timestamp:d||(p?new Date(p).toLocaleString():"Unknown Time"),level:L,source:e,message:E})}}return r},A=async(l=process.cwd())=>{let u=`fluxflow-error-${Date.now()}.txt`,p=y.join(l,u),n=async e=>{if(!await R.pathExists(e))return[];let h=await R.readdir(e),f=[];for(let g of h){let x=y.join(e,g),w=await R.stat(x);if(w.isDirectory()){let C=await n(x);f=f.concat(C)}else(g.endsWith(".log")||g.endsWith(".txt"))&&f.push({path:x,mtime:w.mtimeMs})}return f},i=await n($),t=[];for(let e of i)try{let h=await R.readFile(e.path,"utf8");if(h.trim()){let f=e.path.replace(/\\/g,"/").toLowerCase(),g="FluxFlow";f.includes("/janitor")||f.includes("janitor")?g="Memory":f.includes("/usage")||f.includes("usage")?g="Usage":!f.includes("/agent")&&!f.includes("agent")&&(g="Other");let x=j(h,g,e.mtime);t=t.concat(x)}}catch{}let o=[],O=new Set;for(let e of t){let h=`${e.source}::${e.timestamp}::${e.message.trim()}`;O.has(h)||(O.add(h),o.push(e))}let m=o.filter(e=>e.source==="FluxFlow"),r=o.filter(e=>e.source==="Memory"),s=o.filter(e=>e.source==="Usage"),c=o.filter(e=>!["FluxFlow","Memory","Usage"].includes(e.source)),a=(e,h,f)=>{let g=["================================================================================",`${e} (${h.length})`,"================================================================================"].join(`
10
+ `);if(h.length===0)return`${g}
11
+ No ${f} error entries found.`;let x=h.map((w,C)=>{let F=`[${f} #${C+1}] ${w.timestamp} (${w.level})`,U=w.message.split(`
12
+ `).map(I=>` ${I}`).join(`
13
+ `);return`${F}
14
+ ${U}`});return`${g}
15
+
16
+ `+x.join(`
17
+
18
+ --------------------------------------------------------------------------------
19
+
20
+ `)},S=[`FluxFlow: ${m.length}`,`Memory: ${r.length}`,`Usage: ${s.length}`];c.length>0&&S.push(`Other: ${c.length}`);let T=["================================================================================","FLUXFLOW ERROR LOGS EXPORT",`Exported At : ${new Date().toLocaleString()}`,`Total Errors: ${o.length} (${S.join(" | ")})`,"================================================================================",""].join(`
21
+ `),d=1,L=[a(`SECTION ${d++}: FLUXFLOW ERRORS`,m,"FluxFlow"),a(`SECTION ${d++}: MEMORY ERRORS`,r,"Memory"),a(`SECTION ${d++}: USAGE ERRORS`,s,"Usage")];c.length>0&&L.push(a(`SECTION ${d++}: OTHER SYSTEM ERRORS`,c,"Other"));let E=T+L.join(`
22
+
23
+
24
+ `)+`
25
+ `;await R.writeFile(p,E,"utf8");try{await R.pathExists($)&&await R.emptyDir($)}catch{}return{exportFile:u,exportPath:p,entryCount:o.length,fluxflowCount:m.length,memoryCount:r.length,usageCount:s.length}},P=async(l,{chatId:u,messages:p})=>{let n=(l[1]||"chat").toLowerCase();return n==="chat"?{success:!0,type:"chat",message:`\u2726 Chat Exported
26
+ \u2800\u2800\u2514\u2500 ${(await b(u,p)).exportFile}
27
+ \u2800`}:n==="logs"?{success:!0,type:"logs",message:`\u2726 Error Logs Exported
28
+ \u2800\u2800\u2514\u2500 ${(await A()).exportFile}
29
+ \u2800`}:{success:!1,message:`[EXPORT USAGE] Unknown subcommand "${n}". Options:
30
+ \u2022 /export chat current
31
+ \u2022 /export logs error`}};export{N as a,b,j as c,A as d,P as e};
@@ -1,4 +1,4 @@
1
- import{a as b,b as L}from"./chunk-LQHSNXBM.js";import{a as C}from"./chunk-Y5JU726N.js";import{spawn as A}from"child_process";var P=null;try{let f=await import("node-pty");P=f.default||f}catch{}var D=!!P,y=f=>typeof f!="string"?f:f.replace(/(?:\u001b][\s\S]*?(?:\u0007|\u001b\\))|(?:[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g,""),E=f=>{if(!f)return"";let p=[[]],n=0,o=0,w=/\x1b\[([0-9;]*?)([a-zA-Z])/g,g=0,h,d=a=>{for(let e=0;e<a.length;e++){let s=a[e];if(s===`
1
+ import{a as b,b as L}from"./chunk-U2NRX2PX.js";import{a as C}from"./chunk-Y5JU726N.js";import{spawn as A}from"child_process";var P=null;try{let f=await import("node-pty");P=f.default||f}catch{}var D=!!P,y=f=>typeof f!="string"?f:f.replace(/(?:\u001b][\s\S]*?(?:\u0007|\u001b\\))|(?:[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g,""),E=f=>{if(!f)return"";let p=[[]],n=0,o=0,w=/\x1b\[([0-9;]*?)([a-zA-Z])/g,g=0,h,d=a=>{for(let e=0;e<a.length;e++){let s=a[e];if(s===`
2
2
  `)for(n++,o=0;n>=p.length;)p.push([]);else if(s==="\r")o=0;else{for(;n>=p.length;)p.push([]);let t=p[n];for(;o>t.length;)t.push(" ");t[o]=s,o++}}};for(;(h=w.exec(f))!==null;){d(f.substring(g,h.index));let a=h[1],e=h[2],s=a?a.split(";").map(Number):[];if(e==="A"){let t=s[0]||1;n=Math.max(0,n-t)}else if(e==="B"){let t=s[0]||1;for(n=n+t;n>=p.length;)p.push([])}else if(e==="C"){let t=s[0]||1;o=o+t}else if(e==="D"){let t=s[0]||1;o=Math.max(0,o-t)}else if(e==="G"){let t=(s[0]||1)-1;o=Math.max(0,t)}else if(e==="H"||e==="f"){let t=(s[0]||1)-1,r=(s[1]||1)-1;for(n=Math.max(0,t),o=Math.max(0,r);n>=p.length;)p.push([])}else if(e==="K"){let t=s[0]||0;if(n<p.length){let r=p[n];if(t===0)r.length=o;else if(t===1)for(let c=0;c<o&&c<r.length;c++)r[c]=" ";else t===2&&(r.length=0)}}else if(e==="J"){let t=s[0]||0;(t===2||t===3)&&(p.length=0,p.push([]),n=0,o=0)}g=w.lastIndex}d(f.substring(g));let O=p.map(a=>a.join(""));for(;O.length>0&&O[O.length-1]==="";)O.pop();return O.join(`
3
3
  `)},x=null,k=!1,_=f=>{try{x&&(k&&typeof x.write=="function"?x.write(f):x.stdin&&x.stdin.writable&&x.stdin.write(f))}catch{}},F=()=>{if(x){try{k&&typeof x.destroy=="function"?x.destroy():typeof x.kill=="function"&&(process.platform==="win32"?A("taskkill",["/pid",x.pid,"/f","/t"]):x.kill("SIGKILL"))}catch{}x=null,k=!1}},T=(f,p=!1)=>{if(process.platform!=="win32")return f;let n=[],o="",w=null,g=!1;for(let e=0;e<f.length;e++){let s=f[e];if(g){o+=s,g=!1;continue}if(s==="\\"){if(f[e+1]===" "){o+=" ",e++;continue}o+=s,g=!0;continue}w?(s===w&&(w=null),o+=s):s==='"'||s==="'"?(w=s,o+=s):s===";"&&!o.includes("://")?(o.length>0&&(n.push(o),o=""),n.push(p?";":"&")):s==="&"&&!o.includes("://")?f[e+1]==="&"?(o.length>0&&(n.push(o),o=""),n.push("&&"),e++):o.endsWith("2>")&&f[e+1]==="1"?(n.push("2>&1"),o="",e++):(o.length>0&&(n.push(o),o=""),n.push("&")):s==="|"&&!o.includes("://")?(o.length>0&&(n.push(o),o=""),n.push("|")):/\s/.test(s)?o.length>0&&(n.push(o),o=""):o+=s}o.length>0&&n.push(o);let h=e=>!(!e.includes("/")||/^(https?|file|ftp):\/\//i.test(e)||e.startsWith("@")||e.startsWith("/")&&(e.match(/\//g)||[]).length===1||/\s\/|\/\s/.test(e)||/[\(\)\{\}\;\<\>\=\'\"]/.test(e)),d=[];for(let e=0;e<n.length;e++){let s=n[e];if(s==="mkdir"&&p&&b()){let t=[],r=e+1;for(;r<n.length;){let c=n[r];if([">",">>","<","&","&&","|","||",";"].includes(c))break;c!=="-p"&&c!=="--parents"&&c!=="-v"&&c!=="--verbose"&&t.push(c),r++}if(t.length>0){let c=t.map(i=>{let u=i.replace(/^['"]|['"]$/g,""),l=i;return h(u)&&(l=i.replace(/\//g,"\\")),l});d.push("New-Item","-ItemType","Directory","-Force","-Path",c.join(","))}else d.push("New-Item","-ItemType","Directory","-Force");e=r-1;continue}if(s==="rm"&&p&&b()){let t=[],r=!1,c=!1,i=e+1;for(;i<n.length;){let l=n[i];if([">",">>","<","&","&&","|","||",";"].includes(l))break;l==="-rf"||l==="-fr"?(r=!0,c=!0):l==="-r"||l==="-R"||l==="--recursive"?r=!0:l==="-f"||l==="--force"?c=!0:t.push(l),i++}let u=["Remove-Item"];if(r&&u.push("-Recurse"),c&&u.push("-Force"),t.length>0){let l=t.map(m=>{let R=m.replace(/^['"]|['"]$/g,""),$=m;return h(R)&&($=m.replace(/\//g,"\\")),$});u.push("-Path",l.join(","))}d.push(...u),e=i-1;continue}if(s==="cp"&&p&&b()){let t=[],r=!1,c=!1,i=e+1;for(;i<n.length;){let l=n[i];if([">",">>","<","&","&&","|","||",";"].includes(l))break;l==="-r"||l==="-R"||l==="--recursive"?r=!0:l==="-f"||l==="--force"?c=!0:t.push(l),i++}let u=["Copy-Item"];if(r&&u.push("-Recurse"),c&&u.push("-Force"),t.length>0){let l=t.map(m=>{let R=m.replace(/^['"]|['"]$/g,""),$=m;return h(R)&&($=m.replace(/\//g,"\\")),$});if(l.length>1){let m=l.pop();u.push("-Path",l.join(","),"-Destination",m)}else u.push("-Path",l[0])}d.push(...u),e=i-1;continue}if(s==="touch"&&p&&b()){let t=[],r=e+1;for(;r<n.length;){let c=n[r];if([">",">>","<","&","&&","|","||",";"].includes(c))break;t.push(c),r++}if(t.length>0){let i=`(${t.map(u=>{let l=u.replace(/^['"]|['"]$/g,""),m=u;return h(l)&&(m=u.replace(/\//g,"\\")),m}).join(", ")}) | ForEach-Object { if (Test-Path $_) { (Get-Item $_).LastWriteTime = [System.DateTime]::Now } else { $null | Out-File -FilePath $_ } }`;d.push(i)}e=r-1;continue}if(s==="|"&&n[e+1]==="tee"){n[e+2]==="-a"?(d.push(">>"),e+=2):(d.push(">"),e+=1);continue}if(s==="|"&&n[e+1]==="cat"&&n[e+2]===">"){d.push(">"),e+=2;continue}if(s==="|"){let t=n[e+1];if(t){let r=t.replace(/^['"]|['"]$/g,""),c=/\.(txt|md|json|log|csv|html|css|py|js|xml|yaml|yml|pdf|docx|pptx|xlsx)$/i.test(r);if(h(r)&&c){d.push(">");continue}}}d.push(s)}let O=!1,a=d.map(e=>{if(e==="echo")return O=!0,e;[">",">>","<","&","&&","|","||",";"].includes(e)&&(O=!1);let t=/^['"]|['"]$/.test(e),r=e;O&&t&&(r=e.replace(/^['"]|['"]$/g,""));let c=/^['"]|['"]$/.test(r),i=r.replace(/^['"]|['"]$/g,"");h(i)&&(r=r.replace(/\//g,"\\"));let u=r.replace(/^['"]|['"]$/g,"");return u.includes(" ")&&!c&&(r=`"${u}"`),r});if(p){let e="",s=0;for(let t=0;t<a.length;t++){let r=a[t];r==="&&"?(e+="; if ($?) {",s++):r===";"?(e+=" }".repeat(s)+";",s=0):(e&&!e.endsWith(" ")&&!e.endsWith("{")&&(e+=" "),e+=r)}return e+=" }".repeat(s),e}return a.join(" ")},W=async(f,p={})=>{let{command:n}=C(f),{onChunk:o}=p;if(!n)return'ERROR: Missing "command" argument for Run.';let w=process.platform==="win32",g=p.systemSettings||{},h={};return g.networkAccess===!1&&(h.HTTP_PROXY="http://127.0.0.1:9999",h.HTTPS_PROXY="http://127.0.0.1:9999",h.ALL_PROXY="socks5://127.0.0.1:9999",h.http_proxy="http://127.0.0.1:9999",h.https_proxy="http://127.0.0.1:9999",h.all_proxy="socks5://127.0.0.1:9999",h.NO_PROXY="localhost,127.0.0.1"),new Promise(d=>{let O=a=>{let e=a==="pwsh"||a==="powershell",s=T(n,e),t;w?a==="pwsh"?t="pwsh.exe":a==="powershell"?t="powershell.exe":t="cmd.exe":t=process.env.SHELL||"bash";let r=w?e?["-NoProfile","-Command",s]:["/c",s]:["-c",s];if(g.networkAccess===!1&&!w){let c=t,i=[...r];if(process.platform==="linux")t="unshare",r=["-n","-r",c,...i];else if(process.platform==="darwin"){let u=`(version 1)
4
4
  (allow default)