fluxflow-cli 4.25.4 → 4.26.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 +16 -5
- package/dist/chunks/9router-J5GHSSMY.js +2 -0
- package/dist/chunks/ai-CANLJJ2L.js +1 -0
- package/dist/chunks/aihubmix-ZANBMI5F.js +2 -0
- package/dist/chunks/apinex-MSG2QNBL.js +2 -0
- package/dist/chunks/{app-D33R52FZ.js → app-2JPMBSNL.js} +141 -141
- package/dist/chunks/{chunk-2AUIP6N5.js → chunk-37QHXCGM.js} +1 -1
- package/dist/chunks/chunk-HM3CMNOJ.js +1 -0
- package/dist/chunks/chunk-JS5ZIGFR.js +1 -0
- package/dist/chunks/{chunk-4XXLWMY6.js → chunk-LKJUPSJM.js} +1 -1
- package/dist/chunks/chunk-NL4MAQSB.js +1 -0
- package/dist/chunks/{chunk-AF7LASZ3.js → chunk-PYZ4PPIR.js} +1 -1
- package/dist/chunks/{chunk-BM3FXMTK.js → chunk-QNUIT5G4.js} +1 -1
- package/dist/chunks/chunk-QWTKV7Q4.js +1 -0
- package/dist/chunks/chunk-TURMMMY5.js +878 -0
- package/dist/chunks/chunk-ZLWYMCCW.js +1 -0
- package/dist/chunks/{click-5I5YOSNC.js → click-BIP2KIKK.js} +2 -2
- package/dist/chunks/{computer_action-RTEC7VUX.js → computer_action-W532LBFE.js} +1 -1
- package/dist/chunks/deepseek-Y4NFGKGV.js +2 -0
- package/dist/chunks/{drag-6TRBT2C3.js → drag-XXDYAMBU.js} +1 -1
- package/dist/chunks/explabs-4D3EJOBE.js +2 -0
- package/dist/chunks/{generate_image-4LIDEIYO.js → generate_image-MTPDDZY7.js} +1 -1
- package/dist/chunks/inferx-R7LOBSCS.js +3 -0
- package/dist/chunks/infron-6QUT2E5V.js +2 -0
- package/dist/chunks/{invoke-G5IJ3VPK.js → invoke-VUBKZKFI.js} +2 -2
- package/dist/chunks/{invokeSync-PAOUTNOW.js → invokeSync-EJMZYWUM.js} +2 -2
- package/dist/chunks/{key_press-Z3OXF74E.js → key_press-EJFHIVWP.js} +1 -1
- package/dist/chunks/{keyboard_typing-F2SAZLI2.js → keyboard_typing-4M63JGZ4.js} +1 -1
- package/dist/chunks/mistral-7PATNJTO.js +2 -0
- package/dist/chunks/{model_config-M24OEKJE.js → model_config-YD5AWI33.js} +1 -1
- package/dist/chunks/nvidia-FORTI2DZ.js +2 -0
- package/dist/chunks/ollama-ZPTZJK7V.js +2 -0
- package/dist/chunks/openrouter-M3ZZMDXU.js +2 -0
- package/dist/chunks/poolside-IS5XCHAE.js +2 -0
- package/dist/chunks/{screen_grid-RAKJUJQA.js → screen_grid-BK5KF7MP.js} +1 -1
- package/dist/chunks/{scroll-7JYRU34H.js → scroll-5V7P3DXY.js} +1 -1
- package/dist/chunks/search_keyword-7WJ4M737.js +6 -0
- package/dist/chunks/{secrets-LPVNWDTB.js → secrets-4GLUJF7A.js} +1 -1
- package/dist/chunks/sensenova-AJZGPQZ5.js +2 -0
- package/dist/chunks/{settings-KKYNW25D.js → settings-RB45GKVI.js} +1 -1
- package/dist/chunks/tokenharbor-3ZMTIJ2M.js +2 -0
- package/dist/chunks/{update_file-KNEQRJAG.js → update_file-FUWOJ4JN.js} +1 -1
- package/dist/chunks/{usage-VLICZGBC.js → usage-DWONGEYS.js} +1 -1
- package/dist/chunks/usageServer-AXINXVIN.js +1 -0
- package/dist/chunks/{write_file-7X2GQFWK.js → write_file-HH7WRRDJ.js} +1 -1
- package/dist/cli.js +3 -3
- package/dist/model_config.json +7 -6
- package/dist/package.json +1 -1
- package/model_config.json +7 -6
- package/package.json +1 -1
- package/dist/chunks/ai-OPCGIZAK.js +0 -1
- package/dist/chunks/chunk-3CZWTXIR.js +0 -1
- package/dist/chunks/chunk-GRQ7JZZP.js +0 -1
- package/dist/chunks/chunk-OSDQRSY6.js +0 -1
- package/dist/chunks/chunk-SXRQ4ACF.js +0 -904
- package/dist/chunks/search_keyword-CSRQFPHQ.js +0 -6
- package/dist/chunks/usageServer-HY4ME2BW.js +0 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<a href="https://github.com/KushalRoyChowdhury/fluxflow-cli"><img src="https://img.shields.io/badge/FluxFlow-v4-blue?style=plastic" alt="FluxFlow Version"></a>
|
|
6
6
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=plastic" alt="License MIT"></a>
|
|
7
7
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-%3E%3D22-green?style=plastic" alt="Node Compatibility"></a>
|
|
8
|
-
</p>
|
|
8
|
+
</p>
|
|
9
9
|
|
|
10
10
|
### One of the lightest, fastest, high-fidelity agentic CLI with sub-agents & computer use.
|
|
11
11
|
#### *Only ~550 tokens total system prompt with tools.*
|
|
@@ -31,7 +31,7 @@ fluxflow-cli
|
|
|
31
31
|
*The agent will prompt you for your API Key on the first run and store it securely in an encrypted vault.*
|
|
32
32
|
|
|
33
33
|
- **Multi-Provider Support**: Choose your preferred engine!
|
|
34
|
-
- **
|
|
34
|
+
- **Gemini**
|
|
35
35
|
- **DeepSeek**
|
|
36
36
|
- **NVIDIA**
|
|
37
37
|
- **Ollama**
|
|
@@ -42,6 +42,7 @@ fluxflow-cli
|
|
|
42
42
|
- **Poolside**
|
|
43
43
|
- **Token Harbor**
|
|
44
44
|
- **APInex**
|
|
45
|
+
- **Infron**
|
|
45
46
|
- **Experimental Labs** (*Experimental*)
|
|
46
47
|
- **9Router** (*Experimental*)
|
|
47
48
|
- **AIHubMix** (*Experimental*)
|
|
@@ -122,7 +123,7 @@ fluxflow [options]
|
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
### Supported Flags:
|
|
125
|
-
|
|
126
|
+
- `--model <model-name>`: Temporary override for the active AI model (e.g., `gemini-3.7-flash`). Keeps settings file untouched.
|
|
126
127
|
- `--cwd <path>`: Set the working directory for the session (relative or absolute path).
|
|
127
128
|
- `--path <path>`: Alias for `--cwd`. Set the working directory for the session.
|
|
128
129
|
- `--memory <on | off>`: Toggle persistent long-term agent memory for the session. [Legacy. Deprecated]
|
|
@@ -132,10 +133,20 @@ fluxflow [options]
|
|
|
132
133
|
- `--auto-del <1d | 7d | 30d>`: Set automated chat log deletion schedule.
|
|
133
134
|
- `--yolo <on | off>`: Toggle autonomous execution permission.
|
|
134
135
|
- `--external-access <on | off>`: Toggle permission to let agent read files outside CWD.
|
|
135
|
-
- `--thinking <
|
|
136
|
+
- `--thinking <Low | Medium/Standard | High>`: Override thinking level for reasoning depth.
|
|
136
137
|
- `--key <key@google | key@deepseek | key@openrouter>`: Set API key and provider.
|
|
137
138
|
- `--provider <google | deepseek | openrouter>`: Override default provider.
|
|
138
|
-
- `--usage`: Launches the usage dashboard in your browser
|
|
139
|
+
- `--usage`: Launches the usage dashboard in your browser
|
|
140
|
+
- `--mode <flux | flow | icu | omni>`: Set startup mode (Agent / Chat / Computer Use / Sentient being).
|
|
141
|
+
- `--allocation <mb>`: Override Node.js max-old-space-size in MB (default: auto).
|
|
142
|
+
- `--auto-exec <on | off>`: Toggle permission for autonomous command execution (same as `--yolo`).
|
|
143
|
+
- `-p, --prompt <text> [-n | --new]`: One-shot non-TUI answer (`-n` to start fresh conversation).
|
|
144
|
+
- `-r, --run <command>`: Execute shell command and pass output as context to `-p`/`--prompt`.
|
|
145
|
+
- `-v, --version`: Show installed version.
|
|
146
|
+
- `--help`: Show this help menu.
|
|
147
|
+
- `--help commands`: Show available `/commands`.
|
|
148
|
+
- `--playground`: Launch in Playground mode (fixed session, CWD: `DATA_DIR/playground`).
|
|
149
|
+
- `--export error`: Export system error logs to `fluxflow-error-<timestamp>.txt`.
|
|
139
150
|
|
|
140
151
|
----
|
|
141
152
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as N}from"./chunk-NL4MAQSB.js";import{a as D}from"./chunk-JS5ZIGFR.js";import"./chunk-DSVLWYIT.js";var I=async function*(h,m,b,E,p,v,M,O,U=1){let _=[];E&&_.push({role:"system",content:E});for(let r of b){let T=r.role==="user"?"user":"assistant",e=[];if(Array.isArray(r.parts)){for(let o of r.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&M){let i=o.inlineData.mimeType,c=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${c}`}})}}else{let o=r.text||"";o&&e.push({type:"text",text:o})}_.push({role:T,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let y=D("9router",m,p)||D("9Router",m,p),k=y!==null?y:{Fast:"none",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[p],R={model:m,messages:_,stream:!0,stream_options:{include_usage:!0},temperature:U,tools:[],tool_choice:"none"};k&&k!=="none"&&(y!==null||p!=="Fast")&&(R.reasoning_effort=k);let A=process.env["9ROUTER_URL"]||process.env.NINEROUTER_URL||"http://127.0.0.1:20128/v1/chat/completions",C={"Content-Type":"application/json"},S=h&&h!=="LOCAL"?h:process.env.NINEROUTER_KEY||"dummy-key";C.Authorization=`Bearer ${S}`;let l=await N(A,{method:"POST",headers:C,body:JSON.stringify(R),signal:O});if(!l.ok){let r=await l.json().catch(()=>({}));throw new Error(`9router Error (${l.status}): ${r.error?.message||l.statusText}`)}let $=l.body.getReader(),j=new TextDecoder,x="",t=[],u=null,d=Date.now(),a=!1;for(;;){let{done:r,value:T}=await $.read();if(r){a&&(t.length>0||u)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:u});break}x+=j.decode(T,{stream:!0});let e=x.split(`
|
|
2
|
+
`);x=e.pop();for(let o of e){let i=o.trim();if(!i||!i.startsWith("data: "))continue;let c=!1;if(i==="data: [DONE]")c=!0;else try{let f=JSON.parse(i.substring(6)),n=f.choices?.[0]?.delta,s=f.usage;if(f.choices?.[0]?.finish_reason&&(c=!0),s&&(u={totalTokenCount:s.total_tokens||(s.prompt_tokens||0)+(s.completion_tokens||0),promptTokenCount:s.prompt_tokens||0,candidatesTokenCount:s.completion_tokens||0,cachedContentTokenCount:s.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:s.completion_tokens_details?.reasoning_tokens||s.reasoning_tokens||0},a=!0),n){let g=n.reasoning_content||n.reasoning||n.thinking||null;!g&&Array.isArray(n.reasoning_details)&&n.reasoning_details.length>0&&(g=n.reasoning_details.map(w=>typeof w=="string"?w:w?.text||"").filter(Boolean).join("")),g&&(t.push({text:g,thought:!0}),a=!0),n.content&&(t.push({text:n.content}),a=!0)}}catch{}if((c||Date.now()-d>=150)&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:u},t=[],d=Date.now(),a=!1),c)break}Date.now()-d>=150&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:u},t=[],d=Date.now(),a=!1)}};export{I as getNineRouterStream};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as s,B as t,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-TURMMMY5.js";import"./chunk-JS5ZIGFR.js";import"./chunk-56EJGQU3.js";import"./chunk-7SFAWGE2.js";import"./chunk-U2NRX2PX.js";import"./chunk-VYTQ6J56.js";import"./chunk-RZTZPIC5.js";import"./chunk-6NWU3ML6.js";import"./chunk-FQBBOFNP.js";import"./chunk-Y5JU726N.js";import"./chunk-HM3CMNOJ.js";import"./chunk-LKJUPSJM.js";import"./chunk-ZLWYMCCW.js";import{k as a}from"./chunk-QWTKV7Q4.js";import"./chunk-L3W2X74K.js";import"./chunk-DSVLWYIT.js";export{c as RE_LEADING_THINK,q as compressHistory,b as convertChannelThinkTags,r as deleteChatSummary,e as findGenuineThinkClose,p as generateSimpleContent,s as getAIStream,j as getCleanGroupedLength,m as getGoogleClient,f as getLeadingThinkBlock,o as initAI,d as isInsideBacktick,a as isModelMultimodal,l as isTerminationSignaled,n as runJanitorTask,t as runSubagent,k as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags,i as stripTrailingFluffAfterTools};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as b}from"./chunk-NL4MAQSB.js";import{a as T}from"./chunk-JS5ZIGFR.js";import"./chunk-DSVLWYIT.js";var P=async function*(M,g,C,_,k,I,A,E,H=1){let d=[];_&&d.push({role:"system",content:_});for(let s of C){let m=s.role==="user"?"user":"assistant",e=[];if(Array.isArray(s.parts)){for(let o of s.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&A){let i=o.inlineData.mimeType,r=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${r}`}})}}else{let o=s.text||"";o&&e.push({type:"text",text:o})}d.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let x=T("AIHubMix",g,k),y=x!==null?x:{Fast:"minimal",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[k],w={model:g,messages:d,stream:!0,stream_options:{include_usage:!0},temperature:H,tools:[],tool_choice:"none"};y&&(w.reasoning_effort=y);let c=await b("https://aihubmix.com/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(w),signal:E});if(!c.ok){let s=await c.json().catch(()=>({}));throw new Error(`AIHubMix Error (${c.status}): ${s.error?.message||c.statusText}`)}let S=c.body.getReader(),$=new TextDecoder,h="",t=[],l=null,f=Date.now(),a=!1;for(;;){let{done:s,value:m}=await S.read();if(s){a&&(t.length>0||l)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:l});break}h+=$.decode(m,{stream:!0});let e=h.split(`
|
|
2
|
+
`);h=e.pop();for(let o of e){let i=o.trim();if(!i||!i.startsWith("data: "))continue;let r=!1;if(i==="data: [DONE]")r=!0;else try{let u=JSON.parse(i.substring(6)),p=u.choices?.[0]?.delta,n=u.usage;if(u.choices?.[0]?.finish_reason&&(r=!0),n&&(l={totalTokenCount:n.total_tokens||(n.prompt_tokens||0)+(n.completion_tokens||0),promptTokenCount:n.prompt_tokens||0,candidatesTokenCount:n.completion_tokens||0,cachedContentTokenCount:n.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:n.completion_tokens_details?.reasoning_tokens||n.reasoning_tokens||0},a=!0),p){let D=p.reasoning_content||null;D&&(t.push({text:D,thought:!0}),a=!0),p.content&&(t.push({text:p.content}),a=!0)}}catch{}if((r||Date.now()-f>=150)&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:l},t=[],f=Date.now(),a=!1),r)break}Date.now()-f>=150&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:l},t=[],f=Date.now(),a=!1)}};export{P as getAIHubMixStream};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as P}from"./chunk-NL4MAQSB.js";import{a as A}from"./chunk-JS5ZIGFR.js";import"./chunk-DSVLWYIT.js";var H=async function*(b,_,E,x,y,j,C,M,I=1){let g=[];x&&g.push({role:"system",content:x});for(let o of E){let m=o.role==="user"?"user":"assistant",e=[];if(Array.isArray(o.parts)){for(let n of o.parts)if(n.text)e.push({type:"text",text:n.text});else if(n.inlineData&&C){let i=n.inlineData.mimeType,p=n.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${p}`}})}}else{let n=o.text||"";n&&e.push({type:"text",text:n})}g.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let k=A("APInex",_,y),w=k!==null?k:{Fast:"low",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[y],T={model:_,messages:g,stream:!0,stream_options:{include_usage:!0},temperature:I,tools:[],tool_choice:"none"};w&&(T.reasoning_effort=w);let F=process.env.APINEX_URL||"https://api.apinex.bond/v1/chat/completions",D={"Content-Type":"application/json","X-Title":"Flux-Flow","User-Agent":"Flux-Flow","HTTP-Referer":"https://fluxflow-cli.onrender.com/"},N=b||process.env.APINEX_API_KEY||"";D.Authorization=`Bearer ${N}`;let l=await P(F,{method:"POST",headers:D,body:JSON.stringify(T),signal:M});if(!l.ok){let o=await l.json().catch(()=>({}));throw new Error(`APInex Error (${l.status}): ${o.error?.message||o.message||l.statusText}`)}let v=l.body.getReader(),S=new TextDecoder,h="",t=[],c=null,u=Date.now(),s=!1;for(;;){let{done:o,value:m}=await v.read();if(o){s&&(t.length>0||c)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:c});break}h+=S.decode(m,{stream:!0});let e=h.split(`
|
|
2
|
+
`);h=e.pop();for(let n of e){let i=n.trim();if(!i||!i.startsWith("data: "))continue;let p=!1;if(i==="data: [DONE]")p=!0;else try{let d=JSON.parse(i.substring(6)),r=d.choices?.[0]?.delta,a=d.usage;if(a&&(c={totalTokenCount:a.total_tokens||(a.prompt_tokens||0)+(a.completion_tokens||0),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||a.reasoning_tokens||0},s=!0),r){let f=r.reasoning_content||r.reasoning||null;!f&&Array.isArray(r.reasoning_details)&&r.reasoning_details.length>0&&(f=r.reasoning_details.map($=>$.text||"").filter(Boolean).join("")),f&&(t.push({text:f,thought:!0}),s=!0),r.content&&(t.push({text:r.content}),s=!0)}}catch{}if((p||Date.now()-u>=150)&&s&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:c},t=[],u=Date.now(),s=!1),p)break}Date.now()-u>=150&&s&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:c},t=[],u=Date.now(),s=!1)}};export{H as getAPInexStream};
|