fluxflow-cli 2.1.5 → 2.2.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 (2) hide show
  1. package/dist/fluxflow.js +200 -200
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -1,30 +1,30 @@
1
1
  #!/usr/bin/env node
2
- var Dl=Object.defineProperty;var ie=(e,o)=>()=>(e&&(o=e(e=0)),o);var Ss=(e,o)=>{for(var t in o)Dl(e,t,{get:o[t],enumerable:!0})};import so,{useState as hr,useEffect as Cs,useMemo as Es,useCallback as _r,useRef as vi}from"react";import{Box as pr,Spacer as vl,Text as fr,useInput as $l,measureElement as Pl}from"ink";function Fl(e,o){return e.replace(/\t/g," ".repeat(o))}function bs(e){return e==null?"":e.replace(/\r\n/g,`
2
+ var Fl=Object.defineProperty;var re=(e,o)=>()=>(e&&(o=e(e=0)),o);var bs=(e,o)=>{for(var t in o)Fl(e,t,{get:o[t],enumerable:!0})};import io,{useState as hr,useEffect as Is,useMemo as Cs,useCallback as Rr,useRef as Bi}from"react";import{Box as pr,Spacer as Bl,Text as fr,useInput as _l,measureElement as Nl}from"ink";function Ul(e,o){return e.replace(/\t/g," ".repeat(o))}function ks(e){return e==null?"":e.replace(/\r\n/g,`
3
3
  `).replace(/\r/g,`
4
- `)}var $i,Bl,Pi,Fi=ie(()=>{$i=({children:e,onHeightChange:o})=>{let t=vi(null),n=vi(void 0);return Cs(()=>{if(t.current){let{height:i}=Pl(t.current);n.current!==i&&(n.current=i,o?.(i))}}),so.createElement(pr,{ref:t,flexShrink:0,flexGrow:0,width:"100%"},e)},Bl=({value:e,rows:o,maxRows:t,highlightStyle:n,textStyle:i,placeholder:r="",mask:l,showCursor:c=!0,focus:m=!0,tabSize:d=4,cursorIndex:u=0,highlight:a,refreshKey:f})=>{let[p,h]=hr(0),[T,w]=hr(0),[E,k]=hr(0),D=_r((A,v=!1)=>{let J=bs(A);if(!v&&l)return J.replace(/[^\n]/g,l);let q=Fl(J,d);return v?q:q.replace(/@\[(.*?)\]/g,(le,U)=>{let G=U.indexOf("#"),Pe=U.indexOf(":L"),ce=U,De="";G!==-1?(ce=U.slice(0,G),De=U.slice(G)):Pe!==-1&&(ce=U.slice(0,Pe),De=U.slice(Pe));let nt=ce.replace(/\\/g,"/"),pe=(process.cwd()||"").replace(/\\/g,"/");pe&&nt.toLowerCase().startsWith(pe.toLowerCase()+"/")?nt=nt.slice(pe.length+1):nt.startsWith("./")&&(nt=nt.slice(2));let ut=nt.split("/");return`[${ut[ut.length-1]}${De}]`})},[d,l]),{preCursor:_,postCursor:K}=Es(()=>{if(!e)return r&&!m?{preCursor:[{value:D(r,!0),type:"placeholder"}],postCursor:[]}:{preCursor:[{value:c&&m?" ":"",type:"cursor"}],postCursor:[]};let A=e.slice(0,u),v=e.slice(u);if(!m)return{preCursor:[{value:D(e)}],postCursor:[]};if(a&&a.end>a.start&&a.start>=0&&a.end<=e.length)return{preCursor:[{value:D(A.slice(0,a.start))},{value:D(A.slice(a.start,Math.min(a.end,u))),type:"highlight"},{value:D(A.slice(a.end))},{value:c&&m?" ":"",type:"cursor"}],postCursor:[{value:D(v.slice(0,Math.max(a.start-u,0)))},{value:D(v.slice(Math.max(a.start-u,0),Math.max(a.end-u,0))),type:"highlight"},{value:D(v.slice(Math.max(a.end-u,0)))}]};{let q=D(A),le=D(v),U=q.lastIndexOf(`
5
- `)+1,G=le.indexOf(`
6
- `);return{preCursor:[{value:q.slice(0,U)},{value:q.slice(U),type:"highlight"},{value:c&&m?" ":"",type:"cursor"}],postCursor:[{value:le.slice(0,G),type:"highlight"},{value:le.slice(G)}]}}},[u,c,m,e,r,l,a,D,f]),F=Es(()=>T!==void 0?Math.max(o??t??1,Math.min(t??o??1,T)):1,[o,t,T]);Cs(()=>{if(E!==void 0&&F!==void 0){let A=E;h(v=>{let J=v,q=v+F;if(A<=J)return Math.max(0,A-1);if(A>q)return A-F;if(T){if(T<F)return 0;if(T<q)return T-F}return v})}},[E,F,T]);let I=_r(A=>{switch(A){case"placeholder":return{...i,dimColor:!0};case"highlight":return n??i;case"cursor":return{...i,color:c&&m?"cyan":void 0,bold:c&&m,inverse:c&&m};default:return i}},[i,n,c,m]);return so.createElement(pr,{height:F,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},so.createElement(pr,{flexDirection:"column"},so.createElement(pr,{height:F,overflowY:"hidden",flexShrink:0,flexDirection:"column"},so.createElement(pr,{marginTop:-p,flexDirection:"column"},so.createElement($i,{onHeightChange:w},so.createElement(fr,null,_?.map((A,v)=>so.createElement(fr,{key:v,...I(A.type)},A.value)),K?.map((A,v)=>so.createElement(fr,{key:v,...I(A.type)},A.value))))),so.createElement(vl,null)),so.createElement($i,{onHeightChange:k},so.createElement(fr,null,_?.map((A,v)=>so.createElement(fr,{key:v,...I(A.type)},A.value))))))},Pi=({value:e,onChange:o,onSubmit:t,keyBindings:n,showCursor:i=!0,highlightPastedText:r=!1,focus:l=!0,lastFocusEventTime:c=0,columns:m=80,useCustomInput:d=(a,f)=>$l(a,{isActive:f}),...u})=>{let[a,f]=hr(e.length),[p,h]=hr(0);Cs(()=>{a>e.length&&f(e.length)},[e,a]);let T=_r(k=>{let _=bs(e).split(`
7
- `),K=Math.max(20,m-10),F=0,I=0,A=0;for(let v=0;v<_.length;v++){let q=_[v].length;if(k>=A&&k<=A+q){let U=k-A;return F+=Math.floor(U/K),I=U%K,{visualLine:F,visualCol:I}}let le=Math.max(1,Math.ceil(q/K));F+=le,A+=q+1}return{visualLine:F,visualCol:I}},[e,m]),w=_r((k,D)=>{let K=bs(e).split(`
8
- `),F=Math.max(20,m-10),I=0,A=0;for(let v=0;v<K.length;v++){let q=K[v].length,le=Math.max(1,Math.ceil(q/F));if(k>=I&&k<I+le){let U=(k-I)*F,G=Math.min(D,q-U),Pe=Math.max(0,G);return Math.min(A+U+Pe,A+q)}I+=le,A+=q+1}return e.length},[e,m]);d((k,D)=>{if(k==="\x1B[I"||k==="\x1B[O"||k==="[I"||k==="[O")return;let _=n?.submit??(I=>I.return&&I.ctrl),K=n?.newline??(I=>I.return);if(_(D)){t?.(e);return}else if(K(D)){let I=e.slice(0,a)+`
9
- `+e.slice(a);o(I),f(a+1),h(0);return}if(D.tab||D.shift&&D.tab||D.ctrl&&k==="c")return;let F=0;if(k.length>1&&(F=k.length),D.upArrow){if(i){let{visualLine:I,visualCol:A}=T(a);if(I>0){let v=w(I-1,A);f(v),h(0)}}}else if(D.downArrow){if(i){let{visualLine:I,visualCol:A}=T(a),v=w(I+1,A);v!==a&&(f(v),h(0))}}else if(D.leftArrow)i&&(f(Math.max(0,a-1)),h(0));else if(D.rightArrow)i&&(f(Math.min(e.length,a+1)),h(0));else if(D.return){let I=e.slice(0,a)+`
10
- `+e.slice(a);o(I),f(a+1),h(0)}else if(D.backspace||D.delete){if(a>0){let I=e.slice(0,a-1)+e.slice(a);o(I),f(a-1),h(0)}}else if(k){let I=e.slice(0,a)+k+e.slice(a);o(I),f(a+k.length),h(F)}},l);let E=Es(()=>{if(r&&p>1)return{start:Math.max(0,a-p),end:a}},[a,p,r]);return so.createElement(Bl,{...u,value:e,cursorIndex:a,highlight:E,showCursor:i,focus:l})}});import _l from"os";var Bo,Jt,Bi,Nr,Ur,Rr,$n=ie(()=>{Bo=(e,o)=>{if(!e)return"";let t=/\x1B\[[0-?]*[ -/]*[@-~]/g,n=e.split(`
4
+ `)}var _i,Rl,Ni,Ui=re(()=>{_i=({children:e,onHeightChange:o})=>{let t=Bi(null),n=Bi(void 0);return Is(()=>{if(t.current){let{height:i}=Nl(t.current);n.current!==i&&(n.current=i,o?.(i))}}),io.createElement(pr,{ref:t,flexShrink:0,flexGrow:0,width:"100%"},e)},Rl=({value:e,rows:o,maxRows:t,highlightStyle:n,textStyle:i,placeholder:r="",mask:l,showCursor:c=!0,focus:m=!0,tabSize:d=4,cursorIndex:u=0,highlight:a,refreshKey:f})=>{let[p,h]=hr(0),[T,w]=hr(0),[S,k]=hr(0),D=Rr((L,v=!1)=>{let J=ks(L);if(!v&&l)return J.replace(/[^\n]/g,l);let q=Ul(J,d);return v?q:q.replace(/@\[(.*?)\]/g,(ae,W)=>{let X=W.indexOf("#"),$e=W.indexOf(":L"),le=W,Ae="";X!==-1?(le=W.slice(0,X),Ae=W.slice(X)):$e!==-1&&(le=W.slice(0,$e),Ae=W.slice($e));let nt=le.replace(/\\/g,"/"),pe=(process.cwd()||"").replace(/\\/g,"/");pe&&nt.toLowerCase().startsWith(pe.toLowerCase()+"/")?nt=nt.slice(pe.length+1):nt.startsWith("./")&&(nt=nt.slice(2));let dt=nt.split("/");return`[${dt[dt.length-1]}${Ae}]`})},[d,l]),{preCursor:U,postCursor:K}=Cs(()=>{if(!e)return r&&!m?{preCursor:[{value:D(r,!0),type:"placeholder"}],postCursor:[]}:{preCursor:[{value:c&&m?" ":"",type:"cursor"}],postCursor:[]};let L=e.slice(0,u),v=e.slice(u);if(!m)return{preCursor:[{value:D(e)}],postCursor:[]};if(a&&a.end>a.start&&a.start>=0&&a.end<=e.length)return{preCursor:[{value:D(L.slice(0,a.start))},{value:D(L.slice(a.start,Math.min(a.end,u))),type:"highlight"},{value:D(L.slice(a.end))},{value:c&&m?" ":"",type:"cursor"}],postCursor:[{value:D(v.slice(0,Math.max(a.start-u,0)))},{value:D(v.slice(Math.max(a.start-u,0),Math.max(a.end-u,0))),type:"highlight"},{value:D(v.slice(Math.max(a.end-u,0)))}]};{let q=D(L),ae=D(v),W=q.lastIndexOf(`
5
+ `)+1,X=ae.indexOf(`
6
+ `);return{preCursor:[{value:q.slice(0,W)},{value:q.slice(W),type:"highlight"},{value:c&&m?" ":"",type:"cursor"}],postCursor:[{value:ae.slice(0,X),type:"highlight"},{value:ae.slice(X)}]}}},[u,c,m,e,r,l,a,D,f]),F=Cs(()=>T!==void 0?Math.max(o??t??1,Math.min(t??o??1,T)):1,[o,t,T]);Is(()=>{if(S!==void 0&&F!==void 0){let L=S;h(v=>{let J=v,q=v+F;if(L<=J)return Math.max(0,L-1);if(L>q)return L-F;if(T){if(T<F)return 0;if(T<q)return T-F}return v})}},[S,F,T]);let I=Rr(L=>{switch(L){case"placeholder":return{...i,dimColor:!0};case"highlight":return n??i;case"cursor":return{...i,color:c&&m?"cyan":void 0,bold:c&&m,inverse:c&&m};default:return i}},[i,n,c,m]);return io.createElement(pr,{height:F,overflow:"hidden",flexDirection:"column",flexGrow:0,flexShrink:0},io.createElement(pr,{flexDirection:"column"},io.createElement(pr,{height:F,overflowY:"hidden",flexShrink:0,flexDirection:"column"},io.createElement(pr,{marginTop:-p,flexDirection:"column"},io.createElement(_i,{onHeightChange:w},io.createElement(fr,null,U?.map((L,v)=>io.createElement(fr,{key:v,...I(L.type)},L.value)),K?.map((L,v)=>io.createElement(fr,{key:v,...I(L.type)},L.value))))),io.createElement(Bl,null)),io.createElement(_i,{onHeightChange:k},io.createElement(fr,null,U?.map((L,v)=>io.createElement(fr,{key:v,...I(L.type)},L.value))))))},Ni=({value:e,onChange:o,onSubmit:t,keyBindings:n,showCursor:i=!0,highlightPastedText:r=!1,focus:l=!0,lastFocusEventTime:c=0,columns:m=80,useCustomInput:d=(a,f)=>_l(a,{isActive:f}),...u})=>{let[a,f]=hr(e.length),[p,h]=hr(0);Is(()=>{a>e.length&&f(e.length)},[e,a]);let T=Rr(k=>{let U=ks(e).split(`
7
+ `),K=Math.max(20,m-10),F=0,I=0,L=0;for(let v=0;v<U.length;v++){let q=U[v].length;if(k>=L&&k<=L+q){let W=k-L;return F+=Math.floor(W/K),I=W%K,{visualLine:F,visualCol:I}}let ae=Math.max(1,Math.ceil(q/K));F+=ae,L+=q+1}return{visualLine:F,visualCol:I}},[e,m]),w=Rr((k,D)=>{let K=ks(e).split(`
8
+ `),F=Math.max(20,m-10),I=0,L=0;for(let v=0;v<K.length;v++){let q=K[v].length,ae=Math.max(1,Math.ceil(q/F));if(k>=I&&k<I+ae){let W=(k-I)*F,X=Math.min(D,q-W),$e=Math.max(0,X);return Math.min(L+W+$e,L+q)}I+=ae,L+=q+1}return e.length},[e,m]);d((k,D)=>{if(k==="\x1B[I"||k==="\x1B[O"||k==="[I"||k==="[O")return;let U=n?.submit??(I=>I.return&&I.ctrl),K=n?.newline??(I=>I.return);if(U(D)){t?.(e);return}else if(K(D)){let I=e.slice(0,a)+`
9
+ `+e.slice(a);o(I),f(a+1),h(0);return}if(D.tab||D.shift&&D.tab||D.ctrl&&k==="c")return;let F=0;if(k.length>1&&(F=k.length),D.upArrow){if(i){let{visualLine:I,visualCol:L}=T(a);if(I>0){let v=w(I-1,L);f(v),h(0)}}}else if(D.downArrow){if(i){let{visualLine:I,visualCol:L}=T(a),v=w(I+1,L);v!==a&&(f(v),h(0))}}else if(D.leftArrow)i&&(f(Math.max(0,a-1)),h(0));else if(D.rightArrow)i&&(f(Math.min(e.length,a+1)),h(0));else if(D.return){let I=e.slice(0,a)+`
10
+ `+e.slice(a);o(I),f(a+1),h(0)}else if(D.backspace||D.delete){if(a>0){let I=e.slice(0,a-1)+e.slice(a);o(I),f(a-1),h(0)}}else if(k){let I=e.slice(0,a)+k+e.slice(a);o(I),f(a+k.length),h(F)}},l);let S=Cs(()=>{if(r&&p>1)return{start:Math.max(0,a-p),end:a}},[a,p,r]);return io.createElement(Rl,{...u,value:e,cursorIndex:a,highlight:S,showCursor:i,focus:l})}});import Wl from"os";var Uo,Qt,Ri,Wr,Yr,Hr,_n=re(()=>{Uo=(e,o)=>{if(!e)return"";let t=/\x1B\[[0-?]*[ -/]*[@-~]/g,n=e.split(`
11
11
  `),i=[];if(o<=5)return e;let r=l=>l.replace(t,"").length;return n.forEach(l=>{if(r(l)<=o){i.push(l);return}let m=l.split(/(\s+)/),d="",u=0,a=l.match(/^(\s*)/),f=a?a[1]:"";m.forEach((p,h)=>{if(p.length===0)return;let T=r(p);if(u+T>o)if(d.trim().length>0)i.push(d.trimEnd()),d=f+p,u=r(d);else if(t.test(p))i.push(p),d=f,u=r(d);else{let w=p;for(;r(w)>o&&o>10;)i.push(w.substring(0,o)),w=w.substring(o);d=w,u=r(d)}else d+=p,u+=T}),(d.trimEnd().length>0||d===f)&&i.push(d.trimEnd())}),i.join(`
12
- `)},Jt=e=>{if(!e&&e!==0)return"0.0k";let o=typeof e=="string"?parseFloat(e):e;return o>=1e6?`${(o/1e6).toFixed(1)}m`:o>=1e3?`${(o/1e3).toFixed(1)}k`:o.toString()},Bi=(e,o=40)=>{if(e=e.replace(_l.homedir(),"~"),!e||e.length<=o)return e;let t=Math.floor((o-3)/2);return e.substring(0,t)+"..."+e.substring(e.length-t)},Nr=e=>{let o=[],t=new Set;Object.keys(e).forEach(i=>{let r=i.match(/^(replaceContent|newContent|content_to_replace|content_to_add)(\d+)?$/);if(r){let l=r[2]?parseInt(r[2]):1;t.add(l)}});let n=Array.from(t).sort((i,r)=>i-r);for(let i of n){let r,l;if(i===1?(r=e.replaceContent1??e.content_to_replace??e.replaceContent,l=e.newContent1??e.content_to_add??e.newContent):(r=e[`replaceContent${i}`]??e[`content_to_replace${i}`],l=e[`newContent${i}`]??e[`content_to_add${i}`]),r!==void 0&&l!==void 0)o.push({replace:r,new:l});else if(r!==void 0||l!==void 0)return{error:`Mismatched replacement pair for index ${i}. Both replacement and new content must be provided.`}}return{patchPairs:o}},Ur=(e,o)=>{let t=[],n=e.replace(/\r\n/g,`
12
+ `)},Qt=e=>{if(!e&&e!==0)return"0.0k";let o=typeof e=="string"?parseFloat(e):e;return o>=1e6?`${(o/1e6).toFixed(1)}m`:o>=1e3?`${(o/1e3).toFixed(1)}k`:o.toString()},Ri=(e,o=40)=>{if(e=e.replace(Wl.homedir(),"~"),!e||e.length<=o)return e;let t=Math.floor((o-3)/2);return e.substring(0,t)+"..."+e.substring(e.length-t)},Wr=e=>{let o=[],t=new Set;Object.keys(e).forEach(i=>{let r=i.match(/^(replaceContent|newContent|content_to_replace|content_to_add)(\d+)?$/);if(r){let l=r[2]?parseInt(r[2]):1;t.add(l)}});let n=Array.from(t).sort((i,r)=>i-r);for(let i of n){let r,l;if(i===1?(r=e.replaceContent1??e.content_to_replace??e.replaceContent,l=e.newContent1??e.content_to_add??e.newContent):(r=e[`replaceContent${i}`]??e[`content_to_replace${i}`],l=e[`newContent${i}`]??e[`content_to_add${i}`]),r!==void 0&&l!==void 0)o.push({replace:r,new:l});else if(r!==void 0||l!==void 0)return{error:`Mismatched replacement pair for index ${i}. Both replacement and new content must be provided.`}}return{patchPairs:o}},Yr=(e,o)=>{let t=[],n=e.replace(/\r\n/g,`
13
13
  `).replace(/\r/g,`
14
14
  `),i=p=>p.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
15
15
  `).replace(/\r/g,`
16
16
  `),r=p=>p.match(/^\s*/)[0],l=p=>{let h=p.split(`
17
- `).filter(w=>w.trim()!=="");if(h.length===0)return"";let T=r(h[0]);for(let w of h){let E=r(w);E.length<T.length&&(T=E)}return T},c=(p,h,T="")=>{if(!p||h===void 0)return p;let w=J=>{let q=J.split(`
18
- `).filter(ce=>ce.trim()!=="");if(q.length===0)return{char:" ",size:4};let le=q[0].match(/^\s*/)[0];if(le.includes(" "))return{char:" ",size:1};let U=q.map(ce=>ce.match(/^\s*/)[0].length).filter(ce=>ce>0);if(U.length===0)return{char:" ",size:le.length||4};let G=(ce,De)=>De?G(De,ce%De):ce;return{char:" ",size:U.reduce((ce,De)=>G(ce,De))||4}},E=w(h),k=w(p),D=l(h).length,_=(T.match(/^\s*/)||[""])[0].length,F=(_+D)/E.size,I=l(p).length/k.size,A=F-I;return p.split(`
19
- `).map((J,q)=>{if(J.trim()===""&&q!==0)return"";let le=J.match(/^\s*/)[0].length/k.size,U=Math.max(0,le+A),G=U;if(q===0){let Pe=_/E.size;G=Math.max(0,U-Pe)}return E.char.repeat(G*E.size)+J.trimStart()}).join(`
20
- `)},m=n,d=[];for(let p of o){let h=i(p.replace||""),T=i(p.new||"");if(h===""&&T==="")continue;let w=h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),E=null;if(h!==""&&m.includes(h))E=new RegExp(w,"g");else{let A=h.split(`
21
- `).map(v=>v.trim()).filter(v=>v.length>0).map(v=>v.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s*"));if(A.length>0){let v=A.join("\\s*");try{E=new RegExp(v,"g")}catch{E=new RegExp(w,"g")}}else E=new RegExp(w,"g")}let k=[...m.matchAll(E)];if(k.length===0){t.push({success:!1,error:`Block ${t.length+1}: Could not find match.`});continue}if(k.length>1){t.push({success:!1,error:`Block ${t.length+1}: Found ${k.length} matches (must be unique).`});continue}let D=k[0].index,_=k[0][0],K=m.lastIndexOf(`
22
- `,D)+1,F=m.substring(K,D),I=c(T,_,F);d.push({startPos:D,firstMatchContent:_,finalReplacement:I,content_to_replace:h,content_to_add:T}),m=m.substring(0,D)+I+m.substring(D+_.length)}if(t.filter(p=>!p.success).length>0)return{content:e,results:t};let a=n,f=[];for(let p=0;p<d.length;p++){let h=d[p],T=h.content_to_replace.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=null;if(h.content_to_replace!==""&&a.includes(h.content_to_replace))w=new RegExp(T,"g");else{let G=h.content_to_replace.split(`
23
- `).map(Pe=>Pe.trim()).filter(Pe=>Pe.length>0).map(Pe=>Pe.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s*")).join("\\s*");try{w=new RegExp(G,"g")}catch{w=new RegExp(T,"g")}}let E=[...a.matchAll(w)],k=E[0].index,D=E[0][0],_=a.lastIndexOf(`
24
- `,k)+1,K=a.substring(_,k),F=c(h.content_to_add,D,K),I=a.split(`
25
- `),A=a.substring(0,k).split(`
26
- `).length,v=[];for(let U=Math.max(0,A-4);U<A-1;U++)v.push({num:U+1,text:I[U]});let J=D.split(`
27
- `),q=[],le=A+J.length-1;for(let U=le;U<Math.min(I.length,le+3);U++)q.push({num:U+1,text:I[U]});f.push({success:!0,oldContent:D,newContent:F,originalStartLine:A,contextBefore:v,contextAfter:q}),a=a.substring(0,k)+F+a.substring(k+D.length)}return{content:a,results:f}},Rr=(e,o,t,n=8)=>{if(!t||t.length===0)return"";let i=e.split(/\r?\n/),r=o.split(/\r?\n/),l=`[DIFF_START]
17
+ `).filter(w=>w.trim()!=="");if(h.length===0)return"";let T=r(h[0]);for(let w of h){let S=r(w);S.length<T.length&&(T=S)}return T},c=(p,h,T="")=>{if(!p||h===void 0)return p;let w=J=>{let q=J.split(`
18
+ `).filter(le=>le.trim()!=="");if(q.length===0)return{char:" ",size:4};let ae=q[0].match(/^\s*/)[0];if(ae.includes(" "))return{char:" ",size:1};let W=q.map(le=>le.match(/^\s*/)[0].length).filter(le=>le>0);if(W.length===0)return{char:" ",size:ae.length||4};let X=(le,Ae)=>Ae?X(Ae,le%Ae):le;return{char:" ",size:W.reduce((le,Ae)=>X(le,Ae))||4}},S=w(h),k=w(p),D=l(h).length,U=(T.match(/^\s*/)||[""])[0].length,F=(U+D)/S.size,I=l(p).length/k.size,L=F-I;return p.split(`
19
+ `).map((J,q)=>{if(J.trim()===""&&q!==0)return"";let ae=J.match(/^\s*/)[0].length/k.size,W=Math.max(0,ae+L),X=W;if(q===0){let $e=U/S.size;X=Math.max(0,W-$e)}return S.char.repeat(X*S.size)+J.trimStart()}).join(`
20
+ `)},m=n,d=[];for(let p of o){let h=i(p.replace||""),T=i(p.new||"");if(h===""&&T==="")continue;let w=h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),S=null;if(h!==""&&m.includes(h))S=new RegExp(w,"g");else{let L=h.split(`
21
+ `).map(v=>v.trim()).filter(v=>v.length>0).map(v=>v.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s*"));if(L.length>0){let v=L.join("\\s*");try{S=new RegExp(v,"g")}catch{S=new RegExp(w,"g")}}else S=new RegExp(w,"g")}let k=[...m.matchAll(S)];if(k.length===0){t.push({success:!1,error:`Block ${t.length+1}: Could not find match.`});continue}if(k.length>1){t.push({success:!1,error:`Block ${t.length+1}: Found ${k.length} matches (must be unique).`});continue}let D=k[0].index,U=k[0][0],K=m.lastIndexOf(`
22
+ `,D)+1,F=m.substring(K,D),I=c(T,U,F);d.push({startPos:D,firstMatchContent:U,finalReplacement:I,content_to_replace:h,content_to_add:T}),m=m.substring(0,D)+I+m.substring(D+U.length)}if(t.filter(p=>!p.success).length>0)return{content:e,results:t};let a=n,f=[];for(let p=0;p<d.length;p++){let h=d[p],T=h.content_to_replace.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=null;if(h.content_to_replace!==""&&a.includes(h.content_to_replace))w=new RegExp(T,"g");else{let X=h.content_to_replace.split(`
23
+ `).map($e=>$e.trim()).filter($e=>$e.length>0).map($e=>$e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s*")).join("\\s*");try{w=new RegExp(X,"g")}catch{w=new RegExp(T,"g")}}let S=[...a.matchAll(w)],k=S[0].index,D=S[0][0],U=a.lastIndexOf(`
24
+ `,k)+1,K=a.substring(U,k),F=c(h.content_to_add,D,K),I=a.split(`
25
+ `),L=a.substring(0,k).split(`
26
+ `).length,v=[];for(let W=Math.max(0,L-4);W<L-1;W++)v.push({num:W+1,text:I[W]});let J=D.split(`
27
+ `),q=[],ae=L+J.length-1;for(let W=ae;W<Math.min(I.length,ae+3);W++)q.push({num:W+1,text:I[W]});f.push({success:!0,oldContent:D,newContent:F,originalStartLine:L,contextBefore:v,contextAfter:q}),a=a.substring(0,k)+F+a.substring(k+D.length)}return{content:a,results:f}},Hr=(e,o,t,n=8)=>{if(!t||t.length===0)return"";let i=e.split(/\r?\n/),r=o.split(/\r?\n/),l=`[DIFF_START]
28
28
  `,c="\u2550".repeat(88),m=0;return t.forEach((d,u)=>{if(!d.success)return;if(u===0)for(m=Math.max(0,d.originalStartLine-4);m<d.originalStartLine-1;)l+=`[UI_CONTEXT] ${m+1} |${r[m]||""}
29
29
  `,m++;else{let T=t[u-1],w=T.originalStartLine+T.oldContent.split(`
30
30
  `).length-1;if(d.originalStartLine-w-1>=n){let k=Math.min(r.length,m+3);for(;m<k;)l+=`[UI_CONTEXT] ${m+1} |${r[m]||""}
@@ -35,30 +35,30 @@ var Dl=Object.defineProperty;var ie=(e,o)=>()=>(e&&(o=e(e=0)),o);var Ss=(e,o)=>{
35
35
  `);a.forEach((T,w)=>{l+=`-${d.originalStartLine+w}|${T}
36
36
  `});let f=d.originalStartLine+a.length-1,p=i[f]||null,h=m;if(p!==null){let T=u<t.length-1?t[u+1].originalStartLine+10:r.length;for(let w=m;w<T;w++){if(r[w]===p){h=w;break}w===r.length-1&&(h=r.length)}}else h=r.length;for(;m<h;)l+=`+${m+1}|${r[m]||""}
37
37
  `,m++;if(u===t.length-1){let T=Math.min(r.length,m+3);for(;m<T;)l+=`[UI_CONTEXT] ${m+1} |${r[m]||""}
38
- `,m++}}),l+="[DIFF_END]",l}});import $t from"react";import{Box as fn,Text as pn}from"ink";var Wr,ks=ie(()=>{$n();Wr=$t.memo(({command:e,output:o,completed:t=!1,isFocused:n=!1,columns:i=80,isPty:r=!1})=>{let c=(r?(d=>{if(!d)return"";let u=/\x1b\[H|\x1b\[2J|\x1b\[3J|\x1bc/g,a=[...d.matchAll(u)],f=d;if(a.length>0){let h=a[a.length-1];f=d.substring(h.index+h[0].length)}return f.replace(/\r+\n/g,`
38
+ `,m++}}),l+="[DIFF_END]",l}});import $t from"react";import{Box as xn,Text as yn}from"ink";var jr,Ms=re(()=>{_n();jr=$t.memo(({command:e,output:o,completed:t=!1,isFocused:n=!1,columns:i=80,isPty:r=!1})=>{let c=(r?(d=>{if(!d)return"";let u=/\x1b\[H|\x1b\[2J|\x1b\[3J|\x1bc/g,a=[...d.matchAll(u)],f=d;if(a.length>0){let h=a[a.length-1];f=d.substring(h.index+h[0].length)}return f.replace(/\r+\n/g,`
39
39
  `).split(`
40
40
  `).map(h=>{let T=h.split("\r");return T[T.length-1]}).join(`
41
41
  `)})(o):(o||"").replace(/\r\n/g,`
42
42
  `)).replace(/\n{3,}/g,`
43
43
 
44
- `),m=r?c:c?Bo(c,i-6):"";return $t.createElement(fn,{flexDirection:"column",borderStyle:n?"double":"round",borderColor:t?"#334155":n?"yellow":"cyan",paddingX:2,paddingY:t?0:1,width:"100%"},$t.createElement(fn,{marginBottom:1,justifyContent:"space-between",width:"100%"},$t.createElement(fn,{flexShrink:1,paddingRight:2},$t.createElement(pn,null,$t.createElement(pn,{color:t?"gray":n?"yellow":"cyan",bold:!0},t?"\u{1F3C1} FINISHED:":"\u26A1 EXECUTING:"," "),$t.createElement(pn,{color:t?"gray":"white"},e))),r&&$t.createElement(fn,{flexShrink:0,paddingX:1},$t.createElement(pn,{color:t?"gray":"magenta",bold:!0},"ADVANCE"))),m?$t.createElement(fn,{marginTop:t?0:1,backgroundColor:r?void 0:"#0a0a0a",paddingX:1},$t.createElement(pn,{color:t?"gray":void 0},m)):!t&&$t.createElement(fn,{marginTop:1,backgroundColor:r?void 0:"#0a0a0a",paddingX:1},$t.createElement(pn,{color:"gray",italic:!0},"Waiting for output...")),$t.createElement(fn,{justifyContent:"space-between",marginTop:1},t?$t.createElement(fn,null):$t.createElement(pn,{color:"gray",dimColor:!0,italic:!0},n?"Press TAB to unfocus, then double-press ESC to terminate.":"Double-press ESC to terminate if hanging."),$t.createElement(pn,{color:t?"#475569":n?"yellow":"cyan",bold:!0},t?"\u25CF ARCHIVED":n?"\u25B6 TERMINAL FOCUSED":"\u25CF LIVE (Press TAB to focus)")))})});var Nl,Ce,hn=ie(()=>{Nl=()=>process.env.TERM_PROGRAM==="vscode"?"vscode":process.env.WT_SESSION?"wt":"default",Ce=(e=2)=>{let o=Nl();return o==="wt"?" ".repeat(Math.max(1,e-1)):" ".repeat(e)}});import b from"react";import{Box as W,Text as Z}from"ink";var Ul,Rl,Wl,Yl,_i,gn,Hl,Ni,jl,Gl,Ui,Ri,Is,Xl,Wi,Yi=ie(()=>{ks();$n();hn();Ul={write_file:"WriteFile",update_file:"UpdateFile",read_folder:"ReadFolder",view_file:"ViewFile",exec_command:"ExecuteCommand",web_search:"WebSearch",web_scrape:"ReadSite",search_keyword:"SearchKeyword",write_pdf:"CreatePDF",write_docx:"CreateDocument",generate_image:"GenerateImage",WriteFile:"WriteFile",PatchFile:"PatchFile",ReadFolder:"ReadFolder",ReadFile:"ReadFile",Run:"RunCommand",WebSearch:"WebSearch",WebScrape:"WebScrape",SearchKeyword:"SearchKeyword",WritePDF:"WritePDF",WriteDoc:"WriteDoc",Memory:"Memory",Chat:"Chat",GenerateImage:"GenerateImage"},Rl=e=>{if(!e)return e;let o=e.replace(/<\/think>(\r?\n){2}/gi,"</think>").replace(/(\r?\n){2}(?=\[?(?:tool:functions|tool\.functions|\s*turn\s*:))/gi,""),t="tool:functions.";for(;;){let i=o.toLowerCase().indexOf(t);if(i===-1)break;let r=i,l=!1,c=i-1;for(;c>=0&&/\s/.test(o[c]);)c--;c>=0&&o[c]==="["&&(r=c,l=!0);let m=0,d=!1,u=null,a=i;for(;a<o.length;){let f=o[a];if(!u&&(f==="'"||f==='"'||f==="`")?u=f:u&&f===u&&o[a-1]!=="\\"&&(u=null),u||(f==="("?(m++,d=!0):f===")"&&m--),d&&m===0&&!u){let p=a;if(l){let h=a+1;for(;h<o.length&&/\s/.test(o[h]);)h++;h<o.length&&o[h]==="]"&&(p=h)}o=o.substring(0,r)+o.substring(p+1);break}if(a++,a===o.length)return o=o.substring(0,r),o}}return o.replace(/\[TOOL RESULT\]:?\s*/gi,"").split(`
44
+ `),m=r?c:c?Uo(c,i-6):"";return $t.createElement(xn,{flexDirection:"column",borderStyle:n?"double":"round",borderColor:t?"#334155":n?"yellow":"cyan",paddingX:2,paddingY:t?0:1,width:"100%"},$t.createElement(xn,{marginBottom:1,justifyContent:"space-between",width:"100%"},$t.createElement(xn,{flexShrink:1,paddingRight:2},$t.createElement(yn,null,$t.createElement(yn,{color:t?"gray":n?"yellow":"cyan",bold:!0},t?"\u{1F3C1} FINISHED:":"\u26A1 EXECUTING:"," "),$t.createElement(yn,{color:t?"gray":"white"},e))),r&&$t.createElement(xn,{flexShrink:0,paddingX:1},$t.createElement(yn,{color:t?"gray":"magenta",bold:!0},"ADVANCE"))),m?$t.createElement(xn,{marginTop:t?0:1,backgroundColor:r?void 0:"#0a0a0a",paddingX:1},$t.createElement(yn,{color:t?"gray":void 0},m)):!t&&$t.createElement(xn,{marginTop:1,backgroundColor:r?void 0:"#0a0a0a",paddingX:1},$t.createElement(yn,{color:"gray",italic:!0},"Waiting for output...")),$t.createElement(xn,{justifyContent:"space-between",marginTop:1},t?$t.createElement(xn,null):$t.createElement(yn,{color:"gray",dimColor:!0,italic:!0},n?"Press TAB to unfocus, then double-press ESC to terminate.":"Double-press ESC to terminate if hanging."),$t.createElement(yn,{color:t?"#475569":n?"yellow":"cyan",bold:!0},t?"\u25CF ARCHIVED":n?"\u25B6 TERMINAL FOCUSED":"\u25CF LIVE (Press TAB to focus)")))})});var Yl,Ce,wn=re(()=>{Yl=()=>process.env.TERM_PROGRAM==="vscode"?"vscode":process.env.WT_SESSION?"wt":"default",Ce=(e=2)=>{let o=Yl();return o==="wt"?" ".repeat(Math.max(1,e-1)):" ".repeat(e)}});import E from"react";import{Box as j,Text as ee}from"ink";var Hl,jl,Gl,Xl,Wi,Tn,Kl,Yi,ql,Vl,Hi,ji,As,zl,Gi,Xi=re(()=>{Ms();_n();wn();Hl={write_file:"WriteFile",update_file:"UpdateFile",read_folder:"ReadFolder",view_file:"ViewFile",exec_command:"ExecuteCommand",web_search:"WebSearch",web_scrape:"ReadSite",search_keyword:"SearchKeyword",write_pdf:"CreatePDF",write_docx:"CreateDocument",generate_image:"GenerateImage",WriteFile:"WriteFile",PatchFile:"PatchFile",ReadFolder:"ReadFolder",ReadFile:"ReadFile",Run:"RunCommand",WebSearch:"WebSearch",WebScrape:"WebScrape",SearchKeyword:"SearchKeyword",WritePDF:"WritePDF",WriteDoc:"WriteDoc",Memory:"Memory",Chat:"Chat",GenerateImage:"GenerateImage"},jl=e=>{if(!e)return e;let o=e.replace(/<\/think>(\r?\n){2}/gi,"</think>").replace(/(\r?\n){2}(?=\[?(?:tool:functions|tool\.functions|\s*turn\s*:))/gi,""),t="tool:functions.";for(;;){let i=o.toLowerCase().indexOf(t);if(i===-1)break;let r=i,l=!1,c=i-1;for(;c>=0&&/\s/.test(o[c]);)c--;c>=0&&o[c]==="["&&(r=c,l=!0);let m=0,d=!1,u=null,a=i;for(;a<o.length;){let f=o[a];if(!u&&(f==="'"||f==='"'||f==="`")?u=f:u&&f===u&&o[a-1]!=="\\"&&(u=null),u||(f==="("?(m++,d=!0):f===")"&&m--),d&&m===0&&!u){let p=a;if(l){let h=a+1;for(;h<o.length&&/\s/.test(o[h]);)h++;h<o.length&&o[h]==="]"&&(p=h)}o=o.substring(0,r)+o.substring(p+1);break}if(a++,a===o.length)return o=o.substring(0,r),o}}return o.replace(/\[TOOL RESULT\]:?\s*/gi,"").split(`
45
45
  `).filter(n=>!n.trim().startsWith("SUCCESS:")&&!n.trim().startsWith("ERROR:")).join(`
46
- `).replace(/\[\s*turn\s*:\s*(continue|finish)\s*\]/gi,"").replace(/\[\s*turn\s*:?.*?$/gi,"").replace(/\n\s*turn\s*:?.*?$/gi,"").replace(/\[\s*$/gi,"").replace(/\n\nResponded on .*/g,"").replace(/\n\n\[Prompted on: .*\]/g,"").replace(/(\$?\\?\/?\\rightarrow\$?|\$\\rightarrow\$)/gi,"\u2192").replace(/(\$?\\?\/?\\leftarrow\$?|\$\\leftarrow\$)/gi,"\u2190").replace(/(\$?\\?\/?\\uparrow\$?|\$\\uparrow\$)/gi,"\u2191").replace(/(\$?\\?\/?\\downarrow\$?|\$\\downarrow\$)/gi,"\u2193").replace(/(\$?\\?\/?\\leftrightarrow\$?|\$\\leftrightarrow\$)/gi,"\u2194").replace(/@\[TerminalName:.*?, ProcessId:.*?\]/gi,"").replace(/\b(write_file|update_file|read_folder|view_file|exec_command|web_search|web_scrape|search_keyword|write_pdf|write_docx|generate_image)\b/gi,n=>Ul[n.toLowerCase()]||n).trim()},Wl=(e,o=80)=>{if(!e)return null;let t=o-10,n=Bo(e.trim(),t);return b.createElement(W,{width:"100%"},b.createElement(Z,{italic:!0},b.createElement(gn,{text:n,color:"gray"})))},Yl=e=>e.replace(/\\multiply|\\mul|\\times/g,"\xD7").replace(/\\div/g,"\xF7").replace(/\\cdot/g,"\u22C5").replace(/\\infty/g,"\u221E").replace(/\\pm/g,"\xB1").replace(/\\leq/g,"\u2264").replace(/\\geq/g,"\u2265").replace(/\\neq/g,"\u2260").replace(/\\sqrt\s*\{([^}]+)\}/g,"\u221A($1)").replace(/\\sqrt\s*(\w+|\d+)/g,"\u221A($1)").replace(/\\alpha/g,"\u03B1").replace(/\\beta/g,"\u03B2").replace(/\\theta/g,"\u03B8").replace(/\\pi/g,"\u03C0").replace(/\\approx/g,"\u2248").replace(/\\Delta/g,"\u0394").replace(/\\sigma/g,"\u03C3").replace(/\\sum/g,"\u03A3").replace(/\\prod/g,"\u03A0").replace(/\\rightarrow|\\to/g,"\u2192").replace(/\\left\b|\\right\b/g,"").replace(/\\left\(|\\right\)/g,o=>o.includes("left")?"(":")").replace(/\\left\[|\\right\]/g,o=>o.includes("left")?"[":"]").replace(/\\\{|\\\}/g,o=>o.includes("{")?"{":"}").replace(/\\text\s*\{([^}]+)\}/g,"$1").replace(/\\text\s+(\w+)/g,"$1").replace(/\\%/g,"%"),_i=(e,o)=>{if(!e)return null;let t=e.replace(/\\frac\s*\{([^{}]*)\}\s*\{([^{}]*)\}/g,"($1/$2)");t=Yl(t);let n=t.split(/(\\(?:mathbf|textbf|textit|underline|texttt)\{[^{}]*\})/g);return b.createElement(b.Fragment,{key:o},n.map((i,r)=>{if(i.startsWith("\\")){let l=i.match(/\\(\w+)\{([^{}]*)\}/);if(l){let c=l[1],m=l[2];return b.createElement(Z,{key:r,bold:c==="mathbf"||c==="textbf",italic:c==="textit",underline:c==="underline",color:c==="texttt"?"cyan":void 0},m)}}return i}))},gn=b.memo(({text:e,color:o})=>{if(!e)return null;let t=e.split(/(```[\s\S]*?```|`[^`]+`|@\[.*?\]|\*\*.*?\*\*|\*.*?\*|\$.*?\$|\[.*?\]\s*\(.*?\)|\[.*?\]\s*\[.*?\]|https?:\/\/[^\s]+)/g);return b.createElement(Z,{color:o,wrap:"anywhere"},t.map((n,i)=>{if(!n)return null;if(n.startsWith("```")&&n.endsWith("```")){let r=n.slice(3,-3);return b.createElement(Z,{key:i,color:"cyan",backgroundColor:"#003333"}," ",r," ")}if(n.startsWith("**")&&n.endsWith("**"))return b.createElement(Z,{key:i,bold:!0,color:"white"},b.createElement(gn,{text:n.slice(2,-2),color:"white"}));if(n.startsWith("*")&&n.endsWith("*"))return b.createElement(Z,{key:i,italic:!0,color:"gray"},b.createElement(gn,{text:n.slice(1,-1),color:"gray"}));if(n.startsWith("`")&&n.endsWith("`")){let r=n.slice(1,-1),l=r.replace(/@\[(.*?)\]/g,(m,d)=>d.split("/").pop().split("\\").pop().replace(/:L/gi,"#L")),c=r.includes("@[");return b.createElement(Z,{key:i,color:"cyan",bold:c,backgroundColor:c?"#111124":"#003333"}," ",l," ")}if(n.startsWith("@[")&&n.endsWith("]")){let l=n.slice(2,-1).split("/").pop().split("\\").pop().replace(/:L/gi,"#L");return b.createElement(Z,{key:i,color:"cyan",bold:!0,backgroundColor:"#111124"}," ",l," ")}if(n.startsWith("$")&&n.endsWith("$")){let r=n.slice(1,-1);return b.createElement(Z,{key:i,color:"yellow"},_i(r,i))}if(n.startsWith("[")&&(n.includes("](")||n.includes("] ("))){let r=n.match(/\[(.*?)\]\s*\((.*?)\)/);if(r)return b.createElement(Z,{key:i},b.createElement(Z,{color:"cyan",underline:!0,bold:!0},r[1]),b.createElement(Z,{color:"gray",dimColor:!0,italic:!0}," (",r[2],")"))}if(n.startsWith("[")&&(n.includes("][")||n.includes("] ["))){let r=n.match(/\[(.*?)\]\s*\[(.*?)\]/);if(r)return b.createElement(Z,{key:i},b.createElement(Z,{color:"cyan",underline:!0,bold:!0},r[1]),b.createElement(Z,{color:"gray",dimColor:!0,italic:!0}," [",r[2],"]"))}return n.startsWith("http")?b.createElement(Z,{key:i,color:"cyan",underline:!0,italic:!0},n):_i(n,i)}))}),Hl=b.memo(({buffer:e,terminalWidth:o=80})=>{if(e.length<2)return null;let t=e.map(m=>{let d=m.split("|");return d[0]!==void 0&&d[0].trim()===""&&d.shift(),d.length>0&&d[d.length-1].trim()===""&&d.pop(),d.map(u=>u.trim())}),n=t[0],i=t.slice(2),r=Math.floor(100/n.length),l=o-8,c=Math.floor(l/n.length)-2;return b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"#454545ff",paddingX:1,marginY:0,width:"100%",flexGrow:1},b.createElement(W,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:"#444",marginBottom:1,paddingBottom:0,width:"100%"},n.map((m,d)=>b.createElement(W,{key:d,flexBasis:`${r}%`,flexGrow:1,flexShrink:0,paddingRight:2},b.createElement(gn,{text:Bo(m,c),color:"cyan"})))),i.map((m,d)=>b.createElement(W,{key:d,flexDirection:"row",marginBottom:d===i.length-1?0:1,width:"100%"},m.map((u,a)=>b.createElement(W,{key:a,flexBasis:`${r}%`,flexGrow:1,flexShrink:0,paddingRight:2,flexDirection:"column"},b.createElement(gn,{text:Bo(u,c),color:"white"}))))))}),Ni=b.memo(({text:e,color:o="white",columns:t=80})=>{if(!e)return null;let n=e.split(`
47
- `),i=[],r=[],l=[],c=m=>{r.length>0&&(i.push(b.createElement(Hl,{key:`table-${m}`,buffer:[...r],terminalWidth:t})),r=[]),l.length>0&&(i.push(b.createElement(W,{key:`quote-${m}`,borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:"gray",paddingLeft:1,marginY:1,flexDirection:"column"},l.map((d,u)=>b.createElement(gn,{key:u,text:d,color:"gray"})))),l=[])};return n.forEach((m,d)=>{let u=m.trim(),a=u.startsWith("|"),f=u.startsWith(">");if(a)l.length>0&&c(d),r.push(m);else if(f)r.length>0&&c(d),l.push(u.replace(/^>\s*/,""));else{if(c(d),u===""){i.push(b.createElement(W,{key:d,height:1}));return}if(u==="---"||u==="***"||u==="___"){i.push(b.createElement(W,{key:d,marginY:1,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:"#333"}));return}let p=u.match(/^(#{1,6})\s+(.*)/);if(p){let k=p[1].length,D=p[2];i.push(b.createElement(W,{key:d,marginTop:1,marginBottom:1,width:"100%"},b.createElement(Z,{bold:!0,color:k===1?"cyan":k===2?"magenta":k===3?"yellow":k===4?"green":k===5?"blue":"white",underline:!0},D.toUpperCase())));return}let h=u.startsWith("* ")||u.startsWith("- "),T=/^\d+\.\s/.test(u),w=m.includes("\u2588")||m.includes("\u2554")||m.includes("\u255A")||m.includes("\u2550"),E="";if(w)E=m;else if(h||T){let k=h?" \u2022 ":u.match(/^\d+\.\s/)[0],D=" ".repeat(k.length),_=Bo(u.replace(/^[\*\-\d+\.]+\s/,""),t-(k.length+6));E=k+_.split(`
46
+ `).replace(/\[\s*turn\s*:\s*(continue|finish)\s*\]/gi,"").replace(/\[\s*turn\s*:?.*?$/gi,"").replace(/\n\s*turn\s*:?.*?$/gi,"").replace(/\[\s*$/gi,"").replace(/\n\nResponded on .*/g,"").replace(/\n\n\[Prompted on: .*\]/g,"").replace(/(\$?\\?\/?\\rightarrow\$?|\$\\rightarrow\$)/gi,"\u2192").replace(/(\$?\\?\/?\\leftarrow\$?|\$\\leftarrow\$)/gi,"\u2190").replace(/(\$?\\?\/?\\uparrow\$?|\$\\uparrow\$)/gi,"\u2191").replace(/(\$?\\?\/?\\downarrow\$?|\$\\downarrow\$)/gi,"\u2193").replace(/(\$?\\?\/?\\leftrightarrow\$?|\$\\leftrightarrow\$)/gi,"\u2194").replace(/@\[TerminalName:.*?, ProcessId:.*?\]/gi,"").replace(/\b(write_file|update_file|read_folder|view_file|exec_command|web_search|web_scrape|search_keyword|write_pdf|write_docx|generate_image)\b/gi,n=>Hl[n.toLowerCase()]||n).trim()},Gl=(e,o=80)=>{if(!e)return null;let t=o-10,n=Uo(e.trim(),t);return E.createElement(j,{width:"100%"},E.createElement(ee,{italic:!0},E.createElement(Tn,{text:n,color:"gray"})))},Xl=e=>e.replace(/\\multiply|\\mul|\\times/g,"\xD7").replace(/\\div/g,"\xF7").replace(/\\cdot/g,"\u22C5").replace(/\\infty/g,"\u221E").replace(/\\pm/g,"\xB1").replace(/\\leq/g,"\u2264").replace(/\\geq/g,"\u2265").replace(/\\neq/g,"\u2260").replace(/\\sqrt\s*\{([^}]+)\}/g,"\u221A($1)").replace(/\\sqrt\s*(\w+|\d+)/g,"\u221A($1)").replace(/\\alpha/g,"\u03B1").replace(/\\beta/g,"\u03B2").replace(/\\theta/g,"\u03B8").replace(/\\pi/g,"\u03C0").replace(/\\approx/g,"\u2248").replace(/\\Delta/g,"\u0394").replace(/\\sigma/g,"\u03C3").replace(/\\sum/g,"\u03A3").replace(/\\prod/g,"\u03A0").replace(/\\rightarrow|\\to/g,"\u2192").replace(/\\left\b|\\right\b/g,"").replace(/\\left\(|\\right\)/g,o=>o.includes("left")?"(":")").replace(/\\left\[|\\right\]/g,o=>o.includes("left")?"[":"]").replace(/\\\{|\\\}/g,o=>o.includes("{")?"{":"}").replace(/\\text\s*\{([^}]+)\}/g,"$1").replace(/\\text\s+(\w+)/g,"$1").replace(/\\%/g,"%"),Wi=(e,o)=>{if(!e)return null;let t=e.replace(/\\frac\s*\{([^{}]*)\}\s*\{([^{}]*)\}/g,"($1/$2)");t=Xl(t);let n=t.split(/(\\(?:mathbf|textbf|textit|underline|texttt)\{[^{}]*\})/g);return E.createElement(E.Fragment,{key:o},n.map((i,r)=>{if(i.startsWith("\\")){let l=i.match(/\\(\w+)\{([^{}]*)\}/);if(l){let c=l[1],m=l[2];return E.createElement(ee,{key:r,bold:c==="mathbf"||c==="textbf",italic:c==="textit",underline:c==="underline",color:c==="texttt"?"cyan":void 0},m)}}return i}))},Tn=E.memo(({text:e,color:o})=>{if(!e)return null;let t=e.split(/(```[\s\S]*?```|`[^`]+`|@\[.*?\]|\*\*.*?\*\*|\*.*?\*|\$.*?\$|\[.*?\]\s*\(.*?\)|\[.*?\]\s*\[.*?\]|https?:\/\/[^\s]+)/g);return E.createElement(ee,{color:o,wrap:"anywhere"},t.map((n,i)=>{if(!n)return null;if(n.startsWith("```")&&n.endsWith("```")){let r=n.slice(3,-3);return E.createElement(ee,{key:i,color:"cyan",backgroundColor:"#003333"}," ",r," ")}if(n.startsWith("**")&&n.endsWith("**"))return E.createElement(ee,{key:i,bold:!0,color:"white"},E.createElement(Tn,{text:n.slice(2,-2),color:"white"}));if(n.startsWith("*")&&n.endsWith("*"))return E.createElement(ee,{key:i,italic:!0,color:"gray"},E.createElement(Tn,{text:n.slice(1,-1),color:"gray"}));if(n.startsWith("`")&&n.endsWith("`")){let r=n.slice(1,-1),l=r.replace(/@\[(.*?)\]/g,(m,d)=>d.split("/").pop().split("\\").pop().replace(/:L/gi,"#L")),c=r.includes("@[");return E.createElement(ee,{key:i,color:"cyan",bold:c,backgroundColor:c?"#111124":"#003333"}," ",l," ")}if(n.startsWith("@[")&&n.endsWith("]")){let l=n.slice(2,-1).split("/").pop().split("\\").pop().replace(/:L/gi,"#L");return E.createElement(ee,{key:i,color:"cyan",bold:!0,backgroundColor:"#111124"}," ",l," ")}if(n.startsWith("$")&&n.endsWith("$")){let r=n.slice(1,-1);return E.createElement(ee,{key:i,color:"yellow"},Wi(r,i))}if(n.startsWith("[")&&(n.includes("](")||n.includes("] ("))){let r=n.match(/\[(.*?)\]\s*\((.*?)\)/);if(r)return E.createElement(ee,{key:i},E.createElement(ee,{color:"cyan",underline:!0,bold:!0},r[1]),E.createElement(ee,{color:"gray",dimColor:!0,italic:!0}," (",r[2],")"))}if(n.startsWith("[")&&(n.includes("][")||n.includes("] ["))){let r=n.match(/\[(.*?)\]\s*\[(.*?)\]/);if(r)return E.createElement(ee,{key:i},E.createElement(ee,{color:"cyan",underline:!0,bold:!0},r[1]),E.createElement(ee,{color:"gray",dimColor:!0,italic:!0}," [",r[2],"]"))}return n.startsWith("http")?E.createElement(ee,{key:i,color:"cyan",underline:!0,italic:!0},n):Wi(n,i)}))}),Kl=E.memo(({buffer:e,terminalWidth:o=80})=>{if(e.length<2)return null;let t=e.map(m=>{let d=m.split("|");return d[0]!==void 0&&d[0].trim()===""&&d.shift(),d.length>0&&d[d.length-1].trim()===""&&d.pop(),d.map(u=>u.trim())}),n=t[0],i=t.slice(2),r=Math.floor(100/n.length),l=o-8,c=Math.floor(l/n.length)-2;return E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"#454545ff",paddingX:1,marginY:0,width:"100%",flexGrow:1},E.createElement(j,{flexDirection:"row",borderStyle:"single",borderBottom:!0,borderTop:!1,borderLeft:!1,borderRight:!1,borderColor:"#444",marginBottom:1,paddingBottom:0,width:"100%"},n.map((m,d)=>E.createElement(j,{key:d,flexBasis:`${r}%`,flexGrow:1,flexShrink:0,paddingRight:2},E.createElement(Tn,{text:Uo(m,c),color:"cyan"})))),i.map((m,d)=>E.createElement(j,{key:d,flexDirection:"row",marginBottom:d===i.length-1?0:1,width:"100%"},m.map((u,a)=>E.createElement(j,{key:a,flexBasis:`${r}%`,flexGrow:1,flexShrink:0,paddingRight:2,flexDirection:"column"},E.createElement(Tn,{text:Uo(u,c),color:"white"}))))))}),Yi=E.memo(({text:e,color:o="white",columns:t=80})=>{if(!e)return null;let n=e.split(`
47
+ `),i=[],r=[],l=[],c=m=>{r.length>0&&(i.push(E.createElement(Kl,{key:`table-${m}`,buffer:[...r],terminalWidth:t})),r=[]),l.length>0&&(i.push(E.createElement(j,{key:`quote-${m}`,borderStyle:"bold",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:"gray",paddingLeft:1,marginY:1,flexDirection:"column"},l.map((d,u)=>E.createElement(Tn,{key:u,text:d,color:"gray"})))),l=[])};return n.forEach((m,d)=>{let u=m.trim(),a=u.startsWith("|"),f=u.startsWith(">");if(a)l.length>0&&c(d),r.push(m);else if(f)r.length>0&&c(d),l.push(u.replace(/^>\s*/,""));else{if(c(d),u===""){i.push(E.createElement(j,{key:d,height:1}));return}if(u==="---"||u==="***"||u==="___"){i.push(E.createElement(j,{key:d,marginY:1,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,width:"100%",borderColor:"#333"}));return}let p=u.match(/^(#{1,6})\s+(.*)/);if(p){let k=p[1].length,D=p[2];i.push(E.createElement(j,{key:d,marginTop:1,marginBottom:1,width:"100%"},E.createElement(ee,{bold:!0,color:k===1?"cyan":k===2?"magenta":k===3?"yellow":k===4?"green":k===5?"blue":"white",underline:!0},D.toUpperCase())));return}let h=u.startsWith("* ")||u.startsWith("- "),T=/^\d+\.\s/.test(u),w=m.includes("\u2588")||m.includes("\u2554")||m.includes("\u255A")||m.includes("\u2550"),S="";if(w)S=m;else if(h||T){let k=h?" \u2022 ":u.match(/^\d+\.\s/)[0],D=" ".repeat(k.length),U=Uo(u.replace(/^[\*\-\d+\.]+\s/,""),t-(k.length+6));S=k+U.split(`
48
48
  `).join(`
49
- `+D)}else E=Bo(u,t-4);i.push(b.createElement(W,{key:d,width:"100%"},b.createElement(gn,{text:E,color:o})))}}),c("final"),b.createElement(W,{flexDirection:"column",width:t-2},i)}),jl=b.memo(({line:e,columns:o=80})=>{let t=e.includes("[UI_CONTEXT]"),n=e.replace("[UI_CONTEXT]","");if(t&&n.includes("\u2550"))return b.createElement(W,{backgroundColor:"#1a1a1a",paddingX:1,width:"100%"},b.createElement(Z,{color:"gray",dimColor:!0},"\u2550".repeat(Math.max(10,o-4))));let i=n.startsWith("-"),r=n.startsWith("+"),l=n[0],c=n.substring(1),m=c.indexOf("|"),d=m!==-1?c.substring(0,m).trim():"",u=m!==-1?c.substring(m+1):c,a=i?"#3a0c0c":r?"#0c3a1a":"#1a1a1a",f=i?"#ff4d4d":r?"#4dff88":t?"gray":"white";return b.createElement(W,{backgroundColor:a,paddingX:1,width:"100%"},b.createElement(W,{width:5,flexShrink:0},b.createElement(Z,{color:i?"#cf3a3a":r?"#3acf65":"gray",dimColor:t},d)),b.createElement(W,{width:2,flexShrink:0,marginLeft:1},b.createElement(Z,{color:f,bold:!0},i?"-":r?"+":" ")),b.createElement(W,{flexGrow:1,marginLeft:1},b.createElement(Z,{color:f,dimColor:t},Bo(u,o-14))))}),Gl=b.memo(({text:e,columns:o=80})=>{let t=e.match(/\[DIFF_START\]([\s\S]*?)\[DIFF_END\]/),i=(t?t[1].trim():"").split(`
50
- `);return b.createElement(W,{flexDirection:"column",width:o-3,marginBottom:0},b.createElement(W,{flexDirection:"column",backgroundColor:"#1a1a1a",paddingY:0,width:"100%"},i.map((r,l)=>b.createElement(jl,{key:l,line:r,columns:o-3}))))}),Ui=b.memo(({text:e,columns:o=80})=>{if(!e)return null;if(e.includes("[DIFF_START]"))return b.createElement(Gl,{text:e,columns:o});if(e.includes("- Content Preview:")){let t=e.split("- Content Preview:"),n=t[0],i=t[1]||"",r="Check if Starting and Ending matches",l=i.split(r),c=l[0]?.trim()||"",m=l[1]?`${r}${l[1]}`:"",d=c.split(`
51
- `),u=String(d.length).length;return b.createElement(W,{flexDirection:"column",width:o-3},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"#444",paddingX:1,width:"100%"},b.createElement(W,{alignSelf:"flex-end",marginTop:-1,marginRight:1},b.createElement(Z,{backgroundColor:"#444",color:"white"}," FILE SNAPSHOT ")),b.createElement(W,{flexDirection:"column",paddingY:1,width:"100%"},d.map((a,f)=>b.createElement(W,{key:f,width:"100%"},b.createElement(W,{width:u+2,flexShrink:0},b.createElement(Z,{color:"gray",dimColor:!0},String(f+1).padStart(u," ")," ")),b.createElement(W,{flexGrow:1},b.createElement(Z,{color:"white"},a)))))))}if(e.includes("```")){let t=e.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return b.createElement(W,{flexDirection:"column",width:o-3},t.map((n,i)=>{if(n.startsWith("```")){let l=n.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),c=l?l[1]:"code",d=(l?l[2]:n.replace(/^```\w*\n?/,"").replace(/```$/,"")).trimEnd().split(`
52
- `),u=String(d.length).length;return b.createElement(W,{key:i,flexDirection:"column",marginY:0,backgroundColor:"#111",borderStyle:"round",borderColor:"#333",paddingX:1,width:"100%"},b.createElement(W,{alignSelf:"flex-end",marginTop:-1,marginRight:1},b.createElement(Z,{backgroundColor:"#333",color:"white"}," ",c.toUpperCase()," ")),b.createElement(W,{flexDirection:"column",paddingY:1,width:"100%"},d.map((a,f)=>b.createElement(W,{key:f,width:"100%"},b.createElement(W,{width:u+2,flexShrink:0},b.createElement(Z,{color:"gray",dimColor:!0},String(f+1).padStart(u," ")," ")),b.createElement(W,{flexGrow:1},b.createElement(Z,{color:"cyan"},a))))))}let r=n;return i>0&&(r=r.replace(/^[\r\n]+/,"")),i<t.length-1&&(r=r.replace(/[\r\n]+$/,"")),r?b.createElement(Ni,{key:i,text:r,columns:o-3}):null}))}return b.createElement(Ni,{text:e,columns:o-3})}),Ri=e=>{let o=Math.round(e/1e3);if(o<=0)return"0s";let t=Math.floor(o/60),n=o%60;return t>0?`${t}m ${n}s`:`${o}s`},Is=b.memo(({msg:e,showFullThinking:o,columns:t=80})=>{let n=e.role==="system"&&(e.text?.includes("[DIFF_START]")||e.text?.includes("- Content Preview:")),i=e.role==="system"&&e.text?.includes("[TOOL RESULT]: ERROR:")&&(e.toolName==="update_file"||e.text?.includes("Could not find exact match")),r=e.isTerminalRecord;if(e.isHomeWarning)return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"red",padding:0,width:"100%"},b.createElement(W,{paddingX:1,backgroundColor:"#3a0000"},b.createElement(Z,{color:"red",bold:!0},e.text)),b.createElement(W,{paddingX:1,marginTop:1,marginBottom:1},b.createElement(Z,{color:"white"},e.subText))));if(e.isLogo)return b.createElement(W,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},b.createElement(Z,null,e.text));if(e.id&&String(e.id).startsWith("welcome"))return b.createElement(W,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},b.createElement(W,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0},b.createElement(Z,{color:"cyan",bold:!0},e.text.trim())));if(e.isVisualFeedback)return b.createElement(W,{marginBottom:0,marginTop:0,paddingX:1,width:"100%"},b.createElement(Z,{color:"white"},e.text));if(i)return b.createElement(W,{marginBottom:1},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:1,paddingY:0},b.createElement(Z,{color:"red",bold:!0,underline:!0},"\u274C PATCH FAILED"),b.createElement(W,{marginTop:1},b.createElement(Z,{color:"red"},"Patch failed: ",b.createElement(Z,{color:"white",bold:!0},"Model generated malformed edit.")))));if(e.role==="system"&&e.text?.includes("[TOOL RESULT]")&&!n&&!r&&!i)return null;if(e.isImageStats)return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",padding:0,width:"100%"},b.createElement(W,{paddingX:1,backgroundColor:"#0e1b21"},b.createElement(Z,{color:"cyan",bold:!0},"\u{1F4B3} IMAGE STATS")),b.createElement(W,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"column"},e.text.split(`
53
- `).map((a,f)=>b.createElement(Z,{key:f,color:"white"},a)))));if(e.isAskRecord){let a=e.text.match(/Selection: (.*)/),f=a?a[1]:"No selection",p=Ce(2);return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},b.createElement(W,{paddingX:1},b.createElement(Z,{color:"cyan",bold:!0},"\u{1F4AC} AGENT REQUEST: RESOLVED")),b.createElement(W,{paddingX:1,marginTop:1,marginBottom:1},b.createElement(Z,{color:"white"},"Selection: ",b.createElement(Z,{color:"yellow",bold:!0},f)))))}if(e.isAboutRecord)return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},b.createElement(W,{paddingX:1},b.createElement(Z,{color:"cyan",bold:!0},"\u{1F4A0} ABOUT FLUX FLOW")),b.createElement(W,{paddingX:1,marginTop:1,marginBottom:1},b.createElement(Z,null,e.text))));if(e.isUpdateNotification)return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},b.createElement(W,{paddingX:1},b.createElement(Z,{color:"cyan",bold:!0},"\u{1F680} FLUX FLOW UPDATE AVAILABLE")),b.createElement(W,{paddingX:1,marginTop:1,marginBottom:1},b.createElement(Ui,{text:e.text,columns:t}))));if(e.isHelpRecord)return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(W,{flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:2,paddingY:1,width:"100%"},b.createElement(Z,{color:"magenta",bold:!0,underline:!0},"\u{1F4DC} COMMAND REFERENCE"),b.createElement(W,{flexDirection:"column",marginTop:1},[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase to checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat in a .txt file"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/image",desc:"Generate images"},{cmd:"/mode",desc:"Toggle Flux/Flow modes"},{cmd:"/thinking",desc:"Set AI reasoning depth"},{cmd:"/model",desc:"Switch AI model"},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/profile",desc:"Edit developer persona"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/fluxflow",desc:"Project management"},{cmd:"/update",desc:"Check/Install updates"}].map((f,p)=>b.createElement(W,{key:p,flexDirection:"row"},b.createElement(W,{width:15},b.createElement(Z,{color:"cyan",bold:!0},f.cmd)),b.createElement(Z,{color:"gray"}," - ",f.desc))))));if(e.isTerminalRecord){let a=e.text.match(/COMMAND: (.*)/),f=e.text.match(/PTY: (true|false)/),p=e.text.match(/OUTPUT: ([\s\S]*)/),h=a?a[1]:"Unknown",T=f?f[1]==="true":!1,w=p?p[1]:"";return b.createElement(W,{marginBottom:1,paddingX:1,width:"100%"},b.createElement(Wr,{command:h,output:w,completed:!0,columns:t,isPty:T}))}let[c,m]=b.useState(!e.isStreaming),d=b.useMemo(()=>Rl(e.text),[e.text]);b.useEffect(()=>{e.isStreaming&&m(!1)},[e.id]);let u=b.useMemo(()=>e.role==="think"&&!o?"Thinking...":e.isStreaming?d:d.trimEnd(),[d,e.role,o,e.isStreaming]);return b.createElement(W,{marginBottom:e.role==="think"?0:e.role==="user"?1:e.role==="agent"?0:1,marginTop:(e.role==="think"||e.role==="user"||e.role==="agent",0),flexDirection:"column",flexShrink:0,width:"100%",flexGrow:1},e.role==="user"?b.createElement(W,{backgroundColor:"#262626",paddingX:1,paddingY:1,width:"100%",flexDirection:"column"},Bo(u.replace(/\r\n/g,`
49
+ `+D)}else S=Uo(u,t-4);i.push(E.createElement(j,{key:d,width:"100%"},E.createElement(Tn,{text:S,color:o})))}}),c("final"),E.createElement(j,{flexDirection:"column",width:t-2},i)}),ql=E.memo(({line:e,columns:o=80})=>{let t=e.includes("[UI_CONTEXT]"),n=e.replace("[UI_CONTEXT]","");if(t&&n.includes("\u2550"))return E.createElement(j,{backgroundColor:"#1a1a1a",paddingX:1,width:"100%"},E.createElement(ee,{color:"gray",dimColor:!0},"\u2550".repeat(Math.max(10,o-4))));let i=n.startsWith("-"),r=n.startsWith("+"),l=n[0],c=n.substring(1),m=c.indexOf("|"),d=m!==-1?c.substring(0,m).trim():"",u=m!==-1?c.substring(m+1):c,a=i?"#3a0c0c":r?"#0c3a1a":"#1a1a1a",f=i?"#ff4d4d":r?"#4dff88":t?"gray":"white";return E.createElement(j,{backgroundColor:a,paddingX:1,width:"100%"},E.createElement(j,{width:5,flexShrink:0},E.createElement(ee,{color:i?"#cf3a3a":r?"#3acf65":"gray",dimColor:t},d)),E.createElement(j,{width:2,flexShrink:0,marginLeft:1},E.createElement(ee,{color:f,bold:!0},i?"-":r?"+":" ")),E.createElement(j,{flexGrow:1,marginLeft:1},E.createElement(ee,{color:f,dimColor:t},Uo(u,o-14))))}),Vl=E.memo(({text:e,columns:o=80})=>{let t=e.match(/\[DIFF_START\]([\s\S]*?)\[DIFF_END\]/),i=(t?t[1].trim():"").split(`
50
+ `);return E.createElement(j,{flexDirection:"column",width:o-3,marginBottom:0},E.createElement(j,{flexDirection:"column",backgroundColor:"#1a1a1a",paddingY:0,width:"100%"},i.map((r,l)=>E.createElement(ql,{key:l,line:r,columns:o-3}))))}),Hi=E.memo(({text:e,columns:o=80})=>{if(!e)return null;if(e.includes("[DIFF_START]"))return E.createElement(Vl,{text:e,columns:o});if(e.includes("- Content Preview:")){let t=e.split("- Content Preview:"),n=t[0],i=t[1]||"",r="Check if Starting and Ending matches",l=i.split(r),c=l[0]?.trim()||"",m=l[1]?`${r}${l[1]}`:"",d=c.split(`
51
+ `),u=String(d.length).length;return E.createElement(j,{flexDirection:"column",width:o-3},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"#444",paddingX:1,width:"100%"},E.createElement(j,{alignSelf:"flex-end",marginTop:-1,marginRight:1},E.createElement(ee,{backgroundColor:"#444",color:"white"}," FILE SNAPSHOT ")),E.createElement(j,{flexDirection:"column",paddingY:1,width:"100%"},d.map((a,f)=>E.createElement(j,{key:f,width:"100%"},E.createElement(j,{width:u+2,flexShrink:0},E.createElement(ee,{color:"gray",dimColor:!0},String(f+1).padStart(u," ")," ")),E.createElement(j,{flexGrow:1},E.createElement(ee,{color:"white"},a)))))))}if(e.includes("```")){let t=e.split(/(```\w*\n?[\s\S]*?(?:```|$))/g);return E.createElement(j,{flexDirection:"column",width:o-3},t.map((n,i)=>{if(n.startsWith("```")){let l=n.match(/```(\w*)\n?([\s\S]*?)(?:```|$)/),c=l?l[1]:"code",d=(l?l[2]:n.replace(/^```\w*\n?/,"").replace(/```$/,"")).trimEnd().split(`
52
+ `),u=String(d.length).length;return E.createElement(j,{key:i,flexDirection:"column",marginY:0,backgroundColor:"#111",borderStyle:"round",borderColor:"#333",paddingX:1,width:"100%"},E.createElement(j,{alignSelf:"flex-end",marginTop:-1,marginRight:1},E.createElement(ee,{backgroundColor:"#333",color:"white"}," ",c.toUpperCase()," ")),E.createElement(j,{flexDirection:"column",paddingY:1,width:"100%"},d.map((a,f)=>E.createElement(j,{key:f,width:"100%"},E.createElement(j,{width:u+2,flexShrink:0},E.createElement(ee,{color:"gray",dimColor:!0},String(f+1).padStart(u," ")," ")),E.createElement(j,{flexGrow:1},E.createElement(ee,{color:"cyan"},a))))))}let r=n;return i>0&&(r=r.replace(/^[\r\n]+/,"")),i<t.length-1&&(r=r.replace(/[\r\n]+$/,"")),r?E.createElement(Yi,{key:i,text:r,columns:o-3}):null}))}return E.createElement(Yi,{text:e,columns:o-3})}),ji=e=>{let o=Math.round(e/1e3);if(o<=0)return"0s";let t=Math.floor(o/60),n=o%60;return t>0?`${t}m ${n}s`:`${o}s`},As=E.memo(({msg:e,showFullThinking:o,columns:t=80})=>{let n=e.role==="system"&&(e.text?.includes("[DIFF_START]")||e.text?.includes("- Content Preview:")),i=e.role==="system"&&e.text?.includes("[TOOL RESULT]: ERROR:")&&(e.toolName==="update_file"||e.text?.includes("Could not find exact match")),r=e.isTerminalRecord;if(e.isHomeWarning)return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"red",padding:0,width:"100%"},E.createElement(j,{paddingX:1,backgroundColor:"#3a0000"},E.createElement(ee,{color:"red",bold:!0},e.text)),E.createElement(j,{paddingX:1,marginTop:1,marginBottom:1},E.createElement(ee,{color:"white"},e.subText))));if(e.isLogo)return E.createElement(j,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},E.createElement(ee,null,e.text));if(e.id&&String(e.id).startsWith("welcome"))return E.createElement(j,{flexDirection:"column",alignItems:"center",width:"100%",marginY:1},E.createElement(j,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0},E.createElement(ee,{color:"cyan",bold:!0},e.text.trim())));if(e.isVisualFeedback)return E.createElement(j,{marginBottom:0,marginTop:0,paddingX:1,width:"100%"},E.createElement(ee,{color:"white"},e.text));if(i)return E.createElement(j,{marginBottom:1},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:1,paddingY:0},E.createElement(ee,{color:"red",bold:!0,underline:!0},"\u274C PATCH FAILED"),E.createElement(j,{marginTop:1},E.createElement(ee,{color:"red"},"Patch failed: ",E.createElement(ee,{color:"white",bold:!0},"Model generated malformed edit.")))));if(e.role==="system"&&e.text?.includes("[TOOL RESULT]")&&!n&&!r&&!i)return null;if(e.isImageStats)return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",padding:0,width:"100%"},E.createElement(j,{paddingX:1,backgroundColor:"#0e1b21"},E.createElement(ee,{color:"cyan",bold:!0},"\u{1F4B3} IMAGE STATS")),E.createElement(j,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"column"},e.text.split(`
53
+ `).map((a,f)=>E.createElement(ee,{key:f,color:"white"},a)))));if(e.isAskRecord){let a=e.text.match(/Selection: (.*)/),f=a?a[1]:"No selection",p=Ce(2);return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},E.createElement(j,{paddingX:1},E.createElement(ee,{color:"cyan",bold:!0},"\u{1F4AC} AGENT REQUEST: RESOLVED")),E.createElement(j,{paddingX:1,marginTop:1,marginBottom:1},E.createElement(ee,{color:"white"},"Selection: ",E.createElement(ee,{color:"yellow",bold:!0},f)))))}if(e.isAboutRecord)return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},E.createElement(j,{paddingX:1},E.createElement(ee,{color:"cyan",bold:!0},"\u{1F4A0} ABOUT FLUX FLOW")),E.createElement(j,{paddingX:1,marginTop:1,marginBottom:1},E.createElement(ee,null,e.text))));if(e.isUpdateNotification)return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},E.createElement(j,{paddingX:1},E.createElement(ee,{color:"cyan",bold:!0},"\u{1F680} FLUX FLOW UPDATE AVAILABLE")),E.createElement(j,{paddingX:1,marginTop:1,marginBottom:1},E.createElement(Hi,{text:e.text,columns:t}))));if(e.isHelpRecord)return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(j,{flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:2,paddingY:1,width:"100%"},E.createElement(ee,{color:"magenta",bold:!0,underline:!0},"\u{1F4DC} COMMAND REFERENCE"),E.createElement(j,{flexDirection:"column",marginTop:1},[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase to checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat in a .txt file"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/image",desc:"Generate images"},{cmd:"/mode",desc:"Toggle Flux/Flow modes"},{cmd:"/thinking",desc:"Set AI reasoning depth"},{cmd:"/model",desc:"Switch AI model"},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/profile",desc:"Edit developer persona"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/fluxflow",desc:"Project management"},{cmd:"/update",desc:"Check/Install updates"}].map((f,p)=>E.createElement(j,{key:p,flexDirection:"row"},E.createElement(j,{width:15},E.createElement(ee,{color:"cyan",bold:!0},f.cmd)),E.createElement(ee,{color:"gray"}," - ",f.desc))))));if(e.isTerminalRecord){let a=e.text.match(/COMMAND: (.*)/),f=e.text.match(/PTY: (true|false)/),p=e.text.match(/OUTPUT: ([\s\S]*)/),h=a?a[1]:"Unknown",T=f?f[1]==="true":!1,w=p?p[1]:"";return E.createElement(j,{marginBottom:1,paddingX:1,width:"100%"},E.createElement(jr,{command:h,output:w,completed:!0,columns:t,isPty:T}))}let[c,m]=E.useState(!e.isStreaming),d=E.useMemo(()=>jl(e.text),[e.text]);E.useEffect(()=>{e.isStreaming&&m(!1)},[e.id]);let u=E.useMemo(()=>e.role==="think"&&!o?"Thinking...":e.isStreaming?d:d.trimEnd(),[d,e.role,o,e.isStreaming]);return E.createElement(j,{marginBottom:e.role==="think"?0:e.role==="user"?1:e.role==="agent"?0:1,marginTop:(e.role==="think"||e.role==="user"||e.role==="agent",0),flexDirection:"column",flexShrink:0,width:"100%",flexGrow:1},e.role==="user"?E.createElement(j,{backgroundColor:"#262626",paddingX:1,paddingY:1,width:"100%",flexDirection:"column"},Uo(u.replace(/\r\n/g,`
54
54
  `).replace(/\r/g,`
55
55
  `).replace(/\\\n/g,`
56
56
  `).replace(/\\$/,""),t-6).split(`
57
- `).map((a,f)=>b.createElement(W,{key:f,flexDirection:"row",width:"100%"},b.createElement(W,{flexShrink:0,width:2},b.createElement(Z,{bold:!0,color:"white"},f===0?"\u276F":" ")),b.createElement(W,{flexGrow:1,marginLeft:1},b.createElement(gn,{text:a,color:e.color||"white"}))))):e.role==="think"?b.createElement(W,{flexDirection:"column",marginTop:0,marginBottom:0,paddingX:1,width:"100%"},e.isStreaming&&!e.duration?b.createElement(Z,{bold:!0,color:"white"},"\u2727 Thinking..."):b.createElement(Z,{bold:!0,color:"white"},"\u2726 Thought",e.duration?b.createElement(Z,{color:"gray"}," for ",b.createElement(Z,{bold:!0,color:"cyan"},Ri(e.duration))):""),b.createElement(W,{borderStyle:"single",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingTop:1,paddingBottom:1,flexDirection:"column",width:"100%"},Wl(u,t))):b.createElement(W,{flexDirection:"column",paddingX:1,marginTop:0,width:"100%"},b.createElement(Ui,{text:u.replace(/ \|\n\n/g,` |
58
- `),columns:t}),e.memoryUpdated&&b.createElement(W,{marginTop:1,width:"100%"},b.createElement(Z,{color:"yellow",italic:!0},"\u2728 [Memory Updated]")),e.role==="agent"&&e.workedDuration?b.createElement(W,{marginTop:1,marginBottom:2,width:"100%"},b.createElement(Z,null,"["),b.createElement(Z,{color:"gray"},"\u26A1 Worked for ",b.createElement(Z,{bold:!0,color:"cyan"},Ri(e.workedDuration))),b.createElement(Z,null,"]")):null))}),Xl=b.memo(({messages:e,showFullThinking:o,columns:t=80})=>b.createElement(W,{flexDirection:"column",width:"100%"},e.map((n,i)=>b.createElement(Is,{key:n.id||i,msg:n,showFullThinking:o,columns:t})))),Wi=Xl});import Ye from"react";import{Box as en,Text as Pt}from"ink";var Kl,Hi,ji=ie(()=>{$n();Kl=Ye.memo(({mode:e,thinkingLevel:o,tokens:t="0.0k",tokensTotal:n="0.0k",chatId:i="NEW-SESSION",isMemoryEnabled:r=!0,apiTier:l="Free",aiProvider:c="Google"})=>{let m=e==="Flux"?"yellow":"cyan",d=e==="Flux"?"\u26A1":"\u{1F30A}",u=256e3;return(c==="DeepSeek"||c==="Google"&&l==="Paid")&&(u=4e5),Ye.createElement(en,{borderStyle:"round",borderColor:"gray",flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},Ye.createElement(en,null,Ye.createElement(en,{marginRight:1},Ye.createElement(Pt,{color:m,bold:!0},d," ",e.toUpperCase())),Ye.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),Ye.createElement(en,{marginX:1},Ye.createElement(Pt,{color:"magenta"},"\u{1F9E0} ",o)),Ye.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),Ye.createElement(en,{marginX:1},Ye.createElement(Pt,{color:"gray"},"MEM: "),Ye.createElement(Pt,{color:r?"green":"red",bold:!0},r?"ON":"OFF"))),Ye.createElement(en,{flexGrow:1,justifyContent:"center",paddingX:2},Ye.createElement(Pt,null,"\u{1F4C1}"),Ye.createElement(Pt,{color:"gray",italic:!0}," ",Bi(process.cwd(),35))),Ye.createElement(en,null,Ye.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),Ye.createElement(en,{marginX:1},Ye.createElement(Pt,null,"\u2728"),Ye.createElement(Pt,{color:"blue"}," ",Jt(n)," ",Ye.createElement(Pt,{dimColor:!0},"(",(t/u*100).toFixed(0),"%)"))),Ye.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),Ye.createElement(en,{marginLeft:1},Ye.createElement(Pt,null,"\u{1F194}"),Ye.createElement(Pt,{color:"gray",dimColor:!0,italic:!0}," ",i),(l==="Custom"||l==="Paid")&&Ye.createElement(Pt,{color:"gray",dimColor:!0}," | ",Ye.createElement(Pt,{color:"green",bold:!0},"PAID")))))}),Hi=Kl});import Lo from"react";import{Box as Gn,Text as Yr}from"ink";import ql from"ink-select-input";function io({title:e,subtitle:o,items:t,onSelect:n}){return Lo.createElement(Gn,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,marginTop:1,flexShrink:0,width:"100%"},Lo.createElement(Gn,{paddingX:1,paddingY:0,marginBottom:o?0:1},Lo.createElement(Yr,{color:"magenta",bold:!0},"\u{1F527} ",typeof e=="string"?e.toUpperCase():e)),o&&Lo.createElement(Gn,{paddingX:1,marginBottom:1},Lo.createElement(Yr,{color:"yellow",dimColor:!0,italic:!0}," ",o)),Lo.createElement(Gn,{flexDirection:"column",width:"100%"},Lo.createElement(ql,{items:t,onSelect:n,itemComponent:Vl,indicatorComponent:()=>null})),Lo.createElement(Gn,{paddingX:1,marginTop:1},Lo.createElement(Yr,{color:"gray",dimColor:!0,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}var Vl,Gi=ie(()=>{Vl=({label:e,isSelected:o})=>{let t=e==="Cancel"||e==="Back"||e.toLowerCase().includes("exit")||e.toLowerCase().includes("back");return Lo.createElement(Gn,{marginTop:t?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},Lo.createElement(Yr,{color:o?"cyan":"white",bold:o},o?"\u276F ":" ",e))}});var oe,Qt=ie(()=>{oe=e=>{let o={};if(!e)return o;let t=0;for(;t<e.length;){for(;t<e.length&&/[\s,]/.test(e[t]);)t++;if(t>=e.length)break;let n=e.substring(t).match(/^(\w+)\s*=\s*/);if(!n){t++;continue}let i=n[1];t+=n[0].length;let r="";if(t<e.length&&(e[t]==='"'||e[t]==="'"||e[t]==="`")){let l=e[t];t++;let c=t,m=-1,d=t;for(;d<e.length;){let a=e.indexOf(l,d);if(a===-1)break;let f=0;for(let w=a-1;w>=0&&e[w]==="\\";w--)f++;if(f%2!==0){d=a+1;continue}let p=e.substring(a+1),h=p.trim(),T=h===""||/^,\s*\w+\s*=/.test(h)||h.startsWith(")")&&(h.length===1||/^\)\s*([,\]\s]|tool:)/i.test(h));if(T&&p.startsWith(`
57
+ `).map((a,f)=>E.createElement(j,{key:f,flexDirection:"row",width:"100%"},E.createElement(j,{flexShrink:0,width:2},E.createElement(ee,{bold:!0,color:"white"},f===0?"\u276F":" ")),E.createElement(j,{flexGrow:1,marginLeft:1},E.createElement(Tn,{text:a,color:e.color||"white"}))))):e.role==="think"?E.createElement(j,{flexDirection:"column",marginTop:0,marginBottom:0,paddingX:1,width:"100%"},e.isStreaming&&!e.duration?E.createElement(ee,{bold:!0,color:"white"},"\u2727 Thinking..."):E.createElement(ee,{bold:!0,color:"white"},"\u2726 Thought",e.duration?E.createElement(ee,{color:"gray"}," for ",E.createElement(ee,{bold:!0,color:"cyan"},ji(e.duration))):""),E.createElement(j,{borderStyle:"single",borderLeft:!0,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingTop:1,paddingBottom:1,flexDirection:"column",width:"100%"},Gl(u,t))):E.createElement(j,{flexDirection:"column",paddingX:1,marginTop:0,width:"100%"},E.createElement(Hi,{text:u.replace(/ \|\n\n/g,` |
58
+ `),columns:t}),e.memoryUpdated&&E.createElement(j,{marginTop:1,width:"100%"},E.createElement(ee,{color:"yellow",italic:!0},"\u2728 [Memory Updated]")),e.role==="agent"&&e.workedDuration?E.createElement(j,{marginTop:1,marginBottom:2,width:"100%"},E.createElement(ee,null,"["),E.createElement(ee,{color:"gray"},"\u26A1 Worked for ",E.createElement(ee,{bold:!0,color:"cyan"},ji(e.workedDuration))),E.createElement(ee,null,"]")):null))}),zl=E.memo(({messages:e,showFullThinking:o,columns:t=80})=>E.createElement(j,{flexDirection:"column",width:"100%"},e.map((n,i)=>E.createElement(As,{key:n.id||i,msg:n,showFullThinking:o,columns:t})))),Gi=zl});import We from"react";import{Box as tn,Text as Pt}from"ink";var Jl,Ki,qi=re(()=>{_n();Jl=We.memo(({mode:e,thinkingLevel:o,tokens:t="0.0k",tokensTotal:n="0.0k",chatId:i="NEW-SESSION",isMemoryEnabled:r=!0,apiTier:l="Free",aiProvider:c="Google"})=>{let m=e==="Flux"?"yellow":"cyan",d=e==="Flux"?"\u26A1":"\u{1F30A}",u=256e3;return(c==="DeepSeek"||c==="Google"&&l==="Paid")&&(u=4e5),We.createElement(tn,{borderStyle:"round",borderColor:"gray",flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},We.createElement(tn,null,We.createElement(tn,{marginRight:1},We.createElement(Pt,{color:m,bold:!0},d," ",e.toUpperCase())),We.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),We.createElement(tn,{marginX:1},We.createElement(Pt,{color:"magenta"},"\u{1F9E0} ",o)),We.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),We.createElement(tn,{marginX:1},We.createElement(Pt,{color:"gray"},"MEM: "),We.createElement(Pt,{color:r?"green":"red",bold:!0},r?"ON":"OFF"))),We.createElement(tn,{flexGrow:1,justifyContent:"center",paddingX:2},We.createElement(Pt,null,"\u{1F4C1}"),We.createElement(Pt,{color:"gray",italic:!0}," ",Ri(process.cwd(),35))),We.createElement(tn,null,We.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),We.createElement(tn,{marginX:1},We.createElement(Pt,null,"\u2728"),We.createElement(Pt,{color:"blue"}," ",Qt(n)," ",We.createElement(Pt,{dimColor:!0},"(",(t/u*100).toFixed(0),"%)"))),We.createElement(Pt,{color:"gray",dimColor:!0},"\u2503 "),We.createElement(tn,{marginLeft:1},We.createElement(Pt,null,"\u{1F194}"),We.createElement(Pt,{color:"gray",dimColor:!0,italic:!0}," ",i),(l==="Custom"||l==="Paid")&&We.createElement(Pt,{color:"gray",dimColor:!0}," | ",We.createElement(Pt,{color:"green",bold:!0},"PAID")))))}),Ki=Jl});import Lo from"react";import{Box as Qn,Text as Gr}from"ink";import Ql from"ink-select-input";function ao({title:e,subtitle:o,items:t,onSelect:n}){return Lo.createElement(Qn,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,marginTop:1,flexShrink:0,width:"100%"},Lo.createElement(Qn,{paddingX:1,paddingY:0,marginBottom:o?0:1},Lo.createElement(Gr,{color:"magenta",bold:!0},"\u{1F527} ",typeof e=="string"?e.toUpperCase():e)),o&&Lo.createElement(Qn,{paddingX:1,marginBottom:1},Lo.createElement(Gr,{color:"yellow",dimColor:!0,italic:!0}," ",o)),Lo.createElement(Qn,{flexDirection:"column",width:"100%"},Lo.createElement(Ql,{items:t,onSelect:n,itemComponent:Zl,indicatorComponent:()=>null})),Lo.createElement(Qn,{paddingX:1,marginTop:1},Lo.createElement(Gr,{color:"gray",dimColor:!0,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}var Zl,Vi=re(()=>{Zl=({label:e,isSelected:o})=>{let t=e==="Cancel"||e==="Back"||e.toLowerCase().includes("exit")||e.toLowerCase().includes("back");return Lo.createElement(Qn,{marginTop:t?1:0,backgroundColor:o?"#2a2a2a":void 0,paddingX:1,width:"100%"},Lo.createElement(Gr,{color:o?"cyan":"white",bold:o},o?"\u276F ":" ",e))}});var te,Zt=re(()=>{te=e=>{let o={};if(!e)return o;let t=0;for(;t<e.length;){for(;t<e.length&&/[\s,]/.test(e[t]);)t++;if(t>=e.length)break;let n=e.substring(t).match(/^(\w+)\s*=\s*/);if(!n){t++;continue}let i=n[1];t+=n[0].length;let r="";if(t<e.length&&(e[t]==='"'||e[t]==="'"||e[t]==="`")){let l=e[t];t++;let c=t,m=-1,d=t;for(;d<e.length;){let a=e.indexOf(l,d);if(a===-1)break;let f=0;for(let w=a-1;w>=0&&e[w]==="\\";w--)f++;if(f%2!==0){d=a+1;continue}let p=e.substring(a+1),h=p.trim(),T=h===""||/^,\s*\w+\s*=/.test(h)||h.startsWith(")")&&(h.length===1||/^\)\s*([,\]\s]|tool:)/i.test(h));if(T&&p.startsWith(`
59
59
  `)){let w=h.split(`
60
60
  `)[0];if(!w.includes("=")&&!w.includes(")")){d=a+1;continue}}if(T){m=a;break}d=a+1}m!==-1?(r=e.substring(c,m),t=m+1):(r=e.substring(c),t=e.length);let u=i.toLowerCase().includes("path")||["dest","source","to","from"].includes(i.toLowerCase());r=r.replace(/\\(.)/g,(a,f)=>{switch(f){case"n":return`
61
- `;case"r":return"\r";case"t":return" ";case"\\":return"\\";default:return f===l?l:a}})}else if(t<e.length&&e[t]==="["){let l=0,c=null,m=t,d=-1;for(let u=t;u<e.length;u++){let a=e[u];if(c&&a===c){let f=0;for(let p=u-1;p>=0&&e[p]==="\\";p--)f++;f%2===0&&(c=null)}else!c&&(a==='"'||a==="'"||a==="`")&&(c=a);if(!c&&(a==="["?l++:a==="]"&&l--,l===0)){d=u;break}}if(d!==-1){r=e.substring(m,d+1),t=d+1;try{let u=r.trim();u.startsWith("'")||u.includes("'")}catch{}}else r=e.substring(m),t=e.length}else{let l=e.substring(t),c=l.match(/,\s*\w+\s*=|(?:\s*\)\s*(?:$|\]))/);if(c){let m=c.index;r=l.substring(0,m).trim(),t+=m}else r=l.trim(),t=e.length}r==="true"?r=!0:r==="false"?r=!1:typeof r=="string"&&!isNaN(r)&&r.trim()!==""&&(r=Number(r)),typeof r=="string"&&(i.toLowerCase().includes("path")||["dest","source","to","from"].includes(i.toLowerCase()))&&(r=r.replace(/\x0C/g,"\\f").replace(/\x0D/g,"\\r").replace(/\x0B/g,"\\v").replace(/\x08/g,"\\b")),o[i]=r}return o}});import{execSync as zl}from"child_process";var gr,Xn,Xi,Ms=ie(async()=>{await xr();gr=null,Xn=()=>{if(process.platform!=="win32")return!1;if(gr!==null)return gr;try{zl('powershell.exe -NoProfile -Command "exit"',{stdio:"ignore"}),gr=!0}catch{gr=!1}return gr},Xi=(e,o,t,n)=>`
61
+ `;case"r":return"\r";case"t":return" ";case"\\":return"\\";default:return f===l?l:a}})}else if(t<e.length&&e[t]==="["){let l=0,c=null,m=t,d=-1;for(let u=t;u<e.length;u++){let a=e[u];if(c&&a===c){let f=0;for(let p=u-1;p>=0&&e[p]==="\\";p--)f++;f%2===0&&(c=null)}else!c&&(a==='"'||a==="'"||a==="`")&&(c=a);if(!c&&(a==="["?l++:a==="]"&&l--,l===0)){d=u;break}}if(d!==-1){r=e.substring(m,d+1),t=d+1;try{let u=r.trim();u.startsWith("'")||u.includes("'")}catch{}}else r=e.substring(m),t=e.length}else{let l=e.substring(t),c=l.match(/,\s*\w+\s*=|(?:\s*\)\s*(?:$|\]))/);if(c){let m=c.index;r=l.substring(0,m).trim(),t+=m}else r=l.trim(),t=e.length}r==="true"?r=!0:r==="false"?r=!1:typeof r=="string"&&!isNaN(r)&&r.trim()!==""&&(r=Number(r)),typeof r=="string"&&(i.toLowerCase().includes("path")||["dest","source","to","from"].includes(i.toLowerCase()))&&(r=r.replace(/\x0C/g,"\\f").replace(/\x0D/g,"\\r").replace(/\x0B/g,"\\v").replace(/\x08/g,"\\b")),o[i]=r}return o}});import{execSync as ec}from"child_process";var gr,Zn,zi,Os=re(async()=>{await xr();gr=null,Zn=()=>{if(process.platform!=="win32")return!1;if(gr!==null)return gr;try{ec('powershell.exe -NoProfile -Command "exit"',{stdio:"ignore"}),gr=!0}catch{gr=!1}return gr},zi=(e,o,t,n)=>`
62
62
  -- TOOL DEFINITIONS --
63
63
  Access to internal tools. MUST use the exact syntax on a new line: [tool:functions.ToolName(args)]
64
64
  MANDATORY TOOL POLICY:
@@ -80,7 +80,7 @@ ${e==="Flux"?`- PROJECT TOOLS (path = relative to CWD, path separator: '/') -
80
80
  3. [tool:functions.PatchFile(path="...", replaceContent1="exact string", newContent1="...", ...MAX 8)]. Surgical Patch. **Multiple patch on same file/path? Use replaceContent2, newContent2 etc >>> multiple spams**. Unsure? ReadFile > guessing.
81
81
  4. [tool:functions.WriteFile(path="...", content="...")]. Creates/Overwrites. File Exist? PatchFile >>> WriteFile. Verify Imports
82
82
  5. [tool:functions.SearchKeyword(keyword="...", file="optional")]. Global project search. If 'file' is provided, searches only that file. Finds definitions/logic without reading every file
83
- 6. [tool:functions.Run(command="...")]. Runs ${o==="Windows"?Xn()?`${Pn?"Interactive ":""}WINDOWS POWERSHELL ONLY`:`${Pn?"Interactive ":""}WINDOWS CMD`:`${Pn?"Interactive ":""}BASH`} command. Destructive/Irreversible ops -> Ask user
83
+ 6. [tool:functions.Run(command="...")]. Runs ${o==="Windows"?Zn()?`${Nn?"Interactive ":""}WINDOWS POWERSHELL ONLY`:`${Nn?"Interactive ":""}WINDOWS CMD`:`${Nn?"Interactive ":""}BASH`} command. Destructive/Irreversible ops -> Ask user
84
84
  7. [tool:functions.GenerateImage(path="... png", prompt="detailed", ratio="16:9, 9:16, 1:1")]. Usage: Mockups, PDF thumbnails, any visual content
85
85
  8. [tool:functions.WritePDF(path="...", content="...", orientation="...")]. PROACTIVE A4 PAGE BREAKS MUST IN CSS. HTML/CSS for PREMIUM layout (100vh/vw)
86
86
  9. [tool:functions.WriteDoc(path="...", content="...")]. A4 Word document
@@ -92,29 +92,29 @@ ${e==="Flux"?`- PROJECT TOOLS (path = relative to CWD, path separator: '/') -
92
92
  - File structure: Real newlines for code formatting`.trim():"\n- FILE TOOLS ARE NOT AVAILABLE IN FLOW (Tell user,` /mode flux` if needed)".trim()}
93
93
 
94
94
  - Results: Passed as [TOOL RESULT]
95
- - MAX Tool call stack: STRICTLY 3 per turn`.trim()});import{spawn as Os}from"child_process";var Hr,Pn,jr,Ct,To,So,Ki,qi,Ls,As,xr=ie(async()=>{Qt();await Ms();Hr=null;try{let e=await import("node-pty");Hr=e.default||e}catch{}Pn=!!Hr,jr=e=>typeof e!="string"?e:e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),Ct=null,To=!1,So=e=>{try{Ct&&(To&&typeof Ct.write=="function"?Ct.write(e):Ct.stdin&&Ct.stdin.writable&&Ct.stdin.write(e))}catch{}},Ki=()=>{if(Ct){try{To&&typeof Ct.destroy=="function"?Ct.destroy():typeof Ct.kill=="function"&&(process.platform==="win32"?Os("taskkill",["/pid",Ct.pid,"/f","/t"]):Ct.kill("SIGKILL"))}catch{}Ct=null,To=!1}},qi=(e,o=!1)=>{if(process.platform!=="win32")return e;let t=[],n="",i=null,r=!1;for(let u=0;u<e.length;u++){let a=e[u];if(r){n+=a,r=!1;continue}if(a==="\\"){if(e[u+1]===" "){n+=" ",u++;continue}n+=a,r=!0;continue}i?(a===i&&(i=null),n+=a):a==='"'||a==="'"?(i=a,n+=a):a===";"&&!n.includes("://")?(n.length>0&&(t.push(n),n=""),t.push(o?";":"&")):a==="|"&&!n.includes("://")?(n.length>0&&(t.push(n),n=""),t.push("|")):/\s/.test(a)?n.length>0&&(t.push(n),n=""):n+=a}n.length>0&&t.push(n);let l=u=>!(!u.includes("/")||/^(https?|file|ftp):\/\//i.test(u)||u.startsWith("/")&&(u.match(/\//g)||[]).length===1||/\s\/|\/\s/.test(u)||/[\(\)\{\}\;\<\>\=\'\"]/.test(u)),c=[];for(let u=0;u<t.length;u++){let a=t[u];if(a==="mkdir"&&o&&Xn()){let f=[],p=u+1;for(;p<t.length;){let h=t[p];if([">",">>","<","&","&&","|","||",";"].includes(h))break;h!=="-p"&&h!=="--parents"&&h!=="-v"&&h!=="--verbose"&&f.push(h),p++}if(f.length>0){let h=f.map(T=>{let w=T.replace(/^['"]|['"]$/g,""),E=T;return l(w)&&(E=T.replace(/\//g,"\\")),E});c.push("New-Item","-ItemType","Directory","-Force","-Path",h.join(","))}else c.push("New-Item","-ItemType","Directory","-Force");u=p-1;continue}if(a==="rm"&&o&&Xn()){let f=[],p=!1,h=!1,T=u+1;for(;T<t.length;){let E=t[T];if([">",">>","<","&","&&","|","||",";"].includes(E))break;E==="-rf"||E==="-fr"?(p=!0,h=!0):E==="-r"||E==="-R"||E==="--recursive"?p=!0:E==="-f"||E==="--force"?h=!0:f.push(E),T++}let w=["Remove-Item"];if(p&&w.push("-Recurse"),h&&w.push("-Force"),f.length>0){let E=f.map(k=>{let D=k.replace(/^['"]|['"]$/g,""),_=k;return l(D)&&(_=k.replace(/\//g,"\\")),_});w.push("-Path",E.join(","))}c.push(...w),u=T-1;continue}if(a==="cp"&&o&&Xn()){let f=[],p=!1,h=!1,T=u+1;for(;T<t.length;){let E=t[T];if([">",">>","<","&","&&","|","||",";"].includes(E))break;E==="-r"||E==="-R"||E==="--recursive"?p=!0:E==="-f"||E==="--force"?h=!0:f.push(E),T++}let w=["Copy-Item"];if(p&&w.push("-Recurse"),h&&w.push("-Force"),f.length>0){let E=f.map(k=>{let D=k.replace(/^['"]|['"]$/g,""),_=k;return l(D)&&(_=k.replace(/\//g,"\\")),_});if(E.length>1){let k=E.pop();w.push("-Path",E.join(","),"-Destination",k)}else w.push("-Path",E[0])}c.push(...w),u=T-1;continue}if(a==="touch"&&o&&Xn()){let f=[],p=u+1;for(;p<t.length;){let h=t[p];if([">",">>","<","&","&&","|","||",";"].includes(h))break;f.push(h),p++}if(f.length>0){let T=`(${f.map(w=>{let E=w.replace(/^['"]|['"]$/g,""),k=w;return l(E)&&(k=w.replace(/\//g,"\\")),k}).join(", ")}) | ForEach-Object { if (Test-Path $_) { (Get-Item $_).LastWriteTime = [System.DateTime]::Now } else { $null | Out-File -FilePath $_ } }`;c.push(T)}u=p-1;continue}if(a==="|"&&t[u+1]==="tee"){t[u+2]==="-a"?(c.push(">>"),u+=2):(c.push(">"),u+=1);continue}if(a==="|"&&t[u+1]==="cat"&&t[u+2]===">"){c.push(">"),u+=2;continue}if(a==="|"){let f=t[u+1];if(f){let p=f.replace(/^['"]|['"]$/g,""),h=/\.(txt|md|json|log|csv|html|css|py|js|xml|yaml|yml|pdf|docx|pptx|xlsx)$/i.test(p);if(l(p)&&h){c.push(">");continue}}}c.push(a)}let m=!1;return c.map(u=>{if(u==="echo")return m=!0,u;[">",">>","<","&","&&","|","||",";"].includes(u)&&(m=!1);let f=/^['"]|['"]$/.test(u),p=u;m&&f&&(p=u.replace(/^['"]|['"]$/g,""));let h=/^['"]|['"]$/.test(p),T=p.replace(/^['"]|['"]$/g,"");l(T)&&(p=p.replace(/\//g,"\\"));let w=p.replace(/^['"]|['"]$/g,"");return w.includes(" ")&&!h&&(p=`"${w}"`),p}).join(" ")},Ls=async(e,o={})=>{let{command:t}=oe(e),{onChunk:n}=o;if(!t)return'ERROR: Missing "command" argument for exec_command.';let i=process.platform==="win32",r=o.systemSettings||{},l={};return r.networkAccess===!1&&(l.HTTP_PROXY="http://127.0.0.1:9999",l.HTTPS_PROXY="http://127.0.0.1:9999",l.ALL_PROXY="socks5://127.0.0.1:9999",l.http_proxy="http://127.0.0.1:9999",l.https_proxy="http://127.0.0.1:9999",l.all_proxy="socks5://127.0.0.1:9999",l.NO_PROXY="localhost,127.0.0.1"),new Promise(c=>{let m=d=>{let u=qi(t,d),a=i?d?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",f=i?d?["-NoProfile","-Command",u]:["/c",u]:["-c",u];if(Hr)try{let p=Hr.spawn(a,f,{name:"xterm-256color",cols:o.cols||120,rows:o.rows||30,cwd:process.cwd(),env:{...process.env,CI:"false",TERM:"xterm-256color",FORCE_COLOR:"1",...l}});Ct=p,To=!0;let h="",T=!1;return p.onData(w=>{if(!T){h+=w,n&&n(w);let E=jr(h);/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(E)&&(T=!0,setTimeout(()=>c(`SUCCESS: Dev server started successfully in background.
95
+ - MAX Tool call stack: STRICTLY 3 per turn`.trim()});import{spawn as Ls}from"child_process";var Xr,Nn,Kr,Ct,Eo,bo,Ji,Qi,vs,Ds,xr=re(async()=>{Zt();await Os();Xr=null;try{let e=await import("node-pty");Xr=e.default||e}catch{}Nn=!!Xr,Kr=e=>typeof e!="string"?e:e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),Ct=null,Eo=!1,bo=e=>{try{Ct&&(Eo&&typeof Ct.write=="function"?Ct.write(e):Ct.stdin&&Ct.stdin.writable&&Ct.stdin.write(e))}catch{}},Ji=()=>{if(Ct){try{Eo&&typeof Ct.destroy=="function"?Ct.destroy():typeof Ct.kill=="function"&&(process.platform==="win32"?Ls("taskkill",["/pid",Ct.pid,"/f","/t"]):Ct.kill("SIGKILL"))}catch{}Ct=null,Eo=!1}},Qi=(e,o=!1)=>{if(process.platform!=="win32")return e;let t=[],n="",i=null,r=!1;for(let u=0;u<e.length;u++){let a=e[u];if(r){n+=a,r=!1;continue}if(a==="\\"){if(e[u+1]===" "){n+=" ",u++;continue}n+=a,r=!0;continue}i?(a===i&&(i=null),n+=a):a==='"'||a==="'"?(i=a,n+=a):a===";"&&!n.includes("://")?(n.length>0&&(t.push(n),n=""),t.push(o?";":"&")):a==="|"&&!n.includes("://")?(n.length>0&&(t.push(n),n=""),t.push("|")):/\s/.test(a)?n.length>0&&(t.push(n),n=""):n+=a}n.length>0&&t.push(n);let l=u=>!(!u.includes("/")||/^(https?|file|ftp):\/\//i.test(u)||u.startsWith("/")&&(u.match(/\//g)||[]).length===1||/\s\/|\/\s/.test(u)||/[\(\)\{\}\;\<\>\=\'\"]/.test(u)),c=[];for(let u=0;u<t.length;u++){let a=t[u];if(a==="mkdir"&&o&&Zn()){let f=[],p=u+1;for(;p<t.length;){let h=t[p];if([">",">>","<","&","&&","|","||",";"].includes(h))break;h!=="-p"&&h!=="--parents"&&h!=="-v"&&h!=="--verbose"&&f.push(h),p++}if(f.length>0){let h=f.map(T=>{let w=T.replace(/^['"]|['"]$/g,""),S=T;return l(w)&&(S=T.replace(/\//g,"\\")),S});c.push("New-Item","-ItemType","Directory","-Force","-Path",h.join(","))}else c.push("New-Item","-ItemType","Directory","-Force");u=p-1;continue}if(a==="rm"&&o&&Zn()){let f=[],p=!1,h=!1,T=u+1;for(;T<t.length;){let S=t[T];if([">",">>","<","&","&&","|","||",";"].includes(S))break;S==="-rf"||S==="-fr"?(p=!0,h=!0):S==="-r"||S==="-R"||S==="--recursive"?p=!0:S==="-f"||S==="--force"?h=!0:f.push(S),T++}let w=["Remove-Item"];if(p&&w.push("-Recurse"),h&&w.push("-Force"),f.length>0){let S=f.map(k=>{let D=k.replace(/^['"]|['"]$/g,""),U=k;return l(D)&&(U=k.replace(/\//g,"\\")),U});w.push("-Path",S.join(","))}c.push(...w),u=T-1;continue}if(a==="cp"&&o&&Zn()){let f=[],p=!1,h=!1,T=u+1;for(;T<t.length;){let S=t[T];if([">",">>","<","&","&&","|","||",";"].includes(S))break;S==="-r"||S==="-R"||S==="--recursive"?p=!0:S==="-f"||S==="--force"?h=!0:f.push(S),T++}let w=["Copy-Item"];if(p&&w.push("-Recurse"),h&&w.push("-Force"),f.length>0){let S=f.map(k=>{let D=k.replace(/^['"]|['"]$/g,""),U=k;return l(D)&&(U=k.replace(/\//g,"\\")),U});if(S.length>1){let k=S.pop();w.push("-Path",S.join(","),"-Destination",k)}else w.push("-Path",S[0])}c.push(...w),u=T-1;continue}if(a==="touch"&&o&&Zn()){let f=[],p=u+1;for(;p<t.length;){let h=t[p];if([">",">>","<","&","&&","|","||",";"].includes(h))break;f.push(h),p++}if(f.length>0){let T=`(${f.map(w=>{let S=w.replace(/^['"]|['"]$/g,""),k=w;return l(S)&&(k=w.replace(/\//g,"\\")),k}).join(", ")}) | ForEach-Object { if (Test-Path $_) { (Get-Item $_).LastWriteTime = [System.DateTime]::Now } else { $null | Out-File -FilePath $_ } }`;c.push(T)}u=p-1;continue}if(a==="|"&&t[u+1]==="tee"){t[u+2]==="-a"?(c.push(">>"),u+=2):(c.push(">"),u+=1);continue}if(a==="|"&&t[u+1]==="cat"&&t[u+2]===">"){c.push(">"),u+=2;continue}if(a==="|"){let f=t[u+1];if(f){let p=f.replace(/^['"]|['"]$/g,""),h=/\.(txt|md|json|log|csv|html|css|py|js|xml|yaml|yml|pdf|docx|pptx|xlsx)$/i.test(p);if(l(p)&&h){c.push(">");continue}}}c.push(a)}let m=!1;return c.map(u=>{if(u==="echo")return m=!0,u;[">",">>","<","&","&&","|","||",";"].includes(u)&&(m=!1);let f=/^['"]|['"]$/.test(u),p=u;m&&f&&(p=u.replace(/^['"]|['"]$/g,""));let h=/^['"]|['"]$/.test(p),T=p.replace(/^['"]|['"]$/g,"");l(T)&&(p=p.replace(/\//g,"\\"));let w=p.replace(/^['"]|['"]$/g,"");return w.includes(" ")&&!h&&(p=`"${w}"`),p}).join(" ")},vs=async(e,o={})=>{let{command:t}=te(e),{onChunk:n}=o;if(!t)return'ERROR: Missing "command" argument for exec_command.';let i=process.platform==="win32",r=o.systemSettings||{},l={};return r.networkAccess===!1&&(l.HTTP_PROXY="http://127.0.0.1:9999",l.HTTPS_PROXY="http://127.0.0.1:9999",l.ALL_PROXY="socks5://127.0.0.1:9999",l.http_proxy="http://127.0.0.1:9999",l.https_proxy="http://127.0.0.1:9999",l.all_proxy="socks5://127.0.0.1:9999",l.NO_PROXY="localhost,127.0.0.1"),new Promise(c=>{let m=d=>{let u=Qi(t,d),a=i?d?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",f=i?d?["-NoProfile","-Command",u]:["/c",u]:["-c",u];if(Xr)try{let p=Xr.spawn(a,f,{name:"xterm-256color",cols:o.cols||120,rows:o.rows||30,cwd:process.cwd(),env:{...process.env,CI:"false",TERM:"xterm-256color",FORCE_COLOR:"1",...l}});Ct=p,Eo=!0;let h="",T=!1;return p.onData(w=>{if(!T){h+=w,n&&n(w);let S=Kr(h);/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(S)&&(T=!0,setTimeout(()=>c(`SUCCESS: Dev server started successfully in background.
96
96
 
97
- ${E}`),500))}}),p.onExit(({exitCode:w})=>{if(T)return;Ct=null;let E=(h||"").replace(/\r\n/g,`
97
+ ${S}`),500))}}),p.onExit(({exitCode:w})=>{if(T)return;Ct=null;let S=(h||"").replace(/\r\n/g,`
98
98
  `).replace(/\r/g,`
99
- `),k=jr(E).replace(/\n{3,}/g,`
99
+ `),k=Kr(S).replace(/\n{3,}/g,`
100
100
 
101
101
  `)||"Command executed with no output.";c(w!==0?`ERROR: Command [${t}] failed with exit code [${w}].
102
102
 
103
103
  ${k}`:`SUCCESS: Command [${t}] completed.
104
104
 
105
- ${k}`)}),!0}catch(p){return i&&d&&p.code==="ENOENT"?!1:(As(c,u,t,l,n,d),!0)}else return As(c,u,t,l,n,d),!0};i&&m(!0)||m(!1)})},As=(e,o,t,n,i,r=!0)=>{let l=process.platform==="win32",c=l?r?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",d=l?Os(c,l?r?["-NoProfile","-Command",o]:["/c",o]:["-c",o],{cwd:process.cwd(),env:{...process.env,...n}}):Os(o,{shell:!0,cwd:process.cwd(),env:{...process.env,CI:"false",TERM:"xterm-256color",FORCE_COLOR:"1",...n}});Ct=d,To=!1,d.stdin&&d.stdin.on("error",()=>{Ct=null});let u="",a="",f=!1;d.stdout.on("data",p=>{if(!f){let h=p.toString();u+=h,i&&i(h);let T=jr(u);/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(T)&&(f=!0,setTimeout(()=>e(`SUCCESS: Dev server started successfully in background.
105
+ ${k}`)}),!0}catch(p){return i&&d&&p.code==="ENOENT"?!1:(Ds(c,u,t,l,n,d),!0)}else return Ds(c,u,t,l,n,d),!0};i&&m(!0)||m(!1)})},Ds=(e,o,t,n,i,r=!0)=>{let l=process.platform==="win32",c=l?r?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",d=l?Ls(c,l?r?["-NoProfile","-Command",o]:["/c",o]:["-c",o],{cwd:process.cwd(),env:{...process.env,...n}}):Ls(o,{shell:!0,cwd:process.cwd(),env:{...process.env,CI:"false",TERM:"xterm-256color",FORCE_COLOR:"1",...n}});Ct=d,Eo=!1,d.stdin&&d.stdin.on("error",()=>{Ct=null});let u="",a="",f=!1;d.stdout.on("data",p=>{if(!f){let h=p.toString();u+=h,i&&i(h);let T=Kr(u);/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(T)&&(f=!0,setTimeout(()=>e(`SUCCESS: Dev server started successfully in background.
106
106
 
107
107
  ${T}`),500))}}),d.stderr.on("data",p=>{if(!f){let h=p.toString();a+=h,i&&i(h)}}),d.on("close",p=>{if(f)return;Ct=null;let h=[];u&&h.push(`STDOUT:
108
108
  ${u}`),a&&h.push(`STDERR:
109
109
  ${a}`),p!==0&&h.push(`EXIT CODE: ${p}`);let T=h.join(`
110
110
 
111
- `)||"Command executed with no output.",w=jr(T).replace(/\n{3,}/g,`
111
+ `)||"Command executed with no output.",w=Kr(T).replace(/\n{3,}/g,`
112
112
 
113
113
  `);e(p!==0?`ERROR: Command [${t}] failed with exit code [${p}].
114
114
 
115
115
  ${w}`:`SUCCESS: Command [${t}] completed.
116
116
 
117
- ${w}`)}),d.on("error",p=>{if(l&&r&&p.code==="ENOENT"){let h=qi(t,!1);return As(e,h,t,n,i,!1)}Ct=null,e(`ERROR: Failed to start command [${t}]: ${p.message}`)})}});import Te,{useState as yr}from"react";import{Box as At,Text as Rt,useInput as Jl}from"ink";import Ql from"ink-text-input";function vs({systemSettings:e,setSystemSettings:o,apiTier:t,setActiveView:n,setInputConfig:i,saveSettings:r,quotas:l,setMessages:c,aiProvider:m}){let[d,u]=yr("categories"),[a,f]=yr(0),[p,h]=yr(0),[T,w]=yr(null),[E,k]=yr(""),D=I=>{switch(I){case"memory":return[{label:"Toggle Memory",value:"memory",status:e.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Vi(e),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:e.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:e.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:e.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:Ds(e.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Ds(e.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Ds(e.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:e.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Auto-Delete History",value:"autoDelete",status:e.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:e.useExternalData?"ON":"OFF",section:"Other"}];case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:e.autoUpdate?"ON":"OFF"},{label:"Preferred Updater",value:"updateManager",status:(e.updateManager||"npm")==="custom"?"Custom":(e.updateManager||"npm").toUpperCase()}];case"other":return[{label:"Current Provider",value:"aiProvider",status:m},{label:"API Tier",value:"apiTier",status:t}];default:return[]}},_=tn[a].id,K=D(_);Jl((I,A)=>{if(T){A.escape&&w(null);return}if(d==="categories")A.upArrow?f(v=>(v-1+tn.length)%tn.length):A.downArrow?f(v=>(v+1)%tn.length):A.return||A.rightArrow?tn[a].id==="exit"?n("chat"):(u("items"),h(0)):A.escape&&n("chat");else if(d==="items"){if(A.upArrow)h(v=>(v-1+K.length)%K.length);else if(A.downArrow)h(v=>(v+1)%K.length);else if(A.leftArrow||A.escape)u("categories");else if(A.return){let v=K[p];F(v)}}});let F=I=>{if(I.value==="memory")o(A=>({...A,memory:!A.memory}));else if(I.value==="sandboxPreset"){let A=Vi(e),v=["Autonomous","Balanced","Strict"],q=(v.indexOf(A)+1)%v.length,le=v[q];o(U=>{let G={...U,sandboxPreset:le};return le==="Strict"?(G.autoExec=!1,G.allowExternalAccess=!1,G.networkAccess=!1,G.autoApproveCommands="",G.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",G.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",G.autoApproveGit=!1):le==="Balanced"?(G.autoExec=!0,G.allowExternalAccess=!1,G.networkAccess=!0,G.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",G.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",G.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",G.autoApproveGit=!1):le==="Autonomous"&&(G.autoExec=!0,G.allowExternalAccess=!0,G.networkAccess=!0,G.autoApproveCommands="",G.autoDisallowCommands="",G.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",G.autoApproveGit=!0),G})}else if(I.value==="autoExec")e.autoExec?o(A=>({...A,autoExec:!1,sandboxPreset:"Custom"})):e.allowExternalAccess?n("doubleDanger"):n("autoExecDanger");else if(I.value==="externalAccess")e.allowExternalAccess?o(A=>({...A,allowExternalAccess:!1,sandboxPreset:"Custom"})):e.autoExec?n("doubleDanger"):n("externalDanger");else if(I.value==="networkAccess")o(A=>({...A,networkAccess:A.networkAccess===!1,sandboxPreset:"Custom"}));else if(I.value==="alwaysAsk")w("alwaysAskCommands"),k(e.alwaysAskCommands||"");else if(I.value==="autoApprove")w("autoApproveCommands"),k(e.autoApproveCommands||"");else if(I.value==="autoApproveGit")o(A=>({...A,autoApproveGit:!A.autoApproveGit,sandboxPreset:"Custom"}));else if(I.value==="autoDisallow")w("autoDisallowCommands"),k(e.autoDisallowCommands||"");else if(I.value==="apiTier")n("apiTier");else if(I.value==="aiProvider")n("selectProvider");else if(I.value==="autoDelete"){let A=["1d","7d","30d"],J=(A.indexOf(e.autoDeleteHistory||"30d")+1)%A.length;o(q=>({...q,autoDeleteHistory:A[J]}))}else if(I.value==="autoUpdate")o(A=>({...A,autoUpdate:!A.autoUpdate}));else if(I.value==="externalData")if(!e.useExternalData)i({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:e.externalDataPath||""}),n("input");else{let A={...e,useExternalData:!1};o(A),r({systemSettings:A,apiTier:t,quotas:l}),c(v=>[...v,{id:Date.now(),role:"system",text:"\u{1F3E0} [STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),n("chat")}else I.value==="updateManager"&&n("updateManager")};return Te.createElement(At,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},Te.createElement(At,{paddingX:1,paddingY:0,marginBottom:1,borderStyle:"single",borderColor:"magenta",width:"100%"},Te.createElement(Rt,{color:"magenta",bold:!0},"\u{1F527} SYSTEM CONFIGURATION")),Te.createElement(At,{flexDirection:"row",width:"100%",minHeight:8},Te.createElement(At,{flexDirection:"column",width:"30%",borderStyle:"round",borderColor:d==="categories"?"cyan":"gray",padding:1},Te.createElement(At,{marginBottom:1},Te.createElement(Rt,{color:d==="categories"?"cyan":"white",bold:!0,underline:!0},"CATEGORIES")),tn.map((I,A)=>{let v=a===A,J=I.id==="exit";return Te.createElement(At,{key:I.id,marginTop:J?1:0,backgroundColor:v?d==="categories"?"#2a2a2a":"#1e1e1e":void 0,paddingX:1},Te.createElement(Rt,{color:v?d==="categories"?"cyan":"yellow":"white",bold:v},v?"\u276F ":" ",I.label))})),Te.createElement(At,{flexDirection:"column",width:"70%",borderStyle:"round",borderColor:d==="items"?"cyan":"gray",padding:1,marginLeft:1},Te.createElement(At,{marginBottom:1},Te.createElement(Rt,{color:d==="items"?"cyan":"white",bold:!0,underline:!0},tn[a].label.toUpperCase()," SETTINGS")),K.length>0?(()=>{let I=null,A=[],v=ce=>(ce||"").split(",").map(De=>De.trim().toLowerCase()).filter(Boolean),J=v(e.autoApproveCommands),q=v(e.autoDisallowCommands),le=v(e.alwaysAskCommands),U=[...J,...q,...le],G=new Set(U),Pe=_==="security"&&U.length!==G.size;return K.forEach((ce,De)=>{let nt=d==="items"&&p===De,pe=ce.label.length,ut=Math.max(2,35-pe),Ve=".".repeat(ut),ze=fe=>_==="security"?(fe.value==="autoExec"||fe.value==="externalAccess")&&fe.status==="ON"?"red":"yellow":fe.status?.startsWith("\u2713")?"green":fe.status?.startsWith("\u26A0")?"yellow":fe.status==="ON"?"green":fe.status==="OFF"?"red":"yellow";ce.section&&ce.section!==I&&(I=ce.section,A.push(Te.createElement(At,{key:`sec-hdr-${ce.section}`,marginTop:A.length>0?1:0,marginBottom:0,paddingX:1},Te.createElement(Rt,{color:"magenta",bold:!0,underline:!0},"\u{1F4C2} ",ce.section.toUpperCase()))));let _e=nt&&T&&(T==="alwaysAskCommands"&&ce.value==="alwaysAsk"||T==="autoApproveCommands"&&ce.value==="autoApprove"||T==="autoDisallowCommands"&&ce.value==="autoDisallow"),Je=ce.value==="alwaysAsk"||ce.value==="autoApprove"||ce.value==="autoDisallow";A.push(Te.createElement(At,{key:ce.value,flexDirection:"column"},Te.createElement(At,{backgroundColor:nt&&!_e?"#2a2a2a":void 0,paddingX:2},Te.createElement(Rt,{color:nt?"cyan":"white",bold:nt},nt?"\u276F ":" ",ce.label),!Je&&Te.createElement(Te.Fragment,null,Te.createElement(Rt,{color:"gray",dimColor:!0},Ve),Te.createElement(Rt,{color:ze(ce),bold:!0},ce.value==="aiProvider"?ce.status:`[ ${ce.status} ]`))),Je&&!_e&&ce.status!=="None"&&Te.createElement(At,{paddingX:4,marginBottom:1},Te.createElement(Rt,{color:"gray",dimColor:!0},"\u21B3 ",ce.status)),_e&&Te.createElement(At,{flexDirection:"column",marginLeft:4,marginBottom:1},Te.createElement(At,{paddingX:1,borderStyle:"single",borderColor:"cyan",flexDirection:"row"},Te.createElement(Rt,{color:"cyan",bold:!0},"> "," "),Te.createElement(Ql,{value:E,onChange:k,onSubmit:fe=>{let po={...e,[T]:fe.trim(),sandboxPreset:"Custom"};o(po),r({systemSettings:po,apiTier:t,quotas:l}),w(null)}})),Te.createElement(Rt,{color:"gray",dimColor:!0,italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),_==="other"&&A.push(Te.createElement(At,{key:"pty-notice",marginTop:4,paddingX:1},Te.createElement(Rt,{color:Pn?"green":"yellow"},Pn?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))),Pe&&A.push(Te.createElement(At,{key:"conflict-warning",marginTop:1,paddingX:1},Te.createElement(Rt,{color:"red",dimColor:!0,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),A})():Te.createElement(At,{paddingX:1},Te.createElement(Rt,{color:"gray",italic:!0},tn[a].desc)))),Te.createElement(At,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},Te.createElement(Rt,{color:"gray",dimColor:!0,italic:!0},d==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),d==="categories"&&Te.createElement(Rt,{color:"gray",dimColor:!0},tn[a].desc)))}var tn,Vi,Ds,zi=ie(async()=>{await xr();tn=[{id:"memory",label:"\u{1F9E0} Memory",desc:"Manage system context & agent's memory"},{id:"security",label:"\u{1F512} Security",desc:"Configure permissions & data safety"},{id:"updater",label:"\u{1F504} Updater",desc:"Manage application updates"},{id:"other",label:"\u{1F4CB} Other",desc:"Miscellaneous preferences"},{id:"exit",label:"\u{1F6AA} Exit Settings",desc:"Return to chat view"}],Vi=e=>{let o=e.autoApproveCommands||"",t=e.autoDisallowCommands||"",n=e.alwaysAskCommands||"",i=e.autoExec===!1&&e.allowExternalAccess===!1&&e.networkAccess===!1&&o===""&&t==="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"&&n==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&e.autoApproveGit===!1,r=e.autoExec===!0&&e.allowExternalAccess===!1&&e.networkAccess!==!1&&o==="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"&&t==="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"&&n==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&e.autoApproveGit===!1,l=e.autoExec===!0&&e.allowExternalAccess===!0&&e.networkAccess!==!1&&o===""&&t===""&&n==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&e.autoApproveGit===!0;return i?"Strict":r?"Balanced":l?"Autonomous":e.sandboxPreset||"Custom"},Ds=e=>!e||e.trim()===""?"None":e.length>40?e.substring(0,40)+"...":e});import Do,{useState as $s,useEffect as Zl}from"react";import{Box as Kn,Text as Gr}from"ink";import ec from"ink-text-input";function Ps({initialData:e,onSave:o,onCancel:t}){let[n,i]=$s(0),[r,l]=$s(""),[c,m]=$s(()=>({name:e?.name||"",nickname:e?.nickname||"",instructions:e?.instructions||""})),d=[{key:"name",label:"Enter your Name: "},{key:"nickname",label:"Enter a Nickname (Agent will use this): "},{key:"instructions",label:"System Instructions (Persona overrides): "}];Zl(()=>{let a=d[n].key;l(c[a]||"")},[n,c]);let u=a=>{if(a.trim().toLowerCase()==="/cancel"){t();return}let f=d[n].key,p={...c,[f]:a.trim()};m(p),l(""),n<d.length-1?i(n+1):o(p)};return Do.createElement(Kn,{borderStyle:"round",borderColor:"gray",padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},Do.createElement(Kn,{paddingX:1,marginBottom:1},Do.createElement(Gr,{color:"magenta",bold:!0},"\u{1F464} DEVELOPER PROFILE CONFIGURATION")),Do.createElement(Kn,{paddingX:1,flexDirection:"column"},Do.createElement(Kn,null,Do.createElement(Gr,{color:"cyan",bold:!0},d[n].label),Do.createElement(ec,{value:r,onChange:l,onSubmit:u})),Do.createElement(Kn,{marginTop:1},Do.createElement(Gr,{color:"gray",dimColor:!0,italic:!0},"Step ",n+1," of ",d.length))),Do.createElement(Kn,{paddingX:1,marginTop:1},Do.createElement(Gr,{color:"gray",dimColor:!0,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}var Ji=ie(()=>{});import dt,{useState as Fs}from"react";import{Box as Eo,Text as on,useInput as tc}from"ink";import oc from"ink-text-input";var nc,Qi,Zi=ie(()=>{hn();nc=({question:e,options:o,onResolve:t})=>{let[n,i]=Fs(!1),[r,l]=Fs(""),[c,m]=Fs(0),d=[...o,{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}];tc((a,f)=>{if(!n&&((f.leftArrow||f.upArrow)&&m(p=>Math.max(0,p-1)),(f.rightArrow||f.downArrow)&&m(p=>Math.min(d.length-1,p+1)),f.return)){let p=d[c];p.id==="CUSTOM"?i(!0):t(p.label)}});let u=Ce(2);return n?dt.createElement(Eo,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},dt.createElement(Eo,{paddingX:1},dt.createElement(on,{color:"cyan",bold:!0},"\u{1F4AC} SUGGEST SOMETHING ELSE")),dt.createElement(Eo,{marginTop:1,paddingX:1},dt.createElement(on,{italic:!0,color:"gray"},"Replying to: ",e)),dt.createElement(Eo,{marginTop:1,paddingX:1,flexDirection:"row"},dt.createElement(on,{color:"cyan",bold:!0},"\u{1F4A0} "),dt.createElement(oc,{value:r,onChange:l,onSubmit:()=>t(r)})),dt.createElement(Eo,{marginTop:1,paddingX:1,marginBottom:1},dt.createElement(on,{color:"gray",dimColor:!0,italic:!0},"(Press Enter to send)"))):dt.createElement(Eo,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},dt.createElement(Eo,{paddingX:1,marginBottom:1},dt.createElement(on,{color:"cyan",bold:!0},"\u{1F4AC} AGENT REQUEST: ACTION REQUIRED")),dt.createElement(Eo,{paddingX:1,marginBottom:1},dt.createElement(on,{bold:!0,color:"white"},e)),dt.createElement(Eo,{flexDirection:"column",width:"100%"},d.map((a,f)=>{let p=f===c;return dt.createElement(Eo,{key:a.id,flexDirection:"column",width:"100%",backgroundColor:p?"#2a2a2a":void 0,paddingX:1,marginBottom:f===d.length-1?0:1},dt.createElement(on,{color:p?"cyan":"white",bold:p},p?"\u276F ":" ",a.label),a.description&&dt.createElement(Eo,{marginLeft:4},dt.createElement(on,{color:"gray",italic:!0,dimColor:!0},a.description)))})),dt.createElement(Eo,{paddingX:1,marginTop:1,marginBottom:1},dt.createElement(on,{color:"gray",dimColor:!0,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},Qi=nc});import wr from"fs";import Bs from"path";import Xr from"crypto";var rc,sc,ea,ta,Tr,xn,we,ke,Kr,qr,vo=ie(()=>{rc=66,sc=e=>{let o=Buffer.isBuffer(e)?e:Buffer.from(e),t=Buffer.alloc(o.length);for(let n=0;n<o.length;n++)t[n]=o[n]^rc;return t},ea="aes-256-cbc",ta=Xr.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),Tr=e=>{let o=Xr.randomBytes(16),t=Xr.createCipheriv(ea,ta,o),n=t.update(e,"utf8","hex");return n+=t.final("hex"),o.toString("hex")+":"+n},xn=e=>{let o=e.split(":");if(o.length!==2)throw new Error("Invalid AES format");let t=Buffer.from(o[0],"hex"),n=o[1],i=Xr.createDecipheriv(ea,ta,t),r=i.update(n,"hex","utf8");return r+=i.final("utf8"),r},we=(e,o={})=>{try{if(!wr.existsSync(e))return o;let t=wr.readFileSync(e),n=t.toString("utf8").trim();if(n.startsWith("{")||n.startsWith("["))return JSON.parse(n);try{let r=xn(n);return JSON.parse(r)}catch{}let i=sc(t).toString("utf8");if(i.startsWith("{")||i.startsWith("["))return JSON.parse(i);throw new Error("Unsupported or corrupt encryption format")}catch(t){return console.error(`Vault Read Error [${Bs.basename(e)}]:`,t.message),o}},ke=(e,o)=>{try{let t=Bs.dirname(e);wr.existsSync(t)||wr.mkdirSync(t,{recursive:!0});let n=JSON.stringify(o,null,2),i=Tr(n);wr.writeFileSync(e,i,"utf8")}catch(t){console.error(`Vault Write Error [${Bs.basename(e)}]:`,t.message)}},Kr=we,qr=ke});var sa={};Ss(sa,{BACKUPS_DIR:()=>yn,DATA_DIR:()=>Vr,FLUXFLOW_DIR:()=>Fn,HISTORY_FILE:()=>Bn,LEDGER_FILE:()=>nn,LOGS_DIR:()=>Co,MEMORIES_FILE:()=>Ft,PATHS_FILE:()=>zr,SECRET_DIR:()=>eo,SETTINGS_FILE:()=>Zt,TEMP_MEM_CHAT_FILE:()=>_o,TEMP_MEM_FILE:()=>uo,USAGE_FILE:()=>Wt});import ic from"os";import bo from"path";import oa from"fs";import na from"crypto";var Fn,Zt,ra,Vr,Co,eo,Bn,Wt,Ft,uo,_o,yn,nn,zr,to=ie(()=>{Fn=bo.join(ic.homedir(),".fluxflow"),Zt=bo.join(Fn,"settings.json"),ra=null;try{if(oa.existsSync(Zt)){let e=oa.readFileSync(Zt,"utf8").trim(),o;if(e.startsWith("{"))o=JSON.parse(e);else{let t=e.split(":");if(t.length===2){let n=Buffer.from(t[0],"hex"),i=t[1],r=na.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),l=na.createDecipheriv("aes-256-cbc",r,n),c=l.update(i,"hex","utf8");c+=l.final("utf8"),o=JSON.parse(c)}}if(o){let t=o.systemSettings||{};t.useExternalData&&t.externalDataPath&&(ra=t.externalDataPath)}}}catch{}Vr=ra||Fn,Co=bo.join(Vr,"logs"),eo=bo.join(Vr,"secret"),Bn=bo.join(eo,"history.json"),Wt=bo.join(Fn,"usage.json"),Ft=bo.join(eo,"memories.json"),uo=bo.join(eo,"memory-temp.json"),_o=bo.join(eo,"temp-memory-chat.json"),yn=bo.join(Vr,"backups"),nn=bo.join(eo,"ledger.json"),zr=bo.join(eo,"path.json")});var Zr={};Ss(Zr,{getAPIKey:()=>cc,getProviderAPIKey:()=>Jr,getSearchSecrets:()=>uc,getSecret:()=>dc,removeAPIKey:()=>_s,removeSecret:()=>ia,saveAPIKey:()=>mc,saveProviderAPIKey:()=>Qr,saveSearchId:()=>pc,saveSearchKey:()=>fc,saveSecret:()=>wn});import ac from"fs-extra";import lc from"path";var Tn,cc,Jr,Qr,dc,wn,uc,mc,fc,pc,ia,_s,Sr=ie(()=>{vo();to();Tn=lc.join(eo,"secrets.json"),cc=async()=>{try{let e=we(Tn,{});if(e.API_KEY)return e.API_KEY}catch{}return null},Jr=async e=>{try{let o=we(Tn,{});if(e==="Google")return o.GOOGLE_API_KEY||o.API_KEY||null;if(e==="DeepSeek")return o.DEEPSEEK_API_KEY||null;if(e==="OpenRouter")return o.OPENROUTER_API_KEY||null}catch{}return null},Qr=async(e,o)=>{e==="Google"?(await wn("GOOGLE_API_KEY",o),await wn("API_KEY",o)):e==="DeepSeek"?await wn("DEEPSEEK_API_KEY",o):e==="OpenRouter"&&await wn("OPENROUTER_API_KEY",o)},dc=async e=>{try{return we(Tn,{})[e]||null}catch{return null}},wn=async(e,o)=>{await ac.ensureDir(eo);let t=we(Tn,{});t[e]=o,ke(Tn,t)},uc=async()=>{try{let e=we(Tn,{});return{key:e.GOOGLE_API_KEY||e.API_KEY,cx:e.SEARCH_ID}}catch{}return{key:null,cx:null}},mc=async e=>wn("API_KEY",e),fc=async e=>wn("GOOGLE_API_KEY",e),pc=async e=>wn("SEARCH_ID",e),ia=async e=>{try{let o=we(Tn,{});delete o[e],ke(Tn,o)}catch{}},_s=async()=>ia("API_KEY")});var aa,la=ie(()=>{aa=(e=!0,o=!0)=>`
117
+ ${w}`)}),d.on("error",p=>{if(l&&r&&p.code==="ENOENT"){let h=Qi(t,!1);return Ds(e,h,t,n,i,!1)}Ct=null,e(`ERROR: Failed to start command [${t}]: ${p.message}`)})}});import Te,{useState as yr}from"react";import{Box as Mt,Text as Rt,useInput as tc}from"ink";import oc from"ink-text-input";function Ps({systemSettings:e,setSystemSettings:o,apiTier:t,setActiveView:n,setInputConfig:i,saveSettings:r,quotas:l,setMessages:c,aiProvider:m}){let[d,u]=yr("categories"),[a,f]=yr(0),[p,h]=yr(0),[T,w]=yr(null),[S,k]=yr(""),D=I=>{switch(I){case"memory":return[{label:"Toggle Memory",value:"memory",status:e.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Zi(e),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:e.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:e.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:e.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:$s(e.alwaysAskCommands),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:$s(e.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:$s(e.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:e.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Auto-Delete History",value:"autoDelete",status:e.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:e.useExternalData?"ON":"OFF",section:"Other"}];case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:e.autoUpdate?"ON":"OFF"},{label:"Preferred Updater",value:"updateManager",status:(e.updateManager||"npm")==="custom"?"Custom":(e.updateManager||"npm").toUpperCase()}];case"other":return[{label:"Current Provider",value:"aiProvider",status:m},{label:"API Tier",value:"apiTier",status:t}];default:return[]}},U=on[a].id,K=D(U);tc((I,L)=>{if(T){L.escape&&w(null);return}if(d==="categories")L.upArrow?f(v=>(v-1+on.length)%on.length):L.downArrow?f(v=>(v+1)%on.length):L.return||L.rightArrow?on[a].id==="exit"?n("chat"):(u("items"),h(0)):L.escape&&n("chat");else if(d==="items"){if(L.upArrow)h(v=>(v-1+K.length)%K.length);else if(L.downArrow)h(v=>(v+1)%K.length);else if(L.leftArrow||L.escape)u("categories");else if(L.return){let v=K[p];F(v)}}});let F=I=>{if(I.value==="memory")o(L=>({...L,memory:!L.memory}));else if(I.value==="sandboxPreset"){let L=Zi(e),v=["Autonomous","Balanced","Strict"],q=(v.indexOf(L)+1)%v.length,ae=v[q];o(W=>{let X={...W,sandboxPreset:ae};return ae==="Strict"?(X.autoExec=!1,X.allowExternalAccess=!1,X.networkAccess=!1,X.autoApproveCommands="",X.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",X.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",X.autoApproveGit=!1):ae==="Balanced"?(X.autoExec=!0,X.allowExternalAccess=!1,X.networkAccess=!0,X.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",X.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",X.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",X.autoApproveGit=!1):ae==="Autonomous"&&(X.autoExec=!0,X.allowExternalAccess=!0,X.networkAccess=!0,X.autoApproveCommands="",X.autoDisallowCommands="",X.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",X.autoApproveGit=!0),X})}else if(I.value==="autoExec")e.autoExec?o(L=>({...L,autoExec:!1,sandboxPreset:"Custom"})):e.allowExternalAccess?n("doubleDanger"):n("autoExecDanger");else if(I.value==="externalAccess")e.allowExternalAccess?o(L=>({...L,allowExternalAccess:!1,sandboxPreset:"Custom"})):e.autoExec?n("doubleDanger"):n("externalDanger");else if(I.value==="networkAccess")o(L=>({...L,networkAccess:L.networkAccess===!1,sandboxPreset:"Custom"}));else if(I.value==="alwaysAsk")w("alwaysAskCommands"),k(e.alwaysAskCommands||"");else if(I.value==="autoApprove")w("autoApproveCommands"),k(e.autoApproveCommands||"");else if(I.value==="autoApproveGit")o(L=>({...L,autoApproveGit:!L.autoApproveGit,sandboxPreset:"Custom"}));else if(I.value==="autoDisallow")w("autoDisallowCommands"),k(e.autoDisallowCommands||"");else if(I.value==="apiTier")n("apiTier");else if(I.value==="aiProvider")n("selectProvider");else if(I.value==="autoDelete"){let L=["1d","7d","30d"],J=(L.indexOf(e.autoDeleteHistory||"30d")+1)%L.length;o(q=>({...q,autoDeleteHistory:L[J]}))}else if(I.value==="autoUpdate")o(L=>({...L,autoUpdate:!L.autoUpdate}));else if(I.value==="externalData")if(!e.useExternalData)i({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:e.externalDataPath||""}),n("input");else{let L={...e,useExternalData:!1};o(L),r({systemSettings:L,apiTier:t,quotas:l}),c(v=>[...v,{id:Date.now(),role:"system",text:"\u{1F3E0} [STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),n("chat")}else I.value==="updateManager"&&n("updateManager")};return Te.createElement(Mt,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},Te.createElement(Mt,{paddingX:1,paddingY:0,marginBottom:1,borderStyle:"single",borderColor:"magenta",width:"100%"},Te.createElement(Rt,{color:"magenta",bold:!0},"\u{1F527} SYSTEM CONFIGURATION")),Te.createElement(Mt,{flexDirection:"row",width:"100%",minHeight:8},Te.createElement(Mt,{flexDirection:"column",width:"30%",borderStyle:"round",borderColor:d==="categories"?"cyan":"gray",padding:1},Te.createElement(Mt,{marginBottom:1},Te.createElement(Rt,{color:d==="categories"?"cyan":"white",bold:!0,underline:!0},"CATEGORIES")),on.map((I,L)=>{let v=a===L,J=I.id==="exit";return Te.createElement(Mt,{key:I.id,marginTop:J?1:0,backgroundColor:v?d==="categories"?"#2a2a2a":"#1e1e1e":void 0,paddingX:1},Te.createElement(Rt,{color:v?d==="categories"?"cyan":"yellow":"white",bold:v},v?"\u276F ":" ",I.label))})),Te.createElement(Mt,{flexDirection:"column",width:"70%",borderStyle:"round",borderColor:d==="items"?"cyan":"gray",padding:1,marginLeft:1},Te.createElement(Mt,{marginBottom:1},Te.createElement(Rt,{color:d==="items"?"cyan":"white",bold:!0,underline:!0},on[a].label.toUpperCase()," SETTINGS")),K.length>0?(()=>{let I=null,L=[],v=le=>(le||"").split(",").map(Ae=>Ae.trim().toLowerCase()).filter(Boolean),J=v(e.autoApproveCommands),q=v(e.autoDisallowCommands),ae=v(e.alwaysAskCommands),W=[...J,...q,...ae],X=new Set(W),$e=U==="security"&&W.length!==X.size;return K.forEach((le,Ae)=>{let nt=d==="items"&&p===Ae,pe=le.label.length,dt=Math.max(2,35-pe),qe=".".repeat(dt),Ve=me=>U==="security"?(me.value==="autoExec"||me.value==="externalAccess")&&me.status==="ON"?"red":"yellow":me.status?.startsWith("\u2713")?"green":me.status?.startsWith("\u26A0")?"yellow":me.status==="ON"?"green":me.status==="OFF"?"red":"yellow";le.section&&le.section!==I&&(I=le.section,L.push(Te.createElement(Mt,{key:`sec-hdr-${le.section}`,marginTop:L.length>0?1:0,marginBottom:0,paddingX:1},Te.createElement(Rt,{color:"magenta",bold:!0,underline:!0},"\u{1F4C2} ",le.section.toUpperCase()))));let Fe=nt&&T&&(T==="alwaysAskCommands"&&le.value==="alwaysAsk"||T==="autoApproveCommands"&&le.value==="autoApprove"||T==="autoDisallowCommands"&&le.value==="autoDisallow"),ze=le.value==="alwaysAsk"||le.value==="autoApprove"||le.value==="autoDisallow";L.push(Te.createElement(Mt,{key:le.value,flexDirection:"column"},Te.createElement(Mt,{backgroundColor:nt&&!Fe?"#2a2a2a":void 0,paddingX:2},Te.createElement(Rt,{color:nt?"cyan":"white",bold:nt},nt?"\u276F ":" ",le.label),!ze&&Te.createElement(Te.Fragment,null,Te.createElement(Rt,{color:"gray",dimColor:!0},qe),Te.createElement(Rt,{color:Ve(le),bold:!0},le.value==="aiProvider"?le.status:`[ ${le.status} ]`))),ze&&!Fe&&le.status!=="None"&&Te.createElement(Mt,{paddingX:4,marginBottom:1},Te.createElement(Rt,{color:"gray",dimColor:!0},"\u21B3 ",le.status)),Fe&&Te.createElement(Mt,{flexDirection:"column",marginLeft:4,marginBottom:1},Te.createElement(Mt,{paddingX:1,borderStyle:"single",borderColor:"cyan",flexDirection:"row"},Te.createElement(Rt,{color:"cyan",bold:!0},"> "," "),Te.createElement(oc,{value:S,onChange:k,onSubmit:me=>{let yo={...e,[T]:me.trim(),sandboxPreset:"Custom"};o(yo),r({systemSettings:yo,apiTier:t,quotas:l}),w(null)}})),Te.createElement(Rt,{color:"gray",dimColor:!0,italic:!0}," Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),U==="other"&&L.push(Te.createElement(Mt,{key:"pty-notice",marginTop:4,paddingX:1},Te.createElement(Rt,{color:Nn?"green":"yellow"},Nn?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))),$e&&L.push(Te.createElement(Mt,{key:"conflict-warning",marginTop:1,paddingX:1},Te.createElement(Rt,{color:"red",dimColor:!0,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),L})():Te.createElement(Mt,{paddingX:1},Te.createElement(Rt,{color:"gray",italic:!0},on[a].desc)))),Te.createElement(Mt,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},Te.createElement(Rt,{color:"gray",dimColor:!0,italic:!0},d==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),d==="categories"&&Te.createElement(Rt,{color:"gray",dimColor:!0},on[a].desc)))}var on,Zi,$s,ea=re(async()=>{await xr();on=[{id:"memory",label:"\u{1F9E0} Memory",desc:"Manage system context & agent's memory"},{id:"security",label:"\u{1F512} Security",desc:"Configure permissions & data safety"},{id:"updater",label:"\u{1F504} Updater",desc:"Manage application updates"},{id:"other",label:"\u{1F4CB} Other",desc:"Miscellaneous preferences"},{id:"exit",label:"\u{1F6AA} Exit Settings",desc:"Return to chat view"}],Zi=e=>{let o=e.autoApproveCommands||"",t=e.autoDisallowCommands||"",n=e.alwaysAskCommands||"",i=e.autoExec===!1&&e.allowExternalAccess===!1&&e.networkAccess===!1&&o===""&&t==="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"&&n==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&e.autoApproveGit===!1,r=e.autoExec===!0&&e.allowExternalAccess===!1&&e.networkAccess!==!1&&o==="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"&&t==="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"&&n==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&e.autoApproveGit===!1,l=e.autoExec===!0&&e.allowExternalAccess===!0&&e.networkAccess!==!1&&o===""&&t===""&&n==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&e.autoApproveGit===!0;return i?"Strict":r?"Balanced":l?"Autonomous":e.sandboxPreset||"Custom"},$s=e=>!e||e.trim()===""?"None":e.length>40?e.substring(0,40)+"...":e});import Do,{useState as Fs,useEffect as nc}from"react";import{Box as er,Text as qr}from"ink";import rc from"ink-text-input";function Bs({initialData:e,onSave:o,onCancel:t}){let[n,i]=Fs(0),[r,l]=Fs(""),[c,m]=Fs(()=>({name:e?.name||"",nickname:e?.nickname||"",instructions:e?.instructions||""})),d=[{key:"name",label:"Enter your Name: "},{key:"nickname",label:"Enter a Nickname (Agent will use this): "},{key:"instructions",label:"System Instructions (Persona overrides): "}];nc(()=>{let a=d[n].key;l(c[a]||"")},[n,c]);let u=a=>{if(a.trim().toLowerCase()==="/cancel"){t();return}let f=d[n].key,p={...c,[f]:a.trim()};m(p),l(""),n<d.length-1?i(n+1):o(p)};return Do.createElement(er,{borderStyle:"round",borderColor:"gray",padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},Do.createElement(er,{paddingX:1,marginBottom:1},Do.createElement(qr,{color:"magenta",bold:!0},"\u{1F464} DEVELOPER PROFILE CONFIGURATION")),Do.createElement(er,{paddingX:1,flexDirection:"column"},Do.createElement(er,null,Do.createElement(qr,{color:"cyan",bold:!0},d[n].label),Do.createElement(rc,{value:r,onChange:l,onSubmit:u})),Do.createElement(er,{marginTop:1},Do.createElement(qr,{color:"gray",dimColor:!0,italic:!0},"Step ",n+1," of ",d.length))),Do.createElement(er,{paddingX:1,marginTop:1},Do.createElement(qr,{color:"gray",dimColor:!0,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}var ta=re(()=>{});import ct,{useState as _s}from"react";import{Box as Co,Text as nn,useInput as sc}from"ink";import ic from"ink-text-input";var ac,oa,na=re(()=>{wn();ac=({question:e,options:o,onResolve:t})=>{let[n,i]=_s(!1),[r,l]=_s(""),[c,m]=_s(0),d=[...o,{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}];sc((a,f)=>{if(!n&&((f.leftArrow||f.upArrow)&&m(p=>Math.max(0,p-1)),(f.rightArrow||f.downArrow)&&m(p=>Math.min(d.length-1,p+1)),f.return)){let p=d[c];p.id==="CUSTOM"?i(!0):t(p.label)}});let u=Ce(2);return n?ct.createElement(Co,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},ct.createElement(Co,{paddingX:1},ct.createElement(nn,{color:"cyan",bold:!0},"\u{1F4AC} SUGGEST SOMETHING ELSE")),ct.createElement(Co,{marginTop:1,paddingX:1},ct.createElement(nn,{italic:!0,color:"gray"},"Replying to: ",e)),ct.createElement(Co,{marginTop:1,paddingX:1,flexDirection:"row"},ct.createElement(nn,{color:"cyan",bold:!0},"\u{1F4A0} "),ct.createElement(ic,{value:r,onChange:l,onSubmit:()=>t(r)})),ct.createElement(Co,{marginTop:1,paddingX:1,marginBottom:1},ct.createElement(nn,{color:"gray",dimColor:!0,italic:!0},"(Press Enter to send)"))):ct.createElement(Co,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},ct.createElement(Co,{paddingX:1,marginBottom:1},ct.createElement(nn,{color:"cyan",bold:!0},"\u{1F4AC} AGENT REQUEST: ACTION REQUIRED")),ct.createElement(Co,{paddingX:1,marginBottom:1},ct.createElement(nn,{bold:!0,color:"white"},e)),ct.createElement(Co,{flexDirection:"column",width:"100%"},d.map((a,f)=>{let p=f===c;return ct.createElement(Co,{key:a.id,flexDirection:"column",width:"100%",backgroundColor:p?"#2a2a2a":void 0,paddingX:1,marginBottom:f===d.length-1?0:1},ct.createElement(nn,{color:p?"cyan":"white",bold:p},p?"\u276F ":" ",a.label),a.description&&ct.createElement(Co,{marginLeft:4},ct.createElement(nn,{color:"gray",italic:!0,dimColor:!0},a.description)))})),ct.createElement(Co,{paddingX:1,marginTop:1,marginBottom:1},ct.createElement(nn,{color:"gray",dimColor:!0,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},oa=ac});import wr from"fs";import Ns from"path";import Vr from"crypto";var lc,cc,ra,sa,Tr,Sn,ye,ke,zr,Jr,vo=re(()=>{lc=66,cc=e=>{let o=Buffer.isBuffer(e)?e:Buffer.from(e),t=Buffer.alloc(o.length);for(let n=0;n<o.length;n++)t[n]=o[n]^lc;return t},ra="aes-256-cbc",sa=Vr.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),Tr=e=>{let o=Vr.randomBytes(16),t=Vr.createCipheriv(ra,sa,o),n=t.update(e,"utf8","hex");return n+=t.final("hex"),o.toString("hex")+":"+n},Sn=e=>{let o=e.split(":");if(o.length!==2)throw new Error("Invalid AES format");let t=Buffer.from(o[0],"hex"),n=o[1],i=Vr.createDecipheriv(ra,sa,t),r=i.update(n,"hex","utf8");return r+=i.final("utf8"),r},ye=(e,o={})=>{try{if(!wr.existsSync(e))return o;let t=wr.readFileSync(e),n=t.toString("utf8").trim();if(n.startsWith("{")||n.startsWith("["))return JSON.parse(n);try{let r=Sn(n);return JSON.parse(r)}catch{}let i=cc(t).toString("utf8");if(i.startsWith("{")||i.startsWith("["))return JSON.parse(i);throw new Error("Unsupported or corrupt encryption format")}catch(t){return console.error(`Vault Read Error [${Ns.basename(e)}]:`,t.message),o}},ke=(e,o)=>{try{let t=Ns.dirname(e);wr.existsSync(t)||wr.mkdirSync(t,{recursive:!0});let n=JSON.stringify(o,null,2),i=Tr(n);wr.writeFileSync(e,i,"utf8")}catch(t){console.error(`Vault Write Error [${Ns.basename(e)}]:`,t.message)}},zr=ye,Jr=ke});var ca={};bs(ca,{BACKUPS_DIR:()=>En,DATA_DIR:()=>Qr,FLUXFLOW_DIR:()=>Un,HISTORY_FILE:()=>Rn,LEDGER_FILE:()=>rn,LOGS_DIR:()=>Io,MEMORIES_FILE:()=>Ft,PATHS_FILE:()=>Zr,SECRET_DIR:()=>to,SETTINGS_FILE:()=>eo,TEMP_MEM_CHAT_FILE:()=>Ro,TEMP_MEM_FILE:()=>ho,USAGE_FILE:()=>Wt});import dc from"os";import ko from"path";import ia from"fs";import aa from"crypto";var Un,eo,la,Qr,Io,to,Rn,Wt,Ft,ho,Ro,En,rn,Zr,oo=re(()=>{Un=ko.join(dc.homedir(),".fluxflow"),eo=ko.join(Un,"settings.json"),la=null;try{if(ia.existsSync(eo)){let e=ia.readFileSync(eo,"utf8").trim(),o;if(e.startsWith("{"))o=JSON.parse(e);else{let t=e.split(":");if(t.length===2){let n=Buffer.from(t[0],"hex"),i=t[1],r=aa.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),l=aa.createDecipheriv("aes-256-cbc",r,n),c=l.update(i,"hex","utf8");c+=l.final("utf8"),o=JSON.parse(c)}}if(o){let t=o.systemSettings||{};t.useExternalData&&t.externalDataPath&&(la=t.externalDataPath)}}}catch{}Qr=la||Un,Io=ko.join(Qr,"logs"),to=ko.join(Qr,"secret"),Rn=ko.join(to,"history.json"),Wt=ko.join(Un,"usage.json"),Ft=ko.join(to,"memories.json"),ho=ko.join(to,"memory-temp.json"),Ro=ko.join(to,"temp-memory-chat.json"),En=ko.join(Qr,"backups"),rn=ko.join(to,"ledger.json"),Zr=ko.join(to,"path.json")});var os={};bs(os,{getAPIKey:()=>fc,getProviderAPIKey:()=>es,getSearchSecrets:()=>hc,getSecret:()=>pc,removeAPIKey:()=>Us,removeSecret:()=>da,saveAPIKey:()=>gc,saveProviderAPIKey:()=>ts,saveSearchId:()=>yc,saveSearchKey:()=>xc,saveSecret:()=>bn});import uc from"fs-extra";import mc from"path";var Cn,fc,es,ts,pc,bn,hc,gc,xc,yc,da,Us,Sr=re(()=>{vo();oo();Cn=mc.join(to,"secrets.json"),fc=async()=>{try{let e=ye(Cn,{});if(e.API_KEY)return e.API_KEY}catch{}return null},es=async e=>{try{let o=ye(Cn,{});if(e==="Google")return o.GOOGLE_API_KEY||o.API_KEY||null;if(e==="DeepSeek")return o.DEEPSEEK_API_KEY||null;if(e==="OpenRouter")return o.OPENROUTER_API_KEY||null}catch{}return null},ts=async(e,o)=>{e==="Google"?(await bn("GOOGLE_API_KEY",o),await bn("API_KEY",o)):e==="DeepSeek"?await bn("DEEPSEEK_API_KEY",o):e==="OpenRouter"&&await bn("OPENROUTER_API_KEY",o)},pc=async e=>{try{return ye(Cn,{})[e]||null}catch{return null}},bn=async(e,o)=>{await uc.ensureDir(to);let t=ye(Cn,{});t[e]=o,ke(Cn,t)},hc=async()=>{try{let e=ye(Cn,{});return{key:e.GOOGLE_API_KEY||e.API_KEY,cx:e.SEARCH_ID}}catch{}return{key:null,cx:null}},gc=async e=>bn("API_KEY",e),xc=async e=>bn("GOOGLE_API_KEY",e),yc=async e=>bn("SEARCH_ID",e),da=async e=>{try{let o=ye(Cn,{});delete o[e],ke(Cn,o)}catch{}},Us=async()=>da("API_KEY")});var ua,ma=re(()=>{ua=(e=!0,o=!0)=>`
118
118
  Your tool syntax is: '[tool:functions.ToolName(args...)]'
119
119
 
120
120
  -- CHAT MANAGEMENT TOOLS (MUST CALL THESE 2 TOOLS ALWAYS) --
@@ -139,7 +139,7 @@ Explicit Triggers for permanent memory:
139
139
 
140
140
  Usage Rules:
141
141
  - Frequency for 'user' action: Based on explicit triggers.
142
- - IF YOU WANT TO SAVE SOMETHING, BUT SIMILAR MEMORY ALREADY EXISTS, USE THE UPDATE METHOD NOT THE ADD METHOD`:""}`.trim()});var Ns,ca=ie(()=>{Ns={xHigh:`EFFORT LEVEL: MAX
142
+ - IF YOU WANT TO SAVE SOMETHING, BUT SIMILAR MEMORY ALREADY EXISTS, USE THE UPDATE METHOD NOT THE ADD METHOD`:""}`.trim()});var Rs,fa=re(()=>{Rs={xHigh:`EFFORT LEVEL: MAX
143
143
  Think in a continuous, relentless analytical monologue within <think>...</think>. Engage in adversarial self interrogation that treats every assumption as hostile until proven:
144
144
  Deconstruct requirements into atomic invariants. Trace every implicit dependency, side effect, and state mutation. Map the entire dependency graph and identify circular dependencies or tight coupling before they manifest
145
145
  Evaluate algorithmic complexity (time/space) for every operation. Consider memory models, cache locality, and allocation patterns. For concurrent systems, reason through race conditions, deadlocks, and memory ordering
@@ -193,30 +193,30 @@ RULES:
193
193
  - Suitable for simple requests/greetings`,Off:`EFFORT LEVEL: INSTANT
194
194
  No thinking. Immediate response
195
195
  RULES:
196
- - Verify ALL imports and system stability, AVOID ANY Syntax errors, re-read TOOL RESULTS/files to verify`}});import gc from"fs";var Us,da,ua,ma,fa=ie(async()=>{await Ms();la();ca();Us=null,da=(e="",o="",t=!0,n=!1)=>{if(!t)return"";let i=e?.length>0&&!n?`-- RECENT CONTEXT FROM OTHER CHATS (PRIORITY: DYNAMIC-LOW, FOCUS: Chat Context > Recent) --
196
+ - Verify ALL imports and system stability, AVOID ANY Syntax errors, re-read TOOL RESULTS/files to verify`}});import Tc from"fs";var Ws,pa,ha,ga,xa=re(async()=>{await Os();ma();fa();Ws=null,pa=(e="",o="",t=!0,n=!1)=>{if(!t)return"";let i=e?.length>0&&!n?`-- RECENT CONTEXT FROM OTHER CHATS (PRIORITY: DYNAMIC-LOW, FOCUS: Chat Context > Recent) --
197
197
  ${e}`:"",l=[o?.length>0?`--- SAVED MEMORIES (PRIORITY: MEDIUM, USER PREFERENCES) ---
198
198
  ${o}`:"",i].filter(c=>c.length>0);return l.length>0?`[SYSTEM CONTEXT]
199
199
  ${l.join(`
200
200
 
201
201
  `)}
202
- `:""},ua=(e,o,t,n,i=!0,r=!1,l="Google",c=!1)=>{let m="";if(o!=="GEM"){let E=o;o==="Fast"&&(E="Off"),o==="Low"&&(E="Minimal"),(o==="xHigh"||o==="Max")&&(E="xHigh"),m=Ns[E]||Ns.Medium}let d=process.platform==="win32"?"Windows":process.platform==="darwin"?"macOS":"Linux",u=e.instructions&&e.instructions?.length>0?`User Instructions: ${e.instructions}
202
+ `:""},ha=(e,o,t,n,i=!0,r=!1,l="Google",c=!1)=>{let m="";if(o!=="GEM"){let S=o;o==="Fast"&&(S="Off"),o==="Low"&&(S="Minimal"),(o==="xHigh"||o==="Max")&&(S="xHigh"),m=Rs[S]||Rs.Medium}let d=process.platform==="win32"?"Windows":process.platform==="darwin"?"macOS":"Linux",u=e.instructions&&e.instructions?.length>0?`User Instructions: ${e.instructions}
203
203
 
204
204
  `:"",a=e.nickname&&e.nickname?.length>0?`User Nickname: ${e.nickname}
205
205
  ${u.length?"":`
206
206
  `}`:"",f=e.name&&e.name?.length>0?`User Name: ${e.name}
207
207
  ${a.length||u.length?"":`
208
- `}`:"",p=process.cwd(),h=(()=>{let E=process.cwd().toLowerCase();if(process.platform==="win32"){let k=process.env.SystemRoot?.toLowerCase()||"c:\\windows",D=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",_=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return E.startsWith(k)||E.startsWith(D)||E.startsWith(_)}else return E==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(D=>E.startsWith(D))})(),T=[{name:"Fluxflow.md",desc:"HIGH PRIORITY. Overrides other files"},{name:"README.md",desc:"Goals"},{name:"Agent.md",desc:"Standards"},{name:"Skills.md",desc:"Workflows"},{name:"design.md",desc:"UI/UX"},{name:"architecture.md",desc:"System Structure"}];if(r||Us===null){let E=T.filter(k=>gc.existsSync(k.name));Us=t==="Flux"&&E.length>0?`
208
+ `}`:"",p=process.cwd(),h=(()=>{let S=process.cwd().toLowerCase();if(process.platform==="win32"){let k=process.env.SystemRoot?.toLowerCase()||"c:\\windows",D=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",U=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return S.startsWith(k)||S.startsWith(D)||S.startsWith(U)}else return S==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(D=>S.startsWith(D))})(),T=[{name:"Fluxflow.md",desc:"HIGH PRIORITY. Overrides other files"},{name:"README.md",desc:"Goals"},{name:"Agent.md",desc:"Standards"},{name:"Skills.md",desc:"Workflows"},{name:"design.md",desc:"UI/UX"},{name:"architecture.md",desc:"System Structure"}];if(r||Ws===null){let S=T.filter(k=>Tc.existsSync(k.name));Ws=t==="Flux"&&S.length>0?`
209
209
  -- PROJECT CONTEXT (Source of Truth) --
210
- ${E.map(k=>`- ${k.name}: ${k.desc}`).join(`
210
+ ${S.map(k=>`- ${k.name}: ${k.desc}`).join(`
211
211
  `)}
212
212
  Check these first; These Files > Training Data. Safety rules apply
213
- `:""}let w=Us;return`${f}${a}${u}[SYSTEM]
213
+ `:""}let w=Ws;return`${f}${a}${u}[SYSTEM]
214
214
  Identity: Flux Flow (by Kushal Roy Chowdhury). Conversational, Sassy${t==="Flux"?", Respectful":", Friendly, Humorous, Sarcastic"}, CLI Agent
215
215
  Mode: ${t}${o!=="Fast"?" (Thinking Mode)":""}. ${t==="Flux"?"Logical, Highly Detailed, Task-Driven. Prioritizes scalable file/folder structures, modular architecture, clean code abstractions, step-by-step execution. Industry standard latest coding practices/libraries, clean code, Double Check Imports, Client-Server Sync":"Concise"}
216
216
 
217
217
  -- AGENT LOOP RULES (PRIORITY: HIGH) --
218
218
  - MUST END WITH [turn: finish] to END AGENT LOOP WHEN COMPLETED
219
- - NO [turn: finish] marker with tool calls
219
+ - NO CHAT OUTPUT AFTER TOOL CALL IN SAME TURN
220
220
 
221
221
  -- MARKERS --
222
222
  - TOOL SYSTEM: [TOOL RESULT] (system priority)
@@ -229,7 +229,7 @@ CRITICAL THINKING POLICY
229
229
  - ALWAYS use <think> ... </think> before responding, even with simple queries/greetings
230
230
  - ${o==="Low"||o==="Medium"||o==="Fast"?"C":"Interrogate approaches adversarially, but c"}ommit once best solution is determined through analysis. Avoid spiraling after reaching decision point
231
231
  `:""}`:""}`:""}
232
- ${Xi(t,d,l.toLowerCase()==="deepseek"?!1:c,l)}
232
+ ${zi(t,d,l.toLowerCase()==="deepseek"?!1:c,l)}
233
233
  ${w}
234
234
  -- MEMORY RULES --
235
235
  - Memory: ${i?"Subtly Personalize. Auto Saves":"OFF. Decline Remembering Memories"}
@@ -245,7 +245,7 @@ PROTECTED DIRECTORY: ASK BEFORE MODIFYING`:""}
245
245
  - GFM Supported
246
246
  - NO EMOJI AT END OF RESPONSE
247
247
  - NO LaTeX${t==="Flux"?"":". Kaomojis"}
248
- [/SYSTEM]`.trim()},ma=(e="",o=!0,t=!0)=>`${e?`-- CURRENT SAVED USER MEMORIES --
248
+ [/SYSTEM]`.trim()},ga=(e="",o=!0,t=!0)=>`${e?`-- CURRENT SAVED USER MEMORIES --
249
249
  ${e}
250
250
  -------------------------------------------------
251
251
 
@@ -264,67 +264,67 @@ YOU ARE A SILENT BACKGROUND SYSTEM PROCESS. YOU HAVE NO MOUTH. YOUR ONLY OUTPUT
264
264
  YOUR JOB: Analyze the 'User prompt' and 'Agent Raws' to extract facts for long-term memory or handle system tasks.
265
265
  ${o?"If user tell something that is important (like, hobbies, preferences, facts about user, hates, likes, etc) to know user better over time, use long term memory tools.":""}
266
266
 
267
- ${aa(o,t)}
267
+ ${ua(o,t)}
268
268
 
269
269
  Current date and Time: ${new Date().toLocaleString([],{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",hour12:!0})}.
270
- === END SYSTEM PROMPT ===`.trim()});import mo from"fs-extra";import _n from"path";var rn,Et,sn=ie(()=>{to();vo();mo.ensureDirSync(yn);rn=null,Et={async startTransaction(e,o){rn={id:`tx_prompt_${Date.now()}`,chatId:e,timestamp:new Date().toISOString(),prompt:o.trim(),changes:[],reverted:!1}},async recordFileChange(e,o=null){if(!rn||rn.changes.some(l=>l.filePath===e))return;let n=await mo.pathExists(e),i=n&&!o||o?"update":"create";!n&&!o&&(i="create");let r=null;if(n||o){i="update";let l=_n.basename(e);r=`${rn.id}_${l}.bak`;let c=_n.join(yn,rn.chatId);await mo.ensureDir(c);let m=_n.join(c,r),d=o!==null?o:await mo.readFile(e,"utf8"),u=Tr(d);await mo.writeFile(m,u,"utf8")}rn.changes.push({filePath:e,type:i,backupFile:r})},async commitTransaction(){if(!rn)return;let e=we(nn,[]);if(e.push(rn),e.length>512e3){let o=e.shift();if(o.changes){for(let t of o.changes)if(t.backupFile){let n=_n.join(yn,o.chatId,t.backupFile);await mo.remove(n)}}}ke(nn,e),rn=null},async rollbackToBefore(e){let o=we(nn,null);if(!o)throw new Error("No transaction ledger found.");let t=o.findIndex(c=>c.id===e);if(t===-1)throw new Error(`Transaction [${e}] not found.`);let n=o[t].chatId,i=o[t].prompt,r=o.slice(t).filter(c=>c.chatId===n&&!c.reverted).reverse();for(let c of r){for(let m of[...c.changes].reverse())if(m.type==="create")await mo.pathExists(m.filePath)&&await mo.remove(m.filePath);else if(m.type==="update"){let d=_n.join(yn,c.chatId,m.backupFile);if(await mo.pathExists(d)){let u=await mo.readFile(d,"utf8"),a=xn(u);await mo.writeFile(m.filePath,a,"utf8")}}c.reverted=!0}for(let c of r)for(let m of c.changes)if(m.backupFile){let d=_n.join(yn,c.chatId,m.backupFile);await mo.remove(d)}let l=o.filter(c=>!r.some(m=>m.id===c.id));return ke(nn,l),{success:!0,chatId:n,targetPrompt:i}},async getChatHistory(e){try{return we(nn,[]).filter(t=>t.chatId===e&&!t.reverted)}catch{return[]}},async deleteChatBackups(e){try{let o=_n.join(yn,e);await mo.remove(o);let t=we(nn,[]),n=t.length;t=t.filter(i=>i.chatId!==e),t.length!==n&&ke(nn,t)}catch{}}}});import No from"fs-extra";import xc from"path";import{nanoid as yc}from"nanoid";var pa,Rs,$o,es,ha,Ws,Ys,ga,wc,Tc,xa,ya,Er=ie(()=>{vo();to();sn();pa=Promise.resolve(),Rs=e=>{let o=pa.then(async()=>{try{return await e()}catch(t){throw console.error("Lock Operation Failed:",t),t}});return pa=o.catch(()=>{}),o},$o=async()=>{if(await No.pathExists(Bn))try{return we(Bn,{})}catch{return{}}return{}},es=async(e,o,t)=>Rs(async()=>{let n=await $o(),i=n[e],r=(t||[]).filter(c=>!c.isUpdateNotification&&!c.isMeta),l=o||(i?i.name:`Session ${e.slice(-6)}`);n[e]={name:l,messages:r,updatedAt:Date.now()},ke(Bn,n)}),ha=async(e,o)=>Rs(async()=>{let t=await $o();t[e]?(t[e].name=o,t[e].updatedAt=Date.now()):t[e]={name:o,messages:[],updatedAt:Date.now()},ke(Bn,t)}),Ws=async e=>Rs(async()=>{let o=await $o();delete o[e],ke(Bn,o);let t=we(uo,{});t[e]&&(delete t[e],ke(uo,t));let n=we(_o,{});return n[e]&&(delete n[e],ke(_o,n)),await Et.deleteChatBackups(e),o}),Ys=()=>`flow-${yc(6)}`,ga=async e=>{if(!e||e==="Never")return;let o=parseInt(e);if(isNaN(o))return;let t=await $o(),n=Date.now(),i=o*24*60*60*1e3,r=0;for(let l in t){let c=t[l];c.updatedAt&&n-c.updatedAt>i&&(await Ws(l),r++)}return r},wc=e=>{let o=e.replace(/[\[\]]/g,"").trim(),t=new Date(o);if(!isNaN(t.getTime()))return t.getTime();let n=o.split(/,\s*|\s+/);if(n.length===0)return null;let i=n[0],r=n[1]||"",l=n[2]||"",c=i.split(/[-/.]/).map(Number);if(c.length!==3)return null;let m,d,u;if(c[0]>1e3)m=c[0],d=c[1],u=c[2];else if(c[2]>1e3)m=c[2],c[0]>12?(u=c[0],d=c[1]):c[1]>12?(u=c[1],d=c[0]):(d=c[0],u=c[1]);else return null;let a=0,f=0,p=0;if(r){let T=r.split(":").map(Number);a=T[0]||0,f=T[1]||0,p=T[2]||0,l.toLowerCase()==="pm"&&a<12?a+=12:l.toLowerCase()==="am"&&a===12&&(a=0)}let h=new Date(m,d-1,u,a,f,p);return isNaN(h.getTime())?null:h.getTime()},Tc=async e=>{try{if(!await No.pathExists(e))return;let o=await No.readFile(e,"utf8");if(!o.trim())return;let t=o.split(`
270
+ === END SYSTEM PROMPT ===`.trim()});import go from"fs-extra";import Wn from"path";var sn,bt,an=re(()=>{oo();vo();go.ensureDirSync(En);sn=null,bt={async startTransaction(e,o){sn={id:`tx_prompt_${Date.now()}`,chatId:e,timestamp:new Date().toISOString(),prompt:o.trim(),changes:[],reverted:!1}},async recordFileChange(e,o=null){if(!sn||sn.changes.some(l=>l.filePath===e))return;let n=await go.pathExists(e),i=n&&!o||o?"update":"create";!n&&!o&&(i="create");let r=null;if(n||o){i="update";let l=Wn.basename(e);r=`${sn.id}_${l}.bak`;let c=Wn.join(En,sn.chatId);await go.ensureDir(c);let m=Wn.join(c,r),d=o!==null?o:await go.readFile(e,"utf8"),u=Tr(d);await go.writeFile(m,u,"utf8")}sn.changes.push({filePath:e,type:i,backupFile:r})},async commitTransaction(){if(!sn)return;let e=ye(rn,[]);if(e.push(sn),e.length>512e3){let o=e.shift();if(o.changes){for(let t of o.changes)if(t.backupFile){let n=Wn.join(En,o.chatId,t.backupFile);await go.remove(n)}}}ke(rn,e),sn=null},async rollbackToBefore(e){let o=ye(rn,null);if(!o)throw new Error("No transaction ledger found.");let t=o.findIndex(c=>c.id===e);if(t===-1)throw new Error(`Transaction [${e}] not found.`);let n=o[t].chatId,i=o[t].prompt,r=o.slice(t).filter(c=>c.chatId===n&&!c.reverted).reverse();for(let c of r){for(let m of[...c.changes].reverse())if(m.type==="create")await go.pathExists(m.filePath)&&await go.remove(m.filePath);else if(m.type==="update"){let d=Wn.join(En,c.chatId,m.backupFile);if(await go.pathExists(d)){let u=await go.readFile(d,"utf8"),a=Sn(u);await go.writeFile(m.filePath,a,"utf8")}}c.reverted=!0}for(let c of r)for(let m of c.changes)if(m.backupFile){let d=Wn.join(En,c.chatId,m.backupFile);await go.remove(d)}let l=o.filter(c=>!r.some(m=>m.id===c.id));return ke(rn,l),{success:!0,chatId:n,targetPrompt:i}},async getChatHistory(e){try{return ye(rn,[]).filter(t=>t.chatId===e&&!t.reverted)}catch{return[]}},async deleteChatBackups(e){try{let o=Wn.join(En,e);await go.remove(o);let t=ye(rn,[]),n=t.length;t=t.filter(i=>i.chatId!==e),t.length!==n&&ke(rn,t)}catch{}}}});import Wo from"fs-extra";import Sc from"path";import{nanoid as Ec}from"nanoid";var ya,Ys,$o,ns,wa,Hs,js,Ta,bc,Cc,Sa,Ea,Er=re(()=>{vo();oo();an();ya=Promise.resolve(),Ys=e=>{let o=ya.then(async()=>{try{return await e()}catch(t){throw console.error("Lock Operation Failed:",t),t}});return ya=o.catch(()=>{}),o},$o=async()=>{if(await Wo.pathExists(Rn))try{return ye(Rn,{})}catch{return{}}return{}},ns=async(e,o,t)=>Ys(async()=>{let n=await $o(),i=n[e],r=(t||[]).filter(c=>!c.isUpdateNotification&&!c.isMeta),l=o||(i?i.name:`Session ${e.slice(-6)}`);n[e]={name:l,messages:r,updatedAt:Date.now()},ke(Rn,n)}),wa=async(e,o)=>Ys(async()=>{let t=await $o();t[e]?(t[e].name=o,t[e].updatedAt=Date.now()):t[e]={name:o,messages:[],updatedAt:Date.now()},ke(Rn,t)}),Hs=async e=>Ys(async()=>{let o=await $o();delete o[e],ke(Rn,o);let t=ye(ho,{});t[e]&&(delete t[e],ke(ho,t));let n=ye(Ro,{});return n[e]&&(delete n[e],ke(Ro,n)),await bt.deleteChatBackups(e),o}),js=()=>`flow-${Ec(6)}`,Ta=async e=>{if(!e||e==="Never")return;let o=parseInt(e);if(isNaN(o))return;let t=await $o(),n=Date.now(),i=o*24*60*60*1e3,r=0;for(let l in t){let c=t[l];c.updatedAt&&n-c.updatedAt>i&&(await Hs(l),r++)}return r},bc=e=>{let o=e.replace(/[\[\]]/g,"").trim(),t=new Date(o);if(!isNaN(t.getTime()))return t.getTime();let n=o.split(/,\s*|\s+/);if(n.length===0)return null;let i=n[0],r=n[1]||"",l=n[2]||"",c=i.split(/[-/.]/).map(Number);if(c.length!==3)return null;let m,d,u;if(c[0]>1e3)m=c[0],d=c[1],u=c[2];else if(c[2]>1e3)m=c[2],c[0]>12?(u=c[0],d=c[1]):c[1]>12?(u=c[1],d=c[0]):(d=c[0],u=c[1]);else return null;let a=0,f=0,p=0;if(r){let T=r.split(":").map(Number);a=T[0]||0,f=T[1]||0,p=T[2]||0,l.toLowerCase()==="pm"&&a<12?a+=12:l.toLowerCase()==="am"&&a===12&&(a=0)}let h=new Date(m,d-1,u,a,f,p);return isNaN(h.getTime())?null:h.getTime()},Cc=async e=>{try{if(!await Wo.pathExists(e))return;let o=await Wo.readFile(e,"utf8");if(!o.trim())return;let t=o.split(`
271
271
  `),n=[],i=null,r=/^\s*(?:DEBUG|ERROR|SEARCH|PUPPETEER)\b/i;for(let a of t)r.test(a)?(i&&n.push(i),i={header:a,body:[]}):i?i.body.push(a):n.push({header:a,body:[]});i&&n.push(i);let l=10080*60*1e3,c=Date.now(),m=[],d=/(\d{1,4}[-/.]\d{1,4}[-/.]\d{1,4}(?:,\s*|\s+)?(?:\d{1,2}:\d{2}:\d{2}(?:\s*[aApP][mM])?)?)/;for(let a of n){let f=a.header+(a.body.length>0?`
272
272
  `+a.body.join(`
273
- `):""),p=f.match(d);if(p){let h=wc(p[1]);if(h&&c-h>l)continue}m.push(f)}let u=m.join(`
274
- `).trim();u?await No.writeFile(e,u+`
275
- `,"utf8"):await No.writeFile(e,"","utf8")}catch{}},xa=async e=>{try{if(!await No.pathExists(e))return;let o=async t=>{let n=await No.readdir(t);for(let i of n){let r=xc.join(t,i);(await No.stat(r)).isDirectory()?(await o(r),(await No.readdir(r)).length===0&&await No.remove(r)):i.endsWith(".log")&&await Tc(r)}};await o(e)}catch{}},ya=(e,o=4)=>{if(e.length<=1)return e;let t=e[0],n=e.slice(1),i=o*2,r=n.slice(i);return[t,...r]}});import qe from"fs-extra";import Uo from"path";import Hs from"os";var Sc,an,Ec,xt,Sn,wa,ts,js,Ta,Gs,Xs,Sa,Ea,En,Nn,fo,Ks,qs,ba,Ca,os,ka,ns=ie(()=>{to();vo();Sc=()=>{if(process.platform==="win32"){let o=process.env.LOCALAPPDATA||Uo.join(Hs.homedir(),"AppData","Local");return Uo.join(o,"FxFl","backups","backup.json")}if(process.platform==="darwin")return Uo.join(Hs.homedir(),"Library","Application Support","FxFl","backups","backup.json");let e=process.env.XDG_DATA_HOME||Uo.join(Hs.homedir(),".local","share");return Uo.join(e,"fxfl","backups","backup.json")},an=Sc(),Ec=()=>Math.random().toString(36).substring(2)+Date.now().toString(36),xt=null,Sn=null,wa=0,ts=!1,js={agent:0,background:0,search:0,toolSuccess:0,toolFailure:0,toolDenied:0,duration:0,tokens:0,cachedTokens:0,candidateTokens:0,linesAdded:0,linesRemoved:0,imageCalls:[]},Ta=async()=>{let e=new Date().toISOString().split("T")[0],o=Wt+".tmp",t=null,n=null;try{if(await qe.exists(o)){let r=(await qe.readFile(o,"utf8")).trim(),l=null;if(r.startsWith("{")||r.startsWith("[")?l=JSON.parse(r):l=JSON.parse(xn(r)),l&&l.date&&l.stats){t=l;try{await qe.rename(o,Wt)}catch{}}else try{await qe.remove(o)}catch{}}}catch{try{await qe.remove(o)}catch{}}if(!t)try{if(await qe.exists(Wt)){let r=(await qe.readFile(Wt,"utf8")).trim();r.startsWith("{")||r.startsWith("[")?t=JSON.parse(r):t=JSON.parse(xn(r))}}catch{}try{if(await qe.exists(an)){let r=(await qe.readFile(an,"utf8")).trim();r.startsWith("{")||r.startsWith("[")?n=JSON.parse(r):n=JSON.parse(xn(r))}}catch{}let i=null;if(t&&n)if(t.saveId!==n.saveId){i=t;try{await qe.ensureDir(Uo.dirname(an)),await qe.copy(Wt,an)}catch{}}else i=t;else if(t&&!n){i=t;try{await qe.ensureDir(Uo.dirname(an)),await qe.copy(Wt,an)}catch{}}else if(!t&&n){i=n;try{await qe.ensureDir(Uo.dirname(Wt)),await qe.copy(an,Wt)}catch{}}if(i&&i.date===e&&i.stats){let r={...js,...i.stats};return Array.isArray(r.imageCalls)||(r.imageCalls=[]),{...i,stats:r}}return{date:e,stats:{...js}}},Gs=async()=>{if(!(!ts||!xt))try{await qe.ensureDir(Uo.dirname(Wt));let e=null;try{if(await qe.exists(Wt)){let i=(await qe.readFile(Wt,"utf8")).trim();i.startsWith("{")||i.startsWith("[")?e=JSON.parse(i):e=JSON.parse(xn(i))}}catch{}if(e&&e.date===xt.date&&e.stats){for(let i in xt.stats)if(e.stats[i]!==void 0)if(Array.isArray(xt.stats[i])){let r=Array.isArray(e.stats[i])?e.stats[i]:[],l=xt.stats[i],c=new Map;for(let m of[...r,...l])m&&m.timestamp&&c.set(m.timestamp,m);xt.stats[i]=Array.from(c.values())}else typeof xt.stats[i]=="number"&&(xt.stats[i]=Math.max(xt.stats[i],Number(e.stats[i])||0))}xt.saveId=Ec();let o=Wt+".tmp",t=Tr(JSON.stringify(xt,null,2));await qe.writeFile(o,t,"utf8");let n=await qe.open(o,"r+");await qe.fsync(n),await qe.close(n),await qe.rename(o,Wt);try{await qe.ensureDir(Uo.dirname(an)),await qe.copy(Wt,an)}catch{}ts=!1,wa=Date.now()}catch{}},Xs=()=>{if(ts=!0,Sn)return;let e=Date.now(),o=Math.max(0,1500-(e-wa));Sn=setTimeout(async()=>{await Gs(),Sn=null},o),Sn.unref&&Sn.unref()},Sa=async()=>{xt=await Ta()},Ea=async()=>{Sn&&(clearTimeout(Sn),Sn=null),await Gs()},En=async()=>{let e=new Date().toISOString().split("T")[0];return xt?xt.date!==e&&(xt={date:e,stats:{...js}},ts=!0,await Gs()):xt=await Ta(),xt&&xt.stats&&!Array.isArray(xt.stats.imageCalls)&&(xt.stats.imageCalls=[]),xt.stats},Nn=async e=>{let o=await En();o[e]!==void 0&&(o[e]++,Xs())},fo=async(e,o)=>{let t=await En();t[e]!==void 0&&(t[e]+=Math.floor(o),Xs())},Ks=async(e,o)=>{let t=await En(),n=o.apiTier||"Free",i=o.quotas||{};if(n==="Free"){if(e==="agent"||e==="background")return t.agent+t.background<999999;if(e==="search")return!0}if(n==="Paid"||n==="Custom"){if(e==="agent")return t.agent<(i.agentLimit||999999);if(e==="background")return t.background<(i.backgroundLimit||999999);if(e==="search")return t.search<(i.searchLimit||100)}return!0},qs=e=>{if(!e||e.length===0)return[];let t=[...e].sort((i,r)=>i.timestamp-r.timestamp),n=[];for(let i of t){if(n.length>0){let r=n[n.length-1];if(i.timestamp>=r.start&&i.timestamp<r.end){r.calls.push(i),r.spent+=i.cost;continue}}n.push({start:i.timestamp,end:i.timestamp+36e5,calls:[i],spent:i.cost})}return n},ba=(e,o)=>{if(!e||e.length===0)return .025;let n=qs(e);if(n.length===0)return .025;let i=[];for(let a of n){let f=.025;if(i.length>0){let h=i[i.length-1],T=!1;if(i.length>=2){let w=i[i.length-2];h.ratio>=.8&&w.ratio>=.8&&(T=!0)}if(T)f=.015;else{let w=h.limit,E=h.ratio;E>=.8?f=w===.015?.015:w:E<.4?f=Math.min(.025,w+.005):E>=.4&&E<.6?f=Math.min(.025,w+.004):f=Math.min(.025,w+.002)}}let p=f>0?a.spent/f:0;i.push({limit:f,spent:a.spent,ratio:p})}let r=n[n.length-1];if(o<r.end)return i[i.length-1].limit;let l=i[i.length-1].limit,c=l,m=i[i.length-1].ratio,d=r.end,u=0;for(let a=i.length-1;a>=0&&i[a].ratio>=.8;a--)u++;for(;d<=o;){let a=.025;u>=2?a=.015:m>=.8?a=c===.015?.015:c:m<.4?a=Math.min(.025,c+.005):m>=.4&&m<.6?a=Math.min(.025,c+.004):a=Math.min(.025,c+.002),c=a,m=0,u=0,d+=36e5,l=a}return l},Ca=async e=>{let o=e.imageSettings||{keyType:"Default",quality:"Low-High"};if(o.keyType!=="Default")return!0;let n={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.15}[o.quality]||.002,i=await En();i.imageCalls||(i.imageCalls=[]);let r=Date.now(),l=qs(i.imageCalls),c=0;if(l.length>0){let d=l[l.length-1];r>=d.start&&r<d.end&&(c=d.spent)}let m=ba(i.imageCalls,r);return c+n<=m},os=async()=>{let e=await En();e.imageCalls||(e.imageCalls=[]);let o=Date.now(),t=qs(e.imageCalls),n=[],i=0,r=0;if(t.length>0){let d=t[t.length-1];o>=d.start&&o<d.end&&(n=d.calls,i=d.spent,r=Math.max(0,Math.ceil((d.end-o)/(60*1e3))))}let l=ba(e.imageCalls,o),c=Math.max(0,l-i),m=i;return{totalSpent:i,remaining:c,activeCallsCount:n.length,nextResetMin:r,reclaimCost:m,limit:l}},ka=async e=>{let o=e.imageSettings||{keyType:"Default",quality:"Low-High"},n={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[o.quality]||.002,i=await En();i.imageCalls||(i.imageCalls=[]),i.imageCalls.push({timestamp:Date.now(),cost:n}),Xs()}});import bc from"puppeteer";var Vs,Ia=ie(()=>{Qt();to();Vs=async e=>{let{query:o,limit:t=10}=oe(e);if(!o)return'ERROR: Missing "query" argument for web_search.';let n=3,i=null;for(let r=1;r<=n;r++){let l=null;try{l=await bc.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage();await c.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.97 Safari/537.36"),await c.setViewport({width:1366,height:768});let m=r===1?Math.random()*1e3+500:Math.random()*2e3+1e3;await new Promise(f=>setTimeout(f,m));let d=`https://html.duckduckgo.com/html/?q=${encodeURIComponent(o)}`;await c.goto(d,{waitUntil:"networkidle2",timeout:18e4});let u=await c.$$eval(".result",(f,p)=>f.slice(0,p).map((h,T)=>{let w=h.querySelector(".result__a"),E=h.querySelector(".result__snippet"),k=w?w.href:"";k.includes("uddg=")&&(k=decodeURIComponent(k.split("uddg=")[1].split("&")[0]));let D=w?w.innerText.trim():"No Title",_=E?E.innerText.trim():"No Snippet";return`${T+1}. ${D}
273
+ `):""),p=f.match(d);if(p){let h=bc(p[1]);if(h&&c-h>l)continue}m.push(f)}let u=m.join(`
274
+ `).trim();u?await Wo.writeFile(e,u+`
275
+ `,"utf8"):await Wo.writeFile(e,"","utf8")}catch{}},Sa=async e=>{try{if(!await Wo.pathExists(e))return;let o=async t=>{let n=await Wo.readdir(t);for(let i of n){let r=Sc.join(t,i);(await Wo.stat(r)).isDirectory()?(await o(r),(await Wo.readdir(r)).length===0&&await Wo.remove(r)):i.endsWith(".log")&&await Cc(r)}};await o(e)}catch{}},Ea=(e,o=4)=>{if(e.length<=1)return e;let t=e[0],n=e.slice(1),i=o*2,r=n.slice(i);return[t,...r]}});import Ke from"fs-extra";import Yo from"path";import Gs from"os";var kc,ln,Ic,gt,kn,ba,rs,Xs,Ca,Ks,qs,ka,Ia,In,Yn,xo,Vs,zs,Ma,Aa,ss,Oa,is=re(()=>{oo();vo();kc=()=>{if(process.platform==="win32"){let o=process.env.LOCALAPPDATA||Yo.join(Gs.homedir(),"AppData","Local");return Yo.join(o,"FxFl","backups","backup.json")}if(process.platform==="darwin")return Yo.join(Gs.homedir(),"Library","Application Support","FxFl","backups","backup.json");let e=process.env.XDG_DATA_HOME||Yo.join(Gs.homedir(),".local","share");return Yo.join(e,"fxfl","backups","backup.json")},ln=kc(),Ic=()=>Math.random().toString(36).substring(2)+Date.now().toString(36),gt=null,kn=null,ba=0,rs=!1,Xs={agent:0,background:0,search:0,toolSuccess:0,toolFailure:0,toolDenied:0,duration:0,tokens:0,cachedTokens:0,candidateTokens:0,linesAdded:0,linesRemoved:0,imageCalls:[]},Ca=async()=>{let e=new Date().toISOString().split("T")[0],o=Wt+".tmp",t=null,n=null;try{if(await Ke.exists(o)){let r=(await Ke.readFile(o,"utf8")).trim(),l=null;if(r.startsWith("{")||r.startsWith("[")?l=JSON.parse(r):l=JSON.parse(Sn(r)),l&&l.date&&l.stats){t=l;try{await Ke.rename(o,Wt)}catch{}}else try{await Ke.remove(o)}catch{}}}catch{try{await Ke.remove(o)}catch{}}if(!t)try{if(await Ke.exists(Wt)){let r=(await Ke.readFile(Wt,"utf8")).trim();r.startsWith("{")||r.startsWith("[")?t=JSON.parse(r):t=JSON.parse(Sn(r))}}catch{}try{if(await Ke.exists(ln)){let r=(await Ke.readFile(ln,"utf8")).trim();r.startsWith("{")||r.startsWith("[")?n=JSON.parse(r):n=JSON.parse(Sn(r))}}catch{}let i=null;if(t&&n)if(t.saveId!==n.saveId){i=t;try{await Ke.ensureDir(Yo.dirname(ln)),await Ke.copy(Wt,ln)}catch{}}else i=t;else if(t&&!n){i=t;try{await Ke.ensureDir(Yo.dirname(ln)),await Ke.copy(Wt,ln)}catch{}}else if(!t&&n){i=n;try{await Ke.ensureDir(Yo.dirname(Wt)),await Ke.copy(ln,Wt)}catch{}}if(i&&i.date===e&&i.stats){let r={...Xs,...i.stats};return Array.isArray(r.imageCalls)||(r.imageCalls=[]),{...i,stats:r}}return{date:e,stats:{...Xs}}},Ks=async()=>{if(!(!rs||!gt))try{await Ke.ensureDir(Yo.dirname(Wt));let e=null;try{if(await Ke.exists(Wt)){let i=(await Ke.readFile(Wt,"utf8")).trim();i.startsWith("{")||i.startsWith("[")?e=JSON.parse(i):e=JSON.parse(Sn(i))}}catch{}if(e&&e.date===gt.date&&e.stats){for(let i in gt.stats)if(e.stats[i]!==void 0)if(Array.isArray(gt.stats[i])){let r=Array.isArray(e.stats[i])?e.stats[i]:[],l=gt.stats[i],c=new Map;for(let m of[...r,...l])m&&m.timestamp&&c.set(m.timestamp,m);gt.stats[i]=Array.from(c.values())}else typeof gt.stats[i]=="number"&&(gt.stats[i]=Math.max(gt.stats[i],Number(e.stats[i])||0))}gt.saveId=Ic();let o=Wt+".tmp",t=Tr(JSON.stringify(gt,null,2));await Ke.writeFile(o,t,"utf8");let n=await Ke.open(o,"r+");await Ke.fsync(n),await Ke.close(n),await Ke.rename(o,Wt);try{await Ke.ensureDir(Yo.dirname(ln)),await Ke.copy(Wt,ln)}catch{}rs=!1,ba=Date.now()}catch{}},qs=()=>{if(rs=!0,kn)return;let e=Date.now(),o=Math.max(0,1500-(e-ba));kn=setTimeout(async()=>{await Ks(),kn=null},o),kn.unref&&kn.unref()},ka=async()=>{gt=await Ca()},Ia=async()=>{kn&&(clearTimeout(kn),kn=null),await Ks()},In=async()=>{let e=new Date().toISOString().split("T")[0];return gt?gt.date!==e&&(gt={date:e,stats:{...Xs}},rs=!0,await Ks()):gt=await Ca(),gt&&gt.stats&&!Array.isArray(gt.stats.imageCalls)&&(gt.stats.imageCalls=[]),gt.stats},Yn=async e=>{let o=await In();o[e]!==void 0&&(o[e]++,qs())},xo=async(e,o)=>{let t=await In();t[e]!==void 0&&(t[e]+=Math.floor(o),qs())},Vs=async(e,o)=>{let t=await In(),n=o.apiTier||"Free",i=o.quotas||{};if(n==="Free"){if(e==="agent"||e==="background")return t.agent+t.background<999999;if(e==="search")return!0}if(n==="Paid"||n==="Custom"){if(e==="agent")return t.agent<(i.agentLimit||999999);if(e==="background")return t.background<(i.backgroundLimit||999999);if(e==="search")return t.search<(i.searchLimit||100)}return!0},zs=e=>{if(!e||e.length===0)return[];let t=[...e].sort((i,r)=>i.timestamp-r.timestamp),n=[];for(let i of t){if(n.length>0){let r=n[n.length-1];if(i.timestamp>=r.start&&i.timestamp<r.end){r.calls.push(i),r.spent+=i.cost;continue}}n.push({start:i.timestamp,end:i.timestamp+36e5,calls:[i],spent:i.cost})}return n},Ma=(e,o)=>{if(!e||e.length===0)return .025;let n=zs(e);if(n.length===0)return .025;let i=[];for(let a of n){let f=.025;if(i.length>0){let h=i[i.length-1],T=!1;if(i.length>=2){let w=i[i.length-2];h.ratio>=.8&&w.ratio>=.8&&(T=!0)}if(T)f=.015;else{let w=h.limit,S=h.ratio;S>=.8?f=w===.015?.015:w:S<.4?f=Math.min(.025,w+.005):S>=.4&&S<.6?f=Math.min(.025,w+.004):f=Math.min(.025,w+.002)}}let p=f>0?a.spent/f:0;i.push({limit:f,spent:a.spent,ratio:p})}let r=n[n.length-1];if(o<r.end)return i[i.length-1].limit;let l=i[i.length-1].limit,c=l,m=i[i.length-1].ratio,d=r.end,u=0;for(let a=i.length-1;a>=0&&i[a].ratio>=.8;a--)u++;for(;d<=o;){let a=.025;u>=2?a=.015:m>=.8?a=c===.015?.015:c:m<.4?a=Math.min(.025,c+.005):m>=.4&&m<.6?a=Math.min(.025,c+.004):a=Math.min(.025,c+.002),c=a,m=0,u=0,d+=36e5,l=a}return l},Aa=async e=>{let o=e.imageSettings||{keyType:"Default",quality:"Low-High"};if(o.keyType!=="Default")return!0;let n={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.15}[o.quality]||.002,i=await In();i.imageCalls||(i.imageCalls=[]);let r=Date.now(),l=zs(i.imageCalls),c=0;if(l.length>0){let d=l[l.length-1];r>=d.start&&r<d.end&&(c=d.spent)}let m=Ma(i.imageCalls,r);return c+n<=m},ss=async()=>{let e=await In();e.imageCalls||(e.imageCalls=[]);let o=Date.now(),t=zs(e.imageCalls),n=[],i=0,r=0;if(t.length>0){let d=t[t.length-1];o>=d.start&&o<d.end&&(n=d.calls,i=d.spent,r=Math.max(0,Math.ceil((d.end-o)/(60*1e3))))}let l=Ma(e.imageCalls,o),c=Math.max(0,l-i),m=i;return{totalSpent:i,remaining:c,activeCallsCount:n.length,nextResetMin:r,reclaimCost:m,limit:l}},Oa=async e=>{let o=e.imageSettings||{keyType:"Default",quality:"Low-High"},n={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[o.quality]||.002,i=await In();i.imageCalls||(i.imageCalls=[]),i.imageCalls.push({timestamp:Date.now(),cost:n}),qs()}});import Mc from"puppeteer";var Js,La=re(()=>{Zt();oo();Js=async e=>{let{query:o,limit:t=10}=te(e);if(!o)return'ERROR: Missing "query" argument for web_search.';let n=3,i=null;for(let r=1;r<=n;r++){let l=null;try{l=await Mc.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage();await c.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.97 Safari/537.36"),await c.setViewport({width:1366,height:768});let m=r===1?Math.random()*1e3+500:Math.random()*2e3+1e3;await new Promise(f=>setTimeout(f,m));let d=`https://html.duckduckgo.com/html/?q=${encodeURIComponent(o)}`;await c.goto(d,{waitUntil:"networkidle2",timeout:18e4});let u=await c.$$eval(".result",(f,p)=>f.slice(0,p).map((h,T)=>{let w=h.querySelector(".result__a"),S=h.querySelector(".result__snippet"),k=w?w.href:"";k.includes("uddg=")&&(k=decodeURIComponent(k.split("uddg=")[1].split("&")[0]));let D=w?w.innerText.trim():"No Title",U=S?S.innerText.trim():"No Snippet";return`${T+1}. ${D}
276
276
  Source: ${k}
277
- Snippet: ${_}`}),t);if(u.length===0){if((await c.evaluate(()=>document.body.innerText)).includes("anomaly"))throw new Error("ANOMALY_DETECTED");return await l.close(),`No results found for query: [${o}].`}let a=u.join(`
277
+ Snippet: ${U}`}),t);if(u.length===0){if((await c.evaluate(()=>document.body.innerText)).includes("anomaly"))throw new Error("ANOMALY_DETECTED");return await l.close(),`No results found for query: [${o}].`}let a=u.join(`
278
278
 
279
279
  `);return await l.close(),`Search results for [${o}]:
280
280
 
281
- ${a}`}catch(c){if(i=c,l&&await l.close(),r<n){let m=Math.pow(2,r)*1e3;await new Promise(d=>setTimeout(d,m))}}}return`ERROR: Search failed after ${n+1} attempts. Last error: ${i.message}`}});import Cc from"puppeteer";var zs,Ma=ie(()=>{to();zs=async e=>{let o=e.match(/url\s*=\s*["'](.*)["']/),t=o?o[1]:e,n=3,i=null;for(let r=1;r<=n;r++){let l=null;try{l=await Cc.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage();await c.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.97 Safari/537.36"),await c.setViewport({width:1366,height:768});let m=r===1?Math.random()*1e3+500:Math.random()*2e3+1e3;await new Promise(a=>setTimeout(a,m)),await c.goto(t,{waitUntil:"networkidle2",timeout:18e4}),await new Promise(a=>setTimeout(a,5e3));let d=await c.evaluate(()=>{document.querySelectorAll("script, style, nav, footer, header, noscript, svg, canvas, iframe, ad, .ads, link, meta, img").forEach(w=>w.remove());let f=document.createNodeIterator(document.body,NodeFilter.SHOW_COMMENT),p;for(;p=f.nextNode();)p.remove();document.querySelectorAll("*").forEach(w=>{let E=w.attributes;for(let k=E.length-1;k>=0;k--){let D=E[k].name;D!=="href"&&D!=="src"&&w.removeAttribute(D)}(w.tagName==="SPAN"||w.tagName==="DIV"||w.tagName==="SECTION")&&w.attributes.length===0&&(w.tagName==="SPAN"||w.tagName==="DIV"&&w.childNodes.length===1&&w.childNodes[0].nodeType===Node.TEXT_NODE)&&w.replaceWith(...w.childNodes)});let T=()=>{let w=!1;document.querySelectorAll("*:not(br)").forEach(E=>{E.childNodes.length===0&&!E.innerText.trim()&&(E.remove(),w=!0)}),w&&T()};return T(),document.body.innerHTML});if(!d)throw new Error("EMPTY_RENDER_RESULT");let u=d.replace(/\s+/g," ").replace(/>\s+</g,"><").trim().substring(0,3e4);return await l.close(),`CLEANED HTML FROM [${t}]:
281
+ ${a}`}catch(c){if(i=c,l&&await l.close(),r<n){let m=Math.pow(2,r)*1e3;await new Promise(d=>setTimeout(d,m))}}}return`ERROR: Search failed after ${n+1} attempts. Last error: ${i.message}`}});import Ac from"puppeteer";var Qs,Da=re(()=>{oo();Qs=async e=>{let o=e.match(/url\s*=\s*["'](.*)["']/),t=o?o[1]:e,n=3,i=null;for(let r=1;r<=n;r++){let l=null;try{l=await Ac.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage();await c.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.97 Safari/537.36"),await c.setViewport({width:1366,height:768});let m=r===1?Math.random()*1e3+500:Math.random()*2e3+1e3;await new Promise(a=>setTimeout(a,m)),await c.goto(t,{waitUntil:"networkidle2",timeout:18e4}),await new Promise(a=>setTimeout(a,5e3));let d=await c.evaluate(()=>{document.querySelectorAll("script, style, nav, footer, header, noscript, svg, canvas, iframe, ad, .ads, link, meta, img").forEach(w=>w.remove());let f=document.createNodeIterator(document.body,NodeFilter.SHOW_COMMENT),p;for(;p=f.nextNode();)p.remove();document.querySelectorAll("*").forEach(w=>{let S=w.attributes;for(let k=S.length-1;k>=0;k--){let D=S[k].name;D!=="href"&&D!=="src"&&w.removeAttribute(D)}(w.tagName==="SPAN"||w.tagName==="DIV"||w.tagName==="SECTION")&&w.attributes.length===0&&(w.tagName==="SPAN"||w.tagName==="DIV"&&w.childNodes.length===1&&w.childNodes[0].nodeType===Node.TEXT_NODE)&&w.replaceWith(...w.childNodes)});let T=()=>{let w=!1;document.querySelectorAll("*:not(br)").forEach(S=>{S.childNodes.length===0&&!S.innerText.trim()&&(S.remove(),w=!0)}),w&&T()};return T(),document.body.innerHTML});if(!d)throw new Error("EMPTY_RENDER_RESULT");let u=d.replace(/\s+/g," ").replace(/>\s+</g,"><").trim().substring(0,3e4);return await l.close(),`CLEANED HTML FROM [${t}]:
282
282
 
283
283
  ${u}${d.length>3e4?`
284
284
 
285
- [TRUNCATED AT 30K CHARS]`:""}`}catch(c){if(i=c,l&&await l.close(),r<n){let m=Math.pow(2,r)*1e3;await new Promise(d=>setTimeout(d,m))}}}return`ERROR: Scrape failed after ${n+1} attempts. Last error: ${i.message}`}});var kc,Js,Oa=ie(()=>{vo();to();kc=4*(1024*2),Js=async(e,o={})=>{let t=u=>{let a=new RegExp(`${u}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),f=e.match(a);if(f)return f[2].trim();let p=new RegExp(`${u}\\s*[:=]\\s*([^,\\s)]+)`,"s"),h=e.match(p);return h?h[1].trim():null},n=t("action"),i=t("method"),r=t("content"),l=t("content-new"),c=t("content-old"),m=t("id"),d=t("chat-id")||o.chatId||o.sessionId||"default-session";if(n==="temp"){if(!r)return"ERROR: Missing 'content' for temp memory.";let u=we(uo,{});u[d]||(u[d]=[]),u[d].push(r),ke(uo,u);let a=u[d].reduce((f,p)=>f+p.length,0);return`SUCCESS: Temporary context saved for session [${d}]. (Size: ${a} chars)`}if(n==="user"){let u=we(Ft,[]).map(a=>(a.score===void 0&&(a.score=.5),a));if(i==="add"){if(!r)return"ERROR: Missing 'content' for memory addition.";let a=new Date,f=`${a.getDate()}/${a.getMonth()+1}/${a.getFullYear()}`,p=r.includes("[Saved on:")?r:`${r.trim()} [Saved on: ${f}]`,h=kc,T=u.reduce((D,_)=>D+(_.memory?.length||0),0);for(;u.length>0&&T+p.length>h;){let D=u.shift();T-=D.memory?.length||0}let w=t("score"),E=w?parseFloat(w):.5,k={id:`mem-${Date.now().toString(36)}`,memory:p,score:Math.min(2,isNaN(E)?.5:E)};return u.push(k),ke(Ft,u),`SUCCESS: Memory added with ID [${k.id}] and score [${k.score}]. (Vault Size: ${T+p.length} chars)`}if(i==="update"){let a=m||c,f=l||r;if(!a||!f)return"ERROR: Missing 'id' or content for update.";let p=u.findIndex(E=>E.id===a);if(p===-1)return`ERROR: Memory ID [${a}] not found.`;let h=new Date,T=`${h.getDate()}/${h.getMonth()+1}/${h.getFullYear()}`,w=f.includes("[Saved on:")?f:`${f.trim()} [Saved on: ${T}]`;return u[p].memory=w,ke(Ft,u),`SUCCESS: Memory [${a}] updated.`}if(i==="delete"){let a=m||r;if(!a)return"ERROR: Missing 'id' for deletion.";let f=u.length,p=u.filter(h=>h.id!==a);return p.length===f?`ERROR: Memory ID [${a}] not found.`:(ke(Ft,p),`SUCCESS: Memory [${a}] deleted.`)}return`ERROR: Invalid method [${i}] for user memory. Use 'add', 'update', or 'delete'.`}return`ERROR: Unknown action [${n}] for memory tool.`}});var Qs,Aa=ie(()=>{Er();Qt();Qs=async(e,o={})=>{let t=oe(e).title,n=o.chatId||o.sessionId;if(!n)return"ERROR: No active chatId found in tool context.";if(!t)return"ERROR: Missing 'title' argument.";try{return await ha(n,t),`SUCCESS: Chat title updated to [${t}] for session [${n}].`}catch(i){return`ERROR: Failed to update chat title: ${i.message}`}}});import rs from"fs";import La from"path";var Zs,Da=ie(()=>{Qt();Zs=async(e,o={})=>{let{path:t,StartLine:n,EndLine:i,start_line:r,end_line:l,startLine:c,endLine:m}=oe(e),d=parseInt(n||r||c),u=parseInt(i||l||m),a=d||1,f=u||(d?d+800:800);if(!t)return'ERROR: Missing "path" argument for view_file.';let p=La.resolve(process.cwd(),t);try{if(!rs.existsSync(p))return`ERROR: File [${t}] does not exist.`;if(rs.statSync(p).isDirectory())return`ERROR: Path [${t}] is a directory. Use list_files instead.`;let T=La.extname(t).toLowerCase();if([".mp4",".mkv",".avi",".mov",".webm",".flv",".wmv",".mpeg",".mpg"].includes(T))return`ERROR: Unable to read. Type ${T.slice(1).toUpperCase()} not supported`;let E={".pdf":"application/pdf",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".webp":"image/webp",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".doc":"application/msword"};if(E[T]){if(!(o.isMultiModal!==!1))return`ERROR: Multimodality is not supported for the current model. Unable to load [${t}].`;let le=rs.readFileSync(p).toString("base64"),U=E[T];return{text:`[BINARY FILE]: ${t} (${U}) - Loaded as multimodal part.`,binaryPart:{inlineData:{data:le,mimeType:U}}}}let k=rs.readFileSync(p,"utf8");k.startsWith("\uFEFF")&&(k=k.slice(1)),k=k.replace(/\r\n/g,`
285
+ [TRUNCATED AT 30K CHARS]`:""}`}catch(c){if(i=c,l&&await l.close(),r<n){let m=Math.pow(2,r)*1e3;await new Promise(d=>setTimeout(d,m))}}}return`ERROR: Scrape failed after ${n+1} attempts. Last error: ${i.message}`}});var Oc,Zs,va=re(()=>{vo();oo();Oc=4*(1024*2),Zs=async(e,o={})=>{let t=u=>{let a=new RegExp(`${u}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),f=e.match(a);if(f)return f[2].trim();let p=new RegExp(`${u}\\s*[:=]\\s*([^,\\s)]+)`,"s"),h=e.match(p);return h?h[1].trim():null},n=t("action"),i=t("method"),r=t("content"),l=t("content-new"),c=t("content-old"),m=t("id"),d=t("chat-id")||o.chatId||o.sessionId||"default-session";if(n==="temp"){if(!r)return"ERROR: Missing 'content' for temp memory.";let u=ye(ho,{});u[d]||(u[d]=[]),u[d].push(r),ke(ho,u);let a=u[d].reduce((f,p)=>f+p.length,0);return`SUCCESS: Temporary context saved for session [${d}]. (Size: ${a} chars)`}if(n==="user"){let u=ye(Ft,[]).map(a=>(a.score===void 0&&(a.score=.5),a));if(i==="add"){if(!r)return"ERROR: Missing 'content' for memory addition.";let a=new Date,f=`${a.getDate()}/${a.getMonth()+1}/${a.getFullYear()}`,p=r.includes("[Saved on:")?r:`${r.trim()} [Saved on: ${f}]`,h=Oc,T=u.reduce((D,U)=>D+(U.memory?.length||0),0);for(;u.length>0&&T+p.length>h;){let D=u.shift();T-=D.memory?.length||0}let w=t("score"),S=w?parseFloat(w):.5,k={id:`mem-${Date.now().toString(36)}`,memory:p,score:Math.min(2,isNaN(S)?.5:S)};return u.push(k),ke(Ft,u),`SUCCESS: Memory added with ID [${k.id}] and score [${k.score}]. (Vault Size: ${T+p.length} chars)`}if(i==="update"){let a=m||c,f=l||r;if(!a||!f)return"ERROR: Missing 'id' or content for update.";let p=u.findIndex(S=>S.id===a);if(p===-1)return`ERROR: Memory ID [${a}] not found.`;let h=new Date,T=`${h.getDate()}/${h.getMonth()+1}/${h.getFullYear()}`,w=f.includes("[Saved on:")?f:`${f.trim()} [Saved on: ${T}]`;return u[p].memory=w,ke(Ft,u),`SUCCESS: Memory [${a}] updated.`}if(i==="delete"){let a=m||r;if(!a)return"ERROR: Missing 'id' for deletion.";let f=u.length,p=u.filter(h=>h.id!==a);return p.length===f?`ERROR: Memory ID [${a}] not found.`:(ke(Ft,p),`SUCCESS: Memory [${a}] deleted.`)}return`ERROR: Invalid method [${i}] for user memory. Use 'add', 'update', or 'delete'.`}return`ERROR: Unknown action [${n}] for memory tool.`}});var ei,$a=re(()=>{Er();Zt();ei=async(e,o={})=>{let t=te(e).title,n=o.chatId||o.sessionId;if(!n)return"ERROR: No active chatId found in tool context.";if(!t)return"ERROR: Missing 'title' argument.";try{return await wa(n,t),`SUCCESS: Chat title updated to [${t}] for session [${n}].`}catch(i){return`ERROR: Failed to update chat title: ${i.message}`}}});import as from"fs";import Pa from"path";var ti,Fa=re(()=>{Zt();ti=async(e,o={})=>{let{path:t,StartLine:n,EndLine:i,start_line:r,end_line:l,startLine:c,endLine:m}=te(e),d=parseInt(n||r||c),u=parseInt(i||l||m),a=d||1,f=u||(d?d+800:800);if(!t)return'ERROR: Missing "path" argument for view_file.';let p=Pa.resolve(process.cwd(),t);try{if(!as.existsSync(p))return`ERROR: File [${t}] does not exist.`;if(as.statSync(p).isDirectory())return`ERROR: Path [${t}] is a directory. Use list_files instead.`;let T=Pa.extname(t).toLowerCase();if([".mp4",".mkv",".avi",".mov",".webm",".flv",".wmv",".mpeg",".mpg"].includes(T))return`ERROR: Unable to read. Type ${T.slice(1).toUpperCase()} not supported`;let S={".pdf":"application/pdf",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".webp":"image/webp",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".doc":"application/msword"};if(S[T]){if(!(o.isMultiModal!==!1))return`ERROR: Multimodality is not supported for the current model. Unable to load [${t}].`;let ae=as.readFileSync(p).toString("base64"),W=S[T];return{text:`[BINARY FILE]: ${t} (${W}) - Loaded as multimodal part.`,binaryPart:{inlineData:{data:ae,mimeType:W}}}}let k=as.readFileSync(p,"utf8");k.startsWith("\uFEFF")&&(k=k.slice(1)),k=k.replace(/\r\n/g,`
286
286
  `).replace(/\r/g,`
287
287
  `);let D=k.split(`
288
- `),_=D.length,K=Math.max(0,a-1),F=Math.min(_,f),I=D.slice(K,F),A=`File: [${t}] (Showing lines ${K+1}-${F} of ${_}).`,v=I.map((J,q)=>`${String(K+q+1).padStart(4)}: ${J}`).join(`
289
- `);return`${A}
288
+ `),U=D.length,K=Math.max(0,a-1),F=Math.min(U,f),I=D.slice(K,F),L=`File: [${t}] (Showing lines ${K+1}-${F} of ${U}).`,v=I.map((J,q)=>`${String(K+q+1).padStart(4)}: ${J}`).join(`
289
+ `);return`${L}
290
290
 
291
- ${v}`}catch(h){return`ERROR: Failed to read file [${t}]: ${h.message}`}}});import qn from"fs";import va from"path";var ei,$a=ie(()=>{Qt();sn();ei=async(e,o={})=>{let{path:t,content:n}=oe(e);if(!t)return'ERROR: Missing "path" argument for write_file.';if(n===void 0)return'ERROR: Missing "content" argument for write_file.';n=n.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
291
+ ${v}`}catch(h){return`ERROR: Failed to read file [${t}]: ${h.message}`}}});import tr from"fs";import Ba from"path";var oi,_a=re(()=>{Zt();an();oi=async(e,o={})=>{let{path:t,content:n}=te(e);if(!t)return'ERROR: Missing "path" argument for write_file.';if(n===void 0)return'ERROR: Missing "content" argument for write_file.';n=n.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
292
292
  `).replace(/\r/g,`
293
- `);let i=va.resolve(process.cwd(),t),r=va.dirname(i);try{await Et.recordFileChange(i);let l="";if(qn.existsSync(i))try{l=`Old File contents:
294
- ${qn.readFileSync(i,"utf8").split(/\r?\n/).map((k,D)=>`${D+1} | ${k}`).join(`
293
+ `);let i=Ba.resolve(process.cwd(),t),r=Ba.dirname(i);try{await bt.recordFileChange(i);let l="";if(tr.existsSync(i))try{l=`Old File contents:
294
+ ${tr.readFileSync(i,"utf8").split(/\r?\n/).map((k,D)=>`${D+1} | ${k}`).join(`
295
295
  `)}
296
296
 
297
297
  `}catch{l=`[Note: Could not read existing file for reversal reference]
298
298
 
299
- `}qn.existsSync(r)||qn.mkdirSync(r,{recursive:!0});let m=(w=>w.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
299
+ `}tr.existsSync(r)||tr.mkdirSync(r,{recursive:!0});let m=(w=>w.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
300
300
  `).replace(/\r/g,`
301
- `))(n),d=m.split(/\r?\n/).length,u=Buffer.byteLength(m,"utf8");qn.writeFileSync(i,m,"utf8");let a=qn.readFileSync(i,"utf8"),f=Buffer.byteLength(a,"utf8"),p=a.split(/\r?\n/),h=p.length;if(f===0&&u>0)return a=null,`ERROR: CRITICAL FAILURE: Verification failed. File [${t}] is empty on disk despite success report!`;let T="";if(h<=200)T=p.join(`
301
+ `))(n),d=m.split(/\r?\n/).length,u=Buffer.byteLength(m,"utf8");tr.writeFileSync(i,m,"utf8");let a=tr.readFileSync(i,"utf8"),f=Buffer.byteLength(a,"utf8"),p=a.split(/\r?\n/),h=p.length;if(f===0&&u>0)return a=null,`ERROR: CRITICAL FAILURE: Verification failed. File [${t}] is empty on disk despite success report!`;let T="";if(h<=200)T=p.join(`
302
302
  `);else{let w=p.slice(0,100).join(`
303
- `),E=p.slice(-100).join(`
303
+ `),S=p.slice(-100).join(`
304
304
  `);T=`${w}
305
305
 
306
306
  ... [${h-200} lines truncated] ...
307
307
 
308
- ${E}`}return a=null,`SUCCESS: File [${t}] saved.
308
+ ${S}`}return a=null,`SUCCESS: File [${t}] saved.
309
309
 
310
310
  - Stats: [${h} lines, ${(f/1024).toFixed(1)} KB]
311
311
  ${l}- Content Preview:
312
312
  ${T}
313
313
 
314
- Check if Starting and Ending matches your write.`}catch(l){return`ERROR: Failed to write file [${t}]: ${l.message}`}}});import ti from"fs";import Ic from"path";var oi,Pa=ie(()=>{Qt();sn();$n();oi=async(e,o={})=>{let t=oe(e),n=t.path;if(!n)return'ERROR: Missing "path" argument for update_file.';let{patchPairs:i,error:r}=Nr(t);if(r)return`ERROR: ${r}`;if(i.length===0)return"ERROR: No valid replacement pairs found. Use replaceContent1, newContent1, etc.";let l=Ic.resolve(process.cwd(),n);try{if(!ti.existsSync(l))return`ERROR: File [${n}] does not exist. Use write_file instead.`;let c=o.forcedContent||ti.readFileSync(l,"utf8");c.startsWith("\uFEFF")&&(c=c.slice(1));let m=c.replace(/\r\n/g,`
314
+ Check if Starting and Ending matches your write.`}catch(l){return`ERROR: Failed to write file [${t}]: ${l.message}`}}});import ni from"fs";import Lc from"path";var ri,Na=re(()=>{Zt();an();_n();ri=async(e,o={})=>{let t=te(e),n=t.path;if(!n)return'ERROR: Missing "path" argument for update_file.';let{patchPairs:i,error:r}=Wr(t);if(r)return`ERROR: ${r}`;if(i.length===0)return"ERROR: No valid replacement pairs found. Use replaceContent1, newContent1, etc.";let l=Lc.resolve(process.cwd(),n);try{if(!ni.existsSync(l))return`ERROR: File [${n}] does not exist. Use write_file instead.`;let c=o.forcedContent||ni.readFileSync(l,"utf8");c.startsWith("\uFEFF")&&(c=c.slice(1));let m=c.replace(/\r\n/g,`
315
315
  `).replace(/\r/g,`
316
- `),{content:d,results:u}=Ur(m,i),a=u.filter(p=>!p.success);if(a.length>0)return`ERROR: Patch Failed to apply to [${n}].
316
+ `),{content:d,results:u}=Yr(m,i),a=u.filter(p=>!p.success);if(a.length>0)return`ERROR: Patch Failed to apply to [${n}].
317
317
  ${a.map(p=>` \u2022 ${p.error}`).join(`
318
- `)}`;await Et.recordFileChange(l,m),ti.writeFileSync(l,d,"utf8");let f=Rr(m,d,u,12);return`SUCCESS: File [${n}] updated. [${u.length}/${i.length}] blocks applied.
318
+ `)}`;await bt.recordFileChange(l,m),ni.writeFileSync(l,d,"utf8");let f=Hr(m,d,u,12);return`SUCCESS: File [${n}] updated. [${u.length}/${i.length}] blocks applied.
319
319
 
320
- ${f}`}catch(c){return`ERROR: Failed to update file [${n}]: ${c.message}`}}});import ss from"fs";import Fa from"path";var ni,Ba=ie(()=>{Qt();ni=async e=>{let{path:o="."}=oe(e),t=Fa.resolve(process.cwd(),o);try{if(!ss.existsSync(t))return`ERROR: Path [${o}] does not exist.`;if(!ss.statSync(t).isDirectory())return`ERROR: Path [${o}] is a file, not a directory. Use view_file instead.`;let i=ss.readdirSync(t),r=i.length,l=100,c=i.slice(0,l),m=[];for(let f of c){let p=Fa.join(t,f),h="\u{1F4C4}",T={name:f,type:"unknown",size:"N/A",mtime:"N/A"};try{let w=ss.statSync(p);T={name:f,type:w.isDirectory()?"directory":"file",size:(w.size/1024).toFixed(1)+" KB",mtime:w.mtime.toLocaleString()}}catch{T.type="inaccessible"}m.push(T)}let d=m.map(f=>{let p=f.type==="directory"?"\u{1F4C1}":f.type==="file"?"\u{1F4C4}":"\u2753";return f.type==="directory"?`${p} ${f.name} - [DIR] - [Modified: ${f.mtime}]`:`${p} ${f.name} - [Size: ${f.size}] - [Modified: ${f.mtime}]`}).join(`
320
+ ${f}`}catch(c){return`ERROR: Failed to update file [${n}]: ${c.message}`}}});import ls from"fs";import Ua from"path";var si,Ra=re(()=>{Zt();si=async e=>{let{path:o="."}=te(e),t=Ua.resolve(process.cwd(),o);try{if(!ls.existsSync(t))return`ERROR: Path [${o}] does not exist.`;if(!ls.statSync(t).isDirectory())return`ERROR: Path [${o}] is a file, not a directory. Use view_file instead.`;let i=ls.readdirSync(t),r=i.length,l=100,c=i.slice(0,l),m=[];for(let f of c){let p=Ua.join(t,f),h="\u{1F4C4}",T={name:f,type:"unknown",size:"N/A",mtime:"N/A"};try{let w=ls.statSync(p);T={name:f,type:w.isDirectory()?"directory":"file",size:(w.size/1024).toFixed(1)+" KB",mtime:w.mtime.toLocaleString()}}catch{T.type="inaccessible"}m.push(T)}let d=m.map(f=>{let p=f.type==="directory"?"\u{1F4C1}":f.type==="file"?"\u{1F4C4}":"\u2753";return f.type==="directory"?`${p} ${f.name} - [DIR] - [Modified: ${f.mtime}]`:`${p} ${f.name} - [Size: ${f.size}] - [Modified: ${f.mtime}]`}).join(`
321
321
  `),u=`
322
322
 
323
323
  (Total items in folder: ${r})`;r>l&&(u=`
324
324
 
325
325
  \u26A0\uFE0F TRUNCATED: Showing first ${l} of ${r} items.`);let a=`Detailed folder stats for [${o}]:
326
326
 
327
- ${d}${u}`;return i.length=0,c.length=0,m.length=0,a}catch(n){return`ERROR: Failed to read folder [${o}]: ${n.message}`}}});var ri,_a=ie(()=>{Qt();ri=async(e,o)=>{let t=oe(e),{question:n}=t;if(!n)return'ERROR: Missing "question" argument for ask.';if(!o.onAskUser)return"ERROR: onAskUser callback not provided in tool context.";let i=[];Object.keys(t).forEach(r=>{if(r.startsWith("option")){let l=t[r];if(typeof l=="string"&&l.includes("::")){let[c,m]=l.split("::");i.push({id:r,label:c.trim(),description:m.trim()})}else i.push({id:r,label:String(l).trim(),description:""})}});try{return`USER CHOOSE: ${await o.onAskUser(n,i)}`}catch(r){return`ERROR: Failed to get user input: ${r.message}`}}});import Mc from"puppeteer";import Vn from"path";import Un from"fs-extra";import{PDFDocument as Oc}from"pdf-lib";var si,Na=ie(()=>{Qt();sn();si=async e=>{let{path:o,content:t,orientation:n="portrait",margin:i="0px"}=oe(e);if(!o)return'ERROR: Missing "path" argument for write_pdf.';if(!t)return'ERROR: Missing "content" (HTML/CSS) for write_pdf.';let r=Vn.resolve(process.cwd(),o),l=null;try{await Un.ensureDir(Vn.dirname(r)),await Et.recordFileChange(r),l=await Mc.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage(),m=t,d={},u=async F=>{if(!F||F.startsWith("http://")||F.startsWith("https://")||F.startsWith("data:"))return null;try{let I=Vn.resolve(process.cwd(),F);if(await Un.pathExists(I)){let A=Vn.extname(I).toLowerCase().replace(".","")||"png",v=A==="jpg"?"jpeg":A==="svg"?"svg+xml":A,J=await Un.readFile(I,"base64");return`data:image/${v};base64,${J}`}}catch{}return null},a=/<link[^>]+href=["']([^"']+)["']/gi,f={},p;for(;(p=a.exec(t))!==null;){let F=p[1],I=p[0];if(F&&I.toLowerCase().includes("stylesheet")&&!F.startsWith("http://")&&!F.startsWith("https://")&&!F.startsWith("data:"))try{let A=Vn.resolve(process.cwd(),F);if(await Un.pathExists(A)){let v=await Un.readFile(A,"utf-8");f[I]=`<style>${v}</style>`}}catch{}}for(let[F,I]of Object.entries(f))m=m.split(F).join(I);let h=/<img[^>]+src=["']([^"']+)["']/gi;for(;(p=h.exec(m))!==null;){let F=p[1];if(F&&!d[F]){let I=await u(F);I&&(d[F]=I)}}let T=/url\(\s*['"]?([^'")]+?)['"]?\s*\)/gi;for(;(p=T.exec(m))!==null;){let F=p[1].trim();if(F&&!d[F]){let I=await u(F);I&&(d[F]=I)}}for(let[F,I]of Object.entries(d)){let A=F.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),v=new RegExp(`(src=["'])(${A})(["'])`,"gi");m=m.replace(v,`$1${I}$3`);let J=new RegExp(`url\\(\\s*(['"]?)(${A})\\1\\s*\\)`,"gi");m=m.replace(J,`url($1${I}$1)`)}let w=`
327
+ ${d}${u}`;return i.length=0,c.length=0,m.length=0,a}catch(n){return`ERROR: Failed to read folder [${o}]: ${n.message}`}}});var ii,Wa=re(()=>{Zt();ii=async(e,o)=>{let t=te(e),{question:n}=t;if(!n)return'ERROR: Missing "question" argument for ask.';if(!o.onAskUser)return"ERROR: onAskUser callback not provided in tool context.";let i=[];Object.keys(t).forEach(r=>{if(r.startsWith("option")){let l=t[r];if(typeof l=="string"&&l.includes("::")){let[c,m]=l.split("::");i.push({id:r,label:c.trim(),description:m.trim()})}else i.push({id:r,label:String(l).trim(),description:""})}});try{return`USER CHOOSE: ${await o.onAskUser(n,i)}`}catch(r){return`ERROR: Failed to get user input: ${r.message}`}}});import Dc from"puppeteer";import or from"path";import Hn from"fs-extra";import{PDFDocument as vc}from"pdf-lib";var ai,Ya=re(()=>{Zt();an();ai=async e=>{let{path:o,content:t,orientation:n="portrait",margin:i="0px"}=te(e);if(!o)return'ERROR: Missing "path" argument for write_pdf.';if(!t)return'ERROR: Missing "content" (HTML/CSS) for write_pdf.';let r=or.resolve(process.cwd(),o),l=null;try{await Hn.ensureDir(or.dirname(r)),await bt.recordFileChange(r),l=await Dc.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--disable-dev-shm-usage"]});let c=await l.newPage(),m=t,d={},u=async F=>{if(!F||F.startsWith("http://")||F.startsWith("https://")||F.startsWith("data:"))return null;try{let I=or.resolve(process.cwd(),F);if(await Hn.pathExists(I)){let L=or.extname(I).toLowerCase().replace(".","")||"png",v=L==="jpg"?"jpeg":L==="svg"?"svg+xml":L,J=await Hn.readFile(I,"base64");return`data:image/${v};base64,${J}`}}catch{}return null},a=/<link[^>]+href=["']([^"']+)["']/gi,f={},p;for(;(p=a.exec(t))!==null;){let F=p[1],I=p[0];if(F&&I.toLowerCase().includes("stylesheet")&&!F.startsWith("http://")&&!F.startsWith("https://")&&!F.startsWith("data:"))try{let L=or.resolve(process.cwd(),F);if(await Hn.pathExists(L)){let v=await Hn.readFile(L,"utf-8");f[I]=`<style>${v}</style>`}}catch{}}for(let[F,I]of Object.entries(f))m=m.split(F).join(I);let h=/<img[^>]+src=["']([^"']+)["']/gi;for(;(p=h.exec(m))!==null;){let F=p[1];if(F&&!d[F]){let I=await u(F);I&&(d[F]=I)}}let T=/url\(\s*['"]?([^'")]+?)['"]?\s*\)/gi;for(;(p=T.exec(m))!==null;){let F=p[1].trim();if(F&&!d[F]){let I=await u(F);I&&(d[F]=I)}}for(let[F,I]of Object.entries(d)){let L=F.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),v=new RegExp(`(src=["'])(${L})(["'])`,"gi");m=m.replace(v,`$1${I}$3`);let J=new RegExp(`url\\(\\s*(['"]?)(${L})\\1\\s*\\)`,"gi");m=m.replace(J,`url($1${I}$1)`)}let w=`
328
328
  <style>
329
329
  @page {
330
330
  margin: ${i};
@@ -354,7 +354,7 @@ ${d}${u}`;return i.length=0,c.length=0,m.length=0,a}catch(n){return`ERROR: Faile
354
354
  </style>
355
355
  <div class="watermark">Generated by FluxFlow CLI (AI)</div>
356
356
  ${m}
357
- `;await c.setContent(w,{waitUntil:"networkidle0",timeout:18e4});let E=await c.pdf({format:"A4",landscape:String(n).toLowerCase()==="landscape",margin:{top:i,right:i,bottom:i,left:i},printBackground:!0}),k=await Oc.load(E),D=Vn.basename(o);k.setTitle(`FluxFlow_${D}`),k.setAuthor("FluxFlow CLI"),k.setSubject("Generated with Agentic AI System"),k.setKeywords(["FluxFlow","AI","Agentic","Automated"]),k.setCreator("FluxFlow PDF Engine"),k.setProducer("FluxFlow (Generative AI)");let _=await k.save();await Un.writeFile(r,_);let K=await Un.stat(r);return`SUCCESS: PDF generated successfully at [${o}] (${(K.size/1024).toFixed(2)} KB).`}catch(c){return`ERROR: Failed to generate PDF [${o}]: ${c.message}`}finally{l&&await l.close()}}});import Ua from"fs-extra";import ii from"path";import Ac from"html-to-docx";var ai,Ra=ie(()=>{Qt();sn();ai=async e=>{let{path:o,content:t}=oe(e);if(!o)return'ERROR: Missing "path" argument for write_docx.';if(!t)return'ERROR: Missing "content" (HTML) for write_docx.';let n=ii.resolve(process.cwd(),o);try{await Ua.ensureDir(ii.dirname(n)),await Et.recordFileChange(n);let i=ii.basename(o),r=t.includes("<html")?t:`
357
+ `;await c.setContent(w,{waitUntil:"networkidle0",timeout:18e4});let S=await c.pdf({format:"A4",landscape:String(n).toLowerCase()==="landscape",margin:{top:i,right:i,bottom:i,left:i},printBackground:!0}),k=await vc.load(S),D=or.basename(o);k.setTitle(`FluxFlow_${D}`),k.setAuthor("FluxFlow CLI"),k.setSubject("Generated with Agentic AI System"),k.setKeywords(["FluxFlow","AI","Agentic","Automated"]),k.setCreator("FluxFlow PDF Engine"),k.setProducer("FluxFlow (Generative AI)");let U=await k.save();await Hn.writeFile(r,U);let K=await Hn.stat(r);return`SUCCESS: PDF generated successfully at [${o}] (${(K.size/1024).toFixed(2)} KB).`}catch(c){return`ERROR: Failed to generate PDF [${o}]: ${c.message}`}finally{l&&await l.close()}}});import Ha from"fs-extra";import li from"path";import $c from"html-to-docx";var ci,ja=re(()=>{Zt();an();ci=async e=>{let{path:o,content:t}=te(e);if(!o)return'ERROR: Missing "path" argument for write_docx.';if(!t)return'ERROR: Missing "content" (HTML) for write_docx.';let n=li.resolve(process.cwd(),o);try{await Ha.ensureDir(li.dirname(n)),await bt.recordFileChange(n);let i=li.basename(o),r=t.includes("<html")?t:`
358
358
  <!DOCTYPE html>
359
359
  <html lang="en">
360
360
  <head>
@@ -365,29 +365,29 @@ ${d}${u}`;return i.length=0,c.length=0,m.length=0,a}catch(n){return`ERROR: Faile
365
365
  ${t}
366
366
  </body>
367
367
  </html>
368
- `,l=await Ac(r,null,{title:`FluxFlow_${i}`,creator:"FluxFlow CLI",description:"Generated by Agentic AI System",table:{row:{cantSplit:!0}},footer:!0,pageNumber:!0});return await Ua.writeFile(n,l),`SUCCESS: Word document [${o}] generated successfully.
369
- - Size: ${(l.length/1024).toFixed(1)} KB`}catch(i){return`ERROR: Failed to generate DOCX [${o}]: ${i.message}`}}});import li from"fs/promises";import br from"path";async function Wa(e,o,t=e,n=1){if(n>12)return[];let i=[],r;try{r=await li.readdir(e,{withFileTypes:!0})}catch{return[]}for(let l of r){let c=br.join(e,l.name),m=br.relative(t,c),d=m.split(br.sep).map(a=>a.toLowerCase());if(!o.some(a=>d.includes(a.toLowerCase())))if(l.isDirectory()){let a=await Wa(c,o,t,n+1);i=i.concat(a)}else l.isFile()&&i.push({fullPath:c,relativePath:m})}return i}var ci,Ya=ie(()=>{Qt();ci=async e=>{let{keyword:o,file:t}=oe(e);if(!o)return'ERROR: Missing "keyword" argument.';let n=["node_modules",".git","dist",".next",".gemini",".exe",".dll",".png",".jpg",".jpeg",".gif",".zip",".tgz"],i=150;try{let r=[],l=process.cwd();if(t){let a=br.resolve(l,t);try{(await li.stat(a)).isFile()&&r.push({fullPath:a,relativePath:br.relative(l,a)})}catch{return`ERROR: File not found: ${t}`}}else r=await Wa(l,n);let c=r.map(async a=>{try{let f=await li.readFile(a.fullPath,"utf-8");if(f.includes("\0"))return[];let p=f.split(/\r?\n/),h=[];for(let T=0;T<p.length;T++)if(p[T].includes(o)){let w=a.relativePath.replace(/\\/g,"/");h.push(`${w} \u2192 ${T+1}`)}return h}catch{return[]}}),d=(await Promise.all(c)).flat().slice(0,i);if(typeof global.gc=="function"&&global.gc(),d.length===0)return`Found 0 matches for keyword: "${o}"${t?` in file: ${t}`:". Try to specify files"}`;let u=`Found ${d.length} matches:
368
+ `,l=await $c(r,null,{title:`FluxFlow_${i}`,creator:"FluxFlow CLI",description:"Generated by Agentic AI System",table:{row:{cantSplit:!0}},footer:!0,pageNumber:!0});return await Ha.writeFile(n,l),`SUCCESS: Word document [${o}] generated successfully.
369
+ - Size: ${(l.length/1024).toFixed(1)} KB`}catch(i){return`ERROR: Failed to generate DOCX [${o}]: ${i.message}`}}});import di from"fs/promises";import br from"path";async function Ga(e,o,t=e,n=1){if(n>12)return[];let i=[],r;try{r=await di.readdir(e,{withFileTypes:!0})}catch{return[]}for(let l of r){let c=br.join(e,l.name),m=br.relative(t,c),d=m.split(br.sep).map(a=>a.toLowerCase());if(!o.some(a=>d.includes(a.toLowerCase())))if(l.isDirectory()){let a=await Ga(c,o,t,n+1);i=i.concat(a)}else l.isFile()&&i.push({fullPath:c,relativePath:m})}return i}var ui,Xa=re(()=>{Zt();ui=async e=>{let{keyword:o,file:t}=te(e);if(!o)return'ERROR: Missing "keyword" argument.';let n=["node_modules",".git","dist",".next",".gemini",".exe",".dll",".png",".jpg",".jpeg",".gif",".zip",".tgz"],i=150;try{let r=[],l=process.cwd();if(t){let a=br.resolve(l,t);try{(await di.stat(a)).isFile()&&r.push({fullPath:a,relativePath:br.relative(l,a)})}catch{return`ERROR: File not found: ${t}`}}else r=await Ga(l,n);let c=r.map(async a=>{try{let f=await di.readFile(a.fullPath,"utf-8");if(f.includes("\0"))return[];let p=f.split(/\r?\n/),h=[];for(let T=0;T<p.length;T++)if(p[T].includes(o)){let w=a.relativePath.replace(/\\/g,"/");h.push(`${w} \u2192 ${T+1}`)}return h}catch{return[]}}),d=(await Promise.all(c)).flat().slice(0,i);if(typeof global.gc=="function"&&global.gc(),d.length===0)return`Found 0 matches for keyword: "${o}"${t?` in file: ${t}`:". Try to specify files"}`;let u=`Found ${d.length} matches:
370
370
 
371
371
  `;return u+=d.join(`
372
- `),u}catch(r){return`ERROR: ${r.message}`}}});import Cr from"fs-extra";import di from"path";var zn,kr,Lc,Rn,ui=ie(()=>{to();vo();zn={mode:"Flux",thinkingLevel:"Medium",aiProvider:"Google",activeModel:"gemma-4-31b-it",showFullThinking:!0,apiTier:"Free",quotas:{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0},systemSettings:{memory:!0,compression:0,autoExec:!1,allowExternalAccess:!1,autoDeleteHistory:"7d",useExternalData:!1,externalDataPath:""},profileData:{name:null,nickname:null,instructions:null},imageSettings:{keyType:"Default",quality:"Low-High",apiKey:""}},kr=async()=>{let e={...zn};try{if(await Cr.exists(Zt)){let o=Kr(Zt);if(o.imageSettings&&o.imageSettings.apiKey)try{let t=o.imageSettings.apiKey,{saveSecret:n}=await Promise.resolve().then(()=>(Sr(),Zr));await n("POLLINATIONS_API_KEY",t),o.imageSettings.apiKey="",qr(Zt,o)}catch{}e={...zn,...o,quotas:{...zn.quotas,...o.quotas},systemSettings:{...zn.systemSettings,...o.systemSettings},profileData:{...zn.profileData,...o.profileData},imageSettings:{...zn.imageSettings,...o.imageSettings}}}}catch(o){console.error("Failed to load settings:",o)}try{let{getSecret:o}=await Promise.resolve().then(()=>(Sr(),Zr)),t=await o("POLLINATIONS_API_KEY");t&&(e.imageSettings.apiKey=t)}catch{}if(e.showFullThinking===!1){e.showFullThinking=!0;try{qr(Zt,e)}catch{}}return e},Lc=async e=>{let{FLUXFLOW_DIR:o}=await Promise.resolve().then(()=>(to(),sa)),t=["logs","secret"];for(let n of t){let i=di.join(o,n),r=di.join(e,n);try{await Cr.exists(i)&&(await Cr.ensureDir(r),await Cr.copy(i,r,{overwrite:!0}))}catch(l){console.error(`Migration failed for ${n}:`,l)}}},Rn=async e=>{try{let o=await kr();if(!o.systemSettings.useExternalData&&e.systemSettings?.useExternalData&&e.systemSettings?.externalDataPath&&await Lc(e.systemSettings.externalDataPath),e.imageSettings&&e.imageSettings.apiKey!==void 0){let{saveSecret:n,removeSecret:i}=await Promise.resolve().then(()=>(Sr(),Zr)),r=e.imageSettings.apiKey;r?await n("POLLINATIONS_API_KEY",r):await i("POLLINATIONS_API_KEY")}let t={...o,...e};return t.imageSettings&&(t.imageSettings={...t.imageSettings,apiKey:""}),await Cr.ensureDir(di.dirname(Zt)),qr(Zt,t),!0}catch(o){return console.error("Failed to save settings:",o),!1}}});var Ha,ja=ie(()=>{Ha="pk_oH8wkUdQaQK1cmst"});import Ga from"fs-extra";import mi from"path";var Dc,fi,Xa=ie(()=>{Qt();ui();ns();ja();sn();Dc=(e,o={})=>{try{if(e.length<8||e[0]!==137||e[1]!==80||e[2]!==78||e[3]!==71)return e;let t=[],n=[];for(let l=0;l<256;l++){let c=l;for(let m=0;m<8;m++)c&1?c=3988292384^c>>>1:c=c>>>1;n[l]=c}let i=l=>{let c=4294967295;for(let m=0;m<l.length;m++)c=n[(c^l[m])&255]^c>>>8;return(c^4294967295)>>>0},r=(l,c)=>{let m=Buffer.from(l,"ascii"),d=Buffer.from(c,"utf-8"),u=m.length+1+d.length,a=Buffer.alloc(8+u+4);a.writeUInt32BE(u,0),a.write("tEXt",4,"ascii"),m.copy(a,8),a[8+m.length]=0,d.copy(a,8+m.length+1);let f=i(a.subarray(4,8+u));return a.writeUInt32BE(f,8+u),a};for(let[l,c]of Object.entries(o))c!=null&&t.push(r(l,String(c)));if(t.length===0)return e;if(e.subarray(12,16).toString("ascii")==="IHDR"){let c=e.subarray(0,33),m=e.subarray(33);return Buffer.concat([c,...t,m])}return e}catch{return e}},fi=async(e,o={})=>{let t=oe(e),n=t.prompt||t.text,i=t.path||t.outputPath||t.output||"generated_image.png",r=t.ratio;if(!n)return'ERROR: Missing "prompt" argument for generate_image.';let l=["nsfw","naked","nudity","nude","porn","sex","xxx","erotic","gore","bloody","violence","abuse","suicide","murder","hentai","pedophile","rape"],c=n.toLowerCase();if(l.some(d=>c.includes(d)))return"ERROR: Prompt blocked by system safety filter (inappropriate or unsafe content detected).";try{let d=await kr();if(!await Ca(d))return`ERROR: Insufficient Quota for selected quality. Either tell user reduce quality or wait for next refresh cycle (${(await os()).nextResetMin||60}m).`;let a=d.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""},f=a.keyType==="Custom"&&a.apiKey?a.apiKey:Ha,h={Low:"flux","Low-High":"zimage",Medium:"gptimage","Medium-High":"gptimage",High:"qwen-image",Ultra:"gptimage-large",Premium:"nanobanana-pro"}[a.quality]||"zimage",T=1024,w=1024;if(r){let G=r.replace(/\s+/g,"");G==="16:9"?(T=1024,w=576):G==="9:16"?(T=576,w=1024):G==="4:3"?(T=1024,w=768):G==="3:4"?(T=768,w=1024):G==="1:1"&&(T=1024,w=1024)}let E=Math.floor(Math.random()*1e7),D=`https://gen.pollinations.ai/image/${encodeURIComponent(n)}?model=${h}&width=${T}&height=${w}&seed=${E}&enhance=true&reasoning=high&quality=high&negative=${encodeURIComponent("deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, disconnected limbs, mutation, mutated hands and fingers, blurry, low quality, low resolution, extra fingers, censored, watermarks, signatures")}`,_=await fetch(D,{method:"GET",headers:{Authorization:`Bearer ${f}`}});if(!_.ok){let G=_.status,Pe="";try{Pe=await _.text()}catch{}return G===402||Pe.includes("Insufficient balance")||Pe.includes("PAYMENT_REQUIRED")?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed with status [${G}]: ${Pe||"Unknown API Error"}`}if((_.headers.get("content-type")||"").includes("application/json")){let G=await _.json();return G.status===402||G.error&&G.error.code==="PAYMENT_REQUIRED"?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed: ${G.error?.message||JSON.stringify(G)}`}let F=await _.arrayBuffer(),I=Buffer.from(F),A={Title:n,Description:"Generated via FluxFlow CLI",Software:"FluxFlow CLI",Author:"FluxFlow","Creation Time":new Date().toISOString(),Prompt:n,Model:`Fluxflow:${h}`,Ratio:r||"1:1",Seed:String(E)};I=Dc(I,A);let v=mi.resolve(process.cwd(),i);await Ga.ensureDir(mi.dirname(v)),await Et.recordFileChange(v),await Ga.writeFile(v,I),await ka(d);let J=mi.extname(i).toLowerCase(),le={".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".webp":"image/webp"}[J]||"image/png";return o.isMultiModal!==!1?{text:`SUCCESS: Image successfully generated from prompt [${n}] and saved to [${i}]. Output attached to multimodal part`,binaryPart:{inlineData:{data:I.toString("base64"),mimeType:le}}}:`SUCCESS: Image successfully generated from prompt [${n}] and saved to [${i}].`}catch(d){return`ERROR: Failed during image generation: ${d.message}`}}});var Ir,Ka=ie(()=>{vo();to();Ir=async(e,o={})=>{let t=r=>{let l=new RegExp(`${r}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),c=e.match(l);return c?c[2].trim():null},n=t("id"),i=t("summary");if(!n||!i)return"ERROR: Missing 'id' or 'summary' for saveSummary tool.";try{let r=we(uo,{}),l=we(_o,{});return l[n]=i,delete r[n],ke(_o,l),ke(uo,r),`SUCCESS: Saved summary and purged raw memories for chat [${n}].`}catch(r){return`ERROR: Failed to save summary for chat [${n}]: ${r.message}`}}});var Jn,qa=ie(()=>{vo();to();Jn=async(e,o={})=>{let n=(i=>{let r=new RegExp(`${i}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),l=e.match(r);return l?l[2].trim():null})("id");if(!n)return"ERROR: Missing 'id' parameter for addMemScore tool.";try{let i=we(Ft,[]),r=!1,l=[];for(let u of i)u.score===void 0&&(u.score=.5),u.id===n?(u.score=Math.min(2,u.score+.2),r=!0):(u.score*=.98,u.score<.05&&(u.score=0)),u.score=Math.round(u.score*1e5)/1e5,u.score>0&&l.push(u);if(ke(Ft,l),!r)return`WARNING: Memory ID [${n}] not found. Other memories decayed by -0.01.`;let c=l.find(u=>u.id===n),m=c?c.score.toFixed(2):"deleted (score <= 0)",d=i.length-l.length;return`SUCCESS: Adjusted memory scores. Target [${n}] is now ${m}.${d>0?` Purged ${d} decayed memories.`:""}`}catch(i){return`ERROR: Failed to adjust memory score for [${n}]: ${i.message}`}}});var vc,is,Va=ie(async()=>{Ia();Ma();Oa();Aa();Da();$a();Pa();await xr();Ba();_a();Na();Ra();Ya();Xa();Ka();qa();vc={web_search:Vs,web_scrape:zs,memory:Js,chat:Qs,view_file:Zs,write_file:ei,update_file:oi,exec_command:Ls,read_folder:ni,write_pdf:si,write_docx:ai,search_keyword:ci,generate_image:fi,saveSummary:Ir,addMemScore:Jn,ask:ri,Ask:ri,WebSearch:Vs,WebScrape:zs,ReadFile:Zs,ReadFolder:ni,WriteFile:ei,PatchFile:oi,WritePDF:si,WriteDoc:ai,Run:Ls,SearchKeyword:ci,Memory:Js,Chat:Qs,GenerateImage:fi,saveSumary:Ir,SaveSummary:Ir,SaveSumary:Ir,add_mem_score:Jn,AddMemScore:Jn,addMemoryScore:Jn,AddMemoryScore:Jn},is=async(e,o,t={})=>{if(t.mode&&t.mode.toLowerCase()==="flow"){let i=e.toLowerCase();if(!(i.startsWith("web")||i.startsWith("ask")))return`ERROR: Tool [${e}] is restricted in Flow mode.`}let n=vc[e];if(!n)return`ERROR: Tool [${e}] not found in registry.`;try{return await n(o,t)}catch(i){return`ERROR: Execution failed for [${e}]: ${i.message}`}}});import{WebSocket as as}from"ws";var ao,Qn,$c,pi,Zn,za,hi,Ja,ls,Ro,cs,Mr,Qa,gi,Za,xi=ie(()=>{ao=null,Qn=!1,$c="ws://localhost:56832",pi=[],Zn=null,za="2.0.0",hi=e=>{za=e,Ja()},Ja=()=>{if(ao||Qn)return;Qn=!0;let e=new as($c);e.on("open",()=>{for(ao=e,Qn=!1,ao.send(JSON.stringify({command:"version",version:za,pid:process.pid,ppid:process.ppid}));pi.length>0;)ao.send(JSON.stringify(pi.shift()))}),e.on("message",o=>{try{let t=JSON.parse(o.toString());t.command==="contextResponse"&&Zn&&(Zn(t.data),Zn=null)}catch{}}),e.on("error",()=>{Qn=!1,ao=null}),e.on("close",()=>{Qn=!1,ao=null})},ls=e=>{ao&&ao.readyState===as.OPEN?ao.send(JSON.stringify(e)):(pi.push(e),Qn||Ja())},Ro=()=>ao!==null&&ao.readyState===as.OPEN,cs=e=>{ls({command:"status",status:e})},Mr=()=>new Promise(e=>{if(!ao||ao.readyState!==as.OPEN){e({cursor_line:0,selected:0,manual_edits:"",file_focused:"none",opened_editors:[]});return}Zn=e,ao.send(JSON.stringify({command:"requestContext"})),setTimeout(()=>{Zn===e&&(e({cursor_line:0,selected:0,manual_edits:"",file_focused:"none",opened_editors:[]}),Zn=null)},1e3)}),Qa=e=>{ls({command:"open",filePath:e})},gi=(e,o,t)=>{ls({command:"showDiff",filePath:e,originalContent:o,modifiedContent:t})},Za=(e,o)=>{ls({command:"closeDiff",filePath:e,result:o})}});import{GoogleGenAI as Pc,ThinkingLevel as Wo,HarmBlockThreshold as bn,HarmCategory as Cn}from"@google/genai";import Ie from"path";import Bt from"fs";var tr,er,Fc,yi,Bc,ol,Ti,Si,nl,el,_c,rl,Nc,sl,Uc,tl,Ei,Or,wi,Rc,il,al=ie(async()=>{await fa();Er();ns();await Va();vo();Qt();hn();$n();to();sn();xi();tr=null,er=!1,Fc=["google/gemma-4-31b-it:free","moonshotai/kimi-k2.6:free","google/gemini-3.5-flash","qwen/qwen3.7-plus","minimax/minimax-m3","anthropic/claude-sonnet-4.5","anthropic/claude-opus-4.6","anthropic/claude-opus-4.8","openai/gpt-5.2-codex","openai/gpt-5.2-pro","openai/gpt-5.5-pro","moonshotai/kimi-k2.6","gemma-4-31b-it","gemini-2.5-flash","gemini-3-flash-preview","gemini-3.5-flash","gemini-3.1-flash-lite","gemini-3.1-pro-preview"],yi=e=>{if(!e)return!1;let o=e.toLowerCase();return o.startsWith("gemini-")||o.startsWith("gemma-")?!0:Fc.some(t=>t.toLowerCase()===o)},Bc=e=>typeof e!="string"?e:e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),ol=async(e,o,t=5,n=1e3)=>{for(let i=0;i<t;i++){try{let r=await fetch(e,o);if(r.ok||r.status!==429&&r.status<500)return r}catch(r){if(i===t-1)throw r}await new Promise(r=>setTimeout(r,n*Math.pow(2,i)))}return fetch(e,o)},Ti=async function*(e,o,t,n,i,r,l){let c=[];n&&c.push({role:"system",content:n});for(let E of t){let k=E.role==="user"?"user":"assistant",D=[];if(Array.isArray(E.parts)){for(let _ of E.parts)if(_.text)D.push({type:"text",text:_.text});else if(_.inlineData&&l){let K=_.inlineData.mimeType,F=_.inlineData.data;K.startsWith("image/")&&D.push({type:"image_url",image_url:{url:`data:${K};base64,${F}`}})}}else{let _=E.text||"";_&&D.push({type:"text",text:_})}c.push({role:k,content:D.length===1&&D[0].type==="text"?D[0].text:D})}let m={model:o,messages:c,stream:!0,stream_options:{include_usage:!0},temperature:r==="Flux"?1:1.4};if(i!=="Fast"){let E={Low:"high",Medium:"high",High:"high",xHigh:"max"};m.reasoning_effort=E[i]||"high",m.extra_body={thinking:{type:"enabled"}}}else m.extra_body={thinking:{type:"disabled"}};let d=await ol("https://api.deepseek.com/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(m)});if(!d.ok){let E=await d.json().catch(()=>({}));throw new Error(`DeepSeek Error (${d.status}): ${E.error?.message||d.statusText}`)}let u=d.body.getReader(),a=new TextDecoder,f="",p=[],h=null,T=Date.now(),w=!1;for(;;){let{done:E,value:k}=await u.read();if(E){w&&(p.length>0||h)&&(yield{candidates:p.length>0?[{content:{parts:p}}]:[],usageMetadata:h});break}f+=a.decode(k,{stream:!0});let D=f.split(`
373
- `);f=D.pop();for(let _ of D){let K=_.trim();if(!(!K||!K.startsWith("data: "))){if(K==="data: [DONE]")break;try{let F=JSON.parse(K.substring(6)),I=F.choices?.[0]?.delta,A=F.usage;if(A&&(h={totalTokenCount:A.total_tokens||A.prompt_tokens+A.completion_tokens,promptTokenCount:A.prompt_tokens||0,candidatesTokenCount:A.completion_tokens||0,cachedContentTokenCount:A.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:A.completion_tokens_details?.reasoning_tokens||0},w=!0),I){let v=I.reasoning_content||null;v&&(p.push({text:v,thought:!0}),w=!0),I.content&&(p.push({text:I.content}),w=!0)}}catch{}}}Date.now()-T>=150&&w&&(yield{candidates:p.length>0?[{content:{parts:[...p]}}]:[],usageMetadata:h},p=[],T=Date.now(),w=!1)}},Si=async function*(e,o,t,n,i,r,l){let c=[];n&&c.push({role:"system",content:n});for(let D of t){let _=D.role==="user"?"user":"assistant",K=[];if(Array.isArray(D.parts)){for(let F of D.parts)if(F.text)K.push({type:"text",text:F.text});else if(F.inlineData&&l){let I=F.inlineData.mimeType,A=F.inlineData.data;I.startsWith("image/")?K.push({type:"image_url",image_url:{url:`data:${I};base64,${A}`}}):K.push({type:"file",file:{filename:F.filename||"file",file_data:`data:${I};base64,${A}`}})}}else{let F=D.text||"";F&&K.push({type:"text",text:F})}c.push({role:_,content:K.length===1&&K[0].type==="text"?K[0].text:K})}let m={Low:"low",Medium:"medium",High:"high",xHigh:"high"},d={model:o,messages:c,stream:!0,temperature:r==="Flux"?1:1.4},u=m[i];u&&i!=="Fast"&&(d.reasoning_effort=u);let a=await ol("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Title":"FluxFlow CLI","X-Cache":"true"},body:JSON.stringify(d)});if(!a.ok){let D=await a.json().catch(()=>({}));throw new Error(`OpenRouter Error (${a.status}): ${D.error?.message||a.statusText}`)}let f=a.body.getReader(),p=new TextDecoder,h="",T=[],w=null,E=Date.now(),k=!1;for(;;){let{done:D,value:_}=await f.read();if(D){k&&(T.length>0||w)&&(yield{candidates:T.length>0?[{content:{parts:T}}]:[],usageMetadata:w});break}h+=p.decode(_,{stream:!0});let K=h.split(`
374
- `);h=K.pop();for(let F of K){let I=F.trim();if(!(!I||!I.startsWith("data: "))){if(I==="data: [DONE]")break;try{let A=JSON.parse(I.substring(6)),v=A.choices?.[0]?.delta,J=A.usage;if(J&&(w={totalTokenCount:J.total_tokens||J.prompt_tokens+J.completion_tokens,promptTokenCount:J.prompt_tokens||0,candidatesTokenCount:J.completion_tokens||0,cachedContentTokenCount:J.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:J.completion_tokens_details?.reasoning_tokens||0},k=!0),v){let q=v.reasoning||(v.reasoning_details?v.reasoning_details.map(le=>le.text).join(""):null);q&&(T.push({text:q,thought:!0}),k=!0),v.content&&(T.push({text:v.content}),k=!0)}}catch{}}}Date.now()-E>=150&&k&&(yield{candidates:T.length>0?[{content:{parts:[...T]}}]:[],usageMetadata:w},T=[],E=Date.now(),k=!1)}},nl=()=>{er=!0},el={write_file:"Writing",update_file:"Editing",read_folder:"Reading",view_file:"Reading",exec_command:"Executing Command",web_search:"Searching",web_scrape:"Reading",memory:"Updating Memory",search_keyword:"Searching",ask:"User Input",write_pdf:"Creating",write_docx:"Creating",generate_image:"Generating"},_c=(e,o)=>{try{let t=oe(o),n=t.path||t.targetFile||t.TargetFile||t.directory;return n?Ie.basename(n.replace(/["']/g,"").replace(/\\/g,"/")):null}catch{return null}},rl=async(e,o,t,n,i={})=>{process.stdout.isTTY&&(process.stdout.write("\x1B]0;Finalizing...\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=Finalizing...\x07"));let r=4*(1024*2),l=4*(1024*8),{onStatus:c,onMemoryUpdated:m,onBackgroundIncrement:d}=i,{profile:u,thinkingLevel:a,mode:f,janitorModel:p,chatId:h,systemSettings:T,sessionStats:w,aiProvider:E="Google",apiKey:k}=e,D=T?.memory!==!1,K=we(Ft,[]).map(pe=>`- [${pe.id}]: ${pe.memory}`).join(`
375
- `),F=n.slice(0,-1).filter(pe=>pe.text&&!pe.text.includes("[TOOL RESULT]")&&!pe.text.includes("OBSERVATION:")&&!pe.text.startsWith("[TERMINAL_RECORD]")&&!pe.isTerminalRecord&&!pe.isMeta&&!pe.isLogo&&!String(pe.id).startsWith("welcome")&&!String(pe.id).startsWith("logo")).slice(-14).map(pe=>{let ut=Bc(pe.text).replace(/\[tool:functions\..*?\]/g,"").replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").replace(/\[Prompted on:.*?\]/g,"").replace(/\[METADATA \(PRIORITY: DYNAMIC\)\] Time: ([^|\n]+)/g,(Je,fe)=>`[METADATA (PRIORITY: DYNAMIC)] Time: ${fe.replace(/:\d{2}/g,"")}`).replace(/\[turn: continue\]/g,"").replace(/\[turn: finish\]/g,"").replace(/\[TOOL RESULTS\]/g,"").replace(/\[tool results\]/g,"").replace(/\r?\n\r?\n/g,`
372
+ `),u}catch(r){return`ERROR: ${r.message}`}}});import Cr from"fs-extra";import mi from"path";var nr,kr,Pc,jn,fi=re(()=>{oo();vo();nr={mode:"Flux",thinkingLevel:"Medium",aiProvider:"Google",activeModel:"gemma-4-31b-it",showFullThinking:!0,apiTier:"Free",quotas:{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0},systemSettings:{memory:!0,compression:0,autoExec:!1,allowExternalAccess:!1,autoDeleteHistory:"7d",useExternalData:!1,externalDataPath:""},profileData:{name:null,nickname:null,instructions:null},imageSettings:{keyType:"Default",quality:"Low-High",apiKey:""}},kr=async()=>{let e={...nr};try{if(await Cr.exists(eo)){let o=zr(eo);if(o.imageSettings&&o.imageSettings.apiKey)try{let t=o.imageSettings.apiKey,{saveSecret:n}=await Promise.resolve().then(()=>(Sr(),os));await n("POLLINATIONS_API_KEY",t),o.imageSettings.apiKey="",Jr(eo,o)}catch{}e={...nr,...o,quotas:{...nr.quotas,...o.quotas},systemSettings:{...nr.systemSettings,...o.systemSettings},profileData:{...nr.profileData,...o.profileData},imageSettings:{...nr.imageSettings,...o.imageSettings}}}}catch(o){console.error("Failed to load settings:",o)}try{let{getSecret:o}=await Promise.resolve().then(()=>(Sr(),os)),t=await o("POLLINATIONS_API_KEY");t&&(e.imageSettings.apiKey=t)}catch{}if(e.showFullThinking===!1){e.showFullThinking=!0;try{Jr(eo,e)}catch{}}return e},Pc=async e=>{let{FLUXFLOW_DIR:o}=await Promise.resolve().then(()=>(oo(),ca)),t=["logs","secret"];for(let n of t){let i=mi.join(o,n),r=mi.join(e,n);try{await Cr.exists(i)&&(await Cr.ensureDir(r),await Cr.copy(i,r,{overwrite:!0}))}catch(l){console.error(`Migration failed for ${n}:`,l)}}},jn=async e=>{try{let o=await kr();if(!o.systemSettings.useExternalData&&e.systemSettings?.useExternalData&&e.systemSettings?.externalDataPath&&await Pc(e.systemSettings.externalDataPath),e.imageSettings&&e.imageSettings.apiKey!==void 0){let{saveSecret:n,removeSecret:i}=await Promise.resolve().then(()=>(Sr(),os)),r=e.imageSettings.apiKey;r?await n("POLLINATIONS_API_KEY",r):await i("POLLINATIONS_API_KEY")}let t={...o,...e};return t.imageSettings&&(t.imageSettings={...t.imageSettings,apiKey:""}),await Cr.ensureDir(mi.dirname(eo)),Jr(eo,t),!0}catch(o){return console.error("Failed to save settings:",o),!1}}});var Ka,qa=re(()=>{Ka="pk_oH8wkUdQaQK1cmst"});import Va from"fs-extra";import pi from"path";var Fc,hi,za=re(()=>{Zt();fi();is();qa();an();Fc=(e,o={})=>{try{if(e.length<8||e[0]!==137||e[1]!==80||e[2]!==78||e[3]!==71)return e;let t=[],n=[];for(let l=0;l<256;l++){let c=l;for(let m=0;m<8;m++)c&1?c=3988292384^c>>>1:c=c>>>1;n[l]=c}let i=l=>{let c=4294967295;for(let m=0;m<l.length;m++)c=n[(c^l[m])&255]^c>>>8;return(c^4294967295)>>>0},r=(l,c)=>{let m=Buffer.from(l,"ascii"),d=Buffer.from(c,"utf-8"),u=m.length+1+d.length,a=Buffer.alloc(8+u+4);a.writeUInt32BE(u,0),a.write("tEXt",4,"ascii"),m.copy(a,8),a[8+m.length]=0,d.copy(a,8+m.length+1);let f=i(a.subarray(4,8+u));return a.writeUInt32BE(f,8+u),a};for(let[l,c]of Object.entries(o))c!=null&&t.push(r(l,String(c)));if(t.length===0)return e;if(e.subarray(12,16).toString("ascii")==="IHDR"){let c=e.subarray(0,33),m=e.subarray(33);return Buffer.concat([c,...t,m])}return e}catch{return e}},hi=async(e,o={})=>{let t=te(e),n=t.prompt||t.text,i=t.path||t.outputPath||t.output||"generated_image.png",r=t.ratio;if(!n)return'ERROR: Missing "prompt" argument for generate_image.';let l=["nsfw","naked","nudity","nude","porn","sex","xxx","erotic","gore","bloody","violence","abuse","suicide","murder","hentai","pedophile","rape"],c=n.toLowerCase();if(l.some(d=>c.includes(d)))return"ERROR: Prompt blocked by system safety filter (inappropriate or unsafe content detected).";try{let d=await kr();if(!await Aa(d))return`ERROR: Insufficient Quota for selected quality. Either tell user reduce quality or wait for next refresh cycle (${(await ss()).nextResetMin||60}m).`;let a=d.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""},f=a.keyType==="Custom"&&a.apiKey?a.apiKey:Ka,h={Low:"flux","Low-High":"zimage",Medium:"gptimage","Medium-High":"gptimage",High:"qwen-image",Ultra:"gptimage-large",Premium:"nanobanana-pro"}[a.quality]||"zimage",T=1024,w=1024;if(r){let X=r.replace(/\s+/g,"");X==="16:9"?(T=1024,w=576):X==="9:16"?(T=576,w=1024):X==="4:3"?(T=1024,w=768):X==="3:4"?(T=768,w=1024):X==="1:1"&&(T=1024,w=1024)}let S=Math.floor(Math.random()*1e7),D=`https://gen.pollinations.ai/image/${encodeURIComponent(n)}?model=${h}&width=${T}&height=${w}&seed=${S}&enhance=true&reasoning=high&quality=high&negative=${encodeURIComponent("deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, disconnected limbs, mutation, mutated hands and fingers, blurry, low quality, low resolution, extra fingers, censored, watermarks, signatures")}`,U=await fetch(D,{method:"GET",headers:{Authorization:`Bearer ${f}`}});if(!U.ok){let X=U.status,$e="";try{$e=await U.text()}catch{}return X===402||$e.includes("Insufficient balance")||$e.includes("PAYMENT_REQUIRED")?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed with status [${X}]: ${$e||"Unknown API Error"}`}if((U.headers.get("content-type")||"").includes("application/json")){let X=await U.json();return X.status===402||X.error&&X.error.code==="PAYMENT_REQUIRED"?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed: ${X.error?.message||JSON.stringify(X)}`}let F=await U.arrayBuffer(),I=Buffer.from(F),L={Title:n,Description:"Generated via FluxFlow CLI",Software:"FluxFlow CLI",Author:"FluxFlow","Creation Time":new Date().toISOString(),Prompt:n,Model:`Fluxflow:${h}`,Ratio:r||"1:1",Seed:String(S)};I=Fc(I,L);let v=pi.resolve(process.cwd(),i);await Va.ensureDir(pi.dirname(v)),await bt.recordFileChange(v),await Va.writeFile(v,I),await Oa(d);let J=pi.extname(i).toLowerCase(),ae={".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".webp":"image/webp"}[J]||"image/png";return o.isMultiModal!==!1?{text:`SUCCESS: Image successfully generated from prompt [${n}] and saved to [${i}]. Output attached to multimodal part`,binaryPart:{inlineData:{data:I.toString("base64"),mimeType:ae}}}:`SUCCESS: Image successfully generated from prompt [${n}] and saved to [${i}].`}catch(d){return`ERROR: Failed during image generation: ${d.message}`}}});var Ir,Ja=re(()=>{vo();oo();Ir=async(e,o={})=>{let t=r=>{let l=new RegExp(`${r}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),c=e.match(l);return c?c[2].trim():null},n=t("id"),i=t("summary");if(!n||!i)return"ERROR: Missing 'id' or 'summary' for saveSummary tool.";try{let r=ye(ho,{}),l=ye(Ro,{});return l[n]=i,delete r[n],ke(Ro,l),ke(ho,r),`SUCCESS: Saved summary and purged raw memories for chat [${n}].`}catch(r){return`ERROR: Failed to save summary for chat [${n}]: ${r.message}`}}});var rr,Qa=re(()=>{vo();oo();rr=async(e,o={})=>{let n=(i=>{let r=new RegExp(`${i}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),l=e.match(r);return l?l[2].trim():null})("id");if(!n)return"ERROR: Missing 'id' parameter for addMemScore tool.";try{let i=ye(Ft,[]),r=!1,l=[];for(let u of i)u.score===void 0&&(u.score=.5),u.id===n?(u.score=Math.min(2,u.score+.2),r=!0):(u.score*=.98,u.score<.05&&(u.score=0)),u.score=Math.round(u.score*1e5)/1e5,u.score>0&&l.push(u);if(ke(Ft,l),!r)return`WARNING: Memory ID [${n}] not found. Other memories decayed by -0.01.`;let c=l.find(u=>u.id===n),m=c?c.score.toFixed(2):"deleted (score <= 0)",d=i.length-l.length;return`SUCCESS: Adjusted memory scores. Target [${n}] is now ${m}.${d>0?` Purged ${d} decayed memories.`:""}`}catch(i){return`ERROR: Failed to adjust memory score for [${n}]: ${i.message}`}}});var Bc,cs,Za=re(async()=>{La();Da();va();$a();Fa();_a();Na();await xr();Ra();Wa();Ya();ja();Xa();za();Ja();Qa();Bc={web_search:Js,web_scrape:Qs,memory:Zs,chat:ei,view_file:ti,write_file:oi,update_file:ri,exec_command:vs,read_folder:si,write_pdf:ai,write_docx:ci,search_keyword:ui,generate_image:hi,saveSummary:Ir,addMemScore:rr,ask:ii,Ask:ii,WebSearch:Js,WebScrape:Qs,ReadFile:ti,ReadFolder:si,WriteFile:oi,PatchFile:ri,WritePDF:ai,WriteDoc:ci,Run:vs,SearchKeyword:ui,Memory:Zs,Chat:ei,GenerateImage:hi,saveSumary:Ir,SaveSummary:Ir,SaveSumary:Ir,add_mem_score:rr,AddMemScore:rr,addMemoryScore:rr,AddMemoryScore:rr},cs=async(e,o,t={})=>{if(t.mode&&t.mode.toLowerCase()==="flow"){let i=e.toLowerCase();if(!(i.startsWith("web")||i.startsWith("ask")))return`ERROR: Tool [${e}] is restricted in Flow mode.`}let n=Bc[e];if(!n)return`ERROR: Tool [${e}] not found in registry.`;try{return await n(o,t)}catch(i){return`ERROR: Execution failed for [${e}]: ${i.message}`}}});import{WebSocket as ds}from"ws";var lo,sr,_c,gi,ir,xi,el,yi,wi,tl,us,Ho,ms,Mr,ol,Ti,nl,Si=re(()=>{lo=null,sr=!1,_c="ws://localhost:56832",gi=[],ir=null,xi=null,el="2.0.0",yi=e=>{el=e,tl()},wi=e=>{xi=e},tl=()=>{if(lo||sr)return;sr=!0;let e=new ds(_c);e.on("open",()=>{for(lo=e,sr=!1,lo.send(JSON.stringify({command:"version",version:el,pid:process.pid,ppid:process.ppid}));gi.length>0;)lo.send(JSON.stringify(gi.shift()))}),e.on("message",o=>{try{let t=JSON.parse(o.toString());t.command==="contextResponse"&&ir?(ir(t.data),ir=null):t.command==="securityResponse"&&xi&&xi(t.result)}catch{}}),e.on("error",()=>{sr=!1,lo=null}),e.on("close",()=>{sr=!1,lo=null})},us=e=>{lo&&lo.readyState===ds.OPEN?lo.send(JSON.stringify(e)):(gi.push(e),sr||tl())},Ho=()=>lo!==null&&lo.readyState===ds.OPEN,ms=e=>{us({command:"status",status:e})},Mr=()=>new Promise(e=>{if(!lo||lo.readyState!==ds.OPEN){e({cursor_line:0,selected:0,manual_edits:"",file_focused:"none",opened_editors:[]});return}ir=e,lo.send(JSON.stringify({command:"requestContext"})),setTimeout(()=>{ir===e&&(e({cursor_line:0,selected:0,manual_edits:"",file_focused:"none",opened_editors:[]}),ir=null)},1e3)}),ol=e=>{us({command:"open",filePath:e})},Ti=(e,o,t)=>{us({command:"showDiff",filePath:e,originalContent:o,modifiedContent:t})},nl=(e,o)=>{us({command:"closeDiff",filePath:e,result:o})}});import{GoogleGenAI as Nc,ThinkingLevel as jo,HarmBlockThreshold as Mn,HarmCategory as An}from"@google/genai";import Ie from"path";import Bt from"fs";var lr,bi,ar,Uc,Ei,Rc,il,ki,Ii,al,rl,Wc,ll,Yc,cl,Hc,sl,Mi,Ar,Ci,jc,dl,ul=re(async()=>{await xa();Er();is();await Za();vo();Zt();wn();_n();oo();an();Si();lr=null,bi={},ar=!1,Uc=["google/gemma-4-31b-it:free","moonshotai/kimi-k2.6:free","google/gemini-3.5-flash","qwen/qwen3.7-plus","minimax/minimax-m3","anthropic/claude-sonnet-4.5","anthropic/claude-opus-4.6","anthropic/claude-opus-4.8","openai/gpt-5.2-codex","openai/gpt-5.2-pro","openai/gpt-5.5-pro","moonshotai/kimi-k2.6","gemma-4-31b-it","gemini-2.5-flash","gemini-3-flash-preview","gemini-3.5-flash","gemini-3.1-flash-lite","gemini-3.1-pro-preview"],Ei=e=>{if(!e)return!1;let o=e.toLowerCase();return o.startsWith("gemini-")||o.startsWith("gemma-")?!0:Uc.some(t=>t.toLowerCase()===o)},Rc=e=>typeof e!="string"?e:e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),il=async(e,o,t=5,n=1e3)=>{for(let i=0;i<t;i++){try{let r=await fetch(e,o);if(r.ok||r.status!==429&&r.status<500)return r}catch(r){if(i===t-1)throw r}await new Promise(r=>setTimeout(r,n*Math.pow(2,i)))}return fetch(e,o)},ki=async function*(e,o,t,n,i,r,l){let c=[];n&&c.push({role:"system",content:n});for(let S of t){let k=S.role==="user"?"user":"assistant",D=[];if(Array.isArray(S.parts)){for(let U of S.parts)if(U.text)D.push({type:"text",text:U.text});else if(U.inlineData&&l){let K=U.inlineData.mimeType,F=U.inlineData.data;K.startsWith("image/")&&D.push({type:"image_url",image_url:{url:`data:${K};base64,${F}`}})}}else{let U=S.text||"";U&&D.push({type:"text",text:U})}c.push({role:k,content:D.length===1&&D[0].type==="text"?D[0].text:D})}let m={model:o,messages:c,stream:!0,stream_options:{include_usage:!0},temperature:r==="Flux"?1:1.4};if(i!=="Fast"){let S={Low:"high",Medium:"high",High:"high",xHigh:"max"};m.reasoning_effort=S[i]||"high",m.extra_body={thinking:{type:"enabled"}}}else m.extra_body={thinking:{type:"disabled"}};let d=await il("https://api.deepseek.com/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(m)});if(!d.ok){let S=await d.json().catch(()=>({}));throw new Error(`DeepSeek Error (${d.status}): ${S.error?.message||d.statusText}`)}let u=d.body.getReader(),a=new TextDecoder,f="",p=[],h=null,T=Date.now(),w=!1;for(;;){let{done:S,value:k}=await u.read();if(S){w&&(p.length>0||h)&&(yield{candidates:p.length>0?[{content:{parts:p}}]:[],usageMetadata:h});break}f+=a.decode(k,{stream:!0});let D=f.split(`
373
+ `);f=D.pop();for(let U of D){let K=U.trim();if(!(!K||!K.startsWith("data: "))){if(K==="data: [DONE]")break;try{let F=JSON.parse(K.substring(6)),I=F.choices?.[0]?.delta,L=F.usage;if(L&&(h={totalTokenCount:L.total_tokens||L.prompt_tokens+L.completion_tokens,promptTokenCount:L.prompt_tokens||0,candidatesTokenCount:L.completion_tokens||0,cachedContentTokenCount:L.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:L.completion_tokens_details?.reasoning_tokens||0},w=!0),I){let v=I.reasoning_content||null;v&&(p.push({text:v,thought:!0}),w=!0),I.content&&(p.push({text:I.content}),w=!0)}}catch{}}}Date.now()-T>=150&&w&&(yield{candidates:p.length>0?[{content:{parts:[...p]}}]:[],usageMetadata:h},p=[],T=Date.now(),w=!1)}},Ii=async function*(e,o,t,n,i,r,l){let c=[];n&&c.push({role:"system",content:n});for(let D of t){let U=D.role==="user"?"user":"assistant",K=[];if(Array.isArray(D.parts)){for(let F of D.parts)if(F.text)K.push({type:"text",text:F.text});else if(F.inlineData&&l){let I=F.inlineData.mimeType,L=F.inlineData.data;I.startsWith("image/")?K.push({type:"image_url",image_url:{url:`data:${I};base64,${L}`}}):K.push({type:"file",file:{filename:F.filename||"file",file_data:`data:${I};base64,${L}`}})}}else{let F=D.text||"";F&&K.push({type:"text",text:F})}c.push({role:U,content:K.length===1&&K[0].type==="text"?K[0].text:K})}let m={Low:"low",Medium:"medium",High:"high",xHigh:"high"},d={model:o,messages:c,stream:!0,temperature:r==="Flux"?1:1.4},u=m[i];u&&i!=="Fast"&&(d.reasoning_effort=u);let a=await il("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Title":"FluxFlow CLI","X-Cache":"true"},body:JSON.stringify(d)});if(!a.ok){let D=await a.json().catch(()=>({}));throw new Error(`OpenRouter Error (${a.status}): ${D.error?.message||a.statusText}`)}let f=a.body.getReader(),p=new TextDecoder,h="",T=[],w=null,S=Date.now(),k=!1;for(;;){let{done:D,value:U}=await f.read();if(D){k&&(T.length>0||w)&&(yield{candidates:T.length>0?[{content:{parts:T}}]:[],usageMetadata:w});break}h+=p.decode(U,{stream:!0});let K=h.split(`
374
+ `);h=K.pop();for(let F of K){let I=F.trim();if(!(!I||!I.startsWith("data: "))){if(I==="data: [DONE]")break;try{let L=JSON.parse(I.substring(6)),v=L.choices?.[0]?.delta,J=L.usage;if(J&&(w={totalTokenCount:J.total_tokens||J.prompt_tokens+J.completion_tokens,promptTokenCount:J.prompt_tokens||0,candidatesTokenCount:J.completion_tokens||0,cachedContentTokenCount:J.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:J.completion_tokens_details?.reasoning_tokens||0},k=!0),v){let q=v.reasoning||(v.reasoning_details?v.reasoning_details.map(ae=>ae.text).join(""):null);q&&(T.push({text:q,thought:!0}),k=!0),v.content&&(T.push({text:v.content}),k=!0)}}catch{}}}Date.now()-S>=150&&k&&(yield{candidates:T.length>0?[{content:{parts:[...T]}}]:[],usageMetadata:w},T=[],S=Date.now(),k=!1)}},al=()=>{ar=!0},rl={write_file:"Writing",update_file:"Editing",read_folder:"Reading",view_file:"Reading",exec_command:"Executing Command",web_search:"Searching",web_scrape:"Reading",memory:"Updating Memory",search_keyword:"Searching",ask:"User Input",write_pdf:"Creating",write_docx:"Creating",generate_image:"Generating"},Wc=(e,o)=>{try{let t=te(o),n=t.path||t.targetFile||t.TargetFile||t.directory;return n?Ie.basename(n.replace(/["']/g,"").replace(/\\/g,"/")):null}catch{return null}},ll=async(e,o,t,n,i={})=>{process.stdout.isTTY&&(process.stdout.write("\x1B]0;Finalizing...\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=Finalizing...\x07"));let r=4*(1024*2),l=4*(1024*8),{onStatus:c,onMemoryUpdated:m,onBackgroundIncrement:d}=i,{profile:u,thinkingLevel:a,mode:f,janitorModel:p,chatId:h,systemSettings:T,sessionStats:w,aiProvider:S="Google",apiKey:k}=e,D=T?.memory!==!1,K=ye(Ft,[]).map(pe=>`- [${pe.id}]: ${pe.memory}`).join(`
375
+ `),F=n.slice(0,-1).filter(pe=>pe.text&&!pe.text.includes("[TOOL RESULT]")&&!pe.text.includes("OBSERVATION:")&&!pe.text.startsWith("[TERMINAL_RECORD]")&&!pe.isTerminalRecord&&!pe.isMeta&&!pe.isLogo&&!String(pe.id).startsWith("welcome")&&!String(pe.id).startsWith("logo")).slice(-14).map(pe=>{let dt=Rc(pe.text).replace(/\[tool:functions\..*?\]/g,"").replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").replace(/\[Prompted on:.*?\]/g,"").replace(/\[METADATA \(PRIORITY: DYNAMIC\)\] Time: ([^|\n]+)/g,(ze,me)=>`[METADATA (PRIORITY: DYNAMIC)] Time: ${me.replace(/:\d{2}/g,"")}`).replace(/\[turn: continue\]/g,"").replace(/\[turn: finish\]/g,"").replace(/\[TOOL RESULTS\]/g,"").replace(/\[tool results\]/g,"").replace(/\r?\n\r?\n/g,`
376
376
  `).replace(/\n\n/g,`
377
- `).replace(/\\n\\n/g,"").trim(),Ve=pe.role==="user"?r:l,ze=ut.substring(0,Ve);ut.length>Ve&&(ze+=`
378
- ... (truncated) ...`);let _e=pe.role==="user"?ze.startsWith("[USER]")?"":"[USER]: ":ze.startsWith("[AGENT]")?"":"[AGENT]: ";return{role:pe.role==="user"?"user":"model",parts:[{text:`${_e}${ze}`}]}}),I=n.filter(pe=>pe.role==="user").length===1,A=o.includes("[TITLE-UPDATE]"),v=Math.random()<.8,J=I||A||v,q=t.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").trim(),le=ma(K,D,J),U=`${q.replace(/\[tool:functions\..*?\]/g,"").replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").replace(/\[Prompted on:.*?\]/g,"").replace(/\[turn: continue\]/g,"").replace(/\[turn: finish\]/g,"").replace(/\[TOOL RESULTS\]/g,"").replace(/\[tool results\]/g,"").substring(0,l)}`;U.length>l&&(U+=`
379
- ... (truncated) ...`);let G=o.replace(/\[Prompted on:.*?\]/g,"").trim();U=U.replace(/\r?\n\r?\n/g,`
377
+ `).replace(/\\n\\n/g,"").trim(),qe=pe.role==="user"?r:l,Ve=dt.substring(0,qe);dt.length>qe&&(Ve+=`
378
+ ... (truncated) ...`);let Fe=pe.role==="user"?Ve.startsWith("[USER]")?"":"[USER]: ":Ve.startsWith("[AGENT]")?"":"[AGENT]: ";return{role:pe.role==="user"?"user":"model",parts:[{text:`${Fe}${Ve}`}]}}),I=n.filter(pe=>pe.role==="user").length===1,L=o.includes("[TITLE-UPDATE]"),v=Math.random()<.8,J=I||L||v,q=t.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").trim(),ae=ga(K,D,J),W=`${q.replace(/\[tool:functions\..*?\]/g,"").replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").replace(/\[Prompted on:.*?\]/g,"").replace(/\[turn: continue\]/g,"").replace(/\[turn: finish\]/g,"").replace(/\[TOOL RESULTS\]/g,"").replace(/\[tool results\]/g,"").substring(0,l)}`;W.length>l&&(W+=`
379
+ ... (truncated) ...`);let X=o.replace(/\[Prompted on:.*?\]/g,"").trim();W=W.replace(/\r?\n\r?\n/g,`
380
380
  `).replace(/\n\n/g,`
381
- `).replace(/\\n\\n/g,"").trim();let Pe=`[USER]: ${G.substring(0,r)}
382
- ${G.length>r?`... (truncated) ...
381
+ `).replace(/\\n\\n/g,"").trim();let $e=`[USER]: ${X.substring(0,r)}
382
+ ${X.length>r?`... (truncated) ...
383
383
 
384
384
  `:""}
385
- [AGENT (current turn)]: ${U}`;F.push({role:"user",parts:[{text:Pe}]});let ce="",De=0,nt=D?12:-1;for(;De<=nt;){process.stdout.isTTY&&(process.stdout.write(`\x1B]0;Retrying Finalizing... (${De+1})...\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=Retrying Finalizing... (${De+1})...\x07`));try{if(!await Ks("background",e))return;let pe="",ut=null;try{let _e=new Promise((no,ve)=>setTimeout(()=>ve(new Error("JANITOR_TIMEOUT")),6e4)),Je=(async()=>{if(E==="OpenRouter"){let yt=Si(k,"google/gemma-4-26b-a4b-it:free",F,le,"Fast",f)[Symbol.asyncIterator](),Xo=await yt.next();return{iterator:yt,firstResult:Xo}}else if(E==="DeepSeek"){let ve=Ti(k,"deepseek-chat",F,le,"Fast",f,!1)[Symbol.asyncIterator](),yt=await ve.next();return{iterator:ve,firstResult:yt}}else{let ve=(await tr.models.generateContentStream({model:p||"gemma-4-26b-a4b-it",contents:F,config:{systemInstruction:le,maxOutputTokens:512,temperature:.3,safetySettings:[{category:Cn.HARM_CATEGORY_HARASSMENT,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_HATE_SPEECH,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_SEXUALLY_EXPLICIT,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_DANGEROUS_CONTENT,threshold:bn.BLOCK_NONE}],thinkingConfig:{includeThoughts:!1,thinkingLevel:Wo.MINIMAL}}}))[Symbol.asyncIterator](),yt=await ve.next();return{iterator:ve,firstResult:yt}}})(),{iterator:fe,firstResult:po}=await Promise.race([Je,_e]),{value:ho,done:dn}=po;if(!dn&&ho){let no=ho.candidates?.[0]?.content?.parts,ve=no?.[1]?.text||no?.[0]?.text||(typeof ho.text=="function"?ho.text():"");ve&&(pe+=ve),ut=ho.usageMetadata;for await(let yt of{[Symbol.asyncIterator]:()=>fe}){let Xo=yt.candidates?.[0]?.content?.parts,Ko=Xo?.[1]?.text||Xo?.[0]?.text||(typeof yt.text=="function"?yt.text():"");Ko&&(pe+=Ko),ut=yt.usageMetadata}}}catch(_e){throw _e}if(pe)ce=pe,ut&&await fo("tokens",ut.totalTokenCount||0);else throw new Error("No synthesis generated by Janitor.");d&&(d(),await Nn("background"));let Ve=Ei(ce),ze=!1;for(let _e of Ve){let Je=_e.toolName;["addMemScore","add_mem_score","AddMemScore","addMemoryScore","AddMemoryScore"].includes(Je)&&(ze=!0);let fe={chatId:h,sessionId:h,history:n},po=await is(Je,_e.args,fe);Je.toLowerCase()==="memory"&&(_e.args.includes("action='user'")||_e.args.includes('action="user"'))&&!po.startsWith("ERROR")&&(m&&m(),process.stdout.isTTY&&(process.stdout.write("\x1B]0;Memory Updated\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=Memory Updated\x07")),await new Promise(dn=>setTimeout(dn,3e3)))}if(!ze)try{let _e=we(Ft,[]);if(_e.length>0){let Je=[];for(let fe of _e)fe.score===void 0&&(fe.score=.5),fe.score*=.9995,fe.score<.05&&(fe.score=0),fe.score=Math.round(fe.score*1e5)/1e5,fe.score>0&&Je.push(fe);ke(Ft,Je)}}catch{}break}catch(pe){De++;let ut=new Date().toLocaleString();process.stdout.isTTY&&process.stdout.write("\x1B]0;Finalizing Error\x07"),await new Promise(_e=>setTimeout(_e,1e3));let Ve=Ie.join(Co,"janitor");if(Bt.existsSync(Ve)||Bt.mkdirSync(Ve,{recursive:!0}),Bt.appendFileSync(Ie.join(Ve,"error.log"),`ERROR [Attempt ${De}/${nt+1}] [${ut}]: ${String(pe)}
385
+ [AGENT (current turn)]: ${W}`;F.push({role:"user",parts:[{text:$e}]});let le="",Ae=0,nt=D?12:-1;for(;Ae<=nt;){process.stdout.isTTY&&(process.stdout.write(`\x1B]0;Retrying Finalizing... (${Ae+1})...\x07`),process.stdout.write(`\x1B]633;P;TerminalTitle=Retrying Finalizing... (${Ae+1})...\x07`));try{if(!await Vs("background",e))return;let pe="",dt=null;try{let Fe=new Promise((ro,Oe)=>setTimeout(()=>Oe(new Error("JANITOR_TIMEOUT")),6e4)),ze=(async()=>{if(S==="OpenRouter"){let xt=Ii(k,"google/gemma-4-26b-a4b-it:free",F,ae,"Fast",f)[Symbol.asyncIterator](),Vo=await xt.next();return{iterator:xt,firstResult:Vo}}else if(S==="DeepSeek"){let Oe=ki(k,"deepseek-chat",F,ae,"Fast",f,!1)[Symbol.asyncIterator](),xt=await Oe.next();return{iterator:Oe,firstResult:xt}}else{let Oe=(await lr.models.generateContentStream({model:p||"gemma-4-26b-a4b-it",contents:F,config:{systemInstruction:ae,maxOutputTokens:512,temperature:.3,safetySettings:[{category:An.HARM_CATEGORY_HARASSMENT,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_HATE_SPEECH,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_SEXUALLY_EXPLICIT,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_DANGEROUS_CONTENT,threshold:Mn.BLOCK_NONE}],thinkingConfig:{includeThoughts:!1,thinkingLevel:jo.MINIMAL}}}))[Symbol.asyncIterator](),xt=await Oe.next();return{iterator:Oe,firstResult:xt}}})(),{iterator:me,firstResult:yo}=await Promise.race([ze,Fe]),{value:wo,done:un}=yo;if(!un&&wo){let ro=wo.candidates?.[0]?.content?.parts,Oe=ro?.[1]?.text||ro?.[0]?.text||(typeof wo.text=="function"?wo.text():"");Oe&&(pe+=Oe),dt=wo.usageMetadata;for await(let xt of{[Symbol.asyncIterator]:()=>me}){let Vo=xt.candidates?.[0]?.content?.parts,zo=Vo?.[1]?.text||Vo?.[0]?.text||(typeof xt.text=="function"?xt.text():"");zo&&(pe+=zo),dt=xt.usageMetadata}}}catch(Fe){throw Fe}if(pe)le=pe,dt&&await xo("tokens",dt.totalTokenCount||0);else throw new Error("No synthesis generated by Janitor.");d&&(d(),await Yn("background"));let qe=Mi(le),Ve=!1;for(let Fe of qe){let ze=Fe.toolName;["addMemScore","add_mem_score","AddMemScore","addMemoryScore","AddMemoryScore"].includes(ze)&&(Ve=!0);let me={chatId:h,sessionId:h,history:n},yo=await cs(ze,Fe.args,me);ze.toLowerCase()==="memory"&&(Fe.args.includes("action='user'")||Fe.args.includes('action="user"'))&&!yo.startsWith("ERROR")&&(m&&m(),process.stdout.isTTY&&(process.stdout.write("\x1B]0;Memory Updated\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=Memory Updated\x07")),await new Promise(un=>setTimeout(un,3e3)))}if(!Ve)try{let Fe=ye(Ft,[]);if(Fe.length>0){let ze=[];for(let me of Fe)me.score===void 0&&(me.score=.5),me.score*=.9995,me.score<.05&&(me.score=0),me.score=Math.round(me.score*1e5)/1e5,me.score>0&&ze.push(me);ke(Ft,ze)}}catch{}break}catch(pe){Ae++;let dt=new Date().toLocaleString();process.stdout.isTTY&&process.stdout.write("\x1B]0;Finalizing Error\x07"),await new Promise(Fe=>setTimeout(Fe,1e3));let qe=Ie.join(Io,"janitor");if(Bt.existsSync(qe)||Bt.mkdirSync(qe,{recursive:!0}),Bt.appendFileSync(Ie.join(qe,"error.log"),`ERROR [Attempt ${Ae}/${nt+1}] [${dt}]: ${String(pe)}
386
386
 
387
- `),De>nt)break;let ze=Math.min(1e3*Math.pow(2,De-1),8e3);await new Promise(_e=>setTimeout(_e,ze))}}if(De){let pe=Ie.join(Co,"janitor");Bt.appendFileSync(Ie.join(pe,"error.log"),`-----------------------------------------------------------------------------
387
+ `),Ae>nt)break;let Ve=Math.min(1e3*Math.pow(2,Ae-1),8e3);await new Promise(Fe=>setTimeout(Fe,Ve))}}if(Ae){let pe=Ie.join(Io,"janitor");Bt.appendFileSync(Ie.join(pe,"error.log"),`-----------------------------------------------------------------------------
388
388
 
389
389
 
390
- `),De>=nt&&(process.stdout.isTTY&&process.stdout.write(`\x1B]0;${D?"Finalizing Error":"Finalizing Skipped"}\x07`),await new Promise(ut=>setTimeout(ut,3e3)))}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07"))},Nc=e=>{let o=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,t;for(;(t=o.exec(e))!==null;){let n=t.index+t[0].length-1,i=0,r=null,l=!1,c=!1;for(let m=n;m<e.length;m++){let d=e[m];if(!r&&(d==='"'||d==="'"||d==="`")?(r=d,l=!1):r&&d===r&&!l&&(r=null),!r&&(d==="("?i++:d===")"&&i--,i===0)){let u=m+1;for(;u<e.length&&/\s/.test(e[u]);)u++;if(u<e.length&&e[u]==="]"){c=!0,o.lastIndex=u+1;break}}d==="\\"?l=!l:l=!1}if(!c)return{inside:!0,toolName:t[1],startIndex:t.index,args:e.substring(t.index+t[0].length)}}return{inside:!1}},sl=(e,o=!0)=>{let t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n="",i=0,r;for(;(r=t.exec(e))!==null;){let l=e.substring(i,r.index);n+=o?l.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\]|$)/gi,""):l;let c=r.index+r[0].length-1,m=0,d=null,u=-1;for(let a=c;a<e.length;a++){let f=e[a];if(d){if(f===d){let p=0;for(let h=a-1;h>=0&&e[h]==="\\";h--)p++;p%2===0&&(d=null)}}else if(f==='"'||f==="'"||f==="`")d=f;else if(f==="(")m++;else if(f===")"&&(m--,m===0)){let p=a+1;for(;p<e.length&&/\s/.test(e[p]);)p++;if(p<e.length&&e[p]==="]"){u=p;break}}}if(u!==-1)n+="[tool:functions."+r[1]+"()]",i=u+1,t.lastIndex=i;else{n+="[tool:functions."+r[1]+"(",i=e.length;break}}return i<e.length&&(n+=o?e.substring(i).replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\]|$)/gi,""):e.substring(i)),n},Uc=(e,o,t)=>{let n=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,i="",r=0,l;for(;(l=n.exec(e))!==null;){let c=e.substring(r,l.index);i+=c.replace(o,t);let m=l.index+l[0].length-1,d=0,u=null,a=-1;for(let f=m;f<e.length;f++){let p=e[f];if(u){if(p===u){let h=0;for(let T=f-1;T>=0&&e[T]==="\\";T--)h++;h%2===0&&(u=null)}}else if(p==='"'||p==="'"||p==="`")u=p;else if(p==="(")d++;else if(p===")"&&(d--,d===0)){let h=f+1;for(;h<e.length&&/\s/.test(e[h]);)h++;if(h<e.length&&e[h]==="]"){a=h;break}}}if(a!==-1)i+=e.substring(l.index,a+1),r=a+1,n.lastIndex=r;else{i+=e.substring(l.index),r=e.length;break}}return r<e.length&&(i+=e.substring(r).replace(o,t)),i},tl=e=>sl(e,!0),Ei=e=>{let o=[],t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n;for(;(n=t.exec(e))!==null;){let i=n[1],r=n.index+n[0].length-1,l=0,c=null,m=-1,d=-1;for(let u=r;u<e.length;u++){let a=e[u];if(c){if(a===c){let f=0;for(let p=u-1;p>=0&&e[p]==="\\";p--)f++;f%2===0&&(c=null)}}else if(a==='"'||a==="'"||a==="`")c=a;else if(a==="(")l++;else if(a===")"&&(l--,l===0)){d=u;let f=u+1;for(;f<e.length&&/\s/.test(e[f]);)f++;if(f<e.length&&e[f]==="]"){m=f;break}}}if(m!==-1){let u=e.substring(r+1,d),a=e.substring(n.index,m+1);o.push({fullMatch:a,toolName:i.trim(),args:u.trim()}),t.lastIndex=m+1}}return o},Or=e=>e?(tr=new Pc({apiKey:e}),tr):null,wi=async(e,o,t,n,i="Fast")=>{let{aiProvider:r="Google",apiKey:l,mode:c}=e,m="",d=null,u;r==="OpenRouter"?u=Si(l,o,t,n,i,c,!1):r==="DeepSeek"?u=Ti(l,o,t,n,i,c,!1):u=await tr.models.generateContentStream({model:o,contents:t,config:{systemInstruction:n,maxOutputTokens:2048,temperature:.3,thinkingConfig:{includeThoughts:!1,thinkingLevel:Wo.MINIMAL}}});for await(let a of u){if(a.candidates?.[0]?.content?.parts)for(let f of a.candidates[0].content.parts)f.text&&!f.thought&&(m+=f.text);a.usageMetadata&&(d=a.usageMetadata)}return{text:m,usageMetadata:d}},Rc=async(e,o)=>{try{let{aiProvider:t="Google"}=o,n=we(uo,{});if(Object.values(n).flat().length<=2)return;let r=Object.keys(n).filter(f=>f!==e&&Array.isArray(n[f])&&n[f].length>2);if(r.length===0)return;let l=`You are a silent background process for the FluxFlow CLI Agent.
390
+ `),Ae>=nt&&(process.stdout.isTTY&&process.stdout.write(`\x1B]0;${D?"Finalizing Error":"Finalizing Skipped"}\x07`),await new Promise(dt=>setTimeout(dt,3e3)))}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07"))},Yc=e=>{let o=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,t;for(;(t=o.exec(e))!==null;){let n=t.index+t[0].length-1,i=0,r=null,l=!1,c=!1;for(let m=n;m<e.length;m++){let d=e[m];if(!r&&(d==='"'||d==="'"||d==="`")?(r=d,l=!1):r&&d===r&&!l&&(r=null),!r&&(d==="("?i++:d===")"&&i--,i===0)){let u=m+1;for(;u<e.length&&/\s/.test(e[u]);)u++;if(u<e.length&&e[u]==="]"){c=!0,o.lastIndex=u+1;break}}d==="\\"?l=!l:l=!1}if(!c)return{inside:!0,toolName:t[1],startIndex:t.index,args:e.substring(t.index+t[0].length)}}return{inside:!1}},cl=(e,o=!0)=>{let t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n="",i=0,r;for(;(r=t.exec(e))!==null;){let l=e.substring(i,r.index);n+=o?l.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\]|$)/gi,""):l;let c=r.index+r[0].length-1,m=0,d=null,u=-1;for(let a=c;a<e.length;a++){let f=e[a];if(d){if(f===d){let p=0;for(let h=a-1;h>=0&&e[h]==="\\";h--)p++;p%2===0&&(d=null)}}else if(f==='"'||f==="'"||f==="`")d=f;else if(f==="(")m++;else if(f===")"&&(m--,m===0)){let p=a+1;for(;p<e.length&&/\s/.test(e[p]);)p++;if(p<e.length&&e[p]==="]"){u=p;break}}}if(u!==-1)n+="[tool:functions."+r[1]+"()]",i=u+1,t.lastIndex=i;else{n+="[tool:functions."+r[1]+"(",i=e.length;break}}return i<e.length&&(n+=o?e.substring(i).replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\]|$)/gi,""):e.substring(i)),n},Hc=(e,o,t)=>{let n=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,i="",r=0,l;for(;(l=n.exec(e))!==null;){let c=e.substring(r,l.index);i+=c.replace(o,t);let m=l.index+l[0].length-1,d=0,u=null,a=-1;for(let f=m;f<e.length;f++){let p=e[f];if(u){if(p===u){let h=0;for(let T=f-1;T>=0&&e[T]==="\\";T--)h++;h%2===0&&(u=null)}}else if(p==='"'||p==="'"||p==="`")u=p;else if(p==="(")d++;else if(p===")"&&(d--,d===0)){let h=f+1;for(;h<e.length&&/\s/.test(e[h]);)h++;if(h<e.length&&e[h]==="]"){a=h;break}}}if(a!==-1)i+=e.substring(l.index,a+1),r=a+1,n.lastIndex=r;else{i+=e.substring(l.index),r=e.length;break}}return r<e.length&&(i+=e.substring(r).replace(o,t)),i},sl=e=>cl(e,!0),Mi=e=>{let o=[],t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n;for(;(n=t.exec(e))!==null;){let i=n[1],r=n.index+n[0].length-1,l=0,c=null,m=-1,d=-1;for(let u=r;u<e.length;u++){let a=e[u];if(c){if(a===c){let f=0;for(let p=u-1;p>=0&&e[p]==="\\";p--)f++;f%2===0&&(c=null)}}else if(a==='"'||a==="'"||a==="`")c=a;else if(a==="(")l++;else if(a===")"&&(l--,l===0)){d=u;let f=u+1;for(;f<e.length&&/\s/.test(e[f]);)f++;if(f<e.length&&e[f]==="]"){m=f;break}}}if(m!==-1){let u=e.substring(r+1,d),a=e.substring(n.index,m+1);o.push({fullMatch:a,toolName:i.trim(),args:u.trim()}),t.lastIndex=m+1}}return o},Ar=(e,o={})=>e?(bi=o,lr=new Nc({apiKey:e}),lr):null,Ci=async(e,o,t,n,i="Fast")=>{let{aiProvider:r="Google",apiKey:l,mode:c}=e,m="",d=null,u;r==="OpenRouter"?u=Ii(l,o,t,n,i,c,!1):r==="DeepSeek"?u=ki(l,o,t,n,i,c,!1):u=await lr.models.generateContentStream({model:o,contents:t,config:{systemInstruction:n,maxOutputTokens:2048,temperature:.3,thinkingConfig:{includeThoughts:!1,thinkingLevel:jo.MINIMAL}}});for await(let a of u){if(a.candidates?.[0]?.content?.parts)for(let f of a.candidates[0].content.parts)f.text&&!f.thought&&(m+=f.text);a.usageMetadata&&(d=a.usageMetadata)}return{text:m,usageMetadata:d}},jc=async(e,o)=>{try{let{aiProvider:t="Google"}=o,n=ye(ho,{});if(Object.values(n).flat().length<=2)return;let r=Object.keys(n).filter(f=>f!==e&&Array.isArray(n[f])&&n[f].length>2);if(r.length===0)return;let l=`You are a silent background process for the FluxFlow CLI Agent.
391
391
  Your task is to summarize or merge temporary context memories from one or more past conversation sessions.
392
392
  For each Chat ID provided, you must output a tool call to save the consolidated summary.
393
393
 
@@ -402,7 +402,7 @@ Guidelines:
402
402
 
403
403
  Chats to process:
404
404
 
405
- `,c=we(_o,{});for(let f of r){let h=n[f].map(w=>`- ${w}`).join(`
405
+ `,c=ye(Ro,{});for(let f of r){let h=n[f].map(w=>`- ${w}`).join(`
406
406
  `),T=c[f];l+=`[Chat ID: ${f}]
407
407
  `,T?(l+=`- Existing Summary: "${T}"
408
408
  `,l+=`-- New Memories to integrate:
@@ -411,147 +411,147 @@ ${h}
411
411
  `):l+=`-- Individual Memories:
412
412
  ${h}
413
413
 
414
- `}let m=0,d=5,u=!1,a="gemma-4-26b-a4b-it";for(t==="OpenRouter"&&(a="google/gemma-4-26b-a4b-it:free"),t==="DeepSeek"&&(a="deepseek-v4-flash");m<=d&&!u;){m++;try{let f=await wi(o,a,l,null,"Fast"),p=f.text||"",h=Ei(p);if(h.length===0)throw new Error("No tool calls detected in synthesis response");for(let T of h){let w=T.toolName;["saveSummary","saveSumary","SaveSummary","SaveSumary"].includes(w)&&await is(w,T.args,{chatId:e})}f.usageMetadata&&await fo("tokens",f.usageMetadata.totalTokenCount||0),u=!0}catch(f){if(m>=d)throw new Error(`Failed after ${d} attempts. Last error: ${f.message}`)}}}catch(t){let n=Ie.join(Co,"janitor");Bt.existsSync(n)||Bt.mkdirSync(n,{recursive:!0}),Bt.appendFileSync(Ie.join(n,"error.log"),`[${new Date().toLocaleString()}] Past memory batch consolidation error: ${t.message}
415
- `)}},il=async function*(e,o,t,n,i){let{profile:r,thinkingLevel:l,mode:c,janitorModel:m,chatId:d,systemSettings:u,sessionStats:a,aiProvider:f="Google",apiTier:p}=t,h=yi(e);if(!tr&&f==="Google")throw new Error("AI not initialized");let T=u?.memory!==!1,w=o[o.length-1].text,E=Ie.join(eo,"chat-summaries.json"),k=!1,D=o.filter(I=>I.role==="user").length===1,_=w.includes("[TITLE-UPDATE]"),K=D||_,F=w.replace(/\[TITLE-UPDATE\]/g,"").trim();F=F.replace(/\s*\[Prompted on:.*?\]/g,"").trim(),await Et.startTransaction(d,F);try{let I=[...o.slice(0,-1)],A=252e3,v=254e3;if((f==="DeepSeek"||f==="Google"&&p==="Paid")&&(A=396e3,v=4e5),u?.compression===0&&(a?.tokens||0)>A){yield{type:"status_history",content:"Context Limit Reached. Condensing session history..."};let Q=wt=>wt.filter(ft=>(ft.role==="user"||ft.role==="agent"||ft.role==="system")&&!String(ft.id).startsWith("welcome")&&!ft.isMeta).map(ft=>`[${ft.text?.startsWith("[TOOL RESULT]")?"TOOL":ft.role==="agent"?"AGENT":"USER"}]: ${ft.text}`).join(`
414
+ `}let m=0,d=5,u=!1,a="gemma-4-26b-a4b-it";for(t==="OpenRouter"&&(a="google/gemma-4-26b-a4b-it:free"),t==="DeepSeek"&&(a="deepseek-v4-flash");m<=d&&!u;){m++;try{let f=await Ci(o,a,l,null,"Fast"),p=f.text||"",h=Mi(p);if(h.length===0)throw new Error("No tool calls detected in synthesis response");for(let T of h){let w=T.toolName;["saveSummary","saveSumary","SaveSummary","SaveSumary"].includes(w)&&await cs(w,T.args,{chatId:e})}f.usageMetadata&&await xo("tokens",f.usageMetadata.totalTokenCount||0),u=!0}catch(f){if(m>=d)throw new Error(`Failed after ${d} attempts. Last error: ${f.message}`)}}}catch(t){let n=Ie.join(Io,"janitor");Bt.existsSync(n)||Bt.mkdirSync(n,{recursive:!0}),Bt.appendFileSync(Ie.join(n,"error.log"),`[${new Date().toLocaleString()}] Past memory batch consolidation error: ${t.message}
415
+ `)}},dl=async function*(e,o,t,n,i){let{profile:r,thinkingLevel:l,mode:c,janitorModel:m,chatId:d,systemSettings:u,sessionStats:a,aiProvider:f="Google",apiTier:p}=t,h=Ei(e);if(!lr&&f==="Google")throw new Error("AI not initialized");let T=u?.memory!==!1,w=o[o.length-1].text,S=Ie.join(to,"chat-summaries.json"),k=!1,D=o.filter(I=>I.role==="user").length===1,U=w.includes("[TITLE-UPDATE]"),K=D||U,F=w.replace(/\[TITLE-UPDATE\]/g,"").trim();F=F.replace(/\s*\[Prompted on:.*?\]/g,"").trim(),await bt.startTransaction(d,F);try{let I=[...o.slice(0,-1)],L=252e3,v=254e3;if((f==="DeepSeek"||f==="Google"&&p==="Paid")&&(L=396e3,v=4e5),u?.compression===0&&(a?.tokens||0)>L){yield{type:"status_history",content:"Context Limit Reached. Condensing session history..."};let Z=yt=>yt.filter(mt=>(mt.role==="user"||mt.role==="agent"||mt.role==="system")&&!String(mt.id).startsWith("welcome")&&!mt.isMeta).map(mt=>`[${mt.text?.startsWith("[TOOL RESULT]")?"TOOL":mt.role==="agent"?"AGENT":"USER"}]: ${mt.text}`).join(`
416
416
 
417
- `),Me=async(wt,ft)=>{let je="You are an expert context condenser. Summarize the provided chat history (which may include previous summaries, user instructions, agent outputs, and tool results) into a detailed, coherent, and highly technical summary of 1000 to 1500 words. Focus on preserving the architectural decisions made, current system state, task progress, and critical code details. Under no circumstances exceed MAX 2000 words.",de=ft?`Here is the previous summary:
418
- ${ft}
417
+ `),Me=async(yt,mt)=>{let Ne="You are an expert context condenser. Summarize the provided chat history (which may include previous summaries, user instructions, agent outputs, and tool results) into a detailed, coherent, and highly technical summary of 1000 to 1500 words. Focus on preserving the architectural decisions made, current system state, task progress, and critical code details. Under no circumstances exceed MAX 2000 words.",ce=mt?`Here is the previous summary:
418
+ ${mt}
419
419
 
420
420
  Here is the new conversation history:
421
- ${wt}
421
+ ${yt}
422
422
 
423
423
  Provide a new consolidated summary of the entire session.`:`Here is the conversation history:
424
- ${wt}
425
-
426
- Provide a consolidated summary of the entire session.`,Nt="gemma-4-26b-a4b-it";f==="OpenRouter"&&(Nt="google/gemma-4-26b-a4b-it:free"),f==="DeepSeek"&&(Nt="deepseek-v4-flash");let it=0,co=!1,pt=null;for(;it<=3&&!co;){it++;try{pt=await wi(t,Nt,de,je,"Fast"),co=!0}catch{if(it>3){if(f==="Google")try{return(await wi(t,"gemini-3.1-flash-lite",de,je,"Fast")).text||""}catch{return""}return""}}}return pt&&pt.text||""},rt=Q(I),ne=we(E,{}),xe=ne[d]||{summary:"",historyLength:0};typeof xe=="string"&&(xe={summary:xe,historyLength:0});let he=I.filter(wt=>(wt.role==="user"||wt.role==="agent"||wt.role==="system")&&!String(wt.id).startsWith("welcome")&&!wt.isMeta).length;xe.historyLength&&he<xe.historyLength&&(xe.summary="",xe.historyLength=0,ne[d]=xe,ke(E,ne));let st=xe.summary||"",Po=await Me(rt,st);Po&&(xe.summary=Po,ne[d]=xe,ke(E,ne),I=[],k=!0)}D&&T&&(yield{type:"status",content:"Condensing past chat memories..."},await Rc(d,t));let J=we(uo,{}),q=we(_o,{}),le=Object.entries(J).filter(([Q])=>Q!==d).flatMap(([Q,Me])=>Me),G=[...Object.entries(q).filter(([Q])=>Q!==d).slice(-20).map(([Q,Me])=>`[Chat Summary]: ${Me}`),...le].map(Q=>`- ${Q}`).join(`
427
- `),ce=we(Ft,[]).map(Q=>`- ${Q.memory}`).join(`
428
- `),De=(a?.tokens||0)>=24e3,nt=da(G,ce,T,De),pe=new Date().toLocaleString([],{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}),ut=[".git","node_modules",".gemini","dist","build",".next","out",".cache","bin","obj","vendor","venv",".idea",".gradle",".terraform","target","coverage",".vscode",".svn",".hg",".fslckout",".github",".gitlab",".circleci",".gitea",".gitee",".lerna",".changeset",".nx",".npm",".yarn",".pnpm-store",".expo",".nuxt",".svelte-kit",".docusaurus",".turbo",".vercel","bower_components",".netlify",".vuepress",".quasar",".output",".angular","jspm_packages",".parcel-cache",".rollup.cache",".rspack",".vitepress","__pycache__",".pytest_cache",".mypy_cache",".tox",".poetry","env","vhdl",".ipynb_checkpoints",".jupyter",".conda",".pdm-build",".bundle",".yardoc",".metadata","App_Data","ClientBin",".cargo",".rustc_info",".go","Godeps","_vendor",".rake_tasks","CMakefiles",".wakatime",".dart_tool",".fvm",".cocoapods","Pods",".pub-cache",".symlinks","DerivedData",".xcworkspace",".serverless",".aws",".gcloud",".azure",".kube",".vagrant",".docker","postgres-data","redis-data","mongo-data",".Spotlight-V100",".Trashes","$RECYCLE.BIN","System Volume Information",".DocumentRevisions-V100",".fseventsd","AppData","Application Data","Local","LocalLow","Roaming","$WinREAgent","$WINDOWS.~BT","$WINDOWS.~WS","scw","System32","SysWOW64",".AppleDouble",".AppleDB",".AppleDesktop","_CodeSignature",".cmio",".LSOverride",".localized",".TemporaryItems",".Trash",".Trash-0",".Trash-1000",".gvfs",".local",".config",".dbus",".fontconfig",".snap",".var",".lost+found","lost+found",".thumb",".thumbnails","EFI","boot","grub","logs","log",".nyc_output",".sonar",".ruff_cache"],Ve=Q=>{try{return Bt.readdirSync(Q,{withFileTypes:!0})}catch{return[]}},ze=(Q,Me={value:0},rt=1)=>{if(Me.value>6200||rt>7)return Me.value;let ne=Ve(Q);for(let xe of ne){if(Me.value>6200)break;ut.includes(xe.name)||xe.isDirectory()&&(Me.value++,ze(Ie.join(Q,xe.name),Me,rt+1))}return Me.value},_e=(Q,Me,rt="",ne=1)=>{let xe=Ve(Q),he=Ie.sep;if(xe.length>100)return`${rt}\u2514\u2500\u2500 ${Ie.basename(Q)}${he} ...100+ files...
429
- `;let st="",Po=ut,wt=xe.filter(de=>!Po.includes(de.name)),ft=xe.filter(de=>Po.includes(de.name)).map(de=>de.name).sort();wt.sort((de,Nt)=>de.isDirectory()&&!Nt.isDirectory()?-1:!de.isDirectory()&&Nt.isDirectory()?1:de.name.localeCompare(Nt.name));let je=[...wt.map(de=>({name:de.name,isDir:de.isDirectory()})),...ft.map(de=>({name:de,isDir:!0,isCollapsed:!0}))];return je.forEach((de,Nt)=>{let it=Nt===je.length-1,co=Ie.join(Q,de.name),pt=it?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",un=rt+(it?" ":"\u2502 ");if(de.isCollapsed){st+=`${rt}${pt}${de.name}${he}...
430
- `;return}de.isDir?ne>Me?st+=`${rt}${pt}${de.name}${he} ...depth exceeded...
431
- `:Ve(co).length>80?st+=`${rt}${pt}${de.name}${he} ...80+ files...
432
- `:(st+=`${rt}${pt}${de.name}${he}
433
- `,st+=_e(co,Me,un,ne+1)):st+=`${rt}${pt}${de.name}
434
- `}),st};yield{type:"status",content:"Gathering Context..."},await new Promise(Q=>setTimeout(Q,500));let Je=ze(process.cwd()),fe=12;Je>4096?fe=1:Je>3072?fe=2:Je>2048?fe=3:Je>1024?fe=4:Je>512?fe=6:Je>256?fe=7:Je>128?fe=8:Je>64?fe=9:Je>32&&(fe=10);let po=we(zr,{}),ho=po[d],dn=ho?ho!==process.cwd():!1;po[d]=process.cwd(),ke(zr,po);let no=we(E,{}),ve=no[d]||{summary:"",historyLength:0};typeof ve=="string"&&(ve={summary:ve,historyLength:0});let yt=o.filter(Q=>(Q.role==="user"||Q.role==="agent"||Q.role==="system")&&!String(Q.id).startsWith("welcome")&&!Q.isMeta).length;ve.historyLength&&yt<ve.historyLength&&(ve.summary="",ve.historyLength=0,no[d]=ve,ke(E,no));let Xo=typeof ve=="object"?ve.summary||"":ve||"",Ko=Xo?`
424
+ ${yt}
425
+
426
+ Provide a consolidated summary of the entire session.`,Nt="gemma-4-26b-a4b-it";f==="OpenRouter"&&(Nt="google/gemma-4-26b-a4b-it:free"),f==="DeepSeek"&&(Nt="deepseek-v4-flash");let it=0,uo=!1,ft=null;for(;it<=3&&!uo;){it++;try{ft=await Ci(t,Nt,ce,Ne,"Fast"),uo=!0}catch{if(it>3){if(f==="Google")try{return(await Ci(t,"gemini-3.1-flash-lite",ce,Ne,"Fast")).text||""}catch{return""}return""}}}return ft&&ft.text||""},rt=Z(I),oe=ye(S,{}),ge=oe[d]||{summary:"",historyLength:0};typeof ge=="string"&&(ge={summary:ge,historyLength:0});let he=I.filter(yt=>(yt.role==="user"||yt.role==="agent"||yt.role==="system")&&!String(yt.id).startsWith("welcome")&&!yt.isMeta).length;ge.historyLength&&he<ge.historyLength&&(ge.summary="",ge.historyLength=0,oe[d]=ge,ke(S,oe));let st=ge.summary||"",Po=await Me(rt,st);Po&&(ge.summary=Po,oe[d]=ge,ke(S,oe),I=[],k=!0)}D&&T&&(yield{type:"status",content:"Condensing past chat memories..."},await jc(d,t));let J=ye(ho,{}),q=ye(Ro,{}),ae=Object.entries(J).filter(([Z])=>Z!==d).flatMap(([Z,Me])=>Me),X=[...Object.entries(q).filter(([Z])=>Z!==d).slice(-20).map(([Z,Me])=>`[Chat Summary]: ${Me}`),...ae].map(Z=>`- ${Z}`).join(`
427
+ `),le=ye(Ft,[]).map(Z=>`- ${Z.memory}`).join(`
428
+ `),Ae=(a?.tokens||0)>=24e3,nt=pa(X,le,T,Ae),pe=new Date().toLocaleString([],{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}),dt=[".git","node_modules",".gemini","dist","build",".next","out",".cache","bin","obj","vendor","venv",".idea",".gradle",".terraform","target","coverage",".vscode",".svn",".hg",".fslckout",".github",".gitlab",".circleci",".gitea",".gitee",".lerna",".changeset",".nx",".npm",".yarn",".pnpm-store",".expo",".nuxt",".svelte-kit",".docusaurus",".turbo",".vercel","bower_components",".netlify",".vuepress",".quasar",".output",".angular","jspm_packages",".parcel-cache",".rollup.cache",".rspack",".vitepress","__pycache__",".pytest_cache",".mypy_cache",".tox",".poetry","env","vhdl",".ipynb_checkpoints",".jupyter",".conda",".pdm-build",".bundle",".yardoc",".metadata","App_Data","ClientBin",".cargo",".rustc_info",".go","Godeps","_vendor",".rake_tasks","CMakefiles",".wakatime",".dart_tool",".fvm",".cocoapods","Pods",".pub-cache",".symlinks","DerivedData",".xcworkspace",".serverless",".aws",".gcloud",".azure",".kube",".vagrant",".docker","postgres-data","redis-data","mongo-data",".Spotlight-V100",".Trashes","$RECYCLE.BIN","System Volume Information",".DocumentRevisions-V100",".fseventsd","AppData","Application Data","Local","LocalLow","Roaming","$WinREAgent","$WINDOWS.~BT","$WINDOWS.~WS","scw","System32","SysWOW64",".AppleDouble",".AppleDB",".AppleDesktop","_CodeSignature",".cmio",".LSOverride",".localized",".TemporaryItems",".Trash",".Trash-0",".Trash-1000",".gvfs",".local",".config",".dbus",".fontconfig",".snap",".var",".lost+found","lost+found",".thumb",".thumbnails","EFI","boot","grub","logs","log",".nyc_output",".sonar",".ruff_cache"],qe=Z=>{try{return Bt.readdirSync(Z,{withFileTypes:!0})}catch{return[]}},Ve=(Z,Me={value:0},rt=1)=>{if(Me.value>6200||rt>7)return Me.value;let oe=qe(Z);for(let ge of oe){if(Me.value>6200)break;dt.includes(ge.name)||ge.isDirectory()&&(Me.value++,Ve(Ie.join(Z,ge.name),Me,rt+1))}return Me.value},Fe=(Z,Me,rt="",oe=1)=>{let ge=qe(Z),he=Ie.sep;if(ge.length>100)return`${rt}\u2514\u2500\u2500 ${Ie.basename(Z)}${he} ...100+ files...
429
+ `;let st="",Po=dt,yt=ge.filter(ce=>!Po.includes(ce.name)),mt=ge.filter(ce=>Po.includes(ce.name)).map(ce=>ce.name).sort();yt.sort((ce,Nt)=>ce.isDirectory()&&!Nt.isDirectory()?-1:!ce.isDirectory()&&Nt.isDirectory()?1:ce.name.localeCompare(Nt.name));let Ne=[...yt.map(ce=>({name:ce.name,isDir:ce.isDirectory()})),...mt.map(ce=>({name:ce,isDir:!0,isCollapsed:!0}))];return Ne.forEach((ce,Nt)=>{let it=Nt===Ne.length-1,uo=Ie.join(Z,ce.name),ft=it?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",mn=rt+(it?" ":"\u2502 ");if(ce.isCollapsed){st+=`${rt}${ft}${ce.name}${he}...
430
+ `;return}ce.isDir?oe>Me?st+=`${rt}${ft}${ce.name}${he} ...depth exceeded...
431
+ `:qe(uo).length>80?st+=`${rt}${ft}${ce.name}${he} ...80+ files...
432
+ `:(st+=`${rt}${ft}${ce.name}${he}
433
+ `,st+=Fe(uo,Me,mn,oe+1)):st+=`${rt}${ft}${ce.name}
434
+ `}),st};yield{type:"status",content:"Gathering Context..."},await new Promise(Z=>setTimeout(Z,500));let ze=Ve(process.cwd()),me=12;ze>4096?me=1:ze>3072?me=2:ze>2048?me=3:ze>1024?me=4:ze>512?me=6:ze>256?me=7:ze>128?me=8:ze>64?me=9:ze>32&&(me=10);let yo=ye(Zr,{}),wo=yo[d],un=wo?wo!==process.cwd():!1;yo[d]=process.cwd(),ke(Zr,yo);let ro=ye(S,{}),Oe=ro[d]||{summary:"",historyLength:0};typeof Oe=="string"&&(Oe={summary:Oe,historyLength:0});let xt=o.filter(Z=>(Z.role==="user"||Z.role==="agent"||Z.role==="system")&&!String(Z.id).startsWith("welcome")&&!Z.isMeta).length;Oe.historyLength&&xt<Oe.historyLength&&(Oe.summary="",Oe.historyLength=0,ro[d]=Oe,ke(S,ro));let Vo=typeof Oe=="object"?Oe.summary||"":Oe||"",zo=Vo?`
435
435
  **CONTEXT SUMMARY OF PREVIOUS TURNS (PRIORITY: HIGH)**
436
- ${Xo}`:"",Ht=process.cwd()+`
437
- `+_e(process.cwd(),fe),Y=await Mr(),He="";if(Ro())if(He=`[IDE CONTEXT]
438
- `,Y.file_focused!=="none"){let Q=Ie.relative(process.cwd(),Y.file_focused),Me=(Y.opened_editors||[]).map(ne=>{let xe=Ie.relative(process.cwd(),ne);return xe.startsWith("..")?`[External] ${Ie.basename(ne)}`:xe});if(He+=`Focused File: ${Q}
436
+ ${Vo}`:"",Ht=process.cwd()+`
437
+ `+Fe(process.cwd(),me),Y=await Mr(),Ye="";if(Ho())if(Ye=`[IDE CONTEXT]
438
+ `,Y.file_focused!=="none"){let Z=Ie.relative(process.cwd(),Y.file_focused),Me=(Y.opened_editors||[]).map(oe=>{let ge=Ie.relative(process.cwd(),oe);return ge.startsWith("..")?`[External] ${Ie.basename(oe)}`:ge});if(Ye+=`Focused File: ${Z}
439
439
  Cursor Line: ${Y.cursor_line}
440
- `,Y.selected&&(He+=`Current Selection: "${Y.selected}"
441
- `),Y.manual_edits){let ne=Y.manual_edits,xe=4*512,he=50,st=ne.split(`
442
- `);st.length>he&&(ne=st.slice(0,he).join(`
440
+ `,Y.selected&&(Ye+=`Current Selection: "${Y.selected}"
441
+ `),Y.manual_edits){let oe=Y.manual_edits,ge=4*512,he=50,st=oe.split(`
442
+ `);st.length>he&&(oe=st.slice(0,he).join(`
443
443
  `)+`
444
- ... (${st.length-he} more lines truncated)`),ne.length>xe&&(ne=ne.substring(0,xe)+`
445
- ... (Character limit reached, truncated)`),He+=`Recent Manual Edits:
446
- ${ne}
447
- `}Me.length>0&&(He+=`All Opened Editors: ${Me.join(", ")}`),Y.diagnostics&&(He+=`
444
+ ... (${st.length-he} more lines truncated)`),oe.length>ge&&(oe=oe.substring(0,ge)+`
445
+ ... (Character limit reached, truncated)`),Ye+=`Recent Manual Edits:
446
+ ${oe}
447
+ `}Me.length>0&&(Ye+=`All Opened Editors: ${Me.join(", ")}`),Y.diagnostics&&(Ye+=`
448
448
  **ACTIVE FILE ERRORS**:
449
449
  ${Y.diagnostics}
450
- `),(F.toLowerCase().includes("lint")||F.toLowerCase().includes("warning"))&&Y.warnings&&(He+=`
450
+ `),(F.toLowerCase().includes("lint")||F.toLowerCase().includes("warning"))&&Y.warnings&&(Ye+=`
451
451
  **LINT WARNINGS**:
452
452
  ${Y.warnings}
453
- `)}else He+="No file currently focused.";let Lr=`[SYSTEM METADATA (PRIORITY: DYNAMIC), Chat Context >> Metadata] Time: ${pe}
454
- CWD: ${process.cwd()}${dn?` (WARNING: CWD Mismatch! Previous Path: ${ho})`:""}
453
+ `)}else Ye+="No file currently focused.";let Lr=`[SYSTEM METADATA (PRIORITY: DYNAMIC), Chat Context >> Metadata] Time: ${pe}
454
+ CWD: ${process.cwd()}${un?` (WARNING: CWD Mismatch! Previous Path: ${wo})`:""}
455
455
  **DIRECTORY STRUCTURE**
456
- ${Ht}${Ko}${nt}${He}
456
+ ${Ht}${zo}${nt}${Ye}
457
457
  ${l!="Fast"&&f==="Google"?`${e.toLowerCase().startsWith("gemma")?`[SYSTEM] **STRICTLY FOLLOW THINKING POLICY AS CRITICAL PRIORITY. DO NOT START A RESPONSE WITHOUT <think> ... </think>**
458
- `:""}`:""}[USER] ${F.replace(/\s*\[Prompted on:.*?\]/g,"").trim()}`.trim();I.push({role:"user",text:Lr});let jt=null,Yn=c==="Flux"?70:7,mt=16;yield{type:"status",content:"Connecting..."},er=!1;let ko=[],_t=!1;I.forEach(Q=>{Q.text&&Q.role==="agent"&&(Q.text=Q.text.replace(/(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])/gi,"").trim())});for(let Q=0;Q<=Yn;Q++){if(_t=!1,u?.compression===0&&(a?.tokens||0)>v&&(I=ya(I,6)),Q>0&&(yield{type:"status",content:"Processed. Reconnecting..."}),er){yield{type:"status",content:"Termination Signal Received."},await new Promise(re=>setTimeout(re,1500));break}if(n){let re=await n();re&&(I.length>0&&I[I.length-1].role==="user"?I[I.length-1].text+=`
459
-
460
- [STEERING HINT]: ${re}`:I.push({role:"user",text:`${l!="Fast"&&f==="Google"?`${e.toLowerCase().startsWith("gemma")?`[SYSTEM] **STRICTLY FOLLOW THINKING POLICY AS CRITICAL PRIORITY. DO NOT START A RESPONSE WITHOUT <think> ... </think>**
461
- `:""}`:""}[STEERING HINT]: ${re}`}),yield{type:"status",content:"Steering Hint Injected."})}let Me,rt=!1,ne=1,xe=1,he="",st=null,Po=null,wt=null,ft=0,je=[],de=0,Nt=!1,it=!1,co=!1,pt=!1,un=!0,et="",at="",Ut=!1,Gt=e,qo="";for(;ne<=mt&&xe<=mt&&!rt&&!er;){let re=!1;try{he="",un&&(process.stdout.isTTY&&process.stdout.write("\x1B]0;Working...\x07"),yield{type:"turn_reset",content:!0},yield{type:"spinner",content:!0},un=!1,xe===1&&(et=""));let Ue=I.filter(Se=>(Se.role==="user"||Se.role==="agent"||Se.role==="system")&&!String(Se.id).startsWith("welcome")&&!Se.isMeta&&!Se.isTerminalRecord&&!(Se.text&&Se.text.startsWith("[TERMINAL_RECORD]"))).map((Se,ot,qt)=>{let We=[{text:Se.text}];return Se.binaryPart&&yi(Gt)&&qt.slice(ot+1).filter(mn=>mn.role==="user"&&!mn.text?.startsWith("[TOOL RESULT]")).length<=2&&We.push(Se.binaryPart),{role:Se.role==="user"||Se.role==="system"?"user":"model",parts:We}});if(!await Ks("agent",t))throw new Error("Error: Quota Exausted for Agent");Gt=e,f==="DeepSeek"&&l==="Fast"&&(Gt="deepseek-chat"),ne===mt-1?(Gt=f==="DeepSeek"?"deepseek-v4-flash":"gemini-3-flash-preview",yield{type:"model_update",content:"Trying with fallback model"}):ne===mt?(Gt=f==="DeepSeek"?"deepseek-v4-pro":"gemini-3.5-flash",yield{type:"model_update",content:"Trying with fallback model"}):ne>12&&ne<mt-2&&t.apiKey!=="custom"?(Gt="gemma-4-31b-it",yield{type:"model_update",content:"Trying with fallback Gemma Model"}):ne>0&&(yield{type:"model_update",content:null}),qo=ua(r,(Gt||"gemma").toLowerCase().startsWith("gemma")?l:"GEM",c,u,T,D,f,h);let Re=e&&e.toLowerCase().startsWith("gemma"),lt=Ue[Ue.length-1];if(Re){let Se=`
462
- [SYSTEM] Tool result received. Analyze output and proceed with your turn${l!="Fast"&&f==="Google"?". **STRICTLY MAINTAIN THINKING POLICY. DO NOT START A RESPONSE WITHOUT <think> ... </think>}**":""}`;lt&&lt.role==="user"&&lt.parts?.[0]?.text?.startsWith("[TOOL RESULT]")&&(lt.parts[0].text+=Se)}if(Re){let Se=Math.floor(Yn*(c==="Flux"?.98:.7)),ot=Q+1;ot>=Se&&lt&&lt.parts?.[0]&&(lt.parts[0].text+=`
463
- [SYSTEM] WARNING, Turn Limit Impending: Step ${ot}/${Yn}. Wrap up quickly/prompt user to continue & use [turn:finish] quickly.`)}let Tt=Ue;f==="OpenRouter"?Me=Si(t.apiKey,Gt,Tt,qo,l,c,h):f==="DeepSeek"?Me=Ti(t.apiKey,Gt,Tt,qo,l,c,h):Me=await tr.models.generateContentStream({model:Gt||"gemma-4-31b-it",contents:Tt,config:{systemInstruction:qo,temperature:c==="Flux"?1:1.4,maxOutputTokens:32768,mediaResolution:"MEDIA_RESOLUTION_MEDIUM",safetySettings:[{category:Cn.HARM_CATEGORY_HARASSMENT,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_HATE_SPEECH,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_SEXUALLY_EXPLICIT,threshold:bn.BLOCK_NONE},{category:Cn.HARM_CATEGORY_DANGEROUS_CONTENT,threshold:bn.BLOCK_NONE}],thinkingConfig:(()=>{let Se=(Gt||"").toLowerCase(),ot=Se.includes("gemma-4")||Se.startsWith("gemma"),qt=Se.includes("gemini-3");if(ot||qt)return ot?{includeThoughts:!1,thinkingLevel:Wo.MINIMAL}:{includeThoughts:!0,thinkingLevel:{Fast:Se.includes("pro")?Wo.LOW:Wo.MINIMAL,Low:Wo.LOW,Medium:Wo.MEDIUM,High:Wo.HIGH,xHigh:Wo.HIGH}[l]||Wo.MEDIUM};{let We={Fast:0,Low:512,Medium:2048,High:16384,xHigh:24576}[l]||2048;return We===0?{includeThoughts:!1}:{includeThoughts:!0,thinkingBudget:We}}})()}}),he="",st=null,wt=null,je=[],de=0,yield{type:"model_update",content:null},yield{type:"status",content:"Working..."},at="",Ut=et.length>0;let tt="",Xt=Date.now();for await(let Se of Me){if(er){yield{type:"status",content:"Termination Signal Received."},await new Promise(We=>setTimeout(We,1500));break}let ot="",qt=Se.candidates?.[0]?.content?.parts;if(qt&&qt.length>0)for(let We of qt)We.thought?We.text&&(re||(ot+="<think>",re=!0),ot+=We.text):We.text&&(re&&(ot+="</think>",re=!1),ot+=We.text);else{let We=Se.text||"";We&&re&&(ot+="</think>",re=!1),ot+=We}if(ot){if(Ut){if(at+=ot,at.length>=30){let z=0,ct=Math.min(et.length,at.length);for(let H=ct;H>0;H--)if(et.endsWith(at.substring(0,H))){z=H;break}let ht=at.substring(z);if(ht){let St=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(et)?ht.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):ht.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");St&&(he+=St,f==="Google"?tt+=St:yield{type:"text",content:St})}Ut=!1,at=""}continue}else he+=ot,f==="Google"?tt+=ot:yield{type:"text",content:ot};let We=tl(he),Io=Nc(he);if(Io.inside){wt||(wt=Date.now());let z=Io.toolName,ht={Ask:"ask",WebSearch:"web_search",WebScrape:"web_scrape",ReadFile:"view_file",ReadFolder:"read_folder",WriteFile:"write_file",PatchFile:"update_file",WritePDF:"write_pdf",WriteDoc:"write_docx",Run:"exec_command",SearchKeyword:"search_keyword",Memory:"memory",Chat:"chat",chat:"chat",GenerateImage:"generate_image",generate_image:"generate_image"}[z]||z,H=Io.args||"",St=null;if(["write_file","update_file","view_file","read_folder","write_pdf","write_docx","search_keyword","generate_image"].includes(ht)){let Ne=oe(H),yo=Ne.path||Ne.targetFile||Ne.TargetFile||Ne.directory,Dn=Ne.keyword;if(Dn)St=Dn.replace(/["']/g,"");else if(yo)St=Ie.basename(yo.replace(/["']/g,"").replace(/\\/g,"/"));else{let vn=H.match(/(?:path|targetFile|TargetFile|directory|keyword)\s*=\s*\\?["']?([^\\"' \),]+)/);if(vn){let Oe=vn[1].replace(/["']/g,"");St=ht==="search_keyword"?Oe:Ie.basename(Oe.replace(/\\/g,"/"))}}}let Mt=`${el[ht]||ht}${St?` (${St})`:""}`;if((ht!==st||St!==Po)&&(st=ht,Po=St,yield{type:"status",content:`${Mt}...`},process.stdout.isTTY)){let yo={web_search:"Searching",web_scrape:"Reading",view_file:"Reading",read_folder:"Reading",list_files:"Reading",write_file:"Writing",update_file:"Editing",write_pdf:"Creating",write_docx:"Creating",search_keyword:"Searching",exec_command:"Executing",ask:"User Input",memory:"Updating Memory",generate_image:"Generating"}[ht]||"Working";process.stdout.write(`\x1B]0;${yo}...\x07`)}}let mn=sl(he,!1),An=(mn.match(/(?:<think>|\[think\])([\s\S]*?)(?:<\/think>|\[\/think\]|$)/gi)||[]).join("").trim(),Vo=An.split(/[.!?]\s+/),$r=new Set(Vo),ir=Vo.length>10?(Vo.length-$r.size)/Vo.length:0,zo=An.split(/\s+/).filter(z=>z.length>0).length,ar=.4,lr=.6,Ln=!1;if((Gt||"").toLowerCase().startsWith("gemma")){let ct={low:256,medium:768,high:2048,max:4096,xhigh:4096}[l?.toLowerCase()]||2500;Ln=zo>ct}if(ir>ar||Ln){yield{type:"status",content:`${ir>ar?"Reasoning Loop Detected":"Thinking Budget Exceeded"}. Re-centering...`},it=!0,await new Promise(ct=>setTimeout(ct,3e3));break}let Mo=We.trim().split(/[.!?]\s+/),cr=new Set(Mo);if((Mo.length>10?(Mo.length-cr.size)/Mo.length:0)>lr){yield{type:"status",content:"Response Loop Detected. Re-centering..."},it=!1,pt=!0,await new Promise(z=>setTimeout(z,3e3));break}let Oo=mn.toLowerCase().split(/\s+/).filter(z=>z.length>0),Jo=!1;if(Oo.length>5)for(let z=1;z<=15;z++){let ct=Math.max(3,Math.ceil(8/z));if(Oo.length<z*ct)continue;let ht=!0,St=Oo.slice(Oo.length-z).join(" ");for(let Mt=1;Mt<ct;Mt++)if(Oo.slice(Oo.length-z*(Mt+1),Oo.length-z*Mt).join(" ")!==St){ht=!1;break}if(ht){Jo=!0;break}}if(!Jo){let z=mn.toLowerCase().replace(/[^a-z0-9]/gi,"");if(z.length>=10)for(let ct=1;ct<=10;ct++){let ht=Math.max(4,Math.ceil(12/ct));if(z.length<ct*ht)continue;let H=z.substring(z.length-ct),St=!0;for(let Mt=1;Mt<ht;Mt++)if(z.substring(z.length-ct*(Mt+1),z.length-ct*Mt)!==H){St=!1;break}if(St){Jo=!0;break}}}if(Jo){yield{type:"status",content:"Stuttering Detected. Re-centering..."},it=!1,co=!0,await new Promise(z=>setTimeout(z,3e3));break}let ws=he.replace(/(?:<(think|thought|thoughts)>|\[(think|thought|thoughts)\])[\s\S]*?(?:<\/(think|thought|thoughts)>|\[\/(think|thought|thoughts)\]|$)/gi,""),dr=Ei(ws);for(;dr.length>de;){let z=dr[de],ct=Date.now(),H={Ask:"ask",WebSearch:"web_search",WebScrape:"web_scrape",ReadFile:"view_file",ReadFolder:"read_folder",WriteFile:"write_file",PatchFile:"update_file",WritePDF:"write_pdf",WriteDoc:"write_docx",Run:"exec_command",SearchKeyword:"search_keyword",Memory:"memory",Chat:"chat",chat:"chat",GenerateImage:"generate_image",generate_image:"generate_image"}[z.toolName]||z.toolName,St=el[H]||z.toolName,Mt=_c(H,z.args);yield{type:"status",content:`${St}${Mt?` (${Mt})`:""}...`};let Ne="";if(H==="web_search"){let{query:se,limit:Ae=10}=oe(z.args);Ne=`\u{1F50D} Searched: ${se}`}else if(H==="web_scrape")Ne=`\u{1F4D6} Visited: ${oe(z.args).url||"..."}`;else if(H==="view_file"){let{path:se,StartLine:Ae,EndLine:Qe,start_line:Ge,end_line:Ee,startLine:bt,endLine:x}=oe(z.args),g=Ae||Ge||bt,M=Qe||Ee||x,B=parseInt(g)||1,O=parseInt(M)||(g?B+800:800),$="...",X=O;try{let te=Ie.resolve(process.cwd(),se);if(Bt.existsSync(te)){let ue=Bt.readFileSync(te,"utf8").split(`
464
- `).length;$=ue,X=Math.min(O,ue)}}catch{}let S=se.toLowerCase(),L=S.endsWith(".pdf"),P=S.endsWith(".docx")||S.endsWith(".doc")||S.endsWith(".ppt")||S.endsWith(".pptx")||S.endsWith(".xls")||S.endsWith(".xlsx"),j=/\.(png|jpg|jpeg|webp|gif|bmp)$/.test(S);L||P?Ne=`\u{1F4C4} Viewed: ${se}`:j?Ne=`\u{1F4F8} Viewed: ${se}`:Ne=`\u{1F4C4} Read: ${se} \u2192 Lines ${B} - ${X} of ${$}`}else if(H==="list_files"||H==="read_folder"){let se=H==="list_files"?"List":"Viewed",Ae=oe(z.args).path;Ne=`\u{1F4C2} ${se}: ${Ae==="."?"./":Ae}`}else if(H==="write_file"||H==="update_file")Ne=`\u{1F4BE} ${H==="write_file"?"Created":"Edited"}: ${oe(z.args).path||"..."}`;else if(H==="write_pdf")Ne=`\u{1F4D1} Created: ${oe(z.args).path||"..."}`;else if(H==="write_docx")Ne=`\u{1F4DD} Created: ${oe(z.args).path||"..."}`;else if(H==="search_keyword")Ne="";else if(H==="generate_image"){let{path:se,outputPath:Ae,output:Qe}=oe(z.args);Ne=`\u{1F3A8} Generated: ${se||Ae||Qe||"generated_image.png"}`}else H==="exec_command"||H==="ask"?Ne="":Ne=`Executed: ${z.toolName}`;if(H==="exec_command"){let{command:se}=oe(z.args);if(se&&t.systemSettings&&t.systemSettings.allowExternalAccess===!1){let Ae=[/[a-zA-Z]:[\\\/]/i,/^\//,/\.\.[\\\/]/,/\/etc\//,/\/var\//,/\/root\//,/\/bin\//,/\/usr\//],Qe=Ie.resolve(process.cwd()).substring(0,3).toLowerCase();if(Ae.some(Ee=>{if(Ee.source==="[a-zA-Z]:[\\\\\\/]"){let bt=se.match(/[a-zA-Z]:[\\\/]/i);return bt&&bt[0].toLowerCase()!==Qe}return Ee.test(se)})){let Ee='Access Denied. Terminal is prohibited from accessing system drives (C://) or external directories while "External Workspace Access" is disabled.';t.onExecStart&&t.onExecStart(se||"Unknown"),yield{type:"exec_start"},await new Promise(bt=>setTimeout(bt,50)),t.onExecChunk&&t.onExecChunk(`ERROR: ${Ee}`),await new Promise(bt=>setTimeout(bt,50)),t.onExecEnd&&t.onExecEnd(),je.push({role:"user",text:`[TOOL RESULT]: ERROR: ${Ee}`}),yield{type:"tool_result",content:`[TOOL RESULT]: ERROR: ${Ee}`},de++;continue}}t.onExecStart&&t.onExecStart(se||"Unknown"),yield{type:"exec_start"}}let yo=oe(z.args),Dn=yo.path||yo.targetPath||null;if(Dn){let se=t.systemSettings&&t.systemSettings.allowExternalAccess===!1,Ae=Ie.resolve(Dn),Qe=Ie.resolve(process.cwd());if(se&&!Ae.startsWith(Qe)){let Ge="Access Denied. You are not allowed to access files outside the current workspace.";if(H==="write_file"||H==="update_file"){let bt=`\u{1F4BE} ${H==="write_file"?"Write Canceled":"Edit Canceled"}: ${yo.path||"..."}`,x=Math.min(bt.length+4,115),g=`\u256D${"\u2500".repeat(x)}\u256E`,M=`\u2502 ${bt.padEnd(x-2).substring(0,x-2)} \u2502`,B=`\u2570${"\u2500".repeat(x)}\u256F`;yield{type:"visual_feedback",content:`${g}
465
- ${M}
466
- ${B}`}}je.push({role:"user",text:`[TOOL RESULT]: ERROR: ${Ge}`}),yield{type:"tool_result",content:`[TOOL RESULT]: ERROR: ${Ge}`},de++;continue}}if(t.onToolApproval&&(H==="write_file"||H==="update_file"||H==="exec_command")){let Ae=t.systemSettings||{},Qe=Ae.autoExec,Ge=null,Ee=!1,bt=!1,x=!1;if(H==="exec_command"){let{command:S}=oe(z.args),L=(S||"").trim(),P=(be,ue)=>{if(!ue)return!1;let Fe=ue.split(",").map($e=>$e.trim().toLowerCase()).filter(Boolean),Be=be.toLowerCase();return Fe.some($e=>Be.startsWith($e))},j=P(L,Ae.alwaysAskCommands),te=P(L,Ae.autoApproveCommands);bt=P(L,Ae.autoDisallowCommands),j?Ee=!0:(te||Ae.autoApproveGit&&/^git\s+commit\b/i.test(L))&&(Ge="allow"),!Ee&&!Ge&&(Ae.networkAccess===!1&&/\b(curl|wget|npm|yarn|pnpm|pip|pip3|ssh|docker|git\s+(clone|push|pull|fetch))\b/i.test(L)&&(Ge="deny",x=!0),!Ge&&bt&&(Ge="deny")),!Ee&&!Ge&&Qe&&(Ge="allow")}else Qe&&(Ge="allow");let g=Ge,M="";Ge==="deny"&&(x?M="network":bt?M="settings":M="prohibited");let B=!1,O="",$=[],X=0;if(!g){if(H==="write_file"||H==="update_file")try{let S=oe(z.args),{path:L}=S;if(L){let P=Ie.resolve(process.cwd(),L),j=$e=>$e?$e.toLowerCase().replace(/\\/g,"/").replace(/^[a-z]:/,Vt=>Vt.toUpperCase()):"",te=j(P),be="",ue=!1,Fe=await Mr(),Be=j(Fe?.file_focused);if(Fe&&Be===te&&Fe.full_content?(be=Fe.full_content,ue=!0):Bt.existsSync(P)&&(be=Bt.readFileSync(P,"utf8"),ue=!0),O=be,await Et.recordFileChange(P,be),ue){let $e=be;if(H==="write_file")$e=S.content||S.newContent||"";else{let{patchPairs:Vt,error:Qo}=Nr(S);if(Qo){let Ot=`[TOOL RESULT]: ERROR: ${Qo}`;je.push({role:"user",text:Ot}),yield{type:"tool_result",content:Ot,toolName:H},de++;continue}X=Vt.length;let Ao=Ur(be,Vt);$e=Ao.content,$=Ao.results;let Fo=$.filter(Ot=>!Ot.success);if(Fo.length>0){let Ot=`[TOOL RESULT]: ERROR: Failed to apply patches to [${Ie.basename(P)}].\\n${Fo.map(Le=>` \u2022 ${Le.error}`).join("\\n")}`,mr=`\u{1F4BE} Edited: ${Ie.basename(P)}`.toUpperCase(),Zo=Math.min(mr.length+4,115),R=`\u256D${"\u2500".repeat(Zo)}\u256E`,ae=`\u2502 ${mr.padEnd(Zo-2).substring(0,Zo-2)} \u2502`,ge=`\u2570${"\u2500".repeat(Zo)}\u256F`;yield{type:"visual_feedback",content:`${R}
467
- ${ae}
468
- ${ge}`},je.push({role:"user",text:Ot}),yield{type:"tool_result",content:Ot,toolName:H},de++;continue}}yield{type:"status",content:`Opening Diff in IDE: ${Ie.basename(P)}...`},gi(P,be,$e),B=!0,await new Promise(Vt=>setTimeout(Vt,50))}else if(H==="write_file"){let $e=S.content||S.newContent||"";yield{type:"status",content:`Opening New File Diff in IDE: ${Ie.basename(P)}...`},gi(P,"",$e),B=!0,await new Promise(Vt=>setTimeout(Vt,50))}}}catch(S){console.error("Simulation/Diff Error:",S)}if(g=await t.onToolApproval(H,z.args),H==="write_file"||H==="update_file"){let{path:S}=oe(z.args);if(S){let L=Ie.resolve(process.cwd(),S);Za(L,g)}}g==="deny"&&(M="user")}if(g==="allow"&&B&&Ro()){let{path:S}=oe(z.args),L=Ie.resolve(process.cwd(),S),P=await Mr(),j="";P&&P.file_focused===L&&P.full_content?j=P.full_content:Bt.existsSync(L)&&(j=Bt.readFileSync(L,"utf8"));let te=j.split(/\r?\n/),be=te.length,ue=Buffer.byteLength(j,"utf8"),Fe="";O&&(Fe=`Old File contents:
469
- ${O.split(/\r?\n/).map((ge,Le)=>`${Le+1} | ${ge}`).join(`
458
+ `:""}`:""}[USER] ${F.replace(/\s*\[Prompted on:.*?\]/g,"").trim()}`.trim();I.push({role:"user",text:Lr});let jt=null,Xn=c==="Flux"?70:7,ut=16;yield{type:"status",content:"Connecting..."},ar=!1;let Mo=[],_t=!1;I.forEach(Z=>{Z.text&&Z.role==="agent"&&(Z.text=Z.text.replace(/(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])/gi,"").trim())});for(let Z=0;Z<=Xn;Z++){if(_t=!1,u?.compression===0&&(a?.tokens||0)>v&&(I=Ea(I,6)),Z>0&&(yield{type:"status",content:"Processed. Reconnecting..."}),ar){yield{type:"status",content:"Termination Signal Received."},await new Promise(ne=>setTimeout(ne,1500));break}if(n){let ne=await n();ne&&(I.length>0&&I[I.length-1].role==="user"?I[I.length-1].text+=`
459
+
460
+ [STEERING HINT]: ${ne}`:I.push({role:"user",text:`${l!="Fast"&&f==="Google"?`${e.toLowerCase().startsWith("gemma")?`[SYSTEM] **STRICTLY FOLLOW THINKING POLICY AS CRITICAL PRIORITY. DO NOT START A RESPONSE WITHOUT <think> ... </think>**
461
+ `:""}`:""}[STEERING HINT]: ${ne}`}),yield{type:"status",content:"Steering Hint Injected."})}let Me,rt=!1,oe=1,ge=1,he="",st=null,Po=null,yt=null,mt=0,Ne=[],ce=0,Nt=!1,it=!1,uo=!1,ft=!1,mn=!0,Qe="",at="",Ut=!1,Gt=e,Jo="";for(;oe<=ut&&ge<=ut&&!rt&&!ar;){let ne=!1;try{he="",mn&&(process.stdout.isTTY&&process.stdout.write("\x1B]0;Working...\x07"),yield{type:"turn_reset",content:!0},yield{type:"spinner",content:!0},mn=!1,ge===1&&(Qe=""));let Ue=I.filter(Ee=>(Ee.role==="user"||Ee.role==="agent"||Ee.role==="system")&&!String(Ee.id).startsWith("welcome")&&!Ee.isMeta&&!Ee.isTerminalRecord&&!(Ee.text&&Ee.text.startsWith("[TERMINAL_RECORD]"))).map((Ee,et,qt)=>{let Be=Ee.text||"";Ee.role==="agent"&&(Be=Be.replace(/\[turn:\s*finish\]/gi,"").trim());let mo=[{text:Be}];return Ee.binaryPart&&Ei(Gt)&&qt.slice(et+1).filter(Qo=>Qo.role==="user"&&!Qo.text?.startsWith("[TOOL RESULT]")).length<=2&&mo.push(Ee.binaryPart),{role:Ee.role==="user"||Ee.role==="system"?"user":"model",parts:mo}});if(!await Vs("agent",t))throw new Error("Error: Quota Exausted for Agent");Gt=e,f==="DeepSeek"&&l==="Fast"&&(Gt="deepseek-chat"),oe===ut-1?(Gt=f==="DeepSeek"?"deepseek-v4-flash":"gemini-3-flash-preview",yield{type:"model_update",content:"Trying with fallback model"}):oe===ut?(Gt=f==="DeepSeek"?"deepseek-v4-pro":"gemini-3.5-flash",yield{type:"model_update",content:"Trying with fallback model"}):oe>12&&oe<ut-2&&t.apiKey!=="custom"?(Gt="gemma-4-31b-it",yield{type:"model_update",content:"Trying with fallback Gemma Model"}):oe>0&&(yield{type:"model_update",content:null}),Jo=ha(r,(Gt||"gemma").toLowerCase().startsWith("gemma")?l:"GEM",c,u,T,D,f,h);let Re=e&&e.toLowerCase().startsWith("gemma"),lt=Ue[Ue.length-1];if(Re){let Ee=`
462
+ [SYSTEM] Tool result received. Analyze output and proceed with your turn${l!="Fast"&&f==="Google"?". **STRICTLY MAINTAIN THINKING POLICY. DO NOT START A RESPONSE WITHOUT <think> ... </think>}**":""}`;lt&&lt.role==="user"&&lt.parts?.[0]?.text?.startsWith("[TOOL RESULT]")&&(lt.parts[0].text+=Ee)}if(Re){let Ee=Math.floor(Xn*(c==="Flux"?.98:.7)),et=Z+1;et>=Ee&&lt&&lt.parts?.[0]&&(lt.parts[0].text+=`
463
+ [SYSTEM] WARNING, Turn Limit Impending: Step ${et}/${Xn}. Wrap up quickly/prompt user to continue & use [turn:finish] quickly.`)}let wt=Ue;f==="OpenRouter"?Me=Ii(t.apiKey,Gt,wt,Jo,l,c,h):f==="DeepSeek"?Me=ki(t.apiKey,Gt,wt,Jo,l,c,h):Me=await lr.models.generateContentStream({model:Gt||"gemma-4-31b-it",contents:wt,config:{systemInstruction:Jo,temperature:c==="Flux"?1:1.4,maxOutputTokens:32768,mediaResolution:"MEDIA_RESOLUTION_MEDIUM",safetySettings:[{category:An.HARM_CATEGORY_HARASSMENT,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_HATE_SPEECH,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_SEXUALLY_EXPLICIT,threshold:Mn.BLOCK_NONE},{category:An.HARM_CATEGORY_DANGEROUS_CONTENT,threshold:Mn.BLOCK_NONE}],thinkingConfig:(()=>{let Ee=(Gt||"").toLowerCase(),et=Ee.includes("gemma-4")||Ee.startsWith("gemma"),qt=Ee.includes("gemini-3");if(et||qt)return et?{includeThoughts:!1,thinkingLevel:jo.MINIMAL}:{includeThoughts:!0,thinkingLevel:{Fast:Ee.includes("pro")?jo.LOW:jo.MINIMAL,Low:jo.LOW,Medium:jo.MEDIUM,High:jo.HIGH,xHigh:jo.HIGH}[l]||jo.MEDIUM};{let Be={Fast:0,Low:512,Medium:2048,High:16384,xHigh:24576}[l]||2048;return Be===0?{includeThoughts:!1}:{includeThoughts:!0,thinkingBudget:Be}}})()}}),he="",st=null,yt=null,Ne=[],ce=0,yield{type:"model_update",content:null},yield{type:"status",content:"Working..."},at="",Ut=Qe.length>0;let Ze="",Xt=Date.now();for await(let Ee of Me){if(ar){yield{type:"status",content:"Termination Signal Received."},await new Promise(Be=>setTimeout(Be,1500));break}let et="",qt=Ee.candidates?.[0]?.content?.parts;if(qt&&qt.length>0)for(let Be of qt)Be.thought?Be.text&&(ne||(et+="<think>",ne=!0),et+=Be.text):Be.text&&(ne&&(et+="</think>",ne=!1),et+=Be.text);else{let Be=Ee.text||"";Be&&ne&&(et+="</think>",ne=!1),et+=Be}if(et){if(Ut){if(at+=et,at.length>=30){let z=0,He=Math.min(Qe.length,at.length);for(let G=He;G>0;G--)if(Qe.endsWith(at.substring(0,G))){z=G;break}let Tt=at.substring(z);if(Tt){let Ge=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(Qe)?Tt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):Tt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");Ge&&(he+=Ge,f==="Google"?Ze+=Ge:yield{type:"text",content:Ge})}Ut=!1,at=""}continue}else he+=et,f==="Google"?Ze+=et:yield{type:"text",content:et};let Be=sl(he),mo=Yc(he);if(mo.inside){yt||(yt=Date.now());let z=mo.toolName,Tt={Ask:"ask",WebSearch:"web_search",WebScrape:"web_scrape",ReadFile:"view_file",ReadFolder:"read_folder",WriteFile:"write_file",PatchFile:"update_file",WritePDF:"write_pdf",WriteDoc:"write_docx",Run:"exec_command",SearchKeyword:"search_keyword",Memory:"memory",Chat:"chat",chat:"chat",GenerateImage:"generate_image",generate_image:"generate_image"}[z]||z,G=mo.args||"",Ge=null;if(["write_file","update_file","view_file","read_folder","write_pdf","write_docx","search_keyword","generate_image"].includes(Tt)){let De=te(G),_o=De.path||De.targetFile||De.TargetFile||De.directory,en=De.keyword;if(en)Ge=en.replace(/["']/g,"");else if(_o)Ge=Ie.basename(_o.replace(/["']/g,"").replace(/\\/g,"/"));else{let Fn=G.match(/(?:path|targetFile|TargetFile|directory|keyword)\s*=\s*\\?["']?([^\\"' \),]+)/);if(Fn){let St=Fn[1].replace(/["']/g,"");Ge=Tt==="search_keyword"?St:Ie.basename(St.replace(/\\/g,"/"))}}}let Vt=`${rl[Tt]||Tt}${Ge?` (${Ge})`:""}`;if((Tt!==st||Ge!==Po)&&(st=Tt,Po=Ge,yield{type:"status",content:`${Vt}...`},process.stdout.isTTY)){let _o={web_search:"Searching",web_scrape:"Reading",view_file:"Reading",read_folder:"Reading",list_files:"Reading",write_file:"Writing",update_file:"Editing",write_pdf:"Creating",write_docx:"Creating",search_keyword:"Searching",exec_command:"Executing",ask:"User Input",memory:"Updating Memory",generate_image:"Generating"}[Tt]||"Working";process.stdout.write(`\x1B]0;${_o}...\x07`)}}let qn=cl(he,!1),fn=(qn.match(/(?:<think>|\[think\])([\s\S]*?)(?:<\/think>|\[\/think\]|$)/gi)||[]).join("").trim(),Zo=fn.split(/[.!?]\s+/),$r=new Set(Zo),Pn=Zo.length>10?(Zo.length-$r.size)/Zo.length:0,Pr=fn.split(/\s+/).filter(z=>z.length>0).length,Fo=.4,Fr=.6,Vn=!1;if((Gt||"").toLowerCase().startsWith("gemma")){let He={low:256,medium:768,high:2048,max:4096,xhigh:4096}[l?.toLowerCase()]||2500;Vn=Pr>He}if(Pn>Fo||Vn){yield{type:"status",content:`${Pn>Fo?"Reasoning Loop Detected":"Thinking Budget Exceeded"}. Re-centering...`},it=!0,await new Promise(He=>setTimeout(He,3e3));break}let zn=Be.trim().split(/[.!?]\s+/),pn=new Set(zn);if((zn.length>10?(zn.length-pn.size)/zn.length:0)>Fr){yield{type:"status",content:"Response Loop Detected. Re-centering..."},it=!1,ft=!0,await new Promise(z=>setTimeout(z,3e3));break}let Bo=qn.toLowerCase().split(/\s+/).filter(z=>z.length>0),hn=!1;if(Bo.length>5)for(let z=1;z<=15;z++){let He=Math.max(3,Math.ceil(8/z));if(Bo.length<z*He)continue;let Tt=!0,Ge=Bo.slice(Bo.length-z).join(" ");for(let Vt=1;Vt<He;Vt++)if(Bo.slice(Bo.length-z*(Vt+1),Bo.length-z*Vt).join(" ")!==Ge){Tt=!1;break}if(Tt){hn=!0;break}}if(!hn){let z=qn.toLowerCase().replace(/[^a-z0-9]/gi,"");if(z.length>=10)for(let He=1;He<=10;He++){let Tt=Math.max(4,Math.ceil(12/He));if(z.length<He*Tt)continue;let G=z.substring(z.length-He),Ge=!0;for(let Vt=1;Vt<Tt;Vt++)if(z.substring(z.length-He*(Vt+1),z.length-He*Vt)!==G){Ge=!1;break}if(Ge){hn=!0;break}}}if(hn){yield{type:"status",content:"Stuttering Detected. Re-centering..."},it=!1,uo=!0,await new Promise(z=>setTimeout(z,3e3));break}let Jn=he.replace(/(?:<(think|thought|thoughts)>|\[(think|thought|thoughts)\])[\s\S]*?(?:<\/(think|thought|thoughts)>|\[\/(think|thought|thoughts)\]|$)/gi,""),_r=Mi(Jn);for(;_r.length>ce;){let z=_r[ce],He=Date.now(),G={Ask:"ask",WebSearch:"web_search",WebScrape:"web_scrape",ReadFile:"view_file",ReadFolder:"read_folder",WriteFile:"write_file",PatchFile:"update_file",WritePDF:"write_pdf",WriteDoc:"write_docx",Run:"exec_command",SearchKeyword:"search_keyword",Memory:"memory",Chat:"chat",chat:"chat",GenerateImage:"generate_image",generate_image:"generate_image"}[z.toolName]||z.toolName,Ge=rl[G]||z.toolName,Vt=Wc(G,z.args);yield{type:"status",content:`${Ge}${Vt?` (${Vt})`:""}...`};let De="";if(G==="web_search"){let{query:se,limit:ve=10}=te(z.args);De=`\u{1F50D} Searched: ${se}`}else if(G==="web_scrape")De=`\u{1F4D6} Visited: ${te(z.args).url||"..."}`;else if(G==="view_file"){let{path:se,StartLine:ve,EndLine:je,start_line:Xe,end_line:pt,startLine:be,endLine:fo}=te(z.args),x=ve||Xe||be,g=je||pt||fo,A=parseInt(x)||1,B=parseInt(g)||(x?A+800:800),O="...",$=B;try{let H=Ie.resolve(process.cwd(),se);if(Bt.existsSync(H)){let _e=Bt.readFileSync(H,"utf8").split(`
464
+ `).length;O=_e,$=Math.min(B,_e)}}catch{}let _=se.toLowerCase(),C=_.endsWith(".pdf"),M=_.endsWith(".docx")||_.endsWith(".doc")||_.endsWith(".ppt")||_.endsWith(".pptx")||_.endsWith(".xls")||_.endsWith(".xlsx"),P=/\.(png|jpg|jpeg|webp|gif|bmp)$/.test(_);C||M?De=`\u{1F4C4} Viewed: ${se}`:P?De=`\u{1F4F8} Viewed: ${se}`:De=`\u{1F4C4} Read: ${se} \u2192 Lines ${A} - ${$} of ${O}`}else if(G==="list_files"||G==="read_folder"){let se=G==="list_files"?"List":"Viewed",ve=te(z.args).path;De=`\u{1F4C2} ${se}: ${ve==="."?"./":ve}`}else if(G==="write_file"||G==="update_file")De=`\u{1F4BE} ${G==="write_file"?"Created":"Edited"}: ${te(z.args).path||"..."}`;else if(G==="write_pdf")De=`\u{1F4D1} Created: ${te(z.args).path||"..."}`;else if(G==="write_docx")De=`\u{1F4DD} Created: ${te(z.args).path||"..."}`;else if(G==="search_keyword")De="";else if(G==="generate_image"){let{path:se,outputPath:ve,output:je}=te(z.args);De=`\u{1F3A8} Generated: ${se||ve||je||"generated_image.png"}`}else G==="exec_command"||G==="ask"?De="":De=`Executed: ${z.toolName}`;if(G==="exec_command"){let{command:se}=te(z.args);if(se&&t.systemSettings&&t.systemSettings.allowExternalAccess===!1){let ve=[/[a-zA-Z]:[\\\/]/i,/^\//,/\.\.[\\\/]/,/\/etc\//,/\/var\//,/\/root\//,/\/bin\//,/\/usr\//],je=Ie.resolve(process.cwd()).substring(0,3).toLowerCase();if(ve.some(pt=>{if(pt.source==="[a-zA-Z]:[\\\\\\/]"){let be=se.match(/[a-zA-Z]:[\\\/]/i);return be&&be[0].toLowerCase()!==je}return pt.test(se)})){let pt='Access Denied. Terminal is prohibited from accessing system drives (C://) or external directories while "External Workspace Access" is disabled.';t.onExecStart&&t.onExecStart(se||"Unknown"),yield{type:"exec_start"},await new Promise(be=>setTimeout(be,50)),t.onExecChunk&&t.onExecChunk(`ERROR: ${pt}`),await new Promise(be=>setTimeout(be,50)),t.onExecEnd&&t.onExecEnd(),Ne.push({role:"user",text:`[TOOL RESULT]: ERROR: ${pt}`}),yield{type:"tool_result",content:`[TOOL RESULT]: ERROR: ${pt}`},ce++;continue}}t.onExecStart&&t.onExecStart(se||"Unknown"),yield{type:"exec_start"}}let _o=te(z.args),en=_o.path||_o.targetPath||null;if(en){let se=t.systemSettings&&t.systemSettings.allowExternalAccess===!1,ve=Ie.resolve(en),je=Ie.resolve(process.cwd());if(se&&!ve.startsWith(je)){let Xe="Access Denied. You are not allowed to access files outside the current workspace.";if(G==="write_file"||G==="update_file"){let be=`\u{1F4BE} ${G==="write_file"?"Write Canceled":"Edit Canceled"}: ${_o.path||"..."}`,fo=Math.min(be.length+4,115),x=`\u256D${"\u2500".repeat(fo)}\u256E`,g=`\u2502 ${be.padEnd(fo-2).substring(0,fo-2)} \u2502`,A=`\u2570${"\u2500".repeat(fo)}\u256F`;yield{type:"visual_feedback",content:`${x}
465
+ ${g}
466
+ ${A}`}}Ne.push({role:"user",text:`[TOOL RESULT]: ERROR: ${Xe}`}),yield{type:"tool_result",content:`[TOOL RESULT]: ERROR: ${Xe}`},ce++;continue}}if(t.onToolApproval&&(G==="write_file"||G==="update_file"||G==="exec_command")){let ve=t.systemSettings||{},je=ve.autoExec,Xe=null,pt=!1,be=!1,fo=!1;if(G==="exec_command"){let{command:_}=te(z.args),C=(_||"").trim(),M=(ie,_e)=>{if(!_e)return!1;let ue=_e.split(",").map(Se=>Se.trim().toLowerCase()).filter(Boolean),Pe=ie.toLowerCase();return ue.some(Se=>Pe.startsWith(Se))},P=M(C,ve.alwaysAskCommands),H=M(C,ve.autoApproveCommands);be=M(C,ve.autoDisallowCommands),P?pt=!0:(H||ve.autoApproveGit&&/^git\s+commit\b/i.test(C))&&(Xe="allow"),!pt&&!Xe&&(ve.networkAccess===!1&&/\b(curl|wget|npm|yarn|pnpm|pip|pip3|ssh|docker|git\s+(clone|push|pull|fetch))\b/i.test(C)&&(Xe="deny",fo=!0),!Xe&&be&&(Xe="deny")),!pt&&!Xe&&je&&(Xe="allow")}else je&&(Xe="allow");let x=Xe,g="";Xe==="deny"&&(fo?g="network":be?g="settings":g="prohibited");let A=!1,B="",O=[],$=0;if(!x){if(G==="write_file"||G==="update_file")try{let M=te(z.args),{path:P}=M;if(P){let H=Ie.resolve(process.cwd(),P),ie=Dt=>Dt?Dt.toLowerCase().replace(/\\/g,"/").replace(/^[a-z]:/,vt=>vt.toUpperCase()):"",_e=ie(H),ue="",Pe=!1,Se=await Mr(),zt=ie(Se?.file_focused);if(Se&&zt===_e&&Se.full_content?(ue=Se.full_content,Pe=!0):Bt.existsSync(H)&&(ue=Bt.readFileSync(H,"utf8"),Pe=!0),B=ue,await bt.recordFileChange(H,ue),Pe){let Dt=ue;if(G==="write_file")Dt=M.content||M.newContent||"";else{let{patchPairs:vt,error:gn}=Wr(M);if(gn){let Oo=`[TOOL RESULT]: ERROR: ${gn}`;Ne.push({role:"user",text:Oo}),yield{type:"tool_result",content:Oo,toolName:G},ce++;continue}$=vt.length;let No=Yr(ue,vt);Dt=No.content,O=No.results;let po=O.filter(Oo=>!Oo.success);if(po.length>0){let Oo=`[TOOL RESULT]: ERROR: Failed to apply patches to [${Ie.basename(H)}].\\n${po.map(Et=>` \u2022 ${Et.error}`).join("\\n")}`,Bn=`\u{1F4BE} Edited: ${Ie.basename(H)}`.toUpperCase(),N=Math.min(Bn.length+4,115),de=`\u256D${"\u2500".repeat(N)}\u256E`,we=`\u2502 ${Bn.padEnd(N-2).substring(0,N-2)} \u2502`,Le=`\u2570${"\u2500".repeat(N)}\u256F`;yield{type:"visual_feedback",content:`${de}
467
+ ${we}
468
+ ${Le}`},Ne.push({role:"user",text:Oo}),yield{type:"tool_result",content:Oo,toolName:G},ce++;continue}}yield{type:"status",content:`Opening Diff in IDE: ${Ie.basename(H)}...`},Ti(H,ue,Dt),A=!0,await new Promise(vt=>setTimeout(vt,50))}else if(G==="write_file"){let Dt=M.content||M.newContent||"";yield{type:"status",content:`Opening New File Diff in IDE: ${Ie.basename(H)}...`},Ti(H,"",Dt),A=!0,await new Promise(vt=>setTimeout(vt,50))}}}catch(M){console.error("Simulation/Diff Error:",M)}let _=null;wi(M=>{_=M});let C=t.onToolApproval;if(x=await new Promise(async M=>{let P=setInterval(()=>{_&&(bi.onIDEApproval&&bi.onIDEApproval(_),clearInterval(P),M(_))},100);try{let H=await C(G,z.args);clearInterval(P),M(H)}catch{clearInterval(P),M("deny")}}),wi(null),G==="write_file"||G==="update_file"){let{path:M}=te(z.args);if(M){let P=Ie.resolve(process.cwd(),M);nl(P,x)}}x==="deny"&&(g="user")}if(x==="allow"&&A&&Ho()){let{path:_}=te(z.args),C=Ie.resolve(process.cwd(),_),M=await Mr(),P="";M&&M.file_focused===C&&M.full_content?P=M.full_content:Bt.existsSync(C)&&(P=Bt.readFileSync(C,"utf8"));let H=P.split(/\r?\n/),ie=H.length,_e=Buffer.byteLength(P,"utf8"),ue="";B&&(ue=`Old File contents:
469
+ ${B.split(/\r?\n/).map((de,we)=>`${we+1} | ${de}`).join(`
470
470
  `)}
471
471
 
472
- `);let Be="";if(be<=200)Be=te.join(`
473
- `);else{let ae=te.slice(0,100).join(`
474
- `),ge=te.slice(-100).join(`
475
- `);Be=`${ae}
472
+ `);let Pe="";if(ie<=200)Pe=H.join(`
473
+ `);else{let N=H.slice(0,100).join(`
474
+ `),de=H.slice(-100).join(`
475
+ `);Pe=`${N}
476
476
 
477
- ... [${be-200} lines truncated for history stability] ...
477
+ ... [${ie-200} lines truncated for history stability] ...
478
478
 
479
- ${ge}`}let $e="";if(H==="update_file"){let ae=Rr(O,j,$,12);$e=`SUCCESS: File [${S}] updated via IDE Companion (May have user edits). [${$.length}/${X}] blocks applied.
479
+ ${de}`}let Se="";if(G==="update_file"){let N=Hr(B,P,O,12);Se=`SUCCESS: File [${_}] updated via IDE Companion (May have user edits). [${O.length}/${$}] blocks applied.
480
480
 
481
- ${ae}`}else{let ae=j.split(/\r?\n/),ge=ae.length,Le=Buffer.byteLength(j,"utf8"),vt="";O&&(vt=`Old File contents:
482
- ${O.split(/\r?\n/).map((Xe,Ke)=>`${Ke+1} | ${Xe}`).join(`
481
+ ${N}`}else{let N=P.split(/\r?\n/),de=N.length,we=Buffer.byteLength(P,"utf8"),Le="";B&&(Le=`Old File contents:
482
+ ${B.split(/\r?\n/).map((xe,tt)=>`${tt+1} | ${xe}`).join(`
483
483
  `)}
484
484
 
485
- `);let me="";if(ge<=200)me=ae.join(`
486
- `);else{let ye=ae.slice(0,100).join(`
487
- `),Xe=ae.slice(-100).join(`
488
- `);me=`${ye}
485
+ `);let Et="";if(de<=200)Et=N.join(`
486
+ `);else{let fe=N.slice(0,100).join(`
487
+ `),xe=N.slice(-100).join(`
488
+ `);Et=`${fe}
489
489
 
490
- ... [${ge-200} lines truncated] ...
490
+ ... [${de-200} lines truncated] ...
491
491
 
492
- ${Xe}`}$e=`SUCCESS: File [${S}] saved via IDE Companion (May have user edits).
492
+ ${xe}`}Se=`SUCCESS: File [${_}] saved via IDE Companion (May have user edits).
493
493
 
494
- - Stats: [${ge} lines, ${(Le/1024).toFixed(1)} KB]
495
- ${vt}- Content Preview:
496
- ${me}
494
+ - Stats: [${de} lines, ${(we/1024).toFixed(1)} KB]
495
+ ${Le}- Content Preview:
496
+ ${Et}
497
497
 
498
- Check if Starting and Ending matches your write.`}let Qo=`\u{1F4BE} ${H==="write_file"?"Written":"Edited"}: ${S||"..."}`,Ao=Math.min(Qo.length+4,115),Fo=`\u256D${"\u2500".repeat(Ao)}\u256E`,Ot=`\u2502 ${Qo.padEnd(Ao-2).substring(0,Ao-2)} \u2502`,mr=`\u2570${"\u2500".repeat(Ao)}\u256F`;yield{type:"visual_feedback",content:`${Fo}
499
- ${Ot}
500
- ${mr}`};let Zo=Date.now();ft=Zo,yield{type:"tool_time",content:Zo-ct};let R=`[TOOL RESULT]: ${$e}`;je.push({role:"user",text:R}),Nt=!0,yield{type:"tool_result",content:$e,aiContent:R,toolName:H},de++;continue}if(g==="deny"){let S=`Permission Denied: Prohibited ${H==="exec_command"?"Command":"file edit"}.`;if(M==="user"?S="Permission Denied by User":M==="settings"?S="Permission Denied by User Policy":M==="network"?S="Permission Denied: Sandbox Network Access Disabled by User Policy.":M==="prohibited"&&H==="exec_command"&&(S="Permission Denied: Prohibited Command"),H==="write_file"||H==="update_file"){let P=`\u{1F4BE} ${H==="write_file"?"WRITE DENIED":"UPDATE DENIED"}: ${oe(z.args).path||"..."}`.toUpperCase(),j=Math.min(P.length+4,115),te=`\u256D${"\u2500".repeat(j)}\u256E`,be=`\u2502 ${P.padEnd(j-2).substring(0,j-2)} \u2502`,ue=`\u2570${"\u2500".repeat(j)}\u256F`;yield{type:"visual_feedback",content:`${te}
501
- ${be}
502
- ${ue}`}}H==="exec_command"&&(await new Promise(L=>setTimeout(L,50)),t.onExecChunk&&t.onExecChunk(`ERROR: ${S}`),await new Promise(L=>setTimeout(L,50)),t.onExecEnd&&t.onExecEnd()),je.push({role:"user",text:`[TOOL RESULT]: DENIED: ${S}`}),yield{type:"tool_result",content:`[TOOL RESULT]: DENIED: ${S}`},await Nn("toolDenied"),t.onToolResult&&t.onToolResult("denied",H),de++;continue}}if(Ne){let se=Math.min(Ne.length+4,115),Ae=`\u256D${"\u2500".repeat(se)}\u256E`,Qe=`\u2502 ${Ne.padEnd(se-2).substring(0,se-2)} \u2502`,Ge=`\u2570${"\u2500".repeat(se)}\u256F`;yield{type:"visual_feedback",content:`${Ae}
503
- ${Qe}
504
- ${Ge}`}}if(ft>0){let se=Date.now()-ft;se<1e3&&await new Promise(Ae=>setTimeout(Ae,1e3-se))}yield{type:"spinner",content:!1};let vn={chatId:d,history:o,onChunk:se=>t.onExecChunk?t.onExecChunk(se):null,onAskUser:t.onAskUser,systemSettings:t.systemSettings,mode:c,isMultiModal:yi(Gt)};if(H==="write_file"||H==="update_file")try{let{path:se}=oe(z.args);if(se){let Ae=Ie.resolve(process.cwd(),se),Qe=await Mr();Qe&&Qe.file_focused===Ae&&Qe.full_content&&(vn.forcedContent=Qe.full_content)}}catch{}let Oe=await is(H,z.args,vn);if(yield{type:"spinner",content:!0},H==="write_file"&&Oe.startsWith("SUCCESS")){let{path:se}=oe(z.args);se&&Qa(se)}process.stdout.isTTY&&process.stdout.write("\x1B]0;Working...\x07");let N=Date.now();ft=N,yield{type:"tool_time",content:N-ct},wt=N;let wo=null;if(typeof Oe=="object"&&Oe.binaryPart&&(wo=Oe.binaryPart,Oe=Oe.text),H==="search_keyword"){let{keyword:se,file:Ae}=oe(z.args),Qe=0;if(Oe){let M=Oe.match(/Found (\d+) matches/i);M&&(Qe=parseInt(M[1]))}let Ge=`\u{1F50E} Searched: "${se}" in ${Ae?`"${Ae}"`:"./"} \u2192 ${Qe} Match${Qe===1?"":"es"}`,Ee=Math.min(Ge.length+4,115),bt=`\u256D${"\u2500".repeat(Ee)}\u256E`,x=`\u2502 ${Ge.padEnd(Ee-2).substring(0,Ee-2)} \u2502`,g=`\u2570${"\u2500".repeat(Ee)}\u256F`;yield{type:"visual_feedback",content:`${bt}
505
- ${x}
506
- ${g}`}}H==="exec_command"&&t.onExecEnd&&(await new Promise(se=>setTimeout(se,800)),t.onExecEnd());let ur=Oe&&Oe.startsWith("DENIED:");Oe&&!Oe.startsWith("ERROR:")&&!ur?(await Nn("toolSuccess"),t.onToolResult&&t.onToolResult("success",H)):ur||(await Nn("toolFailure"),t.onToolResult&&t.onToolResult("failure",H));let Pr=`[TOOL RESULT]: ${(Oe||"").toString().split(/\r?\n/).filter(se=>!se.includes("[UI_CONTEXT]")).join(`
507
- `)}`;je.push({role:"user",text:Pr,binaryPart:wo}),Nt=!0;let Fr=`[TOOL RESULT]: ${Oe||""}`;(H==="view_file"||H==="web_scrape")&&(Fr=`[TOOL RESULT]: ${Ne} (Context Locked for UI Clarity)`),yield{type:"tool_result",content:Fr,aiContent:Pr,binaryPart:wo,toolName:H},H==="memory"&&Oe.includes("SUCCESS")&&(yield{type:"memory_updated"}),de++}f==="Google"&&tt&&Date.now()-Xt>=150&&(yield{type:"text",content:tt},tt="",Xt=Date.now())}Se.usageMetadata&&(jt=Se.usageMetadata),jt&&(yield{type:"liveTokens",content:jt.totalTokenCount})}if(re&&(re=!1,Ut?at+="</think>":(he+="</think>",f==="Google"?tt+="</think>":yield{type:"text",content:"</think>"})),Ut&&at.length>0){let Se=0,ot=Math.min(et.length,at.length);for(let We=ot;We>0;We--)if(et.endsWith(at.substring(0,We))){Se=We;break}let qt=at.substring(Se);if(qt){let Io=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(et)?qt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):qt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");Io&&(he+=Io,f==="Google"?tt+=Io:yield{type:"text",content:Io})}Ut=!1,at=""}if(f==="Google"&&tt&&(yield{type:"text",content:tt},tt=""),er)break;let go=(he||"").trim(),Kt=/\[\s*(turn\s*:)?\s*finish\s*\]/i.test(go.toLowerCase()),Dt=/\[\s*(turn\s*:)?\s*continue\s*\]/i.test(go.toLowerCase()),ro=je.length>0||st!==null,xo=go.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/gi,"").trim(),On=/(\p{Emoji_Presentation}|\p{Extended_Pictographic})$/u.test(xo),vr=/[.!?}"'`’“”]$|```$/s.test(xo)||xo.endsWith('."')||On;if(!Kt&&!Dt&&!ro&&go.length>0&&!vr&&!it&&!co&&!pt)throw new Error("Silent stream cutoff (500): Model stream closed cleanly but cut off mid-sentence without signals.");rt=!0,await Nn("agent")}catch(Ue){if(String(Ue).includes("Incomplete JSON segment at the end")){re&&(re=!1,Ut?at+="</think>":(he+="</think>",yield{type:"text",content:"</think>"})),rt=!0,await Nn("agent");break}if(re&&(re=!1,Ut?at+="</think>":he+="</think>"),Ut&&at.length>0){let Kt=0,Dt=Math.min(et.length,at.length);for(let xo=Dt;xo>0;xo--)if(et.endsWith(at.substring(0,xo))){Kt=xo;break}let ro=at.substring(Kt);if(ro){let On=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(et)?ro.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):ro.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");On&&(he+=On)}Ut=!1,at=""}let Re=Ue.status||Ue.error&&Ue.error.message||String(Ue),lt=String(Ue),Tt=new Date().toLocaleString(),tt=Ie.join(Co,"agent");Bt.existsSync(tt)||Bt.mkdirSync(tt,{recursive:!0}),Bt.appendFileSync(Ie.join(tt,"error.log"),`ERROR [${Tt}]: ${lt}
498
+ Check if Starting and Ending matches your write.`}let Dt=`\u{1F4BE} ${G==="write_file"?"Written":"Edited"}: ${_||"..."}`,vt=Math.min(Dt.length+4,115),gn=`\u256D${"\u2500".repeat(vt)}\u256E`,No=`\u2502 ${Dt.padEnd(vt-2).substring(0,vt-2)} \u2502`,po=`\u2570${"\u2500".repeat(vt)}\u256F`;yield{type:"visual_feedback",content:`${gn}
499
+ ${No}
500
+ ${po}`};let Oo=Date.now();mt=Oo,yield{type:"tool_time",content:Oo-He};let Bn=`[TOOL RESULT]: ${Se}`;Ne.push({role:"user",text:Bn}),Nt=!0,yield{type:"tool_result",content:Se,aiContent:Bn,toolName:G},ce++;continue}if(x==="deny"){let _=`Permission Denied: Prohibited ${G==="exec_command"?"Command":"file edit"}.`;if(g==="user"?_="Permission Denied by User":g==="settings"?_="Permission Denied by User Policy":g==="network"?_="Permission Denied: Sandbox Network Access Disabled by User Policy.":g==="prohibited"&&G==="exec_command"&&(_="Permission Denied: Prohibited Command"),G==="write_file"||G==="update_file"){let M=`\u{1F4BE} ${G==="write_file"?"WRITE DENIED":"UPDATE DENIED"}: ${te(z.args).path||"..."}`.toUpperCase(),P=Math.min(M.length+4,115),H=`\u256D${"\u2500".repeat(P)}\u256E`,ie=`\u2502 ${M.padEnd(P-2).substring(0,P-2)} \u2502`,_e=`\u2570${"\u2500".repeat(P)}\u256F`;yield{type:"visual_feedback",content:`${H}
501
+ ${ie}
502
+ ${_e}`}}G==="exec_command"&&(await new Promise(C=>setTimeout(C,50)),t.onExecChunk&&t.onExecChunk(`ERROR: ${_}`),await new Promise(C=>setTimeout(C,50)),t.onExecEnd&&t.onExecEnd()),Ne.push({role:"user",text:`[TOOL RESULT]: DENIED: ${_}`}),yield{type:"tool_result",content:`[TOOL RESULT]: DENIED: ${_}`},await Yn("toolDenied"),t.onToolResult&&t.onToolResult("denied",G),ce++;continue}}if(De){let se=Math.min(De.length+4,115),ve=`\u256D${"\u2500".repeat(se)}\u256E`,je=`\u2502 ${De.padEnd(se-2).substring(0,se-2)} \u2502`,Xe=`\u2570${"\u2500".repeat(se)}\u256F`;yield{type:"visual_feedback",content:`${ve}
503
+ ${je}
504
+ ${Xe}`}}if(mt>0){let se=Date.now()-mt;se<1e3&&await new Promise(ve=>setTimeout(ve,1e3-se))}yield{type:"spinner",content:!1};let Fn={chatId:d,history:o,onChunk:se=>t.onExecChunk?t.onExecChunk(se):null,onAskUser:t.onAskUser,systemSettings:t.systemSettings,mode:c,isMultiModal:Ei(Gt)};if(G==="write_file"||G==="update_file")try{let{path:se}=te(z.args);if(se){let ve=Ie.resolve(process.cwd(),se),je=await Mr();je&&je.file_focused===ve&&je.full_content&&(Fn.forcedContent=je.full_content)}}catch{}let St=await cs(G,z.args,Fn);if(yield{type:"spinner",content:!0},G==="write_file"&&St.startsWith("SUCCESS")){let{path:se}=te(z.args);se&&ol(se)}process.stdout.isTTY&&process.stdout.write("\x1B]0;Working...\x07");let Lt=Date.now();mt=Lt,yield{type:"tool_time",content:Lt-He},yt=Lt;let R=null;if(typeof St=="object"&&St.binaryPart&&(R=St.binaryPart,St=St.text),G==="search_keyword"){let{keyword:se,file:ve}=te(z.args),je=0;if(St){let g=St.match(/Found (\d+) matches/i);g&&(je=parseInt(g[1]))}let Xe=`\u{1F50E} Searched: "${se}" in ${ve?`"${ve}"`:"./"} \u2192 ${je} Match${je===1?"":"es"}`,pt=Math.min(Xe.length+4,115),be=`\u256D${"\u2500".repeat(pt)}\u256E`,fo=`\u2502 ${Xe.padEnd(pt-2).substring(0,pt-2)} \u2502`,x=`\u2570${"\u2500".repeat(pt)}\u256F`;yield{type:"visual_feedback",content:`${be}
505
+ ${fo}
506
+ ${x}`}}G==="exec_command"&&t.onExecEnd&&(await new Promise(se=>setTimeout(se,800)),t.onExecEnd());let Ao=St&&St.startsWith("DENIED:");St&&!St.startsWith("ERROR:")&&!Ao?(await Yn("toolSuccess"),t.onToolResult&&t.onToolResult("success",G)):Ao||(await Yn("toolFailure"),t.onToolResult&&t.onToolResult("failure",G));let Q=`[TOOL RESULT]: ${(St||"").toString().split(/\r?\n/).filter(se=>!se.includes("[UI_CONTEXT]")).join(`
507
+ `)}`;Ne.push({role:"user",text:Q,binaryPart:R}),Nt=!0;let Nr=`[TOOL RESULT]: ${St||""}`;(G==="view_file"||G==="web_scrape")&&(Nr=`[TOOL RESULT]: ${De} (Context Locked for UI Clarity)`),yield{type:"tool_result",content:Nr,aiContent:Q,binaryPart:R,toolName:G},G==="memory"&&St.includes("SUCCESS")&&(yield{type:"memory_updated"}),ce++}f==="Google"&&Ze&&Date.now()-Xt>=150&&(yield{type:"text",content:Ze},Ze="",Xt=Date.now())}Ee.usageMetadata&&(jt=Ee.usageMetadata),jt&&(yield{type:"liveTokens",content:jt.totalTokenCount})}if(ne&&(ne=!1,Ut?at+="</think>":(he+="</think>",f==="Google"?Ze+="</think>":yield{type:"text",content:"</think>"})),Ut&&at.length>0){let Ee=0,et=Math.min(Qe.length,at.length);for(let Be=et;Be>0;Be--)if(Qe.endsWith(at.substring(0,Be))){Ee=Be;break}let qt=at.substring(Ee);if(qt){let mo=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(Qe)?qt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):qt.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");mo&&(he+=mo,f==="Google"?Ze+=mo:yield{type:"text",content:mo})}Ut=!1,at=""}if(f==="Google"&&Ze&&(yield{type:"text",content:Ze},Ze=""),ar)break;let To=(he||"").trim(),Kt=/\[\s*(turn\s*:)?\s*finish\s*\]/i.test(To.toLowerCase()),Ot=/\[\s*(turn\s*:)?\s*continue\s*\]/i.test(To.toLowerCase()),so=Ne.length>0||st!==null,So=To.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/gi,"").trim(),$n=/(\p{Emoji_Presentation}|\p{Extended_Pictographic})$/u.test(So),vr=/[.!?}"'`’“”]$|```$/s.test(So)||So.endsWith('."')||$n;if(!Kt&&!Ot&&!so&&To.length>0&&!vr&&!it&&!uo&&!ft)throw new Error("Silent stream cutoff (500): Model stream closed cleanly but cut off mid-sentence without signals.");rt=!0,await Yn("agent")}catch(Ue){if(String(Ue).includes("Incomplete JSON segment at the end")){ne&&(ne=!1,Ut?at+="</think>":(he+="</think>",yield{type:"text",content:"</think>"})),rt=!0,await Yn("agent");break}if(ne&&(ne=!1,Ut?at+="</think>":he+="</think>"),Ut&&at.length>0){let Kt=0,Ot=Math.min(Qe.length,at.length);for(let So=Ot;So>0;So--)if(Qe.endsWith(at.substring(0,So))){Kt=So;break}let so=at.substring(Kt);if(so){let $n=/(?:<(think|thought)>|\[(think|thought)\])(?:(?!(?:<\/(?:think|thought)>|\[\/(?:think|thought)\]))[\s\S])*$/i.test(Qe)?so.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,""):so.replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])[\s\S]*?(?:<\/(think|thought)>|\[\/(think|thought)\])\s*/gi,"").replace(/^\s*(?:<(think|thought)>|\[(think|thought)\])\s*/gi,"");$n&&(he+=$n)}Ut=!1,at=""}let Re=Ue.status||Ue.error&&Ue.error.message||String(Ue),lt=String(Ue),wt=new Date().toLocaleString(),Ze=Ie.join(Io,"agent");Bt.existsSync(Ze)||Bt.mkdirSync(Ze,{recursive:!0}),Bt.appendFileSync(Ie.join(Ze,"error.log"),`ERROR [${wt}]: ${lt}
508
508
 
509
509
  ----------------------------------------------------------------------
510
510
 
511
- `);let Xt=Ue.status||Ue.statusCode||Ue.code;if(!(Xt&&(Xt>=500&&Xt<600||Xt===408)||!Xt&&(/status[ :]+(5\d\d|408)/i.test(String(Ue))||/code[ :]+(5\d\d|408)/i.test(String(Ue))||/(500|503|408)/.test(String(Ue))))&&ne<mt-3)throw Ue;if(he.trim().length>0||xe>1)if(xe<=mt){xe++;let Kt=Math.min(1e3*Math.pow(2,xe-1),24e3);if(he.trim().length>0){I.push({role:"agent",text:he});let Dt=`[SYSTEM]
511
+ `);let Xt=Ue.status||Ue.statusCode||Ue.code;if(!(Xt&&(Xt>=500&&Xt<600||Xt===408)||!Xt&&(/status[ :]+(5\d\d|408)/i.test(String(Ue))||/code[ :]+(5\d\d|408)/i.test(String(Ue))||/(500|503|408)/.test(String(Ue))))&&oe<ut-3)throw Ue;if(he.trim().length>0||ge>1)if(ge<=ut){ge++;let Kt=Math.min(1e3*Math.pow(2,ge-1),24e3);if(he.trim().length>0){I.push({role:"agent",text:he});let Ot=`[SYSTEM]
512
512
  - SEAMLESS CONTINUATION: Resume immediately. Pick up from last words with zero gap/disruption
513
513
  - NO REPETITION: Do not repeat any text already written
514
514
  - NO RE-THINK: Do not restart or open <think> if reasoning already started. Continue the thinking and close thinking block with </think> if opened
515
515
  - MID-TOOL SAFETY: If cutoff was mid-tool call, restart that tool call from start
516
- - STEALTH: Do not mention/apologize for cutoff`;je.length>0?je.forEach((ro,xo)=>{xo===je.length-1?I.push({...ro,text:`${ro.text}
516
+ - STEALTH: Do not mention/apologize for cutoff`;Ne.length>0?Ne.forEach((so,So)=>{So===Ne.length-1?I.push({...so,text:`${so.text}
517
517
 
518
- ${Dt}`}):I.push(ro)}):I.push({role:"user",text:Dt}),et+=he}for(let Dt=Kt/1e3;Dt>0;Dt--)yield{type:"status",content:`Error Occured. Recovering Stream (${xe}/${mt}) [Retrying in ${Dt}s]...`},await new Promise(ro=>setTimeout(ro,1e3));yield{type:"status",content:"Error Occured. Recovering Stream..."}}else throw new Error(`Stream collapsed too many times. (Failed to resolve ${mt} times)
519
- Error Log can be found in ${Ie.join(Co,"agent","error.log")}`);else if(ne<=mt){ne++,xe=1,et="";let Kt=Math.min(1e3*Math.pow(2,ne-1),32e3);un=!0,yield{type:"status",content:`Trying to reach ${e} (${ne}/${mt}) [Retrying in ${(Kt/1e3).toFixed(0)}s]...`};for(let Dt=Kt/1e3;Dt>0;Dt--)yield{type:"status",content:`Trying to reach ${e} (${ne}/${mt}) [Retrying in ${Dt}s]...`},await new Promise(ro=>setTimeout(ro,1e3));yield{type:"status",content:`Trying to reach ${e}...`}}else throw new Error(`Model ${e} cannot be reached. (Failed ${mt} times)
520
- Error Log can be found in ${Ie.join(Co,"agent","error.log")}`)}}if(jt){let re=jt.totalTokenCount||0,Ue=jt.cachedContentTokenCount||0,Re=(jt.candidatesTokenCount||0)+(jt.thoughtsTokenCount||0);await fo("tokens",re),Ue>0&&await fo("cachedTokens",Ue),Re>0&&await fo("candidateTokens",Re),yield{type:"usage",content:jt}}ko.push(he);let hs=he;he.match(/(?:<think>|\[think\])([\s\S]*?)(?:<\/think>|\[\/think\])/i)&&(hs=he.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/i,""));let Dr=tl(he),Hn=/\[\s*(turn\s*:)?\s*finish\s*\]/i.test(Dr.toLowerCase()),Li=/\[\s*(turn\s*:)?\s*continue\s*\]/i.test(Dr.toLowerCase()),rr=de>0;yield{type:"status",content:"Working..."};let gs=Uc(he,/\[\s*(turn\s*:)?\s*(continue|finish)\s*\]/gi,"").trim(),sr=(Hn||je.length===0)&&!it&&!co&&!pt;if(sr){let re=ko.join(`
521
- `),Ue=re.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").trim();yield{type:"interactive_turn_finished",data:{agentText:F,fullAgentTextRaw:re,history:[...I],needTitle:K}},I.length>0&&I[I.length-1].role==="agent"?I[I.length-1].text=Ue:I.push({role:"agent",text:Ue});try{let Re=we(E,{}),lt=Re[d]||{summary:"",historyLength:0};typeof lt=="string"&&(lt={summary:lt,historyLength:0});let Tt=I.filter(tt=>(tt.role==="user"||tt.role==="agent"||tt.role==="system")&&!String(tt.id).startsWith("welcome")&&!tt.isMeta).length;k?lt.historyLength=(lt.historyLength||0)+Tt:lt.historyLength=Tt,Re[d]=lt,ke(E,Re)}catch{}}if(sr)break;let xs=gs.trim()||"*Working...*";if(I.push({role:"agent",text:xs}),je.length>0||Nt){if(je.length>0){let re=je.map(Re=>Re.text).join(`
518
+ ${Ot}`}):I.push(so)}):I.push({role:"user",text:Ot}),Qe+=he}for(let Ot=Kt/1e3;Ot>0;Ot--)yield{type:"status",content:`Error Occured. Recovering Stream (${ge}/${ut}) [Retrying in ${Ot}s]...`},await new Promise(so=>setTimeout(so,1e3));yield{type:"status",content:"Error Occured. Recovering Stream..."}}else throw new Error(`Stream collapsed too many times. (Failed to resolve ${ut} times)
519
+ Error Log can be found in ${Ie.join(Io,"agent","error.log")}`);else if(oe<=ut){oe++,ge=1,Qe="";let Kt=Math.min(1e3*Math.pow(2,oe-1),32e3);mn=!0,yield{type:"status",content:`Trying to reach ${e} (${oe}/${ut}) [Retrying in ${(Kt/1e3).toFixed(0)}s]...`};for(let Ot=Kt/1e3;Ot>0;Ot--)yield{type:"status",content:`Trying to reach ${e} (${oe}/${ut}) [Retrying in ${Ot}s]...`},await new Promise(so=>setTimeout(so,1e3));yield{type:"status",content:`Trying to reach ${e}...`}}else throw new Error(`Model ${e} cannot be reached. (Failed ${ut} times)
520
+ Error Log can be found in ${Ie.join(Io,"agent","error.log")}`)}}if(jt){let ne=jt.totalTokenCount||0,Ue=jt.cachedContentTokenCount||0,Re=(jt.candidatesTokenCount||0)+(jt.thoughtsTokenCount||0);await xo("tokens",ne),Ue>0&&await xo("cachedTokens",Ue),Re>0&&await xo("candidateTokens",Re),yield{type:"usage",content:jt}}Mo.push(he);let ys=he;he.match(/(?:<think>|\[think\])([\s\S]*?)(?:<\/think>|\[\/think\])/i)&&(ys=he.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/i,""));let Dr=sl(he),Kn=/\[\s*(turn\s*:)?\s*finish\s*\]/i.test(Dr.toLowerCase()),Fi=/\[\s*(turn\s*:)?\s*continue\s*\]/i.test(Dr.toLowerCase()),ur=ce>0;yield{type:"status",content:"Working..."};let ws=Hc(he,/\[\s*(turn\s*:)?\s*(continue|finish)\s*\]/gi,"").trim(),vn=(Kn||Ne.length===0)&&!it&&!uo&&!ft;if(vn=Ne.length===0?vn:!1,vn){let ne=Mo.join(`
521
+ `),Ue=ne.replace(/(?:<think>|\[think\])[\s\S]*?(?:<\/think>|\[\/think\])/g,"").trim();yield{type:"interactive_turn_finished",data:{agentText:F,fullAgentTextRaw:ne,history:[...I],needTitle:K}},I.length>0&&I[I.length-1].role==="agent"?I[I.length-1].text=Ue:I.push({role:"agent",text:Ue});try{let Re=ye(S,{}),lt=Re[d]||{summary:"",historyLength:0};typeof lt=="string"&&(lt={summary:lt,historyLength:0});let wt=I.filter(Ze=>(Ze.role==="user"||Ze.role==="agent"||Ze.role==="system")&&!String(Ze.id).startsWith("welcome")&&!Ze.isMeta).length;k?lt.historyLength=(lt.historyLength||0)+wt:lt.historyLength=wt,Re[d]=lt,ke(S,Re)}catch{}}if(vn)break;let Ts=ws.trim()||"*Working...*";if(I.push({role:"agent",text:Ts}),Ne.length>0||Nt){if(Ne.length>0){let ne=Ne.map(Re=>Re.text).join(`
522
522
 
523
- `),Ue=je.find(Re=>Re.binaryPart)?.binaryPart||null;I.push({role:"user",text:re,binaryPart:Ue})}}else _t?I.push({role:"user",text:"[SYSTEM] Failed to verify tool execution, Verify tool syntax, proper escaping or ask user if tool worked if unsure"}):I.push({role:"user",text:`[SYSTEM] ${co&&!it?"STUTTERING DETECTED by Internal System. Re-calibrate your response & proceed.":`${it?" OVER-THINKING":" LOOP"} DETECTED by Internal System${it?" for current EFFORT_LEVEL":""}. ${it?"If you have planned the task, prioritize the execution/output":"If you have finished your task use [turn: finish] else continue"}`}`}),it=!1,co=!1,pt=!1;_t=de>0||Nt}e&&e.toLowerCase().startsWith("gemma")&&I.forEach(Q=>{if(Q.role==="user"&&Q.text&&Q.text.startsWith("[TOOL RESULT]")){let Me=`
523
+ `),Ue=Ne.find(Re=>Re.binaryPart)?.binaryPart||null;I.push({role:"user",text:ne,binaryPart:Ue})}}else _t?I.push({role:"user",text:"[SYSTEM] Failed to verify tool execution, Verify tool syntax, proper escaping or ask user if tool worked if unsure"}):I.push({role:"user",text:`[SYSTEM] ${uo&&!it?"STUTTERING DETECTED by Internal System. Re-calibrate your response & proceed.":`${it?" OVER-THINKING":" LOOP"} DETECTED by Internal System${it?" for current EFFORT_LEVEL":""}. ${it?"If you have planned the task, prioritize the execution/output":"If you have finished your task use [turn: finish] else continue"}`}`}),it=!1,uo=!1,ft=!1;_t=ce>0||Nt}e&&e.toLowerCase().startsWith("gemma")&&I.forEach(Z=>{if(Z.role==="user"&&Z.text&&Z.text.startsWith("[TOOL RESULT]")){let Me=`
524
524
  [SYSTEM] Tool result received. Analyze output and proceed with your turn`,rt=`
525
- [SYSTEM] Tool result received. Analyze output and proceed with your turn. **STRICTLY MAINTAIN THINKING POLICY. DO NOT START A RESPONSE WITHOUT <think> ... </think>}**`;Q.text=Q.text.replace(rt,"").replace(Me,"").trim()}})}finally{await Et.commitTransaction()}yield{type:"status",content:null}}});import Lt,{useState as bi,useEffect as Wc}from"react";import{Box as Yo,Text as kn,useInput as Yc}from"ink";function Ci({onSelect:e,onDelete:o,onClose:t}){let[n,i]=bi({}),[r,l]=bi([]),[c,m]=bi(0);Wc(()=>{(async()=>{let h=await $o();i(h),l(Object.keys(h).sort((T,w)=>(h[w].updatedAt||0)-(h[T].updatedAt||0)))})()},[]),Yc((p,h)=>{if(h.escape&&t(),h.upArrow&&m(T=>Math.max(0,T-1)),h.downArrow&&m(T=>Math.min(r.length-1,T+1)),h.return&&r[c]&&e(r[c]),p==="x"&&r[c]){let T=r[c];o(T).then(w=>{let E=w||{};i(E);let k=Object.keys(E).sort((D,_)=>(E[_]?.updatedAt||0)-(E[D]?.updatedAt||0));l(k),m(D=>Math.max(0,Math.min(k.length-1,D)))})}});let d=Ce(2),u=15,a=0;if(r.length>u){let p=Math.floor(u/2);a=c-p,a<0?a=0:a+u>r.length&&(a=r.length-u)}let f=r.slice(a,a+u);return Lt.createElement(Yo,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},Lt.createElement(Yo,{paddingX:1,marginBottom:1},Lt.createElement(kn,{color:"cyan",bold:!0},"\u{1F4A0} CHAT HISTORY: RESUME CONVERSATION")),r.length===0?Lt.createElement(Yo,{paddingX:2,paddingY:1},Lt.createElement(kn,{italic:!0,color:"gray"},"No saved chats found.")):Lt.createElement(Yo,{flexDirection:"column",width:"100%"},a>0&&Lt.createElement(Yo,{paddingX:2,marginBottom:1},Lt.createElement(kn,{color:"gray",dimColor:!0},"\u25B2 (+",a," more chats above)")),f.map((p,h)=>{let T=n[p],E=a+h===c,k=Hc(T?.updatedAt);return Lt.createElement(Yo,{key:p,paddingX:1,backgroundColor:E?"#2a2a2a":void 0,width:"100%"},Lt.createElement(Yo,{flexGrow:1},Lt.createElement(kn,{color:E?"cyan":"white",bold:E},E?"\u276F ":" ",T?.name||p,Lt.createElement(kn,{color:"gray",dimColor:!E}," [",k," \u2022 ",p.slice(5),"]"))),E&&Lt.createElement(Yo,{flexShrink:0},Lt.createElement(kn,{color:"red",bold:!0},"[X] DELETE ")))}),a+u<r.length&&Lt.createElement(Yo,{paddingX:2,marginTop:1},Lt.createElement(kn,{color:"gray",dimColor:!0},"\u25BC (+",r.length-(a+u)," more chats below)"))),Lt.createElement(Yo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},Lt.createElement(kn,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Hc(e){if(!e)return"N/A";let o=new Date(e);if(isNaN(o.getTime()))return"N/A";let t=c=>String(c).padStart(2,"0"),n=t(o.getMonth()+1),i=t(o.getDate()),r=t(o.getHours()),l=t(o.getMinutes());return`${n}-${i} ${r}:${l}`}var ll=ie(()=>{Er();hn()});import kt,{useState as ki,useEffect as jc}from"react";import{Box as Ho,Text as ln,useInput as Gc}from"ink";function Ii({onClose:e}){let[o,t]=ki([]),[n,i]=ki(0),[r,l]=ki(!0),c=()=>{let E=we(Ft,[]);t(E);try{let D=Kr(Zt,{}).systemSettings?.memory!==!1;l(D)}catch{l(!0)}};jc(()=>{c()},[]),Gc((E,k)=>{if(k.escape&&e(),k.upArrow&&i(D=>Math.max(0,D-1)),k.downArrow&&i(D=>Math.min(o.length-1,D+1)),E==="x"&&o.length>0){let D=o[n].id,_=o.filter(K=>K.id!==D);ke(Ft,_),t(_),n>=_.length&&_.length>0&&i(_.length-1)}});let m=E=>E?E.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim():"",d=4*1024*2,u=o.reduce((E,k)=>E+(k.memory?.length||0),0),a=Math.min(100,Math.round(u/d*100)),f=12,p=Math.round(a/100*f),h="\u2588".repeat(p)+"\u2591".repeat(Math.max(0,f-p)),T=()=>a<50?"green":a<90?"yellow":"red",w=Ce(2);return kt.createElement(Ho,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},kt.createElement(Ho,{paddingX:1,marginBottom:1,justifyContent:"space-between"},kt.createElement(ln,{color:"cyan",bold:!0},"\u{1F9E0} AGENT MEMORY: LONG-TERM KNOWLEDGE"),kt.createElement(Ho,null,kt.createElement(ln,{color:"gray"},"Vault: "),kt.createElement(ln,{color:T()},h),kt.createElement(ln,{color:"white",bold:!0}," ",a,"%"))),!r&&o.length>0?kt.createElement(Ho,{paddingX:2,paddingY:1},kt.createElement(ln,{italic:!0,color:"gray"},"Memory is currently Off...")):o.length===0?kt.createElement(Ho,{paddingX:2,paddingY:1},kt.createElement(ln,{italic:!0,color:"gray"},r?"Learning...":"Memory not available...")):kt.createElement(Ho,{flexDirection:"column"},o.map((E,k)=>{let D=k===n;return kt.createElement(Ho,{key:E.id,paddingX:1,backgroundColor:D?"#2a2a2a":void 0,width:"100%"},kt.createElement(Ho,{flexGrow:1},kt.createElement(ln,{color:D?"cyan":"white",bold:D},D?"\u276F ":" ",k+1,". ",m(E.memory))),D&&kt.createElement(Ho,{flexShrink:0},kt.createElement(ln,{color:"red",bold:!0},"[X] WIPE ")))})),kt.createElement(Ho,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},kt.createElement(ln,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}var cl=ie(()=>{vo();to();hn()});import Ze,{useState as ds,useEffect as dl}from"react";import{Box as In,Text as Yt}from"ink";import{spawn as ul}from"child_process";var us,ml,Xc,fl,pl=ie(async()=>{us=null;try{let e=await import("node-pty");us=e.default||e,us=!1}catch{}ml=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Xc=({latest:e,current:o,settings:t,onClose:n,onUpdateSettings:i,onSuccess:r})=>{let[l,c]=ds("initializing"),[m,d]=ds(""),[u,a]=ds(null),[f,p]=ds(0);if(dl(()=>{let h=setInterval(()=>{p(T=>(T+1)%1e3)},33);return()=>clearInterval(h)},[]),dl(()=>{let h;return(async()=>{let w=t.updateManager||"npm";if(!t.updateManager){i();return}let E="";w==="pnpm"?E=`pnpm add -g fluxflow-cli@${e}`:w==="bun"?E=`bun add -g fluxflow-cli@${e}`:w==="yarn"?E=`yarn global add fluxflow-cli@${e}`:w==="custom"?E=t.customUpdateCommand:E=`npm install -g fluxflow-cli@${e}`,c("downloading"),d(`Running: ${E}...`);let k=process.platform==="win32",D=K=>new Promise(F=>{let I=k?K?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",A=k?K?["-NoProfile","-Command",E]:["/c",E]:["-c",E],v=q=>{let U=q.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();U&&d(G=>(G+`
526
- `+U).split(`
525
+ [SYSTEM] Tool result received. Analyze output and proceed with your turn. **STRICTLY MAINTAIN THINKING POLICY. DO NOT START A RESPONSE WITHOUT <think> ... </think>}**`;Z.text=Z.text.replace(rt,"").replace(Me,"").trim()}})}finally{await bt.commitTransaction()}yield{type:"status",content:null}}});import At,{useState as Ai,useEffect as Gc}from"react";import{Box as Go,Text as On,useInput as Xc}from"ink";function Oi({onSelect:e,onDelete:o,onClose:t}){let[n,i]=Ai({}),[r,l]=Ai([]),[c,m]=Ai(0);Gc(()=>{(async()=>{let h=await $o();i(h),l(Object.keys(h).sort((T,w)=>(h[w].updatedAt||0)-(h[T].updatedAt||0)))})()},[]),Xc((p,h)=>{if(h.escape&&t(),h.upArrow&&m(T=>Math.max(0,T-1)),h.downArrow&&m(T=>Math.min(r.length-1,T+1)),h.return&&r[c]&&e(r[c]),p==="x"&&r[c]){let T=r[c];o(T).then(w=>{let S=w||{};i(S);let k=Object.keys(S).sort((D,U)=>(S[U]?.updatedAt||0)-(S[D]?.updatedAt||0));l(k),m(D=>Math.max(0,Math.min(k.length-1,D)))})}});let d=Ce(2),u=15,a=0;if(r.length>u){let p=Math.floor(u/2);a=c-p,a<0?a=0:a+u>r.length&&(a=r.length-u)}let f=r.slice(a,a+u);return At.createElement(Go,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},At.createElement(Go,{paddingX:1,marginBottom:1},At.createElement(On,{color:"cyan",bold:!0},"\u{1F4A0} CHAT HISTORY: RESUME CONVERSATION")),r.length===0?At.createElement(Go,{paddingX:2,paddingY:1},At.createElement(On,{italic:!0,color:"gray"},"No saved chats found.")):At.createElement(Go,{flexDirection:"column",width:"100%"},a>0&&At.createElement(Go,{paddingX:2,marginBottom:1},At.createElement(On,{color:"gray",dimColor:!0},"\u25B2 (+",a," more chats above)")),f.map((p,h)=>{let T=n[p],S=a+h===c,k=Kc(T?.updatedAt);return At.createElement(Go,{key:p,paddingX:1,backgroundColor:S?"#2a2a2a":void 0,width:"100%"},At.createElement(Go,{flexGrow:1},At.createElement(On,{color:S?"cyan":"white",bold:S},S?"\u276F ":" ",T?.name||p,At.createElement(On,{color:"gray",dimColor:!S}," [",k," \u2022 ",p.slice(5),"]"))),S&&At.createElement(Go,{flexShrink:0},At.createElement(On,{color:"red",bold:!0},"[X] DELETE ")))}),a+u<r.length&&At.createElement(Go,{paddingX:2,marginTop:1},At.createElement(On,{color:"gray",dimColor:!0},"\u25BC (+",r.length-(a+u)," more chats below)"))),At.createElement(Go,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},At.createElement(On,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Kc(e){if(!e)return"N/A";let o=new Date(e);if(isNaN(o.getTime()))return"N/A";let t=c=>String(c).padStart(2,"0"),n=t(o.getMonth()+1),i=t(o.getDate()),r=t(o.getHours()),l=t(o.getMinutes());return`${n}-${i} ${r}:${l}`}var ml=re(()=>{Er();wn()});import kt,{useState as Li,useEffect as qc}from"react";import{Box as Xo,Text as cn,useInput as Vc}from"ink";function Di({onClose:e}){let[o,t]=Li([]),[n,i]=Li(0),[r,l]=Li(!0),c=()=>{let S=ye(Ft,[]);t(S);try{let D=zr(eo,{}).systemSettings?.memory!==!1;l(D)}catch{l(!0)}};qc(()=>{c()},[]),Vc((S,k)=>{if(k.escape&&e(),k.upArrow&&i(D=>Math.max(0,D-1)),k.downArrow&&i(D=>Math.min(o.length-1,D+1)),S==="x"&&o.length>0){let D=o[n].id,U=o.filter(K=>K.id!==D);ke(Ft,U),t(U),n>=U.length&&U.length>0&&i(U.length-1)}});let m=S=>S?S.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim():"",d=4*1024*2,u=o.reduce((S,k)=>S+(k.memory?.length||0),0),a=Math.min(100,Math.round(u/d*100)),f=12,p=Math.round(a/100*f),h="\u2588".repeat(p)+"\u2591".repeat(Math.max(0,f-p)),T=()=>a<50?"green":a<90?"yellow":"red",w=Ce(2);return kt.createElement(Xo,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},kt.createElement(Xo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},kt.createElement(cn,{color:"cyan",bold:!0},"\u{1F9E0} AGENT MEMORY: LONG-TERM KNOWLEDGE"),kt.createElement(Xo,null,kt.createElement(cn,{color:"gray"},"Vault: "),kt.createElement(cn,{color:T()},h),kt.createElement(cn,{color:"white",bold:!0}," ",a,"%"))),!r&&o.length>0?kt.createElement(Xo,{paddingX:2,paddingY:1},kt.createElement(cn,{italic:!0,color:"gray"},"Memory is currently Off...")):o.length===0?kt.createElement(Xo,{paddingX:2,paddingY:1},kt.createElement(cn,{italic:!0,color:"gray"},r?"Learning...":"Memory not available...")):kt.createElement(Xo,{flexDirection:"column"},o.map((S,k)=>{let D=k===n;return kt.createElement(Xo,{key:S.id,paddingX:1,backgroundColor:D?"#2a2a2a":void 0,width:"100%"},kt.createElement(Xo,{flexGrow:1},kt.createElement(cn,{color:D?"cyan":"white",bold:D},D?"\u276F ":" ",k+1,". ",m(S.memory))),D&&kt.createElement(Xo,{flexShrink:0},kt.createElement(cn,{color:"red",bold:!0},"[X] WIPE ")))})),kt.createElement(Xo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"gray"},kt.createElement(cn,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}var fl=re(()=>{vo();oo();wn()});import Je,{useState as fs,useEffect as pl}from"react";import{Box as Ln,Text as Yt}from"ink";import{spawn as hl}from"child_process";var ps,gl,zc,xl,yl=re(async()=>{ps=null;try{let e=await import("node-pty");ps=e.default||e,ps=!1}catch{}gl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],zc=({latest:e,current:o,settings:t,onClose:n,onUpdateSettings:i,onSuccess:r})=>{let[l,c]=fs("initializing"),[m,d]=fs(""),[u,a]=fs(null),[f,p]=fs(0);if(pl(()=>{let h=setInterval(()=>{p(T=>(T+1)%1e3)},33);return()=>clearInterval(h)},[]),pl(()=>{let h;return(async()=>{let w=t.updateManager||"npm";if(!t.updateManager){i();return}let S="";w==="pnpm"?S=`pnpm add -g fluxflow-cli@${e}`:w==="bun"?S=`bun add -g fluxflow-cli@${e}`:w==="yarn"?S=`yarn global add fluxflow-cli@${e}`:w==="custom"?S=t.customUpdateCommand:S=`npm install -g fluxflow-cli@${e}`,c("downloading"),d(`Running: ${S}...`);let k=process.platform==="win32",D=K=>new Promise(F=>{let I=k?K?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",L=k?K?["-NoProfile","-Command",S]:["/c",S]:["-c",S],v=q=>{let W=q.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();W&&d(X=>(X+`
526
+ `+W).split(`
527
527
  `).slice(-5).join(`
528
- `))};if(us)try{let q=us.spawn(I,A,{name:"xterm-256color",cols:80,rows:30,cwd:process.cwd(),env:process.env});h=q,q.onData(v),q.onExit(({exitCode:le})=>{h=null,F(le!==0?{error:`Process exited with code ${le}`}:{success:!0})});return}catch(q){if(k&&K&&q.code==="ENOENT"){F({retryCmd:!0});return}}let J=k?ul(I,A,{cwd:process.cwd(),env:process.env}):ul(E,{shell:!0,cwd:process.cwd(),env:process.env});h=J,J.stdout.on("data",v),J.stderr.on("data",v),J.on("close",q=>{h=null,F(q!==0?{error:`Process exited with code ${q}`}:{success:!0})}),J.on("error",q=>{k&&K&&q.code==="ENOENT"?F({retryCmd:!0}):(h=null,F({error:q.message}))})}),_={};k?(_=await D(!0),_.retryCmd&&(_=await D(!1))):_=await D(!1),_.error?(a(_.error),c("error")):_.success&&(c("success"),r&&r())})(),()=>{if(h)try{typeof h.destroy=="function"?h.destroy():typeof h.kill=="function"&&h.kill()}catch{}}},[]),l==="initializing"||l==="downloading"){let h=ml[Math.floor(f/3)%ml.length];return Ze.createElement(In,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1},Ze.createElement(In,null,Ze.createElement(Yt,{color:"magenta"},h),Ze.createElement(Yt,{marginLeft:1,bold:!0}," Updating Flux Flow to v",e,"...")),Ze.createElement(In,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:"#333"},Ze.createElement(Yt,{color:"gray",italic:!0},m||"Preparing environment...")),Ze.createElement(Yt,{marginTop:1,dimColor:!0},"(Please do not close the terminal)"))}return l==="success"?Ze.createElement(In,{flexDirection:"column",borderStyle:"round",borderColor:"green",paddingX:2,paddingY:1},Ze.createElement(Yt,{color:"green",bold:!0},"\u2705 UPDATE SUCCESSFUL!"),Ze.createElement(Yt,{marginTop:1},"Flux Flow has been updated to ",Ze.createElement(Yt,{color:"cyan"},"v",e),"."),Ze.createElement(Yt,{marginTop:1,color:"yellow",bold:!0},"Please restart your terminal session to apply changes."),Ze.createElement(In,{marginTop:1},Ze.createElement(Yt,{dimColor:!0},"(Press ESC to return to chat)"))):l==="error"?Ze.createElement(In,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1},Ze.createElement(Yt,{color:"red",bold:!0},"\u274C UPDATE FAILED"),Ze.createElement(In,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:"red"},Ze.createElement(Yt,{color:"red"},u)),Ze.createElement(Yt,{marginTop:1},"Possible causes:"),Ze.createElement(Yt,null,"\u2022 Missing permissions (Try running as Administrator/Sudo)"),Ze.createElement(Yt,null,"\u2022 Package manager (",t.updateManager,") not found"),Ze.createElement(Yt,null,"\u2022 Network failure"),Ze.createElement(In,{marginTop:1},Ze.createElement(Yt,{dimColor:!0},"(Press ESC to return to chat)"))):null},fl=Xc});import It,{useState as Kc}from"react";import{Box as jo,Text as cn,useInput as qc}from"ink";function Mi({prompts:e,onSelect:o,onClose:t}){let[n,i]=Kc(0);qc((d,u)=>{u.escape&&t(),u.upArrow&&i(a=>Math.max(0,a-1)),u.downArrow&&i(a=>Math.min(e.length-1,a+1)),u.return&&e[n]&&o(e[n].id)});let r=Ce(2),l=10,c=0;if(e.length>l){let d=Math.floor(l/2);c=n-d,c<0?c=0:c+l>e.length&&(c=e.length-l)}let m=e.slice(c,c+l);return It.createElement(jo,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",padding:0,width:"100%"},It.createElement(jo,{paddingX:1,marginBottom:1},It.createElement(cn,{color:"cyan",bold:!0},"\u{1F504} CODEBASE TIME TRAVEL: SELECT UNDO POINT")),It.createElement(jo,{paddingX:2,marginBottom:1},It.createElement(cn,null,"Select a prompt to revert the codebase back to the state ",It.createElement(cn,{bold:!0,color:"blue"},"immediately before")," it was executed:")),e.length===0?It.createElement(jo,{paddingX:2,paddingY:1},It.createElement(cn,{italic:!0,color:"gray"},"No prompt checkpoints found for this session.")):It.createElement(jo,{flexDirection:"column",width:"100%"},c>0&&It.createElement(jo,{paddingX:2,marginBottom:1},It.createElement(cn,{color:"gray",dimColor:!0},"\u25B2 (+",c," more prompts above)")),m.map((d,u)=>{let f=c+u===n,p=zc(d.timestamp),h=d.changes?d.changes.length:0;return It.createElement(jo,{key:d.id,paddingX:1,backgroundColor:f?"#1a2a3a":void 0,width:"100%"},It.createElement(jo,{flexGrow:1},It.createElement(cn,{color:f?"cyan":"white",bold:f},f?"\u276F ":" ",'"',Vc(d.prompt),'"',It.createElement(cn,{color:"gray",dimColor:!f}," [",p," \u2022 ",h," file(s) changed]"))))}),c+l<e.length&&It.createElement(jo,{paddingX:2,marginTop:1},It.createElement(cn,{color:"gray",dimColor:!0},"\u25BC (+",e.length-(c+l)," more prompts below)"))),It.createElement(jo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"cyan"},It.createElement(cn,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 Enter select undo point \u2022 Esc close")))}function Vc(e){if(!e)return"";let t=(e.split(`
528
+ `))};if(ps)try{let q=ps.spawn(I,L,{name:"xterm-256color",cols:80,rows:30,cwd:process.cwd(),env:process.env});h=q,q.onData(v),q.onExit(({exitCode:ae})=>{h=null,F(ae!==0?{error:`Process exited with code ${ae}`}:{success:!0})});return}catch(q){if(k&&K&&q.code==="ENOENT"){F({retryCmd:!0});return}}let J=k?hl(I,L,{cwd:process.cwd(),env:process.env}):hl(S,{shell:!0,cwd:process.cwd(),env:process.env});h=J,J.stdout.on("data",v),J.stderr.on("data",v),J.on("close",q=>{h=null,F(q!==0?{error:`Process exited with code ${q}`}:{success:!0})}),J.on("error",q=>{k&&K&&q.code==="ENOENT"?F({retryCmd:!0}):(h=null,F({error:q.message}))})}),U={};k?(U=await D(!0),U.retryCmd&&(U=await D(!1))):U=await D(!1),U.error?(a(U.error),c("error")):U.success&&(c("success"),r&&r())})(),()=>{if(h)try{typeof h.destroy=="function"?h.destroy():typeof h.kill=="function"&&h.kill()}catch{}}},[]),l==="initializing"||l==="downloading"){let h=gl[Math.floor(f/3)%gl.length];return Je.createElement(Ln,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1},Je.createElement(Ln,null,Je.createElement(Yt,{color:"magenta"},h),Je.createElement(Yt,{marginLeft:1,bold:!0}," Updating Flux Flow to v",e,"...")),Je.createElement(Ln,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:"#333"},Je.createElement(Yt,{color:"gray",italic:!0},m||"Preparing environment...")),Je.createElement(Yt,{marginTop:1,dimColor:!0},"(Please do not close the terminal)"))}return l==="success"?Je.createElement(Ln,{flexDirection:"column",borderStyle:"round",borderColor:"green",paddingX:2,paddingY:1},Je.createElement(Yt,{color:"green",bold:!0},"\u2705 UPDATE SUCCESSFUL!"),Je.createElement(Yt,{marginTop:1},"Flux Flow has been updated to ",Je.createElement(Yt,{color:"cyan"},"v",e),"."),Je.createElement(Yt,{marginTop:1,color:"yellow",bold:!0},"Please restart your terminal session to apply changes."),Je.createElement(Ln,{marginTop:1},Je.createElement(Yt,{dimColor:!0},"(Press ESC to return to chat)"))):l==="error"?Je.createElement(Ln,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1},Je.createElement(Yt,{color:"red",bold:!0},"\u274C UPDATE FAILED"),Je.createElement(Ln,{marginTop:1,paddingX:1,borderStyle:"single",borderColor:"red"},Je.createElement(Yt,{color:"red"},u)),Je.createElement(Yt,{marginTop:1},"Possible causes:"),Je.createElement(Yt,null,"\u2022 Missing permissions (Try running as Administrator/Sudo)"),Je.createElement(Yt,null,"\u2022 Package manager (",t.updateManager,") not found"),Je.createElement(Yt,null,"\u2022 Network failure"),Je.createElement(Ln,{marginTop:1},Je.createElement(Yt,{dimColor:!0},"(Press ESC to return to chat)"))):null},xl=zc});import It,{useState as Jc}from"react";import{Box as Ko,Text as dn,useInput as Qc}from"ink";function vi({prompts:e,onSelect:o,onClose:t}){let[n,i]=Jc(0);Qc((d,u)=>{u.escape&&t(),u.upArrow&&i(a=>Math.max(0,a-1)),u.downArrow&&i(a=>Math.min(e.length-1,a+1)),u.return&&e[n]&&o(e[n].id)});let r=Ce(2),l=10,c=0;if(e.length>l){let d=Math.floor(l/2);c=n-d,c<0?c=0:c+l>e.length&&(c=e.length-l)}let m=e.slice(c,c+l);return It.createElement(Ko,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",padding:0,width:"100%"},It.createElement(Ko,{paddingX:1,marginBottom:1},It.createElement(dn,{color:"cyan",bold:!0},"\u{1F504} CODEBASE TIME TRAVEL: SELECT UNDO POINT")),It.createElement(Ko,{paddingX:2,marginBottom:1},It.createElement(dn,null,"Select a prompt to revert the codebase back to the state ",It.createElement(dn,{bold:!0,color:"blue"},"immediately before")," it was executed:")),e.length===0?It.createElement(Ko,{paddingX:2,paddingY:1},It.createElement(dn,{italic:!0,color:"gray"},"No prompt checkpoints found for this session.")):It.createElement(Ko,{flexDirection:"column",width:"100%"},c>0&&It.createElement(Ko,{paddingX:2,marginBottom:1},It.createElement(dn,{color:"gray",dimColor:!0},"\u25B2 (+",c," more prompts above)")),m.map((d,u)=>{let f=c+u===n,p=ed(d.timestamp),h=d.changes?d.changes.length:0;return It.createElement(Ko,{key:d.id,paddingX:1,backgroundColor:f?"#1a2a3a":void 0,width:"100%"},It.createElement(Ko,{flexGrow:1},It.createElement(dn,{color:f?"cyan":"white",bold:f},f?"\u276F ":" ",'"',Zc(d.prompt),'"',It.createElement(dn,{color:"gray",dimColor:!f}," [",p," \u2022 ",h," file(s) changed]"))))}),c+l<e.length&&It.createElement(Ko,{paddingX:2,marginTop:1},It.createElement(dn,{color:"gray",dimColor:!0},"\u25BC (+",e.length-(c+l)," more prompts below)"))),It.createElement(Ko,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:"cyan"},It.createElement(dn,{dimColor:!0,italic:!0},"\u2191\u2193 navigate \u2022 Enter select undo point \u2022 Esc close")))}function Zc(e){if(!e)return"";let t=(e.split(`
529
529
  `)[0]||"").replace(/@\[(.*?)\]/g,(n,i)=>{let r=i.replace(/\\/g,"/").split("/");return`[${r[r.length-1]}]`});return t.length>69?t.slice(0,67)+"...":e.includes(`
530
- `)?t+"...":t}function zc(e){if(!e)return"N/A";let o=new Date(e);if(isNaN(o.getTime()))return"N/A";let t=l=>String(l).padStart(2,"0"),n=t(o.getHours()),i=t(o.getMinutes()),r=t(o.getSeconds());return`${n}:${i}:${r}`}var hl=ie(()=>{hn()});import Jc from"puppeteer";import{exec as Qc}from"child_process";import{promisify as Zc}from"util";import ed from"fs";var gl,xl,yl,wl=ie(()=>{gl=Zc(Qc),xl=()=>{try{let e=Jc.executablePath();if(e&&ed.existsSync(e))return!0}catch{return!1}return!1},yl=async e=>{e&&e("\u{1F4E5} Downloading Chromium engine (chrome@148)...");try{try{await gl("pnpm exec puppeteer browsers install chrome@148")}catch{await gl("npx -y puppeteer browsers install chrome@148")}return await new Promise(o=>setTimeout(o,1e3)),{success:!0}}catch(o){return console.error("[SETUP ERROR]",o),{success:!1,error:o.message}}}});var Ml={};Ss(Ml,{default:()=>Il});import Tl from"os";import s,{useState as V,useEffect as lo,useRef as Go,useMemo as Ar}from"react";import{Box as C,Text as y,useInput as td,useStdout as od}from"ink";import oo from"fs-extra";import Wn from"path";import{exec as Oi}from"child_process";import{fileURLToPath as nd}from"url";import Sl from"ink-text-input";import rd from"gradient-string";function Il({args:e=[]}){let[o,t]=V(!1),[n,i]=V(10),{stdout:r}=od(),[l,c]=V(""),[m,d]=V(0),[u,a]=V(!1),[f,p]=V("Flux"),[h,T]=V({columns:r?.columns||80,rows:r?.rows||24}),[w,E]=V(0),[k,D]=V(!1),[_,K]=V(!1),[F,I]=V(0),A=Go(null);lo(()=>{let x=ps(),g=!["Terminal","Windows Terminal"].includes(x)||!!process.env.VSC_TERMINAL_URL,M=setTimeout(()=>{g&&!Ro()&&K(!0)},500),B=setInterval(()=>{Ro()&&K(!1)},1e3);return()=>{clearTimeout(M),clearInterval(B)}},[]);let v=Ar(()=>{let x={};for(let g=0;g<e.length;g++){let M=e[g];if(M==="--model"&&e[g+1])x.model=e[g+1],g++;else if(M==="--memory"&&e[g+1])x.memory=e[g+1].toLowerCase(),g++;else if(M==="--resume"&&e[g+1])x.resume=e[g+1],g++;else if(M==="--update"&&e[g+1])x.update=e[g+1].toLowerCase(),g++;else if(M==="--package"&&e[g+1]){let B=e[g+1].toLowerCase();["npm","pnpm","yarn","bun"].includes(B)&&(x.package=B),g++}else if(M==="--auto-del"&&e[g+1]){let B=e[g+1].toLowerCase();["1d","7d","30d"].includes(B)&&(x.autoDel=B),g++}else if(M==="--auto-exec"&&e[g+1])x.autoExec=e[g+1].toLowerCase(),g++;else if(M==="--yolo"&&e[g+1])x.autoExec=e[g+1].toLowerCase(),g++;else if(M==="--external-access"&&e[g+1])x.externalAccess=e[g+1].toLowerCase(),g++;else if(M==="--mode"&&e[g+1]){let O=e[g+1].toLowerCase();if(["flux","flow"].includes(O)){let $="Flux";O==="flux"?$="Flux":O==="flow"&&($="Flow"),x.mode=$}g++}else if(M==="--thinking"&&e[g+1]){let O=e[g+1].toLowerCase();if(["fast","low","medium","high","xhigh"].includes(O)){let $="Medium";O==="fast"?$="Fast":O==="low"?$="Low":O==="medium"?$="Medium":O==="high"?$="High":O==="xhigh"&&($="xHigh"),x.thinking=$}g++}}return x},[e]),J=async(x=!1,g=null)=>{let M=g||_t;x&&N(B=>(ee(B.length+1),[...B,{id:"check-"+Date.now(),role:"system",text:"\u{1F50D} Checking for updates...",isMeta:!0}]));try{let O=await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json(),$=O["dist-tags"]?.latest,X=O["dist-tags"]?.stable;if($&&nt($),$&&$!==Mn){let S=$===X?`v${$}-stable`:`v${$}`;!x&&M.autoUpdate?Y("update"):N(L=>{let P=[...L],j=x?P.length:Math.min(P.length,3);return P.splice(j,0,{id:"update-"+Date.now(),role:"system",text:`A new version (${S}) is here.
530
+ `)?t+"...":t}function ed(e){if(!e)return"N/A";let o=new Date(e);if(isNaN(o.getTime()))return"N/A";let t=l=>String(l).padStart(2,"0"),n=t(o.getHours()),i=t(o.getMinutes()),r=t(o.getSeconds());return`${n}:${i}:${r}`}var wl=re(()=>{wn()});import td from"puppeteer";import{exec as od}from"child_process";import{promisify as nd}from"util";import rd from"fs";var Tl,Sl,El,bl=re(()=>{Tl=nd(od),Sl=()=>{try{let e=td.executablePath();if(e&&rd.existsSync(e))return!0}catch{return!1}return!1},El=async e=>{e&&e("\u{1F4E5} Downloading Chromium engine (chrome@148)...");try{try{await Tl("pnpm exec puppeteer browsers install chrome@148")}catch{await Tl("npx -y puppeteer browsers install chrome@148")}return await new Promise(o=>setTimeout(o,1e3)),{success:!0}}catch(o){return console.error("[SETUP ERROR]",o),{success:!1,error:o.message}}}});var Dl={};bs(Dl,{default:()=>Ll});import Cl from"os";import s,{useState as V,useEffect as co,useRef as qo,useMemo as Or}from"react";import{Box as b,Text as y,useInput as sd,useStdout as id}from"ink";import no from"fs-extra";import Gn from"path";import{exec as $i}from"child_process";import{fileURLToPath as ad}from"url";import kl from"ink-text-input";import ld from"gradient-string";function Ll({args:e=[]}){let[o,t]=V(!1),[n,i]=V(10),{stdout:r}=id(),[l,c]=V(""),[m,d]=V(0),[u,a]=V(!1),[f,p]=V("Flux"),[h,T]=V({columns:r?.columns||80,rows:r?.rows||24}),[w,S]=V(0),[k,D]=V(!1),[U,K]=V(!1),[F,I]=V(0),L=qo(null);co(()=>{let x=xs(),g=!["Terminal","Windows Terminal"].includes(x)||!!process.env.VSC_TERMINAL_URL,A=setTimeout(()=>{g&&!Ho()&&K(!0)},500),B=setInterval(()=>{Ho()&&K(!1)},1e3);return()=>{clearTimeout(A),clearInterval(B)}},[]);let v=Or(()=>{let x={};for(let g=0;g<e.length;g++){let A=e[g];if(A==="--model"&&e[g+1])x.model=e[g+1],g++;else if(A==="--memory"&&e[g+1])x.memory=e[g+1].toLowerCase(),g++;else if(A==="--resume"&&e[g+1])x.resume=e[g+1],g++;else if(A==="--update"&&e[g+1])x.update=e[g+1].toLowerCase(),g++;else if(A==="--package"&&e[g+1]){let B=e[g+1].toLowerCase();["npm","pnpm","yarn","bun"].includes(B)&&(x.package=B),g++}else if(A==="--auto-del"&&e[g+1]){let B=e[g+1].toLowerCase();["1d","7d","30d"].includes(B)&&(x.autoDel=B),g++}else if(A==="--auto-exec"&&e[g+1])x.autoExec=e[g+1].toLowerCase(),g++;else if(A==="--yolo"&&e[g+1])x.autoExec=e[g+1].toLowerCase(),g++;else if(A==="--external-access"&&e[g+1])x.externalAccess=e[g+1].toLowerCase(),g++;else if(A==="--mode"&&e[g+1]){let O=e[g+1].toLowerCase();if(["flux","flow"].includes(O)){let $="Flux";O==="flux"?$="Flux":O==="flow"&&($="Flow"),x.mode=$}g++}else if(A==="--thinking"&&e[g+1]){let O=e[g+1].toLowerCase();if(["fast","low","medium","high","xhigh"].includes(O)){let $="Medium";O==="fast"?$="Fast":O==="low"?$="Low":O==="medium"?$="Medium":O==="high"?$="High":O==="xhigh"&&($="xHigh"),x.thinking=$}g++}}return x},[e]),J=async(x=!1,g=null)=>{let A=g||_t;x&&R(B=>(Q(B.length+1),[...B,{id:"check-"+Date.now(),role:"system",text:"\u{1F50D} Checking for updates...",isMeta:!0}]));try{let O=await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json(),$=O["dist-tags"]?.latest,_=O["dist-tags"]?.stable;if($&&nt($),$&&$!==Dn){let C=$===_?`v${$}-stable`:`v${$}`;!x&&A.autoUpdate?Y("update"):R(M=>{let P=[...M],H=x?P.length:Math.min(P.length,3);return P.splice(H,0,{id:"update-"+Date.now(),role:"system",text:`A new version (${C}) is here.
531
531
 
532
532
  \u2022 Type \`/update latest\` to apply the update.
533
- \u2022 Type \`/changelog\` to view the release notes.`,isUpdateNotification:!0,isMeta:!0}),P})}else x&&N(S=>{ee(S.length+1);let L=$&&$===X?`${Mn}-stable`:Mn;return[...S,{id:"uptodate-"+Date.now(),role:"system",text:`\u2705 [SYSTEM] Flux Flow is already up to date (${L}).`,isMeta:!0}]})}catch(B){x&&N(O=>(ee(O.length+1),[...O,{id:"check-err-"+Date.now(),role:"system",text:`\u274C ERROR: Failed to check for updates: ${B.message}`,isMeta:!0}]))}};lo(()=>{let x=()=>{r.write("\x1B[2J\x1B[3J\x1B[H"),T({columns:r.columns,rows:r.rows})};return r.on("resize",x),()=>{r.off("resize",x)}},[r]);let[q,le]=V("Medium"),[U,G]=V("Google"),[Pe,ce]=V(0),[De,nt]=V(null),[pe,ut]=V(!1),[Ve,ze]=V("gemma-4-31b-it"),[_e,Je]=V("gemma-4-26b-a4b-it"),[fe,po]=V(!0),[ho,dn]=V(!0),no=Go(0),[ve,yt]=V(null),[Xo,Ko]=V(""),[Ht,Y]=V("chat"),[He,Lr]=V("Free"),[jt,Yn]=V({agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0}),[mt,ko]=V(null),[_t,Q]=V({memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:""}),[Me,rt]=V({name:null,nickname:null,instructions:null}),[ne,xe]=V({keyType:"Default",quality:"Low-High",apiKey:""}),[he,st]=V({tokens:0}),[Po,wt]=V(0),[ft,je]=V(0),[de,Nt]=V(0),[it,co]=V(0),[pt,un]=V(0),[et,at]=V(0),[Ut,Gt]=V(0),[qo,hs]=V(0),[nr,Dr]=V(0),[Hn,Li]=V(0),[rr,gs]=V(0),[sr,xs]=V(0),[re,Ue]=V(null),[Re,lt]=V(Ys()),[Tt,tt]=V(null),[Xt,go]=V(""),[Kt,Dt]=V(!1),[ro,xo]=V(0),On=Go(!0),vr=Go(!0),Se=Go(!0);lo(()=>{if(!ve)return;if(On.current){On.current=!1,setTimeout(()=>{vr.current=!1,setTimeout(()=>{Se.current=!1},1e3)},2e3);return}if(vr.current||Se.current)return;let x=Ce(2),g="",M="";He==="Free"?U==="Google"?(g="gemma-4-31b-it",M="Gemma 4 (Free default)"):U==="DeepSeek"?(g="deepseek-v4-flash",M="DeepSeek Flash (Free default)"):(g="google/gemma-4-31b-it:free",M="Gemma 4 (Free default)"):U==="Google"?(g="gemini-3-flash-preview",M="Gemini 3 Flash"):U==="DeepSeek"?(g="deepseek-v4-flash",M="DeepSeek Flash"):(g="deepseek/deepseek-v4-flash",M="DeepSeek Flash"),ze(g),Rn({apiTier:He,activeModel:g}),N(B=>(ee(B.length+1),[...B,{id:"tier-switch-"+Date.now(),role:"system",text:`\u26A0\uFE0F${x}**[TIER LIMIT]** Auto-switched to ${M}.`,isMeta:!0}]))},[He,U,ve]);let ot=Ar(()=>{let x=ps(),g=!["Terminal","Windows Terminal"].includes(x)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS;return{isIDE:g,shortcut:g?"Shift + Enter":"Ctrl + Enter"}},[]),qt=Go(null),We=Go("");lo(()=>{qt.current=Tt},[Tt]),lo(()=>{We.current=Xt},[Xt]);let[Io,mn]=V(!1),[jn,An]=V(null),[Vo,$r]=V(null),ir=x=>{let g=Math.floor(x/3600),M=Math.floor(x%3600/60),B=x%60,O=[];return g>0&&O.push(`${g}h`),(M>0||g>0)&&O.push(`${M}m`),O.push(`${B}s`),O.join(" ")},zo=x=>x<1e3?`${x}ms`:ir(Math.floor(x/1e3)),[ar,lr]=V(null),[Ln,Di]=V(!0),[Mo,cr]=V(!1),[ys,Oo]=V(!1),[Jo,ws]=V(null),[dr,z]=V(0),[ct,ht]=V([]),H=Go(null),[St,Mt]=V(null),[Ne,yo]=V(null),[Dn,vn]=V(null);lo(()=>z(0),[l]);let[Oe,N]=V(()=>{let x={id:"logo-"+Date.now(),role:"system",text:or,isLogo:!0,isMeta:!0},g={id:"welcome",role:"system",text:"\u{1F30A}\u26A1 Welcome to Flux Flow! Type /help for commands.",isMeta:!0},M=process.cwd()===Tl.homedir(),B=(()=>{let $=process.cwd().toLowerCase();if(process.platform==="win32"){let X=process.env.SystemRoot?.toLowerCase()||"c:\\windows",S=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",L=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return $.startsWith(X)||$.startsWith(S)||$.startsWith(L)}else return $==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(S=>$.startsWith(S))})(),O=[x,g];return B?O.push({id:"system-warning",role:"system",text:"\u{1F6D1} [CRITICAL SECURITY ALERT] SYSTEM DIRECTORY DETECTED",subText:`You are currently in a PROTECTED SYSTEM DIRECTORY (${process.cwd()}). Operating here is EXTREMELY dangerous as the agent could accidentally corrupt your OS or installed applications. PLEASE MOVE TO A PROJECT FOLDER FOR SAFETY.`,isHomeWarning:!0,isMeta:!0}):M&&O.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${Tl.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please move to a project folder for safety.`,isHomeWarning:!0,isMeta:!0}),O}),wo=Go(null),[ur,ee]=V(Oe.length),Pr=Ar(()=>{let g=h.columns||80,M=0,B=0;for(let O=Oe.length-1;O>=0;O--){let $=Oe[O];if(!$)continue;let X=$.text||"",S=X.split(/\r?\n/).length;if(X.split(/\r?\n/).forEach(L=>{S+=Math.floor(L.length/g)}),$.isHelpRecord&&(S=15),$.isUpdateNotification&&(S=8),$.isTerminalRecord&&(S=10),S+=$.role==="think"?3:2,M+S>2e3){B=O+1;break}M+=S}return{items:Oe.slice(B,ur),isTruncated:B>0}},[Oe,h.columns,h.rows]),Fr=Ar(()=>{if(!Tt||!Xt)return!1;let x=Xt.trim();return x.endsWith("?")||x.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(x)||/\([yYnN]\)\s*$/.test(x)},[Tt,Xt]);td((x,g)=>{if(!(x==="\x1B[I"||x==="\x1B[O"||x==="[I"||x==="[O")){if(_){let M=ps(),B=Cl(M);if(g.upArrow)I(O=>O>0?O-1:B.length-1);else if(g.downArrow)I(O=>O<B.length-1?O+1:0);else if(g.return){let O=B[F];if(O.action==="dismiss")K(!1);else if(O.url){let $=process.platform==="win32"?`start ${O.url}`:process.platform==="darwin"?`open ${O.url}`:`xdg-open ${O.url}`;Oi($),K(!1)}}return}if(g.tab&&Tt){Dt(M=>!M);return}if(Kt&&Tt){if(g.return){let M=process.platform==="win32";So(M?`\r
533
+ \u2022 Type \`/changelog\` to view the release notes.`,isUpdateNotification:!0,isMeta:!0}),P})}else x&&R(C=>{Q(C.length+1);let M=$&&$===_?`${Dn}-stable`:Dn;return[...C,{id:"uptodate-"+Date.now(),role:"system",text:`\u2705 [SYSTEM] Flux Flow is already up to date (${M}).`,isMeta:!0}]})}catch(B){x&&R(O=>(Q(O.length+1),[...O,{id:"check-err-"+Date.now(),role:"system",text:`\u274C ERROR: Failed to check for updates: ${B.message}`,isMeta:!0}]))}};co(()=>{let x=()=>{r.write("\x1B[2J\x1B[3J\x1B[H"),T({columns:r.columns,rows:r.rows})};return r.on("resize",x),()=>{r.off("resize",x)}},[r]);let[q,ae]=V("Medium"),[W,X]=V("Google"),[$e,le]=V(0),[Ae,nt]=V(null),[pe,dt]=V(!1),[qe,Ve]=V("gemma-4-31b-it"),[Fe,ze]=V("gemma-4-26b-a4b-it"),[me,yo]=V(!0),[wo,un]=V(!0),ro=qo(0),[Oe,xt]=V(null),[Vo,zo]=V(""),[Ht,Y]=V("chat"),[Ye,Lr]=V("Free"),[jt,Xn]=V({agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0}),[ut,Mo]=V(null),[_t,Z]=V({memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:""}),[Me,rt]=V({name:null,nickname:null,instructions:null}),[oe,ge]=V({keyType:"Default",quality:"Low-High",apiKey:""}),[he,st]=V({tokens:0}),[Po,yt]=V(0),[mt,Ne]=V(0),[ce,Nt]=V(0),[it,uo]=V(0),[ft,mn]=V(0),[Qe,at]=V(0),[Ut,Gt]=V(0),[Jo,ys]=V(0),[dr,Dr]=V(0),[Kn,Fi]=V(0),[ur,ws]=V(0),[vn,Ts]=V(0),[ne,Ue]=V(null),[Re,lt]=V(js()),[wt,Ze]=V(null),[Xt,To]=V(""),[Kt,Ot]=V(!1),[so,So]=V(0),$n=qo(!0),vr=qo(!0),Ee=qo(!0);co(()=>{if(!Oe)return;if($n.current){$n.current=!1,setTimeout(()=>{vr.current=!1,setTimeout(()=>{Ee.current=!1},1e3)},2e3);return}if(vr.current||Ee.current)return;let x=Ce(2),g="",A="";Ye==="Free"?W==="Google"?(g="gemma-4-31b-it",A="Gemma 4 (Free default)"):W==="DeepSeek"?(g="deepseek-v4-flash",A="DeepSeek Flash (Free default)"):(g="google/gemma-4-31b-it:free",A="Gemma 4 (Free default)"):W==="Google"?(g="gemini-3-flash-preview",A="Gemini 3 Flash"):W==="DeepSeek"?(g="deepseek-v4-flash",A="DeepSeek Flash"):(g="deepseek/deepseek-v4-flash",A="DeepSeek Flash"),Ve(g),jn({apiTier:Ye,activeModel:g}),R(B=>(Q(B.length+1),[...B,{id:"tier-switch-"+Date.now(),role:"system",text:`\u26A0\uFE0F${x}**[TIER LIMIT]** Auto-switched to ${A}.`,isMeta:!0}]))},[Ye,W,Oe]);let et=Or(()=>{let x=xs(),g=!["Terminal","Windows Terminal"].includes(x)||!!process.env.VSC_TERMINAL_URL||!!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS;return{isIDE:g,shortcut:g?"Shift + Enter":"Ctrl + Enter"}},[]),qt=qo(null),Be=qo("");co(()=>{qt.current=wt},[wt]),co(()=>{Be.current=Xt},[Xt]);let[mo,qn]=V(!1),[Qo,fn]=V(null),[Zo,$r]=V(null),Pn=x=>{fn(null),Y("chat")},Pr=x=>{let g=Math.floor(x/3600),A=Math.floor(x%3600/60),B=x%60,O=[];return g>0&&O.push(`${g}h`),(A>0||g>0)&&O.push(`${A}m`),O.push(`${B}s`),O.join(" ")},Fo=x=>x<1e3?`${x}ms`:Pr(Math.floor(x/1e3)),[Fr,Vn]=V(null),[mr,zn]=V(!0),[pn,Br]=V(!1),[Bo,hn]=V(!1),[Jn,_r]=V(null),[z,He]=V(0),[Tt,G]=V([]),Ge=qo(null),[Vt,De]=V(null),[_o,en]=V(null),[Fn,St]=V(null);co(()=>He(0),[l]);let[Lt,R]=V(()=>{let x={id:"logo-"+Date.now(),role:"system",text:cr,isLogo:!0,isMeta:!0},g={id:"welcome",role:"system",text:"\u{1F30A}\u26A1 Welcome to Flux Flow! Type /help for commands.",isMeta:!0},A=process.cwd()===Cl.homedir(),B=(()=>{let $=process.cwd().toLowerCase();if(process.platform==="win32"){let _=process.env.SystemRoot?.toLowerCase()||"c:\\windows",C=process.env.ProgramFiles?.toLowerCase()||"c:\\program files",M=process.env["ProgramFiles(x86)"]?.toLowerCase()||"c:\\program files (x86)";return $.startsWith(_)||$.startsWith(C)||$.startsWith(M)}else return $==="/"||["/bin","/sbin","/etc","/usr","/var","/root"].some(C=>$.startsWith(C))})(),O=[x,g];return B?O.push({id:"system-warning",role:"system",text:"\u{1F6D1} [CRITICAL SECURITY ALERT] SYSTEM DIRECTORY DETECTED",subText:`You are currently in a PROTECTED SYSTEM DIRECTORY (${process.cwd()}). Operating here is EXTREMELY dangerous as the agent could accidentally corrupt your OS or installed applications. PLEASE MOVE TO A PROJECT FOLDER FOR SAFETY.`,isHomeWarning:!0,isMeta:!0}):A&&O.push({id:"home-warning",role:"system",text:"[SECURITY ALERT] HOME DIRECTORY DETECTED",subText:`You are currently in ${Cl.homedir()}. Working here is high-risk as the agent may modify system-sensitive configurations. Please move to a project folder for safety.`,isHomeWarning:!0,isMeta:!0}),O}),Ao=qo(null),[Ss,Q]=V(Lt.length),Nr=Or(()=>{let g=h.columns||80,A=0,B=0;for(let O=Lt.length-1;O>=0;O--){let $=Lt[O];if(!$)continue;let _=$.text||"",C=_.split(/\r?\n/).length;if(_.split(/\r?\n/).forEach(M=>{C+=Math.floor(M.length/g)}),$.isHelpRecord&&(C=15),$.isUpdateNotification&&(C=8),$.isTerminalRecord&&(C=10),C+=$.role==="think"?3:2,A+C>2e3){B=O+1;break}A+=C}return{items:Lt.slice(B,Ss),isTruncated:B>0}},[Lt,h.columns,h.rows]),se=Or(()=>{if(!wt||!Xt)return!1;let x=Xt.trim();return x.endsWith("?")||x.endsWith(":")||/\[[yYnN/]+\]\s*$/.test(x)||/\([yYnN]\)\s*$/.test(x)},[wt,Xt]);sd((x,g)=>{if(!(x==="\x1B[I"||x==="\x1B[O"||x==="[I"||x==="[O")){if(U){let A=xs(),B=Al(A);if(g.upArrow)I(O=>O>0?O-1:B.length-1);else if(g.downArrow)I(O=>O<B.length-1?O+1:0);else if(g.return){let O=B[F];if(O.action==="dismiss")K(!1);else if(O.url){let $=process.platform==="win32"?`start ${O.url}`:process.platform==="darwin"?`open ${O.url}`:`xdg-open ${O.url}`;$i($),K(!1)}}return}if(g.tab&&wt){Ot(A=>!A);return}if(Kt&&wt){if(g.return){let A=process.platform==="win32";bo(A?`\r
534
534
  `:`
535
- `),To||go(B=>B+`
536
- `)}else if(g.backspace||g.delete)To?So("\x7F"):(So("\b \b"),go(M=>M.slice(0,-1)));else if(g.upArrow)So(g.shift?"\x1B[1;2A":"\x1B[A");else if(g.downArrow)So(g.shift?"\x1B[1;2B":"\x1B[B");else if(g.rightArrow)So(g.shift?"\x1B[1;2C":"\x1B[C");else if(g.leftArrow)So(g.shift?"\x1B[1;2D":"\x1B[D");else if(g.escape)So("\x1B");else if(g.ctrl&&x){let M=x.toLowerCase().charCodeAt(0);M>=97&&M<=122?So(String.fromCharCode(M-96)):So(x)}else x&&(So(x),To||go(M=>M+x));return}if(g.escape){if(Ee.length>0&&Ht==="chat"){D(!0);return}if(o){t(!1);return}if(Mo||Tt)ys?(nl(),Ki(),Oo(!1),Jo&&clearTimeout(Jo)):(Oo(!0),Jo&&clearTimeout(Jo),ws(setTimeout(()=>Oo(!1),3e3)));else if(Ht==="revert")Y("chat"),z(0);else if(Ht!=="chat"&&Ht!=="settings")Y("chat");else{if(!ve&&Pe===1){ce(0),Ko("");return}z(M=>{let B=M+1;return B===1?(H.current&&clearTimeout(H.current),H.current=setTimeout(()=>z(0),2e3)):B===2&&(H.current&&clearTimeout(H.current),z(0),l.length>0?c(""):Et.getChatHistory(Re).then(O=>{O.length>0?(ht(O.reverse()),Y("revert")):N($=>(ee($.length+1),[...$,{id:"revert-empty-"+Date.now(),role:"system",text:"\u{1F6C8} No revert checkpoints found for this session.",isMeta:!0}]))})),B})}}if(Ee.length>0&&Ht==="chat"){if(g.upArrow){E(M=>M>0?M-1:Ee.length-1);return}if(g.downArrow){E(M=>M<Ee.length-1?M+1:0);return}if(g.return)return}if(g.tab,g.ctrl&&x==="c"&&Ht!=="exit"){if(l.length>0){c("");return}if(g.shift){Y("exit"),t(!1);return}o?(Y("exit"),t(!1)):t(!0)}g.return&&(g.shift||g.ctrl||g.meta||g.leftAlt||g.rightAlt)&&c(M=>M.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
537
- `)}}),lo(()=>{process.stdout.write("\x1B[?1004h");let x=g=>{let M=g.toString();M.includes("\x1B[I")?(dn(!0),no.current=Date.now()):M.includes("\x1B[O")&&(dn(!1),no.current=Date.now())};return process.stdin.on("data",x),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",x)}},[]),lo(()=>{async function x(){try{let $=JSON.parse(oo.readFileSync(Wn.join(process.cwd(),"package.json"),"utf8"));hi(Mn||$.version||"2.0.0")}catch{hi("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),xl()||(N($=>(ee($.length+1),[...$,{id:"setup-"+Date.now(),role:"system",text:"\u{1F527} [SYSTEM] Installing Required dependencies... (One-time setup)",isMeta:!0}])),await yl(),N($=>(ee($.length+1),[...$,{id:"setup-done-"+Date.now(),role:"system",text:"\u2705 [SYSTEM] All dependencies installed successfully.",isMeta:!0}])));let g=await kr();v.mode?p(v.mode):p(g.mode),v.thinking?le(v.thinking):le(g.thinkingLevel),G(g.aiProvider||"Google"),A.current=g.activeModel,v.model?ze(v.model):ze(g.activeModel),ut(g.showFullThinking),Lr(g.apiTier||"Free"),Yn(g.quotas||{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0});let M={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...g.systemSettings||{}};v.memory==="on"?M.memory=!0:v.memory==="off"&&(M.memory=!1),v.package&&(M.updateManager=v.package),v.autoDel&&(M.autoDeleteHistory=v.autoDel),v.autoExec==="on"?M.autoExec=!0:v.autoExec==="off"&&(M.autoExec=!1),v.externalAccess==="on"?M.allowExternalAccess=!0:v.externalAccess==="off"&&(M.allowExternalAccess=!1),Q(M),rt(g.profileData),xe(g.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""});let B=g.aiProvider||"Google",O=await Jr(B);if(O&&(yt(O),Or(O)),g.systemSettings?.autoDeleteHistory&&ga(g.systemSettings.autoDeleteHistory),xa(Co),v.update==="check"?J(!0,M):v.update==="latest"?(Y("update"),J(!0,M)):J(!1,M),await Sa(),v.resume){let $=await $o(),X=v.resume;if($[X]){lt(X);let S=[...$[X].messages];S[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||S.unshift({id:"welcome-"+Date.now(),role:"system",text:or+`
535
+ `),Eo||To(B=>B+`
536
+ `)}else if(g.backspace||g.delete)Eo?bo("\x7F"):(bo("\b \b"),To(A=>A.slice(0,-1)));else if(g.upArrow)bo(g.shift?"\x1B[1;2A":"\x1B[A");else if(g.downArrow)bo(g.shift?"\x1B[1;2B":"\x1B[B");else if(g.rightArrow)bo(g.shift?"\x1B[1;2C":"\x1B[C");else if(g.leftArrow)bo(g.shift?"\x1B[1;2D":"\x1B[D");else if(g.escape)bo("\x1B");else if(g.ctrl&&x){let A=x.toLowerCase().charCodeAt(0);A>=97&&A<=122?bo(String.fromCharCode(A-96)):bo(x)}else x&&(bo(x),Eo||To(A=>A+x));return}if(g.escape){if(be.length>0&&Ht==="chat"){D(!0);return}if(o){t(!1);return}if(pn||wt)Bo?(al(),Ji(),hn(!1),Jn&&clearTimeout(Jn)):(hn(!0),Jn&&clearTimeout(Jn),_r(setTimeout(()=>hn(!1),3e3)));else if(Ht==="revert")Y("chat"),He(0);else if(Ht!=="chat"&&Ht!=="settings")Y("chat");else{if(!Oe&&$e===1){le(0),zo("");return}He(A=>{let B=A+1;return B===1?(Ge.current&&clearTimeout(Ge.current),Ge.current=setTimeout(()=>He(0),2e3)):B===2&&(Ge.current&&clearTimeout(Ge.current),He(0),l.length>0?c(""):bt.getChatHistory(Re).then(O=>{O.length>0?(G(O.reverse()),Y("revert")):R($=>(Q($.length+1),[...$,{id:"revert-empty-"+Date.now(),role:"system",text:"\u{1F6C8} No revert checkpoints found for this session.",isMeta:!0}]))})),B})}}if(be.length>0&&Ht==="chat"){if(g.upArrow){S(A=>A>0?A-1:be.length-1);return}if(g.downArrow){S(A=>A<be.length-1?A+1:0);return}if(g.return)return}if(g.tab,g.ctrl&&x==="c"&&Ht!=="exit"){if(l.length>0){c("");return}if(g.shift){Y("exit"),t(!1);return}o?(Y("exit"),t(!1)):t(!0)}g.return&&(g.shift||g.ctrl||g.meta||g.leftAlt||g.rightAlt)&&c(A=>A.replace(/\\\r?$/,"").replace(/\r?$/,"")+`
537
+ `)}}),co(()=>{process.stdout.write("\x1B[?1004h");let x=g=>{let A=g.toString();A.includes("\x1B[I")?(un(!0),ro.current=Date.now()):A.includes("\x1B[O")&&(un(!1),ro.current=Date.now())};return process.stdin.on("data",x),()=>{process.stdout.write("\x1B[?1004l"),process.stdin.off("data",x)}},[]),co(()=>{async function x(){try{let $=JSON.parse(no.readFileSync(Gn.join(process.cwd(),"package.json"),"utf8"));yi(Dn||$.version||"2.0.0")}catch{yi("2.0.0")}process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),Sl()||(R($=>(Q($.length+1),[...$,{id:"setup-"+Date.now(),role:"system",text:"\u{1F527} [SYSTEM] Installing Required dependencies... (One-time setup)",isMeta:!0}])),await El(),R($=>(Q($.length+1),[...$,{id:"setup-done-"+Date.now(),role:"system",text:"\u2705 [SYSTEM] All dependencies installed successfully.",isMeta:!0}])));let g=await kr();v.mode?p(v.mode):p(g.mode),v.thinking?ae(v.thinking):ae(g.thinkingLevel),X(g.aiProvider||"Google"),L.current=g.activeModel,v.model?Ve(v.model):Ve(g.activeModel),dt(g.showFullThinking),Lr(g.apiTier||"Free"),Xn(g.quotas||{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0});let A={memory:!0,compression:0,autoExec:!1,autoDeleteHistory:"7d",autoUpdate:!1,updateManager:"npm",customUpdateCommand:"",...g.systemSettings||{}};v.memory==="on"?A.memory=!0:v.memory==="off"&&(A.memory=!1),v.package&&(A.updateManager=v.package),v.autoDel&&(A.autoDeleteHistory=v.autoDel),v.autoExec==="on"?A.autoExec=!0:v.autoExec==="off"&&(A.autoExec=!1),v.externalAccess==="on"?A.allowExternalAccess=!0:v.externalAccess==="off"&&(A.allowExternalAccess=!1),Z(A),rt(g.profileData),ge(g.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""});let B=g.aiProvider||"Google",O=await es(B);if(O&&(xt(O),Ar(O,{aiProvider:W,onIDEApproval:Pn})),g.systemSettings?.autoDeleteHistory&&Ta(g.systemSettings.autoDeleteHistory),Sa(Io),v.update==="check"?J(!0,A):v.update==="latest"?(Y("update"),J(!0,A)):J(!1,A),await ka(),v.resume){let $=await $o(),_=v.resume;if($[_]){lt(_);let C=[...$[_].messages];C[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||C.unshift({id:"welcome-"+Date.now(),role:"system",text:cr+`
538
538
 
539
- \u{1F30A}\u26A1 Resuming Flux Flow Session...`,isMeta:!0}),N(S),Y("chat"),N(P=>{let j=[...P,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED VIA CLI: [${X}]`,isMeta:!0}];return ee(j.length),j})}else N(S=>[...S,{id:"sys-err-"+Date.now(),role:"system",text:`\u274C ERROR: Chat session [${X}] not found. Started new session.`,isMeta:!0}])}po(!1)}x()},[]),lo(()=>{let x;return o&&(i(10),x=setInterval(()=>{i(g=>g<=1?(t(!1),0):g-1)},1e3)),()=>{x&&clearInterval(x)}},[o]),lo(()=>{if(!fe){let x=v.model&&Ve===v.model?A.current:Ve;Rn({mode:f,thinkingLevel:q,aiProvider:U,activeModel:x||Ve,showFullThinking:pe,systemSettings:_t,profileData:Me,imageSettings:ne,apiTier:He})}},[f,q,U,Ve,pe,_t,Me,ne,fe,v,He]);let se=async x=>{let g=x.trim(),M=30;if(U==="OpenRouter"&&(M=10),U==="DeepSeek"&&(M=20),g.length>=M){await Qr(U,g),yt(g),Or(g);let B="gemma-4-31b-it";U==="OpenRouter"?B="google/gemma-4-31b-it:free":U==="DeepSeek"&&(B="deepseek-v4-flash"),ze(B),N(O=>[...O,{role:"system",text:`\u2705 ${U} API Key saved successfully! Model set to ${B}. Initialization complete.`,isMeta:!0}])}else N(B=>[...B,{role:"system",text:`\u274C INVALID KEY: ${U} API keys must be at least ${M} characters.`,isMeta:!0}]),Ko("")},Ae=Go(Ai);lo(()=>{if(Ht==="exit"){(async()=>{let M=Date.now(),B=Math.floor((M-Ae.current)/1e3);B>=1&&(await fo("duration",B),Ae.current+=B*1e3),await Ea()})();let g=setTimeout(()=>{process.exit(0)},1700);return()=>clearTimeout(g)}},[Ht]),lo(()=>{let x=setInterval(async()=>{if(!fe){let g=Date.now(),M=Math.floor((g-Ae.current)/1e3);M>=1&&(await fo("duration",M),Ae.current+=M*1e3)}},1500);return()=>clearInterval(x)},[fe]);let Qe=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase back to a checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat in a .txt file"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/image",desc:"Generate images using Pollinations",subs:[{cmd:"setup",desc:"Configure defaults",subs:[{cmd:"key",desc:"Set API key strategy",subs:[{cmd:"default",desc:"Default (Quota: Dynamic 25 max/hr)"},{cmd:"custom",desc:"Custom Key"}]},{cmd:"quality",desc:"Set default quality",subs:[{cmd:"low",desc:ne?.keyType==="Custom"?"(0.001/img)":"(1/img)"},{cmd:"low-high",desc:ne?.keyType==="Custom"?"(0.002/img)":"(2/img)"},{cmd:"medium",desc:ne?.keyType==="Custom"?"(0.008/img)":"(8/img)"},{cmd:"medium-high",desc:ne?.keyType==="Custom"?"(0.01/img)":"(10/img)"},{cmd:"high",desc:ne?.keyType==="Custom"?"(0.045/img)":"(45/img)"},{cmd:"ultra",desc:ne?.keyType==="Custom"?"(0.0488/img)":"(49/img)"},{cmd:"premium",desc:ne?.keyType==="Custom"?"(0.1/img)":"(100/img)"}]}]},{cmd:"stats",desc:"Show remaining credits or Pollinations balance status"}]},{cmd:"/mode",desc:"Toggle Flux/Flow modes",subs:[{cmd:"flux",desc:"Enable Dev toolset"},{cmd:"flow",desc:"Enable Chat mode"}]},{cmd:"/thinking",desc:"Set AI reasoning depth",subs:U==="DeepSeek"?[{cmd:"Fast",desc:"Fastest"},{cmd:"Standard",desc:"Standard Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]:U==="OpenRouter"?[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]:Ve&&Ve.toLowerCase().startsWith("gemini-3")?[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"}]:[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]},{cmd:"/model",desc:"Switch Model for Agent",subs:U==="OpenRouter"?He==="Free"?[{cmd:"google/gemma-4-31b-it:free",desc:"Multimodal"},{cmd:"moonshotai/kimi-k2.6:free",desc:"Multimodal"},{cmd:"qwen/qwen3-coder:free",desc:""},{cmd:"z-ai/glm-4.5-air:free",desc:""}]:[{cmd:"google/gemini-3.5-flash",desc:"Multimodal"},{cmd:"qwen/qwen3.7-plus",desc:"Multimodal"},{cmd:"minimax/minimax-m3",desc:"Multimodal"},{cmd:"anthropic/claude-sonnet-4.5",desc:"Multimodal"},{cmd:"anthropic/claude-opus-4.6",desc:"Multimodal"},{cmd:"anthropic/claude-opus-4.8",desc:"Multimodal"},{cmd:"deepseek/deepseek-v4-pro",desc:""},{cmd:"deepseek/deepseek-v4-flash",desc:""},{cmd:"xiaomi/mimo-v2.5-pro",desc:""},{cmd:"z-ai/glm-5",desc:""},{cmd:"openai/gpt-5.2-codex",desc:"Multimodal"},{cmd:"openai/gpt-5.2-pro",desc:"Multimodal"},{cmd:"openai/gpt-5.5-pro",desc:"Multimodal"},{cmd:"moonshotai/kimi-k2.6",desc:"Multimodal"}]:U==="DeepSeek"?[{cmd:"deepseek-v4-flash",desc:"Fast & Efficient"},{cmd:"deepseek-v4-pro",desc:"High-Intelligence Reasoning"}]:He==="Free"?[{cmd:"gemma-4-31b-it",desc:"Standard Default"},{cmd:"gemini-2.5-flash",desc:"Fast & Reliable (Limited Free Quota)"},{cmd:"gemini-3-flash-preview",desc:"Fast & Lightweight (Limited Free Quota)"},{cmd:"gemini-3.5-flash",desc:"Flash Latest (Limited Free Quota) [Instability Issues]"}]:[{cmd:"gemini-2.5-flash",desc:"Fast & Reliable"},{cmd:"gemini-3.1-flash-lite",desc:"Ultra-Fast & Lite"},{cmd:"gemini-3-flash-preview",desc:"Default, Fast & Lightweight"},{cmd:"gemini-3.5-flash",desc:"Flash Latest [Instability Issues]"},{cmd:"gemini-3.1-pro-preview",desc:"Pro Reasoning"}]},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/profile",desc:"Edit developer persona"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/fluxflow",desc:"Project management",subs:[{cmd:"init",desc:"Create FluxFlow.md template"}]},{cmd:"/update",desc:"Check/Install updates",subs:[{cmd:"check",desc:"Check for new version"},{cmd:"latest",desc:"Install latest release"}]}],Ge=async(x,g=!1)=>{if(!g&&Ee.length>0){let O=Ee[w]||Ee[0],$=x.split(" ");if($.length===1)c(O.cmd+" ");else{let X=$.slice(0,-1);c(X.join(" ")+" "+O.cmd+" ")}E(0),d(X=>X+1);return}let M=x.replace(/\r\n/g,`
539
+ \u{1F30A}\u26A1 Resuming Flux Flow Session...`,isMeta:!0}),R(C),Y("chat"),R(P=>{let H=[...P,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED VIA CLI: [${_}]`,isMeta:!0}];return Q(H.length),H})}else R(C=>[...C,{id:"sys-err-"+Date.now(),role:"system",text:`\u274C ERROR: Chat session [${_}] not found. Started new session.`,isMeta:!0}])}yo(!1)}x()},[]),co(()=>{let x;return o&&(i(10),x=setInterval(()=>{i(g=>g<=1?(t(!1),0):g-1)},1e3)),()=>{x&&clearInterval(x)}},[o]),co(()=>{if(!me){let x=v.model&&qe===v.model?L.current:qe;jn({mode:f,thinkingLevel:q,aiProvider:W,activeModel:x||qe,showFullThinking:pe,systemSettings:_t,profileData:Me,imageSettings:oe,apiTier:Ye})}},[f,q,W,qe,pe,_t,Me,oe,me,v,Ye]);let ve=async x=>{let g=x.trim(),A=30;if(W==="OpenRouter"&&(A=10),W==="DeepSeek"&&(A=20),g.length>=A){await ts(W,g),xt(g),Ar(g,{aiProvider:W,onIDEApproval:Pn});let B="gemma-4-31b-it";W==="OpenRouter"?B="google/gemma-4-31b-it:free":W==="DeepSeek"&&(B="deepseek-v4-flash"),Ve(B),R(O=>[...O,{role:"system",text:`\u2705 ${W} API Key saved successfully! Model set to ${B}. Initialization complete.`,isMeta:!0}])}else R(B=>[...B,{role:"system",text:`\u274C INVALID KEY: ${W} API keys must be at least ${A} characters.`,isMeta:!0}]),zo("")},je=qo(Pi);co(()=>{if(Ht==="exit"){(async()=>{let A=Date.now(),B=Math.floor((A-je.current)/1e3);B>=1&&(await xo("duration",B),je.current+=B*1e3),await Ia()})();let g=setTimeout(()=>{process.exit(0)},1700);return()=>clearTimeout(g)}},[Ht]),co(()=>{let x=setInterval(async()=>{if(!me){let g=Date.now(),A=Math.floor((g-je.current)/1e3);A>=1&&(await xo("duration",A),je.current+=A*1e3)}},1500);return()=>clearInterval(x)},[me]);let Xe=[{cmd:"/quit",desc:"Exit and shutdown Flux"},{cmd:"/help",desc:"Show all available commands"},{cmd:"/clear",desc:"Clear terminal screen"},{cmd:"/resume",desc:"Load previous session"},{cmd:"/revert",desc:"Revert codebase back to a checkpoint"},{cmd:"/save",desc:"Force save current chat"},{cmd:"/export",desc:"Export current chat in a .txt file"},{cmd:"/chats",desc:"List all chat sessions"},{cmd:"/image",desc:"Generate images using Pollinations",subs:[{cmd:"setup",desc:"Configure defaults",subs:[{cmd:"key",desc:"Set API key strategy",subs:[{cmd:"default",desc:"Default (Quota: Dynamic 25 max/hr)"},{cmd:"custom",desc:"Custom Key"}]},{cmd:"quality",desc:"Set default quality",subs:[{cmd:"low",desc:oe?.keyType==="Custom"?"(0.001/img)":"(1/img)"},{cmd:"low-high",desc:oe?.keyType==="Custom"?"(0.002/img)":"(2/img)"},{cmd:"medium",desc:oe?.keyType==="Custom"?"(0.008/img)":"(8/img)"},{cmd:"medium-high",desc:oe?.keyType==="Custom"?"(0.01/img)":"(10/img)"},{cmd:"high",desc:oe?.keyType==="Custom"?"(0.045/img)":"(45/img)"},{cmd:"ultra",desc:oe?.keyType==="Custom"?"(0.0488/img)":"(49/img)"},{cmd:"premium",desc:oe?.keyType==="Custom"?"(0.1/img)":"(100/img)"}]}]},{cmd:"stats",desc:"Show remaining credits or Pollinations balance status"}]},{cmd:"/mode",desc:"Toggle Flux/Flow modes",subs:[{cmd:"flux",desc:"Enable Dev toolset"},{cmd:"flow",desc:"Enable Chat mode"}]},{cmd:"/thinking",desc:"Set AI reasoning depth",subs:W==="DeepSeek"?[{cmd:"Fast",desc:"Fastest"},{cmd:"Standard",desc:"Standard Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]:W==="OpenRouter"?[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]:qe&&qe.toLowerCase().startsWith("gemini-3")?[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"}]:[{cmd:"Fast",desc:"Fastest"},{cmd:"Low",desc:"Quick Reasoning"},{cmd:"Medium",desc:"Balanced Reasoning"},{cmd:"High",desc:"Deep Reasoning"},{cmd:"xHigh",desc:"Extended Reasoning"}]},{cmd:"/model",desc:"Switch Model for Agent",subs:W==="OpenRouter"?Ye==="Free"?[{cmd:"google/gemma-4-31b-it:free",desc:"Multimodal"},{cmd:"moonshotai/kimi-k2.6:free",desc:"Multimodal"},{cmd:"qwen/qwen3-coder:free",desc:""},{cmd:"z-ai/glm-4.5-air:free",desc:""}]:[{cmd:"google/gemini-3.5-flash",desc:"Multimodal"},{cmd:"qwen/qwen3.7-plus",desc:"Multimodal"},{cmd:"minimax/minimax-m3",desc:"Multimodal"},{cmd:"anthropic/claude-sonnet-4.5",desc:"Multimodal"},{cmd:"anthropic/claude-opus-4.6",desc:"Multimodal"},{cmd:"anthropic/claude-opus-4.8",desc:"Multimodal"},{cmd:"deepseek/deepseek-v4-pro",desc:""},{cmd:"deepseek/deepseek-v4-flash",desc:""},{cmd:"xiaomi/mimo-v2.5-pro",desc:""},{cmd:"z-ai/glm-5",desc:""},{cmd:"openai/gpt-5.2-codex",desc:"Multimodal"},{cmd:"openai/gpt-5.2-pro",desc:"Multimodal"},{cmd:"openai/gpt-5.5-pro",desc:"Multimodal"},{cmd:"moonshotai/kimi-k2.6",desc:"Multimodal"}]:W==="DeepSeek"?[{cmd:"deepseek-v4-flash",desc:"Fast & Efficient"},{cmd:"deepseek-v4-pro",desc:"High-Intelligence Reasoning"}]:Ye==="Free"?[{cmd:"gemma-4-31b-it",desc:"Standard Default"},{cmd:"gemini-2.5-flash",desc:"Fast & Reliable (Limited Free Quota)"},{cmd:"gemini-3-flash-preview",desc:"Fast & Lightweight (Limited Free Quota)"},{cmd:"gemini-3.5-flash",desc:"Flash Latest (Limited Free Quota) [Instability Issues]"}]:[{cmd:"gemini-2.5-flash",desc:"Fast & Reliable"},{cmd:"gemini-3.1-flash-lite",desc:"Ultra-Fast & Lite"},{cmd:"gemini-3-flash-preview",desc:"Default, Fast & Lightweight"},{cmd:"gemini-3.5-flash",desc:"Flash Latest [Instability Issues]"},{cmd:"gemini-3.1-pro-preview",desc:"Pro Reasoning"}]},{cmd:"/settings",desc:"Configure system prefs"},{cmd:"/key",desc:"Manage API keys"},{cmd:"/profile",desc:"Edit developer persona"},{cmd:"/memory",desc:"Manage agent memory"},{cmd:"/stats",desc:"Show session usage"},{cmd:"/reset",desc:"Wipe all project data"},{cmd:"/about",desc:"Project info & credits"},{cmd:"/changelog",desc:"View latest updates"},{cmd:"/fluxflow",desc:"Project management",subs:[{cmd:"init",desc:"Create FluxFlow.md template"}]},{cmd:"/update",desc:"Check/Install updates",subs:[{cmd:"check",desc:"Check for new version"},{cmd:"latest",desc:"Install latest release"}]}],pt=async(x,g=!1)=>{if(!g&&be.length>0){let O=be[w]||be[0],$=x.split(" ");if($.length===1)c(O.cmd+" ");else{let _=$.slice(0,-1);c(_.join(" ")+" "+O.cmd+" ")}S(0),d(_=>_+1);return}let A=x.replace(/\r\n/g,`
540
540
  `).replace(/\r/g,`
541
- `).trimEnd();if(M.endsWith("\\")){c(M.slice(0,-1)+`
542
- `);return}let B=M.replace(/\\\s*\n/g,`
541
+ `).trimEnd();if(A.endsWith("\\")){c(A.slice(0,-1)+`
542
+ `);return}let B=A.replace(/\\\s*\n/g,`
543
543
  `).split(/\r?\n/).map(O=>O.replace(/\\$/,"")).join(`
544
- `);if(B.trim()){if(Mo){let O=B.trim();if(O.startsWith("/")){N($=>(ee($.length+1),[...$,{id:"hint-err-"+Date.now(),role:"system",text:"\u274C [RESTRICTED] Steering Hints cannot start with /",isMeta:!0}])),c("");return}Mt(O),wo.current=O,N($=>(ee($.length+1),[...$,{id:"hint-"+Date.now(),role:"user",text:`[STEERING HINT: QUEUED]
545
- ${O}`,color:"magenta"}])),c("");return}if(!ve){se(B),Ko("");return}if(B.startsWith("/")){let O=B.split(" "),$=O[0]?.toLowerCase();switch($){case"/quit":{Y("exit");break}case"/resume":{if(O[1]){let S=O[1];(async()=>{let P=await $o(),j=P[S]||Object.values(P).find(te=>te.name.toLowerCase()===S.toLowerCase());if(j){r.write("\x1B[2J\x1B[3J\x1B[H"),lt(S);let te=[...j.messages];te[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||(te.unshift({id:"welcome-"+Date.now(),role:"system",text:"\u{1F30A}\u26A1 Resuming Flux Flow Session...",isMeta:!0}),te.unshift({id:"logo-"+Date.now(),role:"system",text:or,isLogo:!0,isMeta:!0})),N(te),N(ue=>[...ue,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED: [${S}]`,isMeta:!0}]),ee(0)}else N(te=>[...te,{id:"err-"+Date.now(),role:"system",text:`\u274C ERROR: Session [${S}] not found.`}])})()}else Y("resume");break}case"/clear":{N([{id:"logo-"+Date.now(),role:"system",text:or,isLogo:!0,isMeta:!0},{id:"welcome-"+Date.now(),role:"system",text:"\u{1F30A}\u26A1 Welcome back to Flux Flow! Context cleared.",isMeta:!0}]),ee(2),lt(Ys()),st({tokens:0}),a(!1);break}case"/revert":{Et.getChatHistory(Re).then(S=>{if(S.length>0)ht(S.reverse()),Y("revert");else{let L=Ce(2);N(P=>(ee(P.length+1),[...P,{id:"revert-empty-"+Date.now(),role:"system",text:"No revert checkpoints found for this session.",isMeta:!0}]))}});break}case"/mode":{if(O[1]){let S=O[1].toLowerCase()==="flow"?"Flow":"Flux";p(S),S==="Flow"?le("Fast"):S==="Flux"&&le("High");let L=Ce(2);N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F527}${L}[SYSTEM] Mode switched to ${S}`,isMeta:!0}]))}else Y("mode");break}case"/image":{if(O[1]?.toLowerCase()==="stats"){let S=Ce(2);if(ne.keyType==="Custom")N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:`\u{1F517}${S}[SYSTEM] Key strategy is Custom. Redirecting to Pollinations dashboard (https://enter.pollinations.ai/#pollen)...`,isMeta:!0}])),Oi("start https://enter.pollinations.ai/#pollen");else try{let L=await os();N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((L.limit*1e3).toFixed(0))} credits
546
- \u2022 Spent (Last 1hr): ${Number((L.totalSpent*1e3).toFixed(0))} credits
547
- \u2022 Remaining: ${Number((L.remaining*1e3).toFixed(0))} credits
548
- \u2022 Requests (Last 1hr): ${L.activeCallsCount} requests
549
- `+(L.nextResetMin>0?`\u2022 Refreshes in: ${L.nextResetMin}m`:""),isMeta:!0}]))}catch{N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(O[1]?.toLowerCase()==="setup")if(O[2]?.toLowerCase()==="key")if(O[3]){let S=["default","custom"].find(L=>L===O[3].toLowerCase());if(S){let L=S==="default"?"Default":"Custom";xe(j=>({...j,keyType:L}));let P=Ce(2);N(j=>(ee(j.length+1),[...j,{id:Date.now(),role:"system",text:`\u{1F527}${P}[SYSTEM] Image key strategy set to ${L}`,isMeta:!0}])),L==="Custom"&&(ko({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:ne.apiKey||"",returnView:"chat"}),Y("input"))}else{let L=Ce(2);N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let S=Ce(2);N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(O[2]?.toLowerCase()==="quality")if(O[3]){let S=["low","low-high","medium","medium-high","high","ultra","premium"].find(L=>L===O[3].toLowerCase());if(S){let P={low:"Low","low-high":"Low-High",medium:"Medium","medium-high":"Medium-High",high:"High",ultra:"Ultra",premium:"Premium"}[S];xe(te=>({...te,quality:P}));let j=Ce(2);N(te=>(ee(te.length+1),[...te,{id:Date.now(),role:"system",text:`\u{1F527}${j}[SYSTEM] Image quality set to ${P}`,isMeta:!0}]))}else{let L=Ce(2);N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Invalid quality level. Choose from: Low, Low-High, Medium, Medium-High, High, Ultra, Premium.",isMeta:!0}]))}}else{let S=Ce(2);N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup Quality <Low|Low-High|Medium|Medium-High|High|Ultra>",isMeta:!0}]))}else{let S=Ce(2);N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let S=Ce(2);N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let S;if(O[1]){let L=O[1].toLowerCase(),P=O.includes("--bypass");if(S=L.charAt(0).toUpperCase()+L.slice(1),L==="xhigh"&&(S="xHigh"),!P&&f==="Flow"&&(S==="Medium"||S==="High"||S==="xHigh"))N(j=>(ee(j.length+1),[...j,{id:Date.now(),role:"system",text:`\u274C [RESTRICTED] "${S}" is restricted in Flow mode. Switch to Flux to enable Higher Thinking Levels.`,isMeta:!0}]));else{le(S);let j=Ce(1);N(te=>(ee(te.length+1),[...te,{id:Date.now(),role:"system",text:`\u{1F527} [SYSTEM] Thinking level set to ${S}${P?` (Bypass Activated \u{1F575}\uFE0F${j})`:""}`,isMeta:!0}]))}}else Y("thinking");break}case"/model":{if(O[1]){let S=O.slice(1).join(" ");if(S==="gemma-4-31b-it"&&He!=="Free"&&U==="Google")N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u274C **[ACCESS DENIED]** Gemma is restricted to the Free API tier. Automatically switching you to **Gemini 3 Flash Preview** for optimal performance.",isMeta:!0}])),ze("gemini-3-flash-preview");else{ze(S);let L=Ce(2);N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F527}${L}[SYSTEM] Model switched to ${S}`,isMeta:!0}]))}}else Y("model");break}case"/settings":{Y("settings");break}case"/key":{Y("key");break}case"/profile":{Y("profile");break}case"/stats":{(async()=>{let L=await En();Ue(L),Y("stats")})();break}case"/save":{let S=O.slice(1).join(" ")||`Session ${new Date().toLocaleTimeString()}`;es(Re,S,Oe),N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:`\u{1F4BE} [MEMORY] Chat saved as "${S}" (ID: ${Re})`,isMeta:!0}]));break}case"/export":{let S=`export-fluxflow-${Re}.txt`,L=Wn.join(process.cwd(),S),P=[],j=!1;for(let be=0;be<Oe.length;be++){let ue=Oe[be];if(ue&&!(ue.role==="system"||ue.isMeta||ue.isLogo||String(ue.id).startsWith("welcome"))){if(ue.role==="user"){let Fe=ue.text||"";Fe=Fe.replace(/\s*\[Prompted on:.*?\]/g,"").trim(),P.length>0&&P.push(""),P.push("[USER]"),P.push(Fe),j=!1}else if(ue.role==="think"){j||(P.push(""),P.push("[AGENT]"),j=!0);let Fe=(ue.text||"").replace(/\[turn:\s*continue\]/gi,"").replace(/\[turn:\s*finish\]/gi,"").replace(/\[TOOL RESULTS\]/gi,"").trim();Fe&&(P.push("[thoughts]"),P.push(Fe))}else if(ue.role==="agent"){j||(P.push(""),P.push("[AGENT]"),j=!0);let Fe=dd(ue.text||"");for(let Be of Fe)if(Be.type==="output"){let $e=Be.content.replace(/\[turn:\s*continue\]/gi,"").replace(/\[turn:\s*finish\]/gi,"").replace(/\[TOOL RESULTS\]/gi,"").trim();$e&&(P.push("[output]"),P.push($e))}else Be.type==="tool"&&(P.push("[tool]"),P.push(`${Be.toolName} ${Be.args}`))}}}let te=P.join(`
550
- `);try{oo.writeFileSync(L,te,"utf8"),N(be=>(ee(be.length+1),[...be,{id:Date.now(),role:"system",text:`\u{1F4E4} [EXPORT] Chat exported successfully to "${S}"`,isMeta:!0}]))}catch(be){N(ue=>(ee(ue.length+1),[...ue,{id:Date.now(),role:"system",text:`\u274C [EXPORT ERROR] Failed to export chat: ${be.message}`,isMeta:!0}]))}break}case"/chats":{(async()=>{let L=await $o(),P=Object.entries(L).map(([j,te])=>`\u2022 ${j}: ${te.name}`).join(`
551
- `);N(j=>(ee(j.length+1),[...j,{id:Date.now(),role:"system",text:`\u{1F5C3}\uFE0F [HISTORY] Saved Chats:
552
- ${P||"No saved chats found."}`,isMeta:!0}]))})();break}case"/memory":{Y("memory");break}case"/reset":{(async()=>{try{N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u2622\uFE0F [NUCLEAR] Initiating reset...",isMeta:!0}])),oo.existsSync(Co)&&oo.removeSync(Co),oo.existsSync(eo)&&oo.removeSync(eo),oo.existsSync(Zt)&&oo.removeSync(Zt);try{oo.readdirSync(Fn).length===0&&oo.removeSync(Fn)}catch{}setTimeout(()=>{Y("exit"),setTimeout(()=>process.exit(0),500)},500)}catch(L){N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u274C [RESET ERROR] Failed to purge data: ${L.message}`}]))}})();break}case"/about":{let S=Ce(2),L=`\u{1F539} FluxFlow Version: v${Mn}
553
- \u{1F539} Status: ${De&&De!==Mn?`Update Available [v${De}]`:"Up to date"}
554
- \u{1F539} Released on: ${ad}`;N(P=>(ee(P.length+1),[...P,{id:"about-"+Date.now(),role:"system",text:L,isAboutRecord:!0,isMeta:!0}]));break}case"/changelog":{let S=process.platform;Oi(`${S==="win32"?"start":S==="darwin"?"open":"xdg-open"} ${El}`),N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F310} [BROWSER] Opening changelog: ${El}`,isMeta:!0}]));break}case"/fluxflow":{if(O.slice(1)[0]==="init"){let L=`# FluxFlow Configuration
544
+ `);if(B.trim()){if(pn){let O=B.trim();if(O.startsWith("/")){R($=>(Q($.length+1),[...$,{id:"hint-err-"+Date.now(),role:"system",text:"\u274C [RESTRICTED] Steering Hints cannot start with /",isMeta:!0}])),c("");return}De(O),Ao.current=O,R($=>(Q($.length+1),[...$,{id:"hint-"+Date.now(),role:"user",text:`[STEERING HINT: QUEUED]
545
+ ${O}`,color:"magenta"}])),c("");return}if(!Oe){ve(B),zo("");return}if(B.startsWith("/")){let O=B.split(" "),$=O[0]?.toLowerCase();switch($){case"/quit":{Y("exit");break}case"/resume":{if(O[1]){let C=O[1];(async()=>{let P=await $o(),H=P[C]||Object.values(P).find(ie=>ie.name.toLowerCase()===C.toLowerCase());if(H){r.write("\x1B[2J\x1B[3J\x1B[H"),lt(C);let ie=[...H.messages];ie[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||(ie.unshift({id:"welcome-"+Date.now(),role:"system",text:"\u{1F30A}\u26A1 Resuming Flux Flow Session...",isMeta:!0}),ie.unshift({id:"logo-"+Date.now(),role:"system",text:cr,isLogo:!0,isMeta:!0})),R(ie),R(ue=>[...ue,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED: [${C}]`,isMeta:!0}]),Q(0)}else R(ie=>[...ie,{id:"err-"+Date.now(),role:"system",text:`\u274C ERROR: Session [${C}] not found.`}])})()}else Y("resume");break}case"/clear":{R([{id:"logo-"+Date.now(),role:"system",text:cr,isLogo:!0,isMeta:!0},{id:"welcome-"+Date.now(),role:"system",text:"\u{1F30A}\u26A1 Welcome back to Flux Flow! Context cleared.",isMeta:!0}]),Q(2),lt(js()),st({tokens:0}),a(!1);break}case"/revert":{bt.getChatHistory(Re).then(C=>{if(C.length>0)G(C.reverse()),Y("revert");else{let M=Ce(2);R(P=>(Q(P.length+1),[...P,{id:"revert-empty-"+Date.now(),role:"system",text:"No revert checkpoints found for this session.",isMeta:!0}]))}});break}case"/mode":{if(O[1]){let C=O[1].toLowerCase()==="flow"?"Flow":"Flux";p(C),C==="Flow"?ae("Fast"):C==="Flux"&&ae("High");let M=Ce(2);R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F527}${M}[SYSTEM] Mode switched to ${C}`,isMeta:!0}]))}else Y("mode");break}case"/image":{if(O[1]?.toLowerCase()==="stats"){let C=Ce(2);if(oe.keyType==="Custom")R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:`\u{1F517}${C}[SYSTEM] Key strategy is Custom. Redirecting to Pollinations dashboard (https://enter.pollinations.ai/#pollen)...`,isMeta:!0}])),$i("start https://enter.pollinations.ai/#pollen");else try{let M=await ss();R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",isImageStats:!0,text:`\u2022 Hourly Limit: ${Number((M.limit*1e3).toFixed(0))} credits
546
+ \u2022 Spent (Last 1hr): ${Number((M.totalSpent*1e3).toFixed(0))} credits
547
+ \u2022 Remaining: ${Number((M.remaining*1e3).toFixed(0))} credits
548
+ \u2022 Requests (Last 1hr): ${M.activeCallsCount} requests
549
+ `+(M.nextResetMin>0?`\u2022 Refreshes in: ${M.nextResetMin}m`:""),isMeta:!0}]))}catch{R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Failed to load image quota stats.",isMeta:!0}]))}}else if(O[1]?.toLowerCase()==="setup")if(O[2]?.toLowerCase()==="key")if(O[3]){let C=["default","custom"].find(M=>M===O[3].toLowerCase());if(C){let M=C==="default"?"Default":"Custom";ge(H=>({...H,keyType:M}));let P=Ce(2);R(H=>(Q(H.length+1),[...H,{id:Date.now(),role:"system",text:`\u{1F527}${P}[SYSTEM] Image key strategy set to ${M}`,isMeta:!0}])),M==="Custom"&&(Mo({label:"Enter Pollinations API key (starting with sk_):",note:"Get a key from https://enter.pollinations.ai",key:"imageSettings",subKey:"apiKey",value:oe.apiKey||"",returnView:"chat"}),Y("input"))}else{let M=Ce(2);R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Invalid key option. Choose: Default or Custom.",isMeta:!0}]))}}else{let C=Ce(2);R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup Key <Default|Custom>",isMeta:!0}]))}else if(O[2]?.toLowerCase()==="quality")if(O[3]){let C=["low","low-high","medium","medium-high","high","ultra","premium"].find(M=>M===O[3].toLowerCase());if(C){let P={low:"Low","low-high":"Low-High",medium:"Medium","medium-high":"Medium-High",high:"High",ultra:"Ultra",premium:"Premium"}[C];ge(ie=>({...ie,quality:P}));let H=Ce(2);R(ie=>(Q(ie.length+1),[...ie,{id:Date.now(),role:"system",text:`\u{1F527}${H}[SYSTEM] Image quality set to ${P}`,isMeta:!0}]))}else{let M=Ce(2);R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Invalid quality level. Choose from: Low, Low-High, Medium, Medium-High, High, Ultra, Premium.",isMeta:!0}]))}}else{let C=Ce(2);R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup Quality <Low|Low-High|Medium|Medium-High|High|Ultra>",isMeta:!0}]))}else{let C=Ce(2);R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}else{let C=Ce(2);R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u274C [SYSTEM] Usage: /image setup <Key|Quality> ...",isMeta:!0}]))}break}case"/thinking":{let C;if(O[1]){let M=O[1].toLowerCase(),P=O.includes("--bypass");if(C=M.charAt(0).toUpperCase()+M.slice(1),M==="xhigh"&&(C="xHigh"),!P&&f==="Flow"&&(C==="Medium"||C==="High"||C==="xHigh"))R(H=>(Q(H.length+1),[...H,{id:Date.now(),role:"system",text:`\u274C [RESTRICTED] "${C}" is restricted in Flow mode. Switch to Flux to enable Higher Thinking Levels.`,isMeta:!0}]));else{ae(C);let H=Ce(1);R(ie=>(Q(ie.length+1),[...ie,{id:Date.now(),role:"system",text:`\u{1F527} [SYSTEM] Thinking level set to ${C}${P?` (Bypass Activated \u{1F575}\uFE0F${H})`:""}`,isMeta:!0}]))}}else Y("thinking");break}case"/model":{if(O[1]){let C=O.slice(1).join(" ");if(C==="gemma-4-31b-it"&&Ye!=="Free"&&W==="Google")R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u274C **[ACCESS DENIED]** Gemma is restricted to the Free API tier. Automatically switching you to **Gemini 3 Flash Preview** for optimal performance.",isMeta:!0}])),Ve("gemini-3-flash-preview");else{Ve(C);let M=Ce(2);R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F527}${M}[SYSTEM] Model switched to ${C}`,isMeta:!0}]))}}else Y("model");break}case"/settings":{Y("settings");break}case"/key":{Y("key");break}case"/profile":{Y("profile");break}case"/stats":{(async()=>{let M=await In();Ue(M),Y("stats")})();break}case"/save":{let C=O.slice(1).join(" ")||`Session ${new Date().toLocaleTimeString()}`;ns(Re,C,Lt),R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:`\u{1F4BE} [MEMORY] Chat saved as "${C}" (ID: ${Re})`,isMeta:!0}]));break}case"/export":{let C=`export-fluxflow-${Re}.txt`,M=Gn.join(process.cwd(),C),P=[],H=!1;for(let _e=0;_e<Lt.length;_e++){let ue=Lt[_e];if(ue&&!(ue.role==="system"||ue.isMeta||ue.isLogo||String(ue.id).startsWith("welcome"))){if(ue.role==="user"){let Pe=ue.text||"";Pe=Pe.replace(/\s*\[Prompted on:.*?\]/g,"").trim(),P.length>0&&P.push(""),P.push("[USER]"),P.push(Pe),H=!1}else if(ue.role==="think"){H||(P.push(""),P.push("[AGENT]"),H=!0);let Pe=(ue.text||"").replace(/\[turn:\s*continue\]/gi,"").replace(/\[turn:\s*finish\]/gi,"").replace(/\[TOOL RESULTS\]/gi,"").trim();Pe&&(P.push("[thoughts]"),P.push(Pe))}else if(ue.role==="agent"){H||(P.push(""),P.push("[AGENT]"),H=!0);let Pe=pd(ue.text||"");for(let Se of Pe)if(Se.type==="output"){let zt=Se.content.replace(/\[turn:\s*continue\]/gi,"").replace(/\[turn:\s*finish\]/gi,"").replace(/\[TOOL RESULTS\]/gi,"").trim();zt&&(P.push("[output]"),P.push(zt))}else Se.type==="tool"&&(P.push("[tool]"),P.push(`${Se.toolName} ${Se.args}`))}}}let ie=P.join(`
550
+ `);try{no.writeFileSync(M,ie,"utf8"),R(_e=>(Q(_e.length+1),[..._e,{id:Date.now(),role:"system",text:`\u{1F4E4} [EXPORT] Chat exported successfully to "${C}"`,isMeta:!0}]))}catch(_e){R(ue=>(Q(ue.length+1),[...ue,{id:Date.now(),role:"system",text:`\u274C [EXPORT ERROR] Failed to export chat: ${_e.message}`,isMeta:!0}]))}break}case"/chats":{(async()=>{let M=await $o(),P=Object.entries(M).map(([H,ie])=>`\u2022 ${H}: ${ie.name}`).join(`
551
+ `);R(H=>(Q(H.length+1),[...H,{id:Date.now(),role:"system",text:`\u{1F5C3}\uFE0F [HISTORY] Saved Chats:
552
+ ${P||"No saved chats found."}`,isMeta:!0}]))})();break}case"/memory":{Y("memory");break}case"/reset":{(async()=>{try{R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u2622\uFE0F [NUCLEAR] Initiating reset...",isMeta:!0}])),no.existsSync(Io)&&no.removeSync(Io),no.existsSync(to)&&no.removeSync(to),no.existsSync(eo)&&no.removeSync(eo);try{no.readdirSync(Un).length===0&&no.removeSync(Un)}catch{}setTimeout(()=>{Y("exit"),setTimeout(()=>process.exit(0),500)},500)}catch(M){R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u274C [RESET ERROR] Failed to purge data: ${M.message}`}]))}})();break}case"/about":{let C=Ce(2),M=`\u{1F539} FluxFlow Version: v${Dn}
553
+ \u{1F539} Status: ${Ae&&Ae!==Dn?`Update Available [v${Ae}]`:"Up to date"}
554
+ \u{1F539} Released on: ${ud}`;R(P=>(Q(P.length+1),[...P,{id:"about-"+Date.now(),role:"system",text:M,isAboutRecord:!0,isMeta:!0}]));break}case"/changelog":{let C=process.platform;$i(`${C==="win32"?"start":C==="darwin"?"open":"xdg-open"} ${Il}`),R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u{1F310} [BROWSER] Opening changelog: ${Il}`,isMeta:!0}]));break}case"/fluxflow":{if(O.slice(1)[0]==="init"){let M=`# FluxFlow Configuration
555
555
  # This file defines project-specific instructions for the Flux Flow Agent.
556
556
 
557
557
  # IDENTITY & TONE
@@ -566,32 +566,32 @@ ${P||"No saved chats found."}`,isMeta:!0}]))})();break}case"/memory":{Y("memory"
566
566
 
567
567
  # SKILLS & WORKFLOWS
568
568
  - [Define custom step-by-step recipes for this project here]
569
- `,P=Wn.join(process.cwd(),"FluxFlow.md");if(oo.pathExistsSync(P))N(j=>(ee(j.length+1),[...j,{id:"init-err-"+Date.now(),role:"system",text:"\u274C ERROR: FluxFlow.md already exists in this directory.",isMeta:!0}]));else try{oo.writeFileSync(P,L),N(j=>(ee(j.length+1),[...j,{id:"init-ok-"+Date.now(),role:"system",text:"\u2705 [SUCCESS] FluxFlow.md has been initialized. You can now customize it for this project.",isMeta:!0}]))}catch(j){N(te=>(ee(te.length+1),[...te,{id:"init-err-"+Date.now(),role:"system",text:`\u274C ERROR: Failed to initialize FluxFlow.md: ${j.message}`,isMeta:!0}]))}}else N(L=>(ee(L.length+1),[...L,{id:"ff-err-"+Date.now(),role:"system",text:"\u2753 Usage: /fluxflow init",isMeta:!0}]));break}case"/update":{if(O[1]?.toLowerCase()==="check"){J(!0);break}let L=O.includes("--latest");Y("update");break}case"/help":{N(S=>(ee(S.length+1),[...S,{id:Date.now(),role:"system",isHelpRecord:!0,isMeta:!0}]));break}default:let X=Ce(2);N(S=>(ee(S.length+1),[...S,{id:Date.now(),role:"system",text:`\u{1F527}${X}[SYSTEM] Unknown command: ${$}`,isMeta:!0}]))}}else{let O=`[Prompted on: ${new Date().toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}]`,$={id:"user-"+Date.now(),role:"user",text:`${B}
569
+ `,P=Gn.join(process.cwd(),"FluxFlow.md");if(no.pathExistsSync(P))R(H=>(Q(H.length+1),[...H,{id:"init-err-"+Date.now(),role:"system",text:"\u274C ERROR: FluxFlow.md already exists in this directory.",isMeta:!0}]));else try{no.writeFileSync(P,M),R(H=>(Q(H.length+1),[...H,{id:"init-ok-"+Date.now(),role:"system",text:"\u2705 [SUCCESS] FluxFlow.md has been initialized. You can now customize it for this project.",isMeta:!0}]))}catch(H){R(ie=>(Q(ie.length+1),[...ie,{id:"init-err-"+Date.now(),role:"system",text:`\u274C ERROR: Failed to initialize FluxFlow.md: ${H.message}`,isMeta:!0}]))}}else R(M=>(Q(M.length+1),[...M,{id:"ff-err-"+Date.now(),role:"system",text:"\u2753 Usage: /fluxflow init",isMeta:!0}]));break}case"/update":{if(O[1]?.toLowerCase()==="check"){J(!0);break}let M=O.includes("--latest");Y("update");break}case"/help":{R(C=>(Q(C.length+1),[...C,{id:Date.now(),role:"system",isHelpRecord:!0,isMeta:!0}]));break}default:let _=Ce(2);R(C=>(Q(C.length+1),[...C,{id:Date.now(),role:"system",text:`\u{1F527}${_}[SYSTEM] Unknown command: ${$}`,isMeta:!0}]))}}else{let O=`[Prompted on: ${new Date().toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})}]`,$={id:"user-"+Date.now(),role:"user",text:`${B}
570
570
 
571
- ${O}`};N(S=>(ee(S.length+1),[...S,$])),(async()=>{let S=!1;cr(!0),a(!1);let L=Date.now(),P=!0;try{let j=[...Oe,$].filter(R=>R.role!=="think"&&!R.isVisualFeedback&&!R.isMeta&&!String(R.id).startsWith("welcome")),te=[];j.forEach((R,ae)=>{let ge=R.fullText||R.text;if(R.role==="user"&&ae<j.length-1){let Le=ge.lastIndexOf("[USER]");Le!==-1&&(ge=ge.substring(Le+6).trim())}if(R.role==="system"&&ge?.startsWith("[TOOL RESULT]")){let Le=te[te.length-1];if(Le&&Le.role==="system"&&Le.text?.startsWith("[TOOL RESULT]")){Le.text+=`
571
+ ${O}`};R(C=>(Q(C.length+1),[...C,$])),(async()=>{let C=!1;Br(!0),a(!1);let M=Date.now(),P=!0;try{let H=[...Lt,$].filter(N=>N.role!=="think"&&!N.isVisualFeedback&&!N.isMeta&&!String(N.id).startsWith("welcome")),ie=[];H.forEach((N,de)=>{let we=N.fullText||N.text;if(N.role==="user"&&de<H.length-1){let Le=we.lastIndexOf("[USER]");Le!==-1&&(we=we.substring(Le+6).trim())}if(N.role==="system"&&we?.startsWith("[TOOL RESULT]")){let Le=ie[ie.length-1];if(Le&&Le.role==="system"&&Le.text?.startsWith("[TOOL RESULT]")){Le.text+=`
572
572
 
573
- `+ge;return}}te.push({...R,text:ge})});let be=il(Ve,te,{profile:Me,thinkingLevel:q,mode:f,systemSettings:_t,janitorModel:_e,sessionStats:he,chatId:Re,aiProvider:U,apiKey:ve,apiTier:He,cols:h.columns-6,rows:30,onExecStart:R=>{tt(R),go("")},onExecChunk:R=>{go(ae=>ae+R)},onExecEnd:()=>{N(R=>{if(!qt.current)return R;let ae=We.current||"",ge="";if(To){let vt=/\x1b\[H|\x1b\[2J|\x1b\[3J|\x1bc/g,me=[...ae.matchAll(vt)],ye=ae;if(me.length>0){let Ke=me[me.length-1];ye=ae.substring(Ke.index+Ke[0].length)}ge=ye.replace(/\r+\n/g,`
573
+ `+we;return}}ie.push({...N,text:we})});let _e=dl(qe,ie,{profile:Me,thinkingLevel:q,mode:f,systemSettings:_t,janitorModel:Fe,sessionStats:he,chatId:Re,aiProvider:W,apiKey:Oe,apiTier:Ye,cols:h.columns-6,rows:30,onExecStart:N=>{Ze(N),To("")},onExecChunk:N=>{To(de=>de+N)},onExecEnd:()=>{R(N=>{if(!qt.current)return N;let de=Be.current||"",we="";if(Eo){let Et=/\x1b\[H|\x1b\[2J|\x1b\[3J|\x1bc/g,fe=[...de.matchAll(Et)],xe=de;if(fe.length>0){let ot=fe[fe.length-1];xe=de.substring(ot.index+ot[0].length)}we=xe.replace(/\r+\n/g,`
574
574
  `).split(`
575
- `).map(Ke=>{let gt=Ke.split("\r");return gt[gt.length-1]}).join(`
576
- `)}else ge=ae.replace(/\r\n/g,`
575
+ `).map(ot=>{let ht=ot.split("\r");return ht[ht.length-1]}).join(`
576
+ `)}else we=de.replace(/\r\n/g,`
577
577
  `);let Le=`[TERMINAL_RECORD]
578
578
  COMMAND: ${qt.current}
579
- PTY: ${To}
580
- OUTPUT: ${ge.replace(/\n{3,}/g,`
579
+ PTY: ${Eo}
580
+ OUTPUT: ${we.replace(/\n{3,}/g,`
581
581
 
582
- `)}`;return[...R,{id:"term-"+Date.now(),role:"system",text:Le,isTerminalRecord:!0}]}),tt(null),Dt(!1),go("")},onToolResult:(R,ae)=>{if(R==="success"){if(at(ge=>ge+1),ae==="generate_image"){gs(vt=>vt+1);let Le={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[ne.quality]||.002;xs(vt=>vt+Le)}}else R==="denied"?hs(ge=>ge+1):Gt(ge=>ge+1)},onToolApproval:async(R,ae)=>{let ge=Io||_t.autoExec;if(R==="exec_command"){let{command:Le}=oe(ae||"{}");return ge||Le&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(Le.trim())?"allow":new Promise(me=>{An({tool:R,args:ae,resolve:me}),Y("terminalApproval")})}return ge?"allow":new Promise(Le=>{An({tool:R,args:ae,resolve:Le}),Y("approval")})},onAskUser:async(R,ae)=>new Promise(ge=>{$r({question:R,options:ae,resolve:Le=>{N(vt=>[...vt,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
583
- Selection: ${Le}`,isAskRecord:!0}]),ge(Le)}}),Y("ask")})},async()=>{if(wo.current){let R=wo.current;return Mt(null),wo.current=null,N(ae=>{let ge=[...ae].reverse().findIndex(Le=>Le.text?.includes("[STEERING HINT: QUEUED]"));if(ge!==-1){let Le=ae.length-1-ge,vt=[...ae];return vt[Le]={...vt[Le],text:vt[Le].text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: INJECTED]"),color:"cyan"},vt}return ae}),R}return null},Mn),ue=!1,Fe=null,Be=null,$e=!1,Vt=!1,Qo=!1,Ao=!1,Fo=0,Ot=null,mr=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let R of be){if(P&&R.type==="text"&&(L=Date.now(),P=!1),R.type==="status"){lr(R.content),Ro()&&cs(R.content);continue}if(R.type==="status_history"){lr(R.content),Ro()&&cs(R.content),N(me=>[...me,{id:"condense-"+Date.now(),role:"system",text:`\u2699\uFE0F [SYSTEM] ${R.content}`,isMeta:!0}]);continue}if(R.type==="spinner"){Di(R.content);continue}if(R.type==="model_update"){vn(R.content);continue}if(R.type==="turn_reset"){Fe=null,Be=null,ue=!1,$e=!1,Vt=!1,Ao=!1,Qo=!1;continue}if(R.type==="interactive_turn_finished"){cr(!1),Ro()&&cs(null),S=!0,rl({profile:Me,thinkingLevel:q,mode:f,janitorModel:_e,chatId:Re,systemSettings:_t,sessionStats:he,aiProvider:U,apiKey:ve},R.data.agentText,R.data.fullAgentTextRaw,R.data.history,{onMemoryUpdated:()=>N(me=>{let ye=[...me];return ye.length>0&&(ye[ye.length-1].memoryUpdated=!0),ye}),onBackgroundIncrement:()=>je(me=>me+1)});continue}if(R.type==="visual_feedback"){N(me=>[...me,{id:"feedback-"+Date.now(),role:"system",text:R.content,isVisualFeedback:!0}]);continue}if(R.type==="exec_start")continue;if(R.type==="liveTokens"){st({tokens:R.content});continue}if(R.type==="usage"){let me=R.content.totalTokenCount||0,ye=R.content.cachedContentTokenCount||0,Xe=R.content.candidatesTokenCount||0;st({tokens:me}),Nt(Ke=>Ke+me),ye>0&&co(Ke=>Ke+ye),Xe>0&&un(Ke=>Ke+Xe),wt(Ke=>Ke+1);continue}if(R.type==="tool_time"){Li(me=>me+R.content);continue}if(R.type==="tool_result"){if(N(me=>[...me,{id:"tool-"+Date.now(),role:"system",text:R.content,fullText:R.aiContent,binaryPart:R.binaryPart,toolName:R.toolName}]),R.toolName==="update_file"&&R.aiContent){let me=R.aiContent.split(`
584
- `),ye=0,Xe=0,Ke=!1;for(let gt of me){if(gt.includes("[DIFF_START]")){Ke=!0;continue}if(gt.includes("[DIFF_END]")){Ke=!1;continue}Ke&&(/^\+\d+/.test(gt)?ye++:/^\-\d+/.test(gt)&&Xe++)}ms+=ye,fs+=Xe,fo("linesAdded",ye),fo("linesRemoved",Xe)}else if(R.toolName==="write_file"&&R.aiContent){let me=R.aiContent.match(/- Stats: \[(\d+) lines/),ye=me?parseInt(me[1]):0,Xe=0;if(R.aiContent.includes("Old File contents:")){let Ke=R.aiContent.split(`
585
- `),gt=!1;for(let zt of Ke){if(zt.includes("Old File contents:")){gt=!0;continue}gt&&(zt.trim()===""?gt=!1:/^\d+ \|/.test(zt)&&Xe++)}}ms+=ye,fs+=Xe,fo("linesAdded",ye),fo("linesRemoved",Xe)}continue}let ae=R.content,ge=ae.toLowerCase();if(ae.includes("```")&&($e=!$e),ge.includes("tool:functions.")&&(Vt=!0,Fo=0,Ot=null,ae.includes("[tool:functions.")&&(Fo=0)),Vt){for(let me=0;me<ae.length;me++){let ye=ae[me];!Ot&&(ye==="'"||ye==='"'||ye==="`")?Ot=ye:Ot&&ye===Ot&&ae[me-1]!=="\\"&&(Ot=null),Ot||(ye==="("||ye==="["?Fo++:(ye===")"||ye==="]")&&Fo--)}Fo<=0&&!Ot&&(Vt=!1)}if((ge.includes("<think")||ge.includes("<thought"))&&(!ue&&!$e&&!Vt&&!Qo)&&(ue=!0,Qo=!0,ae=ae.replace(/<(think|thought)>[\s\S]*?<\/(think|thought)>/gi,"").replace(/<(think|thought)>/gi,""),Fe="think-"+Date.now(),N(me=>[...me,{id:Fe,role:"think",text:"",isStreaming:!0,startTime:Date.now()}])),(ge.includes("</think>")||ge.includes("</thought>"))&&Fe){let me=ae.split(/<\/(think|thought)>/gi),ye=me[0]||"",Xe=me.slice(2).join("").replace(/<\/?(think|thought)>/gi,"");N(Ke=>{let gt=Ke.map(zt=>{if(zt.id===Fe&&typeof zt.id=="string"){let Br=zt.startTime||parseInt(zt.id.split("-")[1])||Date.now(),Ts=Date.now()-Br;return{...zt,text:zt.text+ye,isStreaming:!1,duration:Ts}}return zt});return ue=!1,Be="agent-"+Date.now(),[...gt,{id:Be,role:"agent",text:Xe,isStreaming:!0}]});continue}if(ue&&Fe)N(me=>{let ye=!1,Xe="",Ke=me.map(gt=>{if(gt.id===Fe){let zt=gt.text+ae;if(zt.toLowerCase().includes("</think>")){ye=!0;let Br=zt.split(/<\/think>/gi);Xe=Br.slice(1).join("</think>")||"";let Ts=gt.startTime||parseInt(gt.id.split("-")[1])||Date.now(),Ll=Date.now()-Ts;return{...gt,text:Br[0],isStreaming:!1,duration:Ll}}return{...gt,text:zt,isStreaming:!0}}return gt});return ye?(ue=!1,Be="agent-"+Date.now(),[...Ke,{id:Be,role:"agent",text:Xe.replace(/<\/?(think|thought)>/gi,""),isStreaming:!0}]):Ke});else if(!ue){let me=ae.toLowerCase();!Ao&&me.includes("tool:functions.")&&(Ao=!0),Be?N(ye=>ye.map(Xe=>Xe.id===Be?{...Xe,text:Xe.text+ae,isStreaming:!0}:Xe)):(Be="agent-"+Date.now(),N(ye=>[...ye,{id:Be,role:"agent",text:ae,isStreaming:!0}]))}}let Zo=Date.now();Dr(R=>R+(Zo-L))}catch(j){N(te=>(ee(te.length+1),[...te,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${j.message}`}]))}finally{if(cr(!1),lr(null),S||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),wo.current){yo(wo.current),Mt(null);let j=wo.current;wo.current=null,N(te=>{let be=[...te],ue=be.reverse().find(Fe=>Fe.text?.includes("[STEERING HINT: QUEUED]"));return ue&&(ue.text=ue.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]")),be.reverse()}),Y("resolution")}N(j=>{let te=Date.now()-L,be=!1,ue=[...j].reverse().map(Be=>{let $e=Be.isStreaming?{...Be,isStreaming:!1}:Be;return!be&&$e.role==="agent"&&(be=!0,$e={...$e,workedDuration:te}),$e}).reverse(),Fe=ue.filter(Be=>!String(Be.id).startsWith("welcome")&&!Be.isMeta);return es(Re,null,Fe),ee(ue.length),ue})}})()}c(""),a(!1)}},Ee=Ar(()=>{if(l.startsWith("/")&&!k){let M=l.split(" "),B=M[M.length-1].toLowerCase();if(M.length===1){let $=B.startsWith("/")?B.slice(1):B;return Qe.filter(X=>(X.cmd.startsWith("/")?X.cmd.slice(1):X.cmd).toLowerCase().includes($))}let O=Qe;for(let $=0;$<M.length-1;$++){let X=M[$].toLowerCase(),S=O.find(L=>L.cmd.toLowerCase()===X);if(S&&S.subs)O=S.subs;else return[]}return O.filter($=>$.cmd.toLowerCase().includes(B))}let x=l.split(" "),g=x[x.length-1];if(g&&g.startsWith("@")&&!k){let M=g.indexOf("#"),B=M!==-1,O=B?g.substring(1,M).toLowerCase():g.slice(1).toLowerCase(),$=B?g.substring(M):"";return ud(process.cwd()).filter(L=>L.name.toLowerCase().includes(O)).map(L=>{let P=L.relativePath.replace(/\\/g,"/");return{cmd:"@["+(P.startsWith(".")?P:"./"+P)+$+"]",desc:L.relativePath}})}return[]},[l,k]);lo(()=>{E(0)},[Ee]);let bt=()=>{switch(Ht){case"settings":return s.createElement(vs,{systemSettings:_t,setSystemSettings:Q,apiTier:He,setActiveView:Y,setInputConfig:ko,saveSettings:Rn,quotas:jt,setMessages:N,aiProvider:U});case"selectProvider":return s.createElement(io,{title:"SELECT AI PROVIDER",items:[{label:"Google (Free/Paid)",value:"Google"},{label:"DeepSeek (Paid)",value:"DeepSeek"},{label:"OpenRouter (Free/Paid) [EXPERIMENTAL]",value:"OpenRouter"},{label:"Back",value:"settings"}],onSelect:async x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}let g=x.value,M=await Jr(g);if(M){G(g),yt(M),Or(M);let B="gemma-4-31b-it";g==="OpenRouter"?B="google/gemma-4-31b-it:free":g==="DeepSeek"&&(B="deepseek-v4-flash"),ze(B),Rn({aiProvider:g,activeModel:B,apiTier:He,quotas:jt}),N(O=>[...O,{role:"system",text:`\u2705 Switched to ${g}! Key loaded from Vault. Model set to ${B}.`,isMeta:!0}]),Y("settings")}else ko({label:`Enter ${g} API Key:`,key:"providerKey",provider:g,value:"",returnView:"settings"}),Y("input")},onClose:()=>Y("settings")});case"apiTier":return s.createElement(io,{title:s.createElement(y,null,"SELECT YOUR CURRENT API TIER BASED ON ",s.createElement(y,{color:"cyan",underline:!0,bold:!0},"\x1B]8;;https://aistudio.google.com/projects\x07AI STUDIO\x1B]8;;\x07"),". (CURRENT: ",He.toUpperCase(),")"),items:[{label:"Free Tier (Gemini API Free Tier)",value:"Free"},{label:"Paid Tier (API with Billing Account)",value:"Paid"},{label:"Back",value:"settings"}],onSelect:x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}let g=x.value;Lr(g),g==="Paid"?(ko({label:"Enter Agent daily budget (requests made):",key:"quotas",subKey:"agentLimit",value:String(jt.agentLimit)}),Y("input")):(Rn({apiTier:g,quotas:jt}),Y("settings"))},onClose:()=>Y("settings")});case"input":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},s.createElement(C,{paddingX:1},s.createElement(y,{color:"magenta",bold:!0},"\u{1F527} DATA CONFIGURATION")),mt?.note&&s.createElement(C,{paddingX:1,marginBottom:1},s.createElement(y,{color:"yellow",dimColor:!0,italic:!0},mt.note)),s.createElement(C,{paddingX:1,flexDirection:"row"},s.createElement(y,{color:"cyan",bold:!0},mt?.label," "),s.createElement(Sl,{value:mt?.value||"",onChange:x=>ko(g=>({...g,value:x})),onSubmit:async x=>{let{key:g,subKey:M,next:B}=mt,O={...jt},$={};if(g==="quotas"){let X=M.toLowerCase().includes("limit")?parseInt(x)||0:x;O[M]=X,Yn(O),$.quotas=O}else if(g==="activeModel")ze(x),$.activeModel=x;else if(g==="janitorModel")Je(x),$.janitorModel=x;else if(g==="autoApproveCommands"||g==="autoDisallowCommands"||g==="alwaysAskCommands"){let X={..._t,[g]:x.trim(),sandboxPreset:"Custom"};Q(X),$.systemSettings=X}else if(g==="externalDataPath"){let X={..._t,useExternalData:!0,externalDataPath:x.trim()};Q(X),$.systemSettings=X,N(S=>[...S,{id:Date.now(),role:"system",text:"\u{1F4C1} [EXTERNAL STORAGE] Flux Flow will use "+x.trim()+" for data after restart."}])}else if(g==="imageSettings"){let X=x.trim();if(X.startsWith("sk_")){let S={...ne,apiKey:X};xe(S),$.imageSettings=S,N(L=>(ee(L.length+1),[...L,{id:Date.now(),role:"system",text:"\u{1F511} [IMAGE KEY] Custom API key saved successfully.",isMeta:!0}]))}else xe(S=>({...S,keyType:"Default"})),$.imageSettings={...ne,keyType:"Default"},N(S=>(ee(S.length+1),[...S,{id:Date.now(),role:"system",text:"\u274C [IMAGE KEY ERROR] API key must start with sk_. Key strategy reset to Default.",isMeta:!0}]))}else if(g==="providerKey"){let X=x.trim(),S=mt.provider;await Qr(S,X),G(S),yt(X),Or(X);let L="gemma-4-31b-it";S==="OpenRouter"?L="google/gemma-4-31b-it:free":S==="DeepSeek"&&(L="deepseek-v4-flash"),ze(L),$.aiProvider=S,$.activeModel=L,N(P=>(ee(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u2705 ${S} API Key saved successfully! Model set to ${L}.`,isMeta:!0}]))}B?ko(B(g==="quotas"?O:x)):(Rn({...$,apiTier:He,quotas:O,imageSettings:$.imageSettings||ne}),ko(null),Y(mt?.returnView||"settings"))}})),s.createElement(C,{paddingX:1,marginTop:1},s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"(Press Enter to confirm selection)")));case"stats":return s.createElement(C,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,width:Math.min(100,(r?.columns||100)-2)},s.createElement(C,{marginBottom:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"SESSION TELEMETRY")),s.createElement(C,{flexDirection:"column"},s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Session Duration:")),s.createElement(y,{color:"white"},zo(Date.now()-Ai))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Agent Interactions:")),s.createElement(y,{color:"white"},Po)),s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB API Time:")),s.createElement(y,{color:"white"},zo(nr))),s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Tool Time:")),s.createElement(y,{color:"white"},zo(Hn))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Background Tasks:")),s.createElement(y,{color:"white"},ft)),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Tokens Consumed:")),s.createElement(y,{color:"white"},Jt(de))),de>0&&s.createElement(s.Fragment,null,s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Jt(de-pt))),it>0&&s.createElement(C,{marginLeft:4},s.createElement(C,{width:21},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Jt(it))),pt>0&&s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Jt(pt)))),rr>0&&s.createElement(s.Fragment,null,s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Images Made:")),s.createElement(y,{color:"white"},rr)),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Image Credits:")),s.createElement(y,{color:"white"},Number(((sr||0)*1e3).toFixed(0))," credits"))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Code Changes (Sess):")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",ms)," ",s.createElement(y,{color:"red"},"-",fs))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Tool Calls (Sess):")),s.createElement(y,{color:"white"},et+Ut+qo," ( "),s.createElement(y,{color:"green"},"\u2713 ",et),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"yellow"},"\u2298 ",qo),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"red"},"\u2715 ",Ut),s.createElement(y,{color:"white"}," )"))),s.createElement(C,{flexDirection:"column",marginTop:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"DAILY USAGE TRACKER"),s.createElement(C,{marginTop:1},s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Wall Time Today:")),s.createElement(y,{color:"white"},ir(re?.duration||0))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Agent Interactions:")),s.createElement(y,{color:"white"},re?.agent||0)),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Background Tasks:")),s.createElement(y,{color:"white"},re?.background||0)),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Tokens Used Today:")),s.createElement(y,{color:"white"},Jt(re?.tokens||0))),(re?.tokens||0)>0&&s.createElement(s.Fragment,null,s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Jt((re?.tokens||0)-(re?.candidateTokens||0)))),(re?.cachedTokens||0)>0&&s.createElement(C,{marginLeft:4},s.createElement(C,{width:21},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Jt(re.cachedTokens))),(re?.candidateTokens||0)>0&&s.createElement(C,{marginLeft:2},s.createElement(C,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Jt(re.candidateTokens)))),(re?.imageCalls?.length||0)>0&&s.createElement(s.Fragment,null,s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Images Made Today:")),s.createElement(y,{color:"white"},re.imageCalls.length)),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Image Credits Today:")),s.createElement(y,{color:"white"},Number(((re.imageCalls.reduce((x,g)=>x+g.cost,0)||0)*1e3).toFixed(0))," credits"))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Code Changes Today:")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",re?.linesAdded||0)," ",s.createElement(y,{color:"red"},"-",re?.linesRemoved||0))),s.createElement(C,null,s.createElement(C,{width:25},s.createElement(y,{color:"blue"},"Tool Calls Today:")),s.createElement(y,{color:"white"},(re?.toolSuccess||0)+(re?.toolFailure||0)+(re?.toolDenied||0)," ( "),s.createElement(y,{color:"green"},"\u2713 ",re?.toolSuccess||0),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"yellow"},"\u2298 ",re?.toolDenied||0),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"red"},"\u2715 ",re?.toolFailure||0),s.createElement(y,{color:"white"}," )"))),s.createElement(y,{dimColor:!0,marginTop:1,italic:!0},"(Press ESC to return to chat)"));case"autoExecDanger":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"yellow",bold:!0,underline:!0},"\u26A0\uFE0F SECURITY WARNING: YOLO MODE"),s.createElement(y,{marginTop:1},"Turning this ON allows the agent to execute terminal commands automatically without requiring your approval for each step."),s.createElement(y,{marginTop:1,color:"yellow"},"RISKS INVOLVED:"),s.createElement(y,null,"\u2022 The agent may execute destructive commands (rm -rf, etc.) by mistake."),s.createElement(y,null,"\u2022 Unintended system changes if the agent hallucinates a path or command."),s.createElement(y,null,"\u2022 Reduced control over the agent's step-by-step decision making."),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Confirm Intent",items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:x=>{x.value==="on"&&Q(g=>({...g,autoExec:!0})),Y("settings")}})));case"externalDanger":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u26A0\uFE0F SECURITY WARNING: EXTERNAL WORKSPACE ACCESS"),s.createElement(y,{marginTop:1},"Turning this ON allows the agent to execute tools (Read/Write/Exec) outside of the current active workspace directory."),s.createElement(y,{marginTop:1,color:"yellow"},"RISKS INVOLVED:"),s.createElement(y,null,"\u2022 Access to sensitive system files (SSH keys, Browser data, etc.)"),s.createElement(y,null,"\u2022 Potential for accidental or malicious deletion of OS-critical files."),s.createElement(y,null,"\u2022 Unauthorized script execution across your entire file system."),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Confirm Intent",items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:x=>{x.value==="on"&&Q(g=>({...g,allowExternalAccess:!0})),Y("settings")}})));case"doubleDanger":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u26D4 CRITICAL SECURITY WARNING: COMBINED SYSTEM RISK"),s.createElement(y,{marginTop:1},"You are attempting to enable BOTH [YOLO Mode] and [External Workspace Access] simultaneously."),s.createElement(y,{marginTop:1,color:"red",bold:!0},"THIS IS NOT RECOMMENDED."),s.createElement(y,{marginTop:1,color:"yellow"},"THE CRITICAL RISK:"),s.createElement(y,null,"The agent will have the power to execute any command across your entire system WITHOUT your approval or supervision."),s.createElement(y,{color:"red",italic:!0,marginTop:1},"A single hallucination or error could result in full system wipe or data theft."),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Final Confirmation",items:[{label:"I agree knowing the consequences",value:"on"},{label:"Keep Off",value:"off"}],onSelect:x=>{x.value==="on"&&Q(g=>({...g,autoExec:!0,allowExternalAccess:!0})),Y("settings")}})));case"key":return s.createElement(io,{title:"\u{1F511} API KEY MANAGEMENT",items:[{label:"Edit Current Key (Update)",value:"edit"},{label:"Remove Current Key (Purge)",value:"remove"},{label:"Cancel",value:"Cancel"}],onSelect:x=>{if(x.value==="edit"){yt(null),Y("chat");let g=Ce(2);N(M=>[...M,{id:Date.now(),role:"system",text:`\u{1F511}${g}[ACTION] Flux waiting for new API Key...`}])}else x.value==="remove"?Y("deleteKey"):Y("chat")}});case"deleteKey":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1},(()=>{let x=Ce(2);return s.createElement(y,{color:"red",bold:!0},"\u26D4",x,"DANGER: PURGE API KEY")})(),s.createElement(y,{marginTop:1},"This will permanently delete the saved API key from the project vault. You will need to enter it again to use Flux."),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Are you absolutely sure?",items:[{label:"YES, PURGE KEY",value:"yes"},{label:"NO, GO BACK",value:"no"}],onSelect:async x=>{if(x.value==="yes"){await _s(),yt(null),Y("chat");let g=Ce(2);N(M=>[...M,{id:Date.now(),role:"system",text:`\u2728${g}[VAULT PURGED] API Key removed successfully.`}])}else Y("key")}})));case"exit":return null;case"ask":return s.createElement(C,{width:"100%"},s.createElement(Qi,{question:Vo?.question,options:Vo?.options,onResolve:x=>{Vo?.resolve&&Vo.resolve(x),$r(null),Y("chat")}}));case"revert":return s.createElement(C,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(Mi,{prompts:ct,onSelect:async x=>{try{let g=await Et.rollbackToBefore(x);if(g.success){let{targetPrompt:M}=g,B=Oe.findIndex(S=>S.role==="user"&&S.text&&(S.text.startsWith(M)||S.text.includes(M))),O=[...Oe];B!==-1&&(O=Oe.slice(0,B)),N(O),ee(O.length),c(M),a(M.split(`
586
- `).length>2);let $=O.filter(S=>!String(S.id).startsWith("welcome")&&!S.isMeta);await es(Re,null,$);let X=Ce(2);N(S=>{let L=[...S,{id:"revert-ok-"+Date.now(),role:"system",text:`\u{1F504}${X}[TIME TRAVEL] Codebase rolled back successfully! Reverted prompt loaded to input box.`,isMeta:!0}];return ee(L.length),L}),Y("chat")}}catch(g){let M=Ce(2);N(B=>{let O=[...B,{id:"revert-err-"+Date.now(),role:"system",text:`\u274C${M}[TIME TRAVEL ERROR] Failed to rollback: ${g.message}`,isMeta:!0}];return ee(O.length),O}),Y("chat")}},onClose:()=>Y("chat")}));case"resume":return s.createElement(C,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(Ci,{onSelect:async x=>{let g=await $o();if(g[x]){r.write("\x1B[2J\x1B[3J\x1B[H"),lt(x);let M=[...g[x].messages];M[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||M.unshift({id:"welcome-"+Date.now(),role:"system",text:or+`
582
+ `)}`;return[...N,{id:"term-"+Date.now(),role:"system",text:Le,isTerminalRecord:!0}]}),Ze(null),Ot(!1),To("")},onToolResult:(N,de)=>{if(N==="success"){if(at(we=>we+1),de==="generate_image"){ws(Et=>Et+1);let Le={Low:.001,"Low-High":.002,Medium:.008,"Medium-High":.01,High:.045,Ultra:.0488,Premium:.1}[oe.quality]||.002;Ts(Et=>Et+Le)}}else N==="denied"?ys(we=>we+1):Gt(we=>we+1)},onToolApproval:async(N,de)=>{let we=mo||_t.autoExec;if(N==="exec_command"){let{command:Le}=te(de||"{}");return we||Le&&/^(echo|ls|dir|pwd|cd|git status|git log|git diff|type|cat|help)\b/i.test(Le.trim())?"allow":new Promise(fe=>{fn({tool:N,args:de,resolve:fe}),Y("terminalApproval")})}return we?"allow":new Promise(Le=>{fn({tool:N,args:de,resolve:Le}),Y("approval")})},onAskUser:async(N,de)=>new Promise(we=>{$r({question:N,options:de,resolve:Le=>{R(Et=>[...Et,{id:"ask-"+Date.now(),role:"system",text:`\u{1F4AC} **Ask User**
583
+ Selection: ${Le}`,isAskRecord:!0}]),we(Le)}}),Y("ask")})},async()=>{if(Ao.current){let N=Ao.current;return De(null),Ao.current=null,R(de=>{let we=[...de].reverse().findIndex(Le=>Le.text?.includes("[STEERING HINT: QUEUED]"));if(we!==-1){let Le=de.length-1-we,Et=[...de];return Et[Le]={...Et[Le],text:Et[Le].text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: INJECTED]"),color:"cyan"},Et}return de}),N}return null},Dn),ue=!1,Pe=null,Se=null,zt=!1,Dt=!1,vt=!1,gn=!1,No=0,po=null,Oo=/\[?\s*turn\s*:\s*.*?\s*\]?/gi;for await(let N of _e){if(P&&N.type==="text"&&(M=Date.now(),P=!1),N.type==="status"){Vn(N.content),Ho()&&ms(N.content);continue}if(N.type==="status_history"){Vn(N.content),Ho()&&ms(N.content),R(fe=>[...fe,{id:"condense-"+Date.now(),role:"system",text:`\u2699\uFE0F [SYSTEM] ${N.content}`,isMeta:!0}]);continue}if(N.type==="spinner"){zn(N.content);continue}if(N.type==="model_update"){St(N.content);continue}if(N.type==="turn_reset"){Pe=null,Se=null,ue=!1,zt=!1,Dt=!1,gn=!1,vt=!1;continue}if(N.type==="interactive_turn_finished"){Br(!1),Ho()&&ms(null),C=!0,ll({profile:Me,thinkingLevel:q,mode:f,janitorModel:Fe,chatId:Re,systemSettings:_t,sessionStats:he,aiProvider:W,apiKey:Oe},N.data.agentText,N.data.fullAgentTextRaw,N.data.history,{onMemoryUpdated:()=>R(fe=>{let xe=[...fe];return xe.length>0&&(xe[xe.length-1].memoryUpdated=!0),xe}),onBackgroundIncrement:()=>Ne(fe=>fe+1)});continue}if(N.type==="visual_feedback"){R(fe=>[...fe,{id:"feedback-"+Date.now(),role:"system",text:N.content,isVisualFeedback:!0}]);continue}if(N.type==="exec_start")continue;if(N.type==="liveTokens"){st({tokens:N.content});continue}if(N.type==="usage"){let fe=N.content.totalTokenCount||0,xe=N.content.cachedContentTokenCount||0,tt=N.content.candidatesTokenCount||0;st({tokens:fe}),Nt(ot=>ot+fe),xe>0&&uo(ot=>ot+xe),tt>0&&mn(ot=>ot+tt),yt(ot=>ot+1);continue}if(N.type==="tool_time"){Fi(fe=>fe+N.content);continue}if(N.type==="tool_result"){if(R(fe=>[...fe,{id:"tool-"+Date.now(),role:"system",text:N.content,fullText:N.aiContent,binaryPart:N.binaryPart,toolName:N.toolName}]),N.toolName==="update_file"&&N.aiContent){let fe=N.aiContent.split(`
584
+ `),xe=0,tt=0,ot=!1;for(let ht of fe){if(ht.includes("[DIFF_START]")){ot=!0;continue}if(ht.includes("[DIFF_END]")){ot=!1;continue}ot&&(/^\+\d+/.test(ht)?xe++:/^\-\d+/.test(ht)&&tt++)}hs+=xe,gs+=tt,xo("linesAdded",xe),xo("linesRemoved",tt)}else if(N.toolName==="write_file"&&N.aiContent){let fe=N.aiContent.match(/- Stats: \[(\d+) lines/),xe=fe?parseInt(fe[1]):0,tt=0;if(N.aiContent.includes("Old File contents:")){let ot=N.aiContent.split(`
585
+ `),ht=!1;for(let Jt of ot){if(Jt.includes("Old File contents:")){ht=!0;continue}ht&&(Jt.trim()===""?ht=!1:/^\d+ \|/.test(Jt)&&tt++)}}hs+=xe,gs+=tt,xo("linesAdded",xe),xo("linesRemoved",tt)}continue}let de=N.content,we=de.toLowerCase();if(de.includes("```")&&(zt=!zt),we.includes("tool:functions.")&&(Dt=!0,No=0,po=null,de.includes("[tool:functions.")&&(No=0)),Dt){for(let fe=0;fe<de.length;fe++){let xe=de[fe];!po&&(xe==="'"||xe==='"'||xe==="`")?po=xe:po&&xe===po&&de[fe-1]!=="\\"&&(po=null),po||(xe==="("||xe==="["?No++:(xe===")"||xe==="]")&&No--)}No<=0&&!po&&(Dt=!1)}if((we.includes("<think")||we.includes("<thought"))&&(!ue&&!zt&&!Dt&&!vt)&&(ue=!0,vt=!0,de=de.replace(/<(think|thought)>[\s\S]*?<\/(think|thought)>/gi,"").replace(/<(think|thought)>/gi,""),Pe="think-"+Date.now(),R(fe=>[...fe,{id:Pe,role:"think",text:"",isStreaming:!0,startTime:Date.now()}])),(we.includes("</think>")||we.includes("</thought>"))&&Pe){let fe=de.split(/<\/(think|thought)>/gi),xe=fe[0]||"",tt=fe.slice(2).join("").replace(/<\/?(think|thought)>/gi,"");R(ot=>{let ht=ot.map(Jt=>{if(Jt.id===Pe&&typeof Jt.id=="string"){let Ur=Jt.startTime||parseInt(Jt.id.split("-")[1])||Date.now(),Es=Date.now()-Ur;return{...Jt,text:Jt.text+xe,isStreaming:!1,duration:Es}}return Jt});return ue=!1,Se="agent-"+Date.now(),[...ht,{id:Se,role:"agent",text:tt,isStreaming:!0}]});continue}if(ue&&Pe)R(fe=>{let xe=!1,tt="",ot=fe.map(ht=>{if(ht.id===Pe){let Jt=ht.text+de;if(Jt.toLowerCase().includes("</think>")){xe=!0;let Ur=Jt.split(/<\/think>/gi);tt=Ur.slice(1).join("</think>")||"";let Es=ht.startTime||parseInt(ht.id.split("-")[1])||Date.now(),Pl=Date.now()-Es;return{...ht,text:Ur[0],isStreaming:!1,duration:Pl}}return{...ht,text:Jt,isStreaming:!0}}return ht});return xe?(ue=!1,Se="agent-"+Date.now(),[...ot,{id:Se,role:"agent",text:tt.replace(/<\/?(think|thought)>/gi,""),isStreaming:!0}]):ot});else if(!ue){let fe=de.toLowerCase();!gn&&fe.includes("tool:functions.")&&(gn=!0),Se?R(xe=>xe.map(tt=>tt.id===Se?{...tt,text:tt.text+de,isStreaming:!0}:tt)):(Se="agent-"+Date.now(),R(xe=>[...xe,{id:Se,role:"agent",text:de,isStreaming:!0}]))}}let Bn=Date.now();Dr(N=>N+(Bn-M))}catch(H){R(ie=>(Q(ie.length+1),[...ie,{id:"error-"+Date.now(),role:"system",text:`\u274C ERROR: ${H.message}`}]))}finally{if(Br(!1),Vn(null),C||process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow | Idle\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow | Idle\x07")),Ao.current){en(Ao.current),De(null);let H=Ao.current;Ao.current=null,R(ie=>{let _e=[...ie],ue=_e.reverse().find(Pe=>Pe.text?.includes("[STEERING HINT: QUEUED]"));return ue&&(ue.text=ue.text.replace("[STEERING HINT: QUEUED]","[STEERING HINT: FINISHED_TURN]")),_e.reverse()}),Y("resolution")}R(H=>{let ie=Date.now()-M,_e=!1,ue=[...H].reverse().map(Se=>{let zt=Se.isStreaming?{...Se,isStreaming:!1}:Se;return!_e&&zt.role==="agent"&&(_e=!0,zt={...zt,workedDuration:ie}),zt}).reverse(),Pe=ue.filter(Se=>!String(Se.id).startsWith("welcome")&&!Se.isMeta);return ns(Re,null,Pe),Q(ue.length),ue})}})()}c(""),a(!1)}},be=Or(()=>{if(l.startsWith("/")&&!k){let A=l.split(" "),B=A[A.length-1].toLowerCase();if(A.length===1){let $=B.startsWith("/")?B.slice(1):B;return Xe.filter(_=>(_.cmd.startsWith("/")?_.cmd.slice(1):_.cmd).toLowerCase().includes($))}let O=Xe;for(let $=0;$<A.length-1;$++){let _=A[$].toLowerCase(),C=O.find(M=>M.cmd.toLowerCase()===_);if(C&&C.subs)O=C.subs;else return[]}return O.filter($=>$.cmd.toLowerCase().includes(B))}let x=l.split(" "),g=x[x.length-1];if(g&&g.startsWith("@")&&!k){let A=g.indexOf("#"),B=A!==-1,O=B?g.substring(1,A).toLowerCase():g.slice(1).toLowerCase(),$=B?g.substring(A):"";return hd(process.cwd()).filter(M=>M.name.toLowerCase().includes(O)).map(M=>{let P=M.relativePath.replace(/\\/g,"/");return{cmd:"@["+(P.startsWith(".")?P:"./"+P)+$+"]",desc:M.relativePath}})}return[]},[l,k]);co(()=>{S(0)},[be]);let fo=()=>{switch(Ht){case"settings":return s.createElement(Ps,{systemSettings:_t,setSystemSettings:Z,apiTier:Ye,setActiveView:Y,setInputConfig:Mo,saveSettings:jn,quotas:jt,setMessages:R,aiProvider:W});case"selectProvider":return s.createElement(ao,{title:"SELECT AI PROVIDER",items:[{label:"Google (Free/Paid)",value:"Google"},{label:"DeepSeek (Paid)",value:"DeepSeek"},{label:"OpenRouter (Free/Paid) [EXPERIMENTAL]",value:"OpenRouter"},{label:"Back",value:"settings"}],onSelect:async x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}let g=x.value,A=await es(g);if(A){X(g),xt(A),Ar(A,{aiProvider:g,onIDEApproval:Pn});let B="gemma-4-31b-it";g==="OpenRouter"?B="google/gemma-4-31b-it:free":g==="DeepSeek"&&(B="deepseek-v4-flash"),Ve(B),jn({aiProvider:g,activeModel:B,apiTier:Ye,quotas:jt}),R(O=>[...O,{role:"system",text:`\u2705 Switched to ${g}! Key loaded from Vault. Model set to ${B}.`,isMeta:!0}]),Y("settings")}else Mo({label:`Enter ${g} API Key:`,key:"providerKey",provider:g,value:"",returnView:"settings"}),Y("input")},onClose:()=>Y("settings")});case"apiTier":return s.createElement(ao,{title:s.createElement(y,null,"SELECT YOUR CURRENT API TIER BASED ON ",s.createElement(y,{color:"cyan",underline:!0,bold:!0},"\x1B]8;;https://aistudio.google.com/projects\x07AI STUDIO\x1B]8;;\x07"),". (CURRENT: ",Ye.toUpperCase(),")"),items:[{label:"Free Tier (Gemini API Free Tier)",value:"Free"},{label:"Paid Tier (API with Billing Account)",value:"Paid"},{label:"Back",value:"settings"}],onSelect:x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}let g=x.value;Lr(g),g==="Paid"?(Mo({label:"Enter Agent daily budget (requests made):",key:"quotas",subKey:"agentLimit",value:String(jt.agentLimit)}),Y("input")):(jn({apiTier:g,quotas:jt}),Y("settings"))},onClose:()=>Y("settings")});case"input":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},s.createElement(b,{paddingX:1},s.createElement(y,{color:"magenta",bold:!0},"\u{1F527} DATA CONFIGURATION")),ut?.note&&s.createElement(b,{paddingX:1,marginBottom:1},s.createElement(y,{color:"yellow",dimColor:!0,italic:!0},ut.note)),s.createElement(b,{paddingX:1,flexDirection:"row"},s.createElement(y,{color:"cyan",bold:!0},ut?.label," "),s.createElement(kl,{value:ut?.value||"",onChange:x=>Mo(g=>({...g,value:x})),onSubmit:async x=>{let{key:g,subKey:A,next:B}=ut,O={...jt},$={};if(g==="quotas"){let _=A.toLowerCase().includes("limit")?parseInt(x)||0:x;O[A]=_,Xn(O),$.quotas=O}else if(g==="activeModel")Ve(x),$.activeModel=x;else if(g==="janitorModel")ze(x),$.janitorModel=x;else if(g==="autoApproveCommands"||g==="autoDisallowCommands"||g==="alwaysAskCommands"){let _={..._t,[g]:x.trim(),sandboxPreset:"Custom"};Z(_),$.systemSettings=_}else if(g==="externalDataPath"){let _={..._t,useExternalData:!0,externalDataPath:x.trim()};Z(_),$.systemSettings=_,R(C=>[...C,{id:Date.now(),role:"system",text:"\u{1F4C1} [EXTERNAL STORAGE] Flux Flow will use "+x.trim()+" for data after restart."}])}else if(g==="imageSettings"){let _=x.trim();if(_.startsWith("sk_")){let C={...oe,apiKey:_};ge(C),$.imageSettings=C,R(M=>(Q(M.length+1),[...M,{id:Date.now(),role:"system",text:"\u{1F511} [IMAGE KEY] Custom API key saved successfully.",isMeta:!0}]))}else ge(C=>({...C,keyType:"Default"})),$.imageSettings={...oe,keyType:"Default"},R(C=>(Q(C.length+1),[...C,{id:Date.now(),role:"system",text:"\u274C [IMAGE KEY ERROR] API key must start with sk_. Key strategy reset to Default.",isMeta:!0}]))}else if(g==="providerKey"){let _=x.trim(),C=ut.provider;await ts(C,_),X(C),xt(_),Ar(_,{aiProvider:C,onIDEApproval:Pn});let M="gemma-4-31b-it";C==="OpenRouter"?M="google/gemma-4-31b-it:free":C==="DeepSeek"&&(M="deepseek-v4-flash"),Ve(M),$.aiProvider=C,$.activeModel=M,R(P=>(Q(P.length+1),[...P,{id:Date.now(),role:"system",text:`\u2705 ${C} API Key saved successfully! Model set to ${M}.`,isMeta:!0}]))}B?Mo(B(g==="quotas"?O:x)):(jn({...$,apiTier:Ye,quotas:O,imageSettings:$.imageSettings||oe}),Mo(null),Y(ut?.returnView||"settings"))}})),s.createElement(b,{paddingX:1,marginTop:1},s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"(Press Enter to confirm selection)")));case"stats":return s.createElement(b,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,width:Math.min(100,(r?.columns||100)-2)},s.createElement(b,{marginBottom:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"SESSION TELEMETRY")),s.createElement(b,{flexDirection:"column"},s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Session Duration:")),s.createElement(y,{color:"white"},Fo(Date.now()-Pi))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Agent Interactions:")),s.createElement(y,{color:"white"},Po)),s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB API Time:")),s.createElement(y,{color:"white"},Fo(dr))),s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Tool Time:")),s.createElement(y,{color:"white"},Fo(Kn))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Background Tasks:")),s.createElement(y,{color:"white"},mt)),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Tokens Consumed:")),s.createElement(y,{color:"white"},Qt(ce))),ce>0&&s.createElement(s.Fragment,null,s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Qt(ce-ft))),it>0&&s.createElement(b,{marginLeft:4},s.createElement(b,{width:21},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Qt(it))),ft>0&&s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Qt(ft)))),ur>0&&s.createElement(s.Fragment,null,s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Images Made:")),s.createElement(y,{color:"white"},ur)),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Image Credits:")),s.createElement(y,{color:"white"},Number(((vn||0)*1e3).toFixed(0))," credits"))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Code Changes (Sess):")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",hs)," ",s.createElement(y,{color:"red"},"-",gs))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Tool Calls (Sess):")),s.createElement(y,{color:"white"},Qe+Ut+Jo," ( "),s.createElement(y,{color:"green"},"\u2713 ",Qe),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"yellow"},"\u2298 ",Jo),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"red"},"\u2715 ",Ut),s.createElement(y,{color:"white"}," )"))),s.createElement(b,{flexDirection:"column",marginTop:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"DAILY USAGE TRACKER"),s.createElement(b,{marginTop:1},s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Wall Time Today:")),s.createElement(y,{color:"white"},Pr(ne?.duration||0))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Agent Interactions:")),s.createElement(y,{color:"white"},ne?.agent||0)),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Background Tasks:")),s.createElement(y,{color:"white"},ne?.background||0)),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Tokens Used Today:")),s.createElement(y,{color:"white"},Qt(ne?.tokens||0))),(ne?.tokens||0)>0&&s.createElement(s.Fragment,null,s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Qt((ne?.tokens||0)-(ne?.candidateTokens||0)))),(ne?.cachedTokens||0)>0&&s.createElement(b,{marginLeft:4},s.createElement(b,{width:21},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Qt(ne.cachedTokens))),(ne?.candidateTokens||0)>0&&s.createElement(b,{marginLeft:2},s.createElement(b,{width:23},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Qt(ne.candidateTokens)))),(ne?.imageCalls?.length||0)>0&&s.createElement(s.Fragment,null,s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Images Made Today:")),s.createElement(y,{color:"white"},ne.imageCalls.length)),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Image Credits Today:")),s.createElement(y,{color:"white"},Number(((ne.imageCalls.reduce((x,g)=>x+g.cost,0)||0)*1e3).toFixed(0))," credits"))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Code Changes Today:")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",ne?.linesAdded||0)," ",s.createElement(y,{color:"red"},"-",ne?.linesRemoved||0))),s.createElement(b,null,s.createElement(b,{width:25},s.createElement(y,{color:"blue"},"Tool Calls Today:")),s.createElement(y,{color:"white"},(ne?.toolSuccess||0)+(ne?.toolFailure||0)+(ne?.toolDenied||0)," ( "),s.createElement(y,{color:"green"},"\u2713 ",ne?.toolSuccess||0),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"yellow"},"\u2298 ",ne?.toolDenied||0),s.createElement(y,{color:"white"}," "),s.createElement(y,{color:"red"},"\u2715 ",ne?.toolFailure||0),s.createElement(y,{color:"white"}," )"))),s.createElement(y,{dimColor:!0,marginTop:1,italic:!0},"(Press ESC to return to chat)"));case"autoExecDanger":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"yellow",bold:!0,underline:!0},"\u26A0\uFE0F SECURITY WARNING: YOLO MODE"),s.createElement(y,{marginTop:1},"Turning this ON allows the agent to execute terminal commands automatically without requiring your approval for each step."),s.createElement(y,{marginTop:1,color:"yellow"},"RISKS INVOLVED:"),s.createElement(y,null,"\u2022 The agent may execute destructive commands (rm -rf, etc.) by mistake."),s.createElement(y,null,"\u2022 Unintended system changes if the agent hallucinates a path or command."),s.createElement(y,null,"\u2022 Reduced control over the agent's step-by-step decision making."),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Confirm Intent",items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:x=>{x.value==="on"&&Z(g=>({...g,autoExec:!0})),Y("settings")}})));case"externalDanger":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u26A0\uFE0F SECURITY WARNING: EXTERNAL WORKSPACE ACCESS"),s.createElement(y,{marginTop:1},"Turning this ON allows the agent to execute tools (Read/Write/Exec) outside of the current active workspace directory."),s.createElement(y,{marginTop:1,color:"yellow"},"RISKS INVOLVED:"),s.createElement(y,null,"\u2022 Access to sensitive system files (SSH keys, Browser data, etc.)"),s.createElement(y,null,"\u2022 Potential for accidental or malicious deletion of OS-critical files."),s.createElement(y,null,"\u2022 Unauthorized script execution across your entire file system."),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Confirm Intent",items:[{label:"I know the risk and turning on intentionally",value:"on"},{label:"Keep Off (Recommended)",value:"off"}],onSelect:x=>{x.value==="on"&&Z(g=>({...g,allowExternalAccess:!0})),Y("settings")}})));case"doubleDanger":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u26D4 CRITICAL SECURITY WARNING: COMBINED SYSTEM RISK"),s.createElement(y,{marginTop:1},"You are attempting to enable BOTH [YOLO Mode] and [External Workspace Access] simultaneously."),s.createElement(y,{marginTop:1,color:"red",bold:!0},"THIS IS NOT RECOMMENDED."),s.createElement(y,{marginTop:1,color:"yellow"},"THE CRITICAL RISK:"),s.createElement(y,null,"The agent will have the power to execute any command across your entire system WITHOUT your approval or supervision."),s.createElement(y,{color:"red",italic:!0,marginTop:1},"A single hallucination or error could result in full system wipe or data theft."),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Final Confirmation",items:[{label:"I agree knowing the consequences",value:"on"},{label:"Keep Off",value:"off"}],onSelect:x=>{x.value==="on"&&Z(g=>({...g,autoExec:!0,allowExternalAccess:!0})),Y("settings")}})));case"key":return s.createElement(ao,{title:"\u{1F511} API KEY MANAGEMENT",items:[{label:"Edit Current Key (Update)",value:"edit"},{label:"Remove Current Key (Purge)",value:"remove"},{label:"Cancel",value:"Cancel"}],onSelect:x=>{if(x.value==="edit"){xt(null),Y("chat");let g=Ce(2);R(A=>[...A,{id:Date.now(),role:"system",text:`\u{1F511}${g}[ACTION] Flux waiting for new API Key...`}])}else x.value==="remove"?Y("deleteKey"):Y("chat")}});case"deleteKey":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1},(()=>{let x=Ce(2);return s.createElement(y,{color:"red",bold:!0},"\u26D4",x,"DANGER: PURGE API KEY")})(),s.createElement(y,{marginTop:1},"This will permanently delete the saved API key from the project vault. You will need to enter it again to use Flux."),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Are you absolutely sure?",items:[{label:"YES, PURGE KEY",value:"yes"},{label:"NO, GO BACK",value:"no"}],onSelect:async x=>{if(x.value==="yes"){await Us(),xt(null),Y("chat");let g=Ce(2);R(A=>[...A,{id:Date.now(),role:"system",text:`\u2728${g}[VAULT PURGED] API Key removed successfully.`}])}else Y("key")}})));case"exit":return null;case"ask":return s.createElement(b,{width:"100%"},s.createElement(oa,{question:Zo?.question,options:Zo?.options,onResolve:x=>{Zo?.resolve&&Zo.resolve(x),$r(null),Y("chat")}}));case"revert":return s.createElement(b,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(vi,{prompts:Tt,onSelect:async x=>{try{let g=await bt.rollbackToBefore(x);if(g.success){let{targetPrompt:A}=g,B=Lt.findIndex(C=>C.role==="user"&&C.text&&(C.text.startsWith(A)||C.text.includes(A))),O=[...Lt];B!==-1&&(O=Lt.slice(0,B)),R(O),Q(O.length),c(A),a(A.split(`
586
+ `).length>2);let $=O.filter(C=>!String(C.id).startsWith("welcome")&&!C.isMeta);await ns(Re,null,$);let _=Ce(2);R(C=>{let M=[...C,{id:"revert-ok-"+Date.now(),role:"system",text:`\u{1F504}${_}[TIME TRAVEL] Codebase rolled back successfully! Reverted prompt loaded to input box.`,isMeta:!0}];return Q(M.length),M}),Y("chat")}}catch(g){let A=Ce(2);R(B=>{let O=[...B,{id:"revert-err-"+Date.now(),role:"system",text:`\u274C${A}[TIME TRAVEL ERROR] Failed to rollback: ${g.message}`,isMeta:!0}];return Q(O.length),O}),Y("chat")}},onClose:()=>Y("chat")}));case"resume":return s.createElement(b,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(Oi,{onSelect:async x=>{let g=await $o();if(g[x]){r.write("\x1B[2J\x1B[3J\x1B[H"),lt(x);let A=[...g[x].messages];A[0]?.text?.includes("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")||A.unshift({id:"welcome-"+Date.now(),role:"system",text:cr+`
587
587
 
588
- \u{1F30A}\u26A1 Resuming Flux Flow Session...`,isMeta:!0}),N(M),Y("chat"),N(O=>{let $=[...O,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED: [${x}]`,isMeta:!0}];return ee($.length),$})}},onDelete:async x=>await Ws(x),onClose:()=>Y("chat")}));case"memory":return s.createElement(C,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(Ii,{onClose:()=>Y("chat")}));case"profile":return s.createElement(Ps,{initialData:Me,onSave:x=>{rt(x),N(g=>[...g,{id:Date.now(),role:"system",text:`\u2705 Profile updated: ${x.name} (${x.nickname})`}]),Y("chat")},onCancel:()=>Y("chat")});case"resolution":return s.createElement(C,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(cd,{data:Ne,onResolve:x=>{yo(null),Y("chat"),setTimeout(()=>{Ge(x,!0)},500)},onEdit:x=>{yo(null),Y("chat"),c(x)}}));case"approval":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"yellow",bold:!0,underline:!0},"\u{1F510} SECURITY GATE: FILE WRITE PERMISSION"),s.createElement(y,{marginTop:1},"The agent is attempting to modify: ",s.createElement(y,{color:"cyan"},oe(jn?.args||"{}").path||"Unknown File")),Ro()?s.createElement(C,{marginTop:1,paddingX:1},s.createElement(y,{color:"cyan",italic:!0},"\u26A1\uFE0F FluxFlow Companion is active. Review the changes in your editor.")):s.createElement(C,{marginTop:1,borderStyle:"single",borderColor:"#333",paddingX:1,flexDirection:"column"},s.createElement(y,{color:"gray"},"--- PROPOSED CONTENT / DIFF ---"),(()=>{let x=oe(jn?.args||"{}"),g=[],M=new Set;if(Object.keys(x).forEach($=>{let X=$.match(/^(replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(X){let S=X[2]?parseInt(X[2]):1;M.add(S)}}),Array.from(M).sort(($,X)=>$-X).forEach($=>{let X,S;$===1?(X=x.replaceContent1??x.content_to_replace1??x.replaceContent??x.content_to_replace??x.TargetContent??null,S=x.newContent1??x.content_to_add1??x.newContent??x.content_to_add??x.ReplacementContent??x.replacementContent??null):(X=x[`replaceContent${$}`]??x[`content_to_replace${$}`]??null,S=x[`newContent${$}`]??x[`content_to_add${$}`]??null),(X!==null||S!==null)&&g.push({replace:X,new:S})}),g.length>0)return s.createElement(C,{flexDirection:"column",marginTop:1},g.map(($,X)=>{let S=$.replace!==null,L=$.new!==null;return s.createElement(C,{key:X,flexDirection:"column",marginTop:X>0?1:0},g.length>1&&s.createElement(y,{color:"gray"},"Block ",X+1,":"),S&&s.createElement(C,null,s.createElement(y,{color:"red",wrap:"anywhere",bold:!0},"- ",$.replace)),L&&s.createElement(C,{marginTop:S?1:0},s.createElement(y,{color:"green",wrap:"anywhere",bold:!0},"+ ",$.new.replace(/\[\/n\]?/g,"\\n"))))}));let O=x.content||x.ReplacementContent||x.content_to_add||x.replacementContent||x.newContent||null;return s.createElement(y,{color:"white",wrap:"anywhere"},(O?O.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Action Required",items:[{label:"\u2705 Accept this time",value:"allow"},{label:"\u{1F510} Accept for this session",value:"always"},{label:"\u274C Don't accept",value:"deny"}],onSelect:x=>{x.value==="always"&&mn(!0);let g=x.value==="deny"?"deny":"allow";jn.resolve(g),An(null),Y("chat")}})));case"updateManager":return s.createElement(io,{title:"Select Preferred Update Manager",subtitle:"NOTE: If you are unsure about these, go with NPM",items:[{label:"NPM (Standard)",value:"npm"},{label:"PNPM (Recommended)",value:"pnpm"},{label:"BUN (Ultra Fast)",value:"bun"},{label:"YARN (Classic)",value:"yarn"},{label:"Custom Command",value:"custom"},{label:"Back",value:"settings"}],onSelect:x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}x.value==="custom"?(ko({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:_t.customUpdateCommand,next:g=>(Q(M=>({...M,updateManager:"custom",customUpdateCommand:g})),null)}),Y("input")):(Q(g=>({...g,updateManager:x.value})),Y("settings"))}});case"update":return s.createElement(fl,{latest:De,current:Mn,settings:_t,onClose:()=>Y("chat"),onSuccess:()=>{N(x=>(ee(x.length+1),[...x,{id:"update-success-"+Date.now(),role:"system",text:`\u2728 **[UPDATE COMPLETED]** Flux Flow successfully upgraded to v${De}.
589
- \u{1F680} **Restart Flux Flow to see changes.**`,isMeta:!0}])),Y("chat")},onUpdateSettings:x=>{Y("updateManager")}});case"terminalApproval":return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u{1F510} SECURITY GATE: TERMINAL COMMAND OVERSIGHT"),s.createElement(C,{marginTop:1},s.createElement(y,null,"Agent requested to run: ",s.createElement(y,{color:"yellow",bold:!0},oe(jn?.args||"{}").command||"Unknown Command"))),s.createElement(C,{marginTop:1},s.createElement(io,{title:"Risk Assessment Required",items:[{label:"\u{1F680} Run",value:"allow"},{label:"\u274C Deny",value:"deny"}],onSelect:x=>{jn.resolve(x.value),An(null),Y("chat")}})));default:return s.createElement(C,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},s.createElement(C,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},s.createElement(C,null,ar?s.createElement(C,null,Ln&&!Ln&&s.createElement(ld,null),s.createElement(y,{color:"magenta",bold:!0,italic:!0},Ln&&!Ln?" ":"",ar.toUpperCase())):s.createElement(y,{color:"cyan",dimColor:!0,italic:!0}," ",l.length>0&&dr?"Press ESC again to clear input":"READY FOR COMMAND...")),s.createElement(C,null,s.createElement(y,{color:"gray",bold:!0},"[ "),s.createElement(y,{color:"white"},Dn||Ve),s.createElement(y,{color:"gray",bold:!0}," ]"))),s.createElement(C,{borderStyle:"round",borderColor:Mo?"magenta":"cyan",paddingX:1,paddingY:0,width:"100%"},s.createElement(C,{flexDirection:"column",width:"100%"},s.createElement(C,{flexDirection:"row",width:"100%",paddingY:0},s.createElement(C,{flexShrink:0,width:4},s.createElement(y,{color:Mo?"magenta":"cyan",bold:!0},Mo?"\u2726 ":"\u{1F4A0} ")),s.createElement(C,{flexGrow:1},s.createElement(C,{flexGrow:1,position:"relative"},l===""&&s.createElement(C,{position:"absolute",paddingLeft:0},Tt&&!Kt?s.createElement(y,{color:"yellow"},Fr?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):Tt&&Kt?s.createElement(y,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):dr===1?s.createElement(y,{color:"cyan",bold:!0}," Press ESC again to ",l.length>0?"clear input":"revert codebase to checkpoint","..."):s.createElement(y,{color:"gray"},ys?" Press ESC again to cancel the request.":Mo?" Enter a prompt to steer the agent.":` Send message or /cmd ... (${ot.shortcut} for newline), @file`)),s.createElement(Pi,{key:`input-${m}`,focus:!Kt,showCursor:ho,lastFocusEventTime:no.current,value:l,columns:h.columns,onChange:x=>{let g=x.replace(/\r\n/g,`
588
+ \u{1F30A}\u26A1 Resuming Flux Flow Session...`,isMeta:!0}),R(A),Y("chat"),R(O=>{let $=[...O,{id:"sys-"+Date.now(),role:"system",text:`\u{1F4E1} SESSION RESUMED: [${x}]`,isMeta:!0}];return Q($.length),$})}},onDelete:async x=>await Hs(x),onClose:()=>Y("chat")}));case"memory":return s.createElement(b,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(Di,{onClose:()=>Y("chat")}));case"profile":return s.createElement(Bs,{initialData:Me,onSave:x=>{rt(x),R(g=>[...g,{id:Date.now(),role:"system",text:`\u2705 Profile updated: ${x.name} (${x.nickname})`}]),Y("chat")},onCancel:()=>Y("chat")});case"resolution":return s.createElement(b,{width:"100%",alignItems:"center",justifyContent:"center"},s.createElement(fd,{data:_o,onResolve:x=>{en(null),Y("chat"),setTimeout(()=>{pt(x,!0)},500)},onEdit:x=>{en(null),Y("chat"),c(x)}}));case"approval":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"yellow",bold:!0,underline:!0},"\u{1F510} SECURITY GATE: FILE WRITE PERMISSION"),s.createElement(y,{marginTop:1},"The agent is attempting to modify: ",s.createElement(y,{color:"cyan"},te(Qo?.args||"{}").path||"Unknown File")),Ho()?s.createElement(b,{marginTop:1,paddingX:1},s.createElement(y,{color:"cyan",italic:!0},"\u26A1\uFE0F FluxFlow Companion is active. Review the changes in your editor.")):s.createElement(b,{marginTop:1,borderStyle:"single",borderColor:"#333",paddingX:1,flexDirection:"column"},s.createElement(y,{color:"gray"},"--- PROPOSED CONTENT / DIFF ---"),(()=>{let x=te(Qo?.args||"{}"),g=[],A=new Set;if(Object.keys(x).forEach($=>{let _=$.match(/^(replaceContent|newContent|content_to_replace|content_to_add|TargetContent|ReplacementContent|replacementContent)(\d+)?$/);if(_){let C=_[2]?parseInt(_[2]):1;A.add(C)}}),Array.from(A).sort(($,_)=>$-_).forEach($=>{let _,C;$===1?(_=x.replaceContent1??x.content_to_replace1??x.replaceContent??x.content_to_replace??x.TargetContent??null,C=x.newContent1??x.content_to_add1??x.newContent??x.content_to_add??x.ReplacementContent??x.replacementContent??null):(_=x[`replaceContent${$}`]??x[`content_to_replace${$}`]??null,C=x[`newContent${$}`]??x[`content_to_add${$}`]??null),(_!==null||C!==null)&&g.push({replace:_,new:C})}),g.length>0)return s.createElement(b,{flexDirection:"column",marginTop:1},g.map(($,_)=>{let C=$.replace!==null,M=$.new!==null;return s.createElement(b,{key:_,flexDirection:"column",marginTop:_>0?1:0},g.length>1&&s.createElement(y,{color:"gray"},"Block ",_+1,":"),C&&s.createElement(b,null,s.createElement(y,{color:"red",wrap:"anywhere",bold:!0},"- ",$.replace)),M&&s.createElement(b,{marginTop:C?1:0},s.createElement(y,{color:"green",wrap:"anywhere",bold:!0},"+ ",$.new.replace(/\[\/n\]?/g,"\\n"))))}));let O=x.content||x.ReplacementContent||x.content_to_add||x.replacementContent||x.newContent||null;return s.createElement(y,{color:"white",wrap:"anywhere"},(O?O.replace(/\[\/n\]?/g,"\\n"):null)||"Updating file content...")})()),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Action Required",items:[{label:"\u2705 Accept this time",value:"allow"},{label:"\u{1F510} Accept for this session",value:"always"},{label:"\u274C Don't accept",value:"deny"}],onSelect:x=>{x.value==="always"&&qn(!0);let g=x.value==="deny"?"deny":"allow";Qo.resolve(g),fn(null),Y("chat")}})));case"updateManager":return s.createElement(ao,{title:"Select Preferred Update Manager",subtitle:"NOTE: If you are unsure about these, go with NPM",items:[{label:"NPM (Standard)",value:"npm"},{label:"PNPM (Recommended)",value:"pnpm"},{label:"BUN (Ultra Fast)",value:"bun"},{label:"YARN (Classic)",value:"yarn"},{label:"Custom Command",value:"custom"},{label:"Back",value:"settings"}],onSelect:x=>{if(x.value==="settings"||x.value==="Back"){Y("settings");return}x.value==="custom"?(Mo({label:"Enter Custom Update Command (Global install recommended):",key:"customUpdateCommand",value:_t.customUpdateCommand,next:g=>(Z(A=>({...A,updateManager:"custom",customUpdateCommand:g})),null)}),Y("input")):(Z(g=>({...g,updateManager:x.value})),Y("settings"))}});case"update":return s.createElement(xl,{latest:Ae,current:Dn,settings:_t,onClose:()=>Y("chat"),onSuccess:()=>{R(x=>(Q(x.length+1),[...x,{id:"update-success-"+Date.now(),role:"system",text:`\u2728 **[UPDATE COMPLETED]** Flux Flow successfully upgraded to v${Ae}.
589
+ \u{1F680} **Restart Flux Flow to see changes.**`,isMeta:!0}])),Y("chat")},onUpdateSettings:x=>{Y("updateManager")}});case"terminalApproval":return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"red",paddingX:2,paddingY:1,width:"100%"},s.createElement(y,{color:"red",bold:!0,underline:!0},"\u{1F510} SECURITY GATE: TERMINAL COMMAND OVERSIGHT"),s.createElement(b,{marginTop:1},s.createElement(y,null,"Agent requested to run: ",s.createElement(y,{color:"yellow",bold:!0},te(Qo?.args||"{}").command||"Unknown Command"))),s.createElement(b,{marginTop:1},s.createElement(ao,{title:"Risk Assessment Required",items:[{label:"\u{1F680} Run",value:"allow"},{label:"\u274C Deny",value:"deny"}],onSelect:x=>{Qo.resolve(x.value),fn(null),Y("chat")}})));default:return s.createElement(b,{flexDirection:"column",marginTop:1,flexShrink:0,width:"100%"},s.createElement(b,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},s.createElement(b,null,Fr?s.createElement(b,null,mr&&!mr&&s.createElement(md,null),s.createElement(y,{color:"magenta",bold:!0,italic:!0},mr&&!mr?" ":"",Fr.toUpperCase())):s.createElement(y,{color:"cyan",dimColor:!0,italic:!0}," ",l.length>0&&z?"Press ESC again to clear input":"READY FOR COMMAND...")),s.createElement(b,null,s.createElement(y,{color:"gray",bold:!0},"[ "),s.createElement(y,{color:"white"},Fn||qe),s.createElement(y,{color:"gray",bold:!0}," ]"))),s.createElement(b,{borderStyle:"round",borderColor:pn?"magenta":"cyan",paddingX:1,paddingY:0,width:"100%"},s.createElement(b,{flexDirection:"column",width:"100%"},s.createElement(b,{flexDirection:"row",width:"100%",paddingY:0},s.createElement(b,{flexShrink:0,width:4},s.createElement(y,{color:pn?"magenta":"cyan",bold:!0},pn?"\u2726 ":"\u{1F4A0} ")),s.createElement(b,{flexGrow:1},s.createElement(b,{flexGrow:1,position:"relative"},l===""&&s.createElement(b,{position:"absolute",paddingLeft:0},wt&&!Kt?s.createElement(y,{color:"yellow"},se?" Terminal is waiting for user input. Press TAB to interact":" Press TAB to interact with terminal..."):wt&&Kt?s.createElement(y,{color:"yellow",bold:!0}," [ TERMINAL FOCUSED ] Type to interact, press TAB to exit..."):z===1?s.createElement(y,{color:"cyan",bold:!0}," Press ESC again to ",l.length>0?"clear input":"revert codebase to checkpoint","..."):s.createElement(y,{color:"gray"},Bo?" Press ESC again to cancel the request.":pn?" Enter a prompt to steer the agent.":` Send message or /cmd ... (${et.shortcut} for newline), @file`)),s.createElement(Ni,{key:`input-${m}`,focus:!Kt,showCursor:wo,lastFocusEventTime:ro.current,value:l,columns:h.columns,onChange:x=>{let g=x.replace(/\r\n/g,`
590
590
  `).replace(/\r/g,`
591
591
  `).replace(/\\\s*\n/g,`
592
- `);c(g),D(!1)},onSubmit:Ge,maxRows:3,keyBindings:{submit:x=>x.return&&!x.shift&&!x.ctrl,newline:x=>x.return&&x.shift||x.return&&x.ctrl}})))))))}};return s.createElement(C,{flexDirection:"column",width:"100%"},_?s.createElement(sd,{width:r?.columns||80,height:r?.rows||24,selectedIndex:F}):s.createElement(s.Fragment,null,s.createElement(C,{flexDirection:"column",width:"100%",flexGrow:1},Pr.items.map((x,g)=>s.createElement(Is,{key:x.id||g,msg:x,showFullThinking:pe,columns:r?.columns||80}))),s.createElement(C,{flexDirection:"column",padding:1,width:"100%"},(Ht==="chat"||["ask","approval","terminalApproval"].includes(Ht))&&s.createElement(C,{flexDirection:"column",width:"100%"},s.createElement(Wi,{messages:Oe.slice(ur),showFullThinking:pe,columns:Math.max(20,(r?.columns||80)-1)}),Tt&&s.createElement(C,{marginTop:1},s.createElement(Wr,{command:Tt,output:Xt,isFocused:Kt,isPty:To}))),fe?s.createElement(C,{borderStyle:"double",borderColor:"magenta",padding:1,flexShrink:0},s.createElement(y,{color:"magenta"},"\u{1F30A} Starting Flux Flow...")):ve?bt():s.createElement(C,{borderStyle:"round",borderColor:"gray",padding:0,flexDirection:"column",flexShrink:0,width:"100%"},s.createElement(C,{paddingX:1,marginBottom:1},s.createElement(y,{color:"yellow",bold:!0},"\u{1F511}",Ce(2),"API KEY REQUIRED")),s.createElement(C,{paddingX:1,flexDirection:"column"},Pe===0?s.createElement(s.Fragment,null,s.createElement(y,null,"Select your Preferred Provider:"),s.createElement(C,{marginTop:1},s.createElement(io,{items:[{label:"Google (Free/Paid)",value:"Google"},{label:"DeepSeek (Paid)",value:"DeepSeek"},{label:"OpenRouter (Free/Paid) [EXPERIMENTAL]",value:"OpenRouter"}],onSelect:x=>{G(x.value),ce(1)}}))):s.createElement(s.Fragment,null,s.createElement(y,null,"Please enter your ",U," API Key to initialize the agent (If billing is enabled set Tier to paid in /settings \u2192 other \u2192 API Tier)."),s.createElement(C,{marginTop:1},s.createElement(y,{color:"cyan",bold:!0},"\u{1F4A0} "),s.createElement(Sl,{value:Xo,onChange:Ko,onSubmit:se,mask:"*"})),s.createElement(C,{marginTop:1},s.createElement(y,{color:"gray",italic:!0},"(Press ESC to go back to provider selection)")))),s.createElement(C,{paddingX:1,marginTop:1},s.createElement(y,{color:"gray",dimColor:!0,italic:!0},Pe===0?"(Use arrows to select and Enter to confirm)":"(Press Enter to confirm and initialize)"))),o&&s.createElement(C,{borderStyle:"round",borderColor:"red",paddingX:2,marginY:0,width:"100%"},s.createElement(y,{color:"red",bold:!0},"\u{1F534} EXIT CONFIRMATION: "),s.createElement(y,{color:"white"},"Press "),s.createElement(y,{color:"red",bold:!0},"CTRL + C"),s.createElement(y,{color:"white"}," again to exit (",n,"s). Press "),s.createElement(y,{color:"cyan",bold:!0},"ESC"),s.createElement(y,{color:"white"}," to cancel.")),s.createElement(C,{flexShrink:0,width:"100%"},s.createElement(Hi,{mode:f,thinkingLevel:q,tokens:he.tokens,tokensTotal:he.tokens,chatId:Re,isMemoryEnabled:_t.memory,apiTier:He,aiProvider:U})),Ht==="exit"&&(()=>{let x=Date.now()-Ai,g=et+Ut,M=g>0?(et/g*100).toFixed(1):"0.0",B=nr+Hn,O=B>0?(nr/B*100).toFixed(1):"0.0",$=B>0?(Hn/B*100).toFixed(1):"0.0";return s.createElement(C,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,borderColor:"red",width:Math.min(100,(r?.columns||100)-2),marginTop:0,marginBottom:0},s.createElement(C,{marginBottom:1},s.createElement(y,{color:"cyan",bold:!0},"Agent powering down. ",s.createElement(y,{color:"magenta"},"Goodbye!"))),s.createElement(C,{flexDirection:"column"},s.createElement(y,{color:"white",bold:!0,underline:!0},"Interaction Summary"),s.createElement(C,{marginTop:1},s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Session ID:")),s.createElement(y,{color:"white"},Re)),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Tool Calls:")),s.createElement(y,{color:"white"},et+Ut+qo," ( ",s.createElement(y,{color:"green"},"\u2713 ",et)," ",s.createElement(y,{color:"yellow"},"\u2298 ",qo)," ",s.createElement(y,{color:"red"},"\u2715 ",Ut)," )")),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Success Rate:")),s.createElement(y,{color:"white"},M,"%")),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Code Changes:")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",ms)," ",s.createElement(y,{color:"red"},"-",fs))),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Tokens Consumed:")),s.createElement(y,{color:"white"},Jt(de))),de>0&&s.createElement(s.Fragment,null,s.createElement(C,{marginLeft:2},s.createElement(C,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Jt(de-pt))),it>0&&s.createElement(C,{marginLeft:4},s.createElement(C,{width:16},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Jt(it))),pt>0&&s.createElement(C,{marginLeft:2},s.createElement(C,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Jt(pt)))),rr>0&&s.createElement(s.Fragment,null,s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Images Made:")),s.createElement(y,{color:"white"},rr)),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Image Credits:")),s.createElement(y,{color:"white"},Number(((sr||0)*1e3).toFixed(0))," credits")))),s.createElement(C,{flexDirection:"column",marginTop:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"Performance"),s.createElement(C,{marginTop:1},s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Wall Time:")),s.createElement(y,{color:"white"},zo(x))),s.createElement(C,null,s.createElement(C,{width:20},s.createElement(y,{color:"blue"},"Agent Active:")),s.createElement(y,{color:"white"},zo(B))),s.createElement(C,{marginLeft:2},s.createElement(C,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB API Time:")),s.createElement(y,{color:"white"},zo(nr)," (",O,"%)")),s.createElement(C,{marginLeft:2},s.createElement(C,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Tool Time:")),s.createElement(y,{color:"white"},zo(Hn)," (",$,"%)"))))})(),Ee.length>0&&(()=>{let g=Math.max(0,Math.min(w-2,Ee.length-5)),M=Ee.slice(g,g+5),B=Ee.length-(g+M.length);return s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:0,paddingY:0,width:"100%"},s.createElement(C,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},s.createElement(y,{color:"gray",bold:!0,dimColor:!0},Ee[0]?.cmd?.startsWith("@")?"\u{1F4C1} FILE SUGGESTIONS":"\u{1F50D} COMMAND SUGGESTIONS"),Ee[0]?.cmd?.startsWith("@")?s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"(Use '#Lstart-Lend' to specify line numbers)"):l.startsWith("/model")&&He==="Free"?(()=>{let O="https://aistudio.google.com/billing",$="billing";return U==="DeepSeek"?(O="https://platform.deepseek.com/usage",$="billing"):U==="OpenRouter"&&(O="https://openrouter.ai/settings/profile",$="profile"),s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"Paid API has more models. Configure ",s.createElement(y,{color:"cyan",underline:!0},`\x1B]8;;${O}\x07${$}\x1B]8;;\x07`)," & /settings")})():null),M.map((O,$)=>{let S=g+$===w,L=O.cmd==="gemma-4-31b-it"&&He!=="Free";return s.createElement(C,{key:O.cmd,flexDirection:"row",backgroundColor:S?"#2a2a2a":void 0,paddingX:1},s.createElement(C,{width:3},s.createElement(y,{color:S?"cyan":"gray",bold:S},S?" \u276F":" ")),s.createElement(C,{width:55},s.createElement(y,{color:L?"gray":S?"yellow":"white",bold:S,dimColor:L&&!S},O.cmd?.startsWith("@[")&&O.cmd?.endsWith("]")?(()=>{let j=O.cmd.slice(2,-1).split(/[/\\]/);return j[j.length-1]})():O.cmd)),s.createElement(C,{flexGrow:1},s.createElement(y,{color:"gray",italic:!0,dimColor:!S},O.desc)))}),Ee.length>5&&s.createElement(C,{paddingX:1,height:1},B>0?s.createElement(y,{color:"gray",dimColor:!0,italic:!0}," ... (",B," more commands available)"):s.createElement(y,{color:"gray",dimColor:!0,italic:!0}," (End of list)")))})())))}var ps,Cl,sd,Ai,El,ms,fs,id,kl,Mn,ad,bl,ld,cd,or,dd,ud,Ol=ie(async()=>{Fi();Yi();ji();Gi();await zi();Ji();Zi();Sr();await al();ui();Er();ll();cl();await pl();sn();hl();ns();ks();Qt();to();hn();await xr();wl();$n();xi();ps=()=>{let e=(process.env.TERM_PROGRAM||"").toLowerCase();if(process.env.WT_SESSION)return"Windows Terminal";let o=t=>{let n=t.toLowerCase();for(let[i,r]of Object.entries(process.env))if(!["PATH","PWD","CWD","PS1","LS_COLORS","PROMPT"].includes(i)&&String(r).toLowerCase().includes(n))return!0;return!1};return e==="cursor"||process.env.CURSOR_SETTINGS_DIR||o("cursor")?"Cursor":e==="windsurf"||o("windsurf")?"Windsurf":o("antigravity")?"Antigravity":e==="trae"||o("trae")?"Trae":e==="codium"||o("codium")||o("vscode-oss")?"VSCodium":o("positron")?"Positron":e==="vscode"||process.env.VSCODE_GIT_IPC_HANDLE||o("vscode")?"VS Code":process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS||o("intellij")?"JetBrains":"Terminal"},Cl=e=>{let o=e==="VS Code",t=[];return o?(t.push({label:"Install Manually (VSIX)",url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),t.push({label:"Install from VS Code Marketplace",url:"https://marketplace.visualstudio.com/items?itemName=fluxflow-cli.fluxflow-cli-companion"})):t.push({label:`Download for ${e} (GitHub)`,url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),t.push({label:"Continue to CLI only",action:"dismiss"}),t},sd=({width:e,height:o,selectedIndex:t})=>{let n=ps(),i=Cl(n);return s.createElement(C,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:e,height:o},s.createElement(C,{marginBottom:1},s.createElement(y,null,or)),s.createElement(C,{flexDirection:"column",borderStyle:"double",borderColor:"cyan",paddingX:3,paddingY:1,width:Math.min(80,e-4)},s.createElement(y,{bold:!0,color:"cyan",textAlign:"center"},"\u{1F680} UPGRADE YOUR WORKFLOW"),s.createElement(C,{marginY:1,flexDirection:"column",alignItems:"left"},s.createElement(y,null,"You're in ",s.createElement(y,{bold:!0,color:"cyan"},n),", but the ",s.createElement(y,{bold:!0,color:"magenta"},"FluxFlow-CLI Companion")," is not installed."),s.createElement(C,{flexDirection:"column",marginY:1},s.createElement(y,{color:"gray"}," \u2705 Real-time file & cursor tracking"),s.createElement(y,{color:"gray"}," \u2705 Auto-open files created by agent"),s.createElement(y,{color:"gray"}," \u2705 Native DIFF viewer for AI edits"),s.createElement(y,{color:"gray"}," \u2705 Direct IDE context sharing"),s.createElement(y,{color:"gray"}," \u2705 Surgical Diagnostic Sync"),s.createElement(y,{color:"gray"}," \u2705 Native Right-Click \u276F Chat integration"),s.createElement(y,{color:"gray"}," \u2705 Live Status in IDE"),s.createElement(y,{color:"gray"}," \u2705 Clickable terminal-to-code links"))),s.createElement(C,{flexDirection:"column",marginTop:1},i.map((r,l)=>s.createElement(C,{key:l},s.createElement(y,{color:t===l?"yellow":"white",bold:t===l},t===l?" \u276F ":" ",r.label)))),s.createElement(C,{marginTop:1,alignItems:"center",justifyContent:"center"},s.createElement(y,{dimColor:!0,italic:!0},"(Use arrows to navigate, Enter to select)"))))},Ai=Date.now(),El="https://fluxflow-cli.onrender.com/changelog.html",ms=0,fs=0,id=Wn.join(Wn.dirname(nd(import.meta.url)),"../package.json"),kl=JSON.parse(oo.readFileSync(id,"utf8")),Mn=kl.version,ad=kl.date||"2026-05-20",bl=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],ld=()=>{let[e,o]=V(0);return lo(()=>{let t=setInterval(()=>{o(n=>(n+1)%1e3)},33);return()=>clearInterval(t)},[]),s.createElement(y,{color:"magenta"},bl[Math.floor(e/3)%bl.length])},cd=({data:e,onResolve:o,onEdit:t})=>s.createElement(C,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},s.createElement(C,{paddingX:1},s.createElement(y,{color:"magenta",bold:!0,underline:!0},"\u{1F7E3} STEERING HINT RESOLUTION")),s.createElement(C,{paddingX:1,marginTop:1},s.createElement(y,null,"The agent already finished the task before your hint was consumed.")),s.createElement(C,{marginTop:1,backgroundColor:"#222",paddingX:2,width:"100%"},s.createElement(y,{italic:!0,color:"gray"},'"',e,'"')),s.createElement(C,{paddingX:1,marginTop:1},s.createElement(y,{color:"cyan"},"How would you like to proceed?")),s.createElement(C,{marginTop:0},s.createElement(io,{title:"Select Action",items:[{label:"Send Anyway",value:"send"},{label:"Edit Prompt",value:"edit"}],onSelect:n=>{n==="send"?o(e):t(e)}}))),or=rd(["#00ffff","#0077ff","#ff00ff"]).multiline(`\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557
592
+ `);c(g),D(!1)},onSubmit:pt,maxRows:3,keyBindings:{submit:x=>x.return&&!x.shift&&!x.ctrl,newline:x=>x.return&&x.shift||x.return&&x.ctrl}})))))))}};return s.createElement(b,{flexDirection:"column",width:"100%"},U?s.createElement(cd,{width:r?.columns||80,height:r?.rows||24,selectedIndex:F}):s.createElement(s.Fragment,null,s.createElement(b,{flexDirection:"column",width:"100%",flexGrow:1},Nr.items.map((x,g)=>s.createElement(As,{key:x.id||g,msg:x,showFullThinking:pe,columns:r?.columns||80}))),s.createElement(b,{flexDirection:"column",padding:1,width:"100%"},(Ht==="chat"||["ask","approval","terminalApproval"].includes(Ht))&&s.createElement(b,{flexDirection:"column",width:"100%"},s.createElement(Gi,{messages:Lt.slice(Ss),showFullThinking:pe,columns:Math.max(20,(r?.columns||80)-1)}),wt&&s.createElement(b,{marginTop:1},s.createElement(jr,{command:wt,output:Xt,isFocused:Kt,isPty:Eo}))),me?s.createElement(b,{borderStyle:"double",borderColor:"magenta",padding:1,flexShrink:0},s.createElement(y,{color:"magenta"},"\u{1F30A} Starting Flux Flow...")):Oe?fo():s.createElement(b,{borderStyle:"round",borderColor:"gray",padding:0,flexDirection:"column",flexShrink:0,width:"100%"},s.createElement(b,{paddingX:1,marginBottom:1},s.createElement(y,{color:"yellow",bold:!0},"\u{1F511}",Ce(2),"API KEY REQUIRED")),s.createElement(b,{paddingX:1,flexDirection:"column"},$e===0?s.createElement(s.Fragment,null,s.createElement(y,null,"Select your Preferred Provider:"),s.createElement(b,{marginTop:1},s.createElement(ao,{items:[{label:"Google (Free/Paid)",value:"Google"},{label:"DeepSeek (Paid)",value:"DeepSeek"},{label:"OpenRouter (Free/Paid) [EXPERIMENTAL]",value:"OpenRouter"}],onSelect:x=>{X(x.value),le(1)}}))):s.createElement(s.Fragment,null,s.createElement(y,null,"Please enter your ",W," API Key to initialize the agent (If billing is enabled set Tier to paid in /settings \u2192 other \u2192 API Tier)."),s.createElement(b,{marginTop:1},s.createElement(y,{color:"cyan",bold:!0},"\u{1F4A0} "),s.createElement(kl,{value:Vo,onChange:zo,onSubmit:ve,mask:"*"})),s.createElement(b,{marginTop:1},s.createElement(y,{color:"gray",italic:!0},"(Press ESC to go back to provider selection)")))),s.createElement(b,{paddingX:1,marginTop:1},s.createElement(y,{color:"gray",dimColor:!0,italic:!0},$e===0?"(Use arrows to select and Enter to confirm)":"(Press Enter to confirm and initialize)"))),o&&s.createElement(b,{borderStyle:"round",borderColor:"red",paddingX:2,marginY:0,width:"100%"},s.createElement(y,{color:"red",bold:!0},"\u{1F534} EXIT CONFIRMATION: "),s.createElement(y,{color:"white"},"Press "),s.createElement(y,{color:"red",bold:!0},"CTRL + C"),s.createElement(y,{color:"white"}," again to exit (",n,"s). Press "),s.createElement(y,{color:"cyan",bold:!0},"ESC"),s.createElement(y,{color:"white"}," to cancel.")),s.createElement(b,{flexShrink:0,width:"100%"},s.createElement(Ki,{mode:f,thinkingLevel:q,tokens:he.tokens,tokensTotal:he.tokens,chatId:Re,isMemoryEnabled:_t.memory,apiTier:Ye,aiProvider:W})),Ht==="exit"&&(()=>{let x=Date.now()-Pi,g=Qe+Ut,A=g>0?(Qe/g*100).toFixed(1):"0.0",B=dr+Kn,O=B>0?(dr/B*100).toFixed(1):"0.0",$=B>0?(Kn/B*100).toFixed(1):"0.0";return s.createElement(b,{flexDirection:"column",borderStyle:"round",paddingX:3,paddingY:1,borderColor:"red",width:Math.min(100,(r?.columns||100)-2),marginTop:0,marginBottom:0},s.createElement(b,{marginBottom:1},s.createElement(y,{color:"cyan",bold:!0},"Agent powering down. ",s.createElement(y,{color:"magenta"},"Goodbye!"))),s.createElement(b,{flexDirection:"column"},s.createElement(y,{color:"white",bold:!0,underline:!0},"Interaction Summary"),s.createElement(b,{marginTop:1},s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Session ID:")),s.createElement(y,{color:"white"},Re)),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Tool Calls:")),s.createElement(y,{color:"white"},Qe+Ut+Jo," ( ",s.createElement(y,{color:"green"},"\u2713 ",Qe)," ",s.createElement(y,{color:"yellow"},"\u2298 ",Jo)," ",s.createElement(y,{color:"red"},"\u2715 ",Ut)," )")),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Success Rate:")),s.createElement(y,{color:"white"},A,"%")),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Code Changes:")),s.createElement(y,{color:"white"},s.createElement(y,{color:"green"},"+",hs)," ",s.createElement(y,{color:"red"},"-",gs))),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Tokens Consumed:")),s.createElement(y,{color:"white"},Qt(ce))),ce>0&&s.createElement(s.Fragment,null,s.createElement(b,{marginLeft:2},s.createElement(b,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Input Tokens:")),s.createElement(y,{color:"white"},Qt(ce-ft))),it>0&&s.createElement(b,{marginLeft:4},s.createElement(b,{width:16},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Cached:")),s.createElement(y,{color:"white"},Qt(it))),ft>0&&s.createElement(b,{marginLeft:2},s.createElement(b,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Output Tokens:")),s.createElement(y,{color:"white"},Qt(ft)))),ur>0&&s.createElement(s.Fragment,null,s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Images Made:")),s.createElement(y,{color:"white"},ur)),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Image Credits:")),s.createElement(y,{color:"white"},Number(((vn||0)*1e3).toFixed(0))," credits")))),s.createElement(b,{flexDirection:"column",marginTop:1},s.createElement(y,{color:"white",bold:!0,underline:!0},"Performance"),s.createElement(b,{marginTop:1},s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Wall Time:")),s.createElement(y,{color:"white"},Fo(x))),s.createElement(b,null,s.createElement(b,{width:20},s.createElement(y,{color:"blue"},"Agent Active:")),s.createElement(y,{color:"white"},Fo(B))),s.createElement(b,{marginLeft:2},s.createElement(b,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB API Time:")),s.createElement(y,{color:"white"},Fo(dr)," (",O,"%)")),s.createElement(b,{marginLeft:2},s.createElement(b,{width:18},s.createElement(y,{color:"blue",dimColor:!0},"\xBB Tool Time:")),s.createElement(y,{color:"white"},Fo(Kn)," (",$,"%)"))))})(),be.length>0&&(()=>{let g=Math.max(0,Math.min(w-2,be.length-5)),A=be.slice(g,g+5),B=be.length-(g+A.length);return s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:0,paddingY:0,width:"100%"},s.createElement(b,{paddingX:1,marginBottom:0,justifyContent:"space-between",width:"100%"},s.createElement(y,{color:"gray",bold:!0,dimColor:!0},be[0]?.cmd?.startsWith("@")?"\u{1F4C1} FILE SUGGESTIONS":"\u{1F50D} COMMAND SUGGESTIONS"),be[0]?.cmd?.startsWith("@")?s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"(Use '#Lstart-Lend' to specify line numbers)"):l.startsWith("/model")&&Ye==="Free"?(()=>{let O="https://aistudio.google.com/billing",$="billing";return W==="DeepSeek"?(O="https://platform.deepseek.com/usage",$="billing"):W==="OpenRouter"&&(O="https://openrouter.ai/settings/profile",$="profile"),s.createElement(y,{color:"gray",dimColor:!0,italic:!0},"Paid API has more models. Configure ",s.createElement(y,{color:"cyan",underline:!0},`\x1B]8;;${O}\x07${$}\x1B]8;;\x07`)," & /settings")})():null),A.map((O,$)=>{let C=g+$===w,M=O.cmd==="gemma-4-31b-it"&&Ye!=="Free";return s.createElement(b,{key:O.cmd,flexDirection:"row",backgroundColor:C?"#2a2a2a":void 0,paddingX:1},s.createElement(b,{width:3},s.createElement(y,{color:C?"cyan":"gray",bold:C},C?" \u276F":" ")),s.createElement(b,{width:55},s.createElement(y,{color:M?"gray":C?"yellow":"white",bold:C,dimColor:M&&!C},O.cmd?.startsWith("@[")&&O.cmd?.endsWith("]")?(()=>{let H=O.cmd.slice(2,-1).split(/[/\\]/);return H[H.length-1]})():O.cmd)),s.createElement(b,{flexGrow:1},s.createElement(y,{color:"gray",italic:!0,dimColor:!C},O.desc)))}),be.length>5&&s.createElement(b,{paddingX:1,height:1},B>0?s.createElement(y,{color:"gray",dimColor:!0,italic:!0}," ... (",B," more commands available)"):s.createElement(y,{color:"gray",dimColor:!0,italic:!0}," (End of list)")))})())))}var xs,Al,cd,Pi,Il,hs,gs,dd,Ol,Dn,ud,Ml,md,fd,cr,pd,hd,vl=re(async()=>{Ui();Xi();qi();Vi();await ea();ta();na();Sr();await ul();fi();Er();ml();fl();await yl();an();wl();is();Ms();Zt();oo();wn();await xr();bl();_n();Si();xs=()=>{let e=(process.env.TERM_PROGRAM||"").toLowerCase();if(process.env.WT_SESSION)return"Windows Terminal";let o=t=>{let n=t.toLowerCase();for(let[i,r]of Object.entries(process.env))if(!["PATH","PWD","CWD","PS1","LS_COLORS","PROMPT"].includes(i)&&String(r).toLowerCase().includes(n))return!0;return!1};return e==="cursor"||process.env.CURSOR_SETTINGS_DIR||o("cursor")?"Cursor":e==="windsurf"||o("windsurf")?"Windsurf":o("antigravity")?"Antigravity":e==="trae"||o("trae")?"Trae":e==="codium"||o("codium")||o("vscode-oss")?"VSCodium":o("positron")?"Positron":e==="vscode"||process.env.VSCODE_GIT_IPC_HANDLE||o("vscode")?"VS Code":process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS||o("intellij")?"JetBrains":"Terminal"},Al=e=>{let o=e==="VS Code",t=[];return o?(t.push({label:"Install Manually (VSIX)",url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),t.push({label:"Install from VS Code Marketplace",url:"https://marketplace.visualstudio.com/items?itemName=fluxflow-cli.fluxflow-cli-companion"})):t.push({label:`Download for ${e} (GitHub)`,url:"https://github.com/KushalRoyChowdhury/fluxflow-cli/releases"}),t.push({label:"Continue to CLI only",action:"dismiss"}),t},cd=({width:e,height:o,selectedIndex:t})=>{let n=xs(),i=Al(n);return s.createElement(b,{flexDirection:"column",alignItems:"center",justifyContent:"center",width:e,height:o},s.createElement(b,{marginBottom:1},s.createElement(y,null,cr)),s.createElement(b,{flexDirection:"column",borderStyle:"double",borderColor:"cyan",paddingX:3,paddingY:1,width:Math.min(80,e-4)},s.createElement(y,{bold:!0,color:"cyan",textAlign:"center"},"\u{1F680} UPGRADE YOUR WORKFLOW"),s.createElement(b,{marginY:1,flexDirection:"column",alignItems:"left"},s.createElement(y,null,"You're in ",s.createElement(y,{bold:!0,color:"cyan"},n),", but the ",s.createElement(y,{bold:!0,color:"magenta"},"FluxFlow-CLI Companion")," is not installed."),s.createElement(b,{flexDirection:"column",marginY:1},s.createElement(y,{color:"gray"}," \u2705 Real-time file & cursor tracking"),s.createElement(y,{color:"gray"}," \u2705 Auto-open files created by agent"),s.createElement(y,{color:"gray"}," \u2705 Native DIFF viewer for AI edits"),s.createElement(y,{color:"gray"}," \u2705 Direct IDE context sharing"),s.createElement(y,{color:"gray"}," \u2705 Surgical Diagnostic Sync"),s.createElement(y,{color:"gray"}," \u2705 Native Right-Click \u276F Chat integration"),s.createElement(y,{color:"gray"}," \u2705 Live Status in IDE"),s.createElement(y,{color:"gray"}," \u2705 Clickable terminal-to-code links"))),s.createElement(b,{flexDirection:"column",marginTop:1},i.map((r,l)=>s.createElement(b,{key:l},s.createElement(y,{color:t===l?"yellow":"white",bold:t===l},t===l?" \u276F ":" ",r.label)))),s.createElement(b,{marginTop:1,alignItems:"center",justifyContent:"center"},s.createElement(y,{dimColor:!0,italic:!0},"(Use arrows to navigate, Enter to select)"))))},Pi=Date.now(),Il="https://fluxflow-cli.onrender.com/changelog.html",hs=0,gs=0,dd=Gn.join(Gn.dirname(ad(import.meta.url)),"../package.json"),Ol=JSON.parse(no.readFileSync(dd,"utf8")),Dn=Ol.version,ud=Ol.date||"2026-05-20",Ml=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],md=()=>{let[e,o]=V(0);return co(()=>{let t=setInterval(()=>{o(n=>(n+1)%1e3)},33);return()=>clearInterval(t)},[]),s.createElement(y,{color:"magenta"},Ml[Math.floor(e/3)%Ml.length])},fd=({data:e,onResolve:o,onEdit:t})=>s.createElement(b,{flexDirection:"column",borderStyle:"round",borderColor:"gray",padding:0,width:"100%"},s.createElement(b,{paddingX:1},s.createElement(y,{color:"magenta",bold:!0,underline:!0},"\u{1F7E3} STEERING HINT RESOLUTION")),s.createElement(b,{paddingX:1,marginTop:1},s.createElement(y,null,"The agent already finished the task before your hint was consumed.")),s.createElement(b,{marginTop:1,backgroundColor:"#222",paddingX:2,width:"100%"},s.createElement(y,{italic:!0,color:"gray"},'"',e,'"')),s.createElement(b,{paddingX:1,marginTop:1},s.createElement(y,{color:"cyan"},"How would you like to proceed?")),s.createElement(b,{marginTop:0},s.createElement(ao,{title:"Select Action",items:[{label:"Send Anyway",value:"send"},{label:"Edit Prompt",value:"edit"}],onSelect:n=>{n==="send"?o(e):t(e)}}))),cr=ld(["#00ffff","#0077ff","#ff00ff"]).multiline(`\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557
593
593
  \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551
594
594
  \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551
595
595
  \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551
596
596
  \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2554\u255D \u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255D
597
- \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D`),dd=e=>{let o=[],t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n=0,i;for(;(i=t.exec(e))!==null;){let r=i[1],l=i.index+i[0].length-1,c=0,m=null,d=-1,u=-1;for(let a=l;a<e.length;a++){let f=e[a];if(m){if(f===m){let p=0;for(let h=a-1;h>=0&&e[h]==="\\";h--)p++;p%2===0&&(m=null)}}else if(f==='"'||f==="'"||f==="`")m=f;else if(f==="(")c++;else if(f===")"&&(c--,c===0)){u=a;let p=a+1;for(;p<e.length&&/\s/.test(e[p]);)p++;if(p<e.length&&e[p]==="]"){d=p;break}}}if(d!==-1){let a=e.substring(n,i.index);a.trim()&&o.push({type:"output",content:a});let f=e.substring(l+1,u);o.push({type:"tool",toolName:r.trim(),args:f.trim()}),n=d+1,t.lastIndex=n}else break}if(n<e.length){let r=e.substring(n);r.trim()&&o.push({type:"output",content:r})}return o},ud=(()=>{let e=null,o=0;return t=>{let n=Date.now();if(e&&n-o<5e3)return e;let i=[],r=l=>{try{let c=oo.readdirSync(l);for(let m of c){if(["node_modules",".git",".gemini","dist","build",".next",".cache","out"].includes(m))continue;let d=Wn.join(l,m);oo.statSync(d).isDirectory()?r(d):i.push({name:m,relativePath:Wn.relative(process.cwd(),d)})}}catch{}};return r(t),e=i,o=n,i}})()});import{spawn as md}from"child_process";import{fileURLToPath as Al}from"url";var fd=4096,pd=Al(import.meta.url).endsWith(".js");if(pd&&!process.execArgv.some(e=>e.includes("max-old-space-size")))md(process.execPath,[`--max-old-space-size=${fd}`,Al(import.meta.url),...process.argv.slice(2)],{stdio:"inherit"}).on("exit",o=>process.exit(o||0));else{let{default:e}=await import("react"),{render:o}=await import("ink"),{default:t}=await Ol().then(()=>Ml);process.env.NODE_NO_WARNINGS="1";let n=["cuimp","Found existing binary","Binary verified","curl.exe not found","Falling back to .bat file","DeprecationWarning"],i=console.log,r=console.warn,l=console.error,c=m=>{let d=m.map(String).join(" ");return n.some(u=>d.includes(u))};console.log=(...m)=>!c(m)&&i(...m),console.warn=(...m)=>!c(m)&&r(...m),console.error=(...m)=>!c(m)&&l(...m),process.stdout.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),o(e.createElement(t,{args:process.argv.slice(2)}),{exitOnCtrlC:!1})}
597
+ \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D`),pd=e=>{let o=[],t=/\[\s*tool:functions\.([a-z0-9_]+)\s*\(/gi,n=0,i;for(;(i=t.exec(e))!==null;){let r=i[1],l=i.index+i[0].length-1,c=0,m=null,d=-1,u=-1;for(let a=l;a<e.length;a++){let f=e[a];if(m){if(f===m){let p=0;for(let h=a-1;h>=0&&e[h]==="\\";h--)p++;p%2===0&&(m=null)}}else if(f==='"'||f==="'"||f==="`")m=f;else if(f==="(")c++;else if(f===")"&&(c--,c===0)){u=a;let p=a+1;for(;p<e.length&&/\s/.test(e[p]);)p++;if(p<e.length&&e[p]==="]"){d=p;break}}}if(d!==-1){let a=e.substring(n,i.index);a.trim()&&o.push({type:"output",content:a});let f=e.substring(l+1,u);o.push({type:"tool",toolName:r.trim(),args:f.trim()}),n=d+1,t.lastIndex=n}else break}if(n<e.length){let r=e.substring(n);r.trim()&&o.push({type:"output",content:r})}return o},hd=(()=>{let e=null,o=0;return t=>{let n=Date.now();if(e&&n-o<5e3)return e;let i=[],r=l=>{try{let c=no.readdirSync(l);for(let m of c){if(["node_modules",".git",".gemini","dist","build",".next",".cache","out"].includes(m))continue;let d=Gn.join(l,m);no.statSync(d).isDirectory()?r(d):i.push({name:m,relativePath:Gn.relative(process.cwd(),d)})}}catch{}};return r(t),e=i,o=n,i}})()});import{spawn as gd}from"child_process";import{fileURLToPath as $l}from"url";var xd=4096,yd=$l(import.meta.url).endsWith(".js");if(yd&&!process.execArgv.some(e=>e.includes("max-old-space-size")))gd(process.execPath,[`--max-old-space-size=${xd}`,$l(import.meta.url),...process.argv.slice(2)],{stdio:"inherit"}).on("exit",o=>process.exit(o||0));else{let{default:e}=await import("react"),{render:o}=await import("ink"),{default:t}=await vl().then(()=>Dl);process.env.NODE_NO_WARNINGS="1";let n=["cuimp","Found existing binary","Binary verified","curl.exe not found","Falling back to .bat file","DeprecationWarning"],i=console.log,r=console.warn,l=console.error,c=m=>{let d=m.map(String).join(" ");return n.some(u=>d.includes(u))};console.log=(...m)=>!c(m)&&i(...m),console.warn=(...m)=>!c(m)&&r(...m),console.error=(...m)=>!c(m)&&l(...m),process.stdout.write("\x1B[2J\x1B[3J\x1B[H"),process.stdout.isTTY&&(process.stdout.write("\x1B]0;FluxFlow\x07"),process.stdout.write("\x1B]633;P;TerminalTitle=FluxFlow\x07")),o(e.createElement(t,{args:process.argv.slice(2)}),{exitOnCtrlC:!1})}