fluxflow-cli 4.15.1 → 4.16.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.
- package/README.md +1 -1
- package/dist/chunks/{ai-L5HV7ECM.js → ai-AS3SDWCL.js} +1 -1
- package/dist/chunks/app-QWV5B5EW.js +279 -0
- package/dist/chunks/chunk-72RYQ5W7.js +1 -0
- package/dist/chunks/{chunk-WLKCYZXG.js → chunk-AAPXJU65.js} +1 -1
- package/dist/chunks/{chunk-QFQDJ2UU.js → chunk-EP3WAFTJ.js} +1 -1
- package/dist/chunks/chunk-FZHHMJZI.js +918 -0
- package/dist/chunks/chunk-M3KCPUDW.js +51 -0
- package/dist/chunks/{chunk-GIHKBLZL.js → chunk-TCBC5P3S.js} +3 -9
- package/dist/chunks/{chunk-HK42GQOK.js → chunk-WKHYRBBK.js} +1 -1
- package/dist/chunks/{chunk-MGOYH2GI.js → chunk-ZWNKNXAI.js} +1 -1
- package/dist/chunks/{click-TZZXO2WS.js → click-G6RRSFVC.js} +2 -2
- package/dist/chunks/{computer_action-HLDFQW2N.js → computer_action-WTHH7RBB.js} +1 -1
- package/dist/chunks/{drag-X4EOVHGY.js → drag-ZGH2MMP7.js} +1 -1
- package/dist/chunks/{generate_image-X6KFW2B7.js → generate_image-XYDE47LK.js} +1 -1
- package/dist/chunks/{invoke-KIRXYFL2.js → invoke-4TSUCBPH.js} +2 -2
- package/dist/chunks/{invokeSync-HGDGBU7Z.js → invokeSync-COCWPF45.js} +2 -2
- package/dist/chunks/{key_press-2OYFGVDO.js → key_press-M5QNCIPH.js} +1 -1
- package/dist/chunks/{keyboard_typing-F7LZPK2R.js → keyboard_typing-CK3KVAWM.js} +1 -1
- package/dist/chunks/{screen_grid-WCLGUDIT.js → screen_grid-TDQC6CV5.js} +1 -1
- package/dist/chunks/{scroll-FJCGC26Y.js → scroll-GHXES2II.js} +1 -1
- package/dist/chunks/{secrets-CN3TKRTO.js → secrets-XNJW2U6Y.js} +1 -1
- package/dist/chunks/{settings-52EZL64F.js → settings-2IFZMDUD.js} +1 -1
- package/dist/chunks/{update_file-AEHGEWP5.js → update_file-UFCBJOW5.js} +1 -1
- package/dist/chunks/usageServer-JKD3OZQ7.js +1 -0
- package/dist/chunks/{write_file-L6RVJOKF.js → write_file-LOYRYIK6.js} +1 -1
- package/dist/cli.js +2 -2
- package/dist/package.json +2 -2
- package/package.json +2 -2
- package/dist/chunks/ai-X2SIZCKG.js +0 -1
- package/dist/chunks/app-7M5HF2UF.js +0 -270
- package/dist/chunks/app-ST2NIW2L.js +0 -270
- package/dist/chunks/chunk-2PMRX4CK.js +0 -49
- package/dist/chunks/chunk-2T5DRAKV.js +0 -1
- package/dist/chunks/chunk-AZRAOY7N.js +0 -919
- package/dist/chunks/chunk-GUI2BKST.js +0 -919
- package/dist/chunks/invoke-WRWGZ2UN.js +0 -6
- package/dist/chunks/invokeSync-LNL4RUVU.js +0 -3
- package/dist/chunks/usageServer-XH7QZPOB.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as B}from"./chunk-
|
|
2
|
-
`)){let e=r.split(" ");if(e.length<12||parseInt(e[0])!==5)continue;let o=e[2],f=e[3],a=e[4],h=parseInt(e[6]),x=parseInt(e[7]),b=parseInt(e[8]),u=parseInt(e[9]),l=parseFloat(e[10]),g=e.slice(11).join(" ").trim();if(!g||l<0)continue;let m={x0:h,y0:x,x1:h+b,y1:x+u},w={text:g,confidence:l,bbox:m};n.push(w);let p=`${o}_${f}_${a}`;s.has(p)||s.set(p,{words:[],bbox:{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}});let d=s.get(p);d.words.push(w),d.bbox.x0=Math.min(d.bbox.x0,m.x0),d.bbox.y0=Math.min(d.bbox.y0,m.y0),d.bbox.x1=Math.max(d.bbox.x1,m.x1),d.bbox.y1=Math.max(d.bbox.y1,m.y1)}let i=[];for(let r of s.values())r.words.length>0&&i.push({text:r.words.map(e=>e.text).join(" "),bbox:r.bbox,words:r.words});return{words:n,lines:i}}function tt(t){if(!(t.words&&t.words.length>0)){if(t.blocks&&t.blocks.length>0){t.words=[],t.lines=[];for(let n of t.blocks)for(let s of n.paragraphs||[])for(let i of s.lines||[]){i.bbox&&t.lines.push(i);for(let r of i.words||[])r.bbox&&t.words.push(r)}if(t.words.length>0)return}if(t.tsv){let n=Y(t.tsv);t.words=n.words,t.lines=n.lines}}}function G(t,n,s=0,i=0,r=1){tt(t);let e=o=>({x0:Math.round(o.x0/r)+s,y0:Math.round(o.y0/r)+i,x1:Math.round(o.x1/r)+s,y1:Math.round(o.y1/r)+i}),c=[];if(t.lines&&t.lines.length>0)for(let o of t.lines){let f=o.text?o.text.toLowerCase().trim():"";if(!f||!o.bbox||!(f===n||new RegExp(`\\b${Q(n)}\\b`,"i").test(f)))continue;let h=o.words||(t.words?t.words.filter(l=>l.bbox&&l.bbox.x0>=o.bbox.x0-5&&l.bbox.x1<=o.bbox.x1+5&&l.bbox.y0>=o.bbox.y0-5&&l.bbox.y1<=o.bbox.y1+5):[]),x=n.split(/\s+/),b=x.map(l=>l.replace(/[^a-z0-9]/g,"")).join(" "),u=!1;if(h.length>0)for(let l=0;l<=h.length-x.length;l++){let g=h.slice(l,l+x.length),m=g.map(w=>(w.text||"").toLowerCase().trim().replace(/[^a-z0-9]/g,"")).join(" ");if(m===b||m.includes(b)){let w={x0:Math.min(...g.map(p=>p.bbox.x0)),y0:Math.min(...g.map(p=>p.bbox.y0)),x1:Math.max(...g.map(p=>p.bbox.x1)),y1:Math.max(...g.map(p=>p.bbox.y1))};c.push(e(w)),u=!0}}u||c.push(e(o.bbox))}if(c.length===0&&t.words&&t.words.length>0)for(let o of t.words){let f=o.text?o.text.toLowerCase().trim().replace(/[^a-z0-9]/g,""):"",a=n.replace(/[^a-z0-9]/g,"");f===a&&o.bbox&&c.push(e(o.bbox))}if(c.length===0&&t.words&&t.words.length>0){let o=X(n.length);for(let f of t.words){let a=f.text?f.text.toLowerCase().trim():"";a.length>=3&&Math.abs(a.length-n.length)<=o&&Z(a,n,o)<=o&&f.bbox&&c.push(e(f.bbox))}}return c}function L(t,n){let s=null,i=1/0;for(let r of t){let e=Math.round((r.x0+r.x1)/2),c=Math.round((r.y0+r.y1)/2),o=n.x>=r.x0&&n.x<=r.x1&&n.y>=r.y0&&n.y<=r.y1,f=Math.hypot(e-n.x,c-n.y),a=o?0:f;a<i&&(i=a,s={x:e,y:c,dist:f,containsPoint:o,bbox:r})}return s}function et(t,n,s,i){let c=Math.ceil(t/4),o=Math.ceil(n/2),f=[];for(let a=0;a<2;a++)for(let h=0;h<4;h++){let x=h*c,b=a*o,u=Math.min(c,t-x),l=Math.min(o,n-b),g=x+u/2,m=b+l/2,w=s>=x&&s<x+u&&i>=b&&i<b+l;f.push({x0:x,y0:b,w:u,h:l,cx:g,cy:m,containsTarget:w})}return f.sort((a,h)=>{if(a.containsTarget)return-1;if(h.containsTarget)return 1;let x=Math.hypot(a.cx-s,a.cy-i),b=Math.hypot(h.cx-s,h.cy-i);return x-b})}var W=null;async function nt(){return W||(W=(async()=>{let{createWorker:t}=await import("tesseract.js"),n=await import("fs-extra"),{CU_CACHE_DIR:s}=await import("./paths-PM7MFWJK.js");return n.ensureDirSync(s),t("eng",1,{cachePath:s,logger:()=>{}})})().catch(t=>{throw W=null,t})),W}var S=null,V=null;async function ot(){let{getActiveDisplay:t}=await import("./screen_grid-
|
|
1
|
+
import{a as B}from"./chunk-ZWNKNXAI.js";import{d as H}from"./chunk-EP3WAFTJ.js";import{a as j}from"./chunk-Y5JU726N.js";import J from"screenshot-desktop";import v from"sharp";import N from"fs-extra";import q from"path";import"@nut-tree-fork/nut-js";async function A(t,n,s){if(!(!process.env.SHOW_DEBUG_GRID&&!process.env.DEBUG_OCR))try{let i=q.resolve(process.cwd(),"screenshots",t);await N.ensureDir(i),await N.writeFile(q.join(i,n),s)}catch{}}function Q(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Z(t,n,s=1/0){if(t===n)return 0;if(t.length===0)return n.length;if(n.length===0)return t.length;if(Math.abs(t.length-n.length)>s)return s+1;let i=Array.from({length:n.length+1},(r,e)=>e);for(let r=1;r<=t.length;r++){let e=[r],c=r;for(let o=1;o<=n.length;o++){let f=t[r-1]===n[o-1]?0:1,a=Math.min(e[o-1]+1,i[o]+1,i[o-1]+f);e.push(a),a<c&&(c=a)}if(i=e,c>s)return s+1}return i[n.length]}function X(t){return t<=4?0:t<=8?1:2}async function F(t,n=3){let s=await v(t).metadata();return v(t).resize(Math.round(s.width*n),Math.round(s.height*n),{kernel:"lanczos3"}).greyscale().normalise().toBuffer()}function Y(t){if(!t)return{words:[],lines:[]};let n=[],s=new Map;for(let r of t.split(`
|
|
2
|
+
`)){let e=r.split(" ");if(e.length<12||parseInt(e[0])!==5)continue;let o=e[2],f=e[3],a=e[4],h=parseInt(e[6]),x=parseInt(e[7]),b=parseInt(e[8]),u=parseInt(e[9]),l=parseFloat(e[10]),g=e.slice(11).join(" ").trim();if(!g||l<0)continue;let m={x0:h,y0:x,x1:h+b,y1:x+u},w={text:g,confidence:l,bbox:m};n.push(w);let p=`${o}_${f}_${a}`;s.has(p)||s.set(p,{words:[],bbox:{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}});let d=s.get(p);d.words.push(w),d.bbox.x0=Math.min(d.bbox.x0,m.x0),d.bbox.y0=Math.min(d.bbox.y0,m.y0),d.bbox.x1=Math.max(d.bbox.x1,m.x1),d.bbox.y1=Math.max(d.bbox.y1,m.y1)}let i=[];for(let r of s.values())r.words.length>0&&i.push({text:r.words.map(e=>e.text).join(" "),bbox:r.bbox,words:r.words});return{words:n,lines:i}}function tt(t){if(!(t.words&&t.words.length>0)){if(t.blocks&&t.blocks.length>0){t.words=[],t.lines=[];for(let n of t.blocks)for(let s of n.paragraphs||[])for(let i of s.lines||[]){i.bbox&&t.lines.push(i);for(let r of i.words||[])r.bbox&&t.words.push(r)}if(t.words.length>0)return}if(t.tsv){let n=Y(t.tsv);t.words=n.words,t.lines=n.lines}}}function G(t,n,s=0,i=0,r=1){tt(t);let e=o=>({x0:Math.round(o.x0/r)+s,y0:Math.round(o.y0/r)+i,x1:Math.round(o.x1/r)+s,y1:Math.round(o.y1/r)+i}),c=[];if(t.lines&&t.lines.length>0)for(let o of t.lines){let f=o.text?o.text.toLowerCase().trim():"";if(!f||!o.bbox||!(f===n||new RegExp(`\\b${Q(n)}\\b`,"i").test(f)))continue;let h=o.words||(t.words?t.words.filter(l=>l.bbox&&l.bbox.x0>=o.bbox.x0-5&&l.bbox.x1<=o.bbox.x1+5&&l.bbox.y0>=o.bbox.y0-5&&l.bbox.y1<=o.bbox.y1+5):[]),x=n.split(/\s+/),b=x.map(l=>l.replace(/[^a-z0-9]/g,"")).join(" "),u=!1;if(h.length>0)for(let l=0;l<=h.length-x.length;l++){let g=h.slice(l,l+x.length),m=g.map(w=>(w.text||"").toLowerCase().trim().replace(/[^a-z0-9]/g,"")).join(" ");if(m===b||m.includes(b)){let w={x0:Math.min(...g.map(p=>p.bbox.x0)),y0:Math.min(...g.map(p=>p.bbox.y0)),x1:Math.max(...g.map(p=>p.bbox.x1)),y1:Math.max(...g.map(p=>p.bbox.y1))};c.push(e(w)),u=!0}}u||c.push(e(o.bbox))}if(c.length===0&&t.words&&t.words.length>0)for(let o of t.words){let f=o.text?o.text.toLowerCase().trim().replace(/[^a-z0-9]/g,""):"",a=n.replace(/[^a-z0-9]/g,"");f===a&&o.bbox&&c.push(e(o.bbox))}if(c.length===0&&t.words&&t.words.length>0){let o=X(n.length);for(let f of t.words){let a=f.text?f.text.toLowerCase().trim():"";a.length>=3&&Math.abs(a.length-n.length)<=o&&Z(a,n,o)<=o&&f.bbox&&c.push(e(f.bbox))}}return c}function L(t,n){let s=null,i=1/0;for(let r of t){let e=Math.round((r.x0+r.x1)/2),c=Math.round((r.y0+r.y1)/2),o=n.x>=r.x0&&n.x<=r.x1&&n.y>=r.y0&&n.y<=r.y1,f=Math.hypot(e-n.x,c-n.y),a=o?0:f;a<i&&(i=a,s={x:e,y:c,dist:f,containsPoint:o,bbox:r})}return s}function et(t,n,s,i){let c=Math.ceil(t/4),o=Math.ceil(n/2),f=[];for(let a=0;a<2;a++)for(let h=0;h<4;h++){let x=h*c,b=a*o,u=Math.min(c,t-x),l=Math.min(o,n-b),g=x+u/2,m=b+l/2,w=s>=x&&s<x+u&&i>=b&&i<b+l;f.push({x0:x,y0:b,w:u,h:l,cx:g,cy:m,containsTarget:w})}return f.sort((a,h)=>{if(a.containsTarget)return-1;if(h.containsTarget)return 1;let x=Math.hypot(a.cx-s,a.cy-i),b=Math.hypot(h.cx-s,h.cy-i);return x-b})}var W=null;async function nt(){return W||(W=(async()=>{let{createWorker:t}=await import("tesseract.js"),n=await import("fs-extra"),{CU_CACHE_DIR:s}=await import("./paths-PM7MFWJK.js");return n.ensureDirSync(s),t("eng",1,{cachePath:s,logger:()=>{}})})().catch(t=>{throw W=null,t})),W}var S=null,V=null;async function ot(){let{getActiveDisplay:t}=await import("./screen_grid-TDQC6CV5.js"),n=await t();if(S&&V===n)return S;V=n,S={format:"png"};try{let s=await J.listDisplays();s&&s.length>0&&(S={format:"png",screen:(s[n]||s[0]).id})}catch{}return S}var gt=async(t,n={})=>{let s=!!(process.env.SHOW_DEBUG_GRID||process.env.DEBUG_OCR||process.env.VERBOSE),i=performance.now(),r=i,e=u=>{if(!s)return;let l=performance.now(),g=(l-r).toFixed(0),m=(l-i).toFixed(0);console.log(`[Click Perf] +${g}ms (${m}ms total) -> ${u}`),r=l};e("Starting click()");let c=j(t),o=c.gridId||c.grid||c.coordinate||c.target||c.id,f=(c.type||c.clickType||"single").toLowerCase(),a=(c.button||"left").toLowerCase(),h=c.intendedClickText||c.text||"";if(!o&&!h)return'ERROR: Missing required "gridId" parameter for Click tool.';let x=o;if(h)try{e("Parsing grid code");let u=o?H(o):null;e("Getting display options");let l=await ot();e("Taking desktop screenshot");let g=await J(l);e("Getting image metadata");let m=await v(g).metadata(),w=m.width||1920,p=m.height||1080,d=u?{x:Math.round(u.x*(w/1280)),y:Math.round(u.y*(p/720))}:{x:w/2,y:p/2},C=h.toLowerCase().trim();e("Acquiring OCR worker");let O=await nt(),R=null,P="",K=u?220:500;if(u){e("Pass 1: Cropping target crop (3x zoom window, 2x upscale)");let k=Math.min(Math.round(w/3),w),T=Math.min(Math.round(p/3),p),M=Math.max(0,Math.min(w-k,d.x-Math.floor(k/2))),y=Math.max(0,Math.min(p-T,d.y-Math.floor(T/2))),$=await v(g).extract({left:M,top:y,width:k,height:T}).toBuffer(),I=2,D=await F($,I),E=C.replace(/[^a-z0-9]/g,"_");await A("cropped",`crop_${Date.now()}_${E}.png`,D),e("Pass 1: Running Tesseract OCR recognize on crop (PSM 11 - Sparse Text)"),await O.setParameters({tessedit_pageseg_mode:"11"});let{data:_}=await O.recognize(D,{},{tsv:!0,blocks:!0});if(e("Pass 1: OCR recognition finished, extracting matches"),_&&_.text){s&&console.log(`[Pass 1 OCR Read]: "${_.text.trim().replace(/\s+/g," ")}"`);let U=G(_,C,M,y,I);if(U.length>0){let z=L(U,d);z&&(z.containsPoint||z.dist<=K)&&(R=z,P="centered target crop OCR")}}}if(!R){e("Pass 2: Entering Full-Screen OCR (broad scan, PSM 3 - Auto)");let k=await F(g,2),T=C.replace(/[^a-z0-9]/g,"_");await A("fullscreen",`full_${Date.now()}_${T}.png`,k),e("Pass 2: Running Tesseract on full screen"),await O.setParameters({tessedit_pageseg_mode:"3"});let{data:M}=await O.recognize(k,{},{tsv:!0,blocks:!0});if(e("Pass 2: Full-screen OCR finished"),M&&M.text){let y=G(M,C,0,0,2);if(y.length>0){let $=L(y,d);$&&(R=$,P="full-screen OCR")}}}if(!R){e("Pass 3: Entering Tiled OCR fallback (high-res 3x)");let k=et(w,p,d.x,d.y),T=C.replace(/[^a-z0-9]/g,"_");await O.setParameters({tessedit_pageseg_mode:"11"});for(let M=0;M<k.length;M++){let y=k[M];e(`Pass 3: Preprocessing tile ${M+1}/${k.length}`);let $=await v(g).extract({left:y.x0,top:y.y0,width:y.w,height:y.h}).toBuffer(),I=await F($,3);await A("tiles",`tile_${M+1}_${Date.now()}_${T}.png`,I),e(`Pass 3: Running Tesseract on tile ${M+1}`);let{data:D}=await O.recognize(I,{},{tsv:!0,blocks:!0});if(!D||!D.text)continue;let E=G(D,C,y.x0,y.y0,3);if(E.length>0){let _=L(E,d);if(_){R=_,P=`tile ${M+1} OCR (${y.containsTarget?"target tile":`offset ${y.x0},${y.y0}`})`;break}}}}if(R){let k={x:Math.round(R.x*(1280/w)),y:Math.round(R.y*(720/p))};e(`Executing mouse click on matched target (${P})`);let T=await B("click",k,{button:a,clickType:f});return e("Click completed successfully"),`${T} (${P} for "${h}" at ${Math.round(R.dist)}px distance)`}else s&&console.log(`[OCR] No match found for "${h}". Falling back to gridId.`)}catch(u){s&&console.error("[OCR Error]",u)}e(`Executing mouse click on fallback gridId: ${x}`);let b=await B("click",x,{button:a,clickType:f});return e("Fallback click completed"),b};export{gt as click};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i,b as s}from"./chunk-
|
|
1
|
+
import{a as i,b as s}from"./chunk-ZWNKNXAI.js";import"./chunk-EP3WAFTJ.js";import{a as c}from"./chunk-Y5JU726N.js";var d=async(a,p={})=>{let e=c(a),r=e.action||e.type||e.cmd,n=e.target||e.grid||e.gridCode||e.location||e.input;if(!r)return'ERROR: Missing required "action" argument for computer_action (e.g. move, click, drag, scroll, type, key_press, key_combination).';let t=r.toLowerCase();if(t.startsWith("mouse_")||["move","click","drag","scroll"].includes(t)){let o=t.replace("mouse_","");return await i(o,n,{button:e.button,clickType:e.clickType||e.type,from:e.from,to:e.to,direction:e.direction,amount:e.amount?parseInt(e.amount,10):void 0})}if(t.startsWith("key_")||t==="type"||t==="press"){let o=t;t==="press"&&(o="key_press");let u=e.autoPressEnter===!0||e.autoPressEnter==="true"||e.enter===!0||e.enter==="true";return await s(o,n||e.text||e.keys,{...e,autoPressEnter:u})}return`ERROR: Unrecognized action "${r}". Supported actions: move, click, drag, scroll, type, key_press, key_combination.`};export{d as computer_action};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
1
|
+
import{a as e}from"./chunk-ZWNKNXAI.js";import"./chunk-EP3WAFTJ.js";import{a as d}from"./chunk-Y5JU726N.js";var m=async(a,i={})=>{let r=d(a),o=r.fromGridId||r.from||r.start,t=r.toGridId||r.to||r.end;return!o||!t?'ERROR: Drag requires both "fromGridId" and "toGridId" parameters.':await e("drag",o,{from:o,to:t})};export{m as drag};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as $}from"./chunk-KFM2OZWJ.js";import{k as S,l as C,m as B}from"./chunk-
|
|
1
|
+
import{a as $}from"./chunk-KFM2OZWJ.js";import{k as S,l as C,m as B}from"./chunk-WKHYRBBK.js";import{l as I}from"./chunk-AAPXJU65.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";import{a as T}from"./chunk-Y5JU726N.js";import b from"fs-extra";import E from"path";var F=(a,y={})=>{try{if(a.length<8||a[0]!==137||a[1]!==80||a[2]!==78||a[3]!==71)return a;let s=[],c=[];for(let r=0;r<256;r++){let e=r;for(let n=0;n<8;n++)e&1?e=3988292384^e>>>1:e=e>>>1;c[r]=e}let l=r=>{let e=4294967295;for(let n=0;n<r.length;n++)e=c[(e^r[n])&255]^e>>>8;return(e^4294967295)>>>0},f=(r,e)=>{let n=Buffer.from(r,"ascii"),i=Buffer.from(e,"utf-8"),u=n.length+1+i.length,o=Buffer.alloc(8+u+4);o.writeUInt32BE(u,0),o.write("tEXt",4,"ascii"),n.copy(o,8),o[8+n.length]=0,i.copy(o,8+n.length+1);let w=l(o.subarray(4,8+u));return o.writeUInt32BE(w,8+u),o};for(let[r,e]of Object.entries(y))e!=null&&s.push(f(r,String(e)));if(s.length===0)return a;if(a.subarray(12,16).toString("ascii")==="IHDR"){let e=a.subarray(0,33),n=a.subarray(33);return Buffer.concat([e,...s,n])}return a}catch{return a}},N=async(a,y={})=>{let s=T(a),c=s.prompt||s.text,l=s.path||s.outputPath||s.output||"generated_image.png",f=s.ratio;if(!c)return'ERROR: Missing "prompt" argument for generate_image.';let r=["nsfw","naked","nudity","nude","porn","sex","xxx","erotic","gore","bloody","violence","abuse","suicide","murder","hentai","pedophile","rape"],e=c.toLowerCase();if(r.some(i=>e.includes(i)))return"ERROR: Prompt blocked by system safety filter (inappropriate or unsafe content detected).";try{let i=await I();if(!await S(i))return`ERROR: Insufficient Quota for selected quality. Either tell user reduce quality or wait for next refresh cycle (${(await C()).nextResetMin||60}m).`;let o=i.imageSettings||{keyType:"Default",quality:"Low-High",apiKey:""},w=o.keyType==="Custom"&&o.apiKey?o.apiKey:FALLBACK_IMAGE_KEY,x={Low:"flux","Low-High":"zimage",Medium:"gptimage","Medium-High":"gptimage",High:"qwen-image",Ultra:"gptimage-large",Premium:"nanobanana-pro"}[o.quality]||"zimage",g=1024,m=1024;if(f){let t=f.replace(/\s+/g,"");t==="16:9"?(g=1024,m=576):t==="9:16"?(g=576,m=1024):t==="4:3"?(g=1024,m=768):t==="3:4"?(g=768,m=1024):t==="1:1"&&(g=1024,m=1024)}let M=Math.floor(Math.random()*1e7),k=`https://gen.pollinations.ai/image/${encodeURIComponent(c)}?model=${x}&width=${g}&height=${m}&seed=${M}&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")}`,d=await fetch(k,{method:"GET",headers:{Authorization:`Bearer ${w}`}});if(!d.ok){let t=d.status,h="";try{h=await d.text()}catch{}return t===402||h.includes("Insufficient balance")||h.includes("PAYMENT_REQUIRED")?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed with status [${t}]: ${h||"Unknown API Error"}`}if((d.headers.get("content-type")||"").includes("application/json")){let t=await d.json();return t.status===402||t.error&&t.error.code==="PAYMENT_REQUIRED"?"ERROR: Image Generation Currently unavailable. Try again later.":`ERROR: Image Generation failed: ${t.error?.message||JSON.stringify(t)}`}let O=await d.arrayBuffer(),p=Buffer.from(O),P={Title:c,Description:"Generated via FluxFlow CLI",Software:"FluxFlow CLI",Author:"FluxFlow","Creation Time":new Date().toISOString(),Prompt:c,Model:`Fluxflow:${x}`,Ratio:f||"1:1",Seed:String(M)};p=F(p,P);let R=E.resolve(process.cwd(),l);await b.ensureDir(E.dirname(R)),await $.recordFileChange(R),await b.writeFile(R,p),await B(i);let v=E.extname(l).toLowerCase(),L={".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".webp":"image/webp"}[v]||"image/png";return y.isMultiModal!==!1?{text:`SUCCESS: Image successfully generated from prompt [${c}] and saved to [${l}]. Output attached to multimodal part`,binaryPart:{inlineData:{data:p.toString("base64"),mimeType:L}}}:`SUCCESS: Image successfully generated from prompt [${c}] and saved to [${l}].`}catch(i){return`ERROR: Failed during image generation: ${i instanceof Error?i.message:String(i)}`}};export{N as generate_image};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{a as k,c as d}from"./chunk-56EJGQU3.js";import{a as b}from"./chunk-Y5JU726N.js";var I=async(w,s={})=>{let{runSubagent:U}=await import("./ai-
|
|
1
|
+
import{a as k,c as d}from"./chunk-56EJGQU3.js";import{a as b}from"./chunk-Y5JU726N.js";var I=async(w,s={})=>{let{runSubagent:U}=await import("./ai-AS3SDWCL.js"),l=b(w),c=l.task||l.instruction||l.prompt,C=l.model||null,E=l.title||null,m=l.tools||null;if(!c)return'ERROR: Missing "task" argument for invoke.';let f=null;if(m)try{let t=m.trim();t.startsWith("[")&&t.endsWith("]")&&(t=t.substring(1,t.length-1)),f=t.split(",").map(n=>n.trim().replace(/^["']|["']$/g,"")).filter(Boolean)}catch{}let i=`subagent-${Date.now()}-${Math.floor(Math.random()*1e3)}`,h=null,S=null,$=new Promise((t,n)=>{h=t,S=n}),e={id:i,title:E||c.substring(0,30),task:c,status:"running",startedAt:Date.now(),lastChunkTime:Date.now(),wps:0,questions:[],pendingSteerMessages:[],steer:t=>{t&&e.pendingSteerMessages.push(t)},completionPromise:$,_resolveCompletion:h,_rejectCompletion:S,progress:[]},r={chunks:[],totalWords:0};k.push(e),s.onSubagentUpdate&&s.onSubagentUpdate();let a=[],M={...s,taskId:i,onAskMain:async t=>{let n=`q-${Date.now()}-${Math.floor(Math.random()*1e3)}`,o=null,p=new Promise(g=>{o=g}),u={id:n,question:t,answered:!1,answer:null,askedAt:Date.now(),_resolve:o};return e.questions.push(u),e.status="waiting",s.onSubagentUpdate&&s.onSubagentUpdate(),d(`[SYSTEM] Background subagent "${e.title}" is WAITING FOR YOUR INPUT: "${t}"
|
|
2
2
|
Respond using tool: [tool:functions.Answer(id="${i}", answer="...")]
|
|
3
3
|
[/SYSTEM]`),await p},onVisualFeedback:t=>{e.lastChunkTime=Date.now();let n=t.replace(/\x1b\[[0-9;]*m/g,""),o=n.match(/[✔✘✗✖🔍📖→➕↻•]\s*([A-Za-z0-9\s-]+)/);o?e.currentTool=o[1].trim():e.currentTool=n,s.onSubagentUpdate&&s.onSubagentUpdate()},onTokenChunk:(t,n)=>{let o=Date.now();if(e.lastChunkTime=o,e.currentTool="Thinking",typeof n=="number"&&n>0){r.totalWords+=n,r.chunks.push({time:o,words:n});let p=o-400;if(r.chunks=r.chunks.filter(u=>u.time>=p),r.chunks.length>0){let u=r.chunks.reduce((_,A)=>_+A.words,0),T=r.chunks[0].time,g=Math.max(.4,(o-T)/1e3);e.wps=Math.round(u/g*10)/10}}s.onSubagentUpdate&&s.onSubagentUpdate()}};return U(c,M,C,f,50,t=>{if(e.status==="cancelled")return;if(t.startsWith("[Subagent Turn")&&a.length>0&&(e.progress.push([...a]),a=[]),t.includes("[Executing Tool]")){let o=t.match(/\[Executing Tool\]\s*([a-zA-Z0-9_]+)/);o&&(!e.currentTool||e.currentTool==="Thinking")&&(e.currentTool=o[1])}let n=t;if(n.startsWith("[Tool Result]")){let o=n.split(`
|
|
4
4
|
`);o.length>5&&(n=o.slice(0,4).join(`
|
|
5
5
|
`)+`
|
|
6
|
-
... [Content/Diff Truncated from Logs] ...`)}a.push(n),s.onSubagentUpdate&&s.onSubagentUpdate()},!0).then(t=>{if(e.status==="cancelled"){e._resolveCompletion&&e._resolveCompletion(t);return}a.length>0&&(e.progress.push([...a]),a=[]),e.status="completed",e.finalAnswer=t,s.onSubagentUpdate&&s.onSubagentUpdate(),d(`[SYSTEM] Background subagent "${e.title}" (id: ${i}) has FINISHED. Call GetProgress(id="${i}") to see the final result. [/SYSTEM]`),e._resolveCompletion&&e._resolveCompletion(t)}).catch(async t=>{let{isTerminationSignaled:n}=await import("./ai-
|
|
6
|
+
... [Content/Diff Truncated from Logs] ...`)}a.push(n),s.onSubagentUpdate&&s.onSubagentUpdate()},!0).then(t=>{if(e.status==="cancelled"){e._resolveCompletion&&e._resolveCompletion(t);return}a.length>0&&(e.progress.push([...a]),a=[]),e.status="completed",e.finalAnswer=t,s.onSubagentUpdate&&s.onSubagentUpdate(),d(`[SYSTEM] Background subagent "${e.title}" (id: ${i}) has FINISHED. Call GetProgress(id="${i}") to see the final result. [/SYSTEM]`),e._resolveCompletion&&e._resolveCompletion(t)}).catch(async t=>{let{isTerminationSignaled:n}=await import("./ai-AS3SDWCL.js");if(t.message==="Subagent task was cancelled."||e.status==="cancelled"||n()){e.status="cancelled",a.push("[SUBAGENT CANCELLED] Task was cancelled."),e.progress.push([...a]),s.onSubagentUpdate&&s.onSubagentUpdate(),e._resolveCompletion&&e._resolveCompletion(null);return}a.push(`[SUBAGENT FAILURE] Error: ${t.message}`),e.progress.push([...a]),e.status="failed",e.error=t.message,s.onSubagentUpdate&&s.onSubagentUpdate(),d(`[SYSTEM] Background subagent "${e.title}" (id: ${i}) FAILED with error: ${t.message}. [/SYSTEM]`),e._rejectCompletion&&e._rejectCompletion(t)}),`SUCCESS: Background subagent started. Task ID: ${i}`};export{I as invoke};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as o}from"./chunk-Y5JU726N.js";var k=async(b,t={})=>{let{runSubagent:u}=await import("./ai-
|
|
2
|
-
`),e}catch(e){let{isTerminationSignaled:i}=await import("./ai-
|
|
1
|
+
import{a as o}from"./chunk-Y5JU726N.js";var k=async(b,t={})=>{let{runSubagent:u}=await import("./ai-AS3SDWCL.js"),s=o(b),a=s.task||s.instruction||s.prompt,m=s.model||null,l=s.tools||null;if(!a)return'ERROR: Missing "task" argument for invokeSync.';let r=null;if(l)try{let e=l.trim();e.startsWith("[")&&e.endsWith("]")&&(e=e.substring(1,e.length-1)),r=e.split(",").map(i=>i.trim().replace(/^["']|["']$/g,"")).filter(Boolean)}catch{}let n=s.title||a.substring(0,30);try{t.onVisualFeedback&&t.onVisualFeedback(`\x1B[95mSubAgent\x1B[0m: \x1B[32mGeneralist\x1B[0m \u2192 ${n}`);let e=await u(a,t,m,r,50);return t.onVisualFeedback&&t.onVisualFeedback(`\x1B[95mSubAgent\x1B[0m: \x1B[32mGeneralist\x1B[0m \u2192 ${n} [COMPLETED]
|
|
2
|
+
`),e}catch(e){let{isTerminationSignaled:i}=await import("./ai-AS3SDWCL.js"),c=e.message==="Subagent task was cancelled by user."||i();if(t.onVisualFeedback){let d=c?"[CANCELLED]":"[FAILED]";t.onVisualFeedback(`\x1B[95mSubAgent\x1B[0m: \x1B[32mGeneralist\x1B[0m \u2192 ${n} ${d}
|
|
3
3
|
`)}return`ERROR: Subagent execution failed: ${e.message}`}};export{k as invokeSync};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as e}from"./chunk-
|
|
1
|
+
import{b as e}from"./chunk-ZWNKNXAI.js";import"./chunk-EP3WAFTJ.js";import{a as i}from"./chunk-Y5JU726N.js";var k=async(s,c={})=>{let t=i(s),a=t.key||t.keys||t.input||t.shortcut;if(!a)return'ERROR: Missing required "key" parameter for KeyPress tool.';let r=String(a).trim().toLowerCase();if(r==="clearinput"||r==="clear_input"||r==="clear")return await e("clear_input");if(r==="back"||r==="browser_back"||r==="browserBack")return await e("browser_back");if(r.includes(";")||r.includes("+")){let o=r.split(/[;+]/).map(n=>n.trim()).filter(Boolean);return await e("key_combination",o)}return await e("key_press",r)};export{k as key_press};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as n}from"./chunk-
|
|
1
|
+
import{b as n}from"./chunk-ZWNKNXAI.js";import"./chunk-EP3WAFTJ.js";import{a as r}from"./chunk-Y5JU726N.js";var p=async(o,u={})=>{let t=r(o),e=t.text||t.input||t.value||"",s=t.autoPressEnter===!0||t.autoPressEnter==="true"||t.enter===!0||t.enter==="true";return e==null?'ERROR: Missing required "text" parameter for KeyboardTyping tool.':await n("type",String(e),{autoPressEnter:s})};export{p as keyboard_typing};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-EP3WAFTJ.js";export{a as GRID_CONFIG,c as captureGriddedScreenshot,b as getActiveDisplay,e as gridToNativeCoordinates,d as parseGridCodeTo720p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as r}from"./chunk-
|
|
1
|
+
import{a as r}from"./chunk-ZWNKNXAI.js";import"./chunk-EP3WAFTJ.js";import{a as t}from"./chunk-Y5JU726N.js";var m=async(n,i={})=>{let o=t(n),e=(o.direction||"down").toLowerCase(),c=o.amount?parseInt(o.amount,10):6,s=o.gridId||o.grid||o.coordinate||o.target||o.id||null;return await r("scroll",s,{direction:e,amount:c})};export{m as scroll};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-72RYQ5W7.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";export{a as getAPIKey,b as getProviderAPIKey,f as getSearchSecrets,d as getSecret,k as removeAPIKey,j as removeSecret,g as saveAPIKey,c as saveProviderAPIKey,i as saveSearchId,h as saveSearchKey,e as saveSecret};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as a,m as b}from"./chunk-
|
|
1
|
+
import{l as a,m as b}from"./chunk-AAPXJU65.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";export{a as loadSettings,b as saveSettings};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{g as h,h as m,i as R}from"./chunk-M3KCPUDW.js";import{a as F}from"./chunk-KFM2OZWJ.js";import{l as g}from"./chunk-AAPXJU65.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";import{a as $}from"./chunk-Y5JU726N.js";import c from"fs";import M from"path";var v=async(w,S={})=>{let n=$(w),t=n.path;if(!t)return'ERROR: Missing "path" argument for PatchFile.';let{patchPairs:o,allowMultiple:C,error:p}=h(n);if(p)return`ERROR: ${p}`;if(o.length===0)return"ERROR: No valid replacement pairs found. Use searchContent1, newContent1, etc.";let E=n.allowMultiple!==void 0?n.allowMultiple===!0||String(n.allowMultiple).toLowerCase()==="true":C,i=M.resolve(process.cwd(),t);try{if(!c.existsSync(i))return`ERROR: File [${t}] does not exist. Use WriteFile instead.`;let e=S.forcedContent||c.readFileSync(i,"utf8");e.startsWith("\uFEFF")&&(e=e.slice(1));let s=e.replace(/\r\n/g,`
|
|
2
2
|
`).replace(/\r/g,`
|
|
3
3
|
`),{content:u,results:l}=m(s,o,{allowMultiple:E}),a=l.filter(r=>!r.success),f=l.filter(r=>r.success);if(f.length===0)return`ERROR: Patch Failed to apply to [${t}].
|
|
4
4
|
${a.map(r=>` \u2022 ${r.error}`).join(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b}from"./chunk-TCBC5P3S.js";import"./chunk-WKHYRBBK.js";import"./chunk-AAPXJU65.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";export{b as openUsageDashboard,a as startUsageServer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as y}from"./chunk-KFM2OZWJ.js";import{l as $}from"./chunk-
|
|
1
|
+
import{a as y}from"./chunk-KFM2OZWJ.js";import{l as $}from"./chunk-AAPXJU65.js";import"./chunk-SIINYZWE.js";import"./chunk-FDNLMLIM.js";import{a as R}from"./chunk-Y5JU726N.js";import r from"fs";import C from"path";var B=async(w,E={})=>{let{path:s,content:o}=R(w);if(!s)return'ERROR: Missing "path" argument for write_file.';if(o===void 0)return'ERROR: Missing "content" argument for write_file.';o=o.replace(/^```[\w]*\n?/,"").replace(/```\s*$/,"").replace(/\r\n/g,`
|
|
2
2
|
`).replace(/\r/g,`
|
|
3
3
|
`);let t=C.resolve(process.cwd(),s),m=C.dirname(t);try{await y.recordFileChange(t);let n="";if(r.existsSync(t))try{n=`Old File contents:
|
|
4
4
|
${r.readFileSync(t,"utf8").split(/\r?\n/).map((g,j)=>`${j+1} | ${g}`).join(`
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import{a as m}from"./chunks/chunk-FDNLMLIM.js";import{spawn as ce}from"child_process";import{fileURLToPath as D}from"url";import ue from"os";import B from"path";import h from"fs";import w from"dotenv";try{let e=B.join(m,"AGENTS.md"),r=B.join(m,"FLUXFLOW.md");h.existsSync(m)||h.mkdirSync(m,{recursive:!0}),h.existsSync(e)||h.writeFileSync(e,"","utf8"),h.existsSync(r)||h.writeFileSync(r,"","utf8")}catch{}w.config({path:"./.env",override:!0,quiet:!0});w.config({path:`${m}/.env`,override:!0,quiet:!0});w.config({path:`${m}/.env.agents`,override:!0,quiet:!0});w.config({path:`${m}/.env.fluxflow`,override:!0,quiet:!0});w.config({path:"./.env.agents",override:!0,quiet:!0});w.config({path:"./.env.fluxflow",override:!0,quiet:!0});process.env.NO_INS=!1;var me=ue.totalmem(),j=me/(1024*1024),pe=.5,de=Math.floor(j*pe),G=process.argv.slice(2),U=G.indexOf("--allocation"),s=U!==-1?parseInt(G[U+1],10):NaN,ge=process.env.EXPERIMENTAL_MEMORY_MANAGER==="true"||process.env.EXPERIMENTAL_MEMORY_MANAGER==="1"||process.env.EXPERIMENTAL_MEMORY_MANAGER===!0||process.env.EXPERIMENTAL_MEMORY_MANAGER===1||!1,fe=!isNaN(s)||ge||!1;!isNaN(s)&&s<64&&(console.error(`
|
|
3
3
|
[ERROR] Allocation value '${s} MB' is too low. Minimum: 64 MB, Recommended: 4096 MB.
|
|
4
4
|
`),process.exit(1));var M=Math.floor(j*.75),xe=!isNaN(s)&&s>0?Math.min(s,M):Math.max(1536,Math.min(32768,de)),he=D(import.meta.url).endsWith(".js");if(he&&!process.execArgv.some(e=>e.includes("max-old-space-size"))&&fe)Number.isNaN(s)||(console.log(`
|
|
5
|
-
[MEMORY] Starting with: '${s>M?M:s} MB' Allocation${s>M?" (Max allowed: '"+M+" MB')":""}. Please Wait...`),await new Promise(r=>setTimeout(r,5e3))),ce(process.execPath,[`--max-old-space-size=${xe}`,"--expose-gc","--max-semi-space-size=1",D(import.meta.url),...process.argv.slice(2)],{stdio:"inherit"}).on("exit",r=>process.exit(r||0));else{let e=process.argv.slice(2),r=e.includes("--help")&&e[e.indexOf("--help")+1]==="commands",P=e.includes("--help")&&!r,N=e.includes("--version")||e.includes("-v"),R=e[0]==="--update",I=e[0]==="--export";if(e[0]==="--usage"||e.includes("--usage")||e[0]==="--budget"||e.includes("--budget")){let{openUsageDashboard:o}=await import("./chunks/usageServer-
|
|
5
|
+
[MEMORY] Starting with: '${s>M?M:s} MB' Allocation${s>M?" (Max allowed: '"+M+" MB')":""}. Please Wait...`),await new Promise(r=>setTimeout(r,5e3))),ce(process.execPath,[`--max-old-space-size=${xe}`,"--expose-gc","--max-semi-space-size=1",D(import.meta.url),...process.argv.slice(2)],{stdio:"inherit"}).on("exit",r=>process.exit(r||0));else{let e=process.argv.slice(2),r=e.includes("--help")&&e[e.indexOf("--help")+1]==="commands",P=e.includes("--help")&&!r,N=e.includes("--version")||e.includes("-v"),R=e[0]==="--update",I=e[0]==="--export";if(e[0]==="--usage"||e.includes("--usage")||e[0]==="--budget"||e.includes("--budget")){let{openUsageDashboard:o}=await import("./chunks/usageServer-JKD3OZQ7.js"),{url:a}=await o();console.log(`
|
|
6
6
|
\u2726 FluxFlow Token Usage & Analytics Dashboard
|
|
7
7
|
\u2800\u2800\u2514\u2500 Serving at: ${a}
|
|
8
8
|
\u2800\u2800\u2514\u2500 Opened in default browser. Press Ctrl+C to stop.
|
|
@@ -63,4 +63,4 @@ Usage: fluxflow --export error`),process.exit(1)}if(N&&(console.log(`v${d}`),pro
|
|
|
63
63
|
/docs View documentation
|
|
64
64
|
/fluxflow init Create FluxFlow.md template
|
|
65
65
|
/update check Check for new version
|
|
66
|
-
/update latest Install latest release`),process.exit(0)),R){let y=e[1]||"latest";if(y==="check"){let l=e[2]==="latest";try{let x=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;x||(console.error("Error: Could not retrieve latest version."),process.exit(1)),console.log(l?`Latest version: v${x}`:x!==d?`A new version of FluxFlow is available: v${x} (current: v${d}). Run "fluxflow --update latest" to upgrade.`:`FluxFlow is up to date (v${d}).`)}catch(c){console.error("Error checking for updates:",c.message),process.exit(1)}process.exit(0)}else if(y==="latest"){console.log("Checking latest version and settings...");try{let n=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;n||(console.error("Error: Could not retrieve latest version."),process.exit(1)),n===d&&(console.log(`FluxFlow is already up to date (v${d}).`),process.exit(0));let x=async()=>{let t=(await import("react")).default,{useState:L}=t,{render:K,Box:f,Text:b}=await import("ink"),Q=(await import("ink-select-input")).default,Z=(await import("ink-text-input")).default;return new Promise(ee=>{let oe=[{label:"NPM",value:"npm"},{label:"PNPM",value:"pnpm"},{label:"Yarn",value:"yarn"},{label:"Bun",value:"bun"},{label:"Custom Command",value:"custom"}],te=({label:S,isSelected:C})=>t.createElement(f,{width:"100%"},t.createElement(b,{bold:C},"\u2514\u2500 ",C?"\x1B[32m\u25CF\x1B[0m":"\u25CB"," ",S)),T,se=()=>{let[S,C]=L("select"),[ae,ne]=L(""),ie=F=>{F.value==="custom"?C("custom"):_({manager:F.value})},le=F=>{_({manager:"custom",customCommand:F})};return S==="custom"?t.createElement(f,{flexDirection:"column",marginY:1},t.createElement(f,{marginBottom:1},t.createElement(b,{color:"magenta",bold:!0},"\u{1F527} Enter custom update command:")),t.createElement(f,{flexDirection:"row"},t.createElement(b,{color:"cyan",bold:!0}," \u276F "),t.createElement(Z,{value:ae,onChange:ne,onSubmit:le})),t.createElement(f,{marginTop:1},t.createElement(b,{color:"gray",dimColor:!0,italic:!0}," (Press Enter to confirm)"))):t.createElement(f,{flexDirection:"column",marginY:1},t.createElement(f,{marginBottom:1},t.createElement(b,{color:"magenta",bold:!0},"\u{1F4E6} Select a package manager for the update:")),t.createElement(Q,{items:oe,onSelect:ie,itemComponent:te,indicatorComponent:()=>null}))},_=S=>{T&&T(),ee(S)},{unmount:re}=K(t.createElement(se,null));T=re})},u,O="",E;try{let{loadSettings:t}=await import("./chunks/settings-
|
|
66
|
+
/update latest Install latest release`),process.exit(0)),R){let y=e[1]||"latest";if(y==="check"){let l=e[2]==="latest";try{let x=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;x||(console.error("Error: Could not retrieve latest version."),process.exit(1)),console.log(l?`Latest version: v${x}`:x!==d?`A new version of FluxFlow is available: v${x} (current: v${d}). Run "fluxflow --update latest" to upgrade.`:`FluxFlow is up to date (v${d}).`)}catch(c){console.error("Error checking for updates:",c.message),process.exit(1)}process.exit(0)}else if(y==="latest"){console.log("Checking latest version and settings...");try{let n=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;n||(console.error("Error: Could not retrieve latest version."),process.exit(1)),n===d&&(console.log(`FluxFlow is already up to date (v${d}).`),process.exit(0));let x=async()=>{let t=(await import("react")).default,{useState:L}=t,{render:K,Box:f,Text:b}=await import("ink"),Q=(await import("ink-select-input")).default,Z=(await import("ink-text-input")).default;return new Promise(ee=>{let oe=[{label:"NPM",value:"npm"},{label:"PNPM",value:"pnpm"},{label:"Yarn",value:"yarn"},{label:"Bun",value:"bun"},{label:"Custom Command",value:"custom"}],te=({label:S,isSelected:C})=>t.createElement(f,{width:"100%"},t.createElement(b,{bold:C},"\u2514\u2500 ",C?"\x1B[32m\u25CF\x1B[0m":"\u25CB"," ",S)),T,se=()=>{let[S,C]=L("select"),[ae,ne]=L(""),ie=F=>{F.value==="custom"?C("custom"):_({manager:F.value})},le=F=>{_({manager:"custom",customCommand:F})};return S==="custom"?t.createElement(f,{flexDirection:"column",marginY:1},t.createElement(f,{marginBottom:1},t.createElement(b,{color:"magenta",bold:!0},"\u{1F527} Enter custom update command:")),t.createElement(f,{flexDirection:"row"},t.createElement(b,{color:"cyan",bold:!0}," \u276F "),t.createElement(Z,{value:ae,onChange:ne,onSubmit:le})),t.createElement(f,{marginTop:1},t.createElement(b,{color:"gray",dimColor:!0,italic:!0}," (Press Enter to confirm)"))):t.createElement(f,{flexDirection:"column",marginY:1},t.createElement(f,{marginBottom:1},t.createElement(b,{color:"magenta",bold:!0},"\u{1F4E6} Select a package manager for the update:")),t.createElement(Q,{items:oe,onSelect:ie,itemComponent:te,indicatorComponent:()=>null}))},_=S=>{T&&T(),ee(S)},{unmount:re}=K(t.createElement(se,null));T=re})},u,O="",E;try{let{loadSettings:t}=await import("./chunks/settings-2IFZMDUD.js");E=await t(),u=E?.systemSettings?.updateManager||E?.updateManager}catch{}if(!u){let t=await x();u=t.manager,O=t.customCommand}let g="";u==="pnpm"?g=`pnpm add -g fluxflow-cli@${n}`:u==="bun"?g=`bun add -g fluxflow-cli@${n}`:u==="yarn"?g=`yarn global add fluxflow-cli@${n}`:u==="custom"?g=O||E?.customUpdateCommand||`npm install -g fluxflow-cli@${n}`:g=`npm install -g fluxflow-cli@${n}`,console.log(`Updating FluxFlow to v${n} using ${u}...`),console.log(`Running: ${g}`);let{execSync:J}=await import("child_process");J(g,{stdio:"inherit"}),console.log(`\x1B[32m\u2705 Update successful! FluxFlow updated to v${n}.\x1B[0m`)}catch(l){console.error("\x1B[31m\u274C Update failed:\x1B[0m",l.message),process.exit(1)}process.exit(0)}else console.error("Unknown update command. Available options: --update, --update check, --update check latest, --update latest"),process.exit(1)}}let{default:Y}=await import("react"),{render:W}=await import("ink"),{default:q}=await import("./chunks/app-QWV5B5EW.js");process.env.NODE_NO_WARNINGS="1";let X=["cuimp","Found existing binary","Binary verified","curl.exe not found","Falling back to .bat file","DeprecationWarning"],H=console.log,V=console.warn,z=console.error,k=o=>{let a=o.map(String).join(" ");return X.some(i=>a.includes(i))};console.log=(...o)=>!k(o)&&H(...o),console.warn=(...o)=>!k(o)&&V(...o),console.error=(...o)=>!k(o)&&z(...o);let A=e.findIndex(o=>o==="--cwd"||o==="--path");if(A!==-1&&A+1<e.length){let o=e[A+1],a=await import("path"),i=await import("fs-extra"),p=a.default.resolve(o);try{i.default.existsSync(p)&&i.default.statSync(p).isDirectory()?process.chdir(p):(console.error(`[ERROR] Directory not found: "${o}"`),process.exit(0))}catch(v){console.error(`[ERROR] Failed to change directory to "${o}": ${v.message}`),process.exit(0)}}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"),process.stdout.write("\x1B[?2004h"));let $=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?2004l")};if(process.on("exit",$),["SIGINT","SIGTERM","SIGHUP"].forEach(o=>{process.once(o,()=>{$(),process.exit(0)})}),e.includes("--playground")){let o=process.cwd();process.argv.push("--original-cwd",o);let{DATA_DIR:a}=await import("./chunks/paths-PM7MFWJK.js"),i=await import("path"),p=await import("fs-extra"),v=i.default.join(a,"playground");try{p.default.ensureDirSync(v),process.chdir(v)}catch{}}W(Y.createElement(q,{args:process.argv.slice(2)}),{exitOnCtrlC:!1})}
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as p,B as q,C as r,m as b,n as c,o as d,p as e,q as f,r as g,s as h,t as i,u as j,v as k,w as l,x as m,y as n,z as o}from"./chunk-GUI2BKST.js";import"./chunk-VCF6JVQV.js";import"./chunk-56EJGQU3.js";import"./chunk-KRRJNFBF.js";import"./chunk-ZYJYKSIA.js";import"./chunk-2PMRX4CK.js";import"./chunk-KFM2OZWJ.js";import"./chunk-2T5DRAKV.js";import"./chunk-HK42GQOK.js";import{g as a}from"./chunk-WLKCYZXG.js";import"./chunk-SIINYZWE.js";import"./chunk-YVFWOJHY.js";import"./chunk-FDNLMLIM.js";import"./chunk-Y5JU726N.js";export{c as RE_LEADING_THINK,o as compressHistory,b as convertChannelThinkTags,p as deleteChatSummary,e as findGenuineThinkClose,q as getAIStream,i as getCleanGroupedLength,l as getGoogleClient,f as getLeadingThinkBlock,n as initAI,d as isInsideBacktick,a as isModelMultimodal,k as isTerminationSignaled,m as runJanitorTask,r as runSubagent,j as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags};
|