fluxflow-cli 4.37.3 → 4.38.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/dist/chunks/{9router-CKETGMBB.js → 9router-E4LQZ5XF.js} +1 -1
- package/dist/chunks/{addMemScore-76XLEW3K.js → addMemScore-PBVNSFPN.js} +1 -1
- package/dist/chunks/{ai-JI4UX2WD.js → ai-YQJYUPXQ.js} +1 -1
- package/dist/chunks/{aihubmix-YSGVPUM4.js → aihubmix-UBV5ARET.js} +1 -1
- package/dist/chunks/{apinex-VI576FVJ.js → apinex-L3Y6BP6J.js} +1 -1
- package/dist/chunks/{app-3NZMHG65.js → app-SIXVPE6Z.js} +5 -5
- package/dist/chunks/{chat-RLEHK3MX.js → chat-C7HYXKVZ.js} +1 -1
- package/dist/chunks/chunk-26BQ45XP.js +2 -0
- package/dist/chunks/{chunk-T4ZG2WCV.js → chunk-4BLSASW6.js} +1 -1
- package/dist/chunks/{chunk-QOT4BYHM.js → chunk-52STSLCN.js} +1 -1
- package/dist/chunks/{chunk-3JI2CRXK.js → chunk-6EYQQ7GQ.js} +1 -1
- package/dist/chunks/{chunk-HOZQBBAO.js → chunk-6H2P5XUL.js} +1 -1
- package/dist/chunks/{chunk-MJL6DHQM.js → chunk-77QN4HDY.js} +1 -1
- package/dist/chunks/{chunk-CBFC5KUU.js → chunk-CZK3QF2C.js} +1 -1
- package/dist/chunks/{chunk-2VV5ZE53.js → chunk-EYTM4NZD.js} +1 -1
- package/dist/chunks/{chunk-ET66XVIM.js → chunk-FXRFFNRK.js} +1 -1
- package/dist/chunks/{chunk-FAEB3V5R.js → chunk-HFTI3R3Q.js} +1 -1
- package/dist/chunks/{chunk-BTMPM5BT.js → chunk-IHDJDAG3.js} +1 -1
- package/dist/chunks/{chunk-FSE4BZZZ.js → chunk-IZQAF6KJ.js} +1 -1
- package/dist/chunks/{chunk-PRTGV2R4.js → chunk-KMOTPBF5.js} +1 -1
- package/dist/chunks/chunk-P5HBJA23.js +1 -0
- package/dist/chunks/{chunk-K4AZXTU6.js → chunk-QW6IGMYV.js} +1 -1
- package/dist/chunks/{chunk-M4GC3CRN.js → chunk-ZCXQPXVK.js} +171 -171
- package/dist/chunks/{click-B4ZRHV4Z.js → click-J7DMHVDU.js} +2 -2
- package/dist/chunks/{computer_action-2RYMIFAM.js → computer_action-D52LLX3E.js} +1 -1
- package/dist/chunks/{custom_openai-TLPPKENJ.js → custom_openai-S6YIOHQN.js} +1 -1
- package/dist/chunks/{deepseek-2GJCWFSR.js → deepseek-CQRKTOL6.js} +1 -1
- package/dist/chunks/{drag-RNGTIO2V.js → drag-CMUD2ZB5.js} +1 -1
- package/dist/chunks/{emergency_rollback-NXD2JKBG.js → emergency_rollback-ZHQXCIHW.js} +1 -1
- package/dist/chunks/{explabs-YICY4AMR.js → explabs-6TWS34VQ.js} +1 -1
- package/dist/chunks/{export-C6VVIYP5.js → export-RU6LCZUB.js} +1 -1
- package/dist/chunks/{file_map-T5FHB3F6.js → file_map-UA4BA5OH.js} +1 -1
- package/dist/chunks/{find_file-LZR7NET3.js → find_file-HYHHFHUJ.js} +1 -1
- package/dist/chunks/{generate_image-75IV5P3L.js → generate_image-5D57XGLP.js} +1 -1
- package/dist/chunks/{inferx-YMU7LMOQ.js → inferx-A42H43ZV.js} +1 -1
- package/dist/chunks/{infron-A4BOV2AA.js → infron-NZI2FQFA.js} +1 -1
- package/dist/chunks/{invoke-7JAD5QTF.js → invoke-4P5QQPCF.js} +2 -2
- package/dist/chunks/{invokeSync-WUKJNYGQ.js → invokeSync-BSFWXLD7.js} +2 -2
- package/dist/chunks/{key_press-3VU6SHNQ.js → key_press-LWJGR25H.js} +1 -1
- package/dist/chunks/{keyboard_typing-PCW3ISET.js → keyboard_typing-A72GI7EW.js} +1 -1
- package/dist/chunks/{memory-4DXO4K5C.js → memory-7YOYCOXE.js} +1 -1
- package/dist/chunks/{mistral-2CZKHKDT.js → mistral-OXTDZX3G.js} +1 -1
- package/dist/chunks/{model_config-VYWFV55M.js → model_config-32SB7PTZ.js} +1 -1
- package/dist/chunks/{nvidia-EOLGFGFZ.js → nvidia-5DDRU422.js} +1 -1
- package/dist/chunks/{ollama-OHD5BFI7.js → ollama-4PI2BDMM.js} +1 -1
- package/dist/chunks/{openrouter-SK7LO52I.js → openrouter-YU3RE7RH.js} +1 -1
- package/dist/chunks/{paths-EQFOJDZC.js → paths-RQRI2XRY.js} +1 -1
- package/dist/chunks/{poolside-SAAXTNGR.js → poolside-H2NCP5XT.js} +1 -1
- package/dist/chunks/{saveSummary-ZSJ2UKLG.js → saveSummary-W2JMDVZJ.js} +1 -1
- package/dist/chunks/{screen_grid-Z2S4GMN5.js → screen_grid-4Z2EBIB2.js} +1 -1
- package/dist/chunks/{scroll-YSFTTROP.js → scroll-LXQJ25NK.js} +1 -1
- package/dist/chunks/{search_keyword-SD6Q3UZE.js → search_keyword-ABVAWJKX.js} +1 -1
- package/dist/chunks/{secrets-GHW6AWRR.js → secrets-5TCTEPEV.js} +1 -1
- package/dist/chunks/{sensenova-MQKZ7TNO.js → sensenova-UT5CZFCW.js} +1 -1
- package/dist/chunks/settings-ZBXCJL25.js +1 -0
- package/dist/chunks/{todo-KQCKHQBJ.js → todo-CJLWLWJB.js} +1 -1
- package/dist/chunks/{tokenharbor-QL33UGF4.js → tokenharbor-S66MGK52.js} +1 -1
- package/dist/chunks/{update_file-OQMKLO6R.js → update_file-6F64CFSU.js} +1 -1
- package/dist/chunks/{usage-2WRVNL44.js → usage-WOYKJLZL.js} +1 -1
- package/dist/chunks/{usageServer-6XH36WK3.js → usageServer-3KLDOFIX.js} +1 -1
- package/dist/chunks/view_file-I77KYUO5.js +1 -0
- package/dist/chunks/{web_scrape-KBKSNVBI.js → web_scrape-MW6YSZ7L.js} +1 -1
- package/dist/chunks/{web_search-HACFAHXR.js → web_search-NT3HXUO3.js} +1 -1
- package/dist/chunks/{write_docx-M5RMUI4W.js → write_docx-E3MTFXTQ.js} +1 -1
- package/dist/chunks/{write_file-2ZFCDYSW.js → write_file-JDMRLJKT.js} +1 -1
- package/dist/chunks/{write_pdf-E5HQYOTR.js → write_pdf-26OQPNEP.js} +1 -1
- package/dist/cli.js +6 -6
- package/dist/package.json +1 -1
- package/flux-flow.cjs +17 -17
- package/package.json +1 -1
- package/dist/chunks/chunk-L3W2X74K.js +0 -1
- package/dist/chunks/chunk-M2ULCOL3.js +0 -2
- package/dist/chunks/settings-5R5ADGXX.js +0 -1
- package/dist/chunks/view_file-TZD6DAER.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as E,d as s}from"./chunk-
|
|
1
|
+
import{c as E,d as s}from"./chunk-P5HBJA23.js";import{e as _}from"./chunk-26BQ45XP.js";import A from"fs-extra";import l from"path";var a=l.join(_,"secrets.json"),f=async()=>{try{let t=E(a,{});if(t.API_KEY)return t.API_KEY}catch{}return null},Y=async t=>{try{let n=E(a,{});if(t==="Google")return n.GOOGLE_API_KEY||n.API_KEY||null;if(t==="DeepSeek")return n.DEEPSEEK_API_KEY||null;if(t==="OpenRouter")return n.OPENROUTER_API_KEY||null;if(t==="Mistral")return n.MISTRAL_API_KEY||null;if(t==="NVIDIA")return n.NVIDIA_API_KEY||null;if(t==="Ollama")return n.OLLAMA_API_KEY||"LOCAL";if(t==="InferX")return n.INFERX_API_KEY||null;if(t==="SenseNova"||t==="Sensenova")return n.SENSENOVA_API_KEY||null;if(t==="Poolside"||t==="poolside")return n.POOLSIDE_API_KEY||null;if(t==="9router"||t==="9Router")return n["9ROUTER_API_KEY"]||"LOCAL";if(t==="ExpLabs"||t==="ExperientialLabs"||t==="ExperimentalLabs"||t==="explabs")return n.EXPLABS_API_KEY||n.EXPERIENTIALLABS_API_KEY||null;if(t==="TokenHarbor"||t==="Token Harbor"||t==="tokenharbor"||t==="token_harbor"||t==="thk")return n.TOKENHARBOR_API_KEY||n.TOKEN_HARBOR_API_KEY||null;if(t==="Infron"||t==="infron")return n.INFRON_API_KEY||null;if(t==="APInex"||t==="apinex"||t==="apx")return n.APINEX_API_KEY||null;if(t==="c_openai"||t==="Custom (OpenAI)")return n.CUSTOM_OPENAI_API_KEY||n.C_OPENAI_API_KEY||null}catch{}return null},o=async(t,n)=>{t==="Google"?(await e("GOOGLE_API_KEY",n),await e("API_KEY",n)):t==="DeepSeek"?await e("DEEPSEEK_API_KEY",n):t==="OpenRouter"?await e("OPENROUTER_API_KEY",n):t==="Mistral"?await e("MISTRAL_API_KEY",n):t==="NVIDIA"?await e("NVIDIA_API_KEY",n):t==="Ollama"?await e("OLLAMA_API_KEY",n):t==="InferX"?await e("INFERX_API_KEY",n):t==="SenseNova"||t==="Sensenova"?await e("SENSENOVA_API_KEY",n):t==="Poolside"||t==="poolside"?await e("POOLSIDE_API_KEY",n):t==="9router"||t==="9Router"?await e("9ROUTER_API_KEY",n):t==="ExpLabs"||t==="ExperientialLabs"||t==="ExperimentalLabs"||t==="explabs"?await e("EXPLABS_API_KEY",n):t==="TokenHarbor"||t==="Token Harbor"||t==="tokenharbor"||t==="token_harbor"||t==="thk"?await e("TOKENHARBOR_API_KEY",n):t==="Infron"||t==="infron"?await e("INFRON_API_KEY",n):t==="APInex"||t==="apinex"||t==="apx"?await e("APINEX_API_KEY",n):(t==="c_openai"||t==="Custom (OpenAI)")&&await e("CUSTOM_OPENAI_API_KEY",n)},S=async t=>{try{return E(a,{})[t]||null}catch{return null}},e=async(t,n)=>{await A.ensureDir(_);let I=E(a,{});I[t]=n,s(a,I,!0)},R=async()=>{try{let t=E(a,{});return{key:t.GOOGLE_API_KEY||t.API_KEY,cx:t.SEARCH_ID}}catch{}return{key:null,cx:null}},x=async t=>e("API_KEY",t),L=async t=>e("GOOGLE_API_KEY",t),N=async t=>e("SEARCH_ID",t),P=async t=>{try{let n=E(a,{});delete n[t],s(a,n,!0)}catch{}},r=async()=>P("API_KEY");export{f as a,Y as b,o as c,S as d,e,R as f,x as g,L as h,N as i,P as j,r as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l,v as u}from"./chunk-
|
|
1
|
+
import{a as l,v as u}from"./chunk-26BQ45XP.js";import f from"fs";var o=null,a=()=>{try{if(f.existsSync(u)){let e=f.readFileSync(u,"utf-8"),n=JSON.parse(e);if(n&&typeof n=="object")return o=n,o}}catch{}return o=o||{},o},y=e=>{try{return f.existsSync(l)||f.mkdirSync(l,{recursive:!0}),f.writeFileSync(u,JSON.stringify(e,null,2),"utf-8"),o=e,!0}catch{return!1}},C=(e,n,c)=>{if(!e||!n||!c)return null;let s=o||a(),t=`${e}::${n}`,r=s[t];if(r&&typeof r=="object"){let i=c.toLowerCase();if(r[i]!==void 0&&r[i]!==null)return r[i];for(let[g,k]of Object.entries(r))if(g.toLowerCase()===i)return k}return null},x=(e,n,c,s)=>{if(!e||!n||!c||!s)return{success:!1,reason:"Invalid arguments"};let t=o||a(),r=`${e}::${n}`;return(!t[r]||typeof t[r]!="object")&&(t[r]={}),t[r][c.toLowerCase()]=s,{success:y(t)}},I=(e,n,c)=>{if(!e||!n)return{success:!1,reason:"Invalid arguments"};let s=o||a(),t=`${e}::${n}`;return s[t]&&(c?(delete s[t][c.toLowerCase()],Object.keys(s[t]).length===0&&delete s[t]):delete s[t],y(s)),{success:!0}};export{C as a,x as b,I as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as o}from"./chunk-
|
|
1
|
+
import{t as o}from"./chunk-26BQ45XP.js";import r from"fs-extra";import l from"path";import d from"https";var j={js:"tree-sitter-javascript.wasm",jsx:"tree-sitter-javascript.wasm",ts:"tree-sitter-typescript.wasm",tsx:"tree-sitter-tsx.wasm",py:"tree-sitter-python.wasm",c:"tree-sitter-c.wasm",cpp:"tree-sitter-cpp.wasm",java:"tree-sitter-java.wasm",html:"tree-sitter-html.wasm"};async function f(t,s=null){let p=s||`https://unpkg.com/tree-sitter-wasms@0.1.13/out/${t}`,i=l.join(o,t);return await r.ensureDir(o),new Promise((m,n)=>{let h={headers:{"User-Agent":"FluxFlow-Agent"}};d.get(p,h,e=>{if([301,302,307,308].includes(e.statusCode)&&e.headers.location){let a=e.headers.location;if(!a.startsWith("http")){let u=new URL(p);a=`${u.protocol}//${u.host}${a}`}f(t,a).then(m).catch(n);return}if(e.statusCode!==200){n(new Error(`Failed to download ${t}: HTTP ${e.statusCode}`));return}let c=r.createWriteStream(i);e.pipe(c),c.on("finish",()=>{c.close(),m()})}).on("error",e=>{r.existsSync(i)&&r.unlink(i,()=>{}),n(e)})})}function S(t){let s=l.join(o,t);return r.existsSync(s)}async function $(t){let s=l.join(o,t);r.existsSync(s)&&await r.unlink(s)}export{j as a,f as b,S as c,$ as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as g,f as c}from"./chunk-
|
|
1
|
+
import{e as g,f as c}from"./chunk-P5HBJA23.js";import{b as s}from"./chunk-26BQ45XP.js";import n from"fs-extra";import m from"path";var r={mode:"Flux",display:0,thinkingLevel:"Medium",aiProvider:"",activeModel:"",showFullThinking:!0,apiTier:"Free",quotas:{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerTiers:{Google:"Free",DeepSeek:"Free",NVIDIA:"Free",OpenRouter:"Free",InferX:"Free",SenseNova:"Free",Poolside:"Free",ExpLabs:"Free",TokenHarbor:"Free",Infron:"Free",APInex:"Free",c_openai:"Free"}},systemSettings:{customOpenAIBaseUrl:"",memory:!1,theme:"Dark",compression:0,autoExec:!0,allowExternalAccess:!1,advanceRollback:!1,autoDeleteHistory:"7d",useExternalData:!1,externalDataPath:"",preserveThinking:!0,loadingPhrases:!1,progressiveRendering:!0,showTPMEstimate:!0,subAgents:!1,CustomSubAgent:!1,SubAgentModel:"Default",SubAgentProvider:"",dynamicDirAwareness:!1,indentationTree:!0,ollamaEndpoint:"Cloud",compressToolResults:!1,autoTruncateResults:!0,imageHistoryCU:"Standard",contextLength:"256k",keepReasoningContext:!1,autoExcludeMetadata:!1,disableTodo:!1,alwaysAskFiles:".env, .env.*, *.env"},profileData:{name:null,nickname:null,instructions:null},imageSettings:{keyType:"Default",quality:"Low-High",apiKey:""}},d=async()=>{let t={...r};try{if(await n.exists(s)){let e=g(s);if(e.imageSettings&&e.imageSettings.apiKey)try{let a=e.imageSettings.apiKey,{saveSecret:i}=await import("./secrets-5TCTEPEV.js");await i("POLLINATIONS_API_KEY",a),e.imageSettings.apiKey="",c(s,e)}catch{}t={...r,...e,quotas:{...r.quotas,...e.quotas,providerTiers:{...r.quotas.providerTiers,...e.quotas?.providerTiers||{}}},systemSettings:{...r.systemSettings,...e.systemSettings},profileData:{...r.profileData,...e.profileData},imageSettings:{...r.imageSettings,...e.imageSettings}}}}catch(e){console.error("Failed to load settings:",e)}try{let{getSecret:e}=await import("./secrets-5TCTEPEV.js"),a=await e("POLLINATIONS_API_KEY");a&&(t.imageSettings.apiKey=a)}catch{}if(t.showFullThinking===!1){t.showFullThinking=!0;try{c(s,t)}catch{}}return t},p=async t=>{let{FLUXFLOW_DIR:e}=await import("./paths-RQRI2XRY.js"),a=["logs","secret"];for(let i of a){let l=m.join(e,i),o=m.join(t,i);try{await n.exists(l)&&(await n.ensureDir(o),await n.copy(l,o,{overwrite:!0}))}catch(u){console.error(`Migration failed for ${i}:`,u)}}},v=async t=>{try{let e=await d();if(!e.systemSettings.useExternalData&&t.systemSettings?.useExternalData&&t.systemSettings?.externalDataPath&&await p(t.systemSettings.externalDataPath),t.imageSettings&&t.imageSettings.apiKey!==void 0){let{saveSecret:i,removeSecret:l}=await import("./secrets-5TCTEPEV.js"),o=t.imageSettings.apiKey;o?await i("POLLINATIONS_API_KEY",o):await l("POLLINATIONS_API_KEY")}let a={...e,...t};a.systemSettings&&(a.systemSettings.dynamicDirAwareness=!1),a.imageSettings&&(a.imageSettings={...a.imageSettings,apiKey:""}),await n.ensureDir(m.dirname(s)),c(s,a);try{let{invalidateCachedBaseUrl:i}=await import("./usage-WOYKJLZL.js");i()}catch{}return!0}catch(e){return console.error("Failed to save settings:",e),!1}};export{d as a,v as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as u}from"./chunk-
|
|
1
|
+
import{a as u}from"./chunk-26BQ45XP.js";import f from"fs";import g from"path";import{fileURLToPath as M}from"url";var p={version:0,release:20261004,fallbacks:{janitor_default:"gemini-3.5-flash-lite",janitor_attempts_fallback:"gemma-4-26b-a4b-it",janitor_open_router:"google/gemma-4-26b-a4b-it:free",general_fallback:"gemini-3.5-flash-lite",deepseek_fast_fallback:"deepseek-v4-flash",deepseek_level_1:"deepseek-flash",deepseek_level_2:"deepseek-pro",mistral_janitor_fallback:"",mistral_level_1:"",nvidia_janitor_fallback:"mistralai/mistral-nemotron",nvidia_chat_summarizer_fallback:"nvidia/nemotron-3-super-120b-a12b",google_level_1:"gemini-3-flash-preview",google_level_2:"gemini-3.7-flash",gemma_emergency:"gemma-4-31b-it",gemma_janitor_fallback_google_openrouter:"google/gemma-4-26b-a4b-it:free",gemma_janitor_fallback_google:"gemma-4-26b-a4b-it",inferx_fallback:"",sensenova_fallback:"",crofai_fallback:"",aihubmix_fallback:"",poolside_fallback:"","9router_fallback":"",explabs_fallback:"",tokenharbor_fallback:"",infron_fallback:"",c_openai_fallback:""},providers:{}};var j=M(import.meta.url),y=g.dirname(j),_="",I=[g.join(y,"../../model_config.json"),g.join(y,"../model_config.json")];for(let e of I)try{if(f.existsSync(e)){_=e;break}}catch{}var b=g.join(u,"model_config.json"),a=null,v=()=>{if(_)try{let e=f.readFileSync(_,"utf-8"),r=JSON.parse(e);if(r&&typeof r=="object")return r}catch{}return p&&typeof p=="object"?JSON.parse(JSON.stringify(p)):{version:0,release:20260913,fallbacks:{},providers:{}}};if(f.existsSync(b))try{let e=f.readFileSync(b,"utf-8"),r=JSON.parse(e);if(r&&typeof r=="object"){let o=v();r.fallbacks={...o.fallbacks||{},...r.fallbacks||{}},r.providers||(r.providers={}),r.release||(r.release=o.release||20260913),a=r}}catch{}a||(a=v());var F=new Set,k=new Set,c=()=>{let e=new Set,r=new Set;if(a.providers)for(let o of Object.keys(a.providers)){let s=a.providers[o];if(s&&s.models){let l=["Free","Paid"];for(let n of l){let t=s.models[n];if(Array.isArray(t)){for(let i of t)if(i&&i.cmd){let d=i.cmd.trim().toLowerCase();i.multimodal===!0&&e.add(d),i.hasReasoning===!0&&r.add(d)}}}}}if(Array.isArray(a.multimodal_models))for(let o of a.multimodal_models)o&&typeof o=="string"&&e.add(o.trim().toLowerCase());F=e,k=r};c();var L=()=>a,m=()=>{try{return f.existsSync(u)||f.mkdirSync(u,{recursive:!0}),f.writeFileSync(b,JSON.stringify(a,null,2),"utf-8"),!0}catch{return!1}},N=(e,r,o=!1,s=null)=>{if(!e||!r)return{success:!1,reason:"Invalid provider or model ID"};let l=r.trim();if(!l)return{success:!1,reason:"Model ID cannot be empty"};a.providers||(a.providers={}),a.providers[e]||(a.providers[e]={default_free:"",default_paid:"",models:{Free:[],Paid:[]}});let n=a.providers[e];n.models||(n.models={Free:[],Paid:[]}),Array.isArray(n.models.Free)||(n.models.Free=[]);let t=n.models.Free.find(i=>(typeof i=="string"?i:i?.cmd)===l);if(t)if(typeof t=="string"){let i=n.models.Free.indexOf(t),d={cmd:l,multimodal:!!o,desc:l};s&&Object.keys(s).length>0&&(d.info=s),n.models.Free[i]=d}else t.multimodal=!!o,s&&Object.keys(s).length>0&&(t.info={...t.info||{},...s});else{let i={cmd:l,multimodal:!!o,desc:l};s&&Object.keys(s).length>0&&(i.info=s),n.models.Free.push(i)}return c(),m(),{success:!0}},$=(e,r,o={})=>{if(!e||!r)return{success:!1,reason:"Invalid provider or model ID"};let s=r.trim();if(!s)return{success:!1,reason:"Model ID cannot be empty"};a.providers||(a.providers={}),a.providers[e]||(a.providers[e]={default_free:"",default_paid:"",models:{Free:[],Paid:[]}});let l=a.providers[e];l.models||(l.models={Free:[],Paid:[]}),Array.isArray(l.models.Free)||(l.models.Free=[]);let n=s.toLowerCase(),t=l.models.Free.find(i=>{let d=typeof i=="string"?i:i?.cmd;return d&&d.trim().toLowerCase()===n});if(o===null)t&&typeof t=="object"&&delete t.info;else if(!t)l.models.Free.push({cmd:s,multimodal:!1,desc:s,info:o});else if(typeof t=="string"){let i=l.models.Free.indexOf(t);l.models.Free[i]={cmd:t,multimodal:!1,desc:t,info:o}}else t.info={...t.info||{},...o};return m(),{success:!0}},R=(e,r,o=!0)=>{if(!e||!r)return{success:!1,reason:"Invalid provider or model ID"};let s=r.trim();if(!s)return{success:!1,reason:"Model ID cannot be empty"};let l=a.providers?.[e];if(!l||!l.models||!Array.isArray(l.models.Free))return{success:!1,reason:`Provider ${e} has no models configured`};let n=l.models.Free.find(t=>(typeof t=="string"?t:t?.cmd)===s);if(!n)return{success:!1,reason:`Model "${s}" not found in ${e} model list`};if(typeof n=="string"){let t=l.models.Free.indexOf(n);l.models.Free[t]={cmd:s,multimodal:!!o,desc:s}}else n.multimodal=!!o;return c(),m(),{success:!0}},T=(e,r,o=!1,s=null)=>{if(!e||!r)return{success:!1,reason:"Invalid provider or model ID"};let l=r.trim();if(!l)return{success:!1,reason:"Model ID cannot be empty"};a.providers||(a.providers={}),a.providers[e]||(a.providers[e]={default_free:"",default_paid:"",models:{Free:[],Paid:[]}});let n=a.providers[e];n.models||(n.models={Free:[],Paid:[]}),Array.isArray(n.models.Free)||(n.models.Free=[]);let t=n.models.Free.find(i=>(typeof i=="string"?i:i?.cmd)===l);if(t)if(typeof t=="string"){let i=n.models.Free.indexOf(t),d={cmd:l,multimodal:!!o,desc:l};s&&Object.keys(s).length>0&&(d.info=s),n.models.Free[i]=d}else o&&(t.multimodal=!0),s&&Object.keys(s).length>0&&(t.info={...t.info||{},...s});else{let i={cmd:l,multimodal:!!o,desc:l};s&&Object.keys(s).length>0&&(i.info=s),n.models.Free.push(i)}return n.default_free=l,c(),m(),{success:!0}},J=(e,r)=>{if(!e||!r)return{success:!1,reason:"Invalid provider or model ID"};let o=r.trim();if(!o)return{success:!1,reason:"Model ID cannot be empty"};let s=a.providers?.[e];if(!s||!s.models||!Array.isArray(s.models.Free))return{success:!1,reason:`Provider ${e} has no models configured`};let l=s.models.Free.findIndex(n=>(typeof n=="string"?n:n?.cmd)===o);return l===-1?{success:!1,reason:`Model "${o}" not found in ${e} model list`}:(s.models.Free.splice(l,1),s.default_free===o&&(s.default_free=""),s.default_paid===o&&(s.default_paid=""),c(),m(),{success:!0})},U=(e,r,o)=>{if(!e||!r||!o)return{success:!1,reason:"Invalid provider or model IDs"};let s=r.trim(),l=o.trim();if(!s||!l)return{success:!1,reason:"Model IDs cannot be empty"};let n=a.providers?.[e];if(!n||!n.models||!Array.isArray(n.models.Free))return{success:!1,reason:`Provider ${e} has no models configured`};let t=n.models.Free.find(i=>(typeof i=="string"?i:i?.cmd)===s);if(!t)return{success:!1,reason:`Model "${s}" not found in ${e} model list`};if(typeof t=="string"){let i=n.models.Free.indexOf(t);n.models.Free[i]={cmd:l,multimodal:!1,desc:l}}else t.cmd=l,(t.desc===s||!t.desc)&&(t.desc=l);return c(),m(),{success:!0}},x=!1,C=e=>{x=!!e},W=C,E=e=>{if(!e)return!1;let r=e.trim().toLowerCase();return!!(x||F.has(r)||r.startsWith("gemini-")||r.startsWith("gemma-"))},z=e=>{if(!e)return!1;let r=e.trim().toLowerCase();return k.has(r)},G=(e,r)=>{let o=a.providers[e];return o?o.models[r==="Free"?"Free":"Paid"]||[]:[]},K=(e,r)=>{let o=a.providers[e];return o?r==="Free"?o.default_free:o.default_paid:""},V=(e,r)=>{if(!e||!r||!a.providers)return null;let o=a.providers[e];if(!o||!o.models)return null;let s=r.trim().toLowerCase(),l=["Free","Paid"];for(let n of l){let t=o.models[n];if(Array.isArray(t)){for(let i of t)if(typeof i=="object"&&i?.cmd&&i.cmd.trim().toLowerCase()===s&&i.info)return{IN:Number(i.info.IN)||0,OUT:Number(i.info.OUT)||0,CR:Number(i.info.CR)||0,CW:Number(i.info.CW)||0}}}return null},X=e=>a?.fallbacks?.[e];export{p as a,L as b,m as c,N as d,$ as e,R as f,T as g,J as h,U as i,C as j,W as k,E as l,z as m,G as n,K as o,V as p,X as q};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as d}from"./chunk-26BQ45XP.js";import o from"fs";import u from"path";import i from"crypto";var S=66,l=!0,x=r=>{let e=Buffer.isBuffer(r)?r:Buffer.from(r),n=Buffer.alloc(e.length);for(let t=0;t<e.length;t++)n[t]=e[t]^S;return n},g=()=>{try{let r=d,e=u.join(r,".token");if(o.existsSync(e)){let t=o.readFileSync(e,"utf8").trim();if(t)return t}let n=i.randomUUID();try{o.existsSync(r)||o.mkdirSync(r,{recursive:!0}),o.writeFileSync(e,n,{encoding:"utf8",mode:384})}catch{}return n}catch{return"fluxflow-fallback-default-device-seed"}},h="aes-256-cbc",E=i.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),f=i.createHash("sha256").update(g()).digest(),w=(r,e=!1,n=f)=>{if(l&&!e)return r;let t=i.randomBytes(16),c=i.createCipheriv(h,n,t),s=c.update(r,"utf8","hex");return s+=c.final("hex"),t.toString("hex")+":"+s},y=(r,e=!1,n=f)=>{if(l&&!e)return r;let t=r.split(":");if(t.length!==2)throw new Error("Invalid AES format");let c=Buffer.from(t[0],"hex"),s=t[1],a=i.createDecipheriv(h,n,c),p=a.update(s,"hex","utf8");return p+=a.final("utf8"),p};var J=(r,e={})=>{try{if(!o.existsSync(r))return e;let n=o.readFileSync(r),t=n.toString("utf8").trim();if(t.startsWith("{")||t.startsWith("["))return JSON.parse(t);try{let s=y(t,!0,f);return JSON.parse(s)}catch{}try{let s=y(t,!0,E),a=JSON.parse(s);try{m(r,a,!0)}catch{}return a}catch{}let c=x(n).toString("utf8");if(c.startsWith("{")||c.startsWith("["))return JSON.parse(c);throw new Error("Unsupported or corrupt encryption format")}catch(n){return console.error(`Vault Read Error [${u.basename(r)}]:`,n.message),e}},m=(r,e,n=!1)=>{try{let t=u.dirname(r);o.existsSync(t)||o.mkdirSync(t,{recursive:!0});let c=JSON.stringify(e,null,2),s=w(c,n,f);o.writeFileSync(r,s,"utf8")}catch(t){console.error(`Vault Write Error [${u.basename(r)}]:`,t.message)}},W=J,k=m;export{w as a,y as b,J as c,m as d,W as e,k as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as z}from"./chunk-
|
|
1
|
+
import{a as z}from"./chunk-IZQAF6KJ.js";import{p as ut}from"./chunk-KMOTPBF5.js";import{a as mt,b as W}from"./chunk-P5HBJA23.js";import{d as J,h as Z,i as M,j as b}from"./chunk-26BQ45XP.js";import S from"fs-extra";import U from"path";import bt from"http";import N from"fs-extra";import et from"path";import{spawn as vt}from"child_process";import{fileURLToPath as Ft}from"url";var $=52991,Rt=15e3,ft=et.join(J,"usage","usage_error.txt"),ht=async(e,t)=>{let o=t?.stack||t?.message||String(t);console.error(`[Usage Daemon Error] [${e}]:`,t);try{await N.ensureDir(et.dirname(ft));let s=`[${new Date().toISOString()}] [Daemon:${e}] ${o}
|
|
2
2
|
-------------------------------------
|
|
3
3
|
|
|
4
4
|
`;await N.appendFile(ft,s,"utf8")}catch{}},B={agent:0,background:0,search:0,toolSuccess:0,toolFailure:0,toolDenied:0,duration:0,tokens:0,cachedTokens:0,candidateTokens:0,linesAdded:0,linesRemoved:0,cost:0,imageCalls:[]},tt=(e,t)=>{if(!e)return{};let o=Object.keys(e),i=new Date(new Date(t).getTime()-720*60*60*1e3),s={};for(let n of o)new Date(n)>=i&&(s[n]=e[n]);return s};async function Ut(){let e=new Date().toISOString().split("T")[0],t=null;try{if(await N.exists(M)){let o=(await N.readFile(M,"utf8")).trim();o.startsWith("{")||o.startsWith("[")?t=JSON.parse(o):t=JSON.parse(W(o))}}catch(o){await ht("loadUsageFromDisk",o)}if(t){let o={...B,...t.stats||{}};Array.isArray(o.imageCalls)||(o.imageCalls=[]);let i=t.history||{},s=tt(i,e);if(t.date===e)return{...t,stats:o,history:s};{let n=t.date,c={...s};return n&&(c[n]=o),{date:e,stats:{...B},history:tt(c,e)}}}return{date:e,stats:{...B},history:{}}}async function Ot(e=$){let t=await Ut(),o=!1,i=!1,s=Date.now(),n=null,c=async()=>{if(t)try{await N.ensureDir(et.dirname(M));let l=new Date().toISOString().split("T")[0];t.history=tt(t.history||{},t.date||l),t.saveId=Math.random().toString(36).substring(2)+Date.now().toString(36);let a=mt(JSON.stringify(t,null,2));await N.writeFile(M,a,"utf8"),i=!1}catch(l){await ht("flushToDisk",l)}},r=async()=>{n&&clearInterval(n),await c(),m.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),1e3).unref()};n=setInterval(async()=>{if(o)return;Date.now()-s>Rt&&await r()},5e3),n.unref&&n.unref();let m=bt.createServer(async(l,a)=>{let u=l.url||"";if(l.method==="POST"&&u==="/heartbeat"){o||(s=Date.now()),a.writeHead(200,{"Content-Type":"application/json"}),a.end(JSON.stringify({ok:!0}));return}if((l.method==="GET"||l.method==="POST")&&u==="/finalize"){o=!0,n&&clearInterval(n),await c(),a.writeHead(200,{"Content-Type":"application/json"}),a.end(JSON.stringify({success:!0,message:"Finalized and written to disk"})),setTimeout(()=>{m.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),500).unref()},3e3);return}if(l.method==="POST"&&u==="/flush"){o||(s=Date.now(),await c()),a.writeHead(200,{"Content-Type":"application/json"}),a.end(JSON.stringify({success:!0}));return}if(l.method==="POST"&&u==="/write"){if(o){a.writeHead(403,{"Content-Type":"application/json"}),a.end(JSON.stringify({error:"Daemon finalized. Writes locked."}));return}s=Date.now();let d="";l.on("data",p=>{d+=p}),l.on("end",async()=>{try{let p=JSON.parse(d||"{}"),C=new Date().toISOString().split("T")[0];if(t.date!==C){let y=t.date;y&&(t.history||(t.history={}),t.history[y]={...t.stats}),t.date=C,t.stats={...B}}t.stats||(t.stats={...B});let{key:h,amount:f=1,provider:w,model:T}=p;if(h&&t.stats[h]!==void 0&&(h==="cost"?t.stats.cost=Number(((t.stats.cost||0)+Number(f)).toFixed(6)):typeof t.stats[h]=="number"&&(t.stats[h]+=Math.floor(f))),h==="agent"&&w&&(t.stats.providerRequests||(t.stats.providerRequests={}),t.stats.providerRequests[w]=(t.stats.providerRequests[w]||0)+Math.floor(f)),w&&T&&(h==="tokens"||h==="cachedTokens"||h==="candidateTokens"||h==="ttft"||h==="cost")){t.stats.models||(t.stats.models={}),t.stats.models[w]||(t.stats.models[w]={}),t.stats.models[w][T]||(t.stats.models[w][T]={tokens:0,cachedTokens:0,candidateTokens:0,ttftSum:0,ttftCalls:0,cost:0});let y=t.stats.models[w][T];h==="tokens"&&(y.tokens+=Math.floor(f)),h==="cachedTokens"&&(y.cachedTokens+=Math.floor(f)),h==="candidateTokens"&&(y.candidateTokens+=Math.floor(f)),h==="cost"&&(y.cost=Number(((y.cost||0)+Number(f)).toFixed(6))),h==="ttft"&&(y.ttftSum=(y.ttftSum||0)+Math.floor(f),y.ttftCalls=(y.ttftCalls||0)+1)}i=!0,await c(),a.writeHead(200,{"Content-Type":"application/json"}),a.end(JSON.stringify({success:!0}))}catch(p){a.writeHead(400,{"Content-Type":"application/json"}),a.end(JSON.stringify({error:p.message}))}});return}a.writeHead(404,{"Content-Type":"text/plain"}),a.end("Not Found")});m.listen(e,"127.0.0.1",()=>{s=Date.now()}),m.on("error",l=>{l.code==="EADDRINUSE"&&process.exit(0)})}async function At(e=$){try{if((await fetch(`http://127.0.0.1:${e}/heartbeat`,{method:"POST",signal:AbortSignal.timeout(300)})).ok)return!0}catch{}try{let t=Ft(import.meta.url);vt(process.execPath,[t,"--usage-daemon-worker",`--port=${e}`],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();for(let i=0;i<10;i++){await new Promise(s=>setTimeout(s,100));try{if((await fetch(`http://127.0.0.1:${e}/heartbeat`,{method:"POST",signal:AbortSignal.timeout(300)})).ok)return!0}catch{}}}catch{}return!1}async function st(e,t=$){try{await At(t),await fetch(`http://127.0.0.1:${t}/write`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),signal:AbortSignal.timeout(1e3)})}catch{}}async function It(e=$){try{await fetch(`http://127.0.0.1:${e}/heartbeat`,{method:"POST",signal:AbortSignal.timeout(600)})}catch{}}async function Et(e=$){try{await fetch(`http://127.0.0.1:${e}/finalize`,{method:"GET",signal:AbortSignal.timeout(1e3)})}catch{}}if(process.argv.includes("--usage-daemon-worker")){let e=process.argv.find(o=>o.startsWith("--port=")),t=e?parseInt(e.split("=")[1],10):$;Ot(t)}var pt=U.join(J,"usage","usage_error.txt"),H=new Map,Nt=(e,t)=>{let o=`${e}:${t}`;if(H.has(o))return H.get(o);try{let i=yt();if(S.existsSync(i)){let n=S.readFileSync(i,"utf8").split(`
|