fluxflow-cli 4.1.4 → 4.2.1
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 +2 -1
- package/dist/chunks/{ai-M2MAGATC.js → ai-MC4CJBDZ.js} +1 -1
- package/dist/chunks/{app-NQODWWNA.js → app-PUYLL35V.js} +143 -143
- package/dist/chunks/{chunk-K4FITEVZ.js → chunk-3JHCQ2JD.js} +1 -1
- package/dist/chunks/{chunk-BZBAMZS4.js → chunk-6ENN7MJR.js} +1 -1
- package/dist/chunks/{chunk-CQ2U3S2O.js → chunk-DYJCMXDO.js} +244 -243
- package/dist/chunks/chunk-M7QN5C2K.js +1 -0
- package/dist/chunks/{screen_grid-IKEV7A6U.js → screen_grid-Y6GHBUFE.js} +1 -1
- package/dist/chunks/{secrets-D5HMTNJA.js → secrets-ITIOWL5R.js} +1 -1
- package/dist/chunks/{settings-XPFFYYYD.js → settings-REIFJELQ.js} +1 -1
- package/dist/cli.js +5 -5
- package/dist/model_config.json +62 -3
- package/dist/package.json +82 -82
- package/model_config.json +62 -3
- package/package.json +82 -82
- package/dist/chunks/chunk-ZESOEAQT.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as r,d as a}from"./chunk-SIINYZWE.js";import{e as c}from"./chunk-I27MASHH.js";import I from"fs-extra";import A from"path";var s=A.join(c,"secrets.json"),u=async()=>{try{let e=r(s,{});if(e.API_KEY)return e.API_KEY}catch{}return null},f=async e=>{try{let t=r(s,{});if(e==="Google")return t.GOOGLE_API_KEY||t.API_KEY||null;if(e==="DeepSeek")return t.DEEPSEEK_API_KEY||null;if(e==="OpenRouter")return t.OPENROUTER_API_KEY||null;if(e==="Mistral")return t.MISTRAL_API_KEY||null;if(e==="NVIDIA")return t.NVIDIA_API_KEY||null;if(e==="Ollama")return t.OLLAMA_API_KEY||"LOCAL";if(e==="CrofAI"||e==="Crof")return t.CROFAI_API_KEY||null}catch{}return null},Y=async(e,t)=>{e==="Google"?(await n("GOOGLE_API_KEY",t),await n("API_KEY",t)):e==="DeepSeek"?await n("DEEPSEEK_API_KEY",t):e==="OpenRouter"?await n("OPENROUTER_API_KEY",t):e==="Mistral"?await n("MISTRAL_API_KEY",t):e==="NVIDIA"?await n("NVIDIA_API_KEY",t):e==="Ollama"?await n("OLLAMA_API_KEY",t):(e==="CrofAI"||e==="Crof")&&await n("CROFAI_API_KEY",t)},i=async e=>{try{return r(s,{})[e]||null}catch{return null}},n=async(e,t)=>{await I.ensureDir(c);let E=r(s,{});E[e]=t,a(s,E)},O=async()=>{try{let e=r(s,{});return{key:e.GOOGLE_API_KEY||e.API_KEY,cx:e.SEARCH_ID}}catch{}return{key:null,cx:null}},y=async e=>n("API_KEY",e),S=async e=>n("GOOGLE_API_KEY",e),R=async e=>n("SEARCH_ID",e),_=async e=>{try{let t=r(s,{});delete t[e],a(s,t)}catch{}},x=async()=>_("API_KEY");export{u as a,f as b,Y as c,i as d,n as e,O as f,y as g,S as h,R as i,_ as j,x as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-3JHCQ2JD.js";export{a as GRID_CONFIG,c as captureGriddedScreenshot,b as getActiveDisplay,e as gridToNativeCoordinates,d as parseGridCodeTo720p};
|
|
@@ -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-M7QN5C2K.js";import"./chunk-SIINYZWE.js";import"./chunk-I27MASHH.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{h as a,i as b}from"./chunk-
|
|
1
|
+
import{h as a,i as b}from"./chunk-6ENN7MJR.js";import"./chunk-SIINYZWE.js";import"./chunk-I27MASHH.js";export{a as loadSettings,b as saveSettings};
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{spawn as
|
|
2
|
+
import{spawn as re}from"child_process";import{fileURLToPath as L}from"url";import ne from"os";import O from"dotenv";O.config({quiet:!0});O.config({path:"./fluxflow.env",override:!0,quiet:!0});var ie=ne.totalmem(),R=ie/(1024*1024),le=.5,ce=Math.floor(R*le),D=process.argv.slice(2),N=D.indexOf("--allocation"),a=N!==-1?parseInt(D[N+1],10):NaN;!isNaN(a)&&a<64&&(console.error(`
|
|
3
3
|
[ERROR] Allocation value '${a} MB' is too low. Minimum: 64 MB, Recommended: 4096 MB.
|
|
4
|
-
`),process.exit(1));var w=Math.floor(
|
|
5
|
-
[MEMORY] Starting with: '${a>w?w:a} MB' Allocation${a>w?" (Max allowed: '"+w+" MB')":""}. Please Wait...`),await new Promise(l=>setTimeout(l,5e3))),
|
|
4
|
+
`),process.exit(1));var w=Math.floor(R*.75),me=!isNaN(a)&&a>0?Math.min(a,w):Math.max(1536,Math.min(32768,ce)),ue=L(import.meta.url).endsWith(".js");if(ue&&!process.execArgv.some(o=>o.includes("max-old-space-size")))Number.isNaN(a)||(console.log(`
|
|
5
|
+
[MEMORY] Starting with: '${a>w?w:a} MB' Allocation${a>w?" (Max allowed: '"+w+" MB')":""}. Please Wait...`),await new Promise(l=>setTimeout(l,5e3))),re(process.execPath,[`--max-old-space-size=${me}`,"--expose-gc","--max-semi-space-size=1",L(import.meta.url),...process.argv.slice(2)],{stdio:"inherit"}).on("exit",l=>process.exit(l||0));else{let o=process.argv.slice(2),l=o.includes("--help")&&o[o.indexOf("--help")+1]==="commands",M=o.includes("--help")&&!l,T=o.includes("--version")||o.includes("-v"),A=o[0]==="--update",P=o[0]==="--export";if(T||M||l||A||P){let t=await import("fs"),p=await import("path"),{fileURLToPath:g}=await import("url"),C=p.join(p.dirname(g(import.meta.url)),"../package.json"),c=JSON.parse(t.readFileSync(C,"utf8")).version;if(P){let f=(o[1]||"").toLowerCase();if(f==="error"||f==="logs")try{let{exportErrorLogs:r}=await import("./chunks/export-NRMLNZUN.js"),n=await r();console.log(`[EXPORT LOGS] Exported ${n.entryCount} error log entries (FluxFlow: ${n.fluxflowCount}, Memory: ${n.memoryCount}) to "${n.exportFile}"`),process.exit(0)}catch(r){console.error(`[EXPORT ERROR] Failed to export error logs: ${r.message}`),process.exit(1)}else console.error(`[EXPORT ERROR] Invalid export target "${o[1]||""}". --export only supports 'error'.
|
|
6
6
|
Usage: fluxflow --export error`),process.exit(1)}if(T&&(console.log(`v${c}`),process.exit(0)),M&&(console.log(`FluxFlow CLI Arguments:
|
|
7
7
|
--mode <flux|flow> Set startup mode (flux: Agent / flow: Chat)
|
|
8
8
|
--model <model_name> Set startup AI model
|
|
9
9
|
--key <key@provider> Set API key and provider
|
|
10
|
-
--provider <google|deepseek|openrouter> Override default provider
|
|
10
|
+
--provider <google|deepseek|openrouter|nvidia|mistral|ollama|crofai> Override default provider
|
|
11
11
|
--thinking <Fast|Low|Medium|High|xHigh> Set startup thinking level
|
|
12
12
|
--memory <on|off> Toggle memory system
|
|
13
13
|
--resume <session_id> Resume a previous session
|
|
@@ -55,4 +55,4 @@ Usage: fluxflow --export error`),process.exit(1)}if(T&&(console.log(`v${c}`),pro
|
|
|
55
55
|
/docs View documentation
|
|
56
56
|
/fluxflow init Create FluxFlow.md template
|
|
57
57
|
/update check Check for new version
|
|
58
|
-
/update latest Install latest release`),process.exit(0)),A){let f=o[1]||"latest";if(f==="check"){let r=o[2]==="latest";try{let d=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;d||(console.error("Error: Could not retrieve latest version."),process.exit(1)),console.log(r?`Latest version: v${d}`:d!==c?`A new version of FluxFlow is available: v${d} (current: v${c}). Run "fluxflow --update latest" to upgrade.`:`FluxFlow is up to date (v${c}).`)}catch(n){console.error("Error checking for updates:",n.message),process.exit(1)}process.exit(0)}else if(f==="latest"){console.log("Checking latest version and settings...");try{let s=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;s||(console.error("Error: Could not retrieve latest version."),process.exit(1)),s===c&&(console.log(`FluxFlow is already up to date (v${c}).`),process.exit(0));let d=async()=>{let e=(await import("react")).default,{useState:$}=e,{render:
|
|
58
|
+
/update latest Install latest release`),process.exit(0)),A){let f=o[1]||"latest";if(f==="check"){let r=o[2]==="latest";try{let d=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;d||(console.error("Error: Could not retrieve latest version."),process.exit(1)),console.log(r?`Latest version: v${d}`:d!==c?`A new version of FluxFlow is available: v${d} (current: v${c}). Run "fluxflow --update latest" to upgrade.`:`FluxFlow is up to date (v${c}).`)}catch(n){console.error("Error checking for updates:",n.message),process.exit(1)}process.exit(0)}else if(f==="latest"){console.log("Checking latest version and settings...");try{let s=(await(await fetch("https://registry.npmjs.org/fluxflow-cli",{cache:"no-store"})).json())["dist-tags"]?.latest;s||(console.error("Error: Could not retrieve latest version."),process.exit(1)),s===c&&(console.log(`FluxFlow is already up to date (v${c}).`),process.exit(0));let d=async()=>{let e=(await import("react")).default,{useState:$}=e,{render:G,Box:u,Text:x}=await import("ink"),J=(await import("ink-select-input")).default,q=(await import("ink-text-input")).default;return new Promise(X=>{let K=[{label:"NPM",value:"npm"},{label:"PNPM",value:"pnpm"},{label:"Yarn",value:"yarn"},{label:"Bun",value:"bun"},{label:"Custom Command",value:"custom"}],Q=({label:h,isSelected:y})=>e.createElement(u,{width:"100%"},e.createElement(x,{bold:y},"\u2514\u2500 ",y?"\x1B[32m\u25CF\x1B[0m":"\u25CB"," ",h)),F,Z=()=>{let[h,y]=$("select"),[oe,te]=$(""),se=b=>{b.value==="custom"?y("custom"):B({manager:b.value})},ae=b=>{B({manager:"custom",customCommand:b})};return h==="custom"?e.createElement(u,{flexDirection:"column",marginY:1},e.createElement(u,{marginBottom:1},e.createElement(x,{color:"magenta",bold:!0},"\u{1F527} Enter custom update command:")),e.createElement(u,{flexDirection:"row"},e.createElement(x,{color:"cyan",bold:!0}," \u276F "),e.createElement(q,{value:oe,onChange:te,onSubmit:ae})),e.createElement(u,{marginTop:1},e.createElement(x,{color:"gray",dimColor:!0,italic:!0}," (Press Enter to confirm)"))):e.createElement(u,{flexDirection:"column",marginY:1},e.createElement(u,{marginBottom:1},e.createElement(x,{color:"magenta",bold:!0},"\u{1F4E6} Select a package manager for the update:")),e.createElement(J,{items:K,onSelect:se,itemComponent:Q,indicatorComponent:()=>null}))},B=h=>{F&&F(),X(h)},{unmount:ee}=G(e.createElement(Z,null));F=ee})},i,I="",v;try{let{loadSettings:e}=await import("./chunks/settings-REIFJELQ.js");v=await e(),i=v?.systemSettings?.updateManager||v?.updateManager}catch{}if(!i){let e=await d();i=e.manager,I=e.customCommand}let m="";i==="pnpm"?m=`pnpm add -g fluxflow-cli@${s}`:i==="bun"?m=`bun add -g fluxflow-cli@${s}`:i==="yarn"?m=`yarn global add fluxflow-cli@${s}`:i==="custom"?m=I||v?.customUpdateCommand||`npm install -g fluxflow-cli@${s}`:m=`npm install -g fluxflow-cli@${s}`,console.log(`Updating FluxFlow to v${s} using ${i}...`),console.log(`Running: ${m}`);let{execSync:z}=await import("child_process");z(m,{stdio:"inherit"}),console.log(`\x1B[32m\u2705 Update successful! FluxFlow updated to v${s}.\x1B[0m`)}catch(r){console.error("\x1B[31m\u274C Update failed:\x1B[0m",r.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:U}=await import("react"),{render:_}=await import("ink"),{default:j}=await import("./chunks/app-PUYLL35V.js");process.env.NODE_NO_WARNINGS="1";let H=["cuimp","Found existing binary","Binary verified","curl.exe not found","Falling back to .bat file","DeprecationWarning"],W=console.log,V=console.warn,Y=console.error,S=t=>{let p=t.map(String).join(" ");return H.some(g=>p.includes(g))};console.log=(...t)=>!S(t)&&W(...t),console.warn=(...t)=>!S(t)&&V(...t),console.error=(...t)=>!S(t)&&Y(...t),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 E=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?2004l")};if(process.on("exit",E),["SIGINT","SIGTERM","SIGHUP"].forEach(t=>{process.once(t,()=>{E(),process.exit(0)})}),o.includes("--playground")){let t=process.cwd();process.argv.push("--original-cwd",t);let{DATA_DIR:p}=await import("./chunks/paths-R3DD7CRF.js"),g=await import("path"),C=await import("fs-extra"),k=g.default.join(p,"playground");try{C.default.ensureDirSync(k),process.chdir(k)}catch{}}_(U.createElement(j,{args:process.argv.slice(2)}),{exitOnCtrlC:!1})}
|
package/dist/model_config.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
3
|
-
"release":
|
|
2
|
+
"version": 1,
|
|
3
|
+
"release": 20260817,
|
|
4
4
|
"fallbacks": {
|
|
5
5
|
"janitor_default": "gemini-3.1-flash-lite",
|
|
6
6
|
"janitor_attempts_fallback": "gemma-4-26b-a4b-it",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"nvidia_janitor_fallback": "mistralai/mistral-nemotron",
|
|
15
15
|
"nvidia_chat_summarizer_fallback": "nvidia/nemotron-3-super-120b-a12b",
|
|
16
16
|
"google_level_1": "gemini-3-flash-preview",
|
|
17
|
-
"google_level_2": "gemini-3.
|
|
17
|
+
"google_level_2": "gemini-3.7-flash",
|
|
18
18
|
"gemma_emergency": "gemma-4-31b-it",
|
|
19
19
|
"gemma_janitor_fallback_google_openrouter": "google/gemma-4-26b-a4b-it:free",
|
|
20
20
|
"gemma_janitor_fallback_google": "gemma-4-26b-a4b-it"
|
|
@@ -49,6 +49,65 @@
|
|
|
49
49
|
"Paid": []
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
+
"CrofAI": {
|
|
53
|
+
"default_free": "deepseek-v4-flash-0731",
|
|
54
|
+
"default_paid": "deepseek-v4-flash-0731",
|
|
55
|
+
"models": {
|
|
56
|
+
"Free": [
|
|
57
|
+
{
|
|
58
|
+
"cmd": "deepseek-v4-pro-0813",
|
|
59
|
+
"multimodal": false,
|
|
60
|
+
"desc": "Text Only"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"cmd": "deepseek-v4-flash-0731",
|
|
64
|
+
"multimodal": false,
|
|
65
|
+
"desc": "Text Only"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"cmd": "kimi-k3-eco",
|
|
69
|
+
"multimodal": false,
|
|
70
|
+
"desc": "Text Only"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"cmd": "kimi-k2.6",
|
|
74
|
+
"multimodal": true,
|
|
75
|
+
"desc": "Multimodal"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"cmd": "glm-5.2",
|
|
79
|
+
"multimodal": false,
|
|
80
|
+
"desc": "Text Only"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"cmd": "gemma-4-31b-it",
|
|
84
|
+
"multimodal": true,
|
|
85
|
+
"desc": "Multimodal"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"cmd": "qwen3.6-27b",
|
|
89
|
+
"multimodal": true,
|
|
90
|
+
"desc": "Multimodal"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"cmd": "qwen3.5-397b-a17b",
|
|
94
|
+
"multimodal": true,
|
|
95
|
+
"desc": "Multimodal"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"cmd": "qwen3.5-9b",
|
|
99
|
+
"multimodal": true,
|
|
100
|
+
"desc": "Multimodal"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"cmd": "greg-1-mini",
|
|
104
|
+
"multimodal": true,
|
|
105
|
+
"desc": "Multimodal"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"Paid": []
|
|
109
|
+
}
|
|
110
|
+
},
|
|
52
111
|
"Mistral": {
|
|
53
112
|
"default_free": "mistral-small-2506",
|
|
54
113
|
"default_paid": "devstral-2512",
|
package/dist/package.json
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fluxflow-cli",
|
|
3
|
-
"version": "4.1
|
|
4
|
-
"date": "2026-08-
|
|
5
|
-
"description": "A High-Fidelity Agentic CLI with Sub-Agents for the Flux Era.",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"ai",
|
|
8
|
-
"agent",
|
|
9
|
-
"terminal",
|
|
10
|
-
"cli",
|
|
11
|
-
"gemini",
|
|
12
|
-
"ink",
|
|
13
|
-
"flux",
|
|
14
|
-
"fluxflow"
|
|
15
|
-
],
|
|
16
|
-
"license": "MIT",
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/KushalRoyChowdhury/fluxflow-cli.git"
|
|
20
|
-
},
|
|
21
|
-
"engines": {
|
|
22
|
-
"node": ">=22.0.0",
|
|
23
|
-
"vscode": "^1.90.0"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"dist",
|
|
27
|
-
"README.md",
|
|
28
|
-
"package.json",
|
|
29
|
-
"ARCHITECTURE.md",
|
|
30
|
-
"TOOLS.md",
|
|
31
|
-
"UI_FEATURES.md",
|
|
32
|
-
"cat.txt",
|
|
33
|
-
".puppeteerrc.cjs",
|
|
34
|
-
"flux-flow.cjs",
|
|
35
|
-
"model_config.json"
|
|
36
|
-
],
|
|
37
|
-
"type": "module",
|
|
38
|
-
"bin": {
|
|
39
|
-
"fluxflow-cli": "dist/cli.js",
|
|
40
|
-
"fluxflow": "dist/entry.js"
|
|
41
|
-
},
|
|
42
|
-
"scripts": {
|
|
43
|
-
"start": "tsx ./src/cli.jsx",
|
|
44
|
-
"build": "esbuild ./src/cli.jsx --bundle --platform=node --format=esm --splitting --minify --tree-shaking=true --chunk-names=chunks/[name]-[hash] --outdir=./dist --external:react --external:ink --external:chalk --external:fs-extra --external:gradient-string --external:ink-text-input --external:ink-select-input --external:ink-spinner --external:@google/genai --external:zod --external:nanoid --external:puppeteer --external:pdf-lib --external:node-pty --external:html-to-docx --external:typescript --external:ws --external:web-tree-sitter --external:diff --external:dotenv --external:fast-glob --external:turndown --external:turndown-plugin-gfm --external:@nut-tree-fork/nut-js --external:sharp --external:screenshot-desktop --external:tesseract.js --external:ollama --external:minimatch && copy package.json dist\\package.json && copy src\\entry.js dist\\entry.js && copy model_config.json dist\\model_config.json"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@google/genai": "^1.52.0",
|
|
48
|
-
"@nut-tree-fork/nut-js": "^4.2.6",
|
|
49
|
-
"chalk": "^5.6.2",
|
|
50
|
-
"diff": "^9.0.0",
|
|
51
|
-
"dotenv": "^17.4.2",
|
|
52
|
-
"fast-glob": "^3.3.3",
|
|
53
|
-
"fs-extra": "^11.3.4",
|
|
54
|
-
"gradient-string": "^3.0.0",
|
|
55
|
-
"html-to-docx": "^1.8.0",
|
|
56
|
-
"ink": "^7.0.1",
|
|
57
|
-
"ink-gradient": "^4.0.1",
|
|
58
|
-
"ink-select-input": "^6.2.0",
|
|
59
|
-
"ink-spinner": "^5.0.0",
|
|
60
|
-
"ink-text-input": "^6.0.0",
|
|
61
|
-
"minimatch": "^10.2.6",
|
|
62
|
-
"nanoid": "^5.1.9",
|
|
63
|
-
"node-pty": "^1.1.0",
|
|
64
|
-
"ollama": "^0.6.3",
|
|
65
|
-
"pdf-lib": "^1.17.1",
|
|
66
|
-
"puppeteer": "24.43.1",
|
|
67
|
-
"react": "^19.2.5",
|
|
68
|
-
"screenshot-desktop": "^1.15.4",
|
|
69
|
-
"sharp": "^0.35.3",
|
|
70
|
-
"tesseract.js": "^7.0.0",
|
|
71
|
-
"turndown": "^7.2.4",
|
|
72
|
-
"turndown-plugin-gfm": "^1.0.2",
|
|
73
|
-
"web-tree-sitter": "^0.25.10",
|
|
74
|
-
"ws": "^8.21.0",
|
|
75
|
-
"zod": "^4.3.6"
|
|
76
|
-
},
|
|
77
|
-
"devDependencies": {
|
|
78
|
-
"@types/react": "^19.2.14",
|
|
79
|
-
"esbuild": "^0.28.0",
|
|
80
|
-
"tsx": "^4.21.0"
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "fluxflow-cli",
|
|
3
|
+
"version": "4.2.1",
|
|
4
|
+
"date": "2026-08-17",
|
|
5
|
+
"description": "A High-Fidelity Agentic CLI with Sub-Agents for the Flux Era.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ai",
|
|
8
|
+
"agent",
|
|
9
|
+
"terminal",
|
|
10
|
+
"cli",
|
|
11
|
+
"gemini",
|
|
12
|
+
"ink",
|
|
13
|
+
"flux",
|
|
14
|
+
"fluxflow"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/KushalRoyChowdhury/fluxflow-cli.git"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=22.0.0",
|
|
23
|
+
"vscode": "^1.90.0"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"package.json",
|
|
29
|
+
"ARCHITECTURE.md",
|
|
30
|
+
"TOOLS.md",
|
|
31
|
+
"UI_FEATURES.md",
|
|
32
|
+
"cat.txt",
|
|
33
|
+
".puppeteerrc.cjs",
|
|
34
|
+
"flux-flow.cjs",
|
|
35
|
+
"model_config.json"
|
|
36
|
+
],
|
|
37
|
+
"type": "module",
|
|
38
|
+
"bin": {
|
|
39
|
+
"fluxflow-cli": "dist/cli.js",
|
|
40
|
+
"fluxflow": "dist/entry.js"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"start": "tsx ./src/cli.jsx",
|
|
44
|
+
"build": "esbuild ./src/cli.jsx --bundle --platform=node --format=esm --splitting --minify --tree-shaking=true --chunk-names=chunks/[name]-[hash] --outdir=./dist --external:react --external:ink --external:chalk --external:fs-extra --external:gradient-string --external:ink-text-input --external:ink-select-input --external:ink-spinner --external:@google/genai --external:zod --external:nanoid --external:puppeteer --external:pdf-lib --external:node-pty --external:html-to-docx --external:typescript --external:ws --external:web-tree-sitter --external:diff --external:dotenv --external:fast-glob --external:turndown --external:turndown-plugin-gfm --external:@nut-tree-fork/nut-js --external:sharp --external:screenshot-desktop --external:tesseract.js --external:ollama --external:minimatch && copy package.json dist\\package.json && copy src\\entry.js dist\\entry.js && copy model_config.json dist\\model_config.json"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@google/genai": "^1.52.0",
|
|
48
|
+
"@nut-tree-fork/nut-js": "^4.2.6",
|
|
49
|
+
"chalk": "^5.6.2",
|
|
50
|
+
"diff": "^9.0.0",
|
|
51
|
+
"dotenv": "^17.4.2",
|
|
52
|
+
"fast-glob": "^3.3.3",
|
|
53
|
+
"fs-extra": "^11.3.4",
|
|
54
|
+
"gradient-string": "^3.0.0",
|
|
55
|
+
"html-to-docx": "^1.8.0",
|
|
56
|
+
"ink": "^7.0.1",
|
|
57
|
+
"ink-gradient": "^4.0.1",
|
|
58
|
+
"ink-select-input": "^6.2.0",
|
|
59
|
+
"ink-spinner": "^5.0.0",
|
|
60
|
+
"ink-text-input": "^6.0.0",
|
|
61
|
+
"minimatch": "^10.2.6",
|
|
62
|
+
"nanoid": "^5.1.9",
|
|
63
|
+
"node-pty": "^1.1.0",
|
|
64
|
+
"ollama": "^0.6.3",
|
|
65
|
+
"pdf-lib": "^1.17.1",
|
|
66
|
+
"puppeteer": "24.43.1",
|
|
67
|
+
"react": "^19.2.5",
|
|
68
|
+
"screenshot-desktop": "^1.15.4",
|
|
69
|
+
"sharp": "^0.35.3",
|
|
70
|
+
"tesseract.js": "^7.0.0",
|
|
71
|
+
"turndown": "^7.2.4",
|
|
72
|
+
"turndown-plugin-gfm": "^1.0.2",
|
|
73
|
+
"web-tree-sitter": "^0.25.10",
|
|
74
|
+
"ws": "^8.21.0",
|
|
75
|
+
"zod": "^4.3.6"
|
|
76
|
+
},
|
|
77
|
+
"devDependencies": {
|
|
78
|
+
"@types/react": "^19.2.14",
|
|
79
|
+
"esbuild": "^0.28.0",
|
|
80
|
+
"tsx": "^4.21.0"
|
|
81
|
+
}
|
|
82
|
+
}
|
package/model_config.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
3
|
-
"release":
|
|
2
|
+
"version": 1,
|
|
3
|
+
"release": 20260817,
|
|
4
4
|
"fallbacks": {
|
|
5
5
|
"janitor_default": "gemini-3.1-flash-lite",
|
|
6
6
|
"janitor_attempts_fallback": "gemma-4-26b-a4b-it",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"nvidia_janitor_fallback": "mistralai/mistral-nemotron",
|
|
15
15
|
"nvidia_chat_summarizer_fallback": "nvidia/nemotron-3-super-120b-a12b",
|
|
16
16
|
"google_level_1": "gemini-3-flash-preview",
|
|
17
|
-
"google_level_2": "gemini-3.
|
|
17
|
+
"google_level_2": "gemini-3.7-flash",
|
|
18
18
|
"gemma_emergency": "gemma-4-31b-it",
|
|
19
19
|
"gemma_janitor_fallback_google_openrouter": "google/gemma-4-26b-a4b-it:free",
|
|
20
20
|
"gemma_janitor_fallback_google": "gemma-4-26b-a4b-it"
|
|
@@ -49,6 +49,65 @@
|
|
|
49
49
|
"Paid": []
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
+
"CrofAI": {
|
|
53
|
+
"default_free": "deepseek-v4-flash-0731",
|
|
54
|
+
"default_paid": "deepseek-v4-flash-0731",
|
|
55
|
+
"models": {
|
|
56
|
+
"Free": [
|
|
57
|
+
{
|
|
58
|
+
"cmd": "deepseek-v4-pro-0813",
|
|
59
|
+
"multimodal": false,
|
|
60
|
+
"desc": "Text Only"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"cmd": "deepseek-v4-flash-0731",
|
|
64
|
+
"multimodal": false,
|
|
65
|
+
"desc": "Text Only"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"cmd": "kimi-k3-eco",
|
|
69
|
+
"multimodal": false,
|
|
70
|
+
"desc": "Text Only"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"cmd": "kimi-k2.6",
|
|
74
|
+
"multimodal": true,
|
|
75
|
+
"desc": "Multimodal"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"cmd": "glm-5.2",
|
|
79
|
+
"multimodal": false,
|
|
80
|
+
"desc": "Text Only"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"cmd": "gemma-4-31b-it",
|
|
84
|
+
"multimodal": true,
|
|
85
|
+
"desc": "Multimodal"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"cmd": "qwen3.6-27b",
|
|
89
|
+
"multimodal": true,
|
|
90
|
+
"desc": "Multimodal"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"cmd": "qwen3.5-397b-a17b",
|
|
94
|
+
"multimodal": true,
|
|
95
|
+
"desc": "Multimodal"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"cmd": "qwen3.5-9b",
|
|
99
|
+
"multimodal": true,
|
|
100
|
+
"desc": "Multimodal"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"cmd": "greg-1-mini",
|
|
104
|
+
"multimodal": true,
|
|
105
|
+
"desc": "Multimodal"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"Paid": []
|
|
109
|
+
}
|
|
110
|
+
},
|
|
52
111
|
"Mistral": {
|
|
53
112
|
"default_free": "mistral-small-2506",
|
|
54
113
|
"default_paid": "devstral-2512",
|
package/package.json
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fluxflow-cli",
|
|
3
|
-
"version": "4.1
|
|
4
|
-
"date": "2026-08-
|
|
5
|
-
"description": "A High-Fidelity Agentic CLI with Sub-Agents for the Flux Era.",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"ai",
|
|
8
|
-
"agent",
|
|
9
|
-
"terminal",
|
|
10
|
-
"cli",
|
|
11
|
-
"gemini",
|
|
12
|
-
"ink",
|
|
13
|
-
"flux",
|
|
14
|
-
"fluxflow"
|
|
15
|
-
],
|
|
16
|
-
"license": "MIT",
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/KushalRoyChowdhury/fluxflow-cli.git"
|
|
20
|
-
},
|
|
21
|
-
"engines": {
|
|
22
|
-
"node": ">=22.0.0",
|
|
23
|
-
"vscode": "^1.90.0"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"dist",
|
|
27
|
-
"README.md",
|
|
28
|
-
"package.json",
|
|
29
|
-
"ARCHITECTURE.md",
|
|
30
|
-
"TOOLS.md",
|
|
31
|
-
"UI_FEATURES.md",
|
|
32
|
-
"cat.txt",
|
|
33
|
-
".puppeteerrc.cjs",
|
|
34
|
-
"flux-flow.cjs",
|
|
35
|
-
"model_config.json"
|
|
36
|
-
],
|
|
37
|
-
"type": "module",
|
|
38
|
-
"bin": {
|
|
39
|
-
"fluxflow-cli": "dist/cli.js",
|
|
40
|
-
"fluxflow": "dist/entry.js"
|
|
41
|
-
},
|
|
42
|
-
"scripts": {
|
|
43
|
-
"start": "tsx ./src/cli.jsx",
|
|
44
|
-
"build": "esbuild ./src/cli.jsx --bundle --platform=node --format=esm --splitting --minify --tree-shaking=true --chunk-names=chunks/[name]-[hash] --outdir=./dist --external:react --external:ink --external:chalk --external:fs-extra --external:gradient-string --external:ink-text-input --external:ink-select-input --external:ink-spinner --external:@google/genai --external:zod --external:nanoid --external:puppeteer --external:pdf-lib --external:node-pty --external:html-to-docx --external:typescript --external:ws --external:web-tree-sitter --external:diff --external:dotenv --external:fast-glob --external:turndown --external:turndown-plugin-gfm --external:@nut-tree-fork/nut-js --external:sharp --external:screenshot-desktop --external:tesseract.js --external:ollama --external:minimatch && copy package.json dist\\package.json && copy src\\entry.js dist\\entry.js && copy model_config.json dist\\model_config.json"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@google/genai": "^1.52.0",
|
|
48
|
-
"@nut-tree-fork/nut-js": "^4.2.6",
|
|
49
|
-
"chalk": "^5.6.2",
|
|
50
|
-
"diff": "^9.0.0",
|
|
51
|
-
"dotenv": "^17.4.2",
|
|
52
|
-
"fast-glob": "^3.3.3",
|
|
53
|
-
"fs-extra": "^11.3.4",
|
|
54
|
-
"gradient-string": "^3.0.0",
|
|
55
|
-
"html-to-docx": "^1.8.0",
|
|
56
|
-
"ink": "^7.0.1",
|
|
57
|
-
"ink-gradient": "^4.0.1",
|
|
58
|
-
"ink-select-input": "^6.2.0",
|
|
59
|
-
"ink-spinner": "^5.0.0",
|
|
60
|
-
"ink-text-input": "^6.0.0",
|
|
61
|
-
"minimatch": "^10.2.6",
|
|
62
|
-
"nanoid": "^5.1.9",
|
|
63
|
-
"node-pty": "^1.1.0",
|
|
64
|
-
"ollama": "^0.6.3",
|
|
65
|
-
"pdf-lib": "^1.17.1",
|
|
66
|
-
"puppeteer": "24.43.1",
|
|
67
|
-
"react": "^19.2.5",
|
|
68
|
-
"screenshot-desktop": "^1.15.4",
|
|
69
|
-
"sharp": "^0.35.3",
|
|
70
|
-
"tesseract.js": "^7.0.0",
|
|
71
|
-
"turndown": "^7.2.4",
|
|
72
|
-
"turndown-plugin-gfm": "^1.0.2",
|
|
73
|
-
"web-tree-sitter": "^0.25.10",
|
|
74
|
-
"ws": "^8.21.0",
|
|
75
|
-
"zod": "^4.3.6"
|
|
76
|
-
},
|
|
77
|
-
"devDependencies": {
|
|
78
|
-
"@types/react": "^19.2.14",
|
|
79
|
-
"esbuild": "^0.28.0",
|
|
80
|
-
"tsx": "^4.21.0"
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "fluxflow-cli",
|
|
3
|
+
"version": "4.2.1",
|
|
4
|
+
"date": "2026-08-17",
|
|
5
|
+
"description": "A High-Fidelity Agentic CLI with Sub-Agents for the Flux Era.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ai",
|
|
8
|
+
"agent",
|
|
9
|
+
"terminal",
|
|
10
|
+
"cli",
|
|
11
|
+
"gemini",
|
|
12
|
+
"ink",
|
|
13
|
+
"flux",
|
|
14
|
+
"fluxflow"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/KushalRoyChowdhury/fluxflow-cli.git"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=22.0.0",
|
|
23
|
+
"vscode": "^1.90.0"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"package.json",
|
|
29
|
+
"ARCHITECTURE.md",
|
|
30
|
+
"TOOLS.md",
|
|
31
|
+
"UI_FEATURES.md",
|
|
32
|
+
"cat.txt",
|
|
33
|
+
".puppeteerrc.cjs",
|
|
34
|
+
"flux-flow.cjs",
|
|
35
|
+
"model_config.json"
|
|
36
|
+
],
|
|
37
|
+
"type": "module",
|
|
38
|
+
"bin": {
|
|
39
|
+
"fluxflow-cli": "dist/cli.js",
|
|
40
|
+
"fluxflow": "dist/entry.js"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"start": "tsx ./src/cli.jsx",
|
|
44
|
+
"build": "esbuild ./src/cli.jsx --bundle --platform=node --format=esm --splitting --minify --tree-shaking=true --chunk-names=chunks/[name]-[hash] --outdir=./dist --external:react --external:ink --external:chalk --external:fs-extra --external:gradient-string --external:ink-text-input --external:ink-select-input --external:ink-spinner --external:@google/genai --external:zod --external:nanoid --external:puppeteer --external:pdf-lib --external:node-pty --external:html-to-docx --external:typescript --external:ws --external:web-tree-sitter --external:diff --external:dotenv --external:fast-glob --external:turndown --external:turndown-plugin-gfm --external:@nut-tree-fork/nut-js --external:sharp --external:screenshot-desktop --external:tesseract.js --external:ollama --external:minimatch && copy package.json dist\\package.json && copy src\\entry.js dist\\entry.js && copy model_config.json dist\\model_config.json"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@google/genai": "^1.52.0",
|
|
48
|
+
"@nut-tree-fork/nut-js": "^4.2.6",
|
|
49
|
+
"chalk": "^5.6.2",
|
|
50
|
+
"diff": "^9.0.0",
|
|
51
|
+
"dotenv": "^17.4.2",
|
|
52
|
+
"fast-glob": "^3.3.3",
|
|
53
|
+
"fs-extra": "^11.3.4",
|
|
54
|
+
"gradient-string": "^3.0.0",
|
|
55
|
+
"html-to-docx": "^1.8.0",
|
|
56
|
+
"ink": "^7.0.1",
|
|
57
|
+
"ink-gradient": "^4.0.1",
|
|
58
|
+
"ink-select-input": "^6.2.0",
|
|
59
|
+
"ink-spinner": "^5.0.0",
|
|
60
|
+
"ink-text-input": "^6.0.0",
|
|
61
|
+
"minimatch": "^10.2.6",
|
|
62
|
+
"nanoid": "^5.1.9",
|
|
63
|
+
"node-pty": "^1.1.0",
|
|
64
|
+
"ollama": "^0.6.3",
|
|
65
|
+
"pdf-lib": "^1.17.1",
|
|
66
|
+
"puppeteer": "24.43.1",
|
|
67
|
+
"react": "^19.2.5",
|
|
68
|
+
"screenshot-desktop": "^1.15.4",
|
|
69
|
+
"sharp": "^0.35.3",
|
|
70
|
+
"tesseract.js": "^7.0.0",
|
|
71
|
+
"turndown": "^7.2.4",
|
|
72
|
+
"turndown-plugin-gfm": "^1.0.2",
|
|
73
|
+
"web-tree-sitter": "^0.25.10",
|
|
74
|
+
"ws": "^8.21.0",
|
|
75
|
+
"zod": "^4.3.6"
|
|
76
|
+
},
|
|
77
|
+
"devDependencies": {
|
|
78
|
+
"@types/react": "^19.2.14",
|
|
79
|
+
"esbuild": "^0.28.0",
|
|
80
|
+
"tsx": "^4.21.0"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as s,d as a}from"./chunk-SIINYZWE.js";import{e as c}from"./chunk-I27MASHH.js";import I from"fs-extra";import o from"path";var r=o.join(c,"secrets.json"),u=async()=>{try{let e=s(r,{});if(e.API_KEY)return e.API_KEY}catch{}return null},i=async e=>{try{let t=s(r,{});if(e==="Google")return t.GOOGLE_API_KEY||t.API_KEY||null;if(e==="DeepSeek")return t.DEEPSEEK_API_KEY||null;if(e==="OpenRouter")return t.OPENROUTER_API_KEY||null;if(e==="Mistral")return t.MISTRAL_API_KEY||null;if(e==="NVIDIA")return t.NVIDIA_API_KEY||null;if(e==="Ollama")return t.OLLAMA_API_KEY||"LOCAL"}catch{}return null},Y=async(e,t)=>{e==="Google"?(await n("GOOGLE_API_KEY",t),await n("API_KEY",t)):e==="DeepSeek"?await n("DEEPSEEK_API_KEY",t):e==="OpenRouter"?await n("OPENROUTER_API_KEY",t):e==="Mistral"?await n("MISTRAL_API_KEY",t):e==="NVIDIA"?await n("NVIDIA_API_KEY",t):e==="Ollama"&&await n("OLLAMA_API_KEY",t)},y=async e=>{try{return s(r,{})[e]||null}catch{return null}},n=async(e,t)=>{await I.ensureDir(c);let E=s(r,{});E[e]=t,a(r,E)},O=async()=>{try{let e=s(r,{});return{key:e.GOOGLE_API_KEY||e.API_KEY,cx:e.SEARCH_ID}}catch{}return{key:null,cx:null}},f=async e=>n("API_KEY",e),S=async e=>n("GOOGLE_API_KEY",e),x=async e=>n("SEARCH_ID",e),A=async e=>{try{let t=s(r,{});delete t[e],a(r,t)}catch{}},L=async()=>A("API_KEY");export{u as a,i as b,Y as c,y as d,n as e,O as f,f as g,S as h,x as i,A as j,L as k};
|