@must-b/must-b 1.6.0 → 1.6.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/dist/BUILD.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@must-b/must-b",
3
- "version": "1.6.0",
4
- "gitHash": "9c882ee",
5
- "buildTime": "2026-03-25T02:46:09.815Z",
3
+ "version": "1.6.1",
4
+ "gitHash": "f8b3c5c",
5
+ "buildTime": "2026-03-25T03:24:03.192Z",
6
6
  "node": "v24.14.0",
7
7
  "platform": "win32"
8
8
  }
package/dist/index.cjs CHANGED
@@ -4031,7 +4031,7 @@ ${p}${D}`+m.repeat(Q)+`${p}`,I}function c(Q,g,h,p){return`${g}${p}`+h.repeat(Q)+
4031
4031
  \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D
4032
4032
  \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557
4033
4033
  \u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D
4034
- \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D `;function nBe(){try{return"1.6.0"}catch{return"1.0.0"}}function sBe(){try{return"9c882ee"}catch{return""}}function KB(e,A=58){let t=e.replace(/\x1b\[[0-9;]*m/g,""),i=Math.max(0,Math.floor((A-t.length)/2));return" ".repeat(i)+e}function ztA(e="\u2500",A=58){return Ss(" "+e.repeat(A))}function DD(e,A){let t=nBe(),i=sBe();console.log(jtA(rBe)),console.log(""),console.log(KB(iBe(tBe("Must-b"))+" "+WtA("v"+t))),console.log(KB(Ss("Professional AI Operating System"))),console.log(""),console.log(KB(jtA("\u26A1 Autonomous \xB7 Precise \xB7 Always On"))),console.log(KB(Ss("Vision")+Ss(" \xB7 ")+Ss("Voice")+Ss(" \xB7 ")+Ss("OS Control")+Ss(" \xB7 ")+Ss("Multi-Agent Hierarchy"))),console.log(""),console.log(ztA()),console.log("");let a=[`Node ${process.version}`,`Mode: ${e.toUpperCase()}`,`PID ${process.pid}`,i?`#${i}`:null].filter(Boolean).join(Ss(" \xB7 "));console.log(KB(Ss(a))),e==="web"&&(console.log(""),console.log(KB(aBe("\u25B6 ")+WtA(`http://localhost:${A}`))),console.log(KB(Ss("Dashboard is live \u2014 open in your browser")))),console.log(""),console.log(ztA()),console.log(KB(Ss("Built by Auto Step \xB7 https://must-b.com"))),console.log("")}var qtA=require("events"),ZtA=require("module"),XtA=re(require("path"),1),EBe={};var oBe=[/\b(navigate|browse)\b/i,/\bopen\s+(the\s+)?(website|url|browser|page|site|link)\b/i,/\b(go\s+to|visit|open)\s+https?:\/\//i,/https?:\/\/\S+/,/\bread\s+(the\s+)?(file|folder|directory|path)\b/i,/\bwrite\s+(to\s+)?(the\s+)?(file|disk|path)\b/i,/\b(create|delete|remove|rename|move|copy)\s+(a\s+)?(file|folder|directory|script)\b/i,/\bsave\s+(this|it)\s+to\b/i,/\bpatch\s+(the\s+)?file\b/i,/\b(run|execute|launch)\s+(a\s+)?(command|script|program|code)\b/i,/\bterminal\b/i,/\bbash\b/i,/\bnpm\s+\w/i,/\bgit\s+(clone|commit|push|pull|checkout|status|log|diff|add|merge)\b/i,/\bpython\s+\w.*\.py\b/i,/\b(search|look\s+up)\s+(the\s+)?(web|internet|online|google|bing)\b/i,/\bfind\s+(it\s+)?(online|on\s+the\s+web)\b/i,/\b(take\s+a?\s*)screenshot\b/i,/\bdownload\b/i,/\binstall\b/i,/\blist\s+(the\s+)?(files|folders|contents)\b/i,/\bclick\s+(on\s+)?(the\s+)?\w/i,/\btype\s+(into|in)\b/i];function cBe(e){for(let A of oBe)if(A.test(e))return"agent";return"direct"}function lBe(e){let A=e.toLowerCase();return A.includes("401")||A.includes("unauthorized")||A.includes("api key")||A.includes("invalid key")?"auth":A.includes("429")||A.includes("rate limit")||A.includes("too many requests")?"ratelimit":A.includes("econnrefused")||A.includes("enotfound")||A.includes("fetch failed")||A.includes("network")?"network":"unknown"}async function VtA(){try{let A=(0,ZtA.createRequire)(EBe.url)("dotenv"),t=XtA.default.join(process.cwd(),".env");A.config({path:t,override:!0})}catch{}}function KtA(e){let A=["OPENROUTER_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY_2","OPENROUTER_API_KEY_3","OPENAI_API_KEY_2","ANTHROPIC_API_KEY_2"],t=process.env.OPENROUTER_API_KEY??process.env.OPENAI_API_KEY??process.env.ANTHROPIC_API_KEY??"";for(let i of A){let a=process.env[i];if(a&&a!==t&&a.length>8)return i.startsWith("OPENROUTER")||i.includes("OPENROUTER_API_KEY")?process.env.OPENROUTER_API_KEY=a:i.startsWith("OPENAI")?process.env.OPENAI_API_KEY=a:i.startsWith("ANTHROPIC")&&(process.env.ANTHROPIC_API_KEY=a),e.info(`Orchestrator: Rotated to backup API key (${i}).`),!0}return!1}function JtA(e){return Math.min(1e3*Math.pow(2,e-1),3e4)}var fC=class extends qtA.EventEmitter{constructor(t,i,a){super();this.MAX_REVISIONS=3;this._busy=!1;this._errorSignatures=new Map;this.logger=t,this.planner=i,this.executor=a,this.logger.info("Orchestrator: Initialized.")}get busy(){return this._busy}async runDirect(t){this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});try{let i=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:i,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:i,steps:[],timestamp:Date.now()})}catch(i){let a=i?.message??String(i);this.logger.warn(`Orchestrator: directChat failed \u2014 ${a}`),await VtA();try{let r=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:r,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:r,steps:[],timestamp:Date.now()})}catch(r){let n=r?.message??String(r);this.emit("finalAnswer",{goal:t,answer:`I'm sorry, I ran into an error: ${n}`,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"failed",error:n,timestamp:Date.now()})}}finally{this._busy=!1}}async run(t){if(cBe(t)==="direct")return this.logger.info(`Orchestrator: Fast-path (direct) \u2014 "${t.slice(0,80)}"`),this.runDirect(t);this.logger.info(`Orchestrator: Agent mode \u2014 "${t.slice(0,80)}"`),this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});let a=0,r=t;for(;a<=this.MAX_REVISIONS;)try{let n=await this.planner.plan(r);if(this.emit("planGenerated",{goal:r,steps:n,timestamp:Date.now()}),!n.length){this.emit("planFinish",{goal:t,status:"empty",timestamp:Date.now()});break}let s=[];for(let c of n){this.emit("stepStart",{step:c,timestamp:Date.now()});let E=await this.executor.executeStep(c);s.push({description:c.description,result:E}),this.emit("stepFinish",{step:c,status:"success",result:E,timestamp:Date.now()})}let o=await this.planner.synthesize(t,s);this.emit("finalAnswer",{goal:t,answer:o,timestamp:Date.now()}),this._errorSignatures.clear(),this.logger.info(`Orchestrator: Goal completed \u2014 "${t}"`),this.emit("planFinish",{goal:t,status:"completed",answer:o,steps:n.map(c=>({description:c.description,tool:c.tool})),timestamp:Date.now()});break}catch(n){a++;let s=n?.message??String(n),o=lBe(s);if(this.logger.warn(`Orchestrator: Step failed [${o}] (revision ${a}/${this.MAX_REVISIONS}) \u2014 ${s}`),this.emit("stepFinish",{status:"error",error:s,errorKind:o,timestamp:Date.now()}),a>this.MAX_REVISIONS){this.logger.error(`Orchestrator: Max revisions hit. Aborting goal "${t}".`),this.emit("planFinish",{goal:t,status:"failed",error:s,timestamp:Date.now()});break}if(o==="auth"){this.logger.info("Orchestrator: Auth error \u2014 reloading .env and attempting key rotation."),await VtA();let u=KtA(this.logger);this.emit("agentRepair",{action:u?"key_rotation":"reload_env",reason:s,timestamp:Date.now()});continue}if(o==="ratelimit"){let u=JtA(a);this.logger.info(`Orchestrator: Rate-limit \u2014 waiting ${u}ms, then trying key rotation.`),await new Promise(Q=>setTimeout(Q,u)),KtA(this.logger),this.emit("agentRepair",{action:"backoff+rotation",waitMs:u,reason:s,timestamp:Date.now()});continue}if(o==="network"){let u=JtA(a);this.logger.info(`Orchestrator: Network error \u2014 waiting ${u}ms then re-planning.`),this.emit("agentRepair",{action:"backoff",waitMs:u,reason:s,timestamp:Date.now()}),await new Promise(Q=>setTimeout(Q,u))}let c=s.slice(0,120),E=(this._errorSignatures.get(c)??0)+1;this._errorSignatures.set(c,E),E>=2?(this.logger.warn(`Orchestrator: Recurring error (\xD7${E}) \u2014 injecting auto-repair context.`),this.emit("agentRepair",{action:"auto_repair",errorSignature:c,occurrences:E,timestamp:Date.now()}),r=[`Auto-repair attempt for: "${t}"`,`Recurring error (\xD7${E}): ${s}`,"Diagnose the root cause, attempt a different approach or skip the failing step, and complete the original goal."].join(" \u2014 ")):r=`Revised: "${t}" \u2014 previous attempt failed: ${s}`}this._busy=!1}};var OC=re(require("fs"),1),MC=re(require("path"),1),oiA=require("child_process"),Q7=re(M0(),1);wD();Q7.default.config({override:!0});function gr(e){return process.env.LLM_MODEL||e}function cn(e,A){try{return Hn.get().resolveApiKey(e,A)}catch{return process.env[A]??""}}function aiA(){Q7.default.config({override:!0});let e=(process.env.LLM_PROVIDER??"openrouter").toLowerCase();if(e==="openai"){let t=cn("openai","OPENAI_API_KEY");return{baseUrl:"https://api.openai.com/v1",apiKey:t,provider:e,model:gr(process.env.OPENAI_MODEL??"gpt-4o-mini"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="anthropic"){let t=cn("anthropic","ANTHROPIC_API_KEY");return{baseUrl:"https://api.anthropic.com/v1",apiKey:t,provider:e,model:gr(process.env.ANTHROPIC_MODEL??"claude-3-5-haiku-20241022"),headers:{"x-api-key":t,"anthropic-version":"2023-06-01","Content-Type":"application/json"},noJM:!0}}if(e==="gemini"){let t=cn("gemini","GOOGLE_API_KEY"),i=gr(process.env.GEMINI_MODEL??"gemini-1.5-flash");return{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models/"+i+":generateContent?key="+t,apiKey:t,model:i,provider:e,headers:{"Content-Type":"application/json"},noJM:!0}}if(e==="groq"){let t=cn("groq","GROQ_API_KEY");return{baseUrl:"https://api.groq.com/openai/v1",apiKey:t,provider:e,model:gr(process.env.GROQ_MODEL??"llama3-8b-8192"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="ollama")return{baseUrl:(process.env.OLLAMA_BASE_URL??"http://localhost:11434")+"/v1",apiKey:"ollama",provider:e,model:gr(process.env.OLLAMA_MODEL??"llama3"),headers:{"Content-Type":"application/json"},noJM:!0};if(e==="mistral"){let t=cn("mistral","MISTRAL_API_KEY");return{baseUrl:"https://api.mistral.ai/v1",apiKey:t,provider:e,model:gr(process.env.MISTRAL_MODEL??"mistral-small-latest"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="xai"){let t=cn("xai","XAI_API_KEY");return{baseUrl:"https://api.x.ai/v1",apiKey:t,provider:e,model:gr(process.env.XAI_MODEL??"grok-beta"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="deepseek"){let t=cn("deepseek","DEEPSEEK_API_KEY");return{baseUrl:"https://api.deepseek.com/v1",apiKey:t,provider:e,model:gr(process.env.DEEPSEEK_MODEL??"deepseek-chat"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="together"){let t=cn("together","TOGETHER_API_KEY");return{baseUrl:"https://api.together.xyz/v1",apiKey:t,provider:e,model:gr(process.env.TOGETHER_MODEL??"meta-llama/Llama-3-8b-chat-hf"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="moonshot"){let t=cn("moonshot","MOONSHOT_API_KEY");return{baseUrl:"https://api.moonshot.cn/v1",apiKey:t,provider:e,model:gr(process.env.MOONSHOT_MODEL??"moonshot-v1-8k"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="azure"){let t=cn("azure","AZURE_OPENAI_API_KEY"),i=process.env.AZURE_OPENAI_ENDPOINT??"",a=process.env.AZURE_OPENAI_DEPLOYMENT??"gpt-4o-mini",r=process.env.AZURE_OPENAI_API_VERSION??"2024-02-01";return{baseUrl:i+"/openai/deployments/"+a+"/chat/completions?api-version="+r,apiKey:t,model:a,provider:e,headers:{"api-key":t,"Content-Type":"application/json"}}}if(e==="vertex"){let t=process.env.GOOGLE_CLOUD_PROJECT??"",i=process.env.VERTEX_LOCATION??"us-central1",a=gr(process.env.VERTEX_MODEL??"gemini-1.5-flash-001"),r="";try{r=require("child_process").execSync("gcloud auth print-access-token",{encoding:"utf-8"}).trim()}catch{}return{baseUrl:"https://"+i+"-aiplatform.googleapis.com/v1/projects/"+t+"/locations/"+i+"/publishers/google/models/"+a+":generateContent",apiKey:r,model:a,provider:e,headers:{Authorization:"Bearer "+r,"Content-Type":"application/json"},noJM:!0}}if(e==="perplexity"){let t=cn("perplexity","PERPLEXITY_API_KEY");return{baseUrl:"https://api.perplexity.ai",apiKey:t,provider:e,model:gr(process.env.PERPLEXITY_MODEL??"llama-3.1-sonar-small-128k-online"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cohere"){let t=cn("cohere","COHERE_API_KEY");return{baseUrl:"https://api.cohere.ai/compatibility/v1",apiKey:t,provider:e,model:gr(process.env.COHERE_MODEL??"command-r-plus"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="fireworks"){let t=cn("fireworks","FIREWORKS_API_KEY");return{baseUrl:"https://api.fireworks.ai/inference/v1",apiKey:t,provider:e,model:gr(process.env.FIREWORKS_MODEL??"accounts/fireworks/models/llama-v3p1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="nvidia"){let t=cn("nvidia","NVIDIA_API_KEY");return{baseUrl:"https://integrate.api.nvidia.com/v1",apiKey:t,provider:e,model:gr(process.env.NVIDIA_MODEL??"meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cloudflare"){let t=process.env.CLOUDFLARE_ACCOUNT_ID??"",i=cn("cloudflare","CLOUDFLARE_API_KEY");return{baseUrl:`https://api.cloudflare.com/client/v4/accounts/${t}/ai/v1`,apiKey:i,provider:e,model:gr(process.env.CLOUDFLARE_MODEL??"@cf/meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}if(e==="custom"){let t=(process.env.CUSTOM_API_BASE_URL??"").replace(/\/+$/,""),i=process.env.CUSTOM_API_KEY??"";return{baseUrl:t+"/v1",apiKey:i,provider:e,model:gr(process.env.CUSTOM_MODEL??"default"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}let A=cn("openrouter","OPENROUTER_API_KEY");return{baseUrl:"https://openrouter.ai/api/v1",apiKey:A,provider:"openrouter",model:gr(process.env.OPENROUTER_MODEL??"openai/gpt-4o-mini"),headers:{Authorization:"Bearer "+A,"Content-Type":"application/json","HTTP-Referer":"https://must-b.ai","X-Title":"Must-b Agent"}}}function mBe(e){process.env.OLLAMA_MODEL=e,process.env.LLM_MODEL=e;try{let A=MC.default.join(process.cwd(),".env"),t="";try{t=OC.default.readFileSync(A,"utf-8")}catch{}let i=(a,r,n)=>{let s=a.split(`
4034
+ \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D `;function nBe(){try{return"1.6.1"}catch{return"1.0.0"}}function sBe(){try{return"f8b3c5c"}catch{return""}}function KB(e,A=58){let t=e.replace(/\x1b\[[0-9;]*m/g,""),i=Math.max(0,Math.floor((A-t.length)/2));return" ".repeat(i)+e}function ztA(e="\u2500",A=58){return Ss(" "+e.repeat(A))}function DD(e,A){let t=nBe(),i=sBe();console.log(jtA(rBe)),console.log(""),console.log(KB(iBe(tBe("Must-b"))+" "+WtA("v"+t))),console.log(KB(Ss("Professional AI Operating System"))),console.log(""),console.log(KB(jtA("\u26A1 Autonomous \xB7 Precise \xB7 Always On"))),console.log(KB(Ss("Vision")+Ss(" \xB7 ")+Ss("Voice")+Ss(" \xB7 ")+Ss("OS Control")+Ss(" \xB7 ")+Ss("Multi-Agent Hierarchy"))),console.log(""),console.log(ztA()),console.log("");let a=[`Node ${process.version}`,`Mode: ${e.toUpperCase()}`,`PID ${process.pid}`,i?`#${i}`:null].filter(Boolean).join(Ss(" \xB7 "));console.log(KB(Ss(a))),e==="web"&&(console.log(""),console.log(KB(aBe("\u25B6 ")+WtA(`http://localhost:${A}`))),console.log(KB(Ss("Dashboard is live \u2014 open in your browser")))),console.log(""),console.log(ztA()),console.log(KB(Ss("Built by Auto Step \xB7 https://must-b.com"))),console.log("")}var qtA=require("events"),ZtA=require("module"),XtA=re(require("path"),1),EBe={};var oBe=[/\b(navigate|browse)\b/i,/\bopen\s+(the\s+)?(website|url|browser|page|site|link)\b/i,/\b(go\s+to|visit|open)\s+https?:\/\//i,/https?:\/\/\S+/,/\bread\s+(the\s+)?(file|folder|directory|path)\b/i,/\bwrite\s+(to\s+)?(the\s+)?(file|disk|path)\b/i,/\b(create|delete|remove|rename|move|copy)\s+(a\s+)?(file|folder|directory|script)\b/i,/\bsave\s+(this|it)\s+to\b/i,/\bpatch\s+(the\s+)?file\b/i,/\b(run|execute|launch)\s+(a\s+)?(command|script|program|code)\b/i,/\bterminal\b/i,/\bbash\b/i,/\bnpm\s+\w/i,/\bgit\s+(clone|commit|push|pull|checkout|status|log|diff|add|merge)\b/i,/\bpython\s+\w.*\.py\b/i,/\b(search|look\s+up)\s+(the\s+)?(web|internet|online|google|bing)\b/i,/\bfind\s+(it\s+)?(online|on\s+the\s+web)\b/i,/\b(take\s+a?\s*)screenshot\b/i,/\bdownload\b/i,/\binstall\b/i,/\blist\s+(the\s+)?(files|folders|contents)\b/i,/\bclick\s+(on\s+)?(the\s+)?\w/i,/\btype\s+(into|in)\b/i];function cBe(e){for(let A of oBe)if(A.test(e))return"agent";return"direct"}function lBe(e){let A=e.toLowerCase();return A.includes("401")||A.includes("unauthorized")||A.includes("api key")||A.includes("invalid key")?"auth":A.includes("429")||A.includes("rate limit")||A.includes("too many requests")?"ratelimit":A.includes("econnrefused")||A.includes("enotfound")||A.includes("fetch failed")||A.includes("network")?"network":"unknown"}async function VtA(){try{let A=(0,ZtA.createRequire)(EBe.url)("dotenv"),t=XtA.default.join(process.cwd(),".env");A.config({path:t,override:!0})}catch{}}function KtA(e){let A=["OPENROUTER_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY_2","OPENROUTER_API_KEY_3","OPENAI_API_KEY_2","ANTHROPIC_API_KEY_2"],t=process.env.OPENROUTER_API_KEY??process.env.OPENAI_API_KEY??process.env.ANTHROPIC_API_KEY??"";for(let i of A){let a=process.env[i];if(a&&a!==t&&a.length>8)return i.startsWith("OPENROUTER")||i.includes("OPENROUTER_API_KEY")?process.env.OPENROUTER_API_KEY=a:i.startsWith("OPENAI")?process.env.OPENAI_API_KEY=a:i.startsWith("ANTHROPIC")&&(process.env.ANTHROPIC_API_KEY=a),e.info(`Orchestrator: Rotated to backup API key (${i}).`),!0}return!1}function JtA(e){return Math.min(1e3*Math.pow(2,e-1),3e4)}var fC=class extends qtA.EventEmitter{constructor(t,i,a){super();this.MAX_REVISIONS=3;this._busy=!1;this._errorSignatures=new Map;this.logger=t,this.planner=i,this.executor=a,this.logger.info("Orchestrator: Initialized.")}get busy(){return this._busy}async runDirect(t){this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});try{let i=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:i,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:i,steps:[],timestamp:Date.now()})}catch(i){let a=i?.message??String(i);this.logger.warn(`Orchestrator: directChat failed \u2014 ${a}`),await VtA();try{let r=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:r,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:r,steps:[],timestamp:Date.now()})}catch(r){let n=r?.message??String(r);this.emit("finalAnswer",{goal:t,answer:`I'm sorry, I ran into an error: ${n}`,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"failed",error:n,timestamp:Date.now()})}}finally{this._busy=!1}}async run(t){if(cBe(t)==="direct")return this.logger.info(`Orchestrator: Fast-path (direct) \u2014 "${t.slice(0,80)}"`),this.runDirect(t);this.logger.info(`Orchestrator: Agent mode \u2014 "${t.slice(0,80)}"`),this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});let a=0,r=t;for(;a<=this.MAX_REVISIONS;)try{let n=await this.planner.plan(r);if(this.emit("planGenerated",{goal:r,steps:n,timestamp:Date.now()}),!n.length){this.emit("planFinish",{goal:t,status:"empty",timestamp:Date.now()});break}let s=[];for(let c of n){this.emit("stepStart",{step:c,timestamp:Date.now()});let E=await this.executor.executeStep(c);s.push({description:c.description,result:E}),this.emit("stepFinish",{step:c,status:"success",result:E,timestamp:Date.now()})}let o=await this.planner.synthesize(t,s);this.emit("finalAnswer",{goal:t,answer:o,timestamp:Date.now()}),this._errorSignatures.clear(),this.logger.info(`Orchestrator: Goal completed \u2014 "${t}"`),this.emit("planFinish",{goal:t,status:"completed",answer:o,steps:n.map(c=>({description:c.description,tool:c.tool})),timestamp:Date.now()});break}catch(n){a++;let s=n?.message??String(n),o=lBe(s);if(this.logger.warn(`Orchestrator: Step failed [${o}] (revision ${a}/${this.MAX_REVISIONS}) \u2014 ${s}`),this.emit("stepFinish",{status:"error",error:s,errorKind:o,timestamp:Date.now()}),a>this.MAX_REVISIONS){this.logger.error(`Orchestrator: Max revisions hit. Aborting goal "${t}".`),this.emit("planFinish",{goal:t,status:"failed",error:s,timestamp:Date.now()});break}if(o==="auth"){this.logger.info("Orchestrator: Auth error \u2014 reloading .env and attempting key rotation."),await VtA();let u=KtA(this.logger);this.emit("agentRepair",{action:u?"key_rotation":"reload_env",reason:s,timestamp:Date.now()});continue}if(o==="ratelimit"){let u=JtA(a);this.logger.info(`Orchestrator: Rate-limit \u2014 waiting ${u}ms, then trying key rotation.`),await new Promise(Q=>setTimeout(Q,u)),KtA(this.logger),this.emit("agentRepair",{action:"backoff+rotation",waitMs:u,reason:s,timestamp:Date.now()});continue}if(o==="network"){let u=JtA(a);this.logger.info(`Orchestrator: Network error \u2014 waiting ${u}ms then re-planning.`),this.emit("agentRepair",{action:"backoff",waitMs:u,reason:s,timestamp:Date.now()}),await new Promise(Q=>setTimeout(Q,u))}let c=s.slice(0,120),E=(this._errorSignatures.get(c)??0)+1;this._errorSignatures.set(c,E),E>=2?(this.logger.warn(`Orchestrator: Recurring error (\xD7${E}) \u2014 injecting auto-repair context.`),this.emit("agentRepair",{action:"auto_repair",errorSignature:c,occurrences:E,timestamp:Date.now()}),r=[`Auto-repair attempt for: "${t}"`,`Recurring error (\xD7${E}): ${s}`,"Diagnose the root cause, attempt a different approach or skip the failing step, and complete the original goal."].join(" \u2014 ")):r=`Revised: "${t}" \u2014 previous attempt failed: ${s}`}this._busy=!1}};var OC=re(require("fs"),1),MC=re(require("path"),1),oiA=require("child_process"),Q7=re(M0(),1);wD();Q7.default.config({override:!0});function gr(e){return process.env.LLM_MODEL||e}function cn(e,A){try{return Hn.get().resolveApiKey(e,A)}catch{return process.env[A]??""}}function aiA(){Q7.default.config({override:!0});let e=(process.env.LLM_PROVIDER??"openrouter").toLowerCase();if(e==="openai"){let t=cn("openai","OPENAI_API_KEY");return{baseUrl:"https://api.openai.com/v1",apiKey:t,provider:e,model:gr(process.env.OPENAI_MODEL??"gpt-4o-mini"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="anthropic"){let t=cn("anthropic","ANTHROPIC_API_KEY");return{baseUrl:"https://api.anthropic.com/v1",apiKey:t,provider:e,model:gr(process.env.ANTHROPIC_MODEL??"claude-3-5-haiku-20241022"),headers:{"x-api-key":t,"anthropic-version":"2023-06-01","Content-Type":"application/json"},noJM:!0}}if(e==="gemini"){let t=cn("gemini","GOOGLE_API_KEY"),i=gr(process.env.GEMINI_MODEL??"gemini-1.5-flash");return{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models/"+i+":generateContent?key="+t,apiKey:t,model:i,provider:e,headers:{"Content-Type":"application/json"},noJM:!0}}if(e==="groq"){let t=cn("groq","GROQ_API_KEY");return{baseUrl:"https://api.groq.com/openai/v1",apiKey:t,provider:e,model:gr(process.env.GROQ_MODEL??"llama3-8b-8192"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="ollama")return{baseUrl:(process.env.OLLAMA_BASE_URL??"http://localhost:11434")+"/v1",apiKey:"ollama",provider:e,model:gr(process.env.OLLAMA_MODEL??"llama3"),headers:{"Content-Type":"application/json"},noJM:!0};if(e==="mistral"){let t=cn("mistral","MISTRAL_API_KEY");return{baseUrl:"https://api.mistral.ai/v1",apiKey:t,provider:e,model:gr(process.env.MISTRAL_MODEL??"mistral-small-latest"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="xai"){let t=cn("xai","XAI_API_KEY");return{baseUrl:"https://api.x.ai/v1",apiKey:t,provider:e,model:gr(process.env.XAI_MODEL??"grok-beta"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="deepseek"){let t=cn("deepseek","DEEPSEEK_API_KEY");return{baseUrl:"https://api.deepseek.com/v1",apiKey:t,provider:e,model:gr(process.env.DEEPSEEK_MODEL??"deepseek-chat"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="together"){let t=cn("together","TOGETHER_API_KEY");return{baseUrl:"https://api.together.xyz/v1",apiKey:t,provider:e,model:gr(process.env.TOGETHER_MODEL??"meta-llama/Llama-3-8b-chat-hf"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="moonshot"){let t=cn("moonshot","MOONSHOT_API_KEY");return{baseUrl:"https://api.moonshot.cn/v1",apiKey:t,provider:e,model:gr(process.env.MOONSHOT_MODEL??"moonshot-v1-8k"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="azure"){let t=cn("azure","AZURE_OPENAI_API_KEY"),i=process.env.AZURE_OPENAI_ENDPOINT??"",a=process.env.AZURE_OPENAI_DEPLOYMENT??"gpt-4o-mini",r=process.env.AZURE_OPENAI_API_VERSION??"2024-02-01";return{baseUrl:i+"/openai/deployments/"+a+"/chat/completions?api-version="+r,apiKey:t,model:a,provider:e,headers:{"api-key":t,"Content-Type":"application/json"}}}if(e==="vertex"){let t=process.env.GOOGLE_CLOUD_PROJECT??"",i=process.env.VERTEX_LOCATION??"us-central1",a=gr(process.env.VERTEX_MODEL??"gemini-1.5-flash-001"),r="";try{r=require("child_process").execSync("gcloud auth print-access-token",{encoding:"utf-8"}).trim()}catch{}return{baseUrl:"https://"+i+"-aiplatform.googleapis.com/v1/projects/"+t+"/locations/"+i+"/publishers/google/models/"+a+":generateContent",apiKey:r,model:a,provider:e,headers:{Authorization:"Bearer "+r,"Content-Type":"application/json"},noJM:!0}}if(e==="perplexity"){let t=cn("perplexity","PERPLEXITY_API_KEY");return{baseUrl:"https://api.perplexity.ai",apiKey:t,provider:e,model:gr(process.env.PERPLEXITY_MODEL??"llama-3.1-sonar-small-128k-online"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cohere"){let t=cn("cohere","COHERE_API_KEY");return{baseUrl:"https://api.cohere.ai/compatibility/v1",apiKey:t,provider:e,model:gr(process.env.COHERE_MODEL??"command-r-plus"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="fireworks"){let t=cn("fireworks","FIREWORKS_API_KEY");return{baseUrl:"https://api.fireworks.ai/inference/v1",apiKey:t,provider:e,model:gr(process.env.FIREWORKS_MODEL??"accounts/fireworks/models/llama-v3p1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="nvidia"){let t=cn("nvidia","NVIDIA_API_KEY");return{baseUrl:"https://integrate.api.nvidia.com/v1",apiKey:t,provider:e,model:gr(process.env.NVIDIA_MODEL??"meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cloudflare"){let t=process.env.CLOUDFLARE_ACCOUNT_ID??"",i=cn("cloudflare","CLOUDFLARE_API_KEY");return{baseUrl:`https://api.cloudflare.com/client/v4/accounts/${t}/ai/v1`,apiKey:i,provider:e,model:gr(process.env.CLOUDFLARE_MODEL??"@cf/meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}if(e==="custom"){let t=(process.env.CUSTOM_API_BASE_URL??"").replace(/\/+$/,""),i=process.env.CUSTOM_API_KEY??"";return{baseUrl:t+"/v1",apiKey:i,provider:e,model:gr(process.env.CUSTOM_MODEL??"default"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}let A=cn("openrouter","OPENROUTER_API_KEY");return{baseUrl:"https://openrouter.ai/api/v1",apiKey:A,provider:"openrouter",model:gr(process.env.OPENROUTER_MODEL??"openai/gpt-4o-mini"),headers:{Authorization:"Bearer "+A,"Content-Type":"application/json","HTTP-Referer":"https://must-b.ai","X-Title":"Must-b Agent"}}}function mBe(e){process.env.OLLAMA_MODEL=e,process.env.LLM_MODEL=e;try{let A=MC.default.join(process.cwd(),".env"),t="";try{t=OC.default.readFileSync(A,"utf-8")}catch{}let i=(a,r,n)=>{let s=a.split(`
4035
4035
  `),o=s.findIndex(c=>c.startsWith(r+"="));return o>=0?s[o]=`${r}=${n}`:s.push(`${r}=${n}`),s.filter(c=>c!=="").join(`
4036
4036
  `)+`
4037
4037
  `};t=i(t,"OLLAMA_MODEL",e),t=i(t,"LLM_MODEL",e),OC.default.writeFileSync(A,t,"utf-8")}catch{}}async function riA(e,A,t,i){let a="[System Error: No Ollama models installed. Please pull a model via `ollama pull <name>` or the Must-b UI.]",r="",n=(E,u)=>{let Q=(0,oiA.spawnSync)(E,["list"],{encoding:"utf8",timeout:6e3,shell:u});return Q.status===0?Q.stdout??"":""};if(r=n("ollama",!0),!r){let E=MC.default.join(process.env.LOCALAPPDATA??MC.default.join(process.env.USERPROFILE??"","AppData","Local"),"Programs","Ollama","ollama.exe");OC.default.existsSync(E)&&(r=n(E,!1))}let s=r.split(`
package/dist/index.js CHANGED
@@ -4031,7 +4031,7 @@ ${p}${D}`+m.repeat(Q)+`${p}`,I}function c(Q,g,h,p){return`${g}${p}`+h.repeat(Q)+
4031
4031
  \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D
4032
4032
  \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557
4033
4033
  \u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D
4034
- \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D `;function nBe(){try{return"1.6.0"}catch{return"1.0.0"}}function sBe(){try{return"9c882ee"}catch{return""}}function KB(e,A=58){let t=e.replace(/\x1b\[[0-9;]*m/g,""),i=Math.max(0,Math.floor((A-t.length)/2));return" ".repeat(i)+e}function ztA(e="\u2500",A=58){return Ss(" "+e.repeat(A))}function DD(e,A){let t=nBe(),i=sBe();console.log(jtA(rBe)),console.log(""),console.log(KB(iBe(tBe("Must-b"))+" "+WtA("v"+t))),console.log(KB(Ss("Professional AI Operating System"))),console.log(""),console.log(KB(jtA("\u26A1 Autonomous \xB7 Precise \xB7 Always On"))),console.log(KB(Ss("Vision")+Ss(" \xB7 ")+Ss("Voice")+Ss(" \xB7 ")+Ss("OS Control")+Ss(" \xB7 ")+Ss("Multi-Agent Hierarchy"))),console.log(""),console.log(ztA()),console.log("");let a=[`Node ${process.version}`,`Mode: ${e.toUpperCase()}`,`PID ${process.pid}`,i?`#${i}`:null].filter(Boolean).join(Ss(" \xB7 "));console.log(KB(Ss(a))),e==="web"&&(console.log(""),console.log(KB(aBe("\u25B6 ")+WtA(`http://localhost:${A}`))),console.log(KB(Ss("Dashboard is live \u2014 open in your browser")))),console.log(""),console.log(ztA()),console.log(KB(Ss("Built by Auto Step \xB7 https://must-b.com"))),console.log("")}var qtA=require("events"),ZtA=require("module"),XtA=re(require("path"),1),EBe={};var oBe=[/\b(navigate|browse)\b/i,/\bopen\s+(the\s+)?(website|url|browser|page|site|link)\b/i,/\b(go\s+to|visit|open)\s+https?:\/\//i,/https?:\/\/\S+/,/\bread\s+(the\s+)?(file|folder|directory|path)\b/i,/\bwrite\s+(to\s+)?(the\s+)?(file|disk|path)\b/i,/\b(create|delete|remove|rename|move|copy)\s+(a\s+)?(file|folder|directory|script)\b/i,/\bsave\s+(this|it)\s+to\b/i,/\bpatch\s+(the\s+)?file\b/i,/\b(run|execute|launch)\s+(a\s+)?(command|script|program|code)\b/i,/\bterminal\b/i,/\bbash\b/i,/\bnpm\s+\w/i,/\bgit\s+(clone|commit|push|pull|checkout|status|log|diff|add|merge)\b/i,/\bpython\s+\w.*\.py\b/i,/\b(search|look\s+up)\s+(the\s+)?(web|internet|online|google|bing)\b/i,/\bfind\s+(it\s+)?(online|on\s+the\s+web)\b/i,/\b(take\s+a?\s*)screenshot\b/i,/\bdownload\b/i,/\binstall\b/i,/\blist\s+(the\s+)?(files|folders|contents)\b/i,/\bclick\s+(on\s+)?(the\s+)?\w/i,/\btype\s+(into|in)\b/i];function cBe(e){for(let A of oBe)if(A.test(e))return"agent";return"direct"}function lBe(e){let A=e.toLowerCase();return A.includes("401")||A.includes("unauthorized")||A.includes("api key")||A.includes("invalid key")?"auth":A.includes("429")||A.includes("rate limit")||A.includes("too many requests")?"ratelimit":A.includes("econnrefused")||A.includes("enotfound")||A.includes("fetch failed")||A.includes("network")?"network":"unknown"}async function VtA(){try{let A=(0,ZtA.createRequire)(EBe.url)("dotenv"),t=XtA.default.join(process.cwd(),".env");A.config({path:t,override:!0})}catch{}}function KtA(e){let A=["OPENROUTER_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY_2","OPENROUTER_API_KEY_3","OPENAI_API_KEY_2","ANTHROPIC_API_KEY_2"],t=process.env.OPENROUTER_API_KEY??process.env.OPENAI_API_KEY??process.env.ANTHROPIC_API_KEY??"";for(let i of A){let a=process.env[i];if(a&&a!==t&&a.length>8)return i.startsWith("OPENROUTER")||i.includes("OPENROUTER_API_KEY")?process.env.OPENROUTER_API_KEY=a:i.startsWith("OPENAI")?process.env.OPENAI_API_KEY=a:i.startsWith("ANTHROPIC")&&(process.env.ANTHROPIC_API_KEY=a),e.info(`Orchestrator: Rotated to backup API key (${i}).`),!0}return!1}function JtA(e){return Math.min(1e3*Math.pow(2,e-1),3e4)}var fC=class extends qtA.EventEmitter{constructor(t,i,a){super();this.MAX_REVISIONS=3;this._busy=!1;this._errorSignatures=new Map;this.logger=t,this.planner=i,this.executor=a,this.logger.info("Orchestrator: Initialized.")}get busy(){return this._busy}async runDirect(t){this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});try{let i=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:i,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:i,steps:[],timestamp:Date.now()})}catch(i){let a=i?.message??String(i);this.logger.warn(`Orchestrator: directChat failed \u2014 ${a}`),await VtA();try{let r=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:r,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:r,steps:[],timestamp:Date.now()})}catch(r){let n=r?.message??String(r);this.emit("finalAnswer",{goal:t,answer:`I'm sorry, I ran into an error: ${n}`,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"failed",error:n,timestamp:Date.now()})}}finally{this._busy=!1}}async run(t){if(cBe(t)==="direct")return this.logger.info(`Orchestrator: Fast-path (direct) \u2014 "${t.slice(0,80)}"`),this.runDirect(t);this.logger.info(`Orchestrator: Agent mode \u2014 "${t.slice(0,80)}"`),this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});let a=0,r=t;for(;a<=this.MAX_REVISIONS;)try{let n=await this.planner.plan(r);if(this.emit("planGenerated",{goal:r,steps:n,timestamp:Date.now()}),!n.length){this.emit("planFinish",{goal:t,status:"empty",timestamp:Date.now()});break}let s=[];for(let c of n){this.emit("stepStart",{step:c,timestamp:Date.now()});let E=await this.executor.executeStep(c);s.push({description:c.description,result:E}),this.emit("stepFinish",{step:c,status:"success",result:E,timestamp:Date.now()})}let o=await this.planner.synthesize(t,s);this.emit("finalAnswer",{goal:t,answer:o,timestamp:Date.now()}),this._errorSignatures.clear(),this.logger.info(`Orchestrator: Goal completed \u2014 "${t}"`),this.emit("planFinish",{goal:t,status:"completed",answer:o,steps:n.map(c=>({description:c.description,tool:c.tool})),timestamp:Date.now()});break}catch(n){a++;let s=n?.message??String(n),o=lBe(s);if(this.logger.warn(`Orchestrator: Step failed [${o}] (revision ${a}/${this.MAX_REVISIONS}) \u2014 ${s}`),this.emit("stepFinish",{status:"error",error:s,errorKind:o,timestamp:Date.now()}),a>this.MAX_REVISIONS){this.logger.error(`Orchestrator: Max revisions hit. Aborting goal "${t}".`),this.emit("planFinish",{goal:t,status:"failed",error:s,timestamp:Date.now()});break}if(o==="auth"){this.logger.info("Orchestrator: Auth error \u2014 reloading .env and attempting key rotation."),await VtA();let u=KtA(this.logger);this.emit("agentRepair",{action:u?"key_rotation":"reload_env",reason:s,timestamp:Date.now()});continue}if(o==="ratelimit"){let u=JtA(a);this.logger.info(`Orchestrator: Rate-limit \u2014 waiting ${u}ms, then trying key rotation.`),await new Promise(Q=>setTimeout(Q,u)),KtA(this.logger),this.emit("agentRepair",{action:"backoff+rotation",waitMs:u,reason:s,timestamp:Date.now()});continue}if(o==="network"){let u=JtA(a);this.logger.info(`Orchestrator: Network error \u2014 waiting ${u}ms then re-planning.`),this.emit("agentRepair",{action:"backoff",waitMs:u,reason:s,timestamp:Date.now()}),await new Promise(Q=>setTimeout(Q,u))}let c=s.slice(0,120),E=(this._errorSignatures.get(c)??0)+1;this._errorSignatures.set(c,E),E>=2?(this.logger.warn(`Orchestrator: Recurring error (\xD7${E}) \u2014 injecting auto-repair context.`),this.emit("agentRepair",{action:"auto_repair",errorSignature:c,occurrences:E,timestamp:Date.now()}),r=[`Auto-repair attempt for: "${t}"`,`Recurring error (\xD7${E}): ${s}`,"Diagnose the root cause, attempt a different approach or skip the failing step, and complete the original goal."].join(" \u2014 ")):r=`Revised: "${t}" \u2014 previous attempt failed: ${s}`}this._busy=!1}};var OC=re(require("fs"),1),MC=re(require("path"),1),oiA=require("child_process"),Q7=re(M0(),1);wD();Q7.default.config({override:!0});function gr(e){return process.env.LLM_MODEL||e}function cn(e,A){try{return Hn.get().resolveApiKey(e,A)}catch{return process.env[A]??""}}function aiA(){Q7.default.config({override:!0});let e=(process.env.LLM_PROVIDER??"openrouter").toLowerCase();if(e==="openai"){let t=cn("openai","OPENAI_API_KEY");return{baseUrl:"https://api.openai.com/v1",apiKey:t,provider:e,model:gr(process.env.OPENAI_MODEL??"gpt-4o-mini"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="anthropic"){let t=cn("anthropic","ANTHROPIC_API_KEY");return{baseUrl:"https://api.anthropic.com/v1",apiKey:t,provider:e,model:gr(process.env.ANTHROPIC_MODEL??"claude-3-5-haiku-20241022"),headers:{"x-api-key":t,"anthropic-version":"2023-06-01","Content-Type":"application/json"},noJM:!0}}if(e==="gemini"){let t=cn("gemini","GOOGLE_API_KEY"),i=gr(process.env.GEMINI_MODEL??"gemini-1.5-flash");return{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models/"+i+":generateContent?key="+t,apiKey:t,model:i,provider:e,headers:{"Content-Type":"application/json"},noJM:!0}}if(e==="groq"){let t=cn("groq","GROQ_API_KEY");return{baseUrl:"https://api.groq.com/openai/v1",apiKey:t,provider:e,model:gr(process.env.GROQ_MODEL??"llama3-8b-8192"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="ollama")return{baseUrl:(process.env.OLLAMA_BASE_URL??"http://localhost:11434")+"/v1",apiKey:"ollama",provider:e,model:gr(process.env.OLLAMA_MODEL??"llama3"),headers:{"Content-Type":"application/json"},noJM:!0};if(e==="mistral"){let t=cn("mistral","MISTRAL_API_KEY");return{baseUrl:"https://api.mistral.ai/v1",apiKey:t,provider:e,model:gr(process.env.MISTRAL_MODEL??"mistral-small-latest"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="xai"){let t=cn("xai","XAI_API_KEY");return{baseUrl:"https://api.x.ai/v1",apiKey:t,provider:e,model:gr(process.env.XAI_MODEL??"grok-beta"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="deepseek"){let t=cn("deepseek","DEEPSEEK_API_KEY");return{baseUrl:"https://api.deepseek.com/v1",apiKey:t,provider:e,model:gr(process.env.DEEPSEEK_MODEL??"deepseek-chat"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="together"){let t=cn("together","TOGETHER_API_KEY");return{baseUrl:"https://api.together.xyz/v1",apiKey:t,provider:e,model:gr(process.env.TOGETHER_MODEL??"meta-llama/Llama-3-8b-chat-hf"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="moonshot"){let t=cn("moonshot","MOONSHOT_API_KEY");return{baseUrl:"https://api.moonshot.cn/v1",apiKey:t,provider:e,model:gr(process.env.MOONSHOT_MODEL??"moonshot-v1-8k"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="azure"){let t=cn("azure","AZURE_OPENAI_API_KEY"),i=process.env.AZURE_OPENAI_ENDPOINT??"",a=process.env.AZURE_OPENAI_DEPLOYMENT??"gpt-4o-mini",r=process.env.AZURE_OPENAI_API_VERSION??"2024-02-01";return{baseUrl:i+"/openai/deployments/"+a+"/chat/completions?api-version="+r,apiKey:t,model:a,provider:e,headers:{"api-key":t,"Content-Type":"application/json"}}}if(e==="vertex"){let t=process.env.GOOGLE_CLOUD_PROJECT??"",i=process.env.VERTEX_LOCATION??"us-central1",a=gr(process.env.VERTEX_MODEL??"gemini-1.5-flash-001"),r="";try{r=require("child_process").execSync("gcloud auth print-access-token",{encoding:"utf-8"}).trim()}catch{}return{baseUrl:"https://"+i+"-aiplatform.googleapis.com/v1/projects/"+t+"/locations/"+i+"/publishers/google/models/"+a+":generateContent",apiKey:r,model:a,provider:e,headers:{Authorization:"Bearer "+r,"Content-Type":"application/json"},noJM:!0}}if(e==="perplexity"){let t=cn("perplexity","PERPLEXITY_API_KEY");return{baseUrl:"https://api.perplexity.ai",apiKey:t,provider:e,model:gr(process.env.PERPLEXITY_MODEL??"llama-3.1-sonar-small-128k-online"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cohere"){let t=cn("cohere","COHERE_API_KEY");return{baseUrl:"https://api.cohere.ai/compatibility/v1",apiKey:t,provider:e,model:gr(process.env.COHERE_MODEL??"command-r-plus"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="fireworks"){let t=cn("fireworks","FIREWORKS_API_KEY");return{baseUrl:"https://api.fireworks.ai/inference/v1",apiKey:t,provider:e,model:gr(process.env.FIREWORKS_MODEL??"accounts/fireworks/models/llama-v3p1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="nvidia"){let t=cn("nvidia","NVIDIA_API_KEY");return{baseUrl:"https://integrate.api.nvidia.com/v1",apiKey:t,provider:e,model:gr(process.env.NVIDIA_MODEL??"meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cloudflare"){let t=process.env.CLOUDFLARE_ACCOUNT_ID??"",i=cn("cloudflare","CLOUDFLARE_API_KEY");return{baseUrl:`https://api.cloudflare.com/client/v4/accounts/${t}/ai/v1`,apiKey:i,provider:e,model:gr(process.env.CLOUDFLARE_MODEL??"@cf/meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}if(e==="custom"){let t=(process.env.CUSTOM_API_BASE_URL??"").replace(/\/+$/,""),i=process.env.CUSTOM_API_KEY??"";return{baseUrl:t+"/v1",apiKey:i,provider:e,model:gr(process.env.CUSTOM_MODEL??"default"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}let A=cn("openrouter","OPENROUTER_API_KEY");return{baseUrl:"https://openrouter.ai/api/v1",apiKey:A,provider:"openrouter",model:gr(process.env.OPENROUTER_MODEL??"openai/gpt-4o-mini"),headers:{Authorization:"Bearer "+A,"Content-Type":"application/json","HTTP-Referer":"https://must-b.ai","X-Title":"Must-b Agent"}}}function mBe(e){process.env.OLLAMA_MODEL=e,process.env.LLM_MODEL=e;try{let A=MC.default.join(process.cwd(),".env"),t="";try{t=OC.default.readFileSync(A,"utf-8")}catch{}let i=(a,r,n)=>{let s=a.split(`
4034
+ \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D `;function nBe(){try{return"1.6.1"}catch{return"1.0.0"}}function sBe(){try{return"f8b3c5c"}catch{return""}}function KB(e,A=58){let t=e.replace(/\x1b\[[0-9;]*m/g,""),i=Math.max(0,Math.floor((A-t.length)/2));return" ".repeat(i)+e}function ztA(e="\u2500",A=58){return Ss(" "+e.repeat(A))}function DD(e,A){let t=nBe(),i=sBe();console.log(jtA(rBe)),console.log(""),console.log(KB(iBe(tBe("Must-b"))+" "+WtA("v"+t))),console.log(KB(Ss("Professional AI Operating System"))),console.log(""),console.log(KB(jtA("\u26A1 Autonomous \xB7 Precise \xB7 Always On"))),console.log(KB(Ss("Vision")+Ss(" \xB7 ")+Ss("Voice")+Ss(" \xB7 ")+Ss("OS Control")+Ss(" \xB7 ")+Ss("Multi-Agent Hierarchy"))),console.log(""),console.log(ztA()),console.log("");let a=[`Node ${process.version}`,`Mode: ${e.toUpperCase()}`,`PID ${process.pid}`,i?`#${i}`:null].filter(Boolean).join(Ss(" \xB7 "));console.log(KB(Ss(a))),e==="web"&&(console.log(""),console.log(KB(aBe("\u25B6 ")+WtA(`http://localhost:${A}`))),console.log(KB(Ss("Dashboard is live \u2014 open in your browser")))),console.log(""),console.log(ztA()),console.log(KB(Ss("Built by Auto Step \xB7 https://must-b.com"))),console.log("")}var qtA=require("events"),ZtA=require("module"),XtA=re(require("path"),1),EBe={};var oBe=[/\b(navigate|browse)\b/i,/\bopen\s+(the\s+)?(website|url|browser|page|site|link)\b/i,/\b(go\s+to|visit|open)\s+https?:\/\//i,/https?:\/\/\S+/,/\bread\s+(the\s+)?(file|folder|directory|path)\b/i,/\bwrite\s+(to\s+)?(the\s+)?(file|disk|path)\b/i,/\b(create|delete|remove|rename|move|copy)\s+(a\s+)?(file|folder|directory|script)\b/i,/\bsave\s+(this|it)\s+to\b/i,/\bpatch\s+(the\s+)?file\b/i,/\b(run|execute|launch)\s+(a\s+)?(command|script|program|code)\b/i,/\bterminal\b/i,/\bbash\b/i,/\bnpm\s+\w/i,/\bgit\s+(clone|commit|push|pull|checkout|status|log|diff|add|merge)\b/i,/\bpython\s+\w.*\.py\b/i,/\b(search|look\s+up)\s+(the\s+)?(web|internet|online|google|bing)\b/i,/\bfind\s+(it\s+)?(online|on\s+the\s+web)\b/i,/\b(take\s+a?\s*)screenshot\b/i,/\bdownload\b/i,/\binstall\b/i,/\blist\s+(the\s+)?(files|folders|contents)\b/i,/\bclick\s+(on\s+)?(the\s+)?\w/i,/\btype\s+(into|in)\b/i];function cBe(e){for(let A of oBe)if(A.test(e))return"agent";return"direct"}function lBe(e){let A=e.toLowerCase();return A.includes("401")||A.includes("unauthorized")||A.includes("api key")||A.includes("invalid key")?"auth":A.includes("429")||A.includes("rate limit")||A.includes("too many requests")?"ratelimit":A.includes("econnrefused")||A.includes("enotfound")||A.includes("fetch failed")||A.includes("network")?"network":"unknown"}async function VtA(){try{let A=(0,ZtA.createRequire)(EBe.url)("dotenv"),t=XtA.default.join(process.cwd(),".env");A.config({path:t,override:!0})}catch{}}function KtA(e){let A=["OPENROUTER_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY_2","OPENROUTER_API_KEY_3","OPENAI_API_KEY_2","ANTHROPIC_API_KEY_2"],t=process.env.OPENROUTER_API_KEY??process.env.OPENAI_API_KEY??process.env.ANTHROPIC_API_KEY??"";for(let i of A){let a=process.env[i];if(a&&a!==t&&a.length>8)return i.startsWith("OPENROUTER")||i.includes("OPENROUTER_API_KEY")?process.env.OPENROUTER_API_KEY=a:i.startsWith("OPENAI")?process.env.OPENAI_API_KEY=a:i.startsWith("ANTHROPIC")&&(process.env.ANTHROPIC_API_KEY=a),e.info(`Orchestrator: Rotated to backup API key (${i}).`),!0}return!1}function JtA(e){return Math.min(1e3*Math.pow(2,e-1),3e4)}var fC=class extends qtA.EventEmitter{constructor(t,i,a){super();this.MAX_REVISIONS=3;this._busy=!1;this._errorSignatures=new Map;this.logger=t,this.planner=i,this.executor=a,this.logger.info("Orchestrator: Initialized.")}get busy(){return this._busy}async runDirect(t){this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});try{let i=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:i,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:i,steps:[],timestamp:Date.now()})}catch(i){let a=i?.message??String(i);this.logger.warn(`Orchestrator: directChat failed \u2014 ${a}`),await VtA();try{let r=await this.planner.directChat(t);this.emit("finalAnswer",{goal:t,answer:r,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"completed",answer:r,steps:[],timestamp:Date.now()})}catch(r){let n=r?.message??String(r);this.emit("finalAnswer",{goal:t,answer:`I'm sorry, I ran into an error: ${n}`,timestamp:Date.now()}),this.emit("planFinish",{goal:t,status:"failed",error:n,timestamp:Date.now()})}}finally{this._busy=!1}}async run(t){if(cBe(t)==="direct")return this.logger.info(`Orchestrator: Fast-path (direct) \u2014 "${t.slice(0,80)}"`),this.runDirect(t);this.logger.info(`Orchestrator: Agent mode \u2014 "${t.slice(0,80)}"`),this._busy=!0,this.emit("planStart",{goal:t,timestamp:Date.now()});let a=0,r=t;for(;a<=this.MAX_REVISIONS;)try{let n=await this.planner.plan(r);if(this.emit("planGenerated",{goal:r,steps:n,timestamp:Date.now()}),!n.length){this.emit("planFinish",{goal:t,status:"empty",timestamp:Date.now()});break}let s=[];for(let c of n){this.emit("stepStart",{step:c,timestamp:Date.now()});let E=await this.executor.executeStep(c);s.push({description:c.description,result:E}),this.emit("stepFinish",{step:c,status:"success",result:E,timestamp:Date.now()})}let o=await this.planner.synthesize(t,s);this.emit("finalAnswer",{goal:t,answer:o,timestamp:Date.now()}),this._errorSignatures.clear(),this.logger.info(`Orchestrator: Goal completed \u2014 "${t}"`),this.emit("planFinish",{goal:t,status:"completed",answer:o,steps:n.map(c=>({description:c.description,tool:c.tool})),timestamp:Date.now()});break}catch(n){a++;let s=n?.message??String(n),o=lBe(s);if(this.logger.warn(`Orchestrator: Step failed [${o}] (revision ${a}/${this.MAX_REVISIONS}) \u2014 ${s}`),this.emit("stepFinish",{status:"error",error:s,errorKind:o,timestamp:Date.now()}),a>this.MAX_REVISIONS){this.logger.error(`Orchestrator: Max revisions hit. Aborting goal "${t}".`),this.emit("planFinish",{goal:t,status:"failed",error:s,timestamp:Date.now()});break}if(o==="auth"){this.logger.info("Orchestrator: Auth error \u2014 reloading .env and attempting key rotation."),await VtA();let u=KtA(this.logger);this.emit("agentRepair",{action:u?"key_rotation":"reload_env",reason:s,timestamp:Date.now()});continue}if(o==="ratelimit"){let u=JtA(a);this.logger.info(`Orchestrator: Rate-limit \u2014 waiting ${u}ms, then trying key rotation.`),await new Promise(Q=>setTimeout(Q,u)),KtA(this.logger),this.emit("agentRepair",{action:"backoff+rotation",waitMs:u,reason:s,timestamp:Date.now()});continue}if(o==="network"){let u=JtA(a);this.logger.info(`Orchestrator: Network error \u2014 waiting ${u}ms then re-planning.`),this.emit("agentRepair",{action:"backoff",waitMs:u,reason:s,timestamp:Date.now()}),await new Promise(Q=>setTimeout(Q,u))}let c=s.slice(0,120),E=(this._errorSignatures.get(c)??0)+1;this._errorSignatures.set(c,E),E>=2?(this.logger.warn(`Orchestrator: Recurring error (\xD7${E}) \u2014 injecting auto-repair context.`),this.emit("agentRepair",{action:"auto_repair",errorSignature:c,occurrences:E,timestamp:Date.now()}),r=[`Auto-repair attempt for: "${t}"`,`Recurring error (\xD7${E}): ${s}`,"Diagnose the root cause, attempt a different approach or skip the failing step, and complete the original goal."].join(" \u2014 ")):r=`Revised: "${t}" \u2014 previous attempt failed: ${s}`}this._busy=!1}};var OC=re(require("fs"),1),MC=re(require("path"),1),oiA=require("child_process"),Q7=re(M0(),1);wD();Q7.default.config({override:!0});function gr(e){return process.env.LLM_MODEL||e}function cn(e,A){try{return Hn.get().resolveApiKey(e,A)}catch{return process.env[A]??""}}function aiA(){Q7.default.config({override:!0});let e=(process.env.LLM_PROVIDER??"openrouter").toLowerCase();if(e==="openai"){let t=cn("openai","OPENAI_API_KEY");return{baseUrl:"https://api.openai.com/v1",apiKey:t,provider:e,model:gr(process.env.OPENAI_MODEL??"gpt-4o-mini"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="anthropic"){let t=cn("anthropic","ANTHROPIC_API_KEY");return{baseUrl:"https://api.anthropic.com/v1",apiKey:t,provider:e,model:gr(process.env.ANTHROPIC_MODEL??"claude-3-5-haiku-20241022"),headers:{"x-api-key":t,"anthropic-version":"2023-06-01","Content-Type":"application/json"},noJM:!0}}if(e==="gemini"){let t=cn("gemini","GOOGLE_API_KEY"),i=gr(process.env.GEMINI_MODEL??"gemini-1.5-flash");return{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models/"+i+":generateContent?key="+t,apiKey:t,model:i,provider:e,headers:{"Content-Type":"application/json"},noJM:!0}}if(e==="groq"){let t=cn("groq","GROQ_API_KEY");return{baseUrl:"https://api.groq.com/openai/v1",apiKey:t,provider:e,model:gr(process.env.GROQ_MODEL??"llama3-8b-8192"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="ollama")return{baseUrl:(process.env.OLLAMA_BASE_URL??"http://localhost:11434")+"/v1",apiKey:"ollama",provider:e,model:gr(process.env.OLLAMA_MODEL??"llama3"),headers:{"Content-Type":"application/json"},noJM:!0};if(e==="mistral"){let t=cn("mistral","MISTRAL_API_KEY");return{baseUrl:"https://api.mistral.ai/v1",apiKey:t,provider:e,model:gr(process.env.MISTRAL_MODEL??"mistral-small-latest"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="xai"){let t=cn("xai","XAI_API_KEY");return{baseUrl:"https://api.x.ai/v1",apiKey:t,provider:e,model:gr(process.env.XAI_MODEL??"grok-beta"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="deepseek"){let t=cn("deepseek","DEEPSEEK_API_KEY");return{baseUrl:"https://api.deepseek.com/v1",apiKey:t,provider:e,model:gr(process.env.DEEPSEEK_MODEL??"deepseek-chat"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="together"){let t=cn("together","TOGETHER_API_KEY");return{baseUrl:"https://api.together.xyz/v1",apiKey:t,provider:e,model:gr(process.env.TOGETHER_MODEL??"meta-llama/Llama-3-8b-chat-hf"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="moonshot"){let t=cn("moonshot","MOONSHOT_API_KEY");return{baseUrl:"https://api.moonshot.cn/v1",apiKey:t,provider:e,model:gr(process.env.MOONSHOT_MODEL??"moonshot-v1-8k"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="azure"){let t=cn("azure","AZURE_OPENAI_API_KEY"),i=process.env.AZURE_OPENAI_ENDPOINT??"",a=process.env.AZURE_OPENAI_DEPLOYMENT??"gpt-4o-mini",r=process.env.AZURE_OPENAI_API_VERSION??"2024-02-01";return{baseUrl:i+"/openai/deployments/"+a+"/chat/completions?api-version="+r,apiKey:t,model:a,provider:e,headers:{"api-key":t,"Content-Type":"application/json"}}}if(e==="vertex"){let t=process.env.GOOGLE_CLOUD_PROJECT??"",i=process.env.VERTEX_LOCATION??"us-central1",a=gr(process.env.VERTEX_MODEL??"gemini-1.5-flash-001"),r="";try{r=require("child_process").execSync("gcloud auth print-access-token",{encoding:"utf-8"}).trim()}catch{}return{baseUrl:"https://"+i+"-aiplatform.googleapis.com/v1/projects/"+t+"/locations/"+i+"/publishers/google/models/"+a+":generateContent",apiKey:r,model:a,provider:e,headers:{Authorization:"Bearer "+r,"Content-Type":"application/json"},noJM:!0}}if(e==="perplexity"){let t=cn("perplexity","PERPLEXITY_API_KEY");return{baseUrl:"https://api.perplexity.ai",apiKey:t,provider:e,model:gr(process.env.PERPLEXITY_MODEL??"llama-3.1-sonar-small-128k-online"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cohere"){let t=cn("cohere","COHERE_API_KEY");return{baseUrl:"https://api.cohere.ai/compatibility/v1",apiKey:t,provider:e,model:gr(process.env.COHERE_MODEL??"command-r-plus"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="fireworks"){let t=cn("fireworks","FIREWORKS_API_KEY");return{baseUrl:"https://api.fireworks.ai/inference/v1",apiKey:t,provider:e,model:gr(process.env.FIREWORKS_MODEL??"accounts/fireworks/models/llama-v3p1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="nvidia"){let t=cn("nvidia","NVIDIA_API_KEY");return{baseUrl:"https://integrate.api.nvidia.com/v1",apiKey:t,provider:e,model:gr(process.env.NVIDIA_MODEL??"meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+t,"Content-Type":"application/json"}}}if(e==="cloudflare"){let t=process.env.CLOUDFLARE_ACCOUNT_ID??"",i=cn("cloudflare","CLOUDFLARE_API_KEY");return{baseUrl:`https://api.cloudflare.com/client/v4/accounts/${t}/ai/v1`,apiKey:i,provider:e,model:gr(process.env.CLOUDFLARE_MODEL??"@cf/meta/llama-3.1-8b-instruct"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}if(e==="custom"){let t=(process.env.CUSTOM_API_BASE_URL??"").replace(/\/+$/,""),i=process.env.CUSTOM_API_KEY??"";return{baseUrl:t+"/v1",apiKey:i,provider:e,model:gr(process.env.CUSTOM_MODEL??"default"),headers:{Authorization:"Bearer "+i,"Content-Type":"application/json"}}}let A=cn("openrouter","OPENROUTER_API_KEY");return{baseUrl:"https://openrouter.ai/api/v1",apiKey:A,provider:"openrouter",model:gr(process.env.OPENROUTER_MODEL??"openai/gpt-4o-mini"),headers:{Authorization:"Bearer "+A,"Content-Type":"application/json","HTTP-Referer":"https://must-b.ai","X-Title":"Must-b Agent"}}}function mBe(e){process.env.OLLAMA_MODEL=e,process.env.LLM_MODEL=e;try{let A=MC.default.join(process.cwd(),".env"),t="";try{t=OC.default.readFileSync(A,"utf-8")}catch{}let i=(a,r,n)=>{let s=a.split(`
4035
4035
  `),o=s.findIndex(c=>c.startsWith(r+"="));return o>=0?s[o]=`${r}=${n}`:s.push(`${r}=${n}`),s.filter(c=>c!=="").join(`
4036
4036
  `)+`
4037
4037
  `};t=i(t,"OLLAMA_MODEL",e),t=i(t,"LLM_MODEL",e),OC.default.writeFileSync(A,t,"utf-8")}catch{}}async function riA(e,A,t,i){let a="[System Error: No Ollama models installed. Please pull a model via `ollama pull <name>` or the Must-b UI.]",r="",n=(E,u)=>{let Q=(0,oiA.spawnSync)(E,["list"],{encoding:"utf8",timeout:6e3,shell:u});return Q.status===0?Q.stdout??"":""};if(r=n("ollama",!0),!r){let E=MC.default.join(process.env.LOCALAPPDATA??MC.default.join(process.env.USERPROFILE??"","AppData","Local"),"Programs","Ollama","ollama.exe");OC.default.existsSync(E)&&(r=n(E,!1))}let s=r.split(`