makecoder 4.1.45 → 4.1.46

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/coder.js CHANGED
@@ -24,7 +24,7 @@ baseurl=${r||""}
24
24
  \u8BF7\u68C0\u67E5\u7F51\u7EDC\uFF0C\u6216\u624B\u52A8\u4E0B\u8F7D\uFF1A${Gd}`),1);let s=r[t];if(!s||!s.url)return console.error(`[coder app] \u6E05\u5355\u4E2D\u7F3A\u5C11 ${t} \u67B6\u6784\u7684\u4E0B\u8F7D\u4FE1\u606F\u3002`),a?this._openApp():1;if(!a){let o=await this._install(s,r.version,null);return o!==0?o:this._openApp()}let i=this._readInstalledAppVersion(a);if(i&&FU(i,r.version))if(console.error(`\u68C0\u6D4B\u5230 BigQuant \u65B0\u7248\u672C\uFF1A\u5F53\u524D ${i}\uFF0C\u6700\u65B0 ${r.version}\u3002`),await this._confirmUpgrade()){let e=await this._install(s,r.version,a);if(e!==0)return e}else console.error("\u7EE7\u7EED\u4F7F\u7528\u5DF2\u5B89\u88C5\u7684\u65E7\u7248 BigQuant\u3002");return this._openApp()}catch(r){return console.error(`Error: ${r.message}`),process.env.CODER_DEBUG&&console.error(r.stack),1}}_fetchManifest(){let t=Gd.startsWith("http://")?qU:$U;return new Promise(r=>{let a=!1,s=o=>{a||(a=!0,r(o))},i=t.get(Gd,{timeout:1e4},o=>{if(o.statusCode!==200)return process.env.CODER_DEBUG&&console.error(`[coder app] \u6E05\u5355 HTTP ${o.statusCode}: ${Gd}`),o.resume(),s(null);let e="";o.setEncoding("utf8"),o.on("data",g=>e+=g),o.on("end",()=>{try{s(JSON.parse(e))}catch(g){process.env.CODER_DEBUG&&console.error(`[coder app] \u6E05\u5355\u89E3\u6790\u5931\u8D25: ${g.message}`),s(null)}})});i.on("timeout",()=>{i.destroy(),process.env.CODER_DEBUG&&console.error("[coder app] \u6E05\u5355\u8BF7\u6C42\u8D85\u65F6"),s(null)}),i.on("error",o=>{process.env.CODER_DEBUG&&console.error(`[coder app] \u6E05\u5355\u8BF7\u6C42\u5931\u8D25: ${o.message}`),s(null)})})}_findInstalledAppPath(){return bw.find(t=>Ht.existsSync(t))||null}_readInstalledAppVersion(t){let r=Ys.join(t,"Contents","Info.plist");if(!Ht.existsSync(r))return null;try{return Gu("plutil",["-extract","CFBundleShortVersionString","raw","-o","-",r],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch(a){return process.env.CODER_DEBUG&&console.error(`[coder app] plutil \u8BFB\u53D6\u7248\u672C\u5931\u8D25: ${a.message}`),null}}async _confirmUpgrade(){if(!process.stdin.isTTY||!process.stdout.isTTY)return console.error("\u5F53\u524D\u4E0D\u662F\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF0C\u9ED8\u8BA4\u6267\u884C\u5347\u7EA7\u3002\u8BBE\u7F6E CODER_BIGQUANT_APP_AUTO_UPGRADE=0 \u53EF\u8DF3\u8FC7\u3002"),process.env.CODER_BIGQUANT_APP_AUTO_UPGRADE!=="0";let t=await new Promise(r=>{let a=PU.createInterface({input:process.stdin,output:process.stderr});a.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 BigQuant\uFF1F[Y/n] ",s=>{a.close(),r(s.trim().toLowerCase())})});return t===""||t==="y"||t==="yes"}async _install(t,r,a){let s=a||bw[0];console.error(a?`\u6B63\u5728\u5347\u7EA7 BigQuant \u5230 ${r}\u2026`:`\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5 BigQuant ${r}\u2026`);let i=Ht.mkdtempSync(Ys.join(Sw.tmpdir(),"bigquant-app-")),o=Ys.join(i,"BigQuant.dmg"),e=null;try{if(uo("curl",["-fL","--retry","2","-o",o,t.url],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!Ht.existsSync(o))return console.error(`\u4E0B\u8F7D BigQuant \u5B89\u88C5\u5305\u5931\u8D25\uFF1A${t.url}`),1;if(t.sha256){let c=OU(o);if(c!==t.sha256)return console.error(`BigQuant \u5B89\u88C5\u5305\u6821\u9A8C\u5931\u8D25\uFF08sha256 \u4E0D\u5339\u914D\uFF09\u3002
25
25
  \u671F\u671B ${t.sha256}
26
26
  \u5B9E\u9645 ${c}`),1;process.env.CODER_DEBUG&&console.error("[coder app] sha256 \u6821\u9A8C\u901A\u8FC7")}let d=uo("hdiutil",["attach",o,"-nobrowse","-readonly"],{encoding:"utf8"});if(d.status!==0)return console.error("\u6302\u8F7D BigQuant \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&d.stderr&&console.error(d.stderr.trim()),1;if(e=AU(d.stdout),!e)return console.error("\u65E0\u6CD5\u89E3\u6790 BigQuant \u5B89\u88C5\u5305\u6302\u8F7D\u70B9\u3002"),1;let m=this._findAppInMount(e);if(!m)return console.error(`DMG \u5185\u672A\u627E\u5230 ${Bd}\u3002`),1;if(a){if(this._quitApp(),!this._replaceAppBundle(m,s))return 1}else if(uo("ditto",[m,s],{stdio:"inherit"}).status!==0)return console.error(`\u5B89\u88C5 BigQuant \u5230 ${s} \u5931\u8D25\uFF08\u53EF\u80FD\u9700\u8981\u6743\u9650\uFF09\u3002`),1;return this._stripQuarantine(s),console.error(`\u2705 BigQuant ${r} \u5DF2${a?"\u5347\u7EA7":"\u5B89\u88C5"}\u5230 ${s}\u3002`),0}catch(g){return console.error(`\u5B89\u88C5 BigQuant \u5931\u8D25\uFF1A${g.message}`),process.env.CODER_DEBUG&&console.error(g.stack),1}finally{e&&uo("hdiutil",["detach",e,"-quiet"],{stdio:"ignore"});try{Ht.rmSync(i,{recursive:!0,force:!0})}catch{}}}_stripQuarantine(t){uo("xattr",["-dr","com.apple.quarantine",t],{stdio:process.env.CODER_DEBUG?"inherit":"ignore"}).status!==0&&process.env.CODER_DEBUG&&console.error("[coder app] xattr \u53BB\u9694\u79BB\u8FD4\u56DE\u975E 0\uFF08\u53EF\u80FD\u672C\u5C31\u65E0\u9694\u79BB\u5C5E\u6027\uFF0C\u5FFD\u7565\uFF09\u3002")}_replaceAppBundle(t,r){let a=`${r}.coder-upgrade-backup`;try{return Ht.rmSync(a,{recursive:!0,force:!0}),Ht.renameSync(r,a),uo("ditto",[t,r],{stdio:"inherit"}).status===0?(Ht.rmSync(a,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 BigQuant \u5931\u8D25\uFF1A${r}`),Ht.rmSync(r,{recursive:!0,force:!0}),Ht.renameSync(a,r),console.error("\u5DF2\u6062\u590D\u65E7\u7248 BigQuant\u3002"),!1)}catch(s){if(console.error(`\u66FF\u6362 BigQuant \u5931\u8D25\uFF1A${s.message}`),!Ht.existsSync(r)&&Ht.existsSync(a))try{Ht.renameSync(a,r),console.error("\u5DF2\u6062\u590D\u65E7\u7248 BigQuant\u3002")}catch(i){console.error(`\u6062\u590D\u65E7\u7248 BigQuant \u5931\u8D25\uFF1A${i.message}`)}return!1}}_findAppInMount(t){let r=Ys.join(t,Bd);if(Ht.existsSync(r))return r;for(let a of Ht.readdirSync(t)){let s=Ys.join(t,a);if(a.endsWith(".app")&&Ht.statSync(s).isDirectory())return s}return null}_quitApp(){try{Gu("osascript",["-e",'quit app "BigQuant"'],{stdio:"ignore"})}catch{}}_openApp(){try{return Gu("open",["-a","BigQuant"],{stdio:"ignore"}),console.error("BigQuant \u5DF2\u542F\u52A8\u3002"),0}catch(t){return console.error(`\u542F\u52A8 BigQuant \u5931\u8D25\uFF1A${t.message}`),1}}};function OU(n){let r=require("crypto").createHash("sha256");return r.update(Ht.readFileSync(n)),r.digest("hex")}function FU(n,t){let r=ww(n),a=ww(t),s=Math.max(r.length,a.length);for(let i=0;i<s;i++){let o=r[i]||0,e=a[i]||0;if(o<e)return!0;if(o>e)return!1}return!1}function ww(n){return String(n).replace(/^v/i,"").split(".").map(t=>Number.parseInt(t,10)).map(t=>Number.isFinite(t)?t:0)}function AU(n){let t=String(n||"").split(/\r?\n/);for(let r of t){if(!r.includes("/Volumes/"))continue;let s=r.split(" ").find(o=>o.trim().startsWith("/Volumes/"));if(s)return s.trim();let i=r.match(/(\/Volumes\/.+)$/);if(i)return i[1].trim()}return null}kw.exports=Bu});var Ln=$((Pue,Ew)=>{var CU=nw(),zU=lw(),RU=pw(),LU=fw(),DU=_w(),jU=Iw();function Tw(){let n=new CU;if(process.env.CODER_DEBUG)try{console.error(`[DEBUG] ClaudeBunLauncher selected, executable: ${n.findExecutablePath()}`)}catch(t){console.error(`[DEBUG] ClaudeBunLauncher executable not yet resolved: ${t.message}`)}return n}var Rn={claude:{aliases:["claude"],description:"Claude Code \u667A\u80FD\u4F53\uFF08\u9ED8\u8BA4\uFF09",create:Tw,mapArgs:n=>n},"claude-app":{aliases:["claude-app"],description:"\u914D\u7F6E Claude Desktop\uFF08macOS\uFF09\u8D70 coder API\uFF1Asetup|restore|status",create:()=>new zU,mapArgs:n=>n},codex:{aliases:["codex"],description:"OpenAI Codex \u667A\u80FD\u4F53",create:()=>new LU,mapArgs:n=>n},"codex-app":{aliases:["codex-app"],description:"\u914D\u7F6E Codex Desktop\uFF08macOS\uFF09\u8D70 coder API",create:()=>new DU,mapArgs:n=>["app",...n]},gemini:{aliases:["gemini"],description:"Gemini \u667A\u80FD\u4F53",create:()=>new RU,mapArgs:n=>n},"bigquant-app":{aliases:["bigquant-app"],description:"\u5B89\u88C5/\u66F4\u65B0\u5E76\u6253\u5F00 BigQuant Desktop\uFF08macOS\uFF09",create:()=>new jU,mapArgs:n=>n,hidden:!0}},Wu=Object.keys(Rn),UU=Wu.filter(n=>!Rn[n].hidden),NU=new Set(["claude","codex","gemini"]);function MU(n){return Object.prototype.hasOwnProperty.call(Rn,n)}function xw(n){return Rn[n]||null}async function GU(n,t,r){let a=xw(n);return a?await a.create().launch({remainingArgs:a.mapArgs(t),coderBaseUrl:r.getCoderBaseUrl(),apikey:r.getApiKey()}):(r.fail(`unknown agent: ${n}`,`available: ${Wu.join(" | ")}`),1)}Ew.exports={AGENTS:Rn,AGENT_NAMES:Wu,VISIBLE_AGENT_NAMES:UU,SHORTCUTS:NU,isAgentName:MU,getAgent:xw,launchAgent:GU,createClaudeLauncher:Tw}});var Ow=$(($ue,qw)=>{var Dn=require("fs"),Pw=require("path"),{spawn:$w}=require("child_process"),Hu=class{constructor(){this.extensionId="codev.codev-background";let t=require.main?Pw.dirname(require.main.filename):__dirname;this.extensionPath=Pw.resolve(t,"vendor/claude-code.vsix"),this._codeCommand=null}async resolveCodeCommand(){if(this._codeCommand)return this._codeCommand;if(process.env.IS_AISTUDIO==="True"){let t="/usr/lib/aistudio/lib/vscode/bin/remote-cli/aistudio";if(Dn.existsSync(t))try{return Dn.accessSync(t,Dn.constants.F_OK|Dn.constants.X_OK),this._codeCommand=t,process.env.CODER_DEBUG&&console.log(`Using AI Studio VSCode path: ${t}`),this._codeCommand}catch(r){process.env.CODER_DEBUG&&console.log(`AI Studio path exists but not executable: ${r.message}`)}else process.env.CODER_DEBUG&&console.log(`AI Studio path not found: ${t}`)}try{let{spawn:t}=require("child_process");return new Promise(r=>{let a=t("which",["code"],{stdio:["ignore","pipe","ignore"]}),s="";a.stdout.on("data",i=>{s+=i.toString().trim()}),a.on("close",i=>{i===0&&s?(this._codeCommand=s,process.env.CODER_DEBUG&&console.log(`Resolved code command path: ${s}`),r(this._codeCommand)):(this._codeCommand="code",r(this._codeCommand))}),a.on("error",()=>{this._codeCommand="code",r(this._codeCommand)}),setTimeout(()=>{a.kill(),this._codeCommand="code",r(this._codeCommand)},3e3)})}catch{return this._codeCommand="code",this._codeCommand}}async shouldInstallExtension(){try{return process.env.IS_AISTUDIO!=="True"?(process.env.CODER_DEBUG&&console.log("Not in AI Studio environment (IS_AISTUDIO!=True), skipping extension installation"),!1):await this.isVSCodeAvailable()?await this.isExtensionInstalled()?(process.env.CODER_DEBUG&&console.log(`Extension ${this.extensionId} already installed`),!1):!!Dn.existsSync(this.extensionPath):(process.env.CODER_DEBUG&&console.log("VSCode not available, skipping extension installation"),!1)}catch(t){return process.env.CODER_DEBUG&&console.error(`Error checking extension installation status: ${t.message}`),!1}}async installExtension(){try{return console.log("Installing Codev VSCode extension..."),await this.executeVSCodeCommand(["--install-extension",this.extensionPath])?(console.log("\u2705 Codev VSCode extension installed successfully"),!0):(console.warn("\u274C Failed to install Codev VSCode extension"),!1)}catch(t){return console.warn(`Error installing VSCode extension: ${t.message}`),!1}}async isVSCodeAvailable(){try{let t=process.env.IS_AISTUDIO==="True"?["--help"]:["--version"],r=await this.executeVSCodeCommand(t,{timeout:1e4});if(process.env.CODER_DEBUG&&(console.log(`VSCode availability check (${t.join(" ")}): ${r?"available":"unavailable"}`),process.env.IS_AISTUDIO==="True")){let{spawn:a}=require("child_process");try{a("which",["code"],{stdio:["ignore","pipe","ignore"]}).stdout.on("data",i=>{console.log("which code:",i.toString().trim())})}catch(s){console.log("which command failed:",s.message)}}return r}catch(t){return process.env.CODER_DEBUG&&console.error("VSCode availability check error:",t.message),!1}}async isExtensionInstalled(){let t=await this.resolveCodeCommand();try{return new Promise(r=>{try{let a={stdio:["ignore","pipe","ignore"],shell:!1,env:{...process.env,PATH:process.env.PATH,HOME:process.env.HOME,USER:process.env.USER}};process.env.CODER_DEBUG&&console.log(`Spawning: ${t} --list-extensions`);let s=$w(t,["--list-extensions"],a),i="";s.stdout.on("data",o=>{i+=o.toString()}),s.on("close",o=>{if(o===0){let e=i.split(`
27
- `).map(g=>g.trim());r(e.includes(this.extensionId))}else r(!1)}),s.on("error",o=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",o.message),console.error("Error code:",o.code),console.error("Error errno:",o.errno),console.error("Error syscall:",o.syscall)),r(!1)}),setTimeout(()=>{try{s.kill()}catch{}r(!1)},1e4)}catch(a){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode list extensions:",a.message),r(!1)}})}catch{return!1}}async executeVSCodeCommand(t,r={}){let a=await this.resolveCodeCommand();return new Promise(s=>{try{let i={stdio:"ignore",shell:!1,env:{...process.env,PATH:process.env.PATH,HOME:process.env.HOME,USER:process.env.USER}};process.env.CODER_DEBUG&&console.log(`Spawning: ${a} ${t.join(" ")}`);let o=$w(a,t,i);o.on("close",g=>{s(g===0)}),o.on("error",g=>{process.env.CODER_DEBUG&&(console.error("VSCode command error:",g.message),console.error("Error code:",g.code),console.error("Error errno:",g.errno),console.error("Error syscall:",g.syscall)),s(!1)});let e=r.timeout||3e4;setTimeout(()=>{try{o.kill()}catch{}s(!1)},e)}catch(i){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",i.message),s(!1)}})}async ensureExtensionInstalled(){try{process.env.CODER_DEBUG&&console.log("VSCode Extension Service: Checking extension status..."),await this.shouldInstallExtension()&&await this.installExtension()}catch(t){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",t)}}};qw.exports=Hu});var Qs=$((que,BU)=>{BU.exports={name:"makecoder",version:"4.1.45",description:"MakeCoder Coder: AI Agent Runtime OS that runs and orchestrates Claude Code, Codex, Gemini and more across CLI, API, Web and chat",main:"./dist/coder.js",bin:{coder:"./dist/coder.js"},scripts:{test:"node --test test/*.test.js",start:"node ./src/coder.js",build:"node scripts/build.js","build:clean":"node scripts/build.js --clean","build:dev":"node scripts/build.js --no-minify --sourcemap",postinstall:"node scripts/postinstall.js"},keywords:["ai-agent-runtime","agent-os","ai","cli","claude","gemini","codex","agent","orchestration","llm"],author:"makecoder",license:"MIT",repository:{type:"git",url:"https://github.com/makecoderai/coder.git"},homepage:"https://github.com/makecoderai/coder",dependencies:{"@larksuiteoapi/node-sdk":"^1.59.0","@wecom/aibot-node-sdk":"1.0.7",bun:">=1.3.12",commander:"^15.0.0","node-fetch":"^3.3.2",open:"^10.1.0",ws:"^8.21.0",zod:"^3.25.76"},engines:{node:">=20.0.0"},devDependencies:{chokidar:"^4.0.3"},files:["dist","scripts/postinstall.js"]}});var Aw=$((Oue,Fw)=>{var Ku=require("crypto"),{URL:WU}=require("url"),Vu=class{static generateSignature(t,r,a,s){try{let i=new WU(t),o=Buffer.from(i.pathname),e=Buffer.from(o),g=r?typeof r=="string"?Buffer.from(r):Buffer.from(JSON.stringify(r)):Buffer.alloc(0),d=Buffer.concat([e,g,Buffer.from(s)]),m=Ku.createHmac("sha256",a);return m.update(d),m.digest("hex")}catch(i){throw new Error(`Failed to generate signature: ${i.message}`)}}static validateSignature(t,r,a,s,i){return this.generateSignature(t,r,a,s)===i}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(t=16){let r="abcdefghijkmnpqrstuvwxyz",a="ABCDEFGHJKLMNPQRSTUVWXYZ",s="23456789",i="!@#$%^&*-_=+",o=r+a+s+i;t<8&&(t=8);let e=d=>d[Ku.randomBytes(1)[0]%d.length],g=[e(r),e(a),e(s),e(i)];for(;g.length<t;)g.push(e(o));for(let d=g.length-1;d>0;d--){let m=Ku.randomBytes(1)[0]%(d+1);[g[d],g[m]]=[g[m],g[d]]}return g.join("")}};Fw.exports=Vu});var Wd=$((Fue,Rw)=>{var HU=require("https"),{URL:KU}=require("url"),Cw="https://makecoder.com/bigapis/auth/v1",VU="https://makecoder.com/bigapis/kbb2/v1",JU="https://makecoder.com/wiki/api",Ju=class{constructor(t){this.token=t}request(t,r,a,s){return new Promise((i,o)=>{let e=s||Cw,g=new KU(`${e}${r}`),d={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},m=null;a!=null&&(m=JSON.stringify(a),d["Content-Length"]=Buffer.byteLength(m));let c=HU.request({hostname:g.hostname,port:g.port||443,path:g.pathname+g.search,method:t,headers:d},f=>{let y="";f.on("data",v=>y+=v),f.on("end",()=>i({status:f.statusCode,body:y}))});c.on("error",o),m&&c.write(m),c.end()})}};function zw(n){try{return JSON.parse(n)}catch{return null}}function XU(n){return n===401?2:n===403?5:n===404?4:n===409?6:1}function ZU(n){let t=zw(n);return t?.message?t.message:t?.error?t.error:(n||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Rw.exports={TeamHttp:Ju,parseJson:zw,exitCodeForStatus:XU,errorMessage:ZU,API_BASE:Cw,BIGKBB_BASE:VU,WIKI_API_BASE:JU}});var Dw=$((Aue,Lw)=>{var Xu=n=>String(n??"").replace(/\|/g,"\\|").replace(/\n/g," ");function YU(n,t,r={}){let{labels:a={},empty:s="\uFF08\u7A7A\uFF09"}=r;if(!t||!t.length){n.emit(s);return}if(n.isJson){n.emit(t);return}let i=Object.keys(t[0]),e=[`| ${i.map(g=>a[g]||g).map(Xu).join(" | ")} |`,`| ${i.map(()=>"---").join(" | ")} |`,...t.map(g=>`| ${i.map(d=>Xu(g[d])).join(" | ")} |`)];n.emit(e.join(`
27
+ `).map(g=>g.trim());r(e.includes(this.extensionId))}else r(!1)}),s.on("error",o=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",o.message),console.error("Error code:",o.code),console.error("Error errno:",o.errno),console.error("Error syscall:",o.syscall)),r(!1)}),setTimeout(()=>{try{s.kill()}catch{}r(!1)},1e4)}catch(a){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode list extensions:",a.message),r(!1)}})}catch{return!1}}async executeVSCodeCommand(t,r={}){let a=await this.resolveCodeCommand();return new Promise(s=>{try{let i={stdio:"ignore",shell:!1,env:{...process.env,PATH:process.env.PATH,HOME:process.env.HOME,USER:process.env.USER}};process.env.CODER_DEBUG&&console.log(`Spawning: ${a} ${t.join(" ")}`);let o=$w(a,t,i);o.on("close",g=>{s(g===0)}),o.on("error",g=>{process.env.CODER_DEBUG&&(console.error("VSCode command error:",g.message),console.error("Error code:",g.code),console.error("Error errno:",g.errno),console.error("Error syscall:",g.syscall)),s(!1)});let e=r.timeout||3e4;setTimeout(()=>{try{o.kill()}catch{}s(!1)},e)}catch(i){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",i.message),s(!1)}})}async ensureExtensionInstalled(){try{process.env.CODER_DEBUG&&console.log("VSCode Extension Service: Checking extension status..."),await this.shouldInstallExtension()&&await this.installExtension()}catch(t){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",t)}}};qw.exports=Hu});var Qs=$((que,BU)=>{BU.exports={name:"makecoder",version:"4.1.46",description:"MakeCoder Coder: AI Agent Runtime OS that runs and orchestrates Claude Code, Codex, Gemini and more across CLI, API, Web and chat",main:"./dist/coder.js",bin:{coder:"./dist/coder.js"},scripts:{test:"node --test test/*.test.js",start:"node ./src/coder.js",build:"node scripts/build.js","build:clean":"node scripts/build.js --clean","build:dev":"node scripts/build.js --no-minify --sourcemap",postinstall:"node scripts/postinstall.js"},keywords:["ai-agent-runtime","agent-os","ai","cli","claude","gemini","codex","agent","orchestration","llm"],author:"makecoder",license:"MIT",repository:{type:"git",url:"https://github.com/makecoderai/coder.git"},homepage:"https://github.com/makecoderai/coder",dependencies:{"@larksuiteoapi/node-sdk":"^1.59.0","@wecom/aibot-node-sdk":"1.0.7",bun:">=1.3.12",commander:"^15.0.0","node-fetch":"^3.3.2",open:"^10.1.0",ws:"^8.21.0",zod:"^3.25.76"},engines:{node:">=20.0.0"},devDependencies:{chokidar:"^4.0.3"},files:["dist","scripts/postinstall.js"]}});var Aw=$((Oue,Fw)=>{var Ku=require("crypto"),{URL:WU}=require("url"),Vu=class{static generateSignature(t,r,a,s){try{let i=new WU(t),o=Buffer.from(i.pathname),e=Buffer.from(o),g=r?typeof r=="string"?Buffer.from(r):Buffer.from(JSON.stringify(r)):Buffer.alloc(0),d=Buffer.concat([e,g,Buffer.from(s)]),m=Ku.createHmac("sha256",a);return m.update(d),m.digest("hex")}catch(i){throw new Error(`Failed to generate signature: ${i.message}`)}}static validateSignature(t,r,a,s,i){return this.generateSignature(t,r,a,s)===i}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(t=16){let r="abcdefghijkmnpqrstuvwxyz",a="ABCDEFGHJKLMNPQRSTUVWXYZ",s="23456789",i="!@#$%^&*-_=+",o=r+a+s+i;t<8&&(t=8);let e=d=>d[Ku.randomBytes(1)[0]%d.length],g=[e(r),e(a),e(s),e(i)];for(;g.length<t;)g.push(e(o));for(let d=g.length-1;d>0;d--){let m=Ku.randomBytes(1)[0]%(d+1);[g[d],g[m]]=[g[m],g[d]]}return g.join("")}};Fw.exports=Vu});var Wd=$((Fue,Rw)=>{var HU=require("https"),{URL:KU}=require("url"),Cw="https://makecoder.com/bigapis/auth/v1",VU="https://makecoder.com/bigapis/kbb2/v1",JU="https://makecoder.com/wiki/api",Ju=class{constructor(t){this.token=t}request(t,r,a,s){return new Promise((i,o)=>{let e=s||Cw,g=new KU(`${e}${r}`),d={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},m=null;a!=null&&(m=JSON.stringify(a),d["Content-Length"]=Buffer.byteLength(m));let c=HU.request({hostname:g.hostname,port:g.port||443,path:g.pathname+g.search,method:t,headers:d},f=>{let y="";f.on("data",v=>y+=v),f.on("end",()=>i({status:f.statusCode,body:y}))});c.on("error",o),m&&c.write(m),c.end()})}};function zw(n){try{return JSON.parse(n)}catch{return null}}function XU(n){return n===401?2:n===403?5:n===404?4:n===409?6:1}function ZU(n){let t=zw(n);return t?.message?t.message:t?.error?t.error:(n||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Rw.exports={TeamHttp:Ju,parseJson:zw,exitCodeForStatus:XU,errorMessage:ZU,API_BASE:Cw,BIGKBB_BASE:VU,WIKI_API_BASE:JU}});var Dw=$((Aue,Lw)=>{var Xu=n=>String(n??"").replace(/\|/g,"\\|").replace(/\n/g," ");function YU(n,t,r={}){let{labels:a={},empty:s="\uFF08\u7A7A\uFF09"}=r;if(!t||!t.length){n.emit(s);return}if(n.isJson){n.emit(t);return}let i=Object.keys(t[0]),e=[`| ${i.map(g=>a[g]||g).map(Xu).join(" | ")} |`,`| ${i.map(()=>"---").join(" | ")} |`,...t.map(g=>`| ${i.map(d=>Xu(g[d])).join(" | ")} |`)];n.emit(e.join(`
28
28
  `))}function QU(n,t,r=null){if(n.isJson){let a={};for(let[s,i]of t)a[s]=i;r&&typeof r=="object"&&Object.assign(a,r),n.emit(a);return}n.emit(t.map(([a,s,i])=>`${i||a}: ${s??""}`).join(`
29
29
  `))}Lw.exports={emitTable:YU,emitDetails:QU,escCell:Xu}});var Mw=$((zue,Nw)=>{var{TeamHttp:Cue,parseJson:eN,exitCodeForStatus:tN,errorMessage:rN,BIGKBB_BASE:aN,WIKI_API_BASE:sN}=Wd();function ei(n,t,r,a=1){n.fail(t,r);let s=new Error("__handled__");throw s.handled=!0,s.code=a,s}function jw(n,t){ei(n,rN(t.body),iN(t.status),tN(t.status))}function iN(n){if(n===401)return"\u5148\u767B\u5F55: coder auth login --apikey <apiKey>";if(n===403)return"\u6743\u9650\u4E0D\u8DB3\uFF0C\u9700\u56E2\u961F owner / manager\uFF1B\u786E\u8BA4\u5F53\u524D\u56E2\u961F: coder team current";if(n===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528 coder team list / members \u67E5\u627E"}function Uw(n,t){if(t)return t;let r=n.ctx.getTeam?n.ctx.getTeam():null;return r&&r.id?r.id:null}function oN(n,t){let r=Uw(n,t);return r||ei(n.ctx,"\u672A\u6307\u5B9A teamId \u4E14\u65E0\u9ED8\u8BA4\u56E2\u961F","\u8FD0\u884C coder team use <id> \u8BBE\u9ED8\u8BA4\u56E2\u961F\uFF0C\u6216\u52A0 --team <id> / \u4F4D\u7F6E\u53C2\u6570",3),r}async function nN(n,t){let r=encodeURIComponent(JSON.stringify({id__in:[t]})),a;try{a=await n.http.request("GET",`/team?constraints=${r}`)}catch(o){ei(n.ctx,`\u7F51\u7EDC\u9519\u8BEF ${o.message}`,void 0,1)}a.status!==200&&jw(n.ctx,a);let s=eN(a.body),i=s&&s.data&&s.data.items||[];return i.length||ei(n.ctx,`\u56E2\u961F ${t} \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),i[0]}function cN(n){return Array.isArray(n.members)?n.members:[]}function dN(n,t,r,a){let s=t.find(i=>i.user_id===r||i.id===r||i.username===r);return s||ei(n.ctx,`\u6210\u5458 '${r}' \u4E0D\u5728\u56E2\u961F '${a||""}' \u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458\uFF0Cuser_id / username \u5747\u53EF",4),s}function lN(n,t){return t?n.filter(r=>r.user_type===t):n}function hN(n,t){t&&t!=="human"&&t!=="ai"&&ei(n.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${t}'`,void 0,3)}function pN(n,t){let r=n.config&&n.config.metadata&&n.config.metadata.created_by;if(!r)return"";let a=t.find(s=>s.user_id===r);return a?a.nickname?`${a.username}(${a.nickname})`:a.username:r}function uN(n){return n==="mentor"?"admin":"member"}async function mN(n,t,r){try{let a=await n.http.request("POST",`/${t}`,r,sN);(a.status<200||a.status>=300)&&process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${t}): HTTP ${a.status}
30
30
  `)}catch(a){process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${t}): ${a.message}
@@ -23,13 +23,13 @@ var Fd4=Object.create;var{getPrototypeOf:gd4,defineProperty:URH,getOwnPropertyNa
23
23
  Object.assign(A, {
24
24
  post(...args) {
25
25
  const [url, payload, ...remainArgs] = args;
26
- const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.45' + '&session_id=' + V_() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
26
+ const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.46' + '&session_id=' + V_() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
27
27
  if (process.env.CODER_APIKEY) {
28
28
  const headerValues = payload.headers.values;
29
29
  headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
30
30
  }
31
31
 
32
- payload.headers.values.set('X-Coder-Version', '4.1.45');
32
+ payload.headers.values.set('X-Coder-Version', '4.1.46');
33
33
  payload.headers.values.set('X-Coder-Platform', process.platform);
34
34
  payload.headers.values.set('X-Coder-Arch', process.arch);
35
35
 
@@ -23,13 +23,13 @@ var gcK=Object.create;var{getPrototypeOf:QcK,defineProperty:BEH,getOwnPropertyNa
23
23
  Object.assign(A, {
24
24
  post(...args) {
25
25
  const [url, payload, ...remainArgs] = args;
26
- const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.45' + '&session_id=' + I6() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
26
+ const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.46' + '&session_id=' + I6() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
27
27
  if (process.env.CODER_APIKEY) {
28
28
  const headerValues = payload.headers.values;
29
29
  headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
30
30
  }
31
31
 
32
- payload.headers.values.set('X-Coder-Version', '4.1.45');
32
+ payload.headers.values.set('X-Coder-Version', '4.1.46');
33
33
  payload.headers.values.set('X-Coder-Platform', process.platform);
34
34
  payload.headers.values.set('X-Coder-Arch', process.arch);
35
35
 
@@ -23,13 +23,13 @@ var bc5=Object.create;var{getPrototypeOf:xc5,defineProperty:Ukq,getOwnPropertyNa
23
23
  Object.assign(A, {
24
24
  post(...args) {
25
25
  const [url, payload, ...remainArgs] = args;
26
- const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.45' + '&session_id=' + y8() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
26
+ const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.46' + '&session_id=' + y8() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
27
27
  if (process.env.CODER_APIKEY) {
28
28
  const headerValues = payload.headers.values;
29
29
  headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
30
30
  }
31
31
 
32
- payload.headers.values.set('X-Coder-Version', '4.1.45');
32
+ payload.headers.values.set('X-Coder-Version', '4.1.46');
33
33
  payload.headers.values.set('X-Coder-Platform', process.platform);
34
34
  payload.headers.values.set('X-Coder-Arch', process.arch);
35
35
 
@@ -23,13 +23,13 @@ var Cc9=Object.create;var{getPrototypeOf:bc9,defineProperty:UTH,getOwnPropertyNa
23
23
  Object.assign(A, {
24
24
  post(...args) {
25
25
  const [url, payload, ...remainArgs] = args;
26
- const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.45' + '&session_id=' + y$() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
26
+ const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.46' + '&session_id=' + y$() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
27
27
  if (process.env.CODER_APIKEY) {
28
28
  const headerValues = payload.headers.values;
29
29
  headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
30
30
  }
31
31
 
32
- payload.headers.values.set('X-Coder-Version', '4.1.45');
32
+ payload.headers.values.set('X-Coder-Version', '4.1.46');
33
33
  payload.headers.values.set('X-Coder-Platform', process.platform);
34
34
  payload.headers.values.set('X-Coder-Arch', process.arch);
35
35
 
@@ -23,13 +23,13 @@ var Cc4=Object.create;var{getPrototypeOf:bc4,defineProperty:BVH,getOwnPropertyNa
23
23
  Object.assign(A, {
24
24
  post(...args) {
25
25
  const [url, payload, ...remainArgs] = args;
26
- const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.45' + '&session_id=' + E8() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
26
+ const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.1.46' + '&session_id=' + E8() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
27
27
  if (process.env.CODER_APIKEY) {
28
28
  const headerValues = payload.headers.values;
29
29
  headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
30
30
  }
31
31
 
32
- payload.headers.values.set('X-Coder-Version', '4.1.45');
32
+ payload.headers.values.set('X-Coder-Version', '4.1.46');
33
33
  payload.headers.values.set('X-Coder-Platform', process.platform);
34
34
  payload.headers.values.set('X-Coder-Arch', process.arch);
35
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makecoder",
3
- "version": "4.1.45",
3
+ "version": "4.1.46",
4
4
  "description": "MakeCoder Coder: AI Agent Runtime OS that runs and orchestrates Claude Code, Codex, Gemini and more across CLI, API, Web and chat",
5
5
  "main": "./dist/coder.js",
6
6
  "bin": {
@@ -54,9 +54,9 @@
54
54
  "scripts/postinstall.js"
55
55
  ],
56
56
  "optionalDependencies": {
57
- "makecoder-bin-darwin-arm64": "4.1.45",
58
- "makecoder-bin-linux-arm64": "4.1.45",
59
- "makecoder-bin-linux-x64": "4.1.45",
60
- "makecoder-bin-win-x64": "4.1.45"
57
+ "makecoder-bin-darwin-arm64": "4.1.46",
58
+ "makecoder-bin-linux-arm64": "4.1.46",
59
+ "makecoder-bin-linux-x64": "4.1.46",
60
+ "makecoder-bin-win-x64": "4.1.46"
61
61
  }
62
62
  }