makecoder 4.1.17 → 4.1.18

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
@@ -1,75 +1,75 @@
1
1
  #!/usr/bin/env node
2
- var Yu=Object.create;var So=Object.defineProperty;var Xu=Object.getOwnPropertyDescriptor;var Qu=Object.getOwnPropertyNames;var ed=Object.getPrototypeOf,td=Object.prototype.hasOwnProperty;var k=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(s){throw e=0,s}};var sd=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Qu(e))!td.call(t,n)&&n!==s&&So(t,n,{get:()=>e[n],enumerable:!(r=Xu(e,n))||r.enumerable});return t};var rd=(t,e,s)=>(s=t!=null?Yu(ed(t)):{},sd(e||!t||!t.__esModule?So(s,"default",{value:t,enumerable:!0}):s,t));var Ao=k((jk,Eo)=>{var Ut=require("fs"),Io=require("path"),nd=require("os"),Co="https://api.makecoder.com/v1",Sr=class{constructor(e={}){let s=process.env.CODER_PROFILE,r=s?`.coder.${s}`:".coder";this.configPath=Io.join(nd.homedir(),r,"config.json"),this.defaultConfig={agent:"claude",auth:{apikey:null}},this._apikeyOverride=e.apikey||null,this.format=this._resolveFormat(e.format)}_resolveFormat(e){return(e||process.env.CODER_FORMAT||"text")==="json"?"json":"text"}get isJson(){return this.format==="json"}get isNonInteractive(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}loadConfig(){let e=Io.dirname(this.configPath);try{return Ut.existsSync(e)||Ut.mkdirSync(e,{recursive:!0}),Ut.existsSync(this.configPath)||Ut.writeFileSync(this.configPath,JSON.stringify(this.defaultConfig,null,2)),JSON.parse(Ut.readFileSync(this.configPath,"utf8"))}catch{return{...this.defaultConfig}}}_writeConfig(e){try{return Ut.writeFileSync(this.configPath,JSON.stringify(e,null,2)),!0}catch{return!1}}getApiKeyFromConfig(e=this.loadConfig()){return e.auth?.apikey?e.auth.apikey:e.auth?.ak&&e.auth?.sk?`${e.auth.ak}.${e.auth.sk}`:null}getApiKey(){return this._apikeyOverride?this._apikeyOverride:process.env.CODER_APIKEY?process.env.CODER_APIKEY:this.getApiKeyFromConfig()}saveApiKey(e){let s=this.loadConfig();return s.auth={apikey:e},this._writeConfig(s)}clearApiKey(){let e=this.loadConfig();return e.auth={apikey:null},this._writeConfig(e)}saveAuthToConfig(e){return this.saveApiKey(e)}clearAuthFromConfig(){return this.clearApiKey()}getCoderBaseUrl(){return process.env.CODER_BASE_URL?process.env.CODER_BASE_URL:this.loadConfig().coderBaseUrl||Co}getTeam(){return this.loadConfig().team||null}setTeam(e,s){let r=this.loadConfig();return e==null?delete r.team:r.team={id:e,name:s||""},this._writeConfig(r)}getMulticaBaseUrl(){return process.env.MULTICA_BASE_URL?process.env.MULTICA_BASE_URL:this.loadConfig().multicaBaseUrl||null}getTeamManual(){return!!this.loadConfig().team_manual}setTeamManual(e){let s=this.loadConfig();return e?s.team_manual=!0:delete s.team_manual,this._writeConfig(s)}requireApiKey(){return this.getApiKey()?!0:(this.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`"),!1)}emit(e){if(this.isJson){let s=typeof e=="string"?{message:e}:e;process.stdout.write(JSON.stringify({ok:!0,data:s})+`
2
+ var rd=Object.create;var $o=Object.defineProperty;var nd=Object.getOwnPropertyDescriptor;var od=Object.getOwnPropertyNames;var id=Object.getPrototypeOf,ad=Object.prototype.hasOwnProperty;var k=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(s){throw e=0,s}};var cd=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of od(e))!ad.call(t,n)&&n!==s&&$o(t,n,{get:()=>e[n],enumerable:!(r=nd(e,n))||r.enumerable});return t};var ld=(t,e,s)=>(s=t!=null?rd(id(t)):{},cd(e||!t||!t.__esModule?$o(s,"default",{value:t,enumerable:!0}):s,t));var Oo=k((Wk,vo)=>{var Rt=require("fs"),To=require("path"),ud=require("os"),Uo="https://api.makecoder.com/v1",$r=class{constructor(e={}){let s=process.env.CODER_PROFILE,r=s?`.coder.${s}`:".coder";this.configPath=To.join(ud.homedir(),r,"config.json"),this.defaultConfig={agent:"claude",auth:{apikey:null}},this._apikeyOverride=e.apikey||null,this.format=this._resolveFormat(e.format)}_resolveFormat(e){return(e||process.env.CODER_FORMAT||"text")==="json"?"json":"text"}get isJson(){return this.format==="json"}get isNonInteractive(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}loadConfig(){let e=To.dirname(this.configPath);try{return Rt.existsSync(e)||Rt.mkdirSync(e,{recursive:!0}),Rt.existsSync(this.configPath)||Rt.writeFileSync(this.configPath,JSON.stringify(this.defaultConfig,null,2)),JSON.parse(Rt.readFileSync(this.configPath,"utf8"))}catch{return{...this.defaultConfig}}}_writeConfig(e){try{return Rt.writeFileSync(this.configPath,JSON.stringify(e,null,2)),!0}catch{return!1}}getApiKeyFromConfig(e=this.loadConfig()){return e.auth?.apikey?e.auth.apikey:e.auth?.ak&&e.auth?.sk?`${e.auth.ak}.${e.auth.sk}`:null}getApiKey(){return this._apikeyOverride?this._apikeyOverride:process.env.CODER_APIKEY?process.env.CODER_APIKEY:this.getApiKeyFromConfig()}saveApiKey(e){let s=this.loadConfig();return s.auth={apikey:e},this._writeConfig(s)}clearApiKey(){let e=this.loadConfig();return e.auth={apikey:null},this._writeConfig(e)}saveAuthToConfig(e){return this.saveApiKey(e)}clearAuthFromConfig(){return this.clearApiKey()}getCoderBaseUrl(){return process.env.CODER_BASE_URL?process.env.CODER_BASE_URL:this.loadConfig().coderBaseUrl||Uo}getTeam(){return this.loadConfig().team||null}setTeam(e,s){let r=this.loadConfig();return e==null?delete r.team:r.team={id:e,name:s||""},this._writeConfig(r)}getMulticaBaseUrl(){return process.env.MULTICA_BASE_URL?process.env.MULTICA_BASE_URL:this.loadConfig().multicaBaseUrl||null}getTeamManual(){return!!this.loadConfig().team_manual}setTeamManual(e){let s=this.loadConfig();return e?s.team_manual=!0:delete s.team_manual,this._writeConfig(s)}requireApiKey(){return this.getApiKey()?!0:(this.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`"),!1)}emit(e){if(this.isJson){let s=typeof e=="string"?{message:e}:e;process.stdout.write(JSON.stringify({ok:!0,data:s})+`
3
3
  `);return}typeof e=="string"?process.stdout.write(e+`
4
4
  `):process.stdout.write(JSON.stringify(e,null,2)+`
5
5
  `)}fail(e,s){if(this.isJson){let r={ok:!1,error:e};s&&(r.hint=s),process.stderr.write(JSON.stringify(r)+`
6
6
  `);return}process.stderr.write(`Error: ${e}
7
7
  `),s&&process.stderr.write(`Hint: ${s}
8
- `)}};Eo.exports={CoderContext:Sr,DEFAULT_BASE_URL:Co}});var rs=k((Mk,To)=>{var{spawn:od}=require("child_process"),ss=require("path"),$o=require("fs"),Ir=class{constructor(e){this.config=e}findExecutablePath(){let e=ss.dirname(require.main.filename);for(let s of this.config.executablePaths){let r=ss.resolve(e,s);if($o.existsSync(r))return r}if(this.config.globalSubPath){let s=this._findGlobalMakecoderPath(this.config.globalSubPath);if(s)return s}throw new Error(`Could not find ${this.config.name||"executable"} in any of the configured paths: ${this.config.executablePaths.join(", ")}`)}_findGlobalMakecoderPath(e){let s=ss.dirname(process.execPath),r=[ss.join(s,"..","lib","node_modules","makecoder","dist",e),ss.join(s,"node_modules","makecoder","dist",e)];for(let n of r)if($o.existsSync(n))return n;return null}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null,extraEnv:o={}}=e;try{let i=this.findExecutablePath();return process.env.CODER_DEBUG&&console.log(`executablePath: ${i}`),new Promise((a,c)=>{let l={...process.env,...this.config.environmentVariables(r),...o};n&&(l.CODER_APIKEY=n);let u=["--no-warnings"];process.env.CODER_INSPECT_BRK==="True"&&u.push("--inspect-brk"),u.push(i,...s);let d=od("node",u,{env:l,stdio:"inherit"});d.on("error",m=>{console.error(`Failed to start: ${m.message}`),c(m)}),d.on("exit",m=>a(m)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{d.kill("SIGTERM"),setTimeout(()=>{d.killed||d.kill("SIGKILL")},8e3)})})}catch(i){throw i}}};To.exports=Ir});var Cr=k((Gk,Uo)=>{var id=["# Runtime context: Coder","","You are running inside Coder \u2014 an AI Agent Runtime OS from MakeCoder that runs and","orchestrates multiple coding agents (Claude Code, Codex, Gemini, and others). Coder","hosts this session; it is distinct from the project in the current directory, which","is usually something else.","","What this changes for you:","","- Auth, model access, and usage limits run through the user's MakeCoder team, not a"," model provider directly. For any question about authentication, quota, billing, or"," which models are available, point the user to `coder auth status` and their MakeCoder"," team \u2014 never to a model provider's own console, website, or subscription plan.","","- You usually don't need Coder itself to do your work. When you do \u2014 for team"," knowledge, members, skills, or handing work to another agent \u2014 run `coder --help`"," first to see the available commands (e.g. `coder wiki`, `coder team`, `coder skills`,"," and `coder claude` / `coder codex` / `coder gemini`). Note: bare `coder` with no"," arguments launches an agent session, so use `coder --help` to inspect, not `coder`.","",'- "Coder", "makecoder", the `coder` command, and `CODER_*` env vars all refer to this'," runtime \u2014 not a generic CLI, and not the user's own codebase.","","- When a task needs the agent CLI itself \u2014 e.g. managing MCP servers, config, or"," plugins \u2014 invoke it through Coder, not the bare binary. The bare `claude` / `codex` /"," `gemini` on PATH (if any) is unconfigured and bypasses the runtime's auth and proxy."," Map the command you'd run to its Coder form:"," - `claude <args>` \u2192 `coder agent claude <args>` (e.g. `coder agent claude mcp add <name> <url>`)"," - `codex <args>` \u2192 `coder agent codex <args>`"," - `gemini <args>` \u2192 `coder agent gemini <args>`",' So a request like "install the MCP server at <url>" becomes'," `coder agent claude mcp add <name> <url>`, never a bare `claude mcp ...`.","","This is background context \u2014 keep writing code and communicating exactly as you","normally would."].join(`
9
- `);Uo.exports={CODER_RUNTIME_PROMPT:id}});var Oo=k((Bk,vo)=>{var ad=require("fs"),{CODER_RUNTIME_PROMPT:Er}=Cr(),cd=new Set(["agents","auth","auto-mode","config","doctor","install","mcp","plugin","plugins","project","setup-token","ultrareview","update","upgrade"]);function ld(t){for(let e of t){if(e==="--")break;if(!e.startsWith("-"))return cd.has(e)}return!1}function ud(t){let e=[...t];if(ld(e))return e;let s=e.indexOf("--append-system-prompt");if(s!==-1&&s+1<e.length)return e[s+1]=`${Er}
8
+ `)}};vo.exports={CoderContext:$r,DEFAULT_BASE_URL:Uo}});var as=k((Kk,Ro)=>{var{spawn:dd}=require("child_process"),is=require("path"),Do=require("fs"),Tr=class{constructor(e){this.config=e}findExecutablePath(){let e=is.dirname(require.main.filename);for(let s of this.config.executablePaths){let r=is.resolve(e,s);if(Do.existsSync(r))return r}if(this.config.globalSubPath){let s=this._findGlobalMakecoderPath(this.config.globalSubPath);if(s)return s}throw new Error(`Could not find ${this.config.name||"executable"} in any of the configured paths: ${this.config.executablePaths.join(", ")}`)}_findGlobalMakecoderPath(e){let s=is.dirname(process.execPath),r=[is.join(s,"..","lib","node_modules","makecoder","dist",e),is.join(s,"node_modules","makecoder","dist",e)];for(let n of r)if(Do.existsSync(n))return n;return null}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null,extraEnv:o={}}=e;try{let i=this.findExecutablePath();return process.env.CODER_DEBUG&&console.log(`executablePath: ${i}`),new Promise((a,c)=>{let l={...process.env,...this.config.environmentVariables(r),...o};n&&(l.CODER_APIKEY=n);let u=["--no-warnings"];process.env.CODER_INSPECT_BRK==="True"&&u.push("--inspect-brk"),u.push(i,...s);let d=dd("node",u,{env:l,stdio:"inherit"});d.on("error",p=>{console.error(`Failed to start: ${p.message}`),c(p)}),d.on("exit",p=>a(p)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{d.kill("SIGTERM"),setTimeout(()=>{d.killed||d.kill("SIGKILL")},8e3)})})}catch(i){throw i}}};Ro.exports=Tr});var Ur=k((zk,Lo)=>{var pd=["# Runtime context: Coder","","You are running inside Coder \u2014 an AI Agent Runtime OS from MakeCoder that runs and","orchestrates multiple coding agents (Claude Code, Codex, Gemini, and others). Coder","hosts this session; it is distinct from the project in the current directory, which","is usually something else.","","What this changes for you:","","- Auth, model access, and usage limits run through the user's MakeCoder team, not a"," model provider directly. For any question about authentication, quota, billing, or"," which models are available, point the user to `coder auth status` and their MakeCoder"," team \u2014 never to a model provider's own console, website, or subscription plan.","","- You usually don't need Coder itself to do your work. When you do \u2014 for team"," knowledge, members, skills, or handing work to another agent \u2014 run `coder --help`"," first to see the available commands (e.g. `coder wiki`, `coder team`, `coder skills`,"," and `coder claude` / `coder codex` / `coder gemini`). Note: bare `coder` with no"," arguments launches an agent session, so use `coder --help` to inspect, not `coder`.","",'- "Coder", "makecoder", the `coder` command, and `CODER_*` env vars all refer to this'," runtime \u2014 not a generic CLI, and not the user's own codebase.","","- When a task needs the agent CLI itself \u2014 e.g. managing MCP servers, config, or"," plugins \u2014 invoke it through Coder, not the bare binary. The bare `claude` / `codex` /"," `gemini` on PATH (if any) is unconfigured and bypasses the runtime's auth and proxy."," Map the command you'd run to its Coder form:"," - `claude <args>` \u2192 `coder agent claude <args>` (e.g. `coder agent claude mcp add <name> <url>`)"," - `codex <args>` \u2192 `coder agent codex <args>`"," - `gemini <args>` \u2192 `coder agent gemini <args>`",' So a request like "install the MCP server at <url>" becomes'," `coder agent claude mcp add <name> <url>`, never a bare `claude mcp ...`.","","This is background context \u2014 keep writing code and communicating exactly as you","normally would."].join(`
9
+ `);Lo.exports={CODER_RUNTIME_PROMPT:pd}});var No=k((Jk,Po)=>{var fd=require("fs"),{CODER_RUNTIME_PROMPT:vr}=Ur(),md=new Set(["agents","auth","auto-mode","config","doctor","install","mcp","plugin","plugins","project","setup-token","ultrareview","update","upgrade"]);function hd(t){for(let e of t){if(e==="--")break;if(!e.startsWith("-"))return md.has(e)}return!1}function gd(t){let e=[...t];if(hd(e))return e;let s=e.indexOf("--append-system-prompt");if(s!==-1&&s+1<e.length)return e[s+1]=`${vr}
10
10
 
11
- ${e[s+1]}`,e;let r=e.indexOf("--append-system-prompt-file");if(r!==-1&&r+1<e.length){let n="";try{n=ad.readFileSync(e[r+1],"utf8")}catch{return e}return e.splice(r,2,"--append-system-prompt",`${Er}
11
+ ${e[s+1]}`,e;let r=e.indexOf("--append-system-prompt-file");if(r!==-1&&r+1<e.length){let n="";try{n=fd.readFileSync(e[r+1],"utf8")}catch{return e}return e.splice(r,2,"--append-system-prompt",`${vr}
12
12
 
13
- ${n}`),e}return[...e,"--append-system-prompt",Er]}vo.exports={withRuntimePrompt:ud}});var Ro=k((Fk,Do)=>{var dd=rs(),{spawn:fd,execFileSync:pd}=require("child_process"),Es=require("path"),ns=require("fs"),{withRuntimePrompt:md}=Oo(),Ar=class extends dd{constructor(){let e=`${process.platform}-${process.arch}`;super({name:"Claude Code (bun)",executablePaths:[`${e}/cc.js`,`../dist/${e}/cc.js`,`/tmp/claude-code-${e}/package/extracted/src/entrypoints/cc.js`],globalSubPath:`${e}/cc.js`,environmentVariables:s=>({ANTHROPIC_BASE_URL:`${s}/claude`,ANTHROPIC_API_KEY:"null",DISABLE_TELEMETRY:!0,CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:!0,DISABLE_COST_WARNINGS:!0,DISABLE_NON_ESSENTIAL_MODEL_CALLS:!0,CODER_BASE_URL:s,CLAUDE_CODE_ATTRIBUTION_HEADER:"0",DISABLE_INSTALLATION_CHECKS:"1",DISABLE_AUTOUPDATER:"1",ANTHROPIC_DEFAULT_HAIKU_MODEL:"claude-haiku-4-5"})})}_resolveBunPath(){let e=process.platform==="win32",s=e?"bun.exe":"bun",r=process.env.HOME||process.env.USERPROFILE||"";try{return pd(s,["--version"],{stdio:"ignore"}),s}catch{}if(r){let o=Es.join(r,".bun","bin",s);if(ns.existsSync(o))return o}if(r){let o=Es.join(r,".local","bin",s);if(ns.existsSync(o))return o}try{let o=require.resolve(`bun/${e?"bin/bun.exe":"bin/bun"}`);if(ns.existsSync(o))return o}catch{}let n=this._getBunPlatformPackage();if(n)try{let o=Es.dirname(require.resolve(`${n}/package.json`)),i=Es.join(o,"bin",s);if(ns.existsSync(i))return i}catch{}throw new Error(["bun is not installed.","","Tried (in order):"," 1. `bun` on PATH"," 2. ~/.bun/bin/bun"," 3. ~/.local/bin/bun"," 4. require.resolve('bun/bin/bun') \u2014 npm-installed bun package"," 5. @oven-sh/bun-<platform> tarball \u2014 npm platform package","","Fixes:"," - npm install -g bun"," - curl -fsSL https://bun.sh/install | bash (then open a new shell)"," - re-run `npm install -g makecoder` with --verbose to see why the"," bundled bun postinstall failed (network / proxy / mirror issues"," silently skip optionalDependencies)."].join(`
14
- `))}_getBunPlatformPackage(){let e=process.platform,s=process.arch;return{"darwin-arm64":"@oven-sh/bun-darwin-aarch64","darwin-x64":"@oven-sh/bun-darwin-x64","linux-arm64":"@oven-sh/bun-linux-aarch64","linux-x64":"@oven-sh/bun-linux-x64","win32-x64":"@oven-sh/bun-windows-x64"}[`${e}-${s}`]||null}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null,extraEnv:o={}}=e,i=this.findExecutablePath(),a=this._resolveBunPath();return process.env.CODER_DEBUG&&(console.log(`executablePath (bun): ${i}`),console.log(`bunPath: ${a}`)),new Promise((c,l)=>{let u={...process.env,...this.config.environmentVariables(r),CODER_EXECPATH:ns.realpathSync(process.argv[1]),...o};n&&(u.CODER_APIKEY=n);let d=md(s),m=fd(a,[i,...d],{env:u,stdio:"inherit"});m.on("error",h=>{h.code==="ENOENT"?console.error("bun binary not found. Install it with: npm install -g bun or curl -fsSL https://bun.sh/install | bash"):console.error(`Failed to start bun: ${h.message}`),l(h)}),m.on("exit",h=>c(h)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{m.kill("SIGTERM"),setTimeout(()=>{m.killed||m.kill("SIGKILL")},8e3)})})}};Do.exports=Ar});var No=k((Zk,Po)=>{var{execFileSync:$r,spawnSync:Pe}=require("child_process"),hd=require("readline"),Z=require("path"),O=require("fs"),Tr=require("os"),gd=require("crypto"),yd=["opus4.8","claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001"],Ke="/Applications/Claude.app",_d=`${Ke}/Contents/Resources/app.asar`,Ur="1.12603.1",As="https://cdn.makecoder.com/cdnuploads/claude-app/Claude-darwin-universal-1.12603.1.dmg",vr=class{constructor(){this.name="Claude Desktop (3p)",this.userData=Z.join(Tr.homedir(),"Library","Application Support","Claude-3p"),this.backupDir=`${this.userData}.coder-backup`}async launch(e={}){if(process.platform!=="darwin")return console.error("coder claude app \u76EE\u524D\u4EC5\u652F\u6301 macOS\u3002"),1;let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null}=e,o=(s[0]||"setup").toLowerCase();try{if(o==="restore")return this._restore();if(o==="status")return this._status();if(o==="setup"){if(O.existsSync(Ke)){let i=await this._ensureInstalledAppVersion();if(i!==0)return i}else{let i=this._ensureClaudeAppInstalled();if(i!==0)return i}return await this._setup(r,n)}return console.error(`\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A${o}\uFF08\u53EF\u7528\uFF1Asetup | restore | status\uFF09`),1}catch(i){return console.error(`Error: ${i.message}`),process.env.CODER_DEBUG&&console.error(i.stack),1}}async _setup(e,s){if(!s)return console.error("\u7F3A\u5C11 API Key\u3002\u8BF7\u5148 `coder auth login` \u6216\u7528 --apikey \u63D0\u4F9B\u3002"),1;let r=this._detectRequiredVersion();if(!r)return console.error("\u65E0\u6CD5\u8BC6\u522B Claude Desktop \u7248\u672C\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u5B89\u88C5\u6700\u65B0\u7248 Claude\u3002"),1;let{exec:n,entry:o}=this._resolveCoderEntry();return console.log("\u6B63\u5728\u914D\u7F6E Claude Desktop\u2026"),this._quitApp(),this._backupOnce(),this._writeDeploymentMode(),this._writeGatewayConfig(e,s),this._installShim(r,{exec:n,entry:o,apikey:s,coderBaseUrl:e}),this._openApp(),console.log("\u2705 Claude Desktop \u5DF2\u63A5\u5165 coder\uFF0C\u6B63\u5728\u542F\u52A8\u3002"),console.log(" \u8FD8\u539F\uFF1Acoder claude app restore"),0}_ensureClaudeAppInstalled(){console.log("\u672A\u68C0\u6D4B\u5230 Claude Desktop\uFF0C\u6B63\u5728\u4E0B\u8F7D\u5B89\u88C5\u2026");let e=Z.join(Tr.tmpdir(),`claude-app-${process.pid}-${Date.now()}.dmg`),s=null;try{if(Pe("curl",["-fL","--retry","2","-o",e,As],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!O.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${As}\uFF09\u3002`),1;let n=Pe("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(n.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),1;let o=n.stdout.match(/(\/Volumes\/[^\n]+)\s*$/m);if(s=o?o[1].trim():null,!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let i=Z.join(s,"Claude.app");return O.existsSync(i)?Pe("ditto",[i,Ke],{stdio:"inherit"}).status!==0?(console.error("\u62F7\u8D1D Claude.app \u5230 /Applications \u5931\u8D25\uFF08\u53EF\u80FD\u9700\u8981\u6743\u9650\uFF09\u3002"),1):(console.log("\u2705 Claude Desktop \u5B89\u88C5\u5B8C\u6210\u3002"),0):(console.error(`DMG \u5185\u672A\u627E\u5230 Claude.app\uFF08${i}\uFF09\u3002`),1)}finally{s&&Pe("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{O.rmSync(e,{force:!0})}catch{}}}async _ensureInstalledAppVersion(){let e=this._readInstalledAppVersion();return e?wd(e,Ur)?(console.error(`\u68C0\u6D4B\u5230 Claude Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${e}\uFF0C\u63A8\u8350 ${Ur}\u3002`),console.error("\u5EFA\u8BAE\u73B0\u5728\u5347\u7EA7\uFF0C\u4EE5\u4FDD\u6301 Desktop 3p \u914D\u7F6E\u3001CCD shim \u4E0E makecoder \u517C\u5BB9\u3002"),await this._confirmUpgrade()?this._upgradeClaudeApp():(console.error("\u7EE7\u7EED\u4F7F\u7528\u5DF2\u5B89\u88C5\u7684\u65E7\u7248 Claude Desktop\u3002"),0)):0:(process.env.CODER_DEBUG&&console.error(`[claude app] \u65E0\u6CD5\u8BFB\u53D6 ${Ke} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_readInstalledAppVersion(){let e=Z.join(Ke,"Contents","Info.plist");if(!O.existsSync(e))return null;try{return $r("plutil",["-extract","CFBundleShortVersionString","raw","-o","-",e],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch(s){return process.env.CODER_DEBUG&&console.error(`[claude app] plutil \u8BFB\u53D6\u7248\u672C\u5931\u8D25: ${s.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_CLAUDE_APP_AUTO_UPGRADE=0 \u53EF\u8DF3\u8FC7\u3002"),process.env.CODER_CLAUDE_APP_AUTO_UPGRADE!=="0";let e=await new Promise(s=>{let r=hd.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Claude Desktop\uFF1F[Y/n] ",n=>{r.close(),s(n.trim().toLowerCase())})});return e===""||e==="y"||e==="yes"}_upgradeClaudeApp(){console.error(`\u6B63\u5728\u5347\u7EA7 Claude Desktop\uFF1A${Ke}`),this._quitApp();let e=Z.join(Tr.tmpdir(),`claude-app-upgrade-${process.pid}-${Date.now()}.dmg`),s=null;try{if(Pe("curl",["-fL","--retry","2","-o",e,As],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!O.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${As}\uFF09\u3002`),1;let n=Pe("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(n.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&n.stderr&&console.error(n.stderr.trim()),1;if(s=bd(n.stdout),!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let o=kd(s,"Claude.app");return o?this._replaceAppBundle(o,Ke)?(console.error(`Claude Desktop \u5DF2\u5347\u7EA7\u5230 ${Ur}\u3002`),0):1:(console.error("DMG \u5185\u672A\u627E\u5230 Claude.app\u3002"),1)}finally{s&&Pe("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{O.rmSync(e,{force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return O.rmSync(r,{recursive:!0,force:!0}),O.renameSync(s,r),Pe("ditto",[e,s],{stdio:"inherit"}).status===0?(O.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Claude Desktop \u5931\u8D25\uFF1A${s}`),O.rmSync(s,{recursive:!0,force:!0}),O.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002"),!1)}catch(n){if(console.error(`\u66FF\u6362 Claude Desktop \u5931\u8D25\uFF1A${n.message}`),!O.existsSync(s)&&O.existsSync(r))try{O.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002")}catch(o){console.error(`\u6062\u590D\u65E7\u7248 Claude Desktop \u5931\u8D25\uFF1A${o.message}`)}return!1}}_detectRequiredVersion(){try{let s=O.readFileSync(_d).toString("latin1").match(/"version":"([0-9][0-9.]*)","manifest"/);return s?s[1]:null}catch(e){return process.env.CODER_DEBUG&&console.error(`[claude app] \u8BFB\u53D6 asar \u5931\u8D25: ${e.message}`),null}}_resolveCoderEntry(){let e=O.realpathSync(process.execPath),s=O.realpathSync(process.argv[1]);return process.env.CODER_DEBUG&&(console.log(`[claude app] exec=${e}`),console.log(`[claude app] entry=${s}`)),{exec:e,entry:s}}_backupOnce(){O.existsSync(this.backupDir)||O.existsSync(this.userData)&&(O.cpSync(this.userData,this.backupDir,{recursive:!0}),process.env.CODER_DEBUG&&console.log(`[claude app] \u5DF2\u5907\u4EFD -> ${this.backupDir}`))}_writeDeploymentMode(){O.mkdirSync(this.userData,{recursive:!0});let e=Z.join(this.userData,"claude_desktop_config.json"),s={};try{s=JSON.parse(O.readFileSync(e,"utf8"))}catch{}s.deploymentMode="3p",O.writeFileSync(e,JSON.stringify(s,null,2))}_writeGatewayConfig(e,s){let r=Z.join(this.userData,"configLibrary");O.mkdirSync(r,{recursive:!0});let n=gd.randomUUID().toLowerCase(),o={inferenceProvider:"gateway",inferenceCredentialKind:"static",inferenceGatewayBaseUrl:`${e}/claude`,inferenceGatewayAuthScheme:"x-api-key",inferenceGatewayApiKey:s,modelDiscoveryEnabled:!1,inferenceModels:yd};O.writeFileSync(Z.join(r,`${n}.json`),JSON.stringify(o,null,2)),O.writeFileSync(Z.join(r,"_meta.json"),JSON.stringify({appliedId:n,entries:[{id:n,name:"Coder Gateway"}]},null,2)),process.env.CODER_DEBUG&&console.log(`[claude app] gateway \u914D\u7F6E uuid=${n}`)}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=Z.join(e,"ccd-shim"),r=require.main&&require.main.filename&&Z.dirname(require.main.filename)||__dirname,n=[Z.resolve(r,s),Z.resolve(r,"../dist",s),Z.resolve(__dirname,"../../../dist",s)],o=Z.dirname(process.execPath);n.push(Z.join(o,"..","lib","node_modules","makecoder","dist",e,"ccd-shim"),Z.join(o,"node_modules","makecoder","dist",e,"ccd-shim"));for(let i of n)if(O.existsSync(i))return i;throw new Error(`\u672A\u627E\u5230 CCD shim\uFF08dist/${e}/ccd-shim\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 makecoder \u6216\u672C\u5730\u6267\u884C \`make fetch_tools\`\u3002`)}_shimInstallDir(e){return Z.join(this.userData,"claude-code",e,"claude.app","Contents","MacOS")}_installShim(e,{exec:s,entry:r,apikey:n,coderBaseUrl:o}){let i=this._resolveShimBinary(),a=this._shimInstallDir(e);O.mkdirSync(a,{recursive:!0});let c=Z.join(a,"claude");O.copyFileSync(i,c),O.chmodSync(c,493);let l=`exec=${s}
13
+ ${n}`),e}return[...e,"--append-system-prompt",vr]}Po.exports={withRuntimePrompt:gd}});var jo=k((Hk,qo)=>{var yd=as(),{spawn:_d,execFileSync:wd}=require("child_process"),vs=require("path"),cs=require("fs"),{withRuntimePrompt:bd}=No(),Or=class extends yd{constructor(){let e=`${process.platform}-${process.arch}`;super({name:"Claude Code (bun)",executablePaths:[`${e}/cc.js`,`../dist/${e}/cc.js`,`/tmp/claude-code-${e}/package/extracted/src/entrypoints/cc.js`],globalSubPath:`${e}/cc.js`,environmentVariables:s=>({ANTHROPIC_BASE_URL:`${s}/claude`,ANTHROPIC_API_KEY:"null",DISABLE_TELEMETRY:!0,CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:!0,DISABLE_COST_WARNINGS:!0,DISABLE_NON_ESSENTIAL_MODEL_CALLS:!0,CODER_BASE_URL:s,CLAUDE_CODE_ATTRIBUTION_HEADER:"0",DISABLE_INSTALLATION_CHECKS:"1",DISABLE_AUTOUPDATER:"1",ANTHROPIC_DEFAULT_HAIKU_MODEL:"claude-haiku-4-5"})})}_resolveBunPath(){let e=process.platform==="win32",s=e?"bun.exe":"bun",r=process.env.HOME||process.env.USERPROFILE||"";try{return wd(s,["--version"],{stdio:"ignore"}),s}catch{}if(r){let o=vs.join(r,".bun","bin",s);if(cs.existsSync(o))return o}if(r){let o=vs.join(r,".local","bin",s);if(cs.existsSync(o))return o}try{let o=require.resolve(`bun/${e?"bin/bun.exe":"bin/bun"}`);if(cs.existsSync(o))return o}catch{}let n=this._getBunPlatformPackage();if(n)try{let o=vs.dirname(require.resolve(`${n}/package.json`)),i=vs.join(o,"bin",s);if(cs.existsSync(i))return i}catch{}throw new Error(["bun is not installed.","","Tried (in order):"," 1. `bun` on PATH"," 2. ~/.bun/bin/bun"," 3. ~/.local/bin/bun"," 4. require.resolve('bun/bin/bun') \u2014 npm-installed bun package"," 5. @oven-sh/bun-<platform> tarball \u2014 npm platform package","","Fixes:"," - npm install -g bun"," - curl -fsSL https://bun.sh/install | bash (then open a new shell)"," - re-run `npm install -g makecoder` with --verbose to see why the"," bundled bun postinstall failed (network / proxy / mirror issues"," silently skip optionalDependencies)."].join(`
14
+ `))}_getBunPlatformPackage(){let e=process.platform,s=process.arch;return{"darwin-arm64":"@oven-sh/bun-darwin-aarch64","darwin-x64":"@oven-sh/bun-darwin-x64","linux-arm64":"@oven-sh/bun-linux-aarch64","linux-x64":"@oven-sh/bun-linux-x64","win32-x64":"@oven-sh/bun-windows-x64"}[`${e}-${s}`]||null}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null,extraEnv:o={}}=e,i=this.findExecutablePath(),a=this._resolveBunPath();return process.env.CODER_DEBUG&&(console.log(`executablePath (bun): ${i}`),console.log(`bunPath: ${a}`)),new Promise((c,l)=>{let u={...process.env,...this.config.environmentVariables(r),CODER_EXECPATH:cs.realpathSync(process.argv[1]),...o};n&&(u.CODER_APIKEY=n);let d=bd(s),p=_d(a,[i,...d],{env:u,stdio:"inherit"});p.on("error",h=>{h.code==="ENOENT"?console.error("bun binary not found. Install it with: npm install -g bun or curl -fsSL https://bun.sh/install | bash"):console.error(`Failed to start bun: ${h.message}`),l(h)}),p.on("exit",h=>c(h)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{p.kill("SIGTERM"),setTimeout(()=>{p.killed||p.kill("SIGKILL")},8e3)})})}};qo.exports=Or});var Bo=k((Yk,Go)=>{var{execFileSync:Dr,spawnSync:je}=require("child_process"),kd=require("readline"),K=require("path"),O=require("fs"),Rr=require("os"),xd=require("crypto"),Sd=["opus4.8","claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001"],He="/Applications/Claude.app",Id=`${He}/Contents/Resources/app.asar`,Lr="1.12603.1",Os="https://cdn.makecoder.com/cdnuploads/claude-app/Claude-darwin-universal-1.12603.1.dmg",Pr=class{constructor(){this.name="Claude Desktop (3p)",this.userData=K.join(Rr.homedir(),"Library","Application Support","Claude-3p"),this.backupDir=`${this.userData}.coder-backup`}async launch(e={}){if(process.platform!=="darwin")return console.error("coder claude app \u76EE\u524D\u4EC5\u652F\u6301 macOS\u3002"),1;let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null}=e,o=(s[0]||"setup").toLowerCase();try{if(o==="restore")return this._restore();if(o==="status")return this._status();if(o==="setup"){if(O.existsSync(He)){let i=await this._ensureInstalledAppVersion();if(i!==0)return i}else{let i=this._ensureClaudeAppInstalled();if(i!==0)return i}return await this._setup(r,n)}return console.error(`\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A${o}\uFF08\u53EF\u7528\uFF1Asetup | restore | status\uFF09`),1}catch(i){return console.error(`Error: ${i.message}`),process.env.CODER_DEBUG&&console.error(i.stack),1}}async _setup(e,s){if(!s)return console.error("\u7F3A\u5C11 API Key\u3002\u8BF7\u5148 `coder auth login` \u6216\u7528 --apikey \u63D0\u4F9B\u3002"),1;let r=this._detectRequiredVersion();if(!r)return console.error("\u65E0\u6CD5\u8BC6\u522B Claude Desktop \u7248\u672C\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u5B89\u88C5\u6700\u65B0\u7248 Claude\u3002"),1;let{exec:n,entry:o}=this._resolveCoderEntry();return console.log("\u6B63\u5728\u914D\u7F6E Claude Desktop\u2026"),this._quitApp(),this._backupOnce(),this._writeDeploymentMode(),this._writeGatewayConfig(e,s),this._installShim(r,{exec:n,entry:o,apikey:s,coderBaseUrl:e}),this._openApp(),console.log("\u2705 Claude Desktop \u5DF2\u63A5\u5165 coder\uFF0C\u6B63\u5728\u542F\u52A8\u3002"),console.log(" \u8FD8\u539F\uFF1Acoder claude app restore"),0}_ensureClaudeAppInstalled(){console.log("\u672A\u68C0\u6D4B\u5230 Claude Desktop\uFF0C\u6B63\u5728\u4E0B\u8F7D\u5B89\u88C5\u2026");let e=K.join(Rr.tmpdir(),`claude-app-${process.pid}-${Date.now()}.dmg`),s=null;try{if(je("curl",["-fL","--retry","2","-o",e,Os],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!O.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${Os}\uFF09\u3002`),1;let n=je("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(n.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),1;let o=n.stdout.match(/(\/Volumes\/[^\n]+)\s*$/m);if(s=o?o[1].trim():null,!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let i=K.join(s,"Claude.app");return O.existsSync(i)?je("ditto",[i,He],{stdio:"inherit"}).status!==0?(console.error("\u62F7\u8D1D Claude.app \u5230 /Applications \u5931\u8D25\uFF08\u53EF\u80FD\u9700\u8981\u6743\u9650\uFF09\u3002"),1):(console.log("\u2705 Claude Desktop \u5B89\u88C5\u5B8C\u6210\u3002"),0):(console.error(`DMG \u5185\u672A\u627E\u5230 Claude.app\uFF08${i}\uFF09\u3002`),1)}finally{s&&je("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{O.rmSync(e,{force:!0})}catch{}}}async _ensureInstalledAppVersion(){let e=this._readInstalledAppVersion();return e?Cd(e,Lr)?(console.error(`\u68C0\u6D4B\u5230 Claude Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${e}\uFF0C\u63A8\u8350 ${Lr}\u3002`),console.error("\u5EFA\u8BAE\u73B0\u5728\u5347\u7EA7\uFF0C\u4EE5\u4FDD\u6301 Desktop 3p \u914D\u7F6E\u3001CCD shim \u4E0E makecoder \u517C\u5BB9\u3002"),await this._confirmUpgrade()?this._upgradeClaudeApp():(console.error("\u7EE7\u7EED\u4F7F\u7528\u5DF2\u5B89\u88C5\u7684\u65E7\u7248 Claude Desktop\u3002"),0)):0:(process.env.CODER_DEBUG&&console.error(`[claude app] \u65E0\u6CD5\u8BFB\u53D6 ${He} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_readInstalledAppVersion(){let e=K.join(He,"Contents","Info.plist");if(!O.existsSync(e))return null;try{return Dr("plutil",["-extract","CFBundleShortVersionString","raw","-o","-",e],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch(s){return process.env.CODER_DEBUG&&console.error(`[claude app] plutil \u8BFB\u53D6\u7248\u672C\u5931\u8D25: ${s.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_CLAUDE_APP_AUTO_UPGRADE=0 \u53EF\u8DF3\u8FC7\u3002"),process.env.CODER_CLAUDE_APP_AUTO_UPGRADE!=="0";let e=await new Promise(s=>{let r=kd.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Claude Desktop\uFF1F[Y/n] ",n=>{r.close(),s(n.trim().toLowerCase())})});return e===""||e==="y"||e==="yes"}_upgradeClaudeApp(){console.error(`\u6B63\u5728\u5347\u7EA7 Claude Desktop\uFF1A${He}`),this._quitApp();let e=K.join(Rr.tmpdir(),`claude-app-upgrade-${process.pid}-${Date.now()}.dmg`),s=null;try{if(je("curl",["-fL","--retry","2","-o",e,Os],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!O.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${Os}\uFF09\u3002`),1;let n=je("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(n.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&n.stderr&&console.error(n.stderr.trim()),1;if(s=Ed(n.stdout),!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let o=Ad(s,"Claude.app");return o?this._replaceAppBundle(o,He)?(console.error(`Claude Desktop \u5DF2\u5347\u7EA7\u5230 ${Lr}\u3002`),0):1:(console.error("DMG \u5185\u672A\u627E\u5230 Claude.app\u3002"),1)}finally{s&&je("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{O.rmSync(e,{force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return O.rmSync(r,{recursive:!0,force:!0}),O.renameSync(s,r),je("ditto",[e,s],{stdio:"inherit"}).status===0?(O.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Claude Desktop \u5931\u8D25\uFF1A${s}`),O.rmSync(s,{recursive:!0,force:!0}),O.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002"),!1)}catch(n){if(console.error(`\u66FF\u6362 Claude Desktop \u5931\u8D25\uFF1A${n.message}`),!O.existsSync(s)&&O.existsSync(r))try{O.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002")}catch(o){console.error(`\u6062\u590D\u65E7\u7248 Claude Desktop \u5931\u8D25\uFF1A${o.message}`)}return!1}}_detectRequiredVersion(){try{let s=O.readFileSync(Id).toString("latin1").match(/"version":"([0-9][0-9.]*)","manifest"/);return s?s[1]:null}catch(e){return process.env.CODER_DEBUG&&console.error(`[claude app] \u8BFB\u53D6 asar \u5931\u8D25: ${e.message}`),null}}_resolveCoderEntry(){let e=O.realpathSync(process.execPath),s=O.realpathSync(process.argv[1]);return process.env.CODER_DEBUG&&(console.log(`[claude app] exec=${e}`),console.log(`[claude app] entry=${s}`)),{exec:e,entry:s}}_backupOnce(){O.existsSync(this.backupDir)||O.existsSync(this.userData)&&(O.cpSync(this.userData,this.backupDir,{recursive:!0}),process.env.CODER_DEBUG&&console.log(`[claude app] \u5DF2\u5907\u4EFD -> ${this.backupDir}`))}_writeDeploymentMode(){O.mkdirSync(this.userData,{recursive:!0});let e=K.join(this.userData,"claude_desktop_config.json"),s={};try{s=JSON.parse(O.readFileSync(e,"utf8"))}catch{}s.deploymentMode="3p",O.writeFileSync(e,JSON.stringify(s,null,2))}_writeGatewayConfig(e,s){let r=K.join(this.userData,"configLibrary");O.mkdirSync(r,{recursive:!0});let n=xd.randomUUID().toLowerCase(),o={inferenceProvider:"gateway",inferenceCredentialKind:"static",inferenceGatewayBaseUrl:`${e}/claude`,inferenceGatewayAuthScheme:"x-api-key",inferenceGatewayApiKey:s,modelDiscoveryEnabled:!1,inferenceModels:Sd};O.writeFileSync(K.join(r,`${n}.json`),JSON.stringify(o,null,2)),O.writeFileSync(K.join(r,"_meta.json"),JSON.stringify({appliedId:n,entries:[{id:n,name:"Coder Gateway"}]},null,2)),process.env.CODER_DEBUG&&console.log(`[claude app] gateway \u914D\u7F6E uuid=${n}`)}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=K.join(e,"ccd-shim"),r=require.main&&require.main.filename&&K.dirname(require.main.filename)||__dirname,n=[K.resolve(r,s),K.resolve(r,"../dist",s),K.resolve(__dirname,"../../../dist",s)],o=K.dirname(process.execPath);n.push(K.join(o,"..","lib","node_modules","makecoder","dist",e,"ccd-shim"),K.join(o,"node_modules","makecoder","dist",e,"ccd-shim"));for(let i of n)if(O.existsSync(i))return i;throw new Error(`\u672A\u627E\u5230 CCD shim\uFF08dist/${e}/ccd-shim\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 makecoder \u6216\u672C\u5730\u6267\u884C \`make fetch_tools\`\u3002`)}_shimInstallDir(e){return K.join(this.userData,"claude-code",e,"claude.app","Contents","MacOS")}_installShim(e,{exec:s,entry:r,apikey:n,coderBaseUrl:o}){let i=this._resolveShimBinary(),a=this._shimInstallDir(e);O.mkdirSync(a,{recursive:!0});let c=K.join(a,"claude");O.copyFileSync(i,c),O.chmodSync(c,493);let l=`exec=${s}
15
15
  entry=${r}
16
16
  apikey=${n}
17
17
  baseurl=${o}
18
- `;O.writeFileSync(`${c}.conf`,l),O.writeFileSync(Z.join(this.userData,"claude-code",e,".verified"),""),process.env.CODER_DEBUG&&console.log(`[claude app] shim \u5B89\u88C5 -> ${c}`)}_quitApp(){try{$r("osascript",["-e",'quit app "Claude"'],{stdio:"ignore"})}catch{}Pe("sleep",["2"])}_openApp(){try{$r("open",["-a","Claude"],{stdio:"ignore"})}catch(e){console.error(`\u65E0\u6CD5\u542F\u52A8 Claude\uFF1A${e.message}\uFF08\u8BF7\u624B\u52A8\u6253\u5F00\uFF09`)}}_restore(){return O.existsSync(this.backupDir)?(this._quitApp(),O.rmSync(this.userData,{recursive:!0,force:!0}),O.cpSync(this.backupDir,this.userData,{recursive:!0}),O.rmSync(this.backupDir,{recursive:!0,force:!0}),console.log("\u2705 \u5DF2\u8FD8\u539F Claude Desktop \u914D\u7F6E\uFF08\u91CD\u542F App \u751F\u6548\uFF09\u3002"),0):(console.error(`\u672A\u627E\u5230\u5907\u4EFD\u76EE\u5F55\uFF1A${this.backupDir}`),console.error("\u53EF\u80FD\u4ECE\u672A\u6267\u884C\u8FC7 setup\uFF0C\u6216\u5907\u4EFD\u5DF2\u88AB\u5220\u9664\u3002"),1)}_status(){let e=this._detectRequiredVersion(),s=null;try{s=JSON.parse(O.readFileSync(Z.join(this.userData,"claude_desktop_config.json"),"utf8")).deploymentMode}catch{}let r=null;try{let i=JSON.parse(O.readFileSync(Z.join(this.userData,"configLibrary","_meta.json"),"utf8"));r=JSON.parse(O.readFileSync(Z.join(this.userData,"configLibrary",`${i.appliedId}.json`),"utf8")).inferenceGatewayBaseUrl}catch{}let n=e&&O.existsSync(Z.join(this._shimInstallDir(e),"claude.conf"));return s==="3p"&&r&&n?(console.log("\u2705 Claude Desktop \u5DF2\u63A5\u5165 coder"),console.log(` API: ${r}`)):console.log("Claude Desktop \u672A\u63A5\u5165 coder\uFF08\u8FD0\u884C coder claude app \u63A5\u5165\uFF09"),process.env.CODER_DEBUG&&(console.log(`
19
- [debug]`),console.log(` claude.app: ${Ke}`),console.log(` requiredVersion: ${e||"(\u63A2\u6D4B\u5931\u8D25)"}`),console.log(` deploymentMode: ${s||"(\u672A\u8BBE\u7F6E)"}`),console.log(` gateway baseUrl: ${r||"(\u65E0)"}`),console.log(` shim installed: ${n?"yes":"no"}`),console.log(` backup: ${O.existsSync(this.backupDir)?"yes":"no"}`)),0}};function wd(t,e){let s=Lo(t),r=Lo(e),n=Math.max(s.length,r.length);for(let o=0;o<n;o++){let i=s[o]||0,a=r[o]||0;if(i<a)return!0;if(i>a)return!1}return!1}function Lo(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function bd(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(i=>i.trim().startsWith("/Volumes/"));if(n)return n.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}function kd(t,e){let s=Z.join(t,e);if(O.existsSync(s))return s;for(let r of O.readdirSync(t)){let n=Z.join(t,r);if(r.endsWith(".app")&&O.statSync(n).isDirectory())return n}return null}Po.exports=vr});var jo=k((Vk,qo)=>{var xd=rs(),Or=class extends xd{constructor(){super({name:"Gemini",executablePaths:["gemini/gemini.js","../dist/gemini/gemini.js"],globalSubPath:"gemini/gemini.js",environmentVariables:e=>({GOOGLE_GEMINI_BASE_URL:`${e}/gemini`,GEMINI_API_KEY:"null",GOOGLE_API_KEY:"null",GOOGLE_CLOUD_PROJECT:"coder",GOOGLE_CLOUD_LOCATION:"coder",USE_VERTEX:!0,GEMINI_TELEMETRY_ENABLED:"false",GEMINI_TELEMETRY_LOG_PROMPTS:"false"})})}};qo.exports=Or});var $s=k((Wk,Mo)=>{var{CODER_RUNTIME_PROMPT:Sd}=Cr(),Id={"linux-x64":"makecoder-bin-linux-x64","linux-arm64":"makecoder-bin-linux-arm64","darwin-arm64":"makecoder-bin-darwin-arm64","win32-x64":"makecoder-bin-win-x64"};function Cd(t){return["-c",`openai_base_url="${t}/codex"`,"-c","analytics.enabled=false","-c","feedback.enabled=false","-c","check_for_update_on_startup=false","-c",'otel.exporter="none"',"-c",'otel.trace_exporter="none"',"-c",'otel.metrics_exporter="none"',"-c",`developer_instructions=${Sd}`]}Mo.exports={PLATFORM_PACKAGE:Id,buildConfigOverrides:Cd}});var Bo=k((Kk,Go)=>{var Ed=rs(),{buildConfigOverrides:Ad}=$s(),Dr=class extends Ed{constructor(){super({name:"Codex",executablePaths:["codex.mjs","../dist/codex.mjs"],globalSubPath:"codex.mjs",environmentVariables:()=>({CODEX_DISABLE_WEBSOCKET:"1"})})}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r}=e,n=Ad(r);return await super.launch({...e,remainingArgs:[...n,...s]})}};Go.exports=Dr});var Wo=k((zk,Vo)=>{var{execFileSync:Ts,spawnSync:Us}=require("child_process"),$d=require("readline"),Lr=require("os"),ne=require("path"),H=require("fs"),Td=rs(),{buildConfigOverrides:Ud}=$s(),Rr="26.609.41114",Fo={arm64:"https://cdn.makecoder.com/cdnuploads/codex-app/Codex-darwin-arm64-26.609.41114.dmg",x64:"https://cdn.makecoder.com/cdnuploads/codex-app/Codex-darwin-x64-26.609.41114.dmg"},vs="Codex.app",vd=[ne.join("/Applications",vs),ne.join(Lr.homedir(),"Applications",vs)],Od=5e3,Pr=class extends Td{constructor(){super({name:"Codex",executablePaths:["codex.mjs","../dist/codex.mjs"],globalSubPath:"codex.mjs",environmentVariables:()=>({CODEX_DISABLE_WEBSOCKET:"1"})})}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null}=e,o=Ud(r),i=await this._ensureInstalledAppVersion();if(i!==0)return i;let a=this._injectDesktopEnv(n,r),c=this._withDownloadUrlMirror(s);try{return await super.launch({...e,remainingArgs:[...o,...c]})}finally{a&&(await new Promise(l=>setTimeout(l,Od)),this._removeDesktopEnv(a))}}_withDownloadUrlMirror(e){if(process.platform!=="darwin"||e.includes("--download-url"))return e;let s=Fo[process.arch];return s?(process.env.CODER_DEBUG&&console.log(`[codex app] \u6CE8\u5165 --download-url ${s}`),[...e,"--download-url",s]):e}async _ensureInstalledAppVersion(){if(process.platform!=="darwin")return 0;let e=Fo[process.arch];if(!e)return 0;let s=this._findInstalledAppPath();if(!s)return 0;let r=this._readInstalledAppVersion(s);return r?Dd(r,Rr)?(console.error(`\u68C0\u6D4B\u5230 Codex Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${r}\uFF0C\u63A8\u8350 ${Rr}\u3002`),console.error("\u5EFA\u8BAE\u73B0\u5728\u5347\u7EA7\uFF0C\u4EE5\u4FDD\u6301\u684C\u9762\u7AEF\u534F\u8BAE\u3001\u5185\u7F6E codex \u4E0E makecoder shim \u517C\u5BB9\u3002"),await this._confirmUpgrade()?this._upgradeInstalledApp(s,e):(console.error("\u7EE7\u7EED\u4F7F\u7528\u5DF2\u5B89\u88C5\u7684\u65E7\u7248 Codex Desktop\u3002"),0)):0:(process.env.CODER_DEBUG&&console.error(`[codex app] \u65E0\u6CD5\u8BFB\u53D6 ${s} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_findInstalledAppPath(){return vd.find(e=>H.existsSync(e))||null}_readInstalledAppVersion(e){let s=ne.join(e,"Contents","Info.plist");if(!H.existsSync(s))return null;try{return Ts("plutil",["-extract","CFBundleShortVersionString","raw","-o","-",s],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch(r){return process.env.CODER_DEBUG&&console.error(`[codex app] plutil \u8BFB\u53D6\u7248\u672C\u5931\u8D25: ${r.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_CODEX_APP_AUTO_UPGRADE=0 \u53EF\u8DF3\u8FC7\u3002"),process.env.CODER_CODEX_APP_AUTO_UPGRADE!=="0";let e=await new Promise(s=>{let r=$d.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Codex Desktop\uFF1F[Y/n] ",n=>{r.close(),s(n.trim().toLowerCase())})});return e===""||e==="y"||e==="yes"}_upgradeInstalledApp(e,s){console.error(`\u6B63\u5728\u5347\u7EA7 Codex Desktop\uFF1A${e}`),this._quitApp();let r=H.mkdtempSync(ne.join(Lr.tmpdir(),"codex-app-upgrade-")),n=ne.join(r,"Codex.dmg"),o=null;try{if(Us("curl",["-fL","--retry","2","-o",n,s],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!H.existsSync(n))return console.error(`\u4E0B\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\uFF1A${s}`),1;let a=Us("hdiutil",["attach",n,"-nobrowse","-readonly"],{encoding:"utf8"});if(a.status!==0)return console.error("\u6302\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&a.stderr&&console.error(a.stderr.trim()),1;if(o=Rd(a.stdout),!o)return console.error("\u65E0\u6CD5\u89E3\u6790 Codex Desktop \u5B89\u88C5\u5305\u6302\u8F7D\u70B9\u3002"),1;let c=this._findAppInMount(o);return c?this._replaceAppBundle(c,e)?(console.error(`Codex Desktop \u5DF2\u5347\u7EA7\u5230 ${Rr}\u3002`),0):1:(console.error(`DMG \u5185\u672A\u627E\u5230 ${vs}\u3002`),1)}catch(i){return console.error(`\u5347\u7EA7 Codex Desktop \u5931\u8D25\uFF1A${i.message}`),process.env.CODER_DEBUG&&console.error(i.stack),1}finally{o&&Us("hdiutil",["detach",o,"-quiet"],{stdio:"ignore"});try{H.rmSync(r,{recursive:!0,force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return H.rmSync(r,{recursive:!0,force:!0}),H.renameSync(s,r),Us("ditto",[e,s],{stdio:"inherit"}).status===0?(H.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Codex Desktop \u5931\u8D25\uFF1A${s}`),H.rmSync(s,{recursive:!0,force:!0}),H.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002"),!1)}catch(n){if(console.error(`\u66FF\u6362 Codex Desktop \u5931\u8D25\uFF1A${n.message}`),!H.existsSync(s)&&H.existsSync(r))try{H.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002")}catch(o){console.error(`\u6062\u590D\u65E7\u7248 Codex Desktop \u5931\u8D25\uFF1A${o.message}`)}return!1}}_quitApp(){try{Ts("osascript",["-e",'quit app "Codex"'],{stdio:"ignore"})}catch{}}_findAppInMount(e){let s=ne.join(e,vs);if(H.existsSync(s))return s;for(let r of H.readdirSync(e)){let n=ne.join(e,r);if(r.endsWith(".app")&&H.statSync(n).isDirectory())return n}return null}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=ne.join(e,"cdx-shim"),r=require.main&&require.main.filename&&ne.dirname(require.main.filename)||__dirname,n=[ne.resolve(r,s),ne.resolve(r,"../dist",s),ne.resolve(__dirname,"../../../dist",s)],o=ne.dirname(process.execPath);n.push(ne.join(o,"..","lib","node_modules","makecoder","dist",e,"cdx-shim"),ne.join(o,"node_modules","makecoder","dist",e,"cdx-shim"));for(let i of n)if(H.existsSync(i))return i;throw new Error(`\u672A\u627E\u5230 cdx-shim\uFF08dist/${e}/cdx-shim\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 makecoder \u6216\u672C\u5730\u6267\u884C \`make fetch_tools\`\u3002`)}_resolveCoderEntry(){return{exec:H.realpathSync(process.execPath),entry:H.realpathSync(process.argv[1])}}_installShim({apikey:e,coderBaseUrl:s}){let r=this._resolveShimBinary(),{exec:n,entry:o}=this._resolveCoderEntry(),i=process.env.CODER_PROFILE,a=i?`.coder.${i}`:".coder",c=ne.join(Lr.homedir(),a,"codex-app");H.mkdirSync(c,{recursive:!0,mode:448});let l=ne.join(c,"cdx-shim");H.copyFileSync(r,l),H.chmodSync(l,493);let u=`exec=${n}
18
+ `;O.writeFileSync(`${c}.conf`,l),O.writeFileSync(K.join(this.userData,"claude-code",e,".verified"),""),process.env.CODER_DEBUG&&console.log(`[claude app] shim \u5B89\u88C5 -> ${c}`)}_quitApp(){try{Dr("osascript",["-e",'quit app "Claude"'],{stdio:"ignore"})}catch{}je("sleep",["2"])}_openApp(){try{Dr("open",["-a","Claude"],{stdio:"ignore"})}catch(e){console.error(`\u65E0\u6CD5\u542F\u52A8 Claude\uFF1A${e.message}\uFF08\u8BF7\u624B\u52A8\u6253\u5F00\uFF09`)}}_restore(){return O.existsSync(this.backupDir)?(this._quitApp(),O.rmSync(this.userData,{recursive:!0,force:!0}),O.cpSync(this.backupDir,this.userData,{recursive:!0}),O.rmSync(this.backupDir,{recursive:!0,force:!0}),console.log("\u2705 \u5DF2\u8FD8\u539F Claude Desktop \u914D\u7F6E\uFF08\u91CD\u542F App \u751F\u6548\uFF09\u3002"),0):(console.error(`\u672A\u627E\u5230\u5907\u4EFD\u76EE\u5F55\uFF1A${this.backupDir}`),console.error("\u53EF\u80FD\u4ECE\u672A\u6267\u884C\u8FC7 setup\uFF0C\u6216\u5907\u4EFD\u5DF2\u88AB\u5220\u9664\u3002"),1)}_status(){let e=this._detectRequiredVersion(),s=null;try{s=JSON.parse(O.readFileSync(K.join(this.userData,"claude_desktop_config.json"),"utf8")).deploymentMode}catch{}let r=null;try{let i=JSON.parse(O.readFileSync(K.join(this.userData,"configLibrary","_meta.json"),"utf8"));r=JSON.parse(O.readFileSync(K.join(this.userData,"configLibrary",`${i.appliedId}.json`),"utf8")).inferenceGatewayBaseUrl}catch{}let n=e&&O.existsSync(K.join(this._shimInstallDir(e),"claude.conf"));return s==="3p"&&r&&n?(console.log("\u2705 Claude Desktop \u5DF2\u63A5\u5165 coder"),console.log(` API: ${r}`)):console.log("Claude Desktop \u672A\u63A5\u5165 coder\uFF08\u8FD0\u884C coder claude app \u63A5\u5165\uFF09"),process.env.CODER_DEBUG&&(console.log(`
19
+ [debug]`),console.log(` claude.app: ${He}`),console.log(` requiredVersion: ${e||"(\u63A2\u6D4B\u5931\u8D25)"}`),console.log(` deploymentMode: ${s||"(\u672A\u8BBE\u7F6E)"}`),console.log(` gateway baseUrl: ${r||"(\u65E0)"}`),console.log(` shim installed: ${n?"yes":"no"}`),console.log(` backup: ${O.existsSync(this.backupDir)?"yes":"no"}`)),0}};function Cd(t,e){let s=Mo(t),r=Mo(e),n=Math.max(s.length,r.length);for(let o=0;o<n;o++){let i=s[o]||0,a=r[o]||0;if(i<a)return!0;if(i>a)return!1}return!1}function Mo(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function Ed(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(i=>i.trim().startsWith("/Volumes/"));if(n)return n.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}function Ad(t,e){let s=K.join(t,e);if(O.existsSync(s))return s;for(let r of O.readdirSync(t)){let n=K.join(t,r);if(r.endsWith(".app")&&O.statSync(n).isDirectory())return n}return null}Go.exports=Pr});var Zo=k((Xk,Fo)=>{var $d=as(),Nr=class extends $d{constructor(){super({name:"Gemini",executablePaths:["gemini/gemini.js","../dist/gemini/gemini.js"],globalSubPath:"gemini/gemini.js",environmentVariables:e=>({GOOGLE_GEMINI_BASE_URL:`${e}/gemini`,GEMINI_API_KEY:"null",GOOGLE_API_KEY:"null",GOOGLE_CLOUD_PROJECT:"coder",GOOGLE_CLOUD_LOCATION:"coder",USE_VERTEX:!0,GEMINI_TELEMETRY_ENABLED:"false",GEMINI_TELEMETRY_LOG_PROMPTS:"false"})})}};Fo.exports=Nr});var Ds=k((Qk,Vo)=>{var{CODER_RUNTIME_PROMPT:Td}=Ur(),Ud={"linux-x64":"makecoder-bin-linux-x64","linux-arm64":"makecoder-bin-linux-arm64","darwin-arm64":"makecoder-bin-darwin-arm64","win32-x64":"makecoder-bin-win-x64"};function vd(t){return["-c",`openai_base_url="${t}/codex"`,"-c","analytics.enabled=false","-c","feedback.enabled=false","-c","check_for_update_on_startup=false","-c",'otel.exporter="none"',"-c",'otel.trace_exporter="none"',"-c",'otel.metrics_exporter="none"',"-c",`developer_instructions=${Td}`]}Vo.exports={PLATFORM_PACKAGE:Ud,buildConfigOverrides:vd}});var Ko=k((ex,Wo)=>{var Od=as(),{buildConfigOverrides:Dd}=Ds(),qr=class extends Od{constructor(){super({name:"Codex",executablePaths:["codex.mjs","../dist/codex.mjs"],globalSubPath:"codex.mjs",environmentVariables:()=>({CODEX_DISABLE_WEBSOCKET:"1"})})}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r}=e,n=Dd(r);return await super.launch({...e,remainingArgs:[...n,...s]})}};Wo.exports=qr});var Yo=k((tx,Ho)=>{var{execFileSync:Rs,spawnSync:Ls}=require("child_process"),Rd=require("readline"),Mr=require("os"),ie=require("path"),X=require("fs"),Ld=as(),{buildConfigOverrides:Pd}=Ds(),jr="26.609.41114",zo={arm64:"https://cdn.makecoder.com/cdnuploads/codex-app/Codex-darwin-arm64-26.609.41114.dmg",x64:"https://cdn.makecoder.com/cdnuploads/codex-app/Codex-darwin-x64-26.609.41114.dmg"},Ps="Codex.app",Nd=[ie.join("/Applications",Ps),ie.join(Mr.homedir(),"Applications",Ps)],qd=5e3,Gr=class extends Ld{constructor(){super({name:"Codex",executablePaths:["codex.mjs","../dist/codex.mjs"],globalSubPath:"codex.mjs",environmentVariables:()=>({CODEX_DISABLE_WEBSOCKET:"1"})})}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:n=null}=e,o=Pd(r),i=await this._ensureInstalledAppVersion();if(i!==0)return i;let a=this._injectDesktopEnv(n,r),c=this._withDownloadUrlMirror(s);try{return await super.launch({...e,remainingArgs:[...o,...c]})}finally{a&&(await new Promise(l=>setTimeout(l,qd)),this._removeDesktopEnv(a))}}_withDownloadUrlMirror(e){if(process.platform!=="darwin"||e.includes("--download-url"))return e;let s=zo[process.arch];return s?(process.env.CODER_DEBUG&&console.log(`[codex app] \u6CE8\u5165 --download-url ${s}`),[...e,"--download-url",s]):e}async _ensureInstalledAppVersion(){if(process.platform!=="darwin")return 0;let e=zo[process.arch];if(!e)return 0;let s=this._findInstalledAppPath();if(!s)return 0;let r=this._readInstalledAppVersion(s);return r?jd(r,jr)?(console.error(`\u68C0\u6D4B\u5230 Codex Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${r}\uFF0C\u63A8\u8350 ${jr}\u3002`),console.error("\u5EFA\u8BAE\u73B0\u5728\u5347\u7EA7\uFF0C\u4EE5\u4FDD\u6301\u684C\u9762\u7AEF\u534F\u8BAE\u3001\u5185\u7F6E codex \u4E0E makecoder shim \u517C\u5BB9\u3002"),await this._confirmUpgrade()?this._upgradeInstalledApp(s,e):(console.error("\u7EE7\u7EED\u4F7F\u7528\u5DF2\u5B89\u88C5\u7684\u65E7\u7248 Codex Desktop\u3002"),0)):0:(process.env.CODER_DEBUG&&console.error(`[codex app] \u65E0\u6CD5\u8BFB\u53D6 ${s} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_findInstalledAppPath(){return Nd.find(e=>X.existsSync(e))||null}_readInstalledAppVersion(e){let s=ie.join(e,"Contents","Info.plist");if(!X.existsSync(s))return null;try{return Rs("plutil",["-extract","CFBundleShortVersionString","raw","-o","-",s],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch(r){return process.env.CODER_DEBUG&&console.error(`[codex app] plutil \u8BFB\u53D6\u7248\u672C\u5931\u8D25: ${r.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_CODEX_APP_AUTO_UPGRADE=0 \u53EF\u8DF3\u8FC7\u3002"),process.env.CODER_CODEX_APP_AUTO_UPGRADE!=="0";let e=await new Promise(s=>{let r=Rd.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Codex Desktop\uFF1F[Y/n] ",n=>{r.close(),s(n.trim().toLowerCase())})});return e===""||e==="y"||e==="yes"}_upgradeInstalledApp(e,s){console.error(`\u6B63\u5728\u5347\u7EA7 Codex Desktop\uFF1A${e}`),this._quitApp();let r=X.mkdtempSync(ie.join(Mr.tmpdir(),"codex-app-upgrade-")),n=ie.join(r,"Codex.dmg"),o=null;try{if(Ls("curl",["-fL","--retry","2","-o",n,s],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!X.existsSync(n))return console.error(`\u4E0B\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\uFF1A${s}`),1;let a=Ls("hdiutil",["attach",n,"-nobrowse","-readonly"],{encoding:"utf8"});if(a.status!==0)return console.error("\u6302\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&a.stderr&&console.error(a.stderr.trim()),1;if(o=Md(a.stdout),!o)return console.error("\u65E0\u6CD5\u89E3\u6790 Codex Desktop \u5B89\u88C5\u5305\u6302\u8F7D\u70B9\u3002"),1;let c=this._findAppInMount(o);return c?this._replaceAppBundle(c,e)?(console.error(`Codex Desktop \u5DF2\u5347\u7EA7\u5230 ${jr}\u3002`),0):1:(console.error(`DMG \u5185\u672A\u627E\u5230 ${Ps}\u3002`),1)}catch(i){return console.error(`\u5347\u7EA7 Codex Desktop \u5931\u8D25\uFF1A${i.message}`),process.env.CODER_DEBUG&&console.error(i.stack),1}finally{o&&Ls("hdiutil",["detach",o,"-quiet"],{stdio:"ignore"});try{X.rmSync(r,{recursive:!0,force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return X.rmSync(r,{recursive:!0,force:!0}),X.renameSync(s,r),Ls("ditto",[e,s],{stdio:"inherit"}).status===0?(X.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Codex Desktop \u5931\u8D25\uFF1A${s}`),X.rmSync(s,{recursive:!0,force:!0}),X.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002"),!1)}catch(n){if(console.error(`\u66FF\u6362 Codex Desktop \u5931\u8D25\uFF1A${n.message}`),!X.existsSync(s)&&X.existsSync(r))try{X.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002")}catch(o){console.error(`\u6062\u590D\u65E7\u7248 Codex Desktop \u5931\u8D25\uFF1A${o.message}`)}return!1}}_quitApp(){try{Rs("osascript",["-e",'quit app "Codex"'],{stdio:"ignore"})}catch{}}_findAppInMount(e){let s=ie.join(e,Ps);if(X.existsSync(s))return s;for(let r of X.readdirSync(e)){let n=ie.join(e,r);if(r.endsWith(".app")&&X.statSync(n).isDirectory())return n}return null}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=ie.join(e,"cdx-shim"),r=require.main&&require.main.filename&&ie.dirname(require.main.filename)||__dirname,n=[ie.resolve(r,s),ie.resolve(r,"../dist",s),ie.resolve(__dirname,"../../../dist",s)],o=ie.dirname(process.execPath);n.push(ie.join(o,"..","lib","node_modules","makecoder","dist",e,"cdx-shim"),ie.join(o,"node_modules","makecoder","dist",e,"cdx-shim"));for(let i of n)if(X.existsSync(i))return i;throw new Error(`\u672A\u627E\u5230 cdx-shim\uFF08dist/${e}/cdx-shim\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 makecoder \u6216\u672C\u5730\u6267\u884C \`make fetch_tools\`\u3002`)}_resolveCoderEntry(){return{exec:X.realpathSync(process.execPath),entry:X.realpathSync(process.argv[1])}}_installShim({apikey:e,coderBaseUrl:s}){let r=this._resolveShimBinary(),{exec:n,entry:o}=this._resolveCoderEntry(),i=process.env.CODER_PROFILE,a=i?`.coder.${i}`:".coder",c=ie.join(Mr.homedir(),a,"codex-app");X.mkdirSync(c,{recursive:!0,mode:448});let l=ie.join(c,"cdx-shim");X.copyFileSync(r,l),X.chmodSync(l,493);let u=`exec=${n}
20
20
  entry=${o}
21
21
  apikey=${e||""}
22
22
  baseurl=${s||""}
23
- `;return H.writeFileSync(`${l}.conf`,u,{mode:384}),process.env.CODER_DEBUG&&(console.log(`[codex app] cdx-shim \u5DF2\u5B89\u88C5: ${l}`),console.log(`[codex app] exec=${n} entry=${o}`)),l}_injectDesktopEnv(e,s){if(process.platform!=="darwin")return null;let r;try{r=this._installShim({apikey:e,coderBaseUrl:s})}catch(i){return process.env.CODER_DEBUG&&console.log(`[codex app] \u5B89\u88C5 cdx-shim \u5931\u8D25\uFF0C\u8DF3\u8FC7 CODEX_CLI_PATH \u6CE8\u5165\uFF1B\u684C\u9762 App \u5C06\u4F7F\u7528\u81EA\u5E26 codex\uFF08\u4E0D\u8D70\u4EE3\u7406\uFF09: ${i.message}`),null}let n={CODEX_CLI_PATH:r};e&&(n.CODER_APIKEY=e);let o=[];for(let[i,a]of Object.entries(n))try{Ts("launchctl",["setenv",i,a],{stdio:"ignore"}),o.push(i)}catch(c){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl setenv ${i} \u5931\u8D25: ${c.message}`)}return process.env.CODER_DEBUG&&o.length&&console.log(`[codex app] \u5DF2\u6CE8\u5165 launchd \u73AF\u5883\u53D8\u91CF: ${o.join(", ")} (shim: ${r})`),o.length?o:null}_removeDesktopEnv(e){for(let s of e)try{Ts("launchctl",["unsetenv",s],{stdio:"ignore"})}catch(r){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl unsetenv ${s} \u5931\u8D25: ${r.message}`)}}};function Dd(t,e){let s=Zo(t),r=Zo(e),n=Math.max(s.length,r.length);for(let o=0;o<n;o++){let i=s[o]||0,a=r[o]||0;if(i<a)return!0;if(i>a)return!1}return!1}function Zo(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function Rd(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(i=>i.trim().startsWith("/Volumes/"));if(n)return n.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}Vo.exports=Pr});var Ds=k((Jk,Ho)=>{var Ld=Ro(),Pd=No(),Nd=jo(),qd=Bo(),jd=Wo();function Ko(){let t=new Ld;if(process.env.CODER_DEBUG)try{console.error(`[DEBUG] ClaudeBunLauncher selected, executable: ${t.findExecutablePath()}`)}catch(e){console.error(`[DEBUG] ClaudeBunLauncher executable not yet resolved: ${e.message}`)}return t}var Os={claude:{aliases:["claude"],description:"Claude Code \u667A\u80FD\u4F53\uFF08\u9ED8\u8BA4\uFF09",create:Ko,mapArgs:t=>t},"claude-app":{aliases:["claude-app"],description:"\u914D\u7F6E Claude Desktop\uFF08macOS\uFF09\u8D70 coder API\uFF1Asetup|restore|status",create:()=>new Pd,mapArgs:t=>t},codex:{aliases:["codex"],description:"OpenAI Codex \u667A\u80FD\u4F53",create:()=>new qd,mapArgs:t=>t},"codex-app":{aliases:["codex-app"],description:"\u914D\u7F6E Codex Desktop\uFF08macOS\uFF09\u8D70 coder API",create:()=>new jd,mapArgs:t=>["app",...t]},gemini:{aliases:["gemini"],description:"Gemini \u667A\u80FD\u4F53",create:()=>new Nd,mapArgs:t=>t}},zo=Object.keys(Os),Md=new Set(["claude","codex","gemini"]);function Gd(t){return Object.prototype.hasOwnProperty.call(Os,t)}function Jo(t){return Os[t]||null}async function Bd(t,e,s){let r=Jo(t);return r?await r.create().launch({remainingArgs:r.mapArgs(e),coderBaseUrl:s.getCoderBaseUrl(),apikey:s.getApiKey()}):(s.fail(`unknown agent: ${t}`,`available: ${zo.join(" | ")}`),1)}Ho.exports={AGENTS:Os,AGENT_NAMES:zo,SHORTCUTS:Md,isAgentName:Gd,getAgent:Jo,launchAgent:Bd,createClaudeLauncher:Ko}});var ei=k((Hk,Qo)=>{var os=require("fs"),Yo=require("path"),{spawn:Xo}=require("child_process"),Nr=class{constructor(){this.extensionId="codev.codev-background";let e=require.main?Yo.dirname(require.main.filename):__dirname;this.extensionPath=Yo.resolve(e,"vendor/claude-code.vsix"),this._codeCommand=null}async resolveCodeCommand(){if(this._codeCommand)return this._codeCommand;if(process.env.IS_AISTUDIO==="True"){let e="/usr/lib/aistudio/lib/vscode/bin/remote-cli/aistudio";if(os.existsSync(e))try{return os.accessSync(e,os.constants.F_OK|os.constants.X_OK),this._codeCommand=e,process.env.CODER_DEBUG&&console.log(`Using AI Studio VSCode path: ${e}`),this._codeCommand}catch(s){process.env.CODER_DEBUG&&console.log(`AI Studio path exists but not executable: ${s.message}`)}else process.env.CODER_DEBUG&&console.log(`AI Studio path not found: ${e}`)}try{let{spawn:e}=require("child_process");return new Promise(s=>{let r=e("which",["code"],{stdio:["ignore","pipe","ignore"]}),n="";r.stdout.on("data",o=>{n+=o.toString().trim()}),r.on("close",o=>{o===0&&n?(this._codeCommand=n,process.env.CODER_DEBUG&&console.log(`Resolved code command path: ${n}`),s(this._codeCommand)):(this._codeCommand="code",s(this._codeCommand))}),r.on("error",()=>{this._codeCommand="code",s(this._codeCommand)}),setTimeout(()=>{r.kill(),this._codeCommand="code",s(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):!!os.existsSync(this.extensionPath):(process.env.CODER_DEBUG&&console.log("VSCode not available, skipping extension installation"),!1)}catch(e){return process.env.CODER_DEBUG&&console.error(`Error checking extension installation status: ${e.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(e){return console.warn(`Error installing VSCode extension: ${e.message}`),!1}}async isVSCodeAvailable(){try{let e=process.env.IS_AISTUDIO==="True"?["--help"]:["--version"],s=await this.executeVSCodeCommand(e,{timeout:1e4});if(process.env.CODER_DEBUG&&(console.log(`VSCode availability check (${e.join(" ")}): ${s?"available":"unavailable"}`),process.env.IS_AISTUDIO==="True")){let{spawn:r}=require("child_process");try{r("which",["code"],{stdio:["ignore","pipe","ignore"]}).stdout.on("data",o=>{console.log("which code:",o.toString().trim())})}catch(n){console.log("which command failed:",n.message)}}return s}catch(e){return process.env.CODER_DEBUG&&console.error("VSCode availability check error:",e.message),!1}}async isExtensionInstalled(){let e=await this.resolveCodeCommand();try{return new Promise(s=>{try{let r={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: ${e} --list-extensions`);let n=Xo(e,["--list-extensions"],r),o="";n.stdout.on("data",i=>{o+=i.toString()}),n.on("close",i=>{if(i===0){let a=o.split(`
24
- `).map(c=>c.trim());s(a.includes(this.extensionId))}else s(!1)}),n.on("error",i=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",i.message),console.error("Error code:",i.code),console.error("Error errno:",i.errno),console.error("Error syscall:",i.syscall)),s(!1)}),setTimeout(()=>{try{n.kill()}catch{}s(!1)},1e4)}catch(r){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode list extensions:",r.message),s(!1)}})}catch{return!1}}async executeVSCodeCommand(e,s={}){let r=await this.resolveCodeCommand();return new Promise(n=>{try{let o={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: ${r} ${e.join(" ")}`);let i=Xo(r,e,o);i.on("close",c=>{n(c===0)}),i.on("error",c=>{process.env.CODER_DEBUG&&(console.error("VSCode command error:",c.message),console.error("Error code:",c.code),console.error("Error errno:",c.errno),console.error("Error syscall:",c.syscall)),n(!1)});let a=s.timeout||3e4;setTimeout(()=>{try{i.kill()}catch{}n(!1)},a)}catch(o){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",o.message),n(!1)}})}async ensureExtensionInstalled(){try{process.env.CODER_DEBUG&&console.log("VSCode Extension Service: Checking extension status..."),await this.shouldInstallExtension()&&await this.installExtension()}catch(e){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",e)}}};Qo.exports=Nr});var vt=k((Yk,Fd)=>{Fd.exports={name:"makecoder",version:"4.1.17",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:{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 si=k((Xk,ti)=>{var qr=require("crypto"),{URL:Zd}=require("url"),jr=class{static generateSignature(e,s,r,n){try{let o=new Zd(e),i=Buffer.from(o.pathname),a=Buffer.from(i),c=s?typeof s=="string"?Buffer.from(s):Buffer.from(JSON.stringify(s)):Buffer.alloc(0),l=Buffer.concat([a,c,Buffer.from(n)]),u=qr.createHmac("sha256",r);return u.update(l),u.digest("hex")}catch(o){throw new Error(`Failed to generate signature: ${o.message}`)}}static validateSignature(e,s,r,n,o){return this.generateSignature(e,s,r,n)===o}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(e=16){let s="abcdefghijkmnpqrstuvwxyz",r="ABCDEFGHJKLMNPQRSTUVWXYZ",n="23456789",o="!@#$%^&*-_=+",i=s+r+n+o;e<8&&(e=8);let a=l=>l[qr.randomBytes(1)[0]%l.length],c=[a(s),a(r),a(n),a(o)];for(;c.length<e;)c.push(a(i));for(let l=c.length-1;l>0;l--){let u=qr.randomBytes(1)[0]%(l+1);[c[l],c[u]]=[c[u],c[l]]}return c.join("")}};ti.exports=jr});var Rs=k((Qk,oi)=>{var Vd=require("https"),{URL:Wd}=require("url"),ri="https://makecoder.com/bigapis/auth/v1",Kd="https://makecoder.com/bigapis/kbb2/v1",zd="https://makecoder.com/wiki/api",Mr=class{constructor(e){this.token=e}request(e,s,r,n){return new Promise((o,i)=>{let a=n||ri,c=new Wd(`${a}${s}`),l={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},u=null;r!=null&&(u=JSON.stringify(r),l["Content-Length"]=Buffer.byteLength(u));let d=Vd.request({hostname:c.hostname,port:c.port||443,path:c.pathname+c.search,method:e,headers:l},m=>{let h="";m.on("data",g=>h+=g),m.on("end",()=>o({status:m.statusCode,body:h}))});d.on("error",i),u&&d.write(u),d.end()})}};function ni(t){try{return JSON.parse(t)}catch{return null}}function Jd(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Hd(t){let e=ni(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}oi.exports={TeamHttp:Mr,parseJson:ni,exitCodeForStatus:Jd,errorMessage:Hd,API_BASE:ri,BIGKBB_BASE:Kd,WIKI_API_BASE:zd}});var ai=k((ex,ii)=>{var Gr=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Yd(t,e,s={}){let{labels:r={},empty:n="\uFF08\u7A7A\uFF09"}=s;if(!e||!e.length){t.emit(n);return}if(t.isJson){t.emit(e);return}let o=Object.keys(e[0]),a=[`| ${o.map(c=>r[c]||c).map(Gr).join(" | ")} |`,`| ${o.map(()=>"---").join(" | ")} |`,...e.map(c=>`| ${o.map(l=>Gr(c[l])).join(" | ")} |`)];t.emit(a.join(`
25
- `))}function Xd(t,e,s=null){if(t.isJson){let r={};for(let[n,o]of e)r[n]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,o])=>`${o||r}: ${n??""}`).join(`
26
- `))}ii.exports={emitTable:Yd,emitDetails:Xd,escCell:Gr}});var di=k((sx,ui)=>{var{TeamHttp:tx,parseJson:Qd,exitCodeForStatus:ef,errorMessage:tf,BIGKBB_BASE:sf,WIKI_API_BASE:rf}=Rs();function tt(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function ci(t,e){tt(t,tf(e.body),nf(e.status),ef(e.status))}function nf(t){if(t===401)return"\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>";if(t===403)return"\u6743\u9650\u4E0D\u8DB3\uFF0C\u9700\u56E2\u961F owner / manager\uFF1B\u786E\u8BA4\u5F53\u524D\u56E2\u961F: coder team current";if(t===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528 coder team list / members \u67E5\u627E"}function li(t,e){if(e)return e;let s=t.ctx.getTeam?t.ctx.getTeam():null;return s&&s.id?s.id:null}function of(t,e){let s=li(t,e);return s||tt(t.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),s}async function af(t,e){let s=encodeURIComponent(JSON.stringify({id__in:[e]})),r;try{r=await t.http.request("GET",`/team?constraints=${s}`)}catch(i){tt(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${i.message}`,void 0,1)}r.status!==200&&ci(t.ctx,r);let n=Qd(r.body),o=n&&n.data&&n.data.items||[];return o.length||tt(t.ctx,`\u56E2\u961F ${e} \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),o[0]}function cf(t){return Array.isArray(t.members)?t.members:[]}function lf(t,e,s,r){let n=e.find(o=>o.user_id===s||o.id===s||o.username===s);return n||tt(t.ctx,`\u6210\u5458 '${s}' \u4E0D\u5728\u56E2\u961F '${r||""}' \u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458\uFF0Cuser_id / username \u5747\u53EF",4),n}function uf(t,e){return e?t.filter(s=>s.user_type===e):t}function df(t,e){e&&e!=="human"&&e!=="ai"&&tt(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3)}function ff(t,e){let s=t.config&&t.config.metadata&&t.config.metadata.created_by;if(!s)return"";let r=e.find(n=>n.user_id===s);return r?r.nickname?`${r.username}(${r.nickname})`:r.username:s}function pf(t){return t==="mentor"?"admin":"member"}async function mf(t,e,s){try{let r=await t.http.request("POST",`/${e}`,s,rf);(r.status<200||r.status>=300)&&process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${e}): HTTP ${r.status}
23
+ `;return X.writeFileSync(`${l}.conf`,u,{mode:384}),process.env.CODER_DEBUG&&(console.log(`[codex app] cdx-shim \u5DF2\u5B89\u88C5: ${l}`),console.log(`[codex app] exec=${n} entry=${o}`)),l}_injectDesktopEnv(e,s){if(process.platform!=="darwin")return null;let r;try{r=this._installShim({apikey:e,coderBaseUrl:s})}catch(i){return process.env.CODER_DEBUG&&console.log(`[codex app] \u5B89\u88C5 cdx-shim \u5931\u8D25\uFF0C\u8DF3\u8FC7 CODEX_CLI_PATH \u6CE8\u5165\uFF1B\u684C\u9762 App \u5C06\u4F7F\u7528\u81EA\u5E26 codex\uFF08\u4E0D\u8D70\u4EE3\u7406\uFF09: ${i.message}`),null}let n={CODEX_CLI_PATH:r};e&&(n.CODER_APIKEY=e);let o=[];for(let[i,a]of Object.entries(n))try{Rs("launchctl",["setenv",i,a],{stdio:"ignore"}),o.push(i)}catch(c){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl setenv ${i} \u5931\u8D25: ${c.message}`)}return process.env.CODER_DEBUG&&o.length&&console.log(`[codex app] \u5DF2\u6CE8\u5165 launchd \u73AF\u5883\u53D8\u91CF: ${o.join(", ")} (shim: ${r})`),o.length?o:null}_removeDesktopEnv(e){for(let s of e)try{Rs("launchctl",["unsetenv",s],{stdio:"ignore"})}catch(r){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl unsetenv ${s} \u5931\u8D25: ${r.message}`)}}};function jd(t,e){let s=Jo(t),r=Jo(e),n=Math.max(s.length,r.length);for(let o=0;o<n;o++){let i=s[o]||0,a=r[o]||0;if(i<a)return!0;if(i>a)return!1}return!1}function Jo(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function Md(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(i=>i.trim().startsWith("/Volumes/"));if(n)return n.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}Ho.exports=Gr});var qs=k((sx,ti)=>{var Gd=jo(),Bd=Bo(),Fd=Zo(),Zd=Ko(),Vd=Yo();function Xo(){let t=new Gd;if(process.env.CODER_DEBUG)try{console.error(`[DEBUG] ClaudeBunLauncher selected, executable: ${t.findExecutablePath()}`)}catch(e){console.error(`[DEBUG] ClaudeBunLauncher executable not yet resolved: ${e.message}`)}return t}var Ns={claude:{aliases:["claude"],description:"Claude Code \u667A\u80FD\u4F53\uFF08\u9ED8\u8BA4\uFF09",create:Xo,mapArgs:t=>t},"claude-app":{aliases:["claude-app"],description:"\u914D\u7F6E Claude Desktop\uFF08macOS\uFF09\u8D70 coder API\uFF1Asetup|restore|status",create:()=>new Bd,mapArgs:t=>t},codex:{aliases:["codex"],description:"OpenAI Codex \u667A\u80FD\u4F53",create:()=>new Zd,mapArgs:t=>t},"codex-app":{aliases:["codex-app"],description:"\u914D\u7F6E Codex Desktop\uFF08macOS\uFF09\u8D70 coder API",create:()=>new Vd,mapArgs:t=>["app",...t]},gemini:{aliases:["gemini"],description:"Gemini \u667A\u80FD\u4F53",create:()=>new Fd,mapArgs:t=>t}},Qo=Object.keys(Ns),Wd=new Set(["claude","codex","gemini"]);function Kd(t){return Object.prototype.hasOwnProperty.call(Ns,t)}function ei(t){return Ns[t]||null}async function zd(t,e,s){let r=ei(t);return r?await r.create().launch({remainingArgs:r.mapArgs(e),coderBaseUrl:s.getCoderBaseUrl(),apikey:s.getApiKey()}):(s.fail(`unknown agent: ${t}`,`available: ${Qo.join(" | ")}`),1)}ti.exports={AGENTS:Ns,AGENT_NAMES:Qo,SHORTCUTS:Wd,isAgentName:Kd,getAgent:ei,launchAgent:zd,createClaudeLauncher:Xo}});var oi=k((rx,ni)=>{var ls=require("fs"),si=require("path"),{spawn:ri}=require("child_process"),Br=class{constructor(){this.extensionId="codev.codev-background";let e=require.main?si.dirname(require.main.filename):__dirname;this.extensionPath=si.resolve(e,"vendor/claude-code.vsix"),this._codeCommand=null}async resolveCodeCommand(){if(this._codeCommand)return this._codeCommand;if(process.env.IS_AISTUDIO==="True"){let e="/usr/lib/aistudio/lib/vscode/bin/remote-cli/aistudio";if(ls.existsSync(e))try{return ls.accessSync(e,ls.constants.F_OK|ls.constants.X_OK),this._codeCommand=e,process.env.CODER_DEBUG&&console.log(`Using AI Studio VSCode path: ${e}`),this._codeCommand}catch(s){process.env.CODER_DEBUG&&console.log(`AI Studio path exists but not executable: ${s.message}`)}else process.env.CODER_DEBUG&&console.log(`AI Studio path not found: ${e}`)}try{let{spawn:e}=require("child_process");return new Promise(s=>{let r=e("which",["code"],{stdio:["ignore","pipe","ignore"]}),n="";r.stdout.on("data",o=>{n+=o.toString().trim()}),r.on("close",o=>{o===0&&n?(this._codeCommand=n,process.env.CODER_DEBUG&&console.log(`Resolved code command path: ${n}`),s(this._codeCommand)):(this._codeCommand="code",s(this._codeCommand))}),r.on("error",()=>{this._codeCommand="code",s(this._codeCommand)}),setTimeout(()=>{r.kill(),this._codeCommand="code",s(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):!!ls.existsSync(this.extensionPath):(process.env.CODER_DEBUG&&console.log("VSCode not available, skipping extension installation"),!1)}catch(e){return process.env.CODER_DEBUG&&console.error(`Error checking extension installation status: ${e.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(e){return console.warn(`Error installing VSCode extension: ${e.message}`),!1}}async isVSCodeAvailable(){try{let e=process.env.IS_AISTUDIO==="True"?["--help"]:["--version"],s=await this.executeVSCodeCommand(e,{timeout:1e4});if(process.env.CODER_DEBUG&&(console.log(`VSCode availability check (${e.join(" ")}): ${s?"available":"unavailable"}`),process.env.IS_AISTUDIO==="True")){let{spawn:r}=require("child_process");try{r("which",["code"],{stdio:["ignore","pipe","ignore"]}).stdout.on("data",o=>{console.log("which code:",o.toString().trim())})}catch(n){console.log("which command failed:",n.message)}}return s}catch(e){return process.env.CODER_DEBUG&&console.error("VSCode availability check error:",e.message),!1}}async isExtensionInstalled(){let e=await this.resolveCodeCommand();try{return new Promise(s=>{try{let r={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: ${e} --list-extensions`);let n=ri(e,["--list-extensions"],r),o="";n.stdout.on("data",i=>{o+=i.toString()}),n.on("close",i=>{if(i===0){let a=o.split(`
24
+ `).map(c=>c.trim());s(a.includes(this.extensionId))}else s(!1)}),n.on("error",i=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",i.message),console.error("Error code:",i.code),console.error("Error errno:",i.errno),console.error("Error syscall:",i.syscall)),s(!1)}),setTimeout(()=>{try{n.kill()}catch{}s(!1)},1e4)}catch(r){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode list extensions:",r.message),s(!1)}})}catch{return!1}}async executeVSCodeCommand(e,s={}){let r=await this.resolveCodeCommand();return new Promise(n=>{try{let o={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: ${r} ${e.join(" ")}`);let i=ri(r,e,o);i.on("close",c=>{n(c===0)}),i.on("error",c=>{process.env.CODER_DEBUG&&(console.error("VSCode command error:",c.message),console.error("Error code:",c.code),console.error("Error errno:",c.errno),console.error("Error syscall:",c.syscall)),n(!1)});let a=s.timeout||3e4;setTimeout(()=>{try{i.kill()}catch{}n(!1)},a)}catch(o){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",o.message),n(!1)}})}async ensureExtensionInstalled(){try{process.env.CODER_DEBUG&&console.log("VSCode Extension Service: Checking extension status..."),await this.shouldInstallExtension()&&await this.installExtension()}catch(e){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",e)}}};ni.exports=Br});var Lt=k((nx,Jd)=>{Jd.exports={name:"makecoder",version:"4.1.18",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:{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 ai=k((ox,ii)=>{var Fr=require("crypto"),{URL:Hd}=require("url"),Zr=class{static generateSignature(e,s,r,n){try{let o=new Hd(e),i=Buffer.from(o.pathname),a=Buffer.from(i),c=s?typeof s=="string"?Buffer.from(s):Buffer.from(JSON.stringify(s)):Buffer.alloc(0),l=Buffer.concat([a,c,Buffer.from(n)]),u=Fr.createHmac("sha256",r);return u.update(l),u.digest("hex")}catch(o){throw new Error(`Failed to generate signature: ${o.message}`)}}static validateSignature(e,s,r,n,o){return this.generateSignature(e,s,r,n)===o}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(e=16){let s="abcdefghijkmnpqrstuvwxyz",r="ABCDEFGHJKLMNPQRSTUVWXYZ",n="23456789",o="!@#$%^&*-_=+",i=s+r+n+o;e<8&&(e=8);let a=l=>l[Fr.randomBytes(1)[0]%l.length],c=[a(s),a(r),a(n),a(o)];for(;c.length<e;)c.push(a(i));for(let l=c.length-1;l>0;l--){let u=Fr.randomBytes(1)[0]%(l+1);[c[l],c[u]]=[c[u],c[l]]}return c.join("")}};ii.exports=Zr});var js=k((ix,ui)=>{var Yd=require("https"),{URL:Xd}=require("url"),ci="https://makecoder.com/bigapis/auth/v1",Qd="https://makecoder.com/bigapis/kbb2/v1",ep="https://makecoder.com/wiki/api",Vr=class{constructor(e){this.token=e}request(e,s,r,n){return new Promise((o,i)=>{let a=n||ci,c=new Xd(`${a}${s}`),l={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},u=null;r!=null&&(u=JSON.stringify(r),l["Content-Length"]=Buffer.byteLength(u));let d=Yd.request({hostname:c.hostname,port:c.port||443,path:c.pathname+c.search,method:e,headers:l},p=>{let h="";p.on("data",g=>h+=g),p.on("end",()=>o({status:p.statusCode,body:h}))});d.on("error",i),u&&d.write(u),d.end()})}};function li(t){try{return JSON.parse(t)}catch{return null}}function tp(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function sp(t){let e=li(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}ui.exports={TeamHttp:Vr,parseJson:li,exitCodeForStatus:tp,errorMessage:sp,API_BASE:ci,BIGKBB_BASE:Qd,WIKI_API_BASE:ep}});var pi=k((ax,di)=>{var Wr=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function rp(t,e,s={}){let{labels:r={},empty:n="\uFF08\u7A7A\uFF09"}=s;if(!e||!e.length){t.emit(n);return}if(t.isJson){t.emit(e);return}let o=Object.keys(e[0]),a=[`| ${o.map(c=>r[c]||c).map(Wr).join(" | ")} |`,`| ${o.map(()=>"---").join(" | ")} |`,...e.map(c=>`| ${o.map(l=>Wr(c[l])).join(" | ")} |`)];t.emit(a.join(`
25
+ `))}function np(t,e,s=null){if(t.isJson){let r={};for(let[n,o]of e)r[n]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,o])=>`${o||r}: ${n??""}`).join(`
26
+ `))}di.exports={emitTable:rp,emitDetails:np,escCell:Wr}});var gi=k((lx,hi)=>{var{TeamHttp:cx,parseJson:op,exitCodeForStatus:ip,errorMessage:ap,BIGKBB_BASE:cp,WIKI_API_BASE:lp}=js();function ot(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function fi(t,e){ot(t,ap(e.body),up(e.status),ip(e.status))}function up(t){if(t===401)return"\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>";if(t===403)return"\u6743\u9650\u4E0D\u8DB3\uFF0C\u9700\u56E2\u961F owner / manager\uFF1B\u786E\u8BA4\u5F53\u524D\u56E2\u961F: coder team current";if(t===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528 coder team list / members \u67E5\u627E"}function mi(t,e){if(e)return e;let s=t.ctx.getTeam?t.ctx.getTeam():null;return s&&s.id?s.id:null}function dp(t,e){let s=mi(t,e);return s||ot(t.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),s}async function pp(t,e){let s=encodeURIComponent(JSON.stringify({id__in:[e]})),r;try{r=await t.http.request("GET",`/team?constraints=${s}`)}catch(i){ot(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${i.message}`,void 0,1)}r.status!==200&&fi(t.ctx,r);let n=op(r.body),o=n&&n.data&&n.data.items||[];return o.length||ot(t.ctx,`\u56E2\u961F ${e} \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),o[0]}function fp(t){return Array.isArray(t.members)?t.members:[]}function mp(t,e,s,r){let n=e.find(o=>o.user_id===s||o.id===s||o.username===s);return n||ot(t.ctx,`\u6210\u5458 '${s}' \u4E0D\u5728\u56E2\u961F '${r||""}' \u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458\uFF0Cuser_id / username \u5747\u53EF",4),n}function hp(t,e){return e?t.filter(s=>s.user_type===e):t}function gp(t,e){e&&e!=="human"&&e!=="ai"&&ot(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3)}function yp(t,e){let s=t.config&&t.config.metadata&&t.config.metadata.created_by;if(!s)return"";let r=e.find(n=>n.user_id===s);return r?r.nickname?`${r.username}(${r.nickname})`:r.username:s}function _p(t){return t==="mentor"?"admin":"member"}async function wp(t,e,s){try{let r=await t.http.request("POST",`/${e}`,s,lp);(r.status<200||r.status>=300)&&process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${e}): HTTP ${r.status}
27
27
  `)}catch(r){process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${e}): ${r.message}
28
- `)}}ui.exports={abort:tt,abortOnHttp:ci,resolveTeamId:li,requireTeamId:of,fetchTeam:af,teamMembers:cf,findMember:lf,filterMembersByType:uf,validateType:df,resolveMentorUsername:ff,toWikiGroupRole:pf,wikiSync:mf,BIGKBB_BASE:sf}});var Fr=k((rx,yi)=>{var is=require("fs"),st=require("path"),hf=si(),{parseJson:Ne}=Rs(),{emitTable:Ls,emitDetails:de}=ai(),{abort:q,abortOnHttp:ie,requireTeamId:fi,fetchTeam:Ae,teamMembers:$e,findMember:Ot,filterMembersByType:gf,validateType:yf,resolveMentorUsername:pi,toWikiGroupRole:mi,wikiSync:Dt,BIGKBB_BASE:_f}=di(),X=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},hi=(t,...e)=>{for(let s of e){let r=X(t,s);if(r!==void 0)return r}},as=(t,...e)=>t.some(s=>e.includes(s));function Ps(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let o=t[n];if(!e.includes(o)){if(s.includes(o)){n++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function ae(t){return fi(t,X(t.args,"--team"))}async function ce(t,e,s,r,n){try{return await t.http.request(e,s,r,n)}catch(o){q(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${o.message}`,void 0,1)}}var rt={id:"ID",name:"\u540D\u79F0",members:"\u6210\u5458\u6570",points:"\u79EF\u5206",team:"\u56E2\u961F",description:"\u63CF\u8FF0",points_expire_at:"\u79EF\u5206\u6709\u6548\u671F",active:"\u6FC0\u6D3B",username:"\u7528\u6237\u540D",user_id:"\u7528\u6237ID",type:"\u7C7B\u578B",role:"\u89D2\u8272",nickname:"\u6635\u79F0",introduction:"\u7B80\u4ECB",mentor:"\u5BFC\u5E08",status:"\u72B6\u6001",joined_at:"\u52A0\u5165\u65F6\u95F4",im_bindings:"IM\u7ED1\u5B9A",password:"\u5BC6\u7801",quota:"\u914D\u989D",credentials:"\u51ED\u636E",group:"\u5C0F\u7EC4",group_id:"\u5C0F\u7EC4ID",created_at:"\u521B\u5EFA\u65F6\u95F4",members_total:"\u6210\u5458\u6570",endpoint:"endpoint",confirm:"\u786E\u8BA4"};function wf(t,e){return{username:t.username||"",user_id:t.user_id||"",type:t.user_type||"",role:t.role||"",nickname:t.nickname||"",introduction:t.introduction||"",mentor:pi(t,e),points:t.points==null?"\u221E":String(t.points),joined_at:(t.created_at||"").slice(0,10)}}function bf(t){return[...t].sort((e,s)=>{let r=e.user_type==="ai"?0:1,n=s.user_type==="ai"?0:1;return r!==n?r-n:(e.username||"").localeCompare(s.username||"")})}function Br(t,e){if(t.ctx.isJson){let s={pending_confirmation:!0};for(let[r,n]of e)s[r]=n;t.ctx.emit(s)}else t.ctx.emit(e.map(([s,r,n])=>`${n||rt[s]||s}: ${r??""}`).join(`
29
- `));return 10}async function kf(t){let e=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),s=await ce(t,"GET",`/team?constraints=${e}&page=1&size=200`);s.status!==200&&ie(t.ctx,s);let r=Ne(s.body);(!r||!r.data)&&q(t.ctx,"\u54CD\u5E94\u89E3\u6790\u5931\u8D25",void 0,1);let n=r.data.items||[];return Ls(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",members:(o.members_count??o.member_count??"")+"",points:o.points!=null?String(o.points):""})),{labels:rt,empty:"\u4F60\u8FD8\u6CA1\u6709\u52A0\u5165\u4EFB\u4F55\u56E2\u961F"}),0}async function xf(t){let e=t.ctx.getTeam?t.ctx.getTeam():null;return!e||!e.id?(t.ctx.emit("\u672A\u8BBE\u7F6E\u9ED8\u8BA4\u56E2\u961F\uFF0C\u8FD0\u884C coder team use <teamId> \u6765\u8BBE\u7F6E"),0):(de(t.ctx,[["name",e.name||"","\u9ED8\u8BA4\u56E2\u961F"],["id",e.id,"teamId"]]),0)}async function Sf(t){let e=t.arg;e||q(t.ctx,"\u7F3A\u5C11 teamId \u53C2\u6570","\u7528\u6CD5: coder team use <teamId>",3);let s=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),r=await ce(t,"GET",`/team?constraints=${s}&page=1&size=200`);r.status!==200&&ie(t.ctx,r);let n=Ne(r.body),i=(n&&n.data&&n.data.items||[]).find(a=>a.id===e);return i||q(t.ctx,`\u56E2\u961F '${e}' \u4E0D\u5728\u4F60\u5DF2\u52A0\u5165\u7684\u5217\u8868\u4E2D`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),t.ctx.setTeam(i.id,i.name||"")||q(t.ctx,"\u5199\u5165\u914D\u7F6E\u5931\u8D25",void 0,1),t.ctx.setTeamManual(!0),de(t.ctx,[["name",i.name||"","\u5DF2\u5207\u6362\u9ED8\u8BA4\u56E2\u961F"],["id",i.id,"teamId"]]),0}async function If(t){let e=fi(t,t.arg||X(t.args,"--team")),s=await Ae(t,e),r=$e(s),n=r.filter(i=>i.user_type==="ai").length,o=r.filter(i=>i.user_type==="human").length;return de(t.ctx,[["team",`${s.name} (${s.id})`,"\u56E2\u961F"],["description",s.description||"","\u63CF\u8FF0"],["points",s.points??"","\u79EF\u5206"],["points_expire_at",s.points_expire_at||"","\u79EF\u5206\u6709\u6548\u671F"],["active",s.is_active?"yes":"no","\u6FC0\u6D3B"],["members",`${r.length} (ai=${n}, human=${o})`,"\u6210\u5458"]],t.ctx.isJson?{id:s.id,name:s.name,members_total:r.length,members_ai:n,members_human:o}:null),0}async function Cf(t){let e=X(t.args,"--type")||null;yf(t,e);let s=hi(t.args,"-q","--query")||null,r=ae(t),n=await Ae(t,r),o=$e(n),i=gf(o,e);if(s){let c=s.toLowerCase();i=i.filter(l=>[l.username,l.user_id,l.id,l.nickname,l.introduction].map(u=>(u||"").toLowerCase()).some(u=>u.includes(c)))}let a=s?`\u672A\u5339\u914D\u5230 '${s}'`:e?`\u65E0 ${e} \u7C7B\u578B\u6210\u5458`:"\u56E2\u961F\u6682\u65E0\u6210\u5458";return Ls(t.ctx,bf(i).map(c=>wf(c,o)),{labels:rt,empty:a}),0}async function Ef(t){let e=t.arg;e||q(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members info <userId|username>",3);let s=ae(t),r=await Ae(t,s),n=$e(r),o=Ot(t,n,e,r.name);return de(t.ctx,[["username",o.username||""],["user_id",o.user_id||""],["type",o.user_type||""],["role",o.role||""],["nickname",o.nickname||""],["introduction",o.introduction||""],["mentor",pi(o,n)],["status",o.status||""],["points",o.points==null?"\u221E":o.points],["joined_at",o.created_at||""],["im_bindings",o.im_bindings&&o.im_bindings.length?o.im_bindings.map(i=>i.channel).join(","):""]].map(([i,a])=>[i,a,rt[i]]),t.ctx.isJson?o:null),0}function Af(t){let e=st.resolve(t);for((!is.existsSync(e)||!is.statSync(e).isDirectory())&&(e=st.dirname(e));e&&e!==st.dirname(e);){if(is.existsSync(st.join(e,".git")))return!0;e=st.dirname(e)}return!1}async function $f(t){let e=X(t.args,"--type")||"human";e!=="human"&&e!=="ai"&&q(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3);let s=X(t.args,"--password")||null,r=X(t.args,"--phone")||null,n=X(t.args,"--points"),o=X(t.args,"--save-to")||null,i=X(t.args,"--nickname")||null,a=X(t.args,"--mentor")||null,c=t.arg;c||q(t.ctx,"\u7F3A\u5C11 username \u53C2\u6570","\u7528\u6CD5: coder team members create <username> [...]",3);let l=ae(t);if(e==="human"&&!r&&q(t.ctx,"\u521B\u5EFA human \u6210\u5458\u5FC5\u987B\u63D0\u4F9B --phone <phone>",void 0,3),o){let w=st.resolve(o);Af(w)&&q(t.ctx,`--save-to \u8DEF\u5F84\u5728 git \u4ED3\u5E93\u5185\uFF08${w}\uFF09`,"\u6362\u5230\u4ED3\u5E93\u5916\u7684\u8DEF\u5F84\uFF0C\u907F\u514D\u51ED\u636E\u88AB\u8BEF\u63D0\u4EA4",3)}let u=null;if(n!=null){let w=Number(n);Number.isFinite(w)||q(t.ctx,`--points \u5E94\u4E3A\u6570\u5B57\uFF0C\u6536\u5230 '${n}'`,void 0,3),u=w}let d=s||hf.generateStrongPassword(16),m=!s,h={payload:{username:c,password:d,phone:r||null,team_id:l,points:u,user_type:e,...i?{nickname:i}:{},...e==="ai"&&a?{config:{metadata:{created_by:a}}}:{}},auto_login:!1,auth_name:"UserPass"},g=await ce(t,"POST","/users",h);(g.status<200||g.status>=300)&&ie(t.ctx,g);let _=null;if(o){let w=st.resolve(o),S=`# Coder team member credentials
28
+ `)}}hi.exports={abort:ot,abortOnHttp:fi,resolveTeamId:mi,requireTeamId:dp,fetchTeam:pp,teamMembers:fp,findMember:mp,filterMembersByType:hp,validateType:gp,resolveMentorUsername:yp,toWikiGroupRole:_p,wikiSync:wp,BIGKBB_BASE:cp}});var zr=k((ux,xi)=>{var us=require("fs"),it=require("path"),bp=ai(),{parseJson:Me}=js(),{emitTable:Ms,emitDetails:fe}=pi(),{abort:M,abortOnHttp:ce,requireTeamId:yi,fetchTeam:ve,teamMembers:Oe,findMember:Pt,filterMembersByType:kp,validateType:xp,resolveMentorUsername:_i,toWikiGroupRole:wi,wikiSync:Nt,BIGKBB_BASE:Sp}=gi(),ee=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},bi=(t,...e)=>{for(let s of e){let r=ee(t,s);if(r!==void 0)return r}},ds=(t,...e)=>t.some(s=>e.includes(s));function Gs(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let o=t[n];if(!e.includes(o)){if(s.includes(o)){n++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function le(t){return yi(t,ee(t.args,"--team"))}async function ue(t,e,s,r,n){try{return await t.http.request(e,s,r,n)}catch(o){M(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${o.message}`,void 0,1)}}var at={id:"ID",name:"\u540D\u79F0",members:"\u6210\u5458\u6570",points:"\u79EF\u5206",team:"\u56E2\u961F",description:"\u63CF\u8FF0",points_expire_at:"\u79EF\u5206\u6709\u6548\u671F",active:"\u6FC0\u6D3B",username:"\u7528\u6237\u540D",user_id:"\u7528\u6237ID",type:"\u7C7B\u578B",role:"\u89D2\u8272",nickname:"\u6635\u79F0",introduction:"\u7B80\u4ECB",mentor:"\u5BFC\u5E08",status:"\u72B6\u6001",joined_at:"\u52A0\u5165\u65F6\u95F4",im_bindings:"IM\u7ED1\u5B9A",password:"\u5BC6\u7801",quota:"\u914D\u989D",credentials:"\u51ED\u636E",group:"\u5C0F\u7EC4",group_id:"\u5C0F\u7EC4ID",created_at:"\u521B\u5EFA\u65F6\u95F4",members_total:"\u6210\u5458\u6570",endpoint:"endpoint",confirm:"\u786E\u8BA4"};function Ip(t,e){return{username:t.username||"",user_id:t.user_id||"",type:t.user_type||"",role:t.role||"",nickname:t.nickname||"",introduction:t.introduction||"",mentor:_i(t,e),points:t.points==null?"\u221E":String(t.points),joined_at:(t.created_at||"").slice(0,10)}}function Cp(t){return[...t].sort((e,s)=>{let r=e.user_type==="ai"?0:1,n=s.user_type==="ai"?0:1;return r!==n?r-n:(e.username||"").localeCompare(s.username||"")})}function Kr(t,e){if(t.ctx.isJson){let s={pending_confirmation:!0};for(let[r,n]of e)s[r]=n;t.ctx.emit(s)}else t.ctx.emit(e.map(([s,r,n])=>`${n||at[s]||s}: ${r??""}`).join(`
29
+ `));return 10}async function Ep(t){let e=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),s=await ue(t,"GET",`/team?constraints=${e}&page=1&size=200`);s.status!==200&&ce(t.ctx,s);let r=Me(s.body);(!r||!r.data)&&M(t.ctx,"\u54CD\u5E94\u89E3\u6790\u5931\u8D25",void 0,1);let n=r.data.items||[];return Ms(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",members:(o.members_count??o.member_count??"")+"",points:o.points!=null?String(o.points):""})),{labels:at,empty:"\u4F60\u8FD8\u6CA1\u6709\u52A0\u5165\u4EFB\u4F55\u56E2\u961F"}),0}async function Ap(t){let e=t.ctx.getTeam?t.ctx.getTeam():null;return!e||!e.id?(t.ctx.emit("\u672A\u8BBE\u7F6E\u9ED8\u8BA4\u56E2\u961F\uFF0C\u8FD0\u884C coder team use <teamId> \u6765\u8BBE\u7F6E"),0):(fe(t.ctx,[["name",e.name||"","\u9ED8\u8BA4\u56E2\u961F"],["id",e.id,"teamId"]]),0)}async function $p(t){let e=t.arg;e||M(t.ctx,"\u7F3A\u5C11 teamId \u53C2\u6570","\u7528\u6CD5: coder team use <teamId>",3);let s=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),r=await ue(t,"GET",`/team?constraints=${s}&page=1&size=200`);r.status!==200&&ce(t.ctx,r);let n=Me(r.body),i=(n&&n.data&&n.data.items||[]).find(a=>a.id===e);return i||M(t.ctx,`\u56E2\u961F '${e}' \u4E0D\u5728\u4F60\u5DF2\u52A0\u5165\u7684\u5217\u8868\u4E2D`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),t.ctx.setTeam(i.id,i.name||"")||M(t.ctx,"\u5199\u5165\u914D\u7F6E\u5931\u8D25",void 0,1),t.ctx.setTeamManual(!0),fe(t.ctx,[["name",i.name||"","\u5DF2\u5207\u6362\u9ED8\u8BA4\u56E2\u961F"],["id",i.id,"teamId"]]),0}async function Tp(t){let e=yi(t,t.arg||ee(t.args,"--team")),s=await ve(t,e),r=Oe(s),n=r.filter(i=>i.user_type==="ai").length,o=r.filter(i=>i.user_type==="human").length;return fe(t.ctx,[["team",`${s.name} (${s.id})`,"\u56E2\u961F"],["description",s.description||"","\u63CF\u8FF0"],["points",s.points??"","\u79EF\u5206"],["points_expire_at",s.points_expire_at||"","\u79EF\u5206\u6709\u6548\u671F"],["active",s.is_active?"yes":"no","\u6FC0\u6D3B"],["members",`${r.length} (ai=${n}, human=${o})`,"\u6210\u5458"]],t.ctx.isJson?{id:s.id,name:s.name,members_total:r.length,members_ai:n,members_human:o}:null),0}async function Up(t){let e=ee(t.args,"--type")||null;xp(t,e);let s=bi(t.args,"-q","--query")||null,r=le(t),n=await ve(t,r),o=Oe(n),i=kp(o,e);if(s){let c=s.toLowerCase();i=i.filter(l=>[l.username,l.user_id,l.id,l.nickname,l.introduction].map(u=>(u||"").toLowerCase()).some(u=>u.includes(c)))}let a=s?`\u672A\u5339\u914D\u5230 '${s}'`:e?`\u65E0 ${e} \u7C7B\u578B\u6210\u5458`:"\u56E2\u961F\u6682\u65E0\u6210\u5458";return Ms(t.ctx,Cp(i).map(c=>Ip(c,o)),{labels:at,empty:a}),0}async function vp(t){let e=t.arg;e||M(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members info <userId|username>",3);let s=le(t),r=await ve(t,s),n=Oe(r),o=Pt(t,n,e,r.name);return fe(t.ctx,[["username",o.username||""],["user_id",o.user_id||""],["type",o.user_type||""],["role",o.role||""],["nickname",o.nickname||""],["introduction",o.introduction||""],["mentor",_i(o,n)],["status",o.status||""],["points",o.points==null?"\u221E":o.points],["joined_at",o.created_at||""],["im_bindings",o.im_bindings&&o.im_bindings.length?o.im_bindings.map(i=>i.channel).join(","):""]].map(([i,a])=>[i,a,at[i]]),t.ctx.isJson?o:null),0}function Op(t){let e=it.resolve(t);for((!us.existsSync(e)||!us.statSync(e).isDirectory())&&(e=it.dirname(e));e&&e!==it.dirname(e);){if(us.existsSync(it.join(e,".git")))return!0;e=it.dirname(e)}return!1}async function Dp(t){let e=ee(t.args,"--type")||"human";e!=="human"&&e!=="ai"&&M(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3);let s=ee(t.args,"--password")||null,r=ee(t.args,"--phone")||null,n=ee(t.args,"--points"),o=ee(t.args,"--save-to")||null,i=ee(t.args,"--nickname")||null,a=ee(t.args,"--mentor")||null,c=t.arg;c||M(t.ctx,"\u7F3A\u5C11 username \u53C2\u6570","\u7528\u6CD5: coder team members create <username> [...]",3);let l=le(t);if(e==="human"&&!r&&M(t.ctx,"\u521B\u5EFA human \u6210\u5458\u5FC5\u987B\u63D0\u4F9B --phone <phone>",void 0,3),o){let b=it.resolve(o);Op(b)&&M(t.ctx,`--save-to \u8DEF\u5F84\u5728 git \u4ED3\u5E93\u5185\uFF08${b}\uFF09`,"\u6362\u5230\u4ED3\u5E93\u5916\u7684\u8DEF\u5F84\uFF0C\u907F\u514D\u51ED\u636E\u88AB\u8BEF\u63D0\u4EA4",3)}let u=null;if(n!=null){let b=Number(n);Number.isFinite(b)||M(t.ctx,`--points \u5E94\u4E3A\u6570\u5B57\uFF0C\u6536\u5230 '${n}'`,void 0,3),u=b}let d=s||bp.generateStrongPassword(16),p=!s,h={payload:{username:c,password:d,phone:r||null,team_id:l,points:u,user_type:e,...i?{nickname:i}:{},...e==="ai"&&a?{config:{metadata:{created_by:a}}}:{}},auto_login:!1,auth_name:"UserPass"},g=await ue(t,"POST","/users",h);(g.status<200||g.status>=300)&&ce(t.ctx,g);let _=null;if(o){let b=it.resolve(o),x=`# Coder team member credentials
30
30
  # Created: ${new Date().toISOString()}
31
31
  username: ${c}
32
32
  password: ${d}
33
33
  team_id: ${l}
34
34
  type: ${e}
35
- `;try{is.writeFileSync(w,S,{mode:384});try{is.chmodSync(w,384)}catch{}_=w}catch(L){process.stderr.write(`Warning: \u4FDD\u5B58\u51ED\u636E\u5931\u8D25 ${L.message}
36
- `)}}return de(t.ctx,[["username",c,"\u7528\u6237\u540D"],["password",`${d}${m?" (\u968F\u673A\u751F\u6210\uFF0C\u8BF7\u59A5\u5584\u4FDD\u7BA1)":""}`,"\u5BC6\u7801"],["team_id",l,"teamId"],["type",e,"\u7C7B\u578B"],["nickname",i||"","\u6635\u79F0"],["mentor",a||"","\u5BFC\u5E08"],["credentials",_?`\u5DF2\u4FDD\u5B58\u5230 ${_} (mode 0600)\uFF0C\u5EFA\u8BAE\u52A0\u5165 .gitignore`:"\u4EE5\u4E0A\u4EC5\u663E\u793A\u4E00\u6B21\uFF0C\u672A --save-to \u65F6\u8BF7\u7ACB\u5373\u8BB0\u5F55","\u51ED\u636E"]],t.ctx.isJson?{username:c,password:d,team_id:l,user_type:e,saved_to:_}:null),0}async function Tf(t){let e=X(t.args,"--nickname"),s=X(t.args,"--mentor"),r=as(t.args,"--clear-mentor"),n=t.arg;n||q(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members update <userId|username> [--nickname <n>] [--mentor <userId|username>]",3),e===void 0&&s===void 0&&!r&&q(t.ctx,"\u81F3\u5C11\u9700\u8981 --nickname / --mentor / --clear-mentor \u4E4B\u4E00",void 0,3);let o=ae(t),i=await Ae(t,o),a=$e(i),c=Ot(t,a,n,i.name),l={};if(e!==void 0&&(l.nickname=e),r)l.created_by=null;else if(s!==void 0){let m=a.find(h=>h.user_id===s||h.username===s);m||q(t.ctx,`mentor '${s}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),l.created_by=m.user_id}let u=await ce(t,"PATCH",`/team/${o}/ai_users/${c.user_id}`,l);(u.status<200||u.status>=300)&&ie(t.ctx,u);let d=[["username",`${c.username} (${c.user_id})`,"\u5DF2\u66F4\u65B0\u6210\u5458"]];return e!==void 0&&d.push(["nickname",e,"\u6635\u79F0"]),r?d.push(["mentor","(\u5DF2\u6E05\u9664)","\u5BFC\u5E08"]):s!==void 0&&d.push(["mentor",s,"\u5BFC\u5E08"]),de(t.ctx,d,t.ctx.isJson?{user_id:c.user_id,team_id:o}:null),0}async function Uf(t){let e=X(t.args,"--points"),s=t.arg;s||q(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members set-points <userId|username> --points <n|unlimited>",3),e===void 0&&q(t.ctx,"\u7F3A\u5C11 --points <n|unlimited>","\u6570\u5B57=\u914D\u989D\u4E0A\u9650\uFF1Bunlimited=\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09",3);let r;if(e==="unlimited")r=null;else{let d=Number(e);(!Number.isFinite(d)||d<0)&&q(t.ctx,`--points \u5E94\u4E3A\u975E\u8D1F\u6570\u5B57\u6216 unlimited\uFF0C\u6536\u5230 '${e}'`,void 0,3),r=d}let n=ae(t),o=await Ae(t,n),i=Ot(t,$e(o),s,o.name),a=`/refactor/coder/teams/${n}/members/${i.user_id}/points`,c=r===null?"\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09":String(r),l=await ce(t,"POST",a,{points:r},_f);(l.status<200||l.status>=300)&&ie(t.ctx,l);let u=Ne(l.body);return u&&u.code!==void 0&&u.code!==0&&u.code!==null&&q(t.ctx,`\u540E\u7AEF\u8FD4\u56DE code=${u.code} message=${u.message||""}`,void 0,1),de(t.ctx,[["username",`${i.username} (${i.user_id})`,"\u5DF2\u8BBE\u7F6E\u79EF\u5206\u914D\u989D"],["quota",c,"\u914D\u989D"]],t.ctx.isJson?{user_id:i.user_id,team_id:n,points:r}:null),0}async function vf(t){let e=as(t.args,"--yes","-y"),s=t.arg;s||q(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members delete <userId|username> [--yes]",3);let r=ae(t),n=await Ae(t,r),o=Ot(t,$e(n),s,n.name);if(!e)return Br(t,[["username",`${o.username} (user_id=${o.user_id}, role=${o.role})`,"\u5C06\u5220\u9664\u6210\u5458"],["team",`${n.name} (${r})`,"\u4ECE\u56E2\u961F"],["endpoint",`DELETE /team/${r}/members/${o.id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let i=await ce(t,"DELETE",`/team/${r}/members/${o.id}`);return(i.status<200||i.status>=300)&&ie(t.ctx,i),de(t.ctx,[["username",`${o.username} (${o.user_id})`,"\u5DF2\u5220\u9664\u6210\u5458"],["team",n.name,"\u4ECE\u56E2\u961F"]],t.ctx.isJson?{deleted:!0,user_id:o.user_id,team_id:r}:null),0}async function gi(t,e,s){let r=await ce(t,"GET",`/team/${e}/groups/${s}/members`);(r.status<200||r.status>=300)&&ie(t.ctx,r);let n=Ne(r.body);return n&&(n.data||n)||[]}async function Of(t){let e=ae(t),s=await ce(t,"GET",`/team/${e}/groups`);(s.status<200||s.status>=300)&&ie(t.ctx,s);let r=Ne(s.body),n=r&&(r.data||r)||[];return Ls(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",description:o.description||"",created_at:(o.created_at||"").slice(0,10)})),{labels:rt,empty:"\u6682\u65E0\u5C0F\u7EC4"}),0}async function Df(t){let e=t.arg;e||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups info <groupId>",3);let s=ae(t),r=await ce(t,"GET",`/team/${s}/groups`);(r.status<200||r.status>=300)&&ie(t.ctx,r);let o=(Ne(r.body)?.data||[]).find(a=>a.id===e);o||q(t.ctx,`\u5C0F\u7EC4 '${e}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team groups \u67E5\u770B\u5C0F\u7EC4",4);let i=await gi(t,s,e);return de(t.ctx,[["group",`${o.name} (${o.id})`,"\u5C0F\u7EC4"],["description",o.description||"","\u63CF\u8FF0"],["team_id",s,"teamId"],["members_total",i.length,"\u6210\u5458\u6570"]],t.ctx.isJson?{id:o.id,name:o.name,members:i,members_total:i.length}:null),0}async function Rf(t){let e=t.arg;e||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups members <groupId>",3);let s=ae(t),r=await Ae(t,s),n=new Map($e(r).map(i=>[i.user_id,i])),o=await gi(t,s,e);return Ls(t.ctx,o.map(i=>{let a=n.get(i.user_id)||{};return{username:a.username||"",user_id:i.user_id||"",type:a.user_type||"",role:i.role||"",nickname:a.nickname||""}}),{labels:rt,empty:"\u5C0F\u7EC4\u6682\u65E0\u6210\u5458"}),0}async function Lf(t){let e=X(t.args,"--description"),s=t.arg;s||q(t.ctx,"\u7F3A\u5C11 name \u53C2\u6570","\u7528\u6CD5: coder team groups create <name> [--description <d>]",3);let r=ae(t),n={name:s};e&&(n.description=e);let o=await ce(t,"POST",`/team/${r}/groups`,n);(o.status<200||o.status>=300)&&ie(t.ctx,o);let a=((Ne(o.body)||{}).data||Ne(o.body)||{}).id;return a&&await Dt(t,"sync.upsertGroup",{teamId:r,externalGroupId:a,name:s,description:e||void 0}),de(t.ctx,[["group",`${s} (${a})`,"\u5DF2\u521B\u5EFA\u5C0F\u7EC4"]],t.ctx.isJson?{id:a,team_id:r,name:s,description:e||null}:null),0}async function Pf(t){let e=X(t.args,"--name"),s=X(t.args,"--description"),r=t.arg;r||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups update <groupId> [--name <n>] [--description <d>]",3);let n=ae(t);e===void 0&&s===void 0&&q(t.ctx,"\u81F3\u5C11\u9700\u8981 --name \u6216 --description",void 0,3);let o={};e!==void 0&&(o.name=e),s!==void 0&&(o.description=s);let i=await ce(t,"PATCH",`/team/${n}/groups/${r}`,o);(i.status<200||i.status>=300)&&ie(t.ctx,i);let a=Ne(i.body)?.data||{},c=e!==void 0?e:a.name;c&&await Dt(t,"sync.upsertGroup",{teamId:n,externalGroupId:r,name:c,description:s!==void 0?s:a.description||void 0});let l=[["group",r,"\u5DF2\u66F4\u65B0\u5C0F\u7EC4"]];return e!==void 0&&l.push(["name",e,"\u540D\u79F0"]),s!==void 0&&l.push(["description",s,"\u63CF\u8FF0"]),de(t.ctx,l,t.ctx.isJson?{id:r,team_id:n,...o}:null),0}async function Nf(t){let e=as(t.args,"--yes","-y"),s=t.arg;s||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups delete <groupId> [--yes]",3);let r=ae(t);if(!e)return Br(t,[["group",s,"\u5C06\u5220\u9664\u5C0F\u7EC4"],["endpoint",`DELETE /team/${r}/groups/${s}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF08\u5C06\u6E05\u9664\u8BE5\u5C0F\u7EC4\u6240\u6709\u6210\u5458\u5173\u7CFB\uFF09\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let n=await ce(t,"DELETE",`/team/${r}/groups/${s}`);return(n.status<200||n.status>=300)&&ie(t.ctx,n),await Dt(t,"sync.deleteGroup",{teamId:r,externalGroupId:s}),de(t.ctx,[["group",s,"\u5DF2\u5220\u9664\u5C0F\u7EC4"]],t.ctx.isJson?{deleted:!0,id:s,team_id:r}:null),0}function qf(t,e,s){return s.split(",").map(n=>n.trim()).filter(Boolean).map(n=>{let o=e.find(i=>i.user_id===n||i.username===n||i.id===n);return o||q(t.ctx,`\u6210\u5458 '${n}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),o})}async function jf(t){let e=X(t.args,"--role")||"member",s=Ps(t.args,{valueFlags:["--team","--role"]}),r=s[0];r||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups add-member <groupId> <userIds> [--role member|mentor]\uFF08userIds \u9017\u53F7\u5206\u9694\uFF0Cuser_id \u6216 username \u5747\u53EF\uFF09",3);let n=s[1];n||q(t.ctx,"\u7F3A\u5C11 userIds \u53C2\u6570\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u652F\u6301 user_id / username\uFF09",void 0,3);let o=ae(t);e!=="member"&&e!=="mentor"&&q(t.ctx,`--role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${e}'`,void 0,3);let i=await Ae(t,o),a=qf(t,$e(i),n),c=await ce(t,"POST",`/team/${o}/groups/${r}/members`,{user_ids:a.map(l=>l.user_id),role:e});if((c.status<200||c.status>=300)&&ie(t.ctx,c),await Dt(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:r,members:a.map(l=>({externalUserId:l.user_id,username:l.username||l.user_id,role:mi(e)}))}),t.ctx.isJson)t.ctx.emit({team_id:o,group_id:r,added:a.map(l=>({user_id:l.user_id,username:l.username})),role:e});else{let l=[`\u5DF2\u6DFB\u52A0 ${a.length} \u540D\u6210\u5458\u5230\u5C0F\u7EC4 ${r} (role=${e})`];for(let u of a)l.push(` - ${u.username} (${u.user_id})`);t.ctx.emit(l.join(`
37
- `))}return 0}async function Mf(t){let e=Ps(t.args,{valueFlags:["--team","--role"]}),s=e[0];s||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",3);let r=e[1],n=e[2]||X(t.args,"--role");(!r||!n)&&q(t.ctx,"\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",void 0,3),n!=="member"&&n!=="mentor"&&q(t.ctx,`role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${n}'`,void 0,3);let o=ae(t),i=await Ae(t,o),a=Ot(t,$e(i),r,i.name),c=await ce(t,"PATCH",`/team/${o}/groups/${s}/members/${a.user_id}`,{role:n});return(c.status<200||c.status>=300)&&ie(t.ctx,c),await Dt(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:s,members:[{externalUserId:a.user_id,username:a.username||a.user_id,role:mi(n)}]}),de(t.ctx,[["username",`${a.username} (${a.user_id})`,"\u5DF2\u8BBE\u7F6E\u5C0F\u7EC4\u89D2\u8272"],["group",s,"\u5C0F\u7EC4"],["role",n,"\u89D2\u8272"]],t.ctx.isJson?{team_id:o,group_id:s,user_id:a.user_id,role:n}:null),0}async function Gf(t){let e=as(t.args,"--yes","-y"),s=Ps(t.args,{boolFlags:["--yes","-y"],valueFlags:["--team"]}),r=s[0];r||q(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups remove-member <groupId> <userId|username> [--yes]",3);let n=s[1];n||q(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570",void 0,3);let o=ae(t),i=await Ae(t,o),a=Ot(t,$e(i),n,i.name);if(!e)return Br(t,[["username",`${a.username} (${a.user_id})`,"\u5C06\u4ECE\u5C0F\u7EC4\u79FB\u9664"],["group",r,"\u5C0F\u7EC4"],["endpoint",`DELETE /team/${o}/groups/${r}/members/${a.user_id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let c=await ce(t,"DELETE",`/team/${o}/groups/${r}/members/${a.user_id}`);return(c.status<200||c.status>=300)&&ie(t.ctx,c),await Dt(t,"sync.removeGroupMember",{teamId:o,externalGroupId:r,externalUserId:a.user_id}),de(t.ctx,[["username",`${a.username} (${a.user_id})`,"\u5DF2\u4ECE\u5C0F\u7EC4\u79FB\u9664"],["group",r,"\u5C0F\u7EC4"]],t.ctx.isJson?{removed:!0,user_id:a.user_id,group_id:r,team_id:o}:null),0}yi.exports={list:kf,current:xf,use:Sf,info:If,members:{list:Cf,info:Ef,create:$f,update:Tf,"set-points":Uf,delete:vf},groups:{list:Of,info:Df,members:Rf,create:Lf,update:Pf,delete:Nf,"add-member":jf,"set-role":Mf,"remove-member":Gf},_internal:{positionals:Ps,flag:X,flagAny:hi,hasFlag:as,LABELS:rt}}});var Zr=k((nx,_i)=>{function Bf(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}_i.exports={shouldSuppressUpdateNotice:Bf}});var qs=k((ox,Kr)=>{var Vr=require("https"),K=require("fs"),le=require("path"),Ns=require("os"),{shouldSuppressUpdateNotice:Ff}=Zr(),nt="https://makecoder.com/skillhub",Zf=["add","remove","update","check-updates","search","list","my-skills","publish","unpublish"],Wr=class{constructor(e,s){this.argParser=e||null,this.teamService=s||null}_defaultNamespace(){let e=this.argParser?this.argParser.getTeam():null;return e&&e.id?e.id.slice(0,8):null}_resolveNamespace(e){let s=e||this._defaultNamespace()||"global",r=s.startsWith("@")?s.slice(1):s;return r.length>8&&r.includes("-")?r.slice(0,8):r}getSkillDirs(){let e=Ns.homedir();return[le.join(e,".agents","skills")]}_request(e,s,r){return new Promise((n,o)=>{let i=new URL(`${nt}${s}`),a={hostname:i.hostname,port:i.port||443,path:i.pathname+i.search,method:e,headers:r?{Authorization:`Bearer ${r}`}:{}},c=Vr.request(a,l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location)return this._request(e,l.headers.location,r).then(n).catch(o);let u="";l.on("data",d=>u+=d),l.on("end",()=>n({status:l.statusCode,body:u}))});c.on("error",o),c.end()})}fetchWithAuth(e,s){return new Promise((r,n)=>{let o=new URL(e),i={hostname:o.hostname,port:o.port||443,path:o.pathname+o.search,method:"GET",headers:s?{Authorization:`Bearer ${s}`}:{}};Vr.get(i,a=>{if(a.statusCode>=300&&a.statusCode<400&&a.headers.location)return this.fetchWithAuth(a.headers.location,s).then(r).catch(n);let c="";a.on("data",l=>{c+=l}),a.on("end",()=>r({status:a.statusCode,body:c}))}).on("error",n)})}async handle({skillsSubcommand:e,skillsArg:s,skillsRemainingArgs:r,apikey:n}){if(!e||e==="--help"||e==="-h")return this.showHelp(),0;if(e==="publish")return await this.publish(r||[],n);if(e==="unpublish")return await this.unpublish(s,n);if(e==="list")return await this.listTeamSkills(r||[],n);if(e==="my-skills")return await this.listMySkills(r||[],n);if(e==="check-updates"){let o=this.getInstalledSkills();if(o.length===0)return console.log("\u6CA1\u6709\u5DF2\u5B89\u88C5\u7684 skill"),0;console.log(`\u{1F50D} \u68C0\u67E5 ${o.length} \u4E2A skill \u7684\u66F4\u65B0...`);let i=await this.checkUpdates(n);if(i.length===0)console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C");else{console.log(`
35
+ `;try{us.writeFileSync(b,x,{mode:384});try{us.chmodSync(b,384)}catch{}_=b}catch(P){process.stderr.write(`Warning: \u4FDD\u5B58\u51ED\u636E\u5931\u8D25 ${P.message}
36
+ `)}}return fe(t.ctx,[["username",c,"\u7528\u6237\u540D"],["password",`${d}${p?" (\u968F\u673A\u751F\u6210\uFF0C\u8BF7\u59A5\u5584\u4FDD\u7BA1)":""}`,"\u5BC6\u7801"],["team_id",l,"teamId"],["type",e,"\u7C7B\u578B"],["nickname",i||"","\u6635\u79F0"],["mentor",a||"","\u5BFC\u5E08"],["credentials",_?`\u5DF2\u4FDD\u5B58\u5230 ${_} (mode 0600)\uFF0C\u5EFA\u8BAE\u52A0\u5165 .gitignore`:"\u4EE5\u4E0A\u4EC5\u663E\u793A\u4E00\u6B21\uFF0C\u672A --save-to \u65F6\u8BF7\u7ACB\u5373\u8BB0\u5F55","\u51ED\u636E"]],t.ctx.isJson?{username:c,password:d,team_id:l,user_type:e,saved_to:_}:null),0}async function Rp(t){let e=ee(t.args,"--nickname"),s=ee(t.args,"--mentor"),r=ds(t.args,"--clear-mentor"),n=t.arg;n||M(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members update <userId|username> [--nickname <n>] [--mentor <userId|username>]",3),e===void 0&&s===void 0&&!r&&M(t.ctx,"\u81F3\u5C11\u9700\u8981 --nickname / --mentor / --clear-mentor \u4E4B\u4E00",void 0,3);let o=le(t),i=await ve(t,o),a=Oe(i),c=Pt(t,a,n,i.name),l={};if(e!==void 0&&(l.nickname=e),r)l.created_by=null;else if(s!==void 0){let p=a.find(h=>h.user_id===s||h.username===s);p||M(t.ctx,`mentor '${s}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),l.created_by=p.user_id}let u=await ue(t,"PATCH",`/team/${o}/ai_users/${c.user_id}`,l);(u.status<200||u.status>=300)&&ce(t.ctx,u);let d=[["username",`${c.username} (${c.user_id})`,"\u5DF2\u66F4\u65B0\u6210\u5458"]];return e!==void 0&&d.push(["nickname",e,"\u6635\u79F0"]),r?d.push(["mentor","(\u5DF2\u6E05\u9664)","\u5BFC\u5E08"]):s!==void 0&&d.push(["mentor",s,"\u5BFC\u5E08"]),fe(t.ctx,d,t.ctx.isJson?{user_id:c.user_id,team_id:o}:null),0}async function Lp(t){let e=ee(t.args,"--points"),s=t.arg;s||M(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members set-points <userId|username> --points <n|unlimited>",3),e===void 0&&M(t.ctx,"\u7F3A\u5C11 --points <n|unlimited>","\u6570\u5B57=\u914D\u989D\u4E0A\u9650\uFF1Bunlimited=\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09",3);let r;if(e==="unlimited")r=null;else{let d=Number(e);(!Number.isFinite(d)||d<0)&&M(t.ctx,`--points \u5E94\u4E3A\u975E\u8D1F\u6570\u5B57\u6216 unlimited\uFF0C\u6536\u5230 '${e}'`,void 0,3),r=d}let n=le(t),o=await ve(t,n),i=Pt(t,Oe(o),s,o.name),a=`/refactor/coder/teams/${n}/members/${i.user_id}/points`,c=r===null?"\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09":String(r),l=await ue(t,"POST",a,{points:r},Sp);(l.status<200||l.status>=300)&&ce(t.ctx,l);let u=Me(l.body);return u&&u.code!==void 0&&u.code!==0&&u.code!==null&&M(t.ctx,`\u540E\u7AEF\u8FD4\u56DE code=${u.code} message=${u.message||""}`,void 0,1),fe(t.ctx,[["username",`${i.username} (${i.user_id})`,"\u5DF2\u8BBE\u7F6E\u79EF\u5206\u914D\u989D"],["quota",c,"\u914D\u989D"]],t.ctx.isJson?{user_id:i.user_id,team_id:n,points:r}:null),0}async function Pp(t){let e=ds(t.args,"--yes","-y"),s=t.arg;s||M(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members delete <userId|username> [--yes]",3);let r=le(t),n=await ve(t,r),o=Pt(t,Oe(n),s,n.name);if(!e)return Kr(t,[["username",`${o.username} (user_id=${o.user_id}, role=${o.role})`,"\u5C06\u5220\u9664\u6210\u5458"],["team",`${n.name} (${r})`,"\u4ECE\u56E2\u961F"],["endpoint",`DELETE /team/${r}/members/${o.id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let i=await ue(t,"DELETE",`/team/${r}/members/${o.id}`);return(i.status<200||i.status>=300)&&ce(t.ctx,i),fe(t.ctx,[["username",`${o.username} (${o.user_id})`,"\u5DF2\u5220\u9664\u6210\u5458"],["team",n.name,"\u4ECE\u56E2\u961F"]],t.ctx.isJson?{deleted:!0,user_id:o.user_id,team_id:r}:null),0}async function ki(t,e,s){let r=await ue(t,"GET",`/team/${e}/groups/${s}/members`);(r.status<200||r.status>=300)&&ce(t.ctx,r);let n=Me(r.body);return n&&(n.data||n)||[]}async function Np(t){let e=le(t),s=await ue(t,"GET",`/team/${e}/groups`);(s.status<200||s.status>=300)&&ce(t.ctx,s);let r=Me(s.body),n=r&&(r.data||r)||[];return Ms(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",description:o.description||"",created_at:(o.created_at||"").slice(0,10)})),{labels:at,empty:"\u6682\u65E0\u5C0F\u7EC4"}),0}async function qp(t){let e=t.arg;e||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups info <groupId>",3);let s=le(t),r=await ue(t,"GET",`/team/${s}/groups`);(r.status<200||r.status>=300)&&ce(t.ctx,r);let o=(Me(r.body)?.data||[]).find(a=>a.id===e);o||M(t.ctx,`\u5C0F\u7EC4 '${e}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team groups \u67E5\u770B\u5C0F\u7EC4",4);let i=await ki(t,s,e);return fe(t.ctx,[["group",`${o.name} (${o.id})`,"\u5C0F\u7EC4"],["description",o.description||"","\u63CF\u8FF0"],["team_id",s,"teamId"],["members_total",i.length,"\u6210\u5458\u6570"]],t.ctx.isJson?{id:o.id,name:o.name,members:i,members_total:i.length}:null),0}async function jp(t){let e=t.arg;e||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups members <groupId>",3);let s=le(t),r=await ve(t,s),n=new Map(Oe(r).map(i=>[i.user_id,i])),o=await ki(t,s,e);return Ms(t.ctx,o.map(i=>{let a=n.get(i.user_id)||{};return{username:a.username||"",user_id:i.user_id||"",type:a.user_type||"",role:i.role||"",nickname:a.nickname||""}}),{labels:at,empty:"\u5C0F\u7EC4\u6682\u65E0\u6210\u5458"}),0}async function Mp(t){let e=ee(t.args,"--description"),s=t.arg;s||M(t.ctx,"\u7F3A\u5C11 name \u53C2\u6570","\u7528\u6CD5: coder team groups create <name> [--description <d>]",3);let r=le(t),n={name:s};e&&(n.description=e);let o=await ue(t,"POST",`/team/${r}/groups`,n);(o.status<200||o.status>=300)&&ce(t.ctx,o);let a=((Me(o.body)||{}).data||Me(o.body)||{}).id;return a&&await Nt(t,"sync.upsertGroup",{teamId:r,externalGroupId:a,name:s,description:e||void 0}),fe(t.ctx,[["group",`${s} (${a})`,"\u5DF2\u521B\u5EFA\u5C0F\u7EC4"]],t.ctx.isJson?{id:a,team_id:r,name:s,description:e||null}:null),0}async function Gp(t){let e=ee(t.args,"--name"),s=ee(t.args,"--description"),r=t.arg;r||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups update <groupId> [--name <n>] [--description <d>]",3);let n=le(t);e===void 0&&s===void 0&&M(t.ctx,"\u81F3\u5C11\u9700\u8981 --name \u6216 --description",void 0,3);let o={};e!==void 0&&(o.name=e),s!==void 0&&(o.description=s);let i=await ue(t,"PATCH",`/team/${n}/groups/${r}`,o);(i.status<200||i.status>=300)&&ce(t.ctx,i);let a=Me(i.body)?.data||{},c=e!==void 0?e:a.name;c&&await Nt(t,"sync.upsertGroup",{teamId:n,externalGroupId:r,name:c,description:s!==void 0?s:a.description||void 0});let l=[["group",r,"\u5DF2\u66F4\u65B0\u5C0F\u7EC4"]];return e!==void 0&&l.push(["name",e,"\u540D\u79F0"]),s!==void 0&&l.push(["description",s,"\u63CF\u8FF0"]),fe(t.ctx,l,t.ctx.isJson?{id:r,team_id:n,...o}:null),0}async function Bp(t){let e=ds(t.args,"--yes","-y"),s=t.arg;s||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups delete <groupId> [--yes]",3);let r=le(t);if(!e)return Kr(t,[["group",s,"\u5C06\u5220\u9664\u5C0F\u7EC4"],["endpoint",`DELETE /team/${r}/groups/${s}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF08\u5C06\u6E05\u9664\u8BE5\u5C0F\u7EC4\u6240\u6709\u6210\u5458\u5173\u7CFB\uFF09\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let n=await ue(t,"DELETE",`/team/${r}/groups/${s}`);return(n.status<200||n.status>=300)&&ce(t.ctx,n),await Nt(t,"sync.deleteGroup",{teamId:r,externalGroupId:s}),fe(t.ctx,[["group",s,"\u5DF2\u5220\u9664\u5C0F\u7EC4"]],t.ctx.isJson?{deleted:!0,id:s,team_id:r}:null),0}function Fp(t,e,s){return s.split(",").map(n=>n.trim()).filter(Boolean).map(n=>{let o=e.find(i=>i.user_id===n||i.username===n||i.id===n);return o||M(t.ctx,`\u6210\u5458 '${n}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),o})}async function Zp(t){let e=ee(t.args,"--role")||"member",s=Gs(t.args,{valueFlags:["--team","--role"]}),r=s[0];r||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups add-member <groupId> <userIds> [--role member|mentor]\uFF08userIds \u9017\u53F7\u5206\u9694\uFF0Cuser_id \u6216 username \u5747\u53EF\uFF09",3);let n=s[1];n||M(t.ctx,"\u7F3A\u5C11 userIds \u53C2\u6570\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u652F\u6301 user_id / username\uFF09",void 0,3);let o=le(t);e!=="member"&&e!=="mentor"&&M(t.ctx,`--role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${e}'`,void 0,3);let i=await ve(t,o),a=Fp(t,Oe(i),n),c=await ue(t,"POST",`/team/${o}/groups/${r}/members`,{user_ids:a.map(l=>l.user_id),role:e});if((c.status<200||c.status>=300)&&ce(t.ctx,c),await Nt(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:r,members:a.map(l=>({externalUserId:l.user_id,username:l.username||l.user_id,role:wi(e)}))}),t.ctx.isJson)t.ctx.emit({team_id:o,group_id:r,added:a.map(l=>({user_id:l.user_id,username:l.username})),role:e});else{let l=[`\u5DF2\u6DFB\u52A0 ${a.length} \u540D\u6210\u5458\u5230\u5C0F\u7EC4 ${r} (role=${e})`];for(let u of a)l.push(` - ${u.username} (${u.user_id})`);t.ctx.emit(l.join(`
37
+ `))}return 0}async function Vp(t){let e=Gs(t.args,{valueFlags:["--team","--role"]}),s=e[0];s||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",3);let r=e[1],n=e[2]||ee(t.args,"--role");(!r||!n)&&M(t.ctx,"\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",void 0,3),n!=="member"&&n!=="mentor"&&M(t.ctx,`role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${n}'`,void 0,3);let o=le(t),i=await ve(t,o),a=Pt(t,Oe(i),r,i.name),c=await ue(t,"PATCH",`/team/${o}/groups/${s}/members/${a.user_id}`,{role:n});return(c.status<200||c.status>=300)&&ce(t.ctx,c),await Nt(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:s,members:[{externalUserId:a.user_id,username:a.username||a.user_id,role:wi(n)}]}),fe(t.ctx,[["username",`${a.username} (${a.user_id})`,"\u5DF2\u8BBE\u7F6E\u5C0F\u7EC4\u89D2\u8272"],["group",s,"\u5C0F\u7EC4"],["role",n,"\u89D2\u8272"]],t.ctx.isJson?{team_id:o,group_id:s,user_id:a.user_id,role:n}:null),0}async function Wp(t){let e=ds(t.args,"--yes","-y"),s=Gs(t.args,{boolFlags:["--yes","-y"],valueFlags:["--team"]}),r=s[0];r||M(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups remove-member <groupId> <userId|username> [--yes]",3);let n=s[1];n||M(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570",void 0,3);let o=le(t),i=await ve(t,o),a=Pt(t,Oe(i),n,i.name);if(!e)return Kr(t,[["username",`${a.username} (${a.user_id})`,"\u5C06\u4ECE\u5C0F\u7EC4\u79FB\u9664"],["group",r,"\u5C0F\u7EC4"],["endpoint",`DELETE /team/${o}/groups/${r}/members/${a.user_id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let c=await ue(t,"DELETE",`/team/${o}/groups/${r}/members/${a.user_id}`);return(c.status<200||c.status>=300)&&ce(t.ctx,c),await Nt(t,"sync.removeGroupMember",{teamId:o,externalGroupId:r,externalUserId:a.user_id}),fe(t.ctx,[["username",`${a.username} (${a.user_id})`,"\u5DF2\u4ECE\u5C0F\u7EC4\u79FB\u9664"],["group",r,"\u5C0F\u7EC4"]],t.ctx.isJson?{removed:!0,user_id:a.user_id,group_id:r,team_id:o}:null),0}xi.exports={list:Ep,current:Ap,use:$p,info:Tp,members:{list:Up,info:vp,create:Dp,update:Rp,"set-points":Lp,delete:Pp},groups:{list:Np,info:qp,members:jp,create:Mp,update:Gp,delete:Bp,"add-member":Zp,"set-role":Vp,"remove-member":Wp},_internal:{positionals:Gs,flag:ee,flagAny:bi,hasFlag:ds,LABELS:at}}});var Jr=k((dx,Si)=>{function Kp(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}Si.exports={shouldSuppressUpdateNotice:Kp}});var Fs=k((px,Xr)=>{var Hr=require("https"),H=require("fs"),de=require("path"),Bs=require("os"),{shouldSuppressUpdateNotice:zp}=Jr(),ct="https://makecoder.com/skillhub",Jp=["add","remove","update","check-updates","search","list","my-skills","publish","unpublish"],Yr=class{constructor(e,s){this.argParser=e||null,this.teamService=s||null}_defaultNamespace(){let e=this.argParser?this.argParser.getTeam():null;return e&&e.id?e.id.slice(0,8):null}_resolveNamespace(e){let s=e||this._defaultNamespace()||"global",r=s.startsWith("@")?s.slice(1):s;return r.length>8&&r.includes("-")?r.slice(0,8):r}getSkillDirs(){let e=Bs.homedir();return[de.join(e,".agents","skills")]}_request(e,s,r){return new Promise((n,o)=>{let i=new URL(`${ct}${s}`),a={hostname:i.hostname,port:i.port||443,path:i.pathname+i.search,method:e,headers:r?{Authorization:`Bearer ${r}`}:{}},c=Hr.request(a,l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location)return this._request(e,l.headers.location,r).then(n).catch(o);let u="";l.on("data",d=>u+=d),l.on("end",()=>n({status:l.statusCode,body:u}))});c.on("error",o),c.end()})}fetchWithAuth(e,s){return new Promise((r,n)=>{let o=new URL(e),i={hostname:o.hostname,port:o.port||443,path:o.pathname+o.search,method:"GET",headers:s?{Authorization:`Bearer ${s}`}:{}};Hr.get(i,a=>{if(a.statusCode>=300&&a.statusCode<400&&a.headers.location)return this.fetchWithAuth(a.headers.location,s).then(r).catch(n);let c="";a.on("data",l=>{c+=l}),a.on("end",()=>r({status:a.statusCode,body:c}))}).on("error",n)})}async handle({skillsSubcommand:e,skillsArg:s,skillsRemainingArgs:r,apikey:n}){if(!e||e==="--help"||e==="-h")return this.showHelp(),0;if(e==="publish")return await this.publish(r||[],n);if(e==="unpublish")return await this.unpublish(s,n);if(e==="list")return await this.listTeamSkills(r||[],n);if(e==="my-skills")return await this.listMySkills(r||[],n);if(e==="check-updates"){let o=this.getInstalledSkills();if(o.length===0)return console.log("\u6CA1\u6709\u5DF2\u5B89\u88C5\u7684 skill"),0;console.log(`\u{1F50D} \u68C0\u67E5 ${o.length} \u4E2A skill \u7684\u66F4\u65B0...`);let i=await this.checkUpdates(n);if(i.length===0)console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C");else{console.log(`
38
38
  \u53D1\u73B0 ${i.length} \u4E2A\u53EF\u66F4\u65B0\u7684 skill:
39
39
  `);for(let a of i)console.log(` ${a.name.padEnd(24)} ${a.localVersion} \u2192 ${a.remoteVersion}`);console.log("\n\u8FD0\u884C `coder skills update` \u66F4\u65B0\u5168\u90E8")}return 0}if(s&&e!=="search"&&!/^[@a-zA-Z0-9_\-/.]+$/.test(s))return console.error("\u274C skill \u540D\u79F0\u5305\u542B\u975E\u6CD5\u5B57\u7B26"),1;if(e==="search")return s?await this.search(s):(console.error("\u274C \u8BF7\u6307\u5B9A\u641C\u7D22\u5173\u952E\u8BCD"),1);if(e==="remove")return s?this.remove(s):(console.error("\u274C \u8BF7\u6307\u5B9A skill \u540D\u79F0"),1);if(e==="add")return s?n?await this.install(s,n):(console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1):(console.error("\u274C \u8BF7\u6307\u5B9A skill \u540D\u79F0"),1);if(e==="update"){if(!n)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;if(s)return await this.install(s,n);console.log("\u{1F50D} \u68C0\u67E5\u53EF\u66F4\u65B0\u7684 skill...");let o=await this.checkUpdates(n);if(o.length===0)return console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C"),0;console.log(`\u{1F4E6} \u53D1\u73B0 ${o.length} \u4E2A\u53EF\u66F4\u65B0\u7684 skill\uFF0C\u5F00\u59CB\u66F4\u65B0...
40
40
  `);let i=0,a=0,c=!1;for(let l of o){let u=await this.install(l.name,n);u==="EACCES"?(c=!0,a++):u!==0?a++:i++}console.log(`
41
- \u66F4\u65B0\u5B8C\u6210: ${i} \u6210\u529F, ${a} \u5931\u8D25`);try{let l=le.join(Ns.homedir(),".agents","skills",".update-cache.json");K.existsSync(l)&&K.unlinkSync(l)}catch{}if(c){let l=this.getSkillDirs()[0];console.error(`
41
+ \u66F4\u65B0\u5B8C\u6210: ${i} \u6210\u529F, ${a} \u5931\u8D25`);try{let l=de.join(Bs.homedir(),".agents","skills",".update-cache.json");H.existsSync(l)&&H.unlinkSync(l)}catch{}if(c){let l=this.getSkillDirs()[0];console.error(`
42
42
  \u26A0\uFE0F \u90E8\u5206 skill \u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u5148\u8FD0\u884C:
43
- sudo chown -R $(whoami) "${l}"`)}return a>0?1:0}return console.error(`\u274C \u672A\u77E5\u5B50\u547D\u4EE4: ${e}`),1}async install(e,s){let r=nt.replace(/\/$/,"");console.log(`\u{1F50D} \u6B63\u5728\u4ECE ${nt} \u67E5\u627E skill...`);let n;try{let d=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(e)}`,s);if(d.status===404)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;if(d.status!==200)return console.error(`\u274C \u65E0\u6CD5\u83B7\u53D6 skill \u4FE1\u606F (HTTP ${d.status})`),1;n=JSON.parse(d.body)}catch(d){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${d.message}`),1}let o=(n.skills||[])[0];if(!o)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;let i=Array.from(new Set(["SKILL.md",...o.files||[]])),a=`${r}/.well-known/agent-skills/${o.name}`,c={};for(let d of i)try{let m=await this.fetchWithAuth(`${a}/${d}`,s);if(m.status!==200){console.warn(`\u26A0\uFE0F \u8DF3\u8FC7 ${d} (HTTP ${m.status})`);continue}c[d]=m.body}catch(m){console.warn(`\u26A0\uFE0F \u4E0B\u8F7D ${d} \u5931\u8D25: ${m.message}`)}console.log(`\u{1F4E6} \u6B63\u5728\u5B89\u88C5 ${o.name}...`);let l={name:o.name,version:o.version||null,installedAt:new Date().toISOString()};for(let d of this.getSkillDirs()){let m=le.join(d,o.name);K.mkdirSync(m,{recursive:!0});try{for(let[h,g]of Object.entries(c)){let _=le.join(m,h);K.mkdirSync(le.dirname(_),{recursive:!0}),K.writeFileSync(_,g,"utf8")}K.writeFileSync(le.join(m,".skill-meta.json"),JSON.stringify(l,null,2),"utf8")}catch(h){if(h.code==="EACCES")return"EACCES";throw h}}let u=o.version?` (v${o.version})`:"";return console.log(`\u2705 ${o.name}${u} \u5B89\u88C5\u5B8C\u6210`),this.cleanLegacySkill(o.name),0}cleanLegacySkill(e){let s=Ns.homedir(),r=[".claude",".codex",".gemini"].map(n=>le.join(s,n,"skills",e));for(let n of r)if(K.existsSync(n))try{K.rmSync(n,{recursive:!0,force:!0})}catch{}}getInstalledSkills(){let e=[];for(let s of this.getSkillDirs())if(K.existsSync(s))for(let r of K.readdirSync(s,{withFileTypes:!0})){if(!r.isDirectory()||r.name.startsWith("."))continue;let n=le.join(s,r.name),o=le.join(n,".skill-meta.json"),i=null;if(K.existsSync(o))try{i=JSON.parse(K.readFileSync(o,"utf8"))}catch{}e.push({name:r.name,dir:n,meta:i})}return e}async checkUpdates(e){let s=this.getInstalledSkills();if(s.length===0)return[];let r=nt.replace(/\/$/,""),n=[];for(let o of s){let i=o.meta?.version||"0.0.1";try{let a=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(o.name)}`,e);if(a.status===404||a.status!==200)continue;let l=(JSON.parse(a.body).skills||[])[0];if(!l?.version)continue;l.version!==i&&n.push({name:o.name,localVersion:i,remoteVersion:l.version})}catch{}}return n}notifyAndRefreshUpdates(e){let s=le.join(Ns.homedir(),".agents","skills",".update-cache.json");if(!Ff())try{if(K.existsSync(s)){let i=JSON.parse(K.readFileSync(s,"utf8"));if(Array.isArray(i.updates)&&i.updates.length>0){let c=i.updates.length,l;if(c<=3)l=i.updates.map(u=>`${u.name} (${u.localVersion} \u2192 ${u.remoteVersion})`).join(", ");else{let u=i.updates[0];l=`${u.name} (${u.localVersion} \u2192 ${u.remoteVersion}) \u7B49 ${c} \u4E2A skill \u8981\u66F4\u65B0`}console.error(`\x1B[33m\u26A1 ${l}\uFF0C\u8FD0\u884C \`coder skills update\` \u5347\u7EA7\x1B[0m`),c>3&&console.error("\x1B[33m \u8FD0\u884C `coder skills check-updates` \u67E5\u770B\u5B8C\u6574\u5217\u8868\x1B[0m"),console.error()}}}catch{}let r=3600*1e3,n=0;try{n=JSON.parse(K.readFileSync(s,"utf8")).checkedAt||0}catch{}!this.getInstalledSkills().some(i=>!i.meta?.version)&&Date.now()-n<r||setImmediate(async()=>{try{let i=await this.checkUpdates(e);K.mkdirSync(le.dirname(s),{recursive:!0}),K.writeFileSync(s,JSON.stringify({checkedAt:Date.now(),updates:i},null,2),"utf8")}catch{}})}remove(e){let s=!1;for(let r of this.getSkillDirs()){let n=le.join(r,e);K.existsSync(n)&&(K.rmSync(n,{recursive:!0,force:!0}),console.log(` \u{1F5D1}\uFE0F ${n}`),s=!0)}return s?(console.log(`\u2705 ${e} \u5DF2\u5220\u9664`),0):(console.error(`\u274C \u672A\u627E\u5230\u5DF2\u5B89\u88C5\u7684 skill: ${e}`),1)}async search(e){let s=`${nt}/api/web/skills?q=${encodeURIComponent(e)}&sort=relevance&page=0&size=12`;return new Promise(r=>{Vr.get(s,n=>{let o="";n.on("data",i=>{o+=i}),n.on("end",()=>{try{let i=JSON.parse(o);if(i.code!==0)return console.error(`\u274C \u67E5\u8BE2\u5931\u8D25: ${i.msg}`),r(1);let a=i.data.items;if(a.length===0)return console.log(`\u6CA1\u6709\u627E\u5230\u4E0E "${e}" \u76F8\u5173\u7684 skill`),r(0);console.log(`\u627E\u5230 ${i.data.total} \u4E2A\u7ED3\u679C:
44
- `);for(let c of a)console.log(` ${c.slug.padEnd(20)} ${c.summary}`);r(0)}catch(i){console.error(`\u274C \u89E3\u6790\u54CD\u5E94\u5931\u8D25: ${i.message}`),r(1)}})}).on("error",n=>{console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${n.message}`),r(1)})})}async publish(e,s){let{execSync:r}=require("child_process"),n=require("os"),o=null,i="PUBLIC",a=null,c=null,l=null,u=null;for(let w=0;w<e.length;w++)if(e[w]==="--team"||e[w]==="-t"||e[w]==="--namespace"||e[w]==="-n")o=e[++w];else if(e[w]==="--visibility"||e[w]==="-v")i=e[++w];else if(e[w]==="--meta-data"){let S=e[++w];try{JSON.parse(S)}catch(L){return console.error(`\u274C --meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON\uFF1A${L.message}`),1}a=S}else if(!e[w].startsWith("-")){let S=e[w];K.existsSync(S)&&K.statSync(S).isDirectory()?u=S:c=S}let d=this._resolveNamespace(o),m=d==="global";if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;m||(i="NAMESPACE_ONLY");let h=["PUBLIC","NAMESPACE_ONLY","PRIVATE"];if(!h.includes(i))return console.error(`\u274C visibility \u5FC5\u987B\u662F: ${h.join(", ")}`),1;if(c){if(!K.existsSync(c))return console.error(`\u274C \u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`),1}else{let w=u?le.resolve(u):process.cwd();l=le.join(n.tmpdir(),`skill-pub-${Date.now()}.zip`),console.log(`\u{1F4E6} \u6B63\u5728\u6253\u5305 ${w}...`);try{K.existsSync(le.join(w,".git"))?(r(`git archive -o "${l}" HEAD`,{cwd:w,stdio:"pipe"}),console.log(" \u4F7F\u7528 git archive\uFF08\u5DF2\u6392\u9664 .gitignore \u6587\u4EF6\uFF09")):r(`zip -r "${l}" . -x ".git/*" -x "node_modules/*" -x ".env" -x "*.log"`,{cwd:w,stdio:"pipe"})}catch(S){return console.error(`\u274C \u6253\u5305\u5931\u8D25: ${S.message}`),1}c=l}let g=`${nt}/api/v1/skills/${encodeURIComponent(d)}/publish?visibility=${encodeURIComponent(i)}`,_=s;console.log(`\u{1F680} \u6B63\u5728\u53D1\u5E03\u5230 ${nt}`),console.log(` team: ${d}`),console.log(` visibility: ${i}`);try{let w=a?` -F "meta_data=${a.replace(/"/g,'\\"')}"`:"",S=`curl -s -X POST "${g}" -H "Authorization: Bearer ${_}" -F "file=@${c}"${w}`,L=r(S,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),z=JSON.parse(L);if(z.code===0){let P=z.data,G=P.namespace==="global"?`https://makecoder.com/skillhub/${P.slug}`:`https://makecoder.com/skillhub/space/${P.namespace}/${P.slug}`;return console.log(`
45
- \u2705 \u53D1\u5E03\u6210\u529F!`),console.log(` ${P.namespace}--${P.slug}@${P.version}`),console.log(` ${G}`),P.status==="PUBLISHED"?console.log(" \u72B6\u6001: \u5DF2\u53D1\u5E03"):console.log(" \u72B6\u6001: \u5F85\u5BA1\u6838"),0}else return console.error(`
46
- \u274C \u53D1\u5E03\u5931\u8D25: ${z.msg||JSON.stringify(z)}`),1}catch(w){let S=w.stdout;if(S)try{let L=JSON.parse(S);return console.error(`
47
- \u274C \u53D1\u5E03\u5931\u8D25: ${L.msg||S}`),1}catch{}return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${w.message}`),1}finally{l&&K.existsSync(l)&&K.unlinkSync(l)}}async unpublish(e,s){if(!e)return console.error("\u274C \u8BF7\u6307\u5B9A skill: coder skills unpublish <slug> \u6216 coder skills unpublish <teamId>--<slug>"),1;if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;let r,n;if(e.includes("--")){let i=e.split("--");if(i.length!==2||!i[0]||!i[1])return console.error("\u274C \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <slug> \u6216 <teamId>--<slug>\uFF0C\u4F8B\u5982: my-skill \u6216 12680de5--my-skill"),1;r=this._resolveNamespace(i[0]),n=i[1]}else r=this._resolveNamespace(null),n=e;let o=`/api/v1/skills/${encodeURIComponent(r)}/${encodeURIComponent(n)}`;console.log(`\u{1F5D1}\uFE0F \u6B63\u5728\u4E0B\u67B6 ${r}--${n}`);try{let i=await this._request("DELETE",o,s),a=JSON.parse(i.body);return a.code===0?(console.log(`\u2705 \u5DF2\u4E0B\u67B6 ${r}--${n}`),0):(console.error(`\u274C \u4E0B\u67B6\u5931\u8D25: ${a.msg||JSON.stringify(a)}`),1)}catch(i){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${i.message}`),1}}async listTeamSkills(e,s){let r=0,n=20,o=null;for(let u=0;u<e.length;u++)(e[u]==="--page"||e[u]==="-p")&&e[u+1]?r=parseInt(e[++u],10):(e[u]==="--size"||e[u]==="-s")&&e[u+1]?n=parseInt(e[++u],10):(e[u]==="--team"||e[u]==="-t")&&e[u+1]&&(o=e[++u]);let i=this._resolveNamespace(o),a=i==="global",c=a?"":`&namespace=${encodeURIComponent(i)}`,l=`/api/web/skills?sort=newest&page=${r}&size=${n}${c}`;try{let u=await this._request("GET",l,s),d=JSON.parse(u.body);if(d.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${d.msg}`),1;let m=d.data?.items||[],h=d.data?.total||0,g=a?"\u516C\u5171":`\u56E2\u961F ${i}`;if(m.length===0)return console.log(`${g} \u4E0B\u6682\u65E0 skill`),0;console.log(`${g} \u5171 ${h} \u4E2A skill\uFF08\u7B2C ${r+1} \u9875\uFF09:
48
- `);for(let _ of m){let w=`${_.slug}`.padEnd(28),S=`\u2B50 ${_.starCount??0}`.padEnd(8),L=`\u2193 ${_.downloadCount??0}`.padEnd(10);console.log(` ${w} ${S} ${L} ${_.summary||""}`)}return(r+1)*n<h&&console.log(`
43
+ sudo chown -R $(whoami) "${l}"`)}return a>0?1:0}return console.error(`\u274C \u672A\u77E5\u5B50\u547D\u4EE4: ${e}`),1}async install(e,s){let r=ct.replace(/\/$/,"");console.log(`\u{1F50D} \u6B63\u5728\u4ECE ${ct} \u67E5\u627E skill...`);let n;try{let d=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(e)}`,s);if(d.status===404)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;if(d.status!==200)return console.error(`\u274C \u65E0\u6CD5\u83B7\u53D6 skill \u4FE1\u606F (HTTP ${d.status})`),1;n=JSON.parse(d.body)}catch(d){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${d.message}`),1}let o=(n.skills||[])[0];if(!o)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;let i=Array.from(new Set(["SKILL.md",...o.files||[]])),a=`${r}/.well-known/agent-skills/${o.name}`,c={};for(let d of i)try{let p=await this.fetchWithAuth(`${a}/${d}`,s);if(p.status!==200){console.warn(`\u26A0\uFE0F \u8DF3\u8FC7 ${d} (HTTP ${p.status})`);continue}c[d]=p.body}catch(p){console.warn(`\u26A0\uFE0F \u4E0B\u8F7D ${d} \u5931\u8D25: ${p.message}`)}console.log(`\u{1F4E6} \u6B63\u5728\u5B89\u88C5 ${o.name}...`);let l={name:o.name,version:o.version||null,installedAt:new Date().toISOString()};for(let d of this.getSkillDirs()){let p=de.join(d,o.name);H.mkdirSync(p,{recursive:!0});try{for(let[h,g]of Object.entries(c)){let _=de.join(p,h);H.mkdirSync(de.dirname(_),{recursive:!0}),H.writeFileSync(_,g,"utf8")}H.writeFileSync(de.join(p,".skill-meta.json"),JSON.stringify(l,null,2),"utf8")}catch(h){if(h.code==="EACCES")return"EACCES";throw h}}let u=o.version?` (v${o.version})`:"";return console.log(`\u2705 ${o.name}${u} \u5B89\u88C5\u5B8C\u6210`),this.cleanLegacySkill(o.name),0}cleanLegacySkill(e){let s=Bs.homedir(),r=[".claude",".codex",".gemini"].map(n=>de.join(s,n,"skills",e));for(let n of r)if(H.existsSync(n))try{H.rmSync(n,{recursive:!0,force:!0})}catch{}}getInstalledSkills(){let e=[];for(let s of this.getSkillDirs())if(H.existsSync(s))for(let r of H.readdirSync(s,{withFileTypes:!0})){if(!r.isDirectory()||r.name.startsWith("."))continue;let n=de.join(s,r.name),o=de.join(n,".skill-meta.json"),i=null;if(H.existsSync(o))try{i=JSON.parse(H.readFileSync(o,"utf8"))}catch{}e.push({name:r.name,dir:n,meta:i})}return e}async checkUpdates(e){let s=this.getInstalledSkills();if(s.length===0)return[];let r=ct.replace(/\/$/,""),n=[];for(let o of s){let i=o.meta?.version||"0.0.1";try{let a=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(o.name)}`,e);if(a.status===404||a.status!==200)continue;let l=(JSON.parse(a.body).skills||[])[0];if(!l?.version)continue;l.version!==i&&n.push({name:o.name,localVersion:i,remoteVersion:l.version})}catch{}}return n}notifyAndRefreshUpdates(e){let s=de.join(Bs.homedir(),".agents","skills",".update-cache.json");if(!zp())try{if(H.existsSync(s)){let i=JSON.parse(H.readFileSync(s,"utf8"));if(Array.isArray(i.updates)&&i.updates.length>0){let c=i.updates.length,l;if(c<=3)l=i.updates.map(u=>`${u.name} (${u.localVersion} \u2192 ${u.remoteVersion})`).join(", ");else{let u=i.updates[0];l=`${u.name} (${u.localVersion} \u2192 ${u.remoteVersion}) \u7B49 ${c} \u4E2A skill \u8981\u66F4\u65B0`}console.error(`\x1B[33m\u26A1 ${l}\uFF0C\u8FD0\u884C \`coder skills update\` \u5347\u7EA7\x1B[0m`),c>3&&console.error("\x1B[33m \u8FD0\u884C `coder skills check-updates` \u67E5\u770B\u5B8C\u6574\u5217\u8868\x1B[0m"),console.error()}}}catch{}let r=3600*1e3,n=0;try{n=JSON.parse(H.readFileSync(s,"utf8")).checkedAt||0}catch{}!this.getInstalledSkills().some(i=>!i.meta?.version)&&Date.now()-n<r||setImmediate(async()=>{try{let i=await this.checkUpdates(e);H.mkdirSync(de.dirname(s),{recursive:!0}),H.writeFileSync(s,JSON.stringify({checkedAt:Date.now(),updates:i},null,2),"utf8")}catch{}})}remove(e){let s=!1;for(let r of this.getSkillDirs()){let n=de.join(r,e);H.existsSync(n)&&(H.rmSync(n,{recursive:!0,force:!0}),console.log(` \u{1F5D1}\uFE0F ${n}`),s=!0)}return s?(console.log(`\u2705 ${e} \u5DF2\u5220\u9664`),0):(console.error(`\u274C \u672A\u627E\u5230\u5DF2\u5B89\u88C5\u7684 skill: ${e}`),1)}async search(e){let s=`${ct}/api/web/skills?q=${encodeURIComponent(e)}&sort=relevance&page=0&size=12`;return new Promise(r=>{Hr.get(s,n=>{let o="";n.on("data",i=>{o+=i}),n.on("end",()=>{try{let i=JSON.parse(o);if(i.code!==0)return console.error(`\u274C \u67E5\u8BE2\u5931\u8D25: ${i.msg}`),r(1);let a=i.data.items;if(a.length===0)return console.log(`\u6CA1\u6709\u627E\u5230\u4E0E "${e}" \u76F8\u5173\u7684 skill`),r(0);console.log(`\u627E\u5230 ${i.data.total} \u4E2A\u7ED3\u679C:
44
+ `);for(let c of a)console.log(` ${c.slug.padEnd(20)} ${c.summary}`);r(0)}catch(i){console.error(`\u274C \u89E3\u6790\u54CD\u5E94\u5931\u8D25: ${i.message}`),r(1)}})}).on("error",n=>{console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${n.message}`),r(1)})})}async publish(e,s){let{execSync:r}=require("child_process"),n=require("os"),o=null,i="PUBLIC",a=null,c=null,l=null,u=null;for(let b=0;b<e.length;b++)if(e[b]==="--team"||e[b]==="-t"||e[b]==="--namespace"||e[b]==="-n")o=e[++b];else if(e[b]==="--visibility"||e[b]==="-v")i=e[++b];else if(e[b]==="--meta-data"){let x=e[++b];try{JSON.parse(x)}catch(P){return console.error(`\u274C --meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON\uFF1A${P.message}`),1}a=x}else if(!e[b].startsWith("-")){let x=e[b];H.existsSync(x)&&H.statSync(x).isDirectory()?u=x:c=x}let d=this._resolveNamespace(o),p=d==="global";if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;p||(i="NAMESPACE_ONLY");let h=["PUBLIC","NAMESPACE_ONLY","PRIVATE"];if(!h.includes(i))return console.error(`\u274C visibility \u5FC5\u987B\u662F: ${h.join(", ")}`),1;if(c){if(!H.existsSync(c))return console.error(`\u274C \u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`),1}else{let b=u?de.resolve(u):process.cwd();l=de.join(n.tmpdir(),`skill-pub-${Date.now()}.zip`),console.log(`\u{1F4E6} \u6B63\u5728\u6253\u5305 ${b}...`);try{H.existsSync(de.join(b,".git"))?(r(`git archive -o "${l}" HEAD`,{cwd:b,stdio:"pipe"}),console.log(" \u4F7F\u7528 git archive\uFF08\u5DF2\u6392\u9664 .gitignore \u6587\u4EF6\uFF09")):r(`zip -r "${l}" . -x ".git/*" -x "node_modules/*" -x ".env" -x "*.log"`,{cwd:b,stdio:"pipe"})}catch(x){return console.error(`\u274C \u6253\u5305\u5931\u8D25: ${x.message}`),1}c=l}let g=`${ct}/api/v1/skills/${encodeURIComponent(d)}/publish?visibility=${encodeURIComponent(i)}`,_=s;console.log(`\u{1F680} \u6B63\u5728\u53D1\u5E03\u5230 ${ct}`),console.log(` team: ${d}`),console.log(` visibility: ${i}`);try{let b=a?` -F "meta_data=${a.replace(/"/g,'\\"')}"`:"",x=`curl -s -X POST "${g}" -H "Authorization: Bearer ${_}" -F "file=@${c}"${b}`,P=r(x,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),V=JSON.parse(P);if(V.code===0){let D=V.data,W=D.namespace==="global"?`https://makecoder.com/skillhub/${D.slug}`:`https://makecoder.com/skillhub/space/${D.namespace}/${D.slug}`;return console.log(`
45
+ \u2705 \u53D1\u5E03\u6210\u529F!`),console.log(` ${D.namespace}--${D.slug}@${D.version}`),console.log(` ${W}`),D.status==="PUBLISHED"?console.log(" \u72B6\u6001: \u5DF2\u53D1\u5E03"):console.log(" \u72B6\u6001: \u5F85\u5BA1\u6838"),0}else return console.error(`
46
+ \u274C \u53D1\u5E03\u5931\u8D25: ${V.msg||JSON.stringify(V)}`),1}catch(b){let x=b.stdout;if(x)try{let P=JSON.parse(x);return console.error(`
47
+ \u274C \u53D1\u5E03\u5931\u8D25: ${P.msg||x}`),1}catch{}return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${b.message}`),1}finally{l&&H.existsSync(l)&&H.unlinkSync(l)}}async unpublish(e,s){if(!e)return console.error("\u274C \u8BF7\u6307\u5B9A skill: coder skills unpublish <slug> \u6216 coder skills unpublish <teamId>--<slug>"),1;if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;let r,n;if(e.includes("--")){let i=e.split("--");if(i.length!==2||!i[0]||!i[1])return console.error("\u274C \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <slug> \u6216 <teamId>--<slug>\uFF0C\u4F8B\u5982: my-skill \u6216 12680de5--my-skill"),1;r=this._resolveNamespace(i[0]),n=i[1]}else r=this._resolveNamespace(null),n=e;let o=`/api/v1/skills/${encodeURIComponent(r)}/${encodeURIComponent(n)}`;console.log(`\u{1F5D1}\uFE0F \u6B63\u5728\u4E0B\u67B6 ${r}--${n}`);try{let i=await this._request("DELETE",o,s),a=JSON.parse(i.body);return a.code===0?(console.log(`\u2705 \u5DF2\u4E0B\u67B6 ${r}--${n}`),0):(console.error(`\u274C \u4E0B\u67B6\u5931\u8D25: ${a.msg||JSON.stringify(a)}`),1)}catch(i){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${i.message}`),1}}async listTeamSkills(e,s){let r=0,n=20,o=null;for(let u=0;u<e.length;u++)(e[u]==="--page"||e[u]==="-p")&&e[u+1]?r=parseInt(e[++u],10):(e[u]==="--size"||e[u]==="-s")&&e[u+1]?n=parseInt(e[++u],10):(e[u]==="--team"||e[u]==="-t")&&e[u+1]&&(o=e[++u]);let i=this._resolveNamespace(o),a=i==="global",c=a?"":`&namespace=${encodeURIComponent(i)}`,l=`/api/web/skills?sort=newest&page=${r}&size=${n}${c}`;try{let u=await this._request("GET",l,s),d=JSON.parse(u.body);if(d.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${d.msg}`),1;let p=d.data?.items||[],h=d.data?.total||0,g=a?"\u516C\u5171":`\u56E2\u961F ${i}`;if(p.length===0)return console.log(`${g} \u4E0B\u6682\u65E0 skill`),0;console.log(`${g} \u5171 ${h} \u4E2A skill\uFF08\u7B2C ${r+1} \u9875\uFF09:
48
+ `);for(let _ of p){let b=`${_.slug}`.padEnd(28),x=`\u2B50 ${_.starCount??0}`.padEnd(8),P=`\u2193 ${_.downloadCount??0}`.padEnd(10);console.log(` ${b} ${x} ${P} ${_.summary||""}`)}return(r+1)*n<h&&console.log(`
49
49
  \u4E0B\u4E00\u9875: coder skills list --page ${r+1}`),0}catch(u){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${u.message}`),1}}async listMySkills(e,s){let r=0,n=50;for(let o=0;o<e.length;o++)(e[o]==="--page"||e[o]==="-p")&&e[o+1]?r=parseInt(e[++o],10):(e[o]==="--size"||e[o]==="-s")&&e[o+1]&&(n=parseInt(e[++o],10));if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;try{let o=await this._request("GET",`/api/web/me/skills?page=${r}&size=${n}`,s),i=JSON.parse(o.body);if(i.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${i.msg}`),1;let a=i.data?.items||[],c=i.data?.total||0;if(a.length===0)return console.log("\u6682\u65E0\u5DF2\u53D1\u5E03\u7684 skill"),0;console.log(`\u5171 ${c} \u4E2A skill:
50
- `);for(let l of a){let u=`${l.namespace==="global"?"":"--"}${l.slug}`.padEnd(36),d=`\u2B50 ${l.starCount??0}`.padEnd(8),m=`\u2193 ${l.downloadCount??0}`.padEnd(10);console.log(` ${u} ${d} ${m} [${l.status}]`),l.displayName&&l.displayName!==l.slug&&console.log(` ${"".padEnd(36)} ${l.displayName}`)}return 0}catch(o){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${o.message}`),1}}showHelp(){console.log(["Usage: coder skills [subcommand] [options]","","\u2139\uFE0F Skill \u540D\u79F0\u683C\u5F0F:"," \u516C\u5171 skill \u76F4\u63A5\u7528 slug\uFF0C\u4F8B\u5982: vue"," \u56E2\u961F\u79C1\u6709 skill \u9700\u52A0\u56E2\u961F\u524D\u7F00: <teamId>--<slug>\uFF0C\u4F8B\u5982: 12680de5--my-skill"," teamId \u4E3A\u56E2\u961F ID \u524D 8 \u4F4D\uFF0C\u8FD0\u884C `coder team list` \u67E5\u770B","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\uFF08\u9ED8\u8BA4\u4F7F\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09","","Subcommands:"," add <name> \u5B89\u88C5 skill"," remove <name> \u5378\u8F7D skill"," update [name] \u66F4\u65B0 skill\uFF08\u4E0D\u6307\u5B9A\u540D\u79F0\u5219\u66F4\u65B0\u5168\u90E8\uFF09"," check-updates \u68C0\u67E5\u5DF2\u5B89\u88C5 skill \u662F\u5426\u6709\u65B0\u7248\u672C"," search <keyword> \u641C\u7D22 skill"," list [--page <n>] [--size <n>] [--team <id>] \u5217\u51FA\u5F53\u524D\u56E2\u961F\u4E0B\u7684 skill"," my-skills [--page <n>] [--size <n>] \u67E5\u770B\u6211\u53D1\u5E03\u7684 skill"," publish [options] [<dir-or-zip>] \u53D1\u5E03 skill \u5230 skillhub"," unpublish <slug> \u4E0B\u67B6 skill\uFF08\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09","","Publish Options:"," --team <teamId> \u76EE\u6807\u56E2\u961F\uFF08\u9ED8\u8BA4: \u5F53\u524D\u56E2\u961F\uFF0C\u65E0\u56E2\u961F\u65F6\u53D1\u5E03\u5230\u516C\u5171\uFF09"," --visibility <v> \u53EF\u89C1\u6027: PUBLIC | NAMESPACE_ONLY | PRIVATE"," \uFF08\u9ED8\u8BA4: PUBLIC\uFF0C\u56E2\u961F skill \u81EA\u52A8\u9501\u5B9A\u4E3A NAMESPACE_ONLY\uFF09"," --meta-data <json> \u9644\u52A0\u81EA\u5B9A\u4E49\u5143\u6570\u636E JSON","","Examples:"," coder skills add vue \u5B89\u88C5\u516C\u5171 skill"," coder skills add 12680de5--my-skill \u5B89\u88C5\u56E2\u961F\u79C1\u6709 skill"," coder skills search react \u641C\u7D22 skill"," coder skills list \u5217\u51FA\u5F53\u524D\u56E2\u961F\u7684 skill"," coder skills list --page 1 \u7B2C\u4E8C\u9875"," coder skills my-skills \u67E5\u770B\u6211\u53D1\u5E03\u7684 skill"," coder skills publish ./my-skill-dir \u53D1\u5E03\uFF08\u81EA\u52A8\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09"," coder skills publish --team 12680de5 ./my-skill-dir \u53D1\u5E03\u5230\u6307\u5B9A\u56E2\u961F"," coder skills publish --visibility PRIVATE my-skill.zip",` coder skills publish --meta-data '{"category":"tool"}' ./my-skill-dir`," coder skills unpublish my-skill \u4E0B\u67B6\uFF08\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09"," coder skills unpublish 12680de5--my-skill \u4E0B\u67B6\u6307\u5B9A\u56E2\u961F\u7684 skill"].join(`
51
- `))}};Kr.exports=Wr;Kr.exports.SKILLS_SUBCOMMANDS=Zf});var zr=k((ix,Ii)=>{var Vf="https://makecoder.com/wiki",wi=/^(?:[0-9a-zA-Z-_~]*-)?([a-zA-Z0-9]{10,15})$/,bi=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ki(t){return typeof t=="string"&&bi.test(t)}function xi(t){if(typeof t!="string")return null;let e=t.trim();if(!e)return null;if(/^https?:\/\//i.test(e))try{let r=new URL(e).pathname.split("/").filter(Boolean);e=r.length?r[r.length-1]:""}catch{return null}return e||null}function Si(t){let e=xi(t);if(!e)return null;if(ki(e))return{kind:"uuid",value:e};let s=e.match(wi);return s?{kind:"urlId",value:s[1]}:null}function Wf(t){let e=Si(t);return e&&e.kind==="urlId"?e.value:null}Ii.exports={WIKI_BASE:Vf,SLUG_URL_REGEX:wi,UUID_REGEX:bi,isUuid:ki,lastPathSegment:xi,classifyId:Si,extractUrlId:Wf}});var cs=k((ax,Ei)=>{var Kf=require("https"),{WIKI_BASE:js}=zr(),Ci=`${js}/api`,zf=t=>`${js}/doc/${t}`,Jf=t=>`${js}/collection/${t}`,Jr=class{constructor(e,s=null){this.token=e,this.teamId=s||null}post(e,s){return new Promise((r,n)=>{let o=JSON.stringify(s||{}),i=new URL(`${Ci}/${e}`),a={"Content-Type":"application/json","Content-Length":Buffer.byteLength(o),Authorization:`Bearer ${this.token}`};this.teamId&&(a["X-Team-Id"]=this.teamId);let c=Kf.request({hostname:i.hostname,port:i.port||443,path:i.pathname,method:"POST",headers:a},l=>{let u="";l.on("data",d=>u+=d),l.on("end",()=>r({status:l.statusCode,body:u}))});c.on("error",n),c.write(o),c.end()})}async postJson(e,s,{allowNoData:r=!1}={}){let n=await this.post(e,s),o=Hr(n.body);return{ok:n.status<400&&o?.ok!==!1&&(r||o?.data!==void 0),status:n.status,json:o,body:n.body}}};function Hr(t){try{return JSON.parse(t)}catch{return null}}function Hf(t){let e=Hr(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Ei.exports={WikiHttp:Jr,WIKI_BASE:js,WIKI_API_BASE:Ci,docUrl:zf,colUrl:Jf,parseJson:Hr,errorMessage:Hf}});var Xr=k((cx,$i)=>{var{WIKI_BASE:Yf,docUrl:Xf}=cs(),Yr=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Qf(t,e,s={}){let r=typeof s=="string"?{empty:s}:s,{labels:n=Ai,empty:o="\uFF08\u7A7A\uFF09"}=r;if(!e||!e.length){t.emit(o);return}if(t.isJson){t.emit(e);return}let i=Object.keys(e[0]),c=[`| ${i.map(l=>n[l]||l).map(Yr).join(" | ")} |`,`| ${i.map(()=>"---").join(" | ")} |`,...e.map(l=>`| ${i.map(u=>Yr(l[u])).join(" | ")} |`)];t.emit(c.join(`
52
- `))}function ep(t,e,s=1/0){if(!Array.isArray(e)||!e.length){t.emit("\uFF08\u7A7A\uFF09");return}if(t.isJson){t.emit(e);return}let r=[],n=(o,i,a)=>{o.forEach((c,l)=>{let u=l===o.length-1,d=u?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",m=c.url?`${Yf}${c.url}`:Xf(c.id);r.push(`${i}${d}${c.title||c.id} ${m}`),c.children?.length&&a+1<s&&n(c.children,i+(u?" ":"\u2502 "),a+1)})};n(e,"",0),t.emit(r.join(`
53
- `))}function tp(t,e,s=null){if(t.isJson){let r={};for(let[n,o]of e)r[n]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,o])=>`${o||r}: ${n??""}`).join(`
54
- `))}var Ai={title:"\u6807\u9898",name:"\u540D\u79F0",description:"\u63CF\u8FF0",permission:"\u6743\u9650",deleted_at:"\u5220\u9664\u65F6\u95F4",created_at:"\u521B\u5EFA\u65F6\u95F4",time:"\u65F6\u95F4",email:"\u90AE\u7BB1",role:"\u89D2\u8272",members:"\u6210\u5458\u6570",count:"\u6B21\u6570",latest:"\u6700\u8FD1",document:"\u6587\u6863",event:"\u4E8B\u4EF6",collection:"\u96C6\u5408",type:"\u7C7B\u578B",state:"\u72B6\u6001",filename:"\u6587\u4EF6\u540D",size:"\u5927\u5C0F",author:"\u4F5C\u8005",content:"\u5185\u5BB9",icon:"\u56FE\u6807\u540D",keywords:"\u5173\u952E\u8BCD",published:"\u5DF2\u53D1\u5E03"};$i.exports={emitTable:Qf,emitTree:ep,emitDetails:tp,escCell:Yr,LABELS:Ai}});var en=k((lx,Ui)=>{var{emitTable:Ti,emitDetails:sp,emitTree:rp,LABELS:np}=Xr(),{docUrl:op,colUrl:ip}=cs(),ue=t=>t?.data||[],Rt=t=>t?.data?.memberships||t?.data?.groupMemberships||t?.data||[],Q=(t,e,s)=>(r,n)=>Ti(r,(t(n)||[]).map(e),{labels:np,empty:s}),ot=t=>(e,s)=>sp(e,t(s.data)),N=t=>(e,s)=>e.emit(typeof t=="function"?t(s):t),$=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},Qr=t=>({id:t.id,title:t.title,url:op(t.urlId||t.id)}),ap={"collection-info":{endpoint:"collections.info",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:t=>({id:t}),render:ot(t=>[["id",t.id],["name",t.name,"\u540D\u79F0"],["description",t.description||"","\u63CF\u8FF0"],["permission",t.permission||"null","\u6743\u9650"],["url",ip(t.urlId||t.id)]])},"collection-members":{endpoint:"collections.memberships",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:(t,e)=>{let s={id:t};return $(e,"--query")&&(s.query=$(e,"--query")),$(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:Q(Rt,t=>({userId:t.userId||"",name:t.user?.name||"",permission:t.permission||""}),"\u6682\u65E0\u6210\u5458")},"collection-add-user":{endpoint:"collections.add_user",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,userId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:N("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u96C6\u5408")},"collection-remove-user":{endpoint:"collections.remove_user",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:N("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7528\u6237")},"collection-add-group":{endpoint:"collections.add_group",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,groupId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:N("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u96C6\u5408")},"collection-remove-group":{endpoint:"collections.remove_group",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,groupId:e[1]}),expectOk:!0,render:N("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7FA4\u7EC4")},"collection-group-members":{endpoint:"collections.group_memberships",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:t=>({id:t}),render:Q(Rt,t=>({groupId:t.groupId||"",name:t.group?.name||"",permission:t.permission||""}),"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458")},"collection-export":{endpoint:"collections.export",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:(t,e)=>{let s={id:t};return $(e,"--format")&&(s.format=$(e,"--format")),s},render:N(t=>`\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${t.data?.id||""}`)},"export-all":{endpoint:"collections.export_all",body:(t,e)=>{let s={};return $(e,"--format")&&(s.format=$(e,"--format")),s},render:N(t=>`\u5168\u91CF\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${t.data?.id||""}`)},"collection-move":{endpoint:"collections.move",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u76EE\u6807 index\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,index:e[1]}),render:N("\u96C6\u5408\u5DF2\u79FB\u52A8")},archived:{endpoint:"documents.archived",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--sort")&&(s.sort=$(e,"--sort")),$(e,"--direction")&&(s.direction=$(e,"--direction")),s},render:Q(ue,Qr,"\u6682\u65E0\u5DF2\u5F52\u6863\u6587\u6863")},deleted:{endpoint:"documents.deleted",body:(t,e)=>{let s={};return $(e,"--sort")&&(s.sort=$(e,"--sort")),$(e,"--direction")&&(s.direction=$(e,"--direction")),s},render:Q(ue,t=>({id:t.id,title:t.title,deleted_at:t.deletedAt||""}),"\u6682\u65E0\u5DF2\u5220\u9664\u6587\u6863")},insights:{endpoint:"documents.insights",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>{let s={id:t};return $(e,"--start-date")&&(s.startDate=$(e,"--start-date")),$(e,"--end-date")&&(s.endDate=$(e,"--end-date")),s},render:Q(ue,t=>({userId:t.userId||"",name:t.user?.name||"",time:t.createdAt||""}),"\u6682\u65E0\u8BBF\u95EE\u6570\u636E")},export:{endpoint:"documents.export",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>({id:t,includeChildDocuments:e.includes("--include-children")}),render:(t,e)=>{let s=e.data;t.emit(s)}},"search-titles":{endpoint:"documents.search_titles",req:"\u8BF7\u6307\u5B9A\u641C\u7D22\u5173\u952E\u8BCD",body:(t,e)=>({query:[t,...e.slice(1)].join(" ")}),render:Q(ue,Qr,"\u672A\u627E\u5230\u5339\u914D\u6807\u9898")},duplicate:{endpoint:"documents.duplicate",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",resolve:[{flag:"--collection",kind:"col"},{flag:"--parent",kind:"doc"}],body:(t,e)=>{let s={id:t};return $(e,"--title")&&(s.title=$(e,"--title")),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--parent")&&(s.parentDocumentId=$(e,"--parent")),e.includes("--recursive")&&(s.recursive=!0),e.includes("--publish")&&(s.publish=!0),s},render:N(t=>{let e=(t.data?.documents||[])[0];return e?`\u6587\u6863\u5DF2\u590D\u5236: ${e.id} \u2014 ${e.title}`:"\u6587\u6863\u5DF2\u590D\u5236"})},unpublish:{endpoint:"documents.unpublish",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:N("\u6587\u6863\u5DF2\u53D6\u6D88\u53D1\u5E03")},templatize:{endpoint:"documents.templatize",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={id:t,publish:!0};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:N(t=>`\u5DF2\u8F6C\u4E3A\u6A21\u677F: ${t.data.id}`)},"doc-members":{endpoint:"documents.memberships",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:Q(Rt,t=>({userId:t.userId||"",name:t.user?.name||"",permission:t.permission||""}),"\u6682\u65E0\u6210\u5458")},"doc-add-user":{endpoint:"documents.add_user",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,userId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:N("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u6587\u6863")},"doc-remove-user":{endpoint:"documents.remove_user",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:N("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7528\u6237")},"doc-add-group":{endpoint:"documents.add_group",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,groupId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:N("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u6587\u6863")},"doc-remove-group":{endpoint:"documents.remove_group",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,groupId:e[1]}),expectOk:!0,render:N("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7FA4\u7EC4")},"doc-group-members":{endpoint:"documents.group_memberships",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:Q(Rt,t=>({groupId:t.groupId||"",name:t.group?.name||"",permission:t.permission||""}),"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458")},"empty-trash":{endpoint:"documents.empty_trash",body:()=>({}),expectOk:!0,render:N("\u56DE\u6536\u7AD9\u5DF2\u6E05\u7A7A")},"sub-docs":{endpoint:"documents.documents",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:(t,e)=>rp(t,e.data?.children||[])},shares:{endpoint:"shares.list",resolve:[{flag:"--document",kind:"doc"}],body:(t,e)=>{let s={};return $(e,"--document")&&(s.documentId=$(e,"--document")),s},render:Q(ue,t=>({shareId:t.id,document:t.documentTitle||t.documentId||"",published:t.published?"\u662F":"\u5426",url:t.url||""}),"\u6682\u65E0\u5206\u4EAB")},"share-info":{endpoint:"shares.info",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF0C\u6765\u81EA shares \u5217\u8868\uFF09",body:t=>({id:t}),render:ot(t=>[["id",t.id],["document",t.documentTitle||t.documentId||"","\u6587\u6863"],["published",t.published?"\u662F":"\u5426","\u5DF2\u53D1\u5E03"],["url",t.url||""]])},share:{endpoint:"shares.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>({documentId:t,published:e.includes("--published"),includeChildDocuments:e.includes("--include-children")}),render:N(t=>`\u5206\u4EAB\u5DF2\u521B\u5EFA: ${t.data.id}
55
- ${t.data.url||""}`)},"share-update":{endpoint:"shares.update",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return e.includes("--published")&&(s.published=!0),e.includes("--no-published")&&(s.published=!1),e.includes("--include-children")&&(s.includeChildDocuments=!0),s},render:N("\u5206\u4EAB\u5DF2\u66F4\u65B0")},unshare:{endpoint:"shares.revoke",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u5206\u4EAB\u5DF2\u64A4\u9500")},users:{endpoint:"users.list",body:(t,e)=>{let s={};return $(e,"--query")&&(s.query=$(e,"--query")),$(e,"--filter")&&(s.filter=$(e,"--filter")),s},render:Q(ue,t=>({id:t.id,name:t.name,email:t.email||"",role:t.role||""}),"\u6682\u65E0\u7528\u6237")},"user-info":{endpoint:"users.info",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:ot(t=>[["id",t.id],["name",t.name,"\u59D3\u540D"],["email",t.email||"","\u90AE\u7BB1"],["role",t.role||"","\u89D2\u8272"]])},invite:{endpoint:"users.invite",reqArgs:(t,e)=>!($(e,"--email")||t)&&"\u8BF7\u6307\u5B9A\u90AE\u7BB1\uFF08\u7B2C\u4E00\u4E2A\u53C2\u6570\u6216 --email\uFF09",body:(t,e)=>{let s=$(e,"--email")||t,r=$(e,"--name")||e[1],n=$(e,"--role")||e[2];return{invites:[{email:s,name:r,role:n}]}},render:(t,e)=>{let s=e.data||[];if(!s.length)return t.emit("\u9080\u8BF7\u5DF2\u53D1\u9001");Ti(t,s.map(r=>({id:r.id,email:r.email||"",name:r.name||""})))}},"user-update-role":{endpoint:"users.update_role",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u89D2\u8272\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF1Aadmin|member|viewer\uFF09",body:(t,e)=>({id:t,role:e[1]}),render:N("\u7528\u6237\u89D2\u8272\u5DF2\u66F4\u65B0")},"user-suspend":{endpoint:"users.suspend",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:N("\u7528\u6237\u5DF2\u6682\u505C")},"user-activate":{endpoint:"users.activate",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:N("\u7528\u6237\u5DF2\u6FC0\u6D3B")},groups:{endpoint:"groups.list",body:(t,e)=>{let s={};return $(e,"--query")&&(s.query=$(e,"--query")),s},render:Q(ue,t=>({id:t.id,name:t.name,members:t.memberCount??""}),"\u6682\u65E0\u7FA4\u7EC4")},"group-info":{endpoint:"groups.info",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),render:ot(t=>[["id",t.id],["name",t.name,"\u540D\u79F0"],["members",t.memberCount??"","\u6210\u5458"]])},"create-group":{endpoint:"groups.create",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4\u540D\u79F0",body:(t,e)=>({name:[t,...e.slice(1)].join(" ")}),render:N(t=>`\u7FA4\u7EC4\u5DF2\u521B\u5EFA: ${t.data.id} \u2014 ${t.data.name}`)},"update-group":{endpoint:"groups.update",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return $(e,"--name")&&(s.name=$(e,"--name")),s},render:N("\u7FA4\u7EC4\u5DF2\u66F4\u65B0")},"delete-group":{endpoint:"groups.delete",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u7FA4\u7EC4\u5DF2\u5220\u9664")},"group-members":{endpoint:"groups.memberships",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),render:Q(Rt,t=>({userId:t.userId||t.user?.id||"",name:t.user?.name||""}),"\u6682\u65E0\u6210\u5458")},"group-add-user":{endpoint:"groups.add_user",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),render:N("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u7FA4\u7EC4")},"group-remove-user":{endpoint:"groups.remove_user",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:N("\u5DF2\u4ECE\u7FA4\u7EC4\u79FB\u9664\u7528\u6237")},views:{endpoint:"views.list",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t}),render:Q(ue,t=>({userId:t.userId||"",name:t.user?.name||"",count:t.count??"",latest:t.updatedAt||""}),"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55")},view:{endpoint:"views.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t}),render:N("\u6D4F\u89C8\u5DF2\u8BB0\u5F55")},subscriptions:{endpoint:"subscriptions.list",id:"doc",resolve:[{flag:"--collection",kind:"col"}],reqArgs:(t,e)=>!t&&e.indexOf("--collection")===-1&&"\u8BF7\u6307\u5B9A\u6587\u6863 id \u6216 --collection <id>",body:(t,e)=>{let s={event:"documents.update"};return t&&(s.documentId=t),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:Q(ue,t=>({id:t.id,document:t.documentId||"",event:t.event||""}),"\u6682\u65E0\u8BA2\u9605")},subscribe:{endpoint:"subscriptions.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t,event:"documents.update"}),render:N(t=>`\u5DF2\u8BA2\u9605: ${t.data.id}`)},unsubscribe:{endpoint:"subscriptions.delete",req:"\u8BF7\u6307\u5B9A\u8BA2\u9605 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u5DF2\u53D6\u6D88\u8BA2\u9605")},events:{endpoint:"events.list",resolve:[{flag:"--document",kind:"doc"},{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--actor")&&(s.actorId=$(e,"--actor")),$(e,"--document")&&(s.documentId=$(e,"--document")),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--type")&&(s.name=$(e,"--type")),s},render:Q(ue,t=>({event:t.name||"",actorId:t.actorId||"",time:t.createdAt||""}),"\u6682\u65E0\u4E8B\u4EF6")},templates:{endpoint:"templates.list",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:Q(ue,t=>({id:t.id,title:t.title,collection:t.collectionId||""}),"\u6682\u65E0\u6A21\u677F")},"template-info":{endpoint:"templates.info",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:t=>({id:t}),render:ot(t=>[["id",t.id],["title",t.title,"\u6807\u9898"],["collection",t.collectionId||"","\u96C6\u5408"]])},"create-template":{endpoint:"templates.create",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u6A21\u677F\u6807\u9898\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s=$(e,"--text")||"";return{collectionId:t,title:e[1],data:{type:"doc",content:s?[{type:"paragraph",content:[{type:"text",text:s}]}]:[]}}},render:N(t=>`\u6A21\u677F\u5DF2\u521B\u5EFA: ${t.data.id} \u2014 ${t.data.title}`)},"update-template":{endpoint:"templates.update",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};$(e,"--title")&&(s.title=$(e,"--title"));let r=$(e,"--text");return r!==void 0&&(s.data={type:"doc",content:[{type:"paragraph",content:[{type:"text",text:r}]}]}),s},render:N("\u6A21\u677F\u5DF2\u66F4\u65B0")},"delete-template":{endpoint:"templates.delete",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u6A21\u677F\u5DF2\u5220\u9664")},"duplicate-template":{endpoint:"templates.duplicate",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return $(e,"--title")&&(s.title=$(e,"--title")),s},render:N(t=>`\u6A21\u677F\u5DF2\u590D\u5236: ${t.data.id} \u2014 ${t.data.title}`)},"file-ops":{endpoint:"fileOperations.list",body:(t,e)=>{let s={};return $(e,"--type")&&(s.type=$(e,"--type")),s},render:Q(ue,t=>({id:t.id,type:t.type||"",state:t.state||"",time:t.createdAt||""}),"\u6682\u65E0\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55")},"file-op-info":{endpoint:"fileOperations.info",req:"\u8BF7\u6307\u5B9A\u6587\u4EF6\u64CD\u4F5C id\uFF08UUID\uFF09",body:t=>({id:t}),render:ot(t=>[["id",t.id],["type",t.type||"","\u7C7B\u578B"],["state",t.state||"","\u72B6\u6001"],["time",t.createdAt||"","\u65F6\u95F4"]])},"file-op-delete":{endpoint:"fileOperations.delete",req:"\u8BF7\u6307\u5B9A\u6587\u4EF6\u64CD\u4F5C id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55\u5DF2\u5220\u9664")},reactions:{endpoint:"reactions.list",req:"\u8BF7\u6307\u5B9A\u8BC4\u8BBA id\uFF08UUID\uFF09",body:t=>({commentId:t}),render:Q(ue,t=>({emoji:t.emoji||"",userId:t.userId||"",name:t.user?.name||""}),"\u6682\u65E0\u53CD\u5E94")},attachments:{endpoint:"attachments.list",id:"doc",body:t=>t?{documentId:t}:{},render:Q(ue,t=>({id:t.id,filename:t.name,type:t.contentType||"",size:t.size?`${Math.round(t.size/1024)}KB`:"",url:t.url||""}),"\u6682\u65E0\u9644\u4EF6")},"delete-attachment":{endpoint:"attachments.delete",req:"\u8BF7\u6307\u5B9A\u9644\u4EF6 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:N("\u9644\u4EF6\u5DF2\u5220\u9664")}};Ui.exports={COMMANDS:ap,list:Q,details:ot,ok:N,flag:$,items:ue,memberships:Rt,docRow:Qr}});var Oi=k((ux,vi)=>{var cp=[{name:"academicCap",keywords:"\u5B66\u4E60 \u6559\u5B66 \u8BFE\u7A0B \u6307\u5357 \u6559\u7A0B \u57F9\u8BAD \u5165\u95E8"},{name:"beaker",keywords:"\u5B9E\u9A8C\u5BA4 \u7814\u7A76 \u5B9E\u9A8C \u6D4B\u8BD5"},{name:"bicycle",keywords:"\u81EA\u884C\u8F66 \u9A91\u884C"},{name:"bookmark",keywords:"\u4E66\u7B7E \u6536\u85CF"},{name:"browser",keywords:"\u6D4F\u89C8\u5668 \u7F51\u9875 \u5E94\u7528"},{name:"buildingBlocks",keywords:"\u79EF\u6728 \u6A21\u5757 \u4EA7\u54C1 \u539F\u578B"},{name:"camera",keywords:"\u76F8\u673A \u7167\u7247 \u56FE\u7247"},{name:"carrot",keywords:"\u98DF\u7269 \u852C\u83DC \u519C\u4EA7\u54C1"},{name:"clock",keywords:"\u65F6\u949F \u65F6\u95F4"},{name:"cloud",keywords:"\u4E91 \u4E91\u670D\u52A1 \u57FA\u7840\u8BBE\u65BD"},{name:"code",keywords:"\u4EE3\u7801 \u5F00\u53D1 \u7F16\u7A0B \u5DE5\u7A0B API"},{name:"coins",keywords:"\u91D1\u5E01 \u91D1\u94B1 \u8D22\u52A1 \u9500\u552E \u6536\u5165 \u73B0\u91D1"},{name:"collection",keywords:"\u96C6\u5408 \u6587\u4EF6\u5939"},{name:"database",keywords:"\u6570\u636E\u5E93 \u670D\u52A1\u5668 \u8FD0\u7EF4"},{name:"done",keywords:"\u5B8C\u6210 \u6210\u529F \u52FE\u9009 \u7ED3\u675F"},{name:"email",keywords:"\u90AE\u4EF6 \u90AE\u7BB1"},{name:"eye",keywords:"\u773C\u775B \u67E5\u770B \u9884\u89C8"},{name:"feedback",keywords:"\u53CD\u9988 \u5E2E\u52A9 \u652F\u6301 FAQ"},{name:"flame",keywords:"\u706B\u7130 \u70ED\u95E8"},{name:"globe",keywords:"\u5730\u7403 \u7FFB\u8BD1 \u56FD\u9645\u5316"},{name:"graph",keywords:"\u56FE\u8868 \u5206\u6790 \u6570\u636E \u7EDF\u8BA1"},{name:"hashtag",keywords:"\u6807\u7B7E \u8BDD\u9898 \u793E\u4EA4\u5A92\u4F53"},{name:"icecream",keywords:"\u51B0\u6DC7\u6DCB \u751C\u70B9 \u98DF\u7269"},{name:"image",keywords:"\u56FE\u7247 \u56FE\u50CF \u7167\u7247"},{name:"info",keywords:"\u4FE1\u606F \u8BF4\u660E"},{name:"internet",keywords:"\u7F51\u7EDC \u5168\u7403 \u4E92\u8054\u7F51"},{name:"leaf",keywords:"\u53F6\u5B50 \u690D\u7269 \u81EA\u7136 \u751F\u6001 \u73AF\u5883"},{name:"letter",keywords:"\u5B57\u6BCD \u4FE1\u4EF6"},{name:"library",keywords:"\u56FE\u4E66\u9986 \u6587\u5E93 \u5F52\u6863"},{name:"lightbulb",keywords:"\u706F\u6CE1 \u60F3\u6CD5 \u521B\u610F"},{name:"lightning",keywords:"\u95EA\u7535 \u5FEB\u901F"},{name:"math",keywords:"\u6570\u5B66 \u516C\u5F0F"},{name:"moon",keywords:"\u6708\u4EAE \u591C\u665A \u6697\u8272"},{name:"notepad",keywords:"\u8BB0\u4E8B\u672C \u7B14\u8BB0 \u65E5\u5FD7 \u5199\u4F5C"},{name:"padlock",keywords:"\u9501 \u79C1\u5BC6 \u5B89\u5168 \u8BA4\u8BC1 \u6743\u9650"},{name:"palette",keywords:"\u8C03\u8272\u677F \u8BBE\u8BA1 \u827A\u672F \u54C1\u724C"},{name:"pencil",keywords:"\u94C5\u7B14 \u5199\u4F5C \u535A\u5BA2 \u6587\u7AE0"},{name:"plane",keywords:"\u98DE\u673A \u65C5\u884C \u51FA\u884C \u5047\u671F"},{name:"promote",keywords:"\u63A8\u5E7F \u8425\u9500 \u5BA3\u4F20"},{name:"question",keywords:"\u95EE\u9898 \u5E2E\u52A9 \u652F\u6301 FAQ"},{name:"ramen",keywords:"\u62C9\u9762 \u6C64 \u98DF\u7269 \u9910\u996E"},{name:"server",keywords:"\u670D\u52A1\u5668 \u8FD0\u7EF4 \u57FA\u7840\u8BBE\u65BD"},{name:"shapes",keywords:"\u5F62\u72B6 \u79EF\u6728 \u73A9\u5177"},{name:"smiley",keywords:"\u7B11\u8138 \u8868\u60C5 \u5F00\u5FC3"},{name:"sport",keywords:"\u8FD0\u52A8 \u6237\u5916 \u6E38\u620F"},{name:"sun",keywords:"\u592A\u9633 \u767D\u5929 \u5929\u6C14"},{name:"target",keywords:"\u76EE\u6807 \u9500\u552E \u6307\u6807"},{name:"team",keywords:"\u56E2\u961F \u7EC4\u7EC7 \u529E\u516C\u5BA4"},{name:"terminal",keywords:"\u7EC8\u7AEF \u547D\u4EE4\u884C \u4EE3\u7801"},{name:"thumbsup",keywords:"\u70B9\u8D5E \u6536\u85CF \u793E\u4EA4 \u6295\u7968"},{name:"tools",keywords:"\u5DE5\u5177 \u8BBE\u7F6E \u914D\u7F6E"},{name:"truck",keywords:"\u5361\u8F66 \u8FD0\u8F93 \u7269\u6D41"},{name:"vehicle",keywords:"\u8F66\u8F86 \u4EA4\u901A \u51FA\u884C"},{name:"warning",keywords:"\u8B66\u544A \u63D0\u793A \u9519\u8BEF"}];vi.exports={ICON_LIST:cp}});var rn=k((dx,ji)=>{var Ms=require("fs"),ls=require("path"),{docUrl:Lt,colUrl:tn,errorMessage:lp}=cs(),{emitTable:Te,emitTree:up,emitDetails:us}=Xr(),{ICON_LIST:Di}=Oi(),ee=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},dp=(t,e=[])=>{let s=[];for(let r=0;r<t.length;r++){if(t[r].startsWith("--")){e.includes(t[r])&&r++;continue}s.push(t[r])}return s};async function M(t,e,s,{allowNoData:r=!1}={}){let n=await t.http.postJson(e,s,{allowNoData:r});if(!n.ok){t.ctx.fail(lp(n.body),void 0);let o=new Error("__handled__");throw o.handled=!0,o}return n.json}var Gs=t=>({id:t.id,title:t.title,url:Lt(t.urlId||t.id)});async function fp(t){let{ctx:e,http:s,resolver:r,arg:n,args:o}=t,i=o.indexOf("-d"),a=i!==-1?parseInt(o[i+1],10):null;if(!n){let u=await M(t,"collections.list",{});return Te(e,(u.data||[]).filter(d=>!d?.isShared).map(d=>({id:d.id,name:d.name,description:d.description||"",url:tn(d.urlId||d.id)})),"\u6682\u65E0\u96C6\u5408"),0}let c=await r.toColUuid(n);if(a===null){let u=await M(t,"documents.list",{collectionId:c,sort:"updatedAt",direction:"DESC"});return Te(e,(u.data||[]).map(Gs),"\u6682\u65E0\u6587\u6863"),0}let l=await M(t,"collections.documents",{id:c});return up(e,l.data||[],a===-1?1/0:a),0}async function pp(t){let{ctx:e,arg:s}=t,r=[...t.args],n=(_,w)=>{let S=r.indexOf(_);if(S===-1)return w;let L=r[S+1];return r.splice(S,2),L??w},o=n("--permission","read_write"),i=n("--icon"),a=n("--color"),c=n("--sort-field"),l=n("--sort-direction"),u=n("--index"),d=s||r[0];if(!d)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408\u540D\u79F0",'\u7528\u6CD5: coder wiki create-collection "<\u540D\u79F0>" [\u63CF\u8FF0]'),1;let m=r.slice(1).filter(_=>!_.startsWith("--")).join(" "),h={name:d,description:m,sharing:!0};h.permission=o==="null"||o==="none"?null:o,i&&(h.icon=i),a&&(h.color=a),(c||l)&&(h.sort={field:c||"index",direction:l||"asc"}),u&&(h.index=u);let g=await M(t,"collections.create",h);return us(e,[["collection",`${g.data.id} \u2014 ${g.data.name}`,"\u96C6\u5408\u5DF2\u521B\u5EFA"],["url",tn(g.data.urlId||g.data.id)]]),0}async function mp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki list \u67E5\u770B\u96C6\u5408"),1;let i={id:await s.toColUuid(r)};if(ee(n,"--name")&&(i.name=ee(n,"--name")),ee(n,"--description")&&(i.description=ee(n,"--description")),n.indexOf("--permission")!==-1){let c=ee(n,"--permission");i.permission=c==="null"||c==="none"?null:c}if(ee(n,"--color")&&(i.color=ee(n,"--color")),n.indexOf("--sharing")!==-1&&(i.sharing=ee(n,"--sharing")==="true"),Object.keys(i).length<=1)return e.fail("\u8BF7\u81F3\u5C11\u6307\u5B9A\u4E00\u4E2A\u8981\u66F4\u65B0\u7684\u5B57\u6BB5","\u53EF\u7528: --name --description --permission --color --sharing"),1;let a=await M(t,"collections.update",i);return e.emit(`\u96C6\u5408\u5DF2\u66F4\u65B0: ${a.data.id} \u2014 ${a.data.name}`),0}async function sn(t,e,s,{allowNoData:r=!1}={}){let{ctx:n,resolver:o,arg:i}=t;if(!i)return n.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki list \u67E5\u770B\u96C6\u5408"),1;let a=await o.toColUuid(i);return await M(t,e,{id:a},{allowNoData:r}),n.emit(s),0}var hp=t=>sn(t,"collections.delete","\u96C6\u5408\u5DF2\u5220\u9664",{allowNoData:!0}),gp=t=>sn(t,"collections.archive","\u96C6\u5408\u5DF2\u5F52\u6863"),yp=t=>sn(t,"collections.restore","\u96C6\u5408\u5DF2\u6062\u590D");async function _p(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / \u6D4F\u89C8\u5668 URL"),1;let n=await s.toDocUuid(r),i=(await M(t,"documents.info",{id:n})).data;return us(e,[["title",i.title,"\u6807\u9898"],["id",i.id],["collection",i.collectionId,"\u96C6\u5408"],["updated_at",i.updatedAt,"\u66F4\u65B0"],["url",Lt(i.urlId||i.id)]]),!e.isJson&&i.text&&e.emit(`
56
- ${i.text}`),0}function Li(t,e){let s=ls.resolve(e);if(!Ms.existsSync(s))return t.ctx.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),null;let r=Ms.readFileSync(s,"utf8"),n=r.match(/^#\s+(.+)/m);return n?{title:n[1].trim(),text:r.replace(/^#\s+.+\n?/,"").trimStart()}:(t.ctx.fail("\u6587\u4EF6\u7F3A\u5C11 H1 \u6807\u9898\uFF08# \u6807\u9898\uFF09","\u5728 Markdown \u9876\u90E8\u52A0\u4E00\u884C # \u6807\u9898"),null)}async function wp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki publish <\u96C6\u5408> <\u6807\u9898> [\u6B63\u6587] | <\u96C6\u5408> --file <path> [--parent <doc>] [--index <n>] [--after <doc>]"),1;let o=await s.toColUuid(r),i,a,c=ee(n,"--parent")?await s.toDocUuid(ee(n,"--parent")):void 0,l=await Ni(t,o);if(!l.ok)return 1;let u=l.index;l.parentDocumentId&&!c&&(c=l.parentDocumentId);let d=!1;if(n.indexOf("--file")!==-1){let S=ee(n,"--file");d=S&&ls.extname(S).toLowerCase()===".mdx";let L=Li(t,S);if(!L)return 1;({title:i,text:a}=L)}else if(i=n[1],a=n.slice(2).join(" "),!i)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki publish <\u96C6\u5408> <\u6807\u9898> [\u6B63\u6587]"),1;let m={collectionId:o,title:i,text:"",publish:!0};c&&(m.parentDocumentId=c),d&&(m.format="mdx");let g=(await M(t,"documents.create",m)).data.id,_={id:g,title:i,text:a,publish:!0};d&&(_.format="mdx");let w=await M(t,"documents.update",_);if(u!==void 0){let S={id:g,collectionId:o,index:u};c&&(S.parentDocumentId=c),await M(t,"documents.move",S)}return us(e,[["title",w.data.title,"\u6587\u6863\u5DF2\u53D1\u5E03"],["id",g],["url",Lt(w.data.urlId||g)]]),0}function Pi(t,e,s=null){if(!Array.isArray(t))return null;for(let r=0;r<t.length;r++){if(t[r].id===e)return{index:r,parentDocumentId:s};if(t[r].children?.length){let n=Pi(t[r].children,e,t[r].id);if(n)return n}}return null}async function Ni(t,e){let{ctx:s,resolver:r,args:n}=t,o=ee(n,"--after");if(n.indexOf("--after")!==-1){if(!o)return s.fail("\u8BF7\u6307\u5B9A --after \u7684\u6587\u6863","\u4F20 UUID / urlId / URL"),{ok:!1};let i=await r.toDocUuid(o),a=await M(t,"collections.documents",{id:e}),c=Pi(a.data,i);return c?{ok:!0,index:c.index+1,parentDocumentId:c.parentDocumentId}:(s.fail(`\u96C6\u5408\u4E2D\u672A\u627E\u5230\u6587\u6863 ${o}`,"\u786E\u8BA4\u8BE5\u6587\u6863\u5C5E\u4E8E\u6B64\u96C6\u5408"),{ok:!1})}if(n.indexOf("--index")!==-1){let i=parseInt(ee(n,"--index"),10);return isNaN(i)||i<0?(s.fail("--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570","\u4F8B\u5982 --index 3"),{ok:!1}):{ok:!0,index:i}}return{ok:!0}}async function bp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki update <\u6587\u6863> <\u6807\u9898> [\u6B63\u6587] | <\u6587\u6863> --file <path>"),1;let o=await s.toDocUuid(r),i,a,c=!1;if(n.indexOf("--file")!==-1){let d=ee(n,"--file");c=d&&ls.extname(d).toLowerCase()===".mdx";let m=Li(t,d);if(!m)return 1;({title:i,text:a}=m)}else if(i=n[1],a=n.slice(2).join(" "),!i)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki update <\u6587\u6863> <\u6807\u9898> [\u6B63\u6587]"),1;let l={id:o,title:i,publish:!0};a&&(l.text=a),c&&(l.format="mdx");let u=await M(t,"documents.update",l);return e.emit(`\u6587\u6863\u5DF2\u66F4\u65B0: ${u.data.title}`),0}async function kp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let o=await s.toDocUuid(r),i=n.includes("--permanent");return await M(t,"documents.delete",{id:o,...i?{permanent:!0}:{}},{allowNoData:!0}),e.emit(`\u6587\u6863\u5DF2${i?"\u6C38\u4E45":""}\u5220\u9664`),0}async function xp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki move <\u6587\u6863> [\u96C6\u5408] [\u7236\u6587\u6863] [--index <n>] [--after <doc>]"),1;let o=await s.toDocUuid(r),i=dp(n,["--index","--after"]),a=i[1]?await s.toColUuid(i[1]):void 0,c=i[2]?await s.toDocUuid(i[2]):void 0;a||(a=(await M(t,"documents.info",{id:o})).data.collectionId);let l=await Ni(t,a);if(!l.ok)return 1;let u=l.index;l.parentDocumentId&&c===void 0&&(c=l.parentDocumentId);let d={id:o,collectionId:a,index:u!==void 0?u:0};return c!==void 0&&(d.parentDocumentId=c),await M(t,"documents.move",d),e.emit("\u6587\u6863\u5DF2\u79FB\u52A8"),0}async function Sp(t,e,s){let{ctx:r,resolver:n,arg:o}=t;if(!o)return r.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await n.toDocUuid(o);return await M(t,e,{id:i}),r.emit(s),0}var Ip=t=>Sp(t,"documents.archive","\u6587\u6863\u5DF2\u5F52\u6863");async function Cp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let i={id:await s.toDocUuid(r)};return ee(n,"--revision")&&(i.revisionId=ee(n,"--revision")),ee(n,"--collection")&&(i.collectionId=await s.toColUuid(ee(n,"--collection"))),await M(t,"documents.restore",i),e.emit("\u6587\u6863\u5DF2\u6062\u590D"),0}async function Ep(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let n=await s.toDocUuid(r),o=await M(t,"revisions.list",{documentId:n,sort:"createdAt",direction:"DESC"});return Te(e,(o.data||[]).map(i=>({revisionId:i.id,name:i.name||"",created_at:i.createdAt})),"\u6682\u65E0\u5386\u53F2\u7248\u672C"),0}async function Ap(t){let{ctx:e,arg:s}=t;if(!s)return e.fail("\u8BF7\u6307\u5B9A\u7248\u672C id\uFF08UUID\uFF0C\u6765\u81EA revisions \u5217\u8868\uFF09","coder wiki revisions <\u6587\u6863>"),1;let n=(await M(t,"revisions.info",{id:s})).data;return us(e,[["revisionId",n.id,"\u7248\u672C id"],["name",n.name||"","\u7248\u672C\u540D"],["documentId",n.documentId,"\u6587\u6863 id"],["created_at",n.createdAt,"\u521B\u5EFA\u65F6\u95F4"]]),!e.isJson&&n.text&&e.emit(`
57
- ${n.text}`),0}async function $p(t){let e=await M(t,"documents.drafts",{sort:"updatedAt",direction:"DESC"});return Te(t.ctx,(e.data||[]).map(Gs),"\u6682\u65E0\u8349\u7A3F"),0}async function Tp(t){let e=await M(t,"documents.viewed",{sort:"updatedAt",direction:"DESC"});return Te(t.ctx,(e.data||[]).map(Gs),"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55"),0}async function Up(t){let{ctx:e,arg:s,args:r}=t;if(!s)return e.fail("\u8BF7\u6307\u5B9A\u641C\u7D22\u5173\u952E\u8BCD","coder wiki search <\u5173\u952E\u8BCD>"),1;let n=[s,...r.slice(1)].join(" "),i=(await M(t,"documents.search",{query:n,snippetMinWords:20,snippetMaxWords:30})).data||[];return Te(e,i.map(a=>Gs(a.document||a)),`\u6CA1\u6709\u627E\u5230\u4E0E "${n}" \u76F8\u5173\u7684\u6587\u6863`),0}async function vp(t){let{ctx:e}=t,s=await M(t,"stars.list",{}),r=s.data?.stars||[],n={};for(let o of s.data?.documents||[])n[o.id]=o;return Te(e,r.map(o=>{let i=o.documentId?n[o.documentId]:null;return{starId:o.id,title:i?.title||o.collectionId||o.documentId||"",url:i?Lt(i.urlId||i.id):o.collectionId?tn(o.collectionId):o.documentId?Lt(o.documentId):""}}),"\u6682\u65E0\u6536\u85CF"),0}async function Op(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6216\u96C6\u5408 id","\u96C6\u5408\u7528 --collection \u6807\u8BB0"),1;let o=n.includes("--collection"),i=o?await s.toColUuid(r):await s.toDocUuid(r);return await M(t,"stars.create",o?{collectionId:i}:{documentId:i}),e.emit("\u5DF2\u6536\u85CF"),0}async function Dp(t){let{ctx:e,arg:s}=t;return s?(await M(t,"stars.delete",{id:s},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u6536\u85CF"),0):(e.fail("\u8BF7\u6307\u5B9A\u6536\u85CF id\uFF08starId\uFF0C\u6765\u81EA stars \u5217\u8868\uFF09","coder wiki stars"),1)}async function Rp(t){let{ctx:e,resolver:s,arg:r}=t,n=r?{collectionId:await s.toColUuid(r)}:{},o=await M(t,"pins.list",n),i=o.data?.pins||[],a={};for(let c of o.data?.documents||[])a[c.id]=c;return Te(e,i.map(c=>{let l=c.documentId?a[c.documentId]:null;return{pinId:c.id,title:l?.title||c.documentId,url:Lt(l?.urlId||c.documentId)}}),"\u6682\u65E0\u7F6E\u9876"),0}async function Lp(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki pin <\u6587\u6863> [\u96C6\u5408]"),1;let i={documentId:await s.toDocUuid(r)};n[1]&&(i.collectionId=await s.toColUuid(n[1]));let a=await M(t,"pins.create",i);return e.emit(`\u5DF2\u7F6E\u9876: ${a.data.id}`),0}async function Pp(t){let{ctx:e,arg:s}=t;return s?(await M(t,"pins.delete",{id:s},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u7F6E\u9876"),0):(e.fail("\u8BF7\u6307\u5B9A\u7F6E\u9876 id\uFF08pinId\uFF0C\u6765\u81EA pins \u5217\u8868\uFF09","coder wiki pins"),1)}async function Np(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let n=await s.toDocUuid(r),i=(await M(t,"comments.list",{documentId:n,sort:"createdAt",direction:"ASC"})).data||[];return i.length?(e.isJson?Te(e,i.map(a=>({id:a.id,author:a.createdBy?.name||"?",content:Ri(a.data)}))):e.emit(i.map(a=>` [${a.id}] ${a.createdBy?.name||"?"}: ${Ri(a.data)}`).join(`
58
- `)),0):(e.emit("\u6682\u65E0\u8BC4\u8BBA"),0)}async function qp(t){let{ctx:e,resolver:s,arg:r,args:n}=t,o=n.slice(1).join(" ");if(!r||!o)return e.fail("\u7528\u6CD5: coder wiki comment <\u6587\u6863> <\u5185\u5BB9>","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await s.toDocUuid(r),a=await M(t,"comments.create",{documentId:i,text:o});return e.emit(`\u8BC4\u8BBA\u5DF2\u53D1\u5E03: ${a.data.id}`),0}function Ri(t){return t?.content?t.content.flatMap(e=>e.content||[]).filter(e=>e.type==="text").map(e=>e.text).join(""):""}function jp(t){let{ctx:e,arg:s,args:r}=t,n=ee(r,"--query")||s||"",o=n?Di.filter(i=>i.name.toLowerCase().includes(n.toLowerCase())||i.keywords.toLowerCase().includes(n.toLowerCase())):Di;return o.length?(Te(e,o.map(i=>({icon:i.name,keywords:i.keywords}))),e.isJson||e.emit(`
50
+ `);for(let l of a){let u=`${l.namespace==="global"?"":"--"}${l.slug}`.padEnd(36),d=`\u2B50 ${l.starCount??0}`.padEnd(8),p=`\u2193 ${l.downloadCount??0}`.padEnd(10);console.log(` ${u} ${d} ${p} [${l.status}]`),l.displayName&&l.displayName!==l.slug&&console.log(` ${"".padEnd(36)} ${l.displayName}`)}return 0}catch(o){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${o.message}`),1}}showHelp(){console.log(["Usage: coder skills [subcommand] [options]","","\u2139\uFE0F Skill \u540D\u79F0\u683C\u5F0F:"," \u516C\u5171 skill \u76F4\u63A5\u7528 slug\uFF0C\u4F8B\u5982: vue"," \u56E2\u961F\u79C1\u6709 skill \u9700\u52A0\u56E2\u961F\u524D\u7F00: <teamId>--<slug>\uFF0C\u4F8B\u5982: 12680de5--my-skill"," teamId \u4E3A\u56E2\u961F ID \u524D 8 \u4F4D\uFF0C\u8FD0\u884C `coder team list` \u67E5\u770B","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\uFF08\u9ED8\u8BA4\u4F7F\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09","","Subcommands:"," add <name> \u5B89\u88C5 skill"," remove <name> \u5378\u8F7D skill"," update [name] \u66F4\u65B0 skill\uFF08\u4E0D\u6307\u5B9A\u540D\u79F0\u5219\u66F4\u65B0\u5168\u90E8\uFF09"," check-updates \u68C0\u67E5\u5DF2\u5B89\u88C5 skill \u662F\u5426\u6709\u65B0\u7248\u672C"," search <keyword> \u641C\u7D22 skill"," list [--page <n>] [--size <n>] [--team <id>] \u5217\u51FA\u5F53\u524D\u56E2\u961F\u4E0B\u7684 skill"," my-skills [--page <n>] [--size <n>] \u67E5\u770B\u6211\u53D1\u5E03\u7684 skill"," publish [options] [<dir-or-zip>] \u53D1\u5E03 skill \u5230 skillhub"," unpublish <slug> \u4E0B\u67B6 skill\uFF08\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09","","Publish Options:"," --team <teamId> \u76EE\u6807\u56E2\u961F\uFF08\u9ED8\u8BA4: \u5F53\u524D\u56E2\u961F\uFF0C\u65E0\u56E2\u961F\u65F6\u53D1\u5E03\u5230\u516C\u5171\uFF09"," --visibility <v> \u53EF\u89C1\u6027: PUBLIC | NAMESPACE_ONLY | PRIVATE"," \uFF08\u9ED8\u8BA4: PUBLIC\uFF0C\u56E2\u961F skill \u81EA\u52A8\u9501\u5B9A\u4E3A NAMESPACE_ONLY\uFF09"," --meta-data <json> \u9644\u52A0\u81EA\u5B9A\u4E49\u5143\u6570\u636E JSON","","Examples:"," coder skills add vue \u5B89\u88C5\u516C\u5171 skill"," coder skills add 12680de5--my-skill \u5B89\u88C5\u56E2\u961F\u79C1\u6709 skill"," coder skills search react \u641C\u7D22 skill"," coder skills list \u5217\u51FA\u5F53\u524D\u56E2\u961F\u7684 skill"," coder skills list --page 1 \u7B2C\u4E8C\u9875"," coder skills my-skills \u67E5\u770B\u6211\u53D1\u5E03\u7684 skill"," coder skills publish ./my-skill-dir \u53D1\u5E03\uFF08\u81EA\u52A8\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09"," coder skills publish --team 12680de5 ./my-skill-dir \u53D1\u5E03\u5230\u6307\u5B9A\u56E2\u961F"," coder skills publish --visibility PRIVATE my-skill.zip",` coder skills publish --meta-data '{"category":"tool"}' ./my-skill-dir`," coder skills unpublish my-skill \u4E0B\u67B6\uFF08\u4F7F\u7528\u9ED8\u8BA4\u56E2\u961F\uFF09"," coder skills unpublish 12680de5--my-skill \u4E0B\u67B6\u6307\u5B9A\u56E2\u961F\u7684 skill"].join(`
51
+ `))}};Xr.exports=Yr;Xr.exports.SKILLS_SUBCOMMANDS=Jp});var Qr=k((fx,Ti)=>{var Hp="https://makecoder.com/wiki",Ii=/^(?:[0-9a-zA-Z-_~]*-)?([a-zA-Z0-9]{10,15})$/,Ci=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Ei(t){return typeof t=="string"&&Ci.test(t)}function Ai(t){if(typeof t!="string")return null;let e=t.trim();if(!e)return null;if(/^https?:\/\//i.test(e))try{let r=new URL(e).pathname.split("/").filter(Boolean);e=r.length?r[r.length-1]:""}catch{return null}return e||null}function $i(t){let e=Ai(t);if(!e)return null;if(Ei(e))return{kind:"uuid",value:e};let s=e.match(Ii);return s?{kind:"urlId",value:s[1]}:null}function Yp(t){let e=$i(t);return e&&e.kind==="urlId"?e.value:null}Ti.exports={WIKI_BASE:Hp,SLUG_URL_REGEX:Ii,UUID_REGEX:Ci,isUuid:Ei,lastPathSegment:Ai,classifyId:$i,extractUrlId:Yp}});var ps=k((mx,vi)=>{var Xp=require("https"),{WIKI_BASE:Zs}=Qr(),Ui=`${Zs}/api`,Qp=t=>`${Zs}/doc/${t}`,ef=t=>`${Zs}/collection/${t}`,en=class{constructor(e,s=null){this.token=e,this.teamId=s||null}post(e,s){return new Promise((r,n)=>{let o=JSON.stringify(s||{}),i=new URL(`${Ui}/${e}`),a={"Content-Type":"application/json","Content-Length":Buffer.byteLength(o),Authorization:`Bearer ${this.token}`};this.teamId&&(a["X-Team-Id"]=this.teamId);let c=Xp.request({hostname:i.hostname,port:i.port||443,path:i.pathname,method:"POST",headers:a},l=>{let u="";l.on("data",d=>u+=d),l.on("end",()=>r({status:l.statusCode,body:u}))});c.on("error",n),c.write(o),c.end()})}async postJson(e,s,{allowNoData:r=!1}={}){let n=await this.post(e,s),o=tn(n.body);return{ok:n.status<400&&o?.ok!==!1&&(r||o?.data!==void 0),status:n.status,json:o,body:n.body}}};function tn(t){try{return JSON.parse(t)}catch{return null}}function tf(t){let e=tn(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}vi.exports={WikiHttp:en,WIKI_BASE:Zs,WIKI_API_BASE:Ui,docUrl:Qp,colUrl:ef,parseJson:tn,errorMessage:tf}});var rn=k((hx,Di)=>{var{WIKI_BASE:sf,docUrl:rf}=ps(),sn=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function nf(t,e,s={}){let r=typeof s=="string"?{empty:s}:s,{labels:n=Oi,empty:o="\uFF08\u7A7A\uFF09"}=r;if(!e||!e.length){t.emit(o);return}if(t.isJson){t.emit(e);return}let i=Object.keys(e[0]),c=[`| ${i.map(l=>n[l]||l).map(sn).join(" | ")} |`,`| ${i.map(()=>"---").join(" | ")} |`,...e.map(l=>`| ${i.map(u=>sn(l[u])).join(" | ")} |`)];t.emit(c.join(`
52
+ `))}function of(t,e,s=1/0){if(!Array.isArray(e)||!e.length){t.emit("\uFF08\u7A7A\uFF09");return}if(t.isJson){t.emit(e);return}let r=[],n=(o,i,a)=>{o.forEach((c,l)=>{let u=l===o.length-1,d=u?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",p=c.url?`${sf}${c.url}`:rf(c.id);r.push(`${i}${d}${c.title||c.id} ${p}`),c.children?.length&&a+1<s&&n(c.children,i+(u?" ":"\u2502 "),a+1)})};n(e,"",0),t.emit(r.join(`
53
+ `))}function af(t,e,s=null){if(t.isJson){let r={};for(let[n,o]of e)r[n]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,o])=>`${o||r}: ${n??""}`).join(`
54
+ `))}var Oi={title:"\u6807\u9898",name:"\u540D\u79F0",description:"\u63CF\u8FF0",permission:"\u6743\u9650",deleted_at:"\u5220\u9664\u65F6\u95F4",created_at:"\u521B\u5EFA\u65F6\u95F4",time:"\u65F6\u95F4",email:"\u90AE\u7BB1",role:"\u89D2\u8272",members:"\u6210\u5458\u6570",count:"\u6B21\u6570",latest:"\u6700\u8FD1",document:"\u6587\u6863",event:"\u4E8B\u4EF6",collection:"\u96C6\u5408",type:"\u7C7B\u578B",state:"\u72B6\u6001",filename:"\u6587\u4EF6\u540D",size:"\u5927\u5C0F",author:"\u4F5C\u8005",content:"\u5185\u5BB9",icon:"\u56FE\u6807\u540D",keywords:"\u5173\u952E\u8BCD",published:"\u5DF2\u53D1\u5E03"};Di.exports={emitTable:nf,emitTree:of,emitDetails:af,escCell:sn,LABELS:Oi}});var on=k((gx,Li)=>{var{emitTable:Ri,emitDetails:cf,emitTree:lf,LABELS:uf}=rn(),{docUrl:df,colUrl:pf}=ps(),pe=t=>t?.data||[],qt=t=>t?.data?.memberships||t?.data?.groupMemberships||t?.data||[],te=(t,e,s)=>(r,n)=>Ri(r,(t(n)||[]).map(e),{labels:uf,empty:s}),lt=t=>(e,s)=>cf(e,t(s.data)),j=t=>(e,s)=>e.emit(typeof t=="function"?t(s):t),$=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},nn=t=>({id:t.id,title:t.title,url:df(t.urlId||t.id)}),ff={"collection-info":{endpoint:"collections.info",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:t=>({id:t}),render:lt(t=>[["id",t.id],["name",t.name,"\u540D\u79F0"],["description",t.description||"","\u63CF\u8FF0"],["permission",t.permission||"null","\u6743\u9650"],["url",pf(t.urlId||t.id)]])},"collection-members":{endpoint:"collections.memberships",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:(t,e)=>{let s={id:t};return $(e,"--query")&&(s.query=$(e,"--query")),$(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:te(qt,t=>({userId:t.userId||"",name:t.user?.name||"",permission:t.permission||""}),"\u6682\u65E0\u6210\u5458")},"collection-add-user":{endpoint:"collections.add_user",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,userId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:j("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u96C6\u5408")},"collection-remove-user":{endpoint:"collections.remove_user",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:j("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7528\u6237")},"collection-add-group":{endpoint:"collections.add_group",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,groupId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:j("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u96C6\u5408")},"collection-remove-group":{endpoint:"collections.remove_group",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,groupId:e[1]}),expectOk:!0,render:j("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7FA4\u7EC4")},"collection-group-members":{endpoint:"collections.group_memberships",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:t=>({id:t}),render:te(qt,t=>({groupId:t.groupId||"",name:t.group?.name||"",permission:t.permission||""}),"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458")},"collection-export":{endpoint:"collections.export",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:(t,e)=>{let s={id:t};return $(e,"--format")&&(s.format=$(e,"--format")),s},render:j(t=>`\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${t.data?.id||""}`)},"export-all":{endpoint:"collections.export_all",body:(t,e)=>{let s={};return $(e,"--format")&&(s.format=$(e,"--format")),s},render:j(t=>`\u5168\u91CF\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${t.data?.id||""}`)},"collection-move":{endpoint:"collections.move",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u76EE\u6807 index\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,index:e[1]}),render:j("\u96C6\u5408\u5DF2\u79FB\u52A8")},archived:{endpoint:"documents.archived",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--sort")&&(s.sort=$(e,"--sort")),$(e,"--direction")&&(s.direction=$(e,"--direction")),s},render:te(pe,nn,"\u6682\u65E0\u5DF2\u5F52\u6863\u6587\u6863")},deleted:{endpoint:"documents.deleted",body:(t,e)=>{let s={};return $(e,"--sort")&&(s.sort=$(e,"--sort")),$(e,"--direction")&&(s.direction=$(e,"--direction")),s},render:te(pe,t=>({id:t.id,title:t.title,deleted_at:t.deletedAt||""}),"\u6682\u65E0\u5DF2\u5220\u9664\u6587\u6863")},insights:{endpoint:"documents.insights",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>{let s={id:t};return $(e,"--start-date")&&(s.startDate=$(e,"--start-date")),$(e,"--end-date")&&(s.endDate=$(e,"--end-date")),s},render:te(pe,t=>({userId:t.userId||"",name:t.user?.name||"",time:t.createdAt||""}),"\u6682\u65E0\u8BBF\u95EE\u6570\u636E")},export:{endpoint:"documents.export",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>({id:t,includeChildDocuments:e.includes("--include-children")}),render:(t,e)=>{let s=e.data;t.emit(s)}},"search-titles":{endpoint:"documents.search_titles",req:"\u8BF7\u6307\u5B9A\u641C\u7D22\u5173\u952E\u8BCD",body:(t,e)=>({query:[t,...e.slice(1)].join(" ")}),render:te(pe,nn,"\u672A\u627E\u5230\u5339\u914D\u6807\u9898")},duplicate:{endpoint:"documents.duplicate",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",resolve:[{flag:"--collection",kind:"col"},{flag:"--parent",kind:"doc"}],body:(t,e)=>{let s={id:t};return $(e,"--title")&&(s.title=$(e,"--title")),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--parent")&&(s.parentDocumentId=$(e,"--parent")),e.includes("--recursive")&&(s.recursive=!0),e.includes("--publish")&&(s.publish=!0),s},render:j(t=>{let e=(t.data?.documents||[])[0];return e?`\u6587\u6863\u5DF2\u590D\u5236: ${e.id} \u2014 ${e.title}`:"\u6587\u6863\u5DF2\u590D\u5236"})},unpublish:{endpoint:"documents.unpublish",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:j("\u6587\u6863\u5DF2\u53D6\u6D88\u53D1\u5E03")},templatize:{endpoint:"documents.templatize",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={id:t,publish:!0};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:j(t=>`\u5DF2\u8F6C\u4E3A\u6A21\u677F: ${t.data.id}`)},"doc-members":{endpoint:"documents.memberships",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:te(qt,t=>({userId:t.userId||"",name:t.user?.name||"",permission:t.permission||""}),"\u6682\u65E0\u6210\u5458")},"doc-add-user":{endpoint:"documents.add_user",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,userId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:j("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u6587\u6863")},"doc-remove-user":{endpoint:"documents.remove_user",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:j("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7528\u6237")},"doc-add-group":{endpoint:"documents.add_group",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s={id:t,groupId:e[1]};return $(e,"--permission")&&(s.permission=$(e,"--permission")),s},render:j("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u6587\u6863")},"doc-remove-group":{endpoint:"documents.remove_group",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,groupId:e[1]}),expectOk:!0,render:j("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7FA4\u7EC4")},"doc-group-members":{endpoint:"documents.group_memberships",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:te(qt,t=>({groupId:t.groupId||"",name:t.group?.name||"",permission:t.permission||""}),"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458")},"empty-trash":{endpoint:"documents.empty_trash",body:()=>({}),expectOk:!0,render:j("\u56DE\u6536\u7AD9\u5DF2\u6E05\u7A7A")},"sub-docs":{endpoint:"documents.documents",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({id:t}),render:(t,e)=>lf(t,e.data?.children||[])},shares:{endpoint:"shares.list",resolve:[{flag:"--document",kind:"doc"}],body:(t,e)=>{let s={};return $(e,"--document")&&(s.documentId=$(e,"--document")),s},render:te(pe,t=>({shareId:t.id,document:t.documentTitle||t.documentId||"",published:t.published?"\u662F":"\u5426",url:t.url||""}),"\u6682\u65E0\u5206\u4EAB")},"share-info":{endpoint:"shares.info",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF0C\u6765\u81EA shares \u5217\u8868\uFF09",body:t=>({id:t}),render:lt(t=>[["id",t.id],["document",t.documentTitle||t.documentId||"","\u6587\u6863"],["published",t.published?"\u662F":"\u5426","\u5DF2\u53D1\u5E03"],["url",t.url||""]])},share:{endpoint:"shares.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:(t,e)=>({documentId:t,published:e.includes("--published"),includeChildDocuments:e.includes("--include-children")}),render:j(t=>`\u5206\u4EAB\u5DF2\u521B\u5EFA: ${t.data.id}
55
+ ${t.data.url||""}`)},"share-update":{endpoint:"shares.update",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return e.includes("--published")&&(s.published=!0),e.includes("--no-published")&&(s.published=!1),e.includes("--include-children")&&(s.includeChildDocuments=!0),s},render:j("\u5206\u4EAB\u5DF2\u66F4\u65B0")},unshare:{endpoint:"shares.revoke",req:"\u8BF7\u6307\u5B9A\u5206\u4EAB id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u5206\u4EAB\u5DF2\u64A4\u9500")},users:{endpoint:"users.list",body:(t,e)=>{let s={};return $(e,"--query")&&(s.query=$(e,"--query")),$(e,"--filter")&&(s.filter=$(e,"--filter")),s},render:te(pe,t=>({id:t.id,name:t.name,email:t.email||"",role:t.role||""}),"\u6682\u65E0\u7528\u6237")},"user-info":{endpoint:"users.info",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:lt(t=>[["id",t.id],["name",t.name,"\u59D3\u540D"],["email",t.email||"","\u90AE\u7BB1"],["role",t.role||"","\u89D2\u8272"]])},invite:{endpoint:"users.invite",reqArgs:(t,e)=>!($(e,"--email")||t)&&"\u8BF7\u6307\u5B9A\u90AE\u7BB1\uFF08\u7B2C\u4E00\u4E2A\u53C2\u6570\u6216 --email\uFF09",body:(t,e)=>{let s=$(e,"--email")||t,r=$(e,"--name")||e[1],n=$(e,"--role")||e[2];return{invites:[{email:s,name:r,role:n}]}},render:(t,e)=>{let s=e.data||[];if(!s.length)return t.emit("\u9080\u8BF7\u5DF2\u53D1\u9001");Ri(t,s.map(r=>({id:r.id,email:r.email||"",name:r.name||""})))}},"user-update-role":{endpoint:"users.update_role",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u89D2\u8272\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF1Aadmin|member|viewer\uFF09",body:(t,e)=>({id:t,role:e[1]}),render:j("\u7528\u6237\u89D2\u8272\u5DF2\u66F4\u65B0")},"user-suspend":{endpoint:"users.suspend",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:j("\u7528\u6237\u5DF2\u6682\u505C")},"user-activate":{endpoint:"users.activate",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:j("\u7528\u6237\u5DF2\u6FC0\u6D3B")},groups:{endpoint:"groups.list",body:(t,e)=>{let s={};return $(e,"--query")&&(s.query=$(e,"--query")),s},render:te(pe,t=>({id:t.id,name:t.name,members:t.memberCount??""}),"\u6682\u65E0\u7FA4\u7EC4")},"group-info":{endpoint:"groups.info",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),render:lt(t=>[["id",t.id],["name",t.name,"\u540D\u79F0"],["members",t.memberCount??"","\u6210\u5458"]])},"create-group":{endpoint:"groups.create",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4\u540D\u79F0",body:(t,e)=>({name:[t,...e.slice(1)].join(" ")}),render:j(t=>`\u7FA4\u7EC4\u5DF2\u521B\u5EFA: ${t.data.id} \u2014 ${t.data.name}`)},"update-group":{endpoint:"groups.update",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return $(e,"--name")&&(s.name=$(e,"--name")),s},render:j("\u7FA4\u7EC4\u5DF2\u66F4\u65B0")},"delete-group":{endpoint:"groups.delete",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u7FA4\u7EC4\u5DF2\u5220\u9664")},"group-members":{endpoint:"groups.memberships",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),render:te(qt,t=>({userId:t.userId||t.user?.id||"",name:t.user?.name||""}),"\u6682\u65E0\u6210\u5458")},"group-add-user":{endpoint:"groups.add_user",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),render:j("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u7FA4\u7EC4")},"group-remove-user":{endpoint:"groups.remove_user",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>({id:t,userId:e[1]}),expectOk:!0,render:j("\u5DF2\u4ECE\u7FA4\u7EC4\u79FB\u9664\u7528\u6237")},views:{endpoint:"views.list",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t}),render:te(pe,t=>({userId:t.userId||"",name:t.user?.name||"",count:t.count??"",latest:t.updatedAt||""}),"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55")},view:{endpoint:"views.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t}),render:j("\u6D4F\u89C8\u5DF2\u8BB0\u5F55")},subscriptions:{endpoint:"subscriptions.list",id:"doc",resolve:[{flag:"--collection",kind:"col"}],reqArgs:(t,e)=>!t&&e.indexOf("--collection")===-1&&"\u8BF7\u6307\u5B9A\u6587\u6863 id \u6216 --collection <id>",body:(t,e)=>{let s={event:"documents.update"};return t&&(s.documentId=t),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:te(pe,t=>({id:t.id,document:t.documentId||"",event:t.event||""}),"\u6682\u65E0\u8BA2\u9605")},subscribe:{endpoint:"subscriptions.create",id:"doc",req:"\u8BF7\u6307\u5B9A\u6587\u6863 id",body:t=>({documentId:t,event:"documents.update"}),render:j(t=>`\u5DF2\u8BA2\u9605: ${t.data.id}`)},unsubscribe:{endpoint:"subscriptions.delete",req:"\u8BF7\u6307\u5B9A\u8BA2\u9605 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u5DF2\u53D6\u6D88\u8BA2\u9605")},events:{endpoint:"events.list",resolve:[{flag:"--document",kind:"doc"},{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--actor")&&(s.actorId=$(e,"--actor")),$(e,"--document")&&(s.documentId=$(e,"--document")),$(e,"--collection")&&(s.collectionId=$(e,"--collection")),$(e,"--type")&&(s.name=$(e,"--type")),s},render:te(pe,t=>({event:t.name||"",actorId:t.actorId||"",time:t.createdAt||""}),"\u6682\u65E0\u4E8B\u4EF6")},templates:{endpoint:"templates.list",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return $(e,"--collection")&&(s.collectionId=$(e,"--collection")),s},render:te(pe,t=>({id:t.id,title:t.title,collection:t.collectionId||""}),"\u6682\u65E0\u6A21\u677F")},"template-info":{endpoint:"templates.info",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:t=>({id:t}),render:lt(t=>[["id",t.id],["title",t.title,"\u6807\u9898"],["collection",t.collectionId||"","\u96C6\u5408"]])},"create-template":{endpoint:"templates.create",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",reqArgs:(t,e)=>!e[1]&&"\u8BF7\u6307\u5B9A\u6A21\u677F\u6807\u9898\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09",body:(t,e)=>{let s=$(e,"--text")||"";return{collectionId:t,title:e[1],data:{type:"doc",content:s?[{type:"paragraph",content:[{type:"text",text:s}]}]:[]}}},render:j(t=>`\u6A21\u677F\u5DF2\u521B\u5EFA: ${t.data.id} \u2014 ${t.data.title}`)},"update-template":{endpoint:"templates.update",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};$(e,"--title")&&(s.title=$(e,"--title"));let r=$(e,"--text");return r!==void 0&&(s.data={type:"doc",content:[{type:"paragraph",content:[{type:"text",text:r}]}]}),s},render:j("\u6A21\u677F\u5DF2\u66F4\u65B0")},"delete-template":{endpoint:"templates.delete",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u6A21\u677F\u5DF2\u5220\u9664")},"duplicate-template":{endpoint:"templates.duplicate",req:"\u8BF7\u6307\u5B9A\u6A21\u677F id\uFF08UUID\uFF09",body:(t,e)=>{let s={id:t};return $(e,"--title")&&(s.title=$(e,"--title")),s},render:j(t=>`\u6A21\u677F\u5DF2\u590D\u5236: ${t.data.id} \u2014 ${t.data.title}`)},"file-ops":{endpoint:"fileOperations.list",body:(t,e)=>{let s={};return $(e,"--type")&&(s.type=$(e,"--type")),s},render:te(pe,t=>({id:t.id,type:t.type||"",state:t.state||"",time:t.createdAt||""}),"\u6682\u65E0\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55")},"file-op-info":{endpoint:"fileOperations.info",req:"\u8BF7\u6307\u5B9A\u6587\u4EF6\u64CD\u4F5C id\uFF08UUID\uFF09",body:t=>({id:t}),render:lt(t=>[["id",t.id],["type",t.type||"","\u7C7B\u578B"],["state",t.state||"","\u72B6\u6001"],["time",t.createdAt||"","\u65F6\u95F4"]])},"file-op-delete":{endpoint:"fileOperations.delete",req:"\u8BF7\u6307\u5B9A\u6587\u4EF6\u64CD\u4F5C id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55\u5DF2\u5220\u9664")},reactions:{endpoint:"reactions.list",req:"\u8BF7\u6307\u5B9A\u8BC4\u8BBA id\uFF08UUID\uFF09",body:t=>({commentId:t}),render:te(pe,t=>({emoji:t.emoji||"",userId:t.userId||"",name:t.user?.name||""}),"\u6682\u65E0\u53CD\u5E94")},attachments:{endpoint:"attachments.list",id:"doc",body:t=>t?{documentId:t}:{},render:te(pe,t=>({id:t.id,filename:t.name,type:t.contentType||"",size:t.size?`${Math.round(t.size/1024)}KB`:"",url:t.url||""}),"\u6682\u65E0\u9644\u4EF6")},"delete-attachment":{endpoint:"attachments.delete",req:"\u8BF7\u6307\u5B9A\u9644\u4EF6 id\uFF08UUID\uFF09",body:t=>({id:t}),expectOk:!0,render:j("\u9644\u4EF6\u5DF2\u5220\u9664")}};Li.exports={COMMANDS:ff,list:te,details:lt,ok:j,flag:$,items:pe,memberships:qt,docRow:nn}});var Ni=k((yx,Pi)=>{var mf=[{name:"academicCap",keywords:"\u5B66\u4E60 \u6559\u5B66 \u8BFE\u7A0B \u6307\u5357 \u6559\u7A0B \u57F9\u8BAD \u5165\u95E8"},{name:"beaker",keywords:"\u5B9E\u9A8C\u5BA4 \u7814\u7A76 \u5B9E\u9A8C \u6D4B\u8BD5"},{name:"bicycle",keywords:"\u81EA\u884C\u8F66 \u9A91\u884C"},{name:"bookmark",keywords:"\u4E66\u7B7E \u6536\u85CF"},{name:"browser",keywords:"\u6D4F\u89C8\u5668 \u7F51\u9875 \u5E94\u7528"},{name:"buildingBlocks",keywords:"\u79EF\u6728 \u6A21\u5757 \u4EA7\u54C1 \u539F\u578B"},{name:"camera",keywords:"\u76F8\u673A \u7167\u7247 \u56FE\u7247"},{name:"carrot",keywords:"\u98DF\u7269 \u852C\u83DC \u519C\u4EA7\u54C1"},{name:"clock",keywords:"\u65F6\u949F \u65F6\u95F4"},{name:"cloud",keywords:"\u4E91 \u4E91\u670D\u52A1 \u57FA\u7840\u8BBE\u65BD"},{name:"code",keywords:"\u4EE3\u7801 \u5F00\u53D1 \u7F16\u7A0B \u5DE5\u7A0B API"},{name:"coins",keywords:"\u91D1\u5E01 \u91D1\u94B1 \u8D22\u52A1 \u9500\u552E \u6536\u5165 \u73B0\u91D1"},{name:"collection",keywords:"\u96C6\u5408 \u6587\u4EF6\u5939"},{name:"database",keywords:"\u6570\u636E\u5E93 \u670D\u52A1\u5668 \u8FD0\u7EF4"},{name:"done",keywords:"\u5B8C\u6210 \u6210\u529F \u52FE\u9009 \u7ED3\u675F"},{name:"email",keywords:"\u90AE\u4EF6 \u90AE\u7BB1"},{name:"eye",keywords:"\u773C\u775B \u67E5\u770B \u9884\u89C8"},{name:"feedback",keywords:"\u53CD\u9988 \u5E2E\u52A9 \u652F\u6301 FAQ"},{name:"flame",keywords:"\u706B\u7130 \u70ED\u95E8"},{name:"globe",keywords:"\u5730\u7403 \u7FFB\u8BD1 \u56FD\u9645\u5316"},{name:"graph",keywords:"\u56FE\u8868 \u5206\u6790 \u6570\u636E \u7EDF\u8BA1"},{name:"hashtag",keywords:"\u6807\u7B7E \u8BDD\u9898 \u793E\u4EA4\u5A92\u4F53"},{name:"icecream",keywords:"\u51B0\u6DC7\u6DCB \u751C\u70B9 \u98DF\u7269"},{name:"image",keywords:"\u56FE\u7247 \u56FE\u50CF \u7167\u7247"},{name:"info",keywords:"\u4FE1\u606F \u8BF4\u660E"},{name:"internet",keywords:"\u7F51\u7EDC \u5168\u7403 \u4E92\u8054\u7F51"},{name:"leaf",keywords:"\u53F6\u5B50 \u690D\u7269 \u81EA\u7136 \u751F\u6001 \u73AF\u5883"},{name:"letter",keywords:"\u5B57\u6BCD \u4FE1\u4EF6"},{name:"library",keywords:"\u56FE\u4E66\u9986 \u6587\u5E93 \u5F52\u6863"},{name:"lightbulb",keywords:"\u706F\u6CE1 \u60F3\u6CD5 \u521B\u610F"},{name:"lightning",keywords:"\u95EA\u7535 \u5FEB\u901F"},{name:"math",keywords:"\u6570\u5B66 \u516C\u5F0F"},{name:"moon",keywords:"\u6708\u4EAE \u591C\u665A \u6697\u8272"},{name:"notepad",keywords:"\u8BB0\u4E8B\u672C \u7B14\u8BB0 \u65E5\u5FD7 \u5199\u4F5C"},{name:"padlock",keywords:"\u9501 \u79C1\u5BC6 \u5B89\u5168 \u8BA4\u8BC1 \u6743\u9650"},{name:"palette",keywords:"\u8C03\u8272\u677F \u8BBE\u8BA1 \u827A\u672F \u54C1\u724C"},{name:"pencil",keywords:"\u94C5\u7B14 \u5199\u4F5C \u535A\u5BA2 \u6587\u7AE0"},{name:"plane",keywords:"\u98DE\u673A \u65C5\u884C \u51FA\u884C \u5047\u671F"},{name:"promote",keywords:"\u63A8\u5E7F \u8425\u9500 \u5BA3\u4F20"},{name:"question",keywords:"\u95EE\u9898 \u5E2E\u52A9 \u652F\u6301 FAQ"},{name:"ramen",keywords:"\u62C9\u9762 \u6C64 \u98DF\u7269 \u9910\u996E"},{name:"server",keywords:"\u670D\u52A1\u5668 \u8FD0\u7EF4 \u57FA\u7840\u8BBE\u65BD"},{name:"shapes",keywords:"\u5F62\u72B6 \u79EF\u6728 \u73A9\u5177"},{name:"smiley",keywords:"\u7B11\u8138 \u8868\u60C5 \u5F00\u5FC3"},{name:"sport",keywords:"\u8FD0\u52A8 \u6237\u5916 \u6E38\u620F"},{name:"sun",keywords:"\u592A\u9633 \u767D\u5929 \u5929\u6C14"},{name:"target",keywords:"\u76EE\u6807 \u9500\u552E \u6307\u6807"},{name:"team",keywords:"\u56E2\u961F \u7EC4\u7EC7 \u529E\u516C\u5BA4"},{name:"terminal",keywords:"\u7EC8\u7AEF \u547D\u4EE4\u884C \u4EE3\u7801"},{name:"thumbsup",keywords:"\u70B9\u8D5E \u6536\u85CF \u793E\u4EA4 \u6295\u7968"},{name:"tools",keywords:"\u5DE5\u5177 \u8BBE\u7F6E \u914D\u7F6E"},{name:"truck",keywords:"\u5361\u8F66 \u8FD0\u8F93 \u7269\u6D41"},{name:"vehicle",keywords:"\u8F66\u8F86 \u4EA4\u901A \u51FA\u884C"},{name:"warning",keywords:"\u8B66\u544A \u63D0\u793A \u9519\u8BEF"}];Pi.exports={ICON_LIST:mf}});var ln=k((_x,Zi)=>{var Vs=require("fs"),fs=require("path"),{docUrl:jt,colUrl:an,errorMessage:hf}=ps(),{emitTable:De,emitTree:gf,emitDetails:ms}=rn(),{ICON_LIST:qi}=Ni(),se=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},yf=(t,e=[])=>{let s=[];for(let r=0;r<t.length;r++){if(t[r].startsWith("--")){e.includes(t[r])&&r++;continue}s.push(t[r])}return s};async function G(t,e,s,{allowNoData:r=!1}={}){let n=await t.http.postJson(e,s,{allowNoData:r});if(!n.ok){t.ctx.fail(hf(n.body),void 0);let o=new Error("__handled__");throw o.handled=!0,o}return n.json}var Ws=t=>({id:t.id,title:t.title,url:jt(t.urlId||t.id)});async function _f(t){let{ctx:e,http:s,resolver:r,arg:n,args:o}=t,i=o.indexOf("-d"),a=i!==-1?parseInt(o[i+1],10):null;if(!n){let u=await G(t,"collections.list",{});return De(e,(u.data||[]).filter(d=>!d?.isShared).map(d=>({id:d.id,name:d.name,description:d.description||"",url:an(d.urlId||d.id)})),"\u6682\u65E0\u96C6\u5408"),0}let c=await r.toColUuid(n);if(a===null){let u=await G(t,"documents.list",{collectionId:c,sort:"updatedAt",direction:"DESC"});return De(e,(u.data||[]).map(Ws),"\u6682\u65E0\u6587\u6863"),0}let l=await G(t,"collections.documents",{id:c});return gf(e,l.data||[],a===-1?1/0:a),0}async function wf(t){let{ctx:e,arg:s}=t,r=[...t.args],n=(_,b)=>{let x=r.indexOf(_);if(x===-1)return b;let P=r[x+1];return r.splice(x,2),P??b},o=n("--permission","read_write"),i=n("--icon"),a=n("--color"),c=n("--sort-field"),l=n("--sort-direction"),u=n("--index"),d=s||r[0];if(!d)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408\u540D\u79F0",'\u7528\u6CD5: coder wiki create-collection "<\u540D\u79F0>" [\u63CF\u8FF0]'),1;let p=r.slice(1).filter(_=>!_.startsWith("--")).join(" "),h={name:d,description:p,sharing:!0};h.permission=o==="null"||o==="none"?null:o,i&&(h.icon=i),a&&(h.color=a),(c||l)&&(h.sort={field:c||"index",direction:l||"asc"}),u&&(h.index=u);let g=await G(t,"collections.create",h);return ms(e,[["collection",`${g.data.id} \u2014 ${g.data.name}`,"\u96C6\u5408\u5DF2\u521B\u5EFA"],["url",an(g.data.urlId||g.data.id)]]),0}async function bf(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki list \u67E5\u770B\u96C6\u5408"),1;let i={id:await s.toColUuid(r)};if(se(n,"--name")&&(i.name=se(n,"--name")),se(n,"--description")&&(i.description=se(n,"--description")),n.indexOf("--permission")!==-1){let c=se(n,"--permission");i.permission=c==="null"||c==="none"?null:c}if(se(n,"--color")&&(i.color=se(n,"--color")),n.indexOf("--sharing")!==-1&&(i.sharing=se(n,"--sharing")==="true"),Object.keys(i).length<=1)return e.fail("\u8BF7\u81F3\u5C11\u6307\u5B9A\u4E00\u4E2A\u8981\u66F4\u65B0\u7684\u5B57\u6BB5","\u53EF\u7528: --name --description --permission --color --sharing"),1;let a=await G(t,"collections.update",i);return e.emit(`\u96C6\u5408\u5DF2\u66F4\u65B0: ${a.data.id} \u2014 ${a.data.name}`),0}async function cn(t,e,s,{allowNoData:r=!1}={}){let{ctx:n,resolver:o,arg:i}=t;if(!i)return n.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki list \u67E5\u770B\u96C6\u5408"),1;let a=await o.toColUuid(i);return await G(t,e,{id:a},{allowNoData:r}),n.emit(s),0}var kf=t=>cn(t,"collections.delete","\u96C6\u5408\u5DF2\u5220\u9664",{allowNoData:!0}),xf=t=>cn(t,"collections.archive","\u96C6\u5408\u5DF2\u5F52\u6863"),Sf=t=>cn(t,"collections.restore","\u96C6\u5408\u5DF2\u6062\u590D");async function If(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / \u6D4F\u89C8\u5668 URL"),1;let n=await s.toDocUuid(r),i=(await G(t,"documents.info",{id:n})).data;return ms(e,[["title",i.title,"\u6807\u9898"],["id",i.id],["collection",i.collectionId,"\u96C6\u5408"],["updated_at",i.updatedAt,"\u66F4\u65B0"],["url",jt(i.urlId||i.id)]]),!e.isJson&&i.text&&e.emit(`
56
+ ${i.text}`),0}function Mi(t,e){let s=fs.resolve(e);if(!Vs.existsSync(s))return t.ctx.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),null;let r=Vs.readFileSync(s,"utf8"),n=r.match(/^#\s+(.+)/m);return n?{title:n[1].trim(),text:r.replace(/^#\s+.+\n?/,"").trimStart()}:(t.ctx.fail("\u6587\u4EF6\u7F3A\u5C11 H1 \u6807\u9898\uFF08# \u6807\u9898\uFF09","\u5728 Markdown \u9876\u90E8\u52A0\u4E00\u884C # \u6807\u9898"),null)}async function Cf(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki publish <\u96C6\u5408> <\u6807\u9898> [\u6B63\u6587] | <\u96C6\u5408> --file <path> [--parent <doc>] [--index <n>] [--after <doc>]"),1;let o=await s.toColUuid(r),i,a,c=se(n,"--parent")?await s.toDocUuid(se(n,"--parent")):void 0,l=await Bi(t,o);if(!l.ok)return 1;let u=l.index;l.parentDocumentId&&!c&&(c=l.parentDocumentId);let d=!1;if(n.indexOf("--file")!==-1){let x=se(n,"--file");d=x&&fs.extname(x).toLowerCase()===".mdx";let P=Mi(t,x);if(!P)return 1;({title:i,text:a}=P)}else if(i=n[1],a=n.slice(2).join(" "),!i)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki publish <\u96C6\u5408> <\u6807\u9898> [\u6B63\u6587]"),1;let p={collectionId:o,title:i,text:"",publish:!0};c&&(p.parentDocumentId=c),d&&(p.format="mdx");let g=(await G(t,"documents.create",p)).data.id,_={id:g,title:i,text:a,publish:!0};d&&(_.format="mdx");let b=await G(t,"documents.update",_);if(u!==void 0){let x={id:g,collectionId:o,index:u};c&&(x.parentDocumentId=c),await G(t,"documents.move",x)}return ms(e,[["title",b.data.title,"\u6587\u6863\u5DF2\u53D1\u5E03"],["id",g],["url",jt(b.data.urlId||g)]]),0}function Gi(t,e,s=null){if(!Array.isArray(t))return null;for(let r=0;r<t.length;r++){if(t[r].id===e)return{index:r,parentDocumentId:s};if(t[r].children?.length){let n=Gi(t[r].children,e,t[r].id);if(n)return n}}return null}async function Bi(t,e){let{ctx:s,resolver:r,args:n}=t,o=se(n,"--after");if(n.indexOf("--after")!==-1){if(!o)return s.fail("\u8BF7\u6307\u5B9A --after \u7684\u6587\u6863","\u4F20 UUID / urlId / URL"),{ok:!1};let i=await r.toDocUuid(o),a=await G(t,"collections.documents",{id:e}),c=Gi(a.data,i);return c?{ok:!0,index:c.index+1,parentDocumentId:c.parentDocumentId}:(s.fail(`\u96C6\u5408\u4E2D\u672A\u627E\u5230\u6587\u6863 ${o}`,"\u786E\u8BA4\u8BE5\u6587\u6863\u5C5E\u4E8E\u6B64\u96C6\u5408"),{ok:!1})}if(n.indexOf("--index")!==-1){let i=parseInt(se(n,"--index"),10);return isNaN(i)||i<0?(s.fail("--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570","\u4F8B\u5982 --index 3"),{ok:!1}):{ok:!0,index:i}}return{ok:!0}}async function Ef(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki update <\u6587\u6863> <\u6807\u9898> [\u6B63\u6587] | <\u6587\u6863> --file <path>"),1;let o=await s.toDocUuid(r),i,a,c=!1;if(n.indexOf("--file")!==-1){let d=se(n,"--file");c=d&&fs.extname(d).toLowerCase()===".mdx";let p=Mi(t,d);if(!p)return 1;({title:i,text:a}=p)}else if(i=n[1],a=n.slice(2).join(" "),!i)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki update <\u6587\u6863> <\u6807\u9898> [\u6B63\u6587]"),1;let l={id:o,title:i,publish:!0};a&&(l.text=a),c&&(l.format="mdx");let u=await G(t,"documents.update",l);return e.emit(`\u6587\u6863\u5DF2\u66F4\u65B0: ${u.data.title}`),0}async function Af(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let o=await s.toDocUuid(r),i=n.includes("--permanent");return await G(t,"documents.delete",{id:o,...i?{permanent:!0}:{}},{allowNoData:!0}),e.emit(`\u6587\u6863\u5DF2${i?"\u6C38\u4E45":""}\u5220\u9664`),0}async function $f(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki move <\u6587\u6863> [\u96C6\u5408] [\u7236\u6587\u6863] [--index <n>] [--after <doc>]"),1;let o=await s.toDocUuid(r),i=yf(n,["--index","--after"]),a=i[1]?await s.toColUuid(i[1]):void 0,c=i[2]?await s.toDocUuid(i[2]):void 0;a||(a=(await G(t,"documents.info",{id:o})).data.collectionId);let l=await Bi(t,a);if(!l.ok)return 1;let u=l.index;l.parentDocumentId&&c===void 0&&(c=l.parentDocumentId);let d={id:o,collectionId:a,index:u!==void 0?u:0};return c!==void 0&&(d.parentDocumentId=c),await G(t,"documents.move",d),e.emit("\u6587\u6863\u5DF2\u79FB\u52A8"),0}async function Tf(t,e,s){let{ctx:r,resolver:n,arg:o}=t;if(!o)return r.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await n.toDocUuid(o);return await G(t,e,{id:i}),r.emit(s),0}var Uf=t=>Tf(t,"documents.archive","\u6587\u6863\u5DF2\u5F52\u6863");async function vf(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let i={id:await s.toDocUuid(r)};return se(n,"--revision")&&(i.revisionId=se(n,"--revision")),se(n,"--collection")&&(i.collectionId=await s.toColUuid(se(n,"--collection"))),await G(t,"documents.restore",i),e.emit("\u6587\u6863\u5DF2\u6062\u590D"),0}async function Of(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let n=await s.toDocUuid(r),o=await G(t,"revisions.list",{documentId:n,sort:"createdAt",direction:"DESC"});return De(e,(o.data||[]).map(i=>({revisionId:i.id,name:i.name||"",created_at:i.createdAt})),"\u6682\u65E0\u5386\u53F2\u7248\u672C"),0}async function Df(t){let{ctx:e,arg:s}=t;if(!s)return e.fail("\u8BF7\u6307\u5B9A\u7248\u672C id\uFF08UUID\uFF0C\u6765\u81EA revisions \u5217\u8868\uFF09","coder wiki revisions <\u6587\u6863>"),1;let n=(await G(t,"revisions.info",{id:s})).data;return ms(e,[["revisionId",n.id,"\u7248\u672C id"],["name",n.name||"","\u7248\u672C\u540D"],["documentId",n.documentId,"\u6587\u6863 id"],["created_at",n.createdAt,"\u521B\u5EFA\u65F6\u95F4"]]),!e.isJson&&n.text&&e.emit(`
57
+ ${n.text}`),0}async function Rf(t){let e=await G(t,"documents.drafts",{sort:"updatedAt",direction:"DESC"});return De(t.ctx,(e.data||[]).map(Ws),"\u6682\u65E0\u8349\u7A3F"),0}async function Lf(t){let e=await G(t,"documents.viewed",{sort:"updatedAt",direction:"DESC"});return De(t.ctx,(e.data||[]).map(Ws),"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55"),0}async function Pf(t){let{ctx:e,arg:s,args:r}=t;if(!s)return e.fail("\u8BF7\u6307\u5B9A\u641C\u7D22\u5173\u952E\u8BCD","coder wiki search <\u5173\u952E\u8BCD>"),1;let n=[s,...r.slice(1)].join(" "),i=(await G(t,"documents.search",{query:n,snippetMinWords:20,snippetMaxWords:30})).data||[];return De(e,i.map(a=>Ws(a.document||a)),`\u6CA1\u6709\u627E\u5230\u4E0E "${n}" \u76F8\u5173\u7684\u6587\u6863`),0}async function Nf(t){let{ctx:e}=t,s=await G(t,"stars.list",{}),r=s.data?.stars||[],n={};for(let o of s.data?.documents||[])n[o.id]=o;return De(e,r.map(o=>{let i=o.documentId?n[o.documentId]:null;return{starId:o.id,title:i?.title||o.collectionId||o.documentId||"",url:i?jt(i.urlId||i.id):o.collectionId?an(o.collectionId):o.documentId?jt(o.documentId):""}}),"\u6682\u65E0\u6536\u85CF"),0}async function qf(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6216\u96C6\u5408 id","\u96C6\u5408\u7528 --collection \u6807\u8BB0"),1;let o=n.includes("--collection"),i=o?await s.toColUuid(r):await s.toDocUuid(r);return await G(t,"stars.create",o?{collectionId:i}:{documentId:i}),e.emit("\u5DF2\u6536\u85CF"),0}async function jf(t){let{ctx:e,arg:s}=t;return s?(await G(t,"stars.delete",{id:s},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u6536\u85CF"),0):(e.fail("\u8BF7\u6307\u5B9A\u6536\u85CF id\uFF08starId\uFF0C\u6765\u81EA stars \u5217\u8868\uFF09","coder wiki stars"),1)}async function Mf(t){let{ctx:e,resolver:s,arg:r}=t,n=r?{collectionId:await s.toColUuid(r)}:{},o=await G(t,"pins.list",n),i=o.data?.pins||[],a={};for(let c of o.data?.documents||[])a[c.id]=c;return De(e,i.map(c=>{let l=c.documentId?a[c.documentId]:null;return{pinId:c.id,title:l?.title||c.documentId,url:jt(l?.urlId||c.documentId)}}),"\u6682\u65E0\u7F6E\u9876"),0}async function Gf(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","coder wiki pin <\u6587\u6863> [\u96C6\u5408]"),1;let i={documentId:await s.toDocUuid(r)};n[1]&&(i.collectionId=await s.toColUuid(n[1]));let a=await G(t,"pins.create",i);return e.emit(`\u5DF2\u7F6E\u9876: ${a.data.id}`),0}async function Bf(t){let{ctx:e,arg:s}=t;return s?(await G(t,"pins.delete",{id:s},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u7F6E\u9876"),0):(e.fail("\u8BF7\u6307\u5B9A\u7F6E\u9876 id\uFF08pinId\uFF0C\u6765\u81EA pins \u5217\u8868\uFF09","coder wiki pins"),1)}async function Ff(t){let{ctx:e,resolver:s,arg:r}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let n=await s.toDocUuid(r),i=(await G(t,"comments.list",{documentId:n,sort:"createdAt",direction:"ASC"})).data||[];return i.length?(e.isJson?De(e,i.map(a=>({id:a.id,author:a.createdBy?.name||"?",content:ji(a.data)}))):e.emit(i.map(a=>` [${a.id}] ${a.createdBy?.name||"?"}: ${ji(a.data)}`).join(`
58
+ `)),0):(e.emit("\u6682\u65E0\u8BC4\u8BBA"),0)}async function Zf(t){let{ctx:e,resolver:s,arg:r,args:n}=t,o=n.slice(1).join(" ");if(!r||!o)return e.fail("\u7528\u6CD5: coder wiki comment <\u6587\u6863> <\u5185\u5BB9>","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await s.toDocUuid(r),a=await G(t,"comments.create",{documentId:i,text:o});return e.emit(`\u8BC4\u8BBA\u5DF2\u53D1\u5E03: ${a.data.id}`),0}function ji(t){return t?.content?t.content.flatMap(e=>e.content||[]).filter(e=>e.type==="text").map(e=>e.text).join(""):""}function Vf(t){let{ctx:e,arg:s,args:r}=t,n=se(r,"--query")||s||"",o=n?qi.filter(i=>i.name.toLowerCase().includes(n.toLowerCase())||i.keywords.toLowerCase().includes(n.toLowerCase())):qi;return o.length?(De(e,o.map(i=>({icon:i.name,keywords:i.keywords}))),e.isJson||e.emit(`
59
59
  \u7528\u6CD5: coder wiki create-collection "<\u540D\u79F0>" --icon ${o[0].name}
60
- \u63D0\u793A: \u4E5F\u53EF\u76F4\u63A5\u7528 emoji\uFF0C\u5982 --icon \u{1F4DA}`),0):(e.emit(`\u6CA1\u6709\u627E\u5230\u4E0E "${n}" \u76F8\u5173\u7684\u56FE\u6807`),0)}async function Mp(t){let{ctx:e,http:s,resolver:r,arg:n,args:o}=t,i=o[1];if(!n||!i)return e.fail("\u7528\u6CD5: coder wiki upload <\u6587\u6863> <\u6587\u4EF6\u8DEF\u5F84>","\u53EF\u4F20 UUID / urlId / URL"),1;let a=await r.toDocUuid(n),c=ls.resolve(i);if(!Ms.existsSync(c))return e.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),1;let l=Ms.readFileSync(c),u=ls.basename(c),d=Bp(c),m=await M(t,"attachments.create",{name:u,documentId:a,size:l.length,contentType:d,preset:"documentAttachment"}),{uploadUrl:h,form:g,attachment:_}=m.data,w=await Fp(h,g,l,u,d);return w.status>=300?(e.fail(`\u4E0A\u4F20\u5931\u8D25 (HTTP ${w.status}): ${w.body.slice(0,200)}`,"\u68C0\u67E5\u7F51\u7EDC\u6216\u6587\u4EF6\u5927\u5C0F"),1):(qi(e,_,d),0)}async function Gp(t){let{ctx:e,resolver:s,arg:r,args:n}=t,o=n[1];if(!r||!o)return e.fail("\u7528\u6CD5: coder wiki upload-url <\u6587\u6863> <url>","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await s.toDocUuid(r),a=await M(t,"attachments.createFromUrl",{url:o,documentId:i,preset:"documentAttachment"});return qi(e,a.data,a.data.contentType),0}function qi(t,e,s){let r=(s||"").startsWith("image/")?`![${e.name}](${e.url})`:`[${e.name}](${e.url})`;us(t,[["filename",e.name,"\u9644\u4EF6\u5DF2\u4E0A\u4F20"],["id",e.id],["url",e.url],["markdown",r]])}function Bp(t){let e=t.split(".").pop().toLowerCase();return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",txt:"text/plain",md:"text/markdown",csv:"text/csv",zip:"application/zip",tar:"application/x-tar",gz:"application/gzip",mp4:"video/mp4",mov:"video/quicktime",avi:"video/x-msvideo",mp3:"audio/mpeg",wav:"audio/wav",json:"application/json",xml:"application/xml"}[e]||"application/octet-stream"}function Fp(t,e,s,r,n){return new Promise((o,i)=>{let a=`----FormBoundary${Math.random().toString(36).slice(2)}${Date.now()}`,c=[];for(let[_,w]of Object.entries(e))c.push(Buffer.from(`--${a}\r
60
+ \u63D0\u793A: \u4E5F\u53EF\u76F4\u63A5\u7528 emoji\uFF0C\u5982 --icon \u{1F4DA}`),0):(e.emit(`\u6CA1\u6709\u627E\u5230\u4E0E "${n}" \u76F8\u5173\u7684\u56FE\u6807`),0)}async function Wf(t){let{ctx:e,http:s,resolver:r,arg:n,args:o}=t,i=o[1];if(!n||!i)return e.fail("\u7528\u6CD5: coder wiki upload <\u6587\u6863> <\u6587\u4EF6\u8DEF\u5F84>","\u53EF\u4F20 UUID / urlId / URL"),1;let a=await r.toDocUuid(n),c=fs.resolve(i);if(!Vs.existsSync(c))return e.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),1;let l=Vs.readFileSync(c),u=fs.basename(c),d=zf(c),p=await G(t,"attachments.create",{name:u,documentId:a,size:l.length,contentType:d,preset:"documentAttachment"}),{uploadUrl:h,form:g,attachment:_}=p.data,b=await Jf(h,g,l,u,d);return b.status>=300?(e.fail(`\u4E0A\u4F20\u5931\u8D25 (HTTP ${b.status}): ${b.body.slice(0,200)}`,"\u68C0\u67E5\u7F51\u7EDC\u6216\u6587\u4EF6\u5927\u5C0F"),1):(Fi(e,_,d),0)}async function Kf(t){let{ctx:e,resolver:s,arg:r,args:n}=t,o=n[1];if(!r||!o)return e.fail("\u7528\u6CD5: coder wiki upload-url <\u6587\u6863> <url>","\u53EF\u4F20 UUID / urlId / URL"),1;let i=await s.toDocUuid(r),a=await G(t,"attachments.createFromUrl",{url:o,documentId:i,preset:"documentAttachment"});return Fi(e,a.data,a.data.contentType),0}function Fi(t,e,s){let r=(s||"").startsWith("image/")?`![${e.name}](${e.url})`:`[${e.name}](${e.url})`;ms(t,[["filename",e.name,"\u9644\u4EF6\u5DF2\u4E0A\u4F20"],["id",e.id],["url",e.url],["markdown",r]])}function zf(t){let e=t.split(".").pop().toLowerCase();return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",txt:"text/plain",md:"text/markdown",csv:"text/csv",zip:"application/zip",tar:"application/x-tar",gz:"application/gzip",mp4:"video/mp4",mov:"video/quicktime",avi:"video/x-msvideo",mp3:"audio/mpeg",wav:"audio/wav",json:"application/json",xml:"application/xml"}[e]||"application/octet-stream"}function Jf(t,e,s,r,n){return new Promise((o,i)=>{let a=`----FormBoundary${Math.random().toString(36).slice(2)}${Date.now()}`,c=[];for(let[_,b]of Object.entries(e))c.push(Buffer.from(`--${a}\r
61
61
  Content-Disposition: form-data; name="${_}"\r
62
62
  \r
63
- ${w}\r
63
+ ${b}\r
64
64
  `));let l=Buffer.from(`--${a}\r
65
65
  Content-Disposition: form-data; name="file"; filename="${r}"\r
66
66
  Content-Type: ${n}\r
67
67
  \r
68
68
  `),u=Buffer.from(`\r
69
69
  --${a}--\r
70
- `),d=Buffer.concat([...c,l,s,u]),m=new URL(t),g=(m.protocol==="https:"?require("https"):require("http")).request({hostname:m.hostname,port:m.port||(m.protocol==="https:"?443:80),path:m.pathname+m.search,method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${a}`,"Content-Length":d.length}},_=>{let w="";_.on("data",S=>w+=S),_.on("end",()=>o({status:_.statusCode,body:w}))});g.on("error",i),g.write(d),g.end()})}ji.exports={list:fp,createCollection:pp,updateCollection:mp,deleteCollection:hp,archiveCollection:gp,restoreCollection:yp,get:_p,publish:wp,update:bp,delete:kp,move:xp,archive:Ip,restore:Cp,revisions:Ep,revision:Ap,drafts:$p,recent:Tp,search:Up,stars:vp,star:Op,unstar:Dp,pins:Rp,pin:Lp,unpin:Pp,comments:Np,comment:qp,icons:jp,upload:Mp,uploadUrl:Gp}});var Xi=k((fx,Yi)=>{function Mi(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}var Gi=["agent","auth","pub","update","wiki","team","skills","claude","codex","gemini"],Bi=["--format","--apikey","--help","--version","--install-completion","--show-completion"],nn={pub:["--name","--meta-data","--allow-clone"]},Fi=["login","logout","status"],Zi=["list","current","use","info"],on=["members","groups"];function Vi(){return Ds().AGENT_NAMES}function Wi(t){let e=Fr();return e[t]?Object.keys(e[t]):[]}function Ki(){return qs().SKILLS_SUBCOMMANDS}function zi(){let{COMMANDS:t}=en(),e=rn(),s=Object.keys(t),r=Object.keys(e).filter(n=>typeof e[n]=="function").map(Mi);return Array.from(new Set([...r,...s])).sort()}function Ji(t){let e=t.length?t[t.length-1]:"",s=t.slice(0,-1),r=s[0];if(e.startsWith("-")){let o=[...Bi];return r&&nn[r]&&o.push(...nn[r]),o}if(s[s.length-1]==="--format")return["text","json"];if(s.length===0)return Gi;switch(r){case"agent":return s.length===1?Vi():[];case"auth":return s.length===1?Fi:[];case"skills":return s.length===1?Ki():[];case"wiki":return s.length===1?zi():[];case"team":return s.length===1?[...Zi,...on]:s.length===2&&on.includes(s[1])?Wi(s[1]):[];default:return[]}}function Hi(t){let e=t.length?t[t.length-1]:"",s=Ji(t),r=new Set,n=[];for(let o of s)o.startsWith(e)&&!r.has(o)&&(r.add(o),n.push(o));return n}function Zp(t){let e=t.indexOf("--"),s=e===-1?t:t.slice(e+1),r=Hi(s);return r.length&&process.stdout.write(r.join(`
70
+ `),d=Buffer.concat([...c,l,s,u]),p=new URL(t),g=(p.protocol==="https:"?require("https"):require("http")).request({hostname:p.hostname,port:p.port||(p.protocol==="https:"?443:80),path:p.pathname+p.search,method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${a}`,"Content-Length":d.length}},_=>{let b="";_.on("data",x=>b+=x),_.on("end",()=>o({status:_.statusCode,body:b}))});g.on("error",i),g.write(d),g.end()})}Zi.exports={list:_f,createCollection:wf,updateCollection:bf,deleteCollection:kf,archiveCollection:xf,restoreCollection:Sf,get:If,publish:Cf,update:Ef,delete:Af,move:$f,archive:Uf,restore:vf,revisions:Of,revision:Df,drafts:Rf,recent:Lf,search:Pf,stars:Nf,star:qf,unstar:jf,pins:Mf,pin:Gf,unpin:Bf,comments:Ff,comment:Zf,icons:Vf,upload:Wf,uploadUrl:Kf}});var ra=k((wx,sa)=>{function Vi(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}var Wi=["agent","auth","pub","update","wiki","team","skills","claude","codex","gemini"],Ki=["--format","--apikey","--help","--version","--install-completion","--show-completion"],un={pub:["--name","--meta-data","--allow-clone"]},zi=["login","logout","status"],Ji=["list","current","use","info"],dn=["members","groups"];function Hi(){return qs().AGENT_NAMES}function Yi(t){let e=zr();return e[t]?Object.keys(e[t]):[]}function Xi(){return Fs().SKILLS_SUBCOMMANDS}function Qi(){let{COMMANDS:t}=on(),e=ln(),s=Object.keys(t),r=Object.keys(e).filter(n=>typeof e[n]=="function").map(Vi);return Array.from(new Set([...r,...s])).sort()}function ea(t){let e=t.length?t[t.length-1]:"",s=t.slice(0,-1),r=s[0];if(e.startsWith("-")){let o=[...Ki];return r&&un[r]&&o.push(...un[r]),o}if(s[s.length-1]==="--format")return["text","json"];if(s.length===0)return Wi;switch(r){case"agent":return s.length===1?Hi():[];case"auth":return s.length===1?zi:[];case"skills":return s.length===1?Xi():[];case"wiki":return s.length===1?Qi():[];case"team":return s.length===1?[...Ji,...dn]:s.length===2&&dn.includes(s[1])?Yi(s[1]):[];default:return[]}}function ta(t){let e=t.length?t[t.length-1]:"",s=ea(t),r=new Set,n=[];for(let o of s)o.startsWith(e)&&!r.has(o)&&(r.add(o),n.push(o));return n}function Hf(t){let e=t.indexOf("--"),s=e===-1?t:t.slice(e+1),r=ta(s);return r.length&&process.stdout.write(r.join(`
71
71
  `)+`
72
- `),0}Yi.exports={complete:Zp,candidates:Hi,candidatesFor:Ji,camelToKebab:Mi,TOP_LEVEL:Gi,GLOBAL_OPTIONS:Bi,COMMAND_OPTIONS:nn,AUTH_SUBCOMMANDS:Fi,TEAM_TOP:Zi,TEAM_RESOURCES:on,wikiSubcommands:zi,skillsSubcommands:Ki,teamVerbs:Wi,agentNames:Vi}});var ea=k((px,Qi)=>{function Vp(t="coder"){return`# bash completion for ${t}
72
+ `),0}sa.exports={complete:Hf,candidates:ta,candidatesFor:ea,camelToKebab:Vi,TOP_LEVEL:Wi,GLOBAL_OPTIONS:Ki,COMMAND_OPTIONS:un,AUTH_SUBCOMMANDS:zi,TEAM_TOP:Ji,TEAM_RESOURCES:dn,wikiSubcommands:Qi,skillsSubcommands:Xi,teamVerbs:Yi,agentNames:Hi}});var oa=k((bx,na)=>{function Yf(t="coder"){return`# bash completion for ${t}
73
73
  # \u5B89\u88C5: ${t} --install-completion \u6216 eval "$(${t} --show-completion bash)"
74
74
  _${t}_complete() {
75
75
  local cur words cword
@@ -91,7 +91,7 @@ _${t}_complete() {
91
91
  return 0
92
92
  }
93
93
  complete -F _${t}_complete ${t}
94
- `}Qi.exports={bashScript:Vp}});var sa=k((mx,ta)=>{function Wp(t="coder"){return`# zsh completion for ${t}
94
+ `}na.exports={bashScript:Yf}});var aa=k((kx,ia)=>{function Xf(t="coder"){return`# zsh completion for ${t}
95
95
  _${t}() {
96
96
  local -a line
97
97
  line=("\${words[2,CURRENT]}")
@@ -103,22 +103,22 @@ _${t}() {
103
103
  compadd -- "\${reply[@]}"
104
104
  }
105
105
  compdef _${t} ${t}
106
- `}ta.exports={zshScript:Wp}});var oa=k((hx,na)=>{var Bs=require("fs"),Kp=require("os"),qe=require("path"),{bashScript:zp}=ea(),{zshScript:Jp}=sa(),Fs=["bash","zsh","fish"];function an(){let t=(process.env.SHELL||"").split("/").pop();return Fs.includes(t)?t:"bash"}function cn(t){return t==="bash"?zp():t==="zsh"?Jp():t==="fish"?Hp():null}function Hp(t="coder"){return`# fish completion for ${t}
106
+ `}ia.exports={zshScript:Xf}});var ua=k((xx,la)=>{var Ks=require("fs"),Qf=require("os"),Ge=require("path"),{bashScript:em}=oa(),{zshScript:tm}=aa(),zs=["bash","zsh","fish"];function pn(){let t=(process.env.SHELL||"").split("/").pop();return zs.includes(t)?t:"bash"}function fn(t){return t==="bash"?em():t==="zsh"?tm():t==="fish"?sm():null}function sm(t="coder"){return`# fish completion for ${t}
107
107
  function __${t}_complete
108
108
  set -l tokens (commandline -opc) (commandline -ct)
109
109
  ${t} __complete -- $tokens[2..-1] 2>/dev/null
110
110
  end
111
111
  complete -c ${t} -f -a '(__${t}_complete)'
112
- `}function Yp(t){let e=Kp.homedir();if(t==="bash"){let s=qe.join(e,".coder","completions"),r=qe.join(s,"coder.bash"),n=[qe.join(e,".bashrc"),qe.join(e,".bash_profile")];return{dir:s,file:r,rcs:n,sourceLine:`source "${r}"`}}if(t==="zsh"){let s=qe.join(e,".coder","completions"),r=qe.join(s,"coder.zsh");return{dir:s,file:r,rcs:[qe.join(e,".zshrc")],sourceLine:`autoload -Uz compinit && compinit
113
- source "${r}"`}}if(t==="fish"){let s=qe.join(e,".config","fish","completions"),r=qe.join(s,"coder.fish");return{dir:s,file:r,rcs:[],sourceLine:null}}return null}var ra="# >>> coder completion >>>",Xp="# <<< coder completion <<<";function Qp(t,e){let s="";try{s=Bs.readFileSync(t,"utf8")}catch{s=""}if(s.includes(ra))return!1;let r=`
114
- ${ra}
112
+ `}function rm(t){let e=Qf.homedir();if(t==="bash"){let s=Ge.join(e,".coder","completions"),r=Ge.join(s,"coder.bash"),n=[Ge.join(e,".bashrc"),Ge.join(e,".bash_profile")];return{dir:s,file:r,rcs:n,sourceLine:`source "${r}"`}}if(t==="zsh"){let s=Ge.join(e,".coder","completions"),r=Ge.join(s,"coder.zsh");return{dir:s,file:r,rcs:[Ge.join(e,".zshrc")],sourceLine:`autoload -Uz compinit && compinit
113
+ source "${r}"`}}if(t==="fish"){let s=Ge.join(e,".config","fish","completions"),r=Ge.join(s,"coder.fish");return{dir:s,file:r,rcs:[],sourceLine:null}}return null}var ca="# >>> coder completion >>>",nm="# <<< coder completion <<<";function om(t,e){let s="";try{s=Ks.readFileSync(t,"utf8")}catch{s=""}if(s.includes(ca))return!1;let r=`
114
+ ${ca}
115
115
  ${e}
116
- ${Xp}
117
- `;return Bs.appendFileSync(t,r,"utf8"),!0}function em(t,e){let s=e||an(),r=cn(s);return r?(process.stdout.write(r),0):(t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${Fs.join(" | ")}`),1)}function tm(t,e){let s=e||an(),r=cn(s),n=Yp(s);if(!r||!n)return t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${Fs.join(" | ")}`),1;try{Bs.mkdirSync(n.dir,{recursive:!0}),Bs.writeFileSync(n.file,r,"utf8")}catch(a){return t.fail(`\u65E0\u6CD5\u5199\u5165\u8865\u5168\u811A\u672C: ${a.message}`,`\u68C0\u67E5\u76EE\u5F55\u6743\u9650: ${n.dir}`),1}let o=[];if(n.rcs.length===0)return t.emit([`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${n.file}`,"fish \u4F1A\u81EA\u52A8\u52A0\u8F7D\u8BE5\u76EE\u5F55\uFF0C\u65B0\u5F00\u4E00\u4E2A\u7EC8\u7AEF\u5373\u53EF\u751F\u6548\u3002"].join(`
118
- `)),0;for(let a of n.rcs)try{Qp(a,n.sourceLine)&&o.push(a)}catch(c){return t.fail(`\u65E0\u6CD5\u66F4\u65B0 ${a}: ${c.message}`,"\u53EF\u6539\u7528 --show-completion \u624B\u52A8\u5B89\u88C5"),1}let i=[`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${n.file}`];return o.length?i.push(`\u5DF2\u5728\u4EE5\u4E0B\u6587\u4EF6\u8FFD\u52A0 source: ${o.join(", ")}`):i.push("rc \u4E2D\u5DF2\u5B58\u5728 coder \u8865\u5168\u5757\uFF0C\u672A\u91CD\u590D\u8FFD\u52A0\u3002"),i.push("\u91CD\u5F00\u7EC8\u7AEF\uFF0C\u6216\u8FD0\u884C: "+n.sourceLine.split(`
116
+ ${nm}
117
+ `;return Ks.appendFileSync(t,r,"utf8"),!0}function im(t,e){let s=e||pn(),r=fn(s);return r?(process.stdout.write(r),0):(t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${zs.join(" | ")}`),1)}function am(t,e){let s=e||pn(),r=fn(s),n=rm(s);if(!r||!n)return t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${zs.join(" | ")}`),1;try{Ks.mkdirSync(n.dir,{recursive:!0}),Ks.writeFileSync(n.file,r,"utf8")}catch(a){return t.fail(`\u65E0\u6CD5\u5199\u5165\u8865\u5168\u811A\u672C: ${a.message}`,`\u68C0\u67E5\u76EE\u5F55\u6743\u9650: ${n.dir}`),1}let o=[];if(n.rcs.length===0)return t.emit([`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${n.file}`,"fish \u4F1A\u81EA\u52A8\u52A0\u8F7D\u8BE5\u76EE\u5F55\uFF0C\u65B0\u5F00\u4E00\u4E2A\u7EC8\u7AEF\u5373\u53EF\u751F\u6548\u3002"].join(`
118
+ `)),0;for(let a of n.rcs)try{om(a,n.sourceLine)&&o.push(a)}catch(c){return t.fail(`\u65E0\u6CD5\u66F4\u65B0 ${a}: ${c.message}`,"\u53EF\u6539\u7528 --show-completion \u624B\u52A8\u5B89\u88C5"),1}let i=[`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${n.file}`];return o.length?i.push(`\u5DF2\u5728\u4EE5\u4E0B\u6587\u4EF6\u8FFD\u52A0 source: ${o.join(", ")}`):i.push("rc \u4E2D\u5DF2\u5B58\u5728 coder \u8865\u5168\u5757\uFF0C\u672A\u91CD\u590D\u8FFD\u52A0\u3002"),i.push("\u91CD\u5F00\u7EC8\u7AEF\uFF0C\u6216\u8FD0\u884C: "+n.sourceLine.split(`
119
119
  `).pop()),t.emit(i.join(`
120
- `)),0}na.exports={detectShell:an,scriptFor:cn,showCompletion:em,installCompletion:tm,SUPPORTED:Fs}});var ca=k((gx,aa)=>{var{AGENTS:ia,AGENT_NAMES:ds,isAgentName:sm,launchAgent:rm}=Ds(),nm=new Set(["--help","-h","help"]);function om(t){if(t.isJson){t.emit({usage:"coder agent <name> [args...]",agents:ds.map(r=>({name:r,description:ia[r].description}))});return}let e=["Usage: coder agent <name> [args...]","","Agents:"],s=Math.max(...ds.map(r=>r.length));for(let r of ds)e.push(` ${r.padEnd(s)} ${ia[r].description}`);e.push("","\u63D0\u793A\uFF1A<name> \u4E4B\u540E\u7684\u53C2\u6570\u539F\u6837\u900F\u4F20\u7ED9\u5BF9\u5E94 agent\uFF08\u542B\u5176 --help\uFF09\u3002"),t.emit(e.join(`
121
- `))}function im(t,e){t.command("agent <name> [args...]").description(`\u8FD0\u884C\u4E00\u4E2A AI \u667A\u80FD\u4F53\uFF08${ds.join(" | ")}\uFF09`).allowUnknownOption().passThroughOptions().helpOption(!1).action(async(s,r)=>{if(nm.has(s)){om(e);return}if(!sm(s)){e.fail(`unknown agent: ${s}`,`available: ${ds.join(" | ")}`),process.exitCode=1;return}process.exitCode=await rm(s,r||[],e)||0})}aa.exports={register:im}});var ua=k((yx,la)=>{var am=require("http"),ln=class{constructor(e={}){this.port=e.port||9380,this.timeout=e.timeout||300*1e3,this.server=null,this.timeoutId=null}validateTokenFormat(e){if(!e||typeof e!="string")return!1;let s=e.split(".");if(s.length!==2)return!1;let[r,n]=s;return r&&r.length>0&&n&&n.length>0}async waitForCallback(e){return new Promise((s,r)=>{let n=!1;this.server=am.createServer((o,i)=>{let a=new URL(o.url,`http://localhost:${this.port}`);if(a.pathname==="/callback"){let c=a.searchParams.get("token"),l=a.searchParams.get("state"),u=a.searchParams.get("error");if(u){i.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),i.end(`
120
+ `)),0}la.exports={detectShell:pn,scriptFor:fn,showCompletion:im,installCompletion:am,SUPPORTED:zs}});var fa=k((Sx,pa)=>{var{AGENTS:da,AGENT_NAMES:hs,isAgentName:cm,launchAgent:lm}=qs(),um=new Set(["--help","-h","help"]);function dm(t){if(t.isJson){t.emit({usage:"coder agent <name> [args...]",agents:hs.map(r=>({name:r,description:da[r].description}))});return}let e=["Usage: coder agent <name> [args...]","","Agents:"],s=Math.max(...hs.map(r=>r.length));for(let r of hs)e.push(` ${r.padEnd(s)} ${da[r].description}`);e.push("","\u63D0\u793A\uFF1A<name> \u4E4B\u540E\u7684\u53C2\u6570\u539F\u6837\u900F\u4F20\u7ED9\u5BF9\u5E94 agent\uFF08\u542B\u5176 --help\uFF09\u3002"),t.emit(e.join(`
121
+ `))}function pm(t,e){t.command("agent <name> [args...]").description(`\u8FD0\u884C\u4E00\u4E2A AI \u667A\u80FD\u4F53\uFF08${hs.join(" | ")}\uFF09`).allowUnknownOption().passThroughOptions().helpOption(!1).action(async(s,r)=>{if(um.has(s)){dm(e);return}if(!cm(s)){e.fail(`unknown agent: ${s}`,`available: ${hs.join(" | ")}`),process.exitCode=1;return}process.exitCode=await lm(s,r||[],e)||0})}pa.exports={register:pm}});var ha=k((Ix,ma)=>{var fm=require("http"),mn=class{constructor(e={}){this.port=e.port||9380,this.timeout=e.timeout||300*1e3,this.server=null,this.timeoutId=null}validateTokenFormat(e){if(!e||typeof e!="string")return!1;let s=e.split(".");if(s.length!==2)return!1;let[r,n]=s;return r&&r.length>0&&n&&n.length>0}async waitForCallback(e){return new Promise((s,r)=>{let n=!1;this.server=fm.createServer((o,i)=>{let a=new URL(o.url,`http://localhost:${this.port}`);if(a.pathname==="/callback"){let c=a.searchParams.get("token"),l=a.searchParams.get("state"),u=a.searchParams.get("error");if(u){i.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),i.end(`
122
122
  <!DOCTYPE html>
123
123
  <html>
124
124
  <head>
@@ -211,7 +211,7 @@ ${Xp}
211
211
  </div>
212
212
  </body>
213
213
  </html>
214
- `),n||(n=!0,this.cleanup(),r(new Error("Invalid token format - expected ak.sk format")));return}let[d,m]=c.split(".");i.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),i.end(`
214
+ `),n||(n=!0,this.cleanup(),r(new Error("Invalid token format - expected ak.sk format")));return}let[d,p]=c.split(".");i.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),i.end(`
215
215
  <!DOCTYPE html>
216
216
  <html>
217
217
  <head>
@@ -243,7 +243,7 @@ ${Xp}
243
243
  </script>
244
244
  </body>
245
245
  </html>
246
- `),n||(n=!0,this.cleanup(),s({ak:d,sk:m}))}else i.writeHead(404,{"Content-Type":"text/plain"}),i.end("Not Found")}),this.server.on("error",o=>{if(o.code==="EADDRINUSE"){if(this.port++,this.port>9390){n||(n=!0,r(new Error("Could not find available port for OAuth callback server")));return}this.server.close(),this.server.listen(this.port)}else n||(n=!0,this.cleanup(),r(o))}),this.server.listen(this.port,()=>{process.env.CODER_DEBUG&&console.log(`OAuth callback server listening on port ${this.port}`)}),this.timeoutId=setTimeout(()=>{n||(n=!0,this.cleanup(),r(new Error("OAuth login timeout - no response received within 5 minutes")))},this.timeout)})}getCallbackUrl(){return`http://localhost:${this.port}/callback`}cleanup(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.server&&(this.server.close(),this.server=null)}};la.exports=ln});var fa=k((_x,da)=>{var cm=require("crypto"),lm=ua(),un=class{constructor(e={}){this.baseUrl=e.baseUrl||"https://makecoder.com",this.callbackServer=null}generateState(){return cm.randomBytes(16).toString("hex")}buildAuthorizationUrl(e,s){let r=new URLSearchParams({redirect_uri:e,state:s,response_type:"token"});return`${this.baseUrl}/oauth/authorize?${r.toString()}`}async startOAuthFlow(){let e=this.generateState();this.callbackServer=new lm;let s=this.callbackServer.getCallbackUrl(),r=this.buildAuthorizationUrl(s,e),n=!1;try{let i=(await import("open")).default;await i(r),n=!0}catch(i){process.env.CODER_DEBUG&&console.error("Browser open error:",i)}let o=this.callbackServer.waitForCallback(e);return{authUrl:r,waitPromise:o,browserOpened:n}}async login(){try{let{authUrl:e,waitPromise:s,browserOpened:r}=await this.startOAuthFlow();console.log(`
246
+ `),n||(n=!0,this.cleanup(),s({ak:d,sk:p}))}else i.writeHead(404,{"Content-Type":"text/plain"}),i.end("Not Found")}),this.server.on("error",o=>{if(o.code==="EADDRINUSE"){if(this.port++,this.port>9390){n||(n=!0,r(new Error("Could not find available port for OAuth callback server")));return}this.server.close(),this.server.listen(this.port)}else n||(n=!0,this.cleanup(),r(o))}),this.server.listen(this.port,()=>{process.env.CODER_DEBUG&&console.log(`OAuth callback server listening on port ${this.port}`)}),this.timeoutId=setTimeout(()=>{n||(n=!0,this.cleanup(),r(new Error("OAuth login timeout - no response received within 5 minutes")))},this.timeout)})}getCallbackUrl(){return`http://localhost:${this.port}/callback`}cleanup(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.server&&(this.server.close(),this.server=null)}};ma.exports=mn});var ya=k((Cx,ga)=>{var mm=require("crypto"),hm=ha(),hn=class{constructor(e={}){this.baseUrl=e.baseUrl||"https://makecoder.com",this.callbackServer=null}generateState(){return mm.randomBytes(16).toString("hex")}buildAuthorizationUrl(e,s){let r=new URLSearchParams({redirect_uri:e,state:s,response_type:"token"});return`${this.baseUrl}/oauth/authorize?${r.toString()}`}async startOAuthFlow(){let e=this.generateState();this.callbackServer=new hm;let s=this.callbackServer.getCallbackUrl(),r=this.buildAuthorizationUrl(s,e),n=!1;try{let i=(await import("open")).default;await i(r),n=!0}catch(i){process.env.CODER_DEBUG&&console.error("Browser open error:",i)}let o=this.callbackServer.waitForCallback(e);return{authUrl:r,waitPromise:o,browserOpened:n}}async login(){try{let{authUrl:e,waitPromise:s,browserOpened:r}=await this.startOAuthFlow();console.log(`
247
247
  \u{1F510} \u5F00\u59CB OAuth \u767B\u5F55\u6D41\u7A0B...
248
248
  `),console.log(`\u{1F4CB} \u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55
249
249
  `),console.log(`\u{1F310} \u6388\u6743\u5730\u5740: ${e}
@@ -251,19 +251,19 @@ ${Xp}
251
251
  `),r||console.warn("\u26A0\uFE0F \u65E0\u6CD5\u81EA\u52A8\u6253\u5F00\u6D4F\u89C8\u5668,\u8BF7\u624B\u52A8\u590D\u5236\u4E0A\u8FF0\u94FE\u63A5\u5230\u6D4F\u89C8\u5668\u6253\u5F00");let n=await s;return console.log(`\u2705 API Key \u83B7\u53D6\u6210\u529F!
252
252
  `),n}catch(e){throw console.error(`
253
253
  \u274C OAuth \u767B\u5F55\u5931\u8D25: ${e.message}
254
- `),e}finally{this.callbackServer&&this.callbackServer.cleanup()}}cleanup(){this.callbackServer&&this.callbackServer.cleanup()}};da.exports=un});var ha=k((wx,ma)=>{var pa=require("readline"),um=fa(),dn=class{constructor(e){this.argParser=e}async handle(e){let{authSubcommand:s,authRemainingArgs:r=[],coderBaseUrl:n}=e;if(s==="--help"||s===void 0)return this.showHelp(),0;switch(s){case"login":return await this.handleLogin(r,n);case"logout":return this.logout();case"status":return await this.status();default:return this.showHelp(),1}}async handleLogin(e,s){let r=null;for(let n=0;n<e.length;n++)if(e[n]==="--apikey"){r=e[n+1]||null;break}return r?this.loginWithApiKey(r):await this.dualLogin(s)}loginWithApiKey(e){let s=e.indexOf(".");if(s<=0||s===e.length-1)return console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),1;let r=e.substring(0,s).trim(),n=e.substring(s+1).trim();return!r||!n?(console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),1):this.argParser.saveAuthToConfig(e.trim())?(console.log(`\u2705 API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),0):(console.error("\u274C \u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),1)}async dualLogin(e){let s=new um({baseUrl:"https://makecoder.com"}),r,n,o;try{({authUrl:r,waitPromise:n,browserOpened:o}=await s.startOAuthFlow())}catch(l){return console.error(`\u274C \u542F\u52A8\u767B\u5F55\u6D41\u7A0B\u5931\u8D25: ${l.message}`),console.log(`
254
+ `),e}finally{this.callbackServer&&this.callbackServer.cleanup()}}cleanup(){this.callbackServer&&this.callbackServer.cleanup()}};ga.exports=hn});var ba=k((Ex,wa)=>{var _a=require("readline"),gm=ya(),gn=class{constructor(e){this.argParser=e}async handle(e){let{authSubcommand:s,authRemainingArgs:r=[],coderBaseUrl:n}=e;if(s==="--help"||s===void 0)return this.showHelp(),0;switch(s){case"login":return await this.handleLogin(r,n);case"logout":return this.logout();case"status":return await this.status();default:return this.showHelp(),1}}async handleLogin(e,s){let r=null;for(let n=0;n<e.length;n++)if(e[n]==="--apikey"){r=e[n+1]||null;break}return r?this.loginWithApiKey(r):await this.dualLogin(s)}loginWithApiKey(e){let s=e.indexOf(".");if(s<=0||s===e.length-1)return console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),1;let r=e.substring(0,s).trim(),n=e.substring(s+1).trim();return!r||!n?(console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),1):this.argParser.saveAuthToConfig(e.trim())?(console.log(`\u2705 API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),0):(console.error("\u274C \u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),1)}async dualLogin(e){let s=new gm({baseUrl:"https://makecoder.com"}),r,n,o;try{({authUrl:r,waitPromise:n,browserOpened:o}=await s.startOAuthFlow())}catch(l){return console.error(`\u274C \u542F\u52A8\u767B\u5F55\u6D41\u7A0B\u5931\u8D25: ${l.message}`),console.log(`
255
255
  \u8BF7\u624B\u52A8\u8F93\u5165 API Key\uFF08\u83B7\u53D6\u5730\u5740: https://makecoder.com/my/apikeys\uFF09
256
256
  `),await this.terminalOnlyLogin()}console.log(`
257
257
  \u{1F510} \u767B\u5F55 MakeCoder
258
258
  `),console.log(o?" \u65B9\u5F0F\u4E00\uFF1A\u6D4F\u89C8\u5668\u5DF2\u6253\u5F00\u6388\u6743\u9875\u9762\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55":" \u65B9\u5F0F\u4E00\uFF1A\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4EE5\u4E0B\u5730\u5740\u5B8C\u6210\u767B\u5F55"),console.log(` ${r}
259
259
  `),console.log(` \u65B9\u5F0F\u4E8C\uFF1A\u7C98\u8D34 API Key\uFF08\u83B7\u53D6\u5730\u5740: https://makecoder.com/my/apikeys\uFF09
260
- `);let i=pa.createInterface({input:process.stdin,output:process.stdout}),a=new Promise((l,u)=>{i.question("\u8BF7\u8F93\u5165 API Key\uFF08\u7559\u7A7A\u5219\u7B49\u5F85\u6D4F\u89C8\u5668\u767B\u5F55\uFF09: ",d=>{let m=d.trim();if(!m){u(new Error("__empty_input__"));return}let h=m.indexOf(".");if(h<=0||h===m.length-1){u(new Error("API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"));return}l(m)})}),c;try{c=await Promise.race([n.then(l=>(i.close(),`${l.ak}.${l.sk}`)),a.then(l=>(s.cleanup(),l))])}catch(l){if(l.message==="__empty_input__"){console.log(`
260
+ `);let i=_a.createInterface({input:process.stdin,output:process.stdout}),a=new Promise((l,u)=>{i.question("\u8BF7\u8F93\u5165 API Key\uFF08\u7559\u7A7A\u5219\u7B49\u5F85\u6D4F\u89C8\u5668\u767B\u5F55\uFF09: ",d=>{let p=d.trim();if(!p){u(new Error("__empty_input__"));return}let h=p.indexOf(".");if(h<=0||h===p.length-1){u(new Error("API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"));return}l(p)})}),c;try{c=await Promise.race([n.then(l=>(i.close(),`${l.ak}.${l.sk}`)),a.then(l=>(s.cleanup(),l))])}catch(l){if(l.message==="__empty_input__"){console.log(`
261
261
  \u23F3 \u7B49\u5F85\u6D4F\u89C8\u5668\u6388\u6743\u5B8C\u6210...\uFF08\u8D85\u65F6\u65F6\u95F4: 5\u5206\u949F\uFF09
262
262
  `);try{let u=await n;c=`${u.ak}.${u.sk}`}catch(u){return s.cleanup(),console.error(`
263
263
  \u274C \u767B\u5F55\u5931\u8D25: ${u.message}`),1}}else return i.close(),s.cleanup(),console.error(`
264
264
  \u274C ${l.message}`),1}return s.cleanup(),this.argParser.saveAuthToConfig(c)?(console.log(`
265
265
  \u2705 \u767B\u5F55\u6210\u529F\uFF01API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),0):(console.error(`
266
- \u26A0\uFE0F \u767B\u5F55\u6210\u529F\u4F46\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650`),1)}async terminalOnlyLogin(){let e=pa.createInterface({input:process.stdin,output:process.stdout});return new Promise(s=>{e.question("\u8BF7\u8F93\u5165 API Key: ",r=>{e.close();let n=r.trim();if(!n){console.error("\u274C \u672A\u8F93\u5165 API Key"),s(1);return}let o=n.indexOf(".");if(o<=0||o===n.length-1){console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),s(1);return}this.argParser.saveAuthToConfig(n)?(console.log(`\u2705 \u767B\u5F55\u6210\u529F\uFF01API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),s(0)):(console.error("\u274C \u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),s(1))})})}logout(){return this.argParser.clearAuthFromConfig()?(console.log("\u2705 \u5DF2\u9000\u51FA\u767B\u5F55\uFF0CAPI Key \u5DF2\u6E05\u9664"),0):(console.error("\u274C \u9000\u51FA\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),1)}async status(){let e=this.argParser.loadConfig(),s=this.argParser.getApiKeyFromConfig(e);if(!s)return console.log("Status: not authenticated"),console.log("Hint: run `coder auth login`"),0;let r=s.substring(0,4)+"****";console.log("Status: authenticated"),console.log(`Key: ${r}`),console.log(`Config: ${this.argParser.configPath}`);try{let n=require("https"),o=require("http"),i=new URL("https://makecoder.com/bigapis/auth/v1/users/me"),a=i.protocol==="https:"?n:o,c=await new Promise((l,u)=>{let d=a.request(i,{method:"GET",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},timeout:5e3},m=>{let h="";m.on("data",g=>{h+=g}),m.on("end",()=>{if(m.statusCode===200)try{l(JSON.parse(h))}catch{u(new Error("\u89E3\u6790\u54CD\u5E94\u5931\u8D25"))}else m.statusCode===401?u(new Error("unauthorized")):u(new Error(`HTTP ${m.statusCode}`))})});d.on("error",u),d.on("timeout",()=>{d.destroy(),u(new Error("\u8BF7\u6C42\u8D85\u65F6"))}),d.end()});c.data?.id&&console.log(`User ID: ${c.data.id}`),c.data?.username&&console.log(`User: ${c.data.username}`)}catch(n){n.message==="unauthorized"&&console.log("Warning: API Key \u53EF\u80FD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55: coder auth login")}return 0}showHelp(){console.log(`
266
+ \u26A0\uFE0F \u767B\u5F55\u6210\u529F\u4F46\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650`),1)}async terminalOnlyLogin(){let e=_a.createInterface({input:process.stdin,output:process.stdout});return new Promise(s=>{e.question("\u8BF7\u8F93\u5165 API Key: ",r=>{e.close();let n=r.trim();if(!n){console.error("\u274C \u672A\u8F93\u5165 API Key"),s(1);return}let o=n.indexOf(".");if(o<=0||o===n.length-1){console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk> \u683C\u5F0F"),s(1);return}this.argParser.saveAuthToConfig(n)?(console.log(`\u2705 \u767B\u5F55\u6210\u529F\uFF01API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),s(0)):(console.error("\u274C \u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),s(1))})})}logout(){return this.argParser.clearAuthFromConfig()?(console.log("\u2705 \u5DF2\u9000\u51FA\u767B\u5F55\uFF0CAPI Key \u5DF2\u6E05\u9664"),0):(console.error("\u274C \u9000\u51FA\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),1)}async status(){let e=this.argParser.loadConfig(),s=this.argParser.getApiKeyFromConfig(e);if(!s)return console.log("Status: not authenticated"),console.log("Hint: run `coder auth login`"),0;let r=s.substring(0,4)+"****";console.log("Status: authenticated"),console.log(`Key: ${r}`),console.log(`Config: ${this.argParser.configPath}`);try{let n=require("https"),o=require("http"),i=new URL("https://makecoder.com/bigapis/auth/v1/users/me"),a=i.protocol==="https:"?n:o,c=await new Promise((l,u)=>{let d=a.request(i,{method:"GET",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},timeout:5e3},p=>{let h="";p.on("data",g=>{h+=g}),p.on("end",()=>{if(p.statusCode===200)try{l(JSON.parse(h))}catch{u(new Error("\u89E3\u6790\u54CD\u5E94\u5931\u8D25"))}else p.statusCode===401?u(new Error("unauthorized")):u(new Error(`HTTP ${p.statusCode}`))})});d.on("error",u),d.on("timeout",()=>{d.destroy(),u(new Error("\u8BF7\u6C42\u8D85\u65F6"))}),d.end()});c.data?.id&&console.log(`User ID: ${c.data.id}`),c.data?.username&&console.log(`User: ${c.data.username}`)}catch(n){n.message==="unauthorized"&&console.log("Warning: API Key \u53EF\u80FD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55: coder auth login")}return 0}showHelp(){console.log(`
267
267
  \u7528\u6CD5:
268
268
  coder auth <command>
269
269
 
@@ -282,45 +282,45 @@ ${Xp}
282
282
  coder auth status # \u67E5\u770B\u767B\u5F55\u72B6\u6001
283
283
 
284
284
  \u83B7\u53D6 API Key: https://makecoder.com/my/apikeys
285
- `)}};ma.exports=dn});var fs=k(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.getParsedType=V.ZodParsedType=V.objectUtil=V.util=void 0;var fn;(function(t){t.assertEqual=n=>{};function e(n){}t.assertIs=e;function s(n){throw new Error}t.assertNever=s,t.arrayToEnum=n=>{let o={};for(let i of n)o[i]=i;return o},t.getValidEnumValues=n=>{let o=t.objectKeys(n).filter(a=>typeof n[n[a]]!="number"),i={};for(let a of o)i[a]=n[a];return t.objectValues(i)},t.objectValues=n=>t.objectKeys(n).map(function(o){return n[o]}),t.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let o=[];for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&o.push(i);return o},t.find=(n,o)=>{for(let i of n)if(o(i))return i},t.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function r(n,o=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}t.joinValues=r,t.jsonStringifyReplacer=(n,o)=>typeof o=="bigint"?o.toString():o})(fn||(V.util=fn={}));var ga;(function(t){t.mergeShapes=(e,s)=>({...e,...s})})(ga||(V.objectUtil=ga={}));V.ZodParsedType=fn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);var dm=t=>{switch(typeof t){case"undefined":return V.ZodParsedType.undefined;case"string":return V.ZodParsedType.string;case"number":return Number.isNaN(t)?V.ZodParsedType.nan:V.ZodParsedType.number;case"boolean":return V.ZodParsedType.boolean;case"function":return V.ZodParsedType.function;case"bigint":return V.ZodParsedType.bigint;case"symbol":return V.ZodParsedType.symbol;case"object":return Array.isArray(t)?V.ZodParsedType.array:t===null?V.ZodParsedType.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?V.ZodParsedType.promise:typeof Map<"u"&&t instanceof Map?V.ZodParsedType.map:typeof Set<"u"&&t instanceof Set?V.ZodParsedType.set:typeof Date<"u"&&t instanceof Date?V.ZodParsedType.date:V.ZodParsedType.object;default:return V.ZodParsedType.unknown}};V.getParsedType=dm});var Zs=k(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.ZodError=ze.quotelessJson=ze.ZodIssueCode=void 0;var ya=fs();ze.ZodIssueCode=ya.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);var fm=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:");ze.quotelessJson=fm;var ps=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let s=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,s):this.__proto__=s,this.name="ZodError",this.issues=e}format(e){let s=e||function(o){return o.message},r={_errors:[]},n=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(n);else if(i.code==="invalid_return_type")n(i.returnTypeError);else if(i.code==="invalid_arguments")n(i.argumentsError);else if(i.path.length===0)r._errors.push(s(i));else{let a=r,c=0;for(;c<i.path.length;){let l=i.path[c];c===i.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(s(i))):a[l]=a[l]||{_errors:[]},a=a[l],c++}}};return n(this),r}static assert(e){if(!(e instanceof t))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ya.util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=s=>s.message){let s={},r=[];for(let n of this.issues)if(n.path.length>0){let o=n.path[0];s[o]=s[o]||[],s[o].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:s}}get formErrors(){return this.flatten()}};ze.ZodError=ps;ps.create=t=>new ps(t)});var mn=k(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var oe=Zs(),it=fs(),pm=(t,e)=>{let s;switch(t.code){case oe.ZodIssueCode.invalid_type:t.received===it.ZodParsedType.undefined?s="Required":s=`Expected ${t.expected}, received ${t.received}`;break;case oe.ZodIssueCode.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(t.expected,it.util.jsonStringifyReplacer)}`;break;case oe.ZodIssueCode.unrecognized_keys:s=`Unrecognized key(s) in object: ${it.util.joinValues(t.keys,", ")}`;break;case oe.ZodIssueCode.invalid_union:s="Invalid input";break;case oe.ZodIssueCode.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${it.util.joinValues(t.options)}`;break;case oe.ZodIssueCode.invalid_enum_value:s=`Invalid enum value. Expected ${it.util.joinValues(t.options)}, received '${t.received}'`;break;case oe.ZodIssueCode.invalid_arguments:s="Invalid function arguments";break;case oe.ZodIssueCode.invalid_return_type:s="Invalid function return type";break;case oe.ZodIssueCode.invalid_date:s="Invalid date";break;case oe.ZodIssueCode.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(s=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(s=`${s} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?s=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?s=`Invalid input: must end with "${t.validation.endsWith}"`:it.util.assertNever(t.validation):t.validation!=="regex"?s=`Invalid ${t.validation}`:s="Invalid";break;case oe.ZodIssueCode.too_small:t.type==="array"?s=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?s=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?s=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?s=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?s=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:s="Invalid input";break;case oe.ZodIssueCode.too_big:t.type==="array"?s=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?s=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?s=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?s=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?s=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:s="Invalid input";break;case oe.ZodIssueCode.custom:s="Invalid input";break;case oe.ZodIssueCode.invalid_intersection_types:s="Intersection results could not be merged";break;case oe.ZodIssueCode.not_multiple_of:s=`Number must be a multiple of ${t.multipleOf}`;break;case oe.ZodIssueCode.not_finite:s="Number must be finite";break;default:s=e.defaultError,it.util.assertNever(t)}return{message:s}};pn.default=pm});var Vs=k(Je=>{"use strict";var mm=Je&&Je.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Je,"__esModule",{value:!0});Je.defaultErrorMap=void 0;Je.setErrorMap=hm;Je.getErrorMap=gm;var _a=mm(mn());Je.defaultErrorMap=_a.default;var wa=_a.default;function hm(t){wa=t}function gm(){return wa}});var gn=k(B=>{"use strict";var ym=B&&B.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(B,"__esModule",{value:!0});B.isAsync=B.isValid=B.isDirty=B.isAborted=B.OK=B.DIRTY=B.INVALID=B.ParseStatus=B.EMPTY_PATH=B.makeIssue=void 0;B.addIssueToContext=bm;var _m=Vs(),ba=ym(mn()),wm=t=>{let{data:e,path:s,errorMaps:r,issueData:n}=t,o=[...s,...n.path||[]],i={...n,path:o};if(n.message!==void 0)return{...n,path:o,message:n.message};let a="",c=r.filter(l=>!!l).slice().reverse();for(let l of c)a=l(i,{data:e,defaultError:a}).message;return{...n,path:o,message:a}};B.makeIssue=wm;B.EMPTY_PATH=[];function bm(t,e){let s=(0,_m.getErrorMap)(),r=(0,B.makeIssue)({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,s,s===ba.default?void 0:ba.default].filter(n=>!!n)});t.common.issues.push(r)}var hn=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,s){let r=[];for(let n of s){if(n.status==="aborted")return B.INVALID;n.status==="dirty"&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,s){let r=[];for(let n of s){let o=await n.key,i=await n.value;r.push({key:o,value:i})}return t.mergeObjectSync(e,r)}static mergeObjectSync(e,s){let r={};for(let n of s){let{key:o,value:i}=n;if(o.status==="aborted"||i.status==="aborted")return B.INVALID;o.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(r[o.value]=i.value)}return{status:e.value,value:r}}};B.ParseStatus=hn;B.INVALID=Object.freeze({status:"aborted"});var km=t=>({status:"dirty",value:t});B.DIRTY=km;var xm=t=>({status:"valid",value:t});B.OK=xm;var Sm=t=>t.status==="aborted";B.isAborted=Sm;var Im=t=>t.status==="dirty";B.isDirty=Im;var Cm=t=>t.status==="valid";B.isValid=Cm;var Em=t=>typeof Promise<"u"&&t instanceof Promise;B.isAsync=Em});var xa=k(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0})});var Ia=k(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.errorUtil=void 0;var Sa;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(Sa||(Ws.errorUtil=Sa={}))});var Pa=k(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.discriminatedUnion=f.date=f.boolean=f.bigint=f.array=f.any=f.coerce=f.ZodFirstPartyTypeKind=f.late=f.ZodSchema=f.Schema=f.ZodReadonly=f.ZodPipeline=f.ZodBranded=f.BRAND=f.ZodNaN=f.ZodCatch=f.ZodDefault=f.ZodNullable=f.ZodOptional=f.ZodTransformer=f.ZodEffects=f.ZodPromise=f.ZodNativeEnum=f.ZodEnum=f.ZodLiteral=f.ZodLazy=f.ZodFunction=f.ZodSet=f.ZodMap=f.ZodRecord=f.ZodTuple=f.ZodIntersection=f.ZodDiscriminatedUnion=f.ZodUnion=f.ZodObject=f.ZodArray=f.ZodVoid=f.ZodNever=f.ZodUnknown=f.ZodAny=f.ZodNull=f.ZodUndefined=f.ZodSymbol=f.ZodDate=f.ZodBoolean=f.ZodBigInt=f.ZodNumber=f.ZodString=f.ZodType=void 0;f.NEVER=f.void=f.unknown=f.union=f.undefined=f.tuple=f.transformer=f.symbol=f.string=f.strictObject=f.set=f.record=f.promise=f.preprocess=f.pipeline=f.ostring=f.optional=f.onumber=f.oboolean=f.object=f.number=f.nullable=f.null=f.never=f.nativeEnum=f.nan=f.map=f.literal=f.lazy=f.intersection=f.instanceof=f.function=f.enum=f.effect=void 0;f.datetimeRegex=Ta;f.custom=va;var x=Zs(),Ks=Vs(),T=Ia(),p=gn(),I=fs(),_e=class{constructor(e,s,r,n){this._cachedPath=[],this.parent=e,this.data=s,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ca=(t,e)=>{if((0,p.isValid)(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let s=new x.ZodError(t.common.issues);return this._error=s,this._error}}};function D(t){if(!t)return{};let{errorMap:e,invalid_type_error:s,required_error:r,description:n}=t;if(e&&(s||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(i,a)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??r??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:c??s??a.defaultError}},description:n}}var R=class{get description(){return this._def.description}_getType(e){return(0,I.getParsedType)(e.data)}_getOrReturnCtx(e,s){return s||{common:e.parent.common,data:e.data,parsedType:(0,I.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new p.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,I.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let s=this._parse(e);if((0,p.isAsync)(s))throw new Error("Synchronous parse encountered promise.");return s}_parseAsync(e){let s=this._parse(e);return Promise.resolve(s)}parse(e,s){let r=this.safeParse(e,s);if(r.success)return r.data;throw r.error}safeParse(e,s){let r={common:{issues:[],async:s?.async??!1,contextualErrorMap:s?.errorMap},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)},n=this._parseSync({data:e,path:r.path,parent:r});return Ca(r,n)}"~validate"(e){let s={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:s});return(0,p.isValid)(r)?{value:r.value}:{issues:s.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),s.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:s}).then(r=>(0,p.isValid)(r)?{value:r.value}:{issues:s.common.issues})}async parseAsync(e,s){let r=await this.safeParseAsync(e,s);if(r.success)return r.data;throw r.error}async safeParseAsync(e,s){let r={common:{issues:[],contextualErrorMap:s?.errorMap,async:!0},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)},n=this._parse({data:e,path:r.path,parent:r}),o=await((0,p.isAsync)(n)?n:Promise.resolve(n));return Ca(r,o)}refine(e,s){let r=n=>typeof s=="string"||typeof s>"u"?{message:s}:typeof s=="function"?s(n):s;return this._refinement((n,o)=>{let i=e(n),a=()=>o.addIssue({code:x.ZodIssueCode.custom,...r(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,s){return this._refinement((r,n)=>e(r)?!0:(n.addIssue(typeof s=="function"?s(r,n):s),!1))}_refinement(e){return new me({schema:this,typeName:v.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:s=>this["~validate"](s)}}optional(){return ye.create(this,this._def)}nullable(){return ve.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ge.create(this)}promise(){return Xe.create(this,this._def)}or(e){return pt.create([this,e],this._def)}and(e){return mt.create(this,e,this._def)}transform(e){return new me({...D(this._def),schema:this,typeName:v.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let s=typeof e=="function"?e:()=>e;return new wt({...D(this._def),innerType:this,defaultValue:s,typeName:v.ZodDefault})}brand(){return new ms({typeName:v.ZodBranded,type:this,...D(this._def)})}catch(e){let s=typeof e=="function"?e:()=>e;return new bt({...D(this._def),innerType:this,catchValue:s,typeName:v.ZodCatch})}describe(e){let s=this.constructor;return new s({...this._def,description:e})}pipe(e){return hs.create(this,e)}readonly(){return kt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};f.ZodType=R;f.Schema=R;f.ZodSchema=R;var Am=/^c[^\s-]{8,}$/i,$m=/^[0-9a-z]+$/,Tm=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Um=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,vm=/^[a-z0-9_-]{21}$/i,Om=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Dm=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Rm=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Lm="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",yn,Pm=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Nm=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,qm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,jm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Mm=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Gm=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Aa="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Bm=new RegExp(`^${Aa}$`);function $a(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let s=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${s}`}function Fm(t){return new RegExp(`^${$a(t)}$`)}function Ta(t){let e=`${Aa}T${$a(t)}`,s=[];return s.push(t.local?"Z?":"Z"),t.offset&&s.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${s.join("|")})`,new RegExp(`^${e}$`)}function Zm(t,e){return!!((e==="v4"||!e)&&Pm.test(t)||(e==="v6"||!e)&&qm.test(t))}function Vm(t,e){if(!Om.test(t))return!1;try{let[s]=t.split(".");if(!s)return!1;let r=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),n=JSON.parse(atob(r));return!(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return!1}}function Wm(t,e){return!!((e==="v4"||!e)&&Nm.test(t)||(e==="v6"||!e)&&jm.test(t))}var He=class t extends R{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==I.ZodParsedType.string){let o=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(o,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.string,received:o.parsedType}),p.INVALID}let r=new p.ParseStatus,n;for(let o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="max")e.data.length>o.value&&(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let i=e.data.length>o.value,a=e.data.length<o.value;(i||a)&&(n=this._getOrReturnCtx(e,n),i?(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")Rm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"email",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")yn||(yn=new RegExp(Lm,"u")),yn.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"emoji",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")Um.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"uuid",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")vm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"nanoid",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")Am.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"cuid",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")$m.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"cuid2",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")Tm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"ulid",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"url",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"regex",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty())):o.kind==="trim"?e.data=e.data.trim():o.kind==="includes"?e.data.includes(o.value,o.position)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):o.kind==="toLowerCase"?e.data=e.data.toLowerCase():o.kind==="toUpperCase"?e.data=e.data.toUpperCase():o.kind==="startsWith"?e.data.startsWith(o.value)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?Ta(o).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?Bm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?Fm(o).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?Dm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"duration",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?Zm(e.data,o.version)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"ip",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Vm(e.data,o.alg)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"jwt",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Wm(e.data,o.version)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"cidr",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Mm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"base64",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?Gm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{validation:"base64url",code:x.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):I.util.assertNever(o);return{status:r.value,value:e.data}}_regex(e,s,r){return this.refinement(n=>e.test(n),{validation:s,code:x.ZodIssueCode.invalid_string,...T.errorUtil.errToObj(r)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...T.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...T.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...T.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...T.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...T.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...T.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...T.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...T.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...T.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...T.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...T.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...T.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...T.errorUtil.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...T.errorUtil.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...T.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...T.errorUtil.errToObj(e)})}regex(e,s){return this._addCheck({kind:"regex",regex:e,...T.errorUtil.errToObj(s)})}includes(e,s){return this._addCheck({kind:"includes",value:e,position:s?.position,...T.errorUtil.errToObj(s?.message)})}startsWith(e,s){return this._addCheck({kind:"startsWith",value:e,...T.errorUtil.errToObj(s)})}endsWith(e,s){return this._addCheck({kind:"endsWith",value:e,...T.errorUtil.errToObj(s)})}min(e,s){return this._addCheck({kind:"min",value:e,...T.errorUtil.errToObj(s)})}max(e,s){return this._addCheck({kind:"max",value:e,...T.errorUtil.errToObj(s)})}length(e,s){return this._addCheck({kind:"length",value:e,...T.errorUtil.errToObj(s)})}nonempty(e){return this.min(1,T.errorUtil.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxLength(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}};f.ZodString=He;He.create=t=>new He({checks:[],typeName:v.ZodString,coerce:t?.coerce??!1,...D(t)});function Km(t,e){let s=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,n=s>r?s:r,o=Number.parseInt(t.toFixed(n).replace(".","")),i=Number.parseInt(e.toFixed(n).replace(".",""));return o%i/10**n}var at=class t extends R{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==I.ZodParsedType.number){let o=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(o,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.number,received:o.parsedType}),p.INVALID}let r,n=new p.ParseStatus;for(let o of this._def.checks)o.kind==="int"?I.util.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:o.message}),n.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),n.dirty()):o.kind==="multipleOf"?Km(e.data,o.value)!==0&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.not_finite,message:o.message}),n.dirty()):I.util.assertNever(o);return{status:n.value,value:e.data}}gte(e,s){return this.setLimit("min",e,!0,T.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,T.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,T.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,T.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:T.errorUtil.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:T.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:T.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:T.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:T.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:T.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:T.errorUtil.toString(s)})}finite(e){return this._addCheck({kind:"finite",message:T.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:T.errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:T.errorUtil.toString(e)})}get minValue(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxValue(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&I.util.isInteger(e.value))}get isFinite(){let e=null,s=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(s===null||r.value>s)&&(s=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(s)&&Number.isFinite(e)}};f.ZodNumber=at;at.create=t=>new at({checks:[],typeName:v.ZodNumber,coerce:t?.coerce||!1,...D(t)});var ct=class t extends R{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==I.ZodParsedType.bigint)return this._getInvalidInput(e);let r,n=new p.ParseStatus;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):I.util.assertNever(o);return{status:n.value,value:e.data}}_getInvalidInput(e){let s=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.bigint,received:s.parsedType}),p.INVALID}gte(e,s){return this.setLimit("min",e,!0,T.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,T.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,T.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,T.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:T.errorUtil.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:T.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:T.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:T.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:T.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:T.errorUtil.toString(s)})}get minValue(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxValue(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}};f.ZodBigInt=ct;ct.create=t=>new ct({checks:[],typeName:v.ZodBigInt,coerce:t?.coerce??!1,...D(t)});var lt=class extends R{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==I.ZodParsedType.boolean){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.boolean,received:r.parsedType}),p.INVALID}return(0,p.OK)(e.data)}};f.ZodBoolean=lt;lt.create=t=>new lt({typeName:v.ZodBoolean,coerce:t?.coerce||!1,...D(t)});var ut=class t extends R{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==I.ZodParsedType.date){let o=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(o,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.date,received:o.parsedType}),p.INVALID}if(Number.isNaN(e.data.getTime())){let o=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(o,{code:x.ZodIssueCode.invalid_date}),p.INVALID}let r=new p.ParseStatus,n;for(let o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),r.dirty()):o.kind==="max"?e.data.getTime()>o.value&&(n=this._getOrReturnCtx(e,n),(0,p.addIssueToContext)(n,{code:x.ZodIssueCode.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):I.util.assertNever(o);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,s){return this._addCheck({kind:"min",value:e.getTime(),message:T.errorUtil.toString(s)})}max(e,s){return this._addCheck({kind:"max",value:e.getTime(),message:T.errorUtil.toString(s)})}get minDate(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e!=null?new Date(e):null}};f.ZodDate=ut;ut.create=t=>new ut({checks:[],coerce:t?.coerce||!1,typeName:v.ZodDate,...D(t)});var Nt=class extends R{_parse(e){if(this._getType(e)!==I.ZodParsedType.symbol){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.symbol,received:r.parsedType}),p.INVALID}return(0,p.OK)(e.data)}};f.ZodSymbol=Nt;Nt.create=t=>new Nt({typeName:v.ZodSymbol,...D(t)});var dt=class extends R{_parse(e){if(this._getType(e)!==I.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.undefined,received:r.parsedType}),p.INVALID}return(0,p.OK)(e.data)}};f.ZodUndefined=dt;dt.create=t=>new dt({typeName:v.ZodUndefined,...D(t)});var ft=class extends R{_parse(e){if(this._getType(e)!==I.ZodParsedType.null){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.null,received:r.parsedType}),p.INVALID}return(0,p.OK)(e.data)}};f.ZodNull=ft;ft.create=t=>new ft({typeName:v.ZodNull,...D(t)});var Ye=class extends R{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,p.OK)(e.data)}};f.ZodAny=Ye;Ye.create=t=>new Ye({typeName:v.ZodAny,...D(t)});var Me=class extends R{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,p.OK)(e.data)}};f.ZodUnknown=Me;Me.create=t=>new Me({typeName:v.ZodUnknown,...D(t)});var Se=class extends R{_parse(e){let s=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.never,received:s.parsedType}),p.INVALID}};f.ZodNever=Se;Se.create=t=>new Se({typeName:v.ZodNever,...D(t)});var qt=class extends R{_parse(e){if(this._getType(e)!==I.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.void,received:r.parsedType}),p.INVALID}return(0,p.OK)(e.data)}};f.ZodVoid=qt;qt.create=t=>new qt({typeName:v.ZodVoid,...D(t)});var Ge=class t extends R{_parse(e){let{ctx:s,status:r}=this._processInputParams(e),n=this._def;if(s.parsedType!==I.ZodParsedType.array)return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.array,received:s.parsedType}),p.INVALID;if(n.exactLength!==null){let i=s.data.length>n.exactLength.value,a=s.data.length<n.exactLength.value;(i||a)&&((0,p.addIssueToContext)(s,{code:i?x.ZodIssueCode.too_big:x.ZodIssueCode.too_small,minimum:a?n.exactLength.value:void 0,maximum:i?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(n.minLength!==null&&s.data.length<n.minLength.value&&((0,p.addIssueToContext)(s,{code:x.ZodIssueCode.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),n.maxLength!==null&&s.data.length>n.maxLength.value&&((0,p.addIssueToContext)(s,{code:x.ZodIssueCode.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),s.common.async)return Promise.all([...s.data].map((i,a)=>n.type._parseAsync(new _e(s,i,s.path,a)))).then(i=>p.ParseStatus.mergeArray(r,i));let o=[...s.data].map((i,a)=>n.type._parseSync(new _e(s,i,s.path,a)));return p.ParseStatus.mergeArray(r,o)}get element(){return this._def.type}min(e,s){return new t({...this._def,minLength:{value:e,message:T.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxLength:{value:e,message:T.errorUtil.toString(s)}})}length(e,s){return new t({...this._def,exactLength:{value:e,message:T.errorUtil.toString(s)}})}nonempty(e){return this.min(1,e)}};f.ZodArray=Ge;Ge.create=(t,e)=>new Ge({type:t,minLength:null,maxLength:null,exactLength:null,typeName:v.ZodArray,...D(e)});function Pt(t){if(t instanceof fe){let e={};for(let s in t.shape){let r=t.shape[s];e[s]=ye.create(Pt(r))}return new fe({...t._def,shape:()=>e})}else return t instanceof Ge?new Ge({...t._def,type:Pt(t.element)}):t instanceof ye?ye.create(Pt(t.unwrap())):t instanceof ve?ve.create(Pt(t.unwrap())):t instanceof Ue?Ue.create(t.items.map(e=>Pt(e))):t}var fe=class t extends R{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),s=I.util.objectKeys(e);return this._cached={shape:e,keys:s},this._cached}_parse(e){if(this._getType(e)!==I.ZodParsedType.object){let l=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(l,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:l.parsedType}),p.INVALID}let{status:r,ctx:n}=this._processInputParams(e),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Se&&this._def.unknownKeys==="strip"))for(let l in n.data)i.includes(l)||a.push(l);let c=[];for(let l of i){let u=o[l],d=n.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new _e(n,d,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof Se){let l=this._def.unknownKeys;if(l==="passthrough")for(let u of a)c.push({key:{status:"valid",value:u},value:{status:"valid",value:n.data[u]}});else if(l==="strict")a.length>0&&((0,p.addIssueToContext)(n,{code:x.ZodIssueCode.unrecognized_keys,keys:a}),r.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let u of a){let d=n.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new _e(n,d,n.path,u)),alwaysSet:u in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let l=[];for(let u of c){let d=await u.key,m=await u.value;l.push({key:d,value:m,alwaysSet:u.alwaysSet})}return l}).then(l=>p.ParseStatus.mergeObjectSync(r,l)):p.ParseStatus.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return T.errorUtil.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(s,r)=>{let n=this._def.errorMap?.(s,r).message??r.defaultError;return s.code==="unrecognized_keys"?{message:T.errorUtil.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:v.ZodObject})}setKey(e,s){return this.augment({[e]:s})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let s={};for(let r of I.util.objectKeys(e))e[r]&&this.shape[r]&&(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}omit(e){let s={};for(let r of I.util.objectKeys(this.shape))e[r]||(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}deepPartial(){return Pt(this)}partial(e){let s={};for(let r of I.util.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?s[r]=n:s[r]=n.optional()}return new t({...this._def,shape:()=>s})}required(e){let s={};for(let r of I.util.objectKeys(this.shape))if(e&&!e[r])s[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof ye;)o=o._def.innerType;s[r]=o}return new t({...this._def,shape:()=>s})}keyof(){return Ua(I.util.objectKeys(this.shape))}};f.ZodObject=fe;fe.create=(t,e)=>new fe({shape:()=>t,unknownKeys:"strip",catchall:Se.create(),typeName:v.ZodObject,...D(e)});fe.strictCreate=(t,e)=>new fe({shape:()=>t,unknownKeys:"strict",catchall:Se.create(),typeName:v.ZodObject,...D(e)});fe.lazycreate=(t,e)=>new fe({shape:t,unknownKeys:"strip",catchall:Se.create(),typeName:v.ZodObject,...D(e)});var pt=class extends R{_parse(e){let{ctx:s}=this._processInputParams(e),r=this._def.options;function n(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return s.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new x.ZodError(a.ctx.common.issues));return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_union,unionErrors:i}),p.INVALID}if(s.common.async)return Promise.all(r.map(async o=>{let i={...s,common:{...s.common,issues:[]},parent:null};return{result:await o._parseAsync({data:s.data,path:s.path,parent:i}),ctx:i}})).then(n);{let o,i=[];for(let c of r){let l={...s,common:{...s.common,issues:[]},parent:null},u=c._parseSync({data:s.data,path:s.path,parent:l});if(u.status==="valid")return u;u.status==="dirty"&&!o&&(o={result:u,ctx:l}),l.common.issues.length&&i.push(l.common.issues)}if(o)return s.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(c=>new x.ZodError(c));return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_union,unionErrors:a}),p.INVALID}}get options(){return this._def.options}};f.ZodUnion=pt;pt.create=(t,e)=>new pt({options:t,typeName:v.ZodUnion,...D(e)});var je=t=>t instanceof ht?je(t.schema):t instanceof me?je(t.innerType()):t instanceof gt?[t.value]:t instanceof yt?t.options:t instanceof _t?I.util.objectValues(t.enum):t instanceof wt?je(t._def.innerType):t instanceof dt?[void 0]:t instanceof ft?[null]:t instanceof ye?[void 0,...je(t.unwrap())]:t instanceof ve?[null,...je(t.unwrap())]:t instanceof ms||t instanceof kt?je(t.unwrap()):t instanceof bt?je(t._def.innerType):[],zs=class t extends R{_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.object)return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:s.parsedType}),p.INVALID;let r=this.discriminator,n=s.data[r],o=this.optionsMap.get(n);return o?s.common.async?o._parseAsync({data:s.data,path:s.path,parent:s}):o._parseSync({data:s.data,path:s.path,parent:s}):((0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),p.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,s,r){let n=new Map;for(let o of s){let i=je(o.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let a of i){if(n.has(a))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(a)}`);n.set(a,o)}}return new t({typeName:v.ZodDiscriminatedUnion,discriminator:e,options:s,optionsMap:n,...D(r)})}};f.ZodDiscriminatedUnion=zs;function _n(t,e){let s=(0,I.getParsedType)(t),r=(0,I.getParsedType)(e);if(t===e)return{valid:!0,data:t};if(s===I.ZodParsedType.object&&r===I.ZodParsedType.object){let n=I.util.objectKeys(e),o=I.util.objectKeys(t).filter(a=>n.indexOf(a)!==-1),i={...t,...e};for(let a of o){let c=_n(t[a],e[a]);if(!c.valid)return{valid:!1};i[a]=c.data}return{valid:!0,data:i}}else if(s===I.ZodParsedType.array&&r===I.ZodParsedType.array){if(t.length!==e.length)return{valid:!1};let n=[];for(let o=0;o<t.length;o++){let i=t[o],a=e[o],c=_n(i,a);if(!c.valid)return{valid:!1};n.push(c.data)}return{valid:!0,data:n}}else return s===I.ZodParsedType.date&&r===I.ZodParsedType.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}var mt=class extends R{_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=(o,i)=>{if((0,p.isAborted)(o)||(0,p.isAborted)(i))return p.INVALID;let a=_n(o.value,i.value);return a.valid?(((0,p.isDirty)(o)||(0,p.isDirty)(i))&&s.dirty(),{status:s.value,value:a.data}):((0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_intersection_types}),p.INVALID)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>n(o,i)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};f.ZodIntersection=mt;mt.create=(t,e,s)=>new mt({left:t,right:e,typeName:v.ZodIntersection,...D(s)});var Ue=class t extends R{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.array)return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.array,received:r.parsedType}),p.INVALID;if(r.data.length<this._def.items.length)return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),p.INVALID;!this._def.rest&&r.data.length>this._def.items.length&&((0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),s.dirty());let o=[...r.data].map((i,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new _e(r,i,r.path,a)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>p.ParseStatus.mergeArray(s,i)):p.ParseStatus.mergeArray(s,o)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};f.ZodTuple=Ue;Ue.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ue({items:t,typeName:v.ZodTuple,rest:null,...D(e)})};var Js=class t extends R{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.object)return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:r.parsedType}),p.INVALID;let n=[],o=this._def.keyType,i=this._def.valueType;for(let a in r.data)n.push({key:o._parse(new _e(r,a,r.path,a)),value:i._parse(new _e(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?p.ParseStatus.mergeObjectAsync(s,n):p.ParseStatus.mergeObjectSync(s,n)}get element(){return this._def.valueType}static create(e,s,r){return s instanceof R?new t({keyType:e,valueType:s,typeName:v.ZodRecord,...D(r)}):new t({keyType:He.create(),valueType:e,typeName:v.ZodRecord,...D(s)})}};f.ZodRecord=Js;var jt=class extends R{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.map)return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.map,received:r.parsedType}),p.INVALID;let n=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([a,c],l)=>({key:n._parse(new _e(r,a,r.path,[l,"key"])),value:o._parse(new _e(r,c,r.path,[l,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of i){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return p.INVALID;(l.status==="dirty"||u.status==="dirty")&&s.dirty(),a.set(l.value,u.value)}return{status:s.value,value:a}})}else{let a=new Map;for(let c of i){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return p.INVALID;(l.status==="dirty"||u.status==="dirty")&&s.dirty(),a.set(l.value,u.value)}return{status:s.value,value:a}}}};f.ZodMap=jt;jt.create=(t,e,s)=>new jt({valueType:e,keyType:t,typeName:v.ZodMap,...D(s)});var Mt=class t extends R{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.set)return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.set,received:r.parsedType}),p.INVALID;let n=this._def;n.minSize!==null&&r.data.size<n.minSize.value&&((0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),s.dirty()),n.maxSize!==null&&r.data.size>n.maxSize.value&&((0,p.addIssueToContext)(r,{code:x.ZodIssueCode.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),s.dirty());let o=this._def.valueType;function i(c){let l=new Set;for(let u of c){if(u.status==="aborted")return p.INVALID;u.status==="dirty"&&s.dirty(),l.add(u.value)}return{status:s.value,value:l}}let a=[...r.data.values()].map((c,l)=>o._parse(new _e(r,c,r.path,l)));return r.common.async?Promise.all(a).then(c=>i(c)):i(a)}min(e,s){return new t({...this._def,minSize:{value:e,message:T.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxSize:{value:e,message:T.errorUtil.toString(s)}})}size(e,s){return this.min(e,s).max(e,s)}nonempty(e){return this.min(1,e)}};f.ZodSet=Mt;Mt.create=(t,e)=>new Mt({valueType:t,minSize:null,maxSize:null,typeName:v.ZodSet,...D(e)});var Hs=class t extends R{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.function)return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.function,received:s.parsedType}),p.INVALID;function r(a,c){return(0,p.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,Ks.getErrorMap)(),Ks.defaultErrorMap].filter(l=>!!l),issueData:{code:x.ZodIssueCode.invalid_arguments,argumentsError:c}})}function n(a,c){return(0,p.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,Ks.getErrorMap)(),Ks.defaultErrorMap].filter(l=>!!l),issueData:{code:x.ZodIssueCode.invalid_return_type,returnTypeError:c}})}let o={errorMap:s.common.contextualErrorMap},i=s.data;if(this._def.returns instanceof Xe){let a=this;return(0,p.OK)(async function(...c){let l=new x.ZodError([]),u=await a._def.args.parseAsync(c,o).catch(h=>{throw l.addIssue(r(c,h)),l}),d=await Reflect.apply(i,this,u);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw l.addIssue(n(d,h)),l})})}else{let a=this;return(0,p.OK)(function(...c){let l=a._def.args.safeParse(c,o);if(!l.success)throw new x.ZodError([r(c,l.error)]);let u=Reflect.apply(i,this,l.data),d=a._def.returns.safeParse(u,o);if(!d.success)throw new x.ZodError([n(u,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Ue.create(e).rest(Me.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,s,r){return new t({args:e||Ue.create([]).rest(Me.create()),returns:s||Me.create(),typeName:v.ZodFunction,...D(r)})}};f.ZodFunction=Hs;var ht=class extends R{get schema(){return this._def.getter()}_parse(e){let{ctx:s}=this._processInputParams(e);return this._def.getter()._parse({data:s.data,path:s.path,parent:s})}};f.ZodLazy=ht;ht.create=(t,e)=>new ht({getter:t,typeName:v.ZodLazy,...D(e)});var gt=class extends R{_parse(e){if(e.data!==this._def.value){let s=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(s,{received:s.data,code:x.ZodIssueCode.invalid_literal,expected:this._def.value}),p.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}};f.ZodLiteral=gt;gt.create=(t,e)=>new gt({value:t,typeName:v.ZodLiteral,...D(e)});function Ua(t,e){return new yt({values:t,typeName:v.ZodEnum,...D(e)})}var yt=class t extends R{_parse(e){if(typeof e.data!="string"){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,p.addIssueToContext)(s,{expected:I.util.joinValues(r),received:s.parsedType,code:x.ZodIssueCode.invalid_type}),p.INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,p.addIssueToContext)(s,{received:s.data,code:x.ZodIssueCode.invalid_enum_value,options:r}),p.INVALID}return(0,p.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let s of this._def.values)e[s]=s;return e}get Values(){let e={};for(let s of this._def.values)e[s]=s;return e}get Enum(){let e={};for(let s of this._def.values)e[s]=s;return e}extract(e,s=this._def){return t.create(e,{...this._def,...s})}exclude(e,s=this._def){return t.create(this.options.filter(r=>!e.includes(r)),{...this._def,...s})}};f.ZodEnum=yt;yt.create=Ua;var _t=class extends R{_parse(e){let s=I.util.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==I.ZodParsedType.string&&r.parsedType!==I.ZodParsedType.number){let n=I.util.objectValues(s);return(0,p.addIssueToContext)(r,{expected:I.util.joinValues(n),received:r.parsedType,code:x.ZodIssueCode.invalid_type}),p.INVALID}if(this._cache||(this._cache=new Set(I.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=I.util.objectValues(s);return(0,p.addIssueToContext)(r,{received:r.data,code:x.ZodIssueCode.invalid_enum_value,options:n}),p.INVALID}return(0,p.OK)(e.data)}get enum(){return this._def.values}};f.ZodNativeEnum=_t;_t.create=(t,e)=>new _t({values:t,typeName:v.ZodNativeEnum,...D(e)});var Xe=class extends R{unwrap(){return this._def.type}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.promise&&s.common.async===!1)return(0,p.addIssueToContext)(s,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.promise,received:s.parsedType}),p.INVALID;let r=s.parsedType===I.ZodParsedType.promise?s.data:Promise.resolve(s.data);return(0,p.OK)(r.then(n=>this._def.type.parseAsync(n,{path:s.path,errorMap:s.common.contextualErrorMap})))}};f.ZodPromise=Xe;Xe.create=(t,e)=>new Xe({type:t,typeName:v.ZodPromise,...D(e)});var me=class extends R{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===v.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=this._def.effect||null,o={addIssue:i=>{(0,p.addIssueToContext)(r,i),i.fatal?s.abort():s.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),n.type==="preprocess"){let i=n.transform(r.data,o);if(r.common.async)return Promise.resolve(i).then(async a=>{if(s.value==="aborted")return p.INVALID;let c=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return c.status==="aborted"?p.INVALID:c.status==="dirty"||s.value==="dirty"?(0,p.DIRTY)(c.value):c});{if(s.value==="aborted")return p.INVALID;let a=this._def.schema._parseSync({data:i,path:r.path,parent:r});return a.status==="aborted"?p.INVALID:a.status==="dirty"||s.value==="dirty"?(0,p.DIRTY)(a.value):a}}if(n.type==="refinement"){let i=a=>{let c=n.refinement(a,o);if(r.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?p.INVALID:(a.status==="dirty"&&s.dirty(),i(a.value),{status:s.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?p.INVALID:(a.status==="dirty"&&s.dirty(),i(a.value).then(()=>({status:s.value,value:a.value}))))}if(n.type==="transform")if(r.common.async===!1){let i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!(0,p.isValid)(i))return p.INVALID;let a=n.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:s.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>(0,p.isValid)(i)?Promise.resolve(n.transform(i.value,o)).then(a=>({status:s.value,value:a})):p.INVALID);I.util.assertNever(n)}};f.ZodEffects=me;f.ZodTransformer=me;me.create=(t,e,s)=>new me({schema:t,typeName:v.ZodEffects,effect:e,...D(s)});me.createWithPreprocess=(t,e,s)=>new me({schema:e,effect:{type:"preprocess",transform:t},typeName:v.ZodEffects,...D(s)});var ye=class extends R{_parse(e){return this._getType(e)===I.ZodParsedType.undefined?(0,p.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodOptional=ye;ye.create=(t,e)=>new ye({innerType:t,typeName:v.ZodOptional,...D(e)});var ve=class extends R{_parse(e){return this._getType(e)===I.ZodParsedType.null?(0,p.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodNullable=ve;ve.create=(t,e)=>new ve({innerType:t,typeName:v.ZodNullable,...D(e)});var wt=class extends R{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return s.parsedType===I.ZodParsedType.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:s.path,parent:s})}removeDefault(){return this._def.innerType}};f.ZodDefault=wt;wt.create=(t,e)=>new wt({innerType:t,typeName:v.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...D(e)});var bt=class extends R{_parse(e){let{ctx:s}=this._processInputParams(e),r={...s,common:{...s.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return(0,p.isAsync)(n)?n.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new x.ZodError(r.common.issues)},input:r.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new x.ZodError(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};f.ZodCatch=bt;bt.create=(t,e)=>new bt({innerType:t,typeName:v.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...D(e)});var Gt=class extends R{_parse(e){if(this._getType(e)!==I.ZodParsedType.nan){let r=this._getOrReturnCtx(e);return(0,p.addIssueToContext)(r,{code:x.ZodIssueCode.invalid_type,expected:I.ZodParsedType.nan,received:r.parsedType}),p.INVALID}return{status:"valid",value:e.data}}};f.ZodNaN=Gt;Gt.create=t=>new Gt({typeName:v.ZodNaN,...D(t)});f.BRAND=Symbol("zod_brand");var ms=class extends R{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return this._def.type._parse({data:r,path:s.path,parent:s})}unwrap(){return this._def.type}};f.ZodBranded=ms;var hs=class t extends R{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?p.INVALID:o.status==="dirty"?(s.dirty(),(0,p.DIRTY)(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let n=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return n.status==="aborted"?p.INVALID:n.status==="dirty"?(s.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:r.path,parent:r})}}static create(e,s){return new t({in:e,out:s,typeName:v.ZodPipeline})}};f.ZodPipeline=hs;var kt=class extends R{_parse(e){let s=this._def.innerType._parse(e),r=n=>((0,p.isValid)(n)&&(n.value=Object.freeze(n.value)),n);return(0,p.isAsync)(s)?s.then(n=>r(n)):r(s)}unwrap(){return this._def.innerType}};f.ZodReadonly=kt;kt.create=(t,e)=>new kt({innerType:t,typeName:v.ZodReadonly,...D(e)});function Ea(t,e){let s=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof s=="string"?{message:s}:s}function va(t,e={},s){return t?Ye.create().superRefine((r,n)=>{let o=t(r);if(o instanceof Promise)return o.then(i=>{if(!i){let a=Ea(e,r),c=a.fatal??s??!0;n.addIssue({code:"custom",...a,fatal:c})}});if(!o){let i=Ea(e,r),a=i.fatal??s??!0;n.addIssue({code:"custom",...i,fatal:a})}}):Ye.create()}f.late={object:fe.lazycreate};var v;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(v||(f.ZodFirstPartyTypeKind=v={}));var zm=(t,e={message:`Input not instance of ${t.name}`})=>va(s=>s instanceof t,e);f.instanceof=zm;var Oa=He.create;f.string=Oa;var Da=at.create;f.number=Da;var Jm=Gt.create;f.nan=Jm;var Hm=ct.create;f.bigint=Hm;var Ra=lt.create;f.boolean=Ra;var Ym=ut.create;f.date=Ym;var Xm=Nt.create;f.symbol=Xm;var Qm=dt.create;f.undefined=Qm;var eh=ft.create;f.null=eh;var th=Ye.create;f.any=th;var sh=Me.create;f.unknown=sh;var rh=Se.create;f.never=rh;var nh=qt.create;f.void=nh;var oh=Ge.create;f.array=oh;var ih=fe.create;f.object=ih;var ah=fe.strictCreate;f.strictObject=ah;var ch=pt.create;f.union=ch;var lh=zs.create;f.discriminatedUnion=lh;var uh=mt.create;f.intersection=uh;var dh=Ue.create;f.tuple=dh;var fh=Js.create;f.record=fh;var ph=jt.create;f.map=ph;var mh=Mt.create;f.set=mh;var hh=Hs.create;f.function=hh;var gh=ht.create;f.lazy=gh;var yh=gt.create;f.literal=yh;var _h=yt.create;f.enum=_h;var wh=_t.create;f.nativeEnum=wh;var bh=Xe.create;f.promise=bh;var La=me.create;f.effect=La;f.transformer=La;var kh=ye.create;f.optional=kh;var xh=ve.create;f.nullable=xh;var Sh=me.createWithPreprocess;f.preprocess=Sh;var Ih=hs.create;f.pipeline=Ih;var Ch=()=>Oa().optional();f.ostring=Ch;var Eh=()=>Da().optional();f.onumber=Eh;var Ah=()=>Ra().optional();f.oboolean=Ah;f.coerce={string:(t=>He.create({...t,coerce:!0})),number:(t=>at.create({...t,coerce:!0})),boolean:(t=>lt.create({...t,coerce:!0})),bigint:(t=>ct.create({...t,coerce:!0})),date:(t=>ut.create({...t,coerce:!0}))};f.NEVER=p.INVALID});var wn=k(we=>{"use strict";var $h=we&&we.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,n)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),Bt=we&&we.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&$h(e,t,s)};Object.defineProperty(we,"__esModule",{value:!0});Bt(Vs(),we);Bt(gn(),we);Bt(xa(),we);Bt(fs(),we);Bt(Pa(),we);Bt(Zs(),we)});var ja=k(pe=>{"use strict";var Na=pe&&pe.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,n)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),Th=pe&&pe.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Uh=pe&&pe.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var s in t)s!=="default"&&Object.prototype.hasOwnProperty.call(t,s)&&Na(e,t,s);return Th(e,t),e},vh=pe&&pe.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&Na(e,t,s)};Object.defineProperty(pe,"__esModule",{value:!0});pe.z=void 0;var qa=Uh(wn());pe.z=qa;vh(wn(),pe);pe.default=qa});var Ys=k((Ux,Fa)=>{var bn=null;function kn(){return bn||(bn=ja().z),bn}function Ma(){return kn().string().trim().refine(t=>{let e=t.indexOf(".");return e>0&&e<t.length-1},{message:"API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk>"})}function Ga(){return kn().string().refine(t=>{try{return JSON.parse(t),!0}catch{return!1}},{message:"--meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON"})}function Ba(){return kn().string().trim().refine(t=>/^https?:\/\/[^\s]+$/i.test(t),{message:"registry \u5FC5\u987B\u662F http(s):// \u5F00\u5934\u7684 URL"})}function Oh(t){let e=Ma().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function Dh(t){let e=Ga().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function Rh(t){let e=Ba().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}Fa.exports={apiKeySchema:Ma,pubMetaDataSchema:Ga,registrySchema:Ba,validateApiKey:Oh,validatePubMetaData:Dh,validateRegistry:Rh}});var Va=k((vx,Za)=>{var Lh=ha(),{validateApiKey:Ph}=Ys();function Nh(t,e){let s=new Lh(e),r=t.command("auth").description("\u7BA1\u7406\u8EAB\u4EFD\u9A8C\u8BC1\u51ED\u8BC1");r.command("login").description("\u767B\u5F55 MakeCoder\uFF08\u6D4F\u89C8\u5668\u6216\u7EC8\u7AEF\u8F93\u5165 API Key\uFF09").option("--apikey <key>","\u76F4\u63A5\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09").action(async n=>{if(n.apikey){let o=Ph(n.apikey);if(!o.ok){e.fail(o.error,"API Key \u5F62\u5982 <ak>.<sk>\uFF0C\u83B7\u53D6: https://makecoder.com/my/apikeys"),process.exitCode=1;return}process.exitCode=await s.handle({authSubcommand:"login",authRemainingArgs:["--apikey",o.value],coderBaseUrl:e.getCoderBaseUrl()})||0;return}if(e.isNonInteractive){e.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`"),process.exitCode=1;return}process.exitCode=await s.handle({authSubcommand:"login",authRemainingArgs:[],coderBaseUrl:e.getCoderBaseUrl()})||0}),r.command("logout").description("\u9000\u51FA\u767B\u5F55\uFF0C\u6E05\u9664\u5DF2\u4FDD\u5B58\u7684 API Key").action(async()=>{process.exitCode=await s.handle({authSubcommand:"logout"})||0}),r.command("status").description("\u67E5\u770B\u5F53\u524D\u767B\u5F55\u72B6\u6001").action(async()=>{process.exitCode=await s.handle({authSubcommand:"status"})||0})}Za.exports={register:Nh}});var za=k((Ox,Ka)=>{var Ie=require("fs"),xt=require("path"),qh=require("readline"),{execSync:Xs}=require("child_process"),Wa=require("os"),xn=class{constructor(){this.serverUrl="https://makecoder.com/bigapis/codev/v1/coderpub"}getClaudeJsonlPath(e,s=!1){let r=e.replace(/[/_]/g,"-"),n=xt.join(Wa.homedir(),".claude","projects",r);if(s&&(console.log(`
286
- \u{1F4C2} [allow-clone] \u67E5\u627E JSONL \u6587\u4EF6...`),console.log(` \u9879\u76EE\u76EE\u5F55: ${e}`),console.log(` Claude \u9879\u76EE\u540D: ${r}`),console.log(` Claude \u9879\u76EE\u76EE\u5F55: ${n}`)),!Ie.existsSync(n))return s&&console.log(" \u274C Claude \u9879\u76EE\u76EE\u5F55\u4E0D\u5B58\u5728"),null;s&&console.log(" \u2713 Claude \u9879\u76EE\u76EE\u5F55\u5B58\u5728");try{let o=Ie.readdirSync(n).filter(i=>i.endsWith(".jsonl")).map(i=>({name:i,path:xt.join(n,i),mtime:Ie.statSync(xt.join(n,i)).mtime,size:Ie.statSync(xt.join(n,i)).size})).sort((i,a)=>a.mtime-i.mtime);return s&&(console.log(` \u627E\u5230 ${o.length} \u4E2A JSONL \u6587\u4EF6:`),o.forEach((i,a)=>{let c=(i.size/1024).toFixed(2),l=i.mtime.toLocaleString(),u=a===0?" <- \u6700\u65B0":"";console.log(` ${a+1}. ${i.name} (${c} KB, ${l})${u}`)})),o.length>0?(s&&console.log(` \u2713 \u9009\u62E9\u6700\u65B0\u6587\u4EF6: ${o[0].name}`),o[0].path):(s&&console.log(" \u274C \u76EE\u5F55\u4E2D\u6CA1\u6709 JSONL \u6587\u4EF6"),null)}catch(o){return s&&console.log(` \u274C \u8BFB\u53D6\u76EE\u5F55\u5931\u8D25: ${o.message}`),null}}async promptForName(){let e=qh.createInterface({input:process.stdin,output:process.stdout});return new Promise((s,r)=>{e.question("\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0 (name): ",n=>{e.close();let o=n.trim();if(!o){r(new Error("\u9879\u76EE\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A"));return}if(!/^[a-zA-Z0-9_-]+$/.test(o)){r(new Error("\u9879\u76EE\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u548C\u8FDE\u5B57\u7B26"));return}s(o)})})}async createZip(e,s={}){let{allowClone:r=!1}=s,n=Wa.tmpdir(),o=`coder-pub-${Date.now()}.zip`,i=xt.join(n,o);try{let a=!1;if(Ie.existsSync(xt.join(e,".git")))try{Xs(`git archive -o "${i}" HEAD`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u4F7F\u7528 git archive \u521B\u5EFA\u538B\u7F29\u5305\uFF08\u5DF2\u6392\u9664 .gitignore \u4E2D\u7684\u6587\u4EF6\uFF09"),a=!0}catch{console.log("\u26A0\uFE0F git archive \u5931\u8D25\uFF0C\u4F7F\u7528\u666E\u901A zip \u547D\u4EE4")}if(!a){let l=[".git/*","node_modules/*",".env",".env.*","*.log",".DS_Store"].map(u=>`-x "${u}"`).join(" ");Xs(`zip -r "${i}" . ${l}`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u5DF2\u521B\u5EFA\u538B\u7F29\u5305")}if(r){console.log(`
287
- \u{1F504} [allow-clone] \u5F00\u59CB\u5904\u7406 AI \u751F\u6210\u8BB0\u5F55...`);let c=this.getClaudeJsonlPath(e,!0);if(c){let l=xt.join(n,"coder.pub.jsonl"),d=(Ie.statSync(c).size/1024).toFixed(2);console.log(`
288
- \u{1F4E6} [allow-clone] \u6253\u5305 JSONL \u6587\u4EF6...`),console.log(` \u6E90\u6587\u4EF6: ${c}`),console.log(` \u6587\u4EF6\u5927\u5C0F: ${d} KB`),console.log(` \u4E34\u65F6\u6587\u4EF6: ${l}`),Ie.copyFileSync(c,l),console.log(" \u2713 \u5DF2\u590D\u5236\u5230\u4E34\u65F6\u76EE\u5F55"),console.log(` \u76EE\u6807 ZIP: ${i}`),console.log(" \u76EE\u6807\u6587\u4EF6\u540D: coder.pub.jsonl"),Xs(`zip -j "${i}" "${l}"`,{stdio:"pipe"}),console.log(" \u2713 \u5DF2\u6DFB\u52A0\u5230 ZIP \u5305"),Ie.unlinkSync(l),console.log(" \u2713 \u5DF2\u6E05\u7406\u4E34\u65F6\u6587\u4EF6"),console.log(`\u{1F4CB} [allow-clone] AI \u751F\u6210\u8BB0\u5F55\u5904\u7406\u5B8C\u6210 (coder.pub.jsonl)
285
+ `)}};wa.exports=gn});var gs=k(z=>{"use strict";Object.defineProperty(z,"__esModule",{value:!0});z.getParsedType=z.ZodParsedType=z.objectUtil=z.util=void 0;var yn;(function(t){t.assertEqual=n=>{};function e(n){}t.assertIs=e;function s(n){throw new Error}t.assertNever=s,t.arrayToEnum=n=>{let o={};for(let i of n)o[i]=i;return o},t.getValidEnumValues=n=>{let o=t.objectKeys(n).filter(a=>typeof n[n[a]]!="number"),i={};for(let a of o)i[a]=n[a];return t.objectValues(i)},t.objectValues=n=>t.objectKeys(n).map(function(o){return n[o]}),t.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let o=[];for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&o.push(i);return o},t.find=(n,o)=>{for(let i of n)if(o(i))return i},t.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function r(n,o=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}t.joinValues=r,t.jsonStringifyReplacer=(n,o)=>typeof o=="bigint"?o.toString():o})(yn||(z.util=yn={}));var ka;(function(t){t.mergeShapes=(e,s)=>({...e,...s})})(ka||(z.objectUtil=ka={}));z.ZodParsedType=yn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);var ym=t=>{switch(typeof t){case"undefined":return z.ZodParsedType.undefined;case"string":return z.ZodParsedType.string;case"number":return Number.isNaN(t)?z.ZodParsedType.nan:z.ZodParsedType.number;case"boolean":return z.ZodParsedType.boolean;case"function":return z.ZodParsedType.function;case"bigint":return z.ZodParsedType.bigint;case"symbol":return z.ZodParsedType.symbol;case"object":return Array.isArray(t)?z.ZodParsedType.array:t===null?z.ZodParsedType.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?z.ZodParsedType.promise:typeof Map<"u"&&t instanceof Map?z.ZodParsedType.map:typeof Set<"u"&&t instanceof Set?z.ZodParsedType.set:typeof Date<"u"&&t instanceof Date?z.ZodParsedType.date:z.ZodParsedType.object;default:return z.ZodParsedType.unknown}};z.getParsedType=ym});var Js=k(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.ZodError=Ye.quotelessJson=Ye.ZodIssueCode=void 0;var xa=gs();Ye.ZodIssueCode=xa.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);var _m=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:");Ye.quotelessJson=_m;var ys=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let s=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,s):this.__proto__=s,this.name="ZodError",this.issues=e}format(e){let s=e||function(o){return o.message},r={_errors:[]},n=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(n);else if(i.code==="invalid_return_type")n(i.returnTypeError);else if(i.code==="invalid_arguments")n(i.argumentsError);else if(i.path.length===0)r._errors.push(s(i));else{let a=r,c=0;for(;c<i.path.length;){let l=i.path[c];c===i.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(s(i))):a[l]=a[l]||{_errors:[]},a=a[l],c++}}};return n(this),r}static assert(e){if(!(e instanceof t))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,xa.util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=s=>s.message){let s={},r=[];for(let n of this.issues)if(n.path.length>0){let o=n.path[0];s[o]=s[o]||[],s[o].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:s}}get formErrors(){return this.flatten()}};Ye.ZodError=ys;ys.create=t=>new ys(t)});var wn=k(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});var ae=Js(),ut=gs(),wm=(t,e)=>{let s;switch(t.code){case ae.ZodIssueCode.invalid_type:t.received===ut.ZodParsedType.undefined?s="Required":s=`Expected ${t.expected}, received ${t.received}`;break;case ae.ZodIssueCode.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(t.expected,ut.util.jsonStringifyReplacer)}`;break;case ae.ZodIssueCode.unrecognized_keys:s=`Unrecognized key(s) in object: ${ut.util.joinValues(t.keys,", ")}`;break;case ae.ZodIssueCode.invalid_union:s="Invalid input";break;case ae.ZodIssueCode.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${ut.util.joinValues(t.options)}`;break;case ae.ZodIssueCode.invalid_enum_value:s=`Invalid enum value. Expected ${ut.util.joinValues(t.options)}, received '${t.received}'`;break;case ae.ZodIssueCode.invalid_arguments:s="Invalid function arguments";break;case ae.ZodIssueCode.invalid_return_type:s="Invalid function return type";break;case ae.ZodIssueCode.invalid_date:s="Invalid date";break;case ae.ZodIssueCode.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(s=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(s=`${s} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?s=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?s=`Invalid input: must end with "${t.validation.endsWith}"`:ut.util.assertNever(t.validation):t.validation!=="regex"?s=`Invalid ${t.validation}`:s="Invalid";break;case ae.ZodIssueCode.too_small:t.type==="array"?s=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?s=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?s=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?s=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?s=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:s="Invalid input";break;case ae.ZodIssueCode.too_big:t.type==="array"?s=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?s=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?s=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?s=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?s=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:s="Invalid input";break;case ae.ZodIssueCode.custom:s="Invalid input";break;case ae.ZodIssueCode.invalid_intersection_types:s="Intersection results could not be merged";break;case ae.ZodIssueCode.not_multiple_of:s=`Number must be a multiple of ${t.multipleOf}`;break;case ae.ZodIssueCode.not_finite:s="Number must be finite";break;default:s=e.defaultError,ut.util.assertNever(t)}return{message:s}};_n.default=wm});var Hs=k(Xe=>{"use strict";var bm=Xe&&Xe.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xe,"__esModule",{value:!0});Xe.defaultErrorMap=void 0;Xe.setErrorMap=km;Xe.getErrorMap=xm;var Sa=bm(wn());Xe.defaultErrorMap=Sa.default;var Ia=Sa.default;function km(t){Ia=t}function xm(){return Ia}});var kn=k(F=>{"use strict";var Sm=F&&F.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(F,"__esModule",{value:!0});F.isAsync=F.isValid=F.isDirty=F.isAborted=F.OK=F.DIRTY=F.INVALID=F.ParseStatus=F.EMPTY_PATH=F.makeIssue=void 0;F.addIssueToContext=Em;var Im=Hs(),Ca=Sm(wn()),Cm=t=>{let{data:e,path:s,errorMaps:r,issueData:n}=t,o=[...s,...n.path||[]],i={...n,path:o};if(n.message!==void 0)return{...n,path:o,message:n.message};let a="",c=r.filter(l=>!!l).slice().reverse();for(let l of c)a=l(i,{data:e,defaultError:a}).message;return{...n,path:o,message:a}};F.makeIssue=Cm;F.EMPTY_PATH=[];function Em(t,e){let s=(0,Im.getErrorMap)(),r=(0,F.makeIssue)({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,s,s===Ca.default?void 0:Ca.default].filter(n=>!!n)});t.common.issues.push(r)}var bn=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,s){let r=[];for(let n of s){if(n.status==="aborted")return F.INVALID;n.status==="dirty"&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,s){let r=[];for(let n of s){let o=await n.key,i=await n.value;r.push({key:o,value:i})}return t.mergeObjectSync(e,r)}static mergeObjectSync(e,s){let r={};for(let n of s){let{key:o,value:i}=n;if(o.status==="aborted"||i.status==="aborted")return F.INVALID;o.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(r[o.value]=i.value)}return{status:e.value,value:r}}};F.ParseStatus=bn;F.INVALID=Object.freeze({status:"aborted"});var Am=t=>({status:"dirty",value:t});F.DIRTY=Am;var $m=t=>({status:"valid",value:t});F.OK=$m;var Tm=t=>t.status==="aborted";F.isAborted=Tm;var Um=t=>t.status==="dirty";F.isDirty=Um;var vm=t=>t.status==="valid";F.isValid=vm;var Om=t=>typeof Promise<"u"&&t instanceof Promise;F.isAsync=Om});var Aa=k(Ea=>{"use strict";Object.defineProperty(Ea,"__esModule",{value:!0})});var Ta=k(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.errorUtil=void 0;var $a;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})($a||(Ys.errorUtil=$a={}))});var Ga=k(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.discriminatedUnion=f.date=f.boolean=f.bigint=f.array=f.any=f.coerce=f.ZodFirstPartyTypeKind=f.late=f.ZodSchema=f.Schema=f.ZodReadonly=f.ZodPipeline=f.ZodBranded=f.BRAND=f.ZodNaN=f.ZodCatch=f.ZodDefault=f.ZodNullable=f.ZodOptional=f.ZodTransformer=f.ZodEffects=f.ZodPromise=f.ZodNativeEnum=f.ZodEnum=f.ZodLiteral=f.ZodLazy=f.ZodFunction=f.ZodSet=f.ZodMap=f.ZodRecord=f.ZodTuple=f.ZodIntersection=f.ZodDiscriminatedUnion=f.ZodUnion=f.ZodObject=f.ZodArray=f.ZodVoid=f.ZodNever=f.ZodUnknown=f.ZodAny=f.ZodNull=f.ZodUndefined=f.ZodSymbol=f.ZodDate=f.ZodBoolean=f.ZodBigInt=f.ZodNumber=f.ZodString=f.ZodType=void 0;f.NEVER=f.void=f.unknown=f.union=f.undefined=f.tuple=f.transformer=f.symbol=f.string=f.strictObject=f.set=f.record=f.promise=f.preprocess=f.pipeline=f.ostring=f.optional=f.onumber=f.oboolean=f.object=f.number=f.nullable=f.null=f.never=f.nativeEnum=f.nan=f.map=f.literal=f.lazy=f.intersection=f.instanceof=f.function=f.enum=f.effect=void 0;f.datetimeRegex=Ra;f.custom=Pa;var S=Js(),Xs=Hs(),T=Ta(),m=kn(),I=gs(),xe=class{constructor(e,s,r,n){this._cachedPath=[],this.parent=e,this.data=s,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ua=(t,e)=>{if((0,m.isValid)(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let s=new S.ZodError(t.common.issues);return this._error=s,this._error}}};function R(t){if(!t)return{};let{errorMap:e,invalid_type_error:s,required_error:r,description:n}=t;if(e&&(s||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(i,a)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??r??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:c??s??a.defaultError}},description:n}}var L=class{get description(){return this._def.description}_getType(e){return(0,I.getParsedType)(e.data)}_getOrReturnCtx(e,s){return s||{common:e.parent.common,data:e.data,parsedType:(0,I.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new m.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,I.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let s=this._parse(e);if((0,m.isAsync)(s))throw new Error("Synchronous parse encountered promise.");return s}_parseAsync(e){let s=this._parse(e);return Promise.resolve(s)}parse(e,s){let r=this.safeParse(e,s);if(r.success)return r.data;throw r.error}safeParse(e,s){let r={common:{issues:[],async:s?.async??!1,contextualErrorMap:s?.errorMap},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)},n=this._parseSync({data:e,path:r.path,parent:r});return Ua(r,n)}"~validate"(e){let s={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:s});return(0,m.isValid)(r)?{value:r.value}:{issues:s.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),s.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:s}).then(r=>(0,m.isValid)(r)?{value:r.value}:{issues:s.common.issues})}async parseAsync(e,s){let r=await this.safeParseAsync(e,s);if(r.success)return r.data;throw r.error}async safeParseAsync(e,s){let r={common:{issues:[],contextualErrorMap:s?.errorMap,async:!0},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,I.getParsedType)(e)},n=this._parse({data:e,path:r.path,parent:r}),o=await((0,m.isAsync)(n)?n:Promise.resolve(n));return Ua(r,o)}refine(e,s){let r=n=>typeof s=="string"||typeof s>"u"?{message:s}:typeof s=="function"?s(n):s;return this._refinement((n,o)=>{let i=e(n),a=()=>o.addIssue({code:S.ZodIssueCode.custom,...r(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,s){return this._refinement((r,n)=>e(r)?!0:(n.addIssue(typeof s=="function"?s(r,n):s),!1))}_refinement(e){return new ye({schema:this,typeName:v.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:s=>this["~validate"](s)}}optional(){return ke.create(this,this._def)}nullable(){return Le.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ze.create(this)}promise(){return tt.create(this,this._def)}or(e){return yt.create([this,e],this._def)}and(e){return _t.create(this,e,this._def)}transform(e){return new ye({...R(this._def),schema:this,typeName:v.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let s=typeof e=="function"?e:()=>e;return new St({...R(this._def),innerType:this,defaultValue:s,typeName:v.ZodDefault})}brand(){return new _s({typeName:v.ZodBranded,type:this,...R(this._def)})}catch(e){let s=typeof e=="function"?e:()=>e;return new It({...R(this._def),innerType:this,catchValue:s,typeName:v.ZodCatch})}describe(e){let s=this.constructor;return new s({...this._def,description:e})}pipe(e){return ws.create(this,e)}readonly(){return Ct.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};f.ZodType=L;f.Schema=L;f.ZodSchema=L;var Dm=/^c[^\s-]{8,}$/i,Rm=/^[0-9a-z]+$/,Lm=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Pm=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Nm=/^[a-z0-9_-]{21}$/i,qm=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,jm=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Mm=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Gm="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",xn,Bm=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Fm=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Zm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Vm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wm=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Km=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Oa="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",zm=new RegExp(`^${Oa}$`);function Da(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let s=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${s}`}function Jm(t){return new RegExp(`^${Da(t)}$`)}function Ra(t){let e=`${Oa}T${Da(t)}`,s=[];return s.push(t.local?"Z?":"Z"),t.offset&&s.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${s.join("|")})`,new RegExp(`^${e}$`)}function Hm(t,e){return!!((e==="v4"||!e)&&Bm.test(t)||(e==="v6"||!e)&&Zm.test(t))}function Ym(t,e){if(!qm.test(t))return!1;try{let[s]=t.split(".");if(!s)return!1;let r=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),n=JSON.parse(atob(r));return!(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return!1}}function Xm(t,e){return!!((e==="v4"||!e)&&Fm.test(t)||(e==="v6"||!e)&&Vm.test(t))}var Qe=class t extends L{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==I.ZodParsedType.string){let o=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(o,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.string,received:o.parsedType}),m.INVALID}let r=new m.ParseStatus,n;for(let o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="max")e.data.length>o.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let i=e.data.length>o.value,a=e.data.length<o.value;(i||a)&&(n=this._getOrReturnCtx(e,n),i?(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")Mm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"email",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")xn||(xn=new RegExp(Gm,"u")),xn.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"emoji",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")Pm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"uuid",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")Nm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"nanoid",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")Dm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"cuid",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")Rm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"cuid2",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")Lm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"ulid",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"url",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"regex",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty())):o.kind==="trim"?e.data=e.data.trim():o.kind==="includes"?e.data.includes(o.value,o.position)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):o.kind==="toLowerCase"?e.data=e.data.toLowerCase():o.kind==="toUpperCase"?e.data=e.data.toUpperCase():o.kind==="startsWith"?e.data.startsWith(o.value)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?Ra(o).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?zm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?Jm(o).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?jm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"duration",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?Hm(e.data,o.version)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"ip",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Ym(e.data,o.alg)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"jwt",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Xm(e.data,o.version)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"cidr",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Wm.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"base64",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?Km.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{validation:"base64url",code:S.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):I.util.assertNever(o);return{status:r.value,value:e.data}}_regex(e,s,r){return this.refinement(n=>e.test(n),{validation:s,code:S.ZodIssueCode.invalid_string,...T.errorUtil.errToObj(r)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...T.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...T.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...T.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...T.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...T.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...T.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...T.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...T.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...T.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...T.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...T.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...T.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...T.errorUtil.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...T.errorUtil.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...T.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...T.errorUtil.errToObj(e)})}regex(e,s){return this._addCheck({kind:"regex",regex:e,...T.errorUtil.errToObj(s)})}includes(e,s){return this._addCheck({kind:"includes",value:e,position:s?.position,...T.errorUtil.errToObj(s?.message)})}startsWith(e,s){return this._addCheck({kind:"startsWith",value:e,...T.errorUtil.errToObj(s)})}endsWith(e,s){return this._addCheck({kind:"endsWith",value:e,...T.errorUtil.errToObj(s)})}min(e,s){return this._addCheck({kind:"min",value:e,...T.errorUtil.errToObj(s)})}max(e,s){return this._addCheck({kind:"max",value:e,...T.errorUtil.errToObj(s)})}length(e,s){return this._addCheck({kind:"length",value:e,...T.errorUtil.errToObj(s)})}nonempty(e){return this.min(1,T.errorUtil.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxLength(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}};f.ZodString=Qe;Qe.create=t=>new Qe({checks:[],typeName:v.ZodString,coerce:t?.coerce??!1,...R(t)});function Qm(t,e){let s=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,n=s>r?s:r,o=Number.parseInt(t.toFixed(n).replace(".","")),i=Number.parseInt(e.toFixed(n).replace(".",""));return o%i/10**n}var dt=class t extends L{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==I.ZodParsedType.number){let o=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(o,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.number,received:o.parsedType}),m.INVALID}let r,n=new m.ParseStatus;for(let o of this._def.checks)o.kind==="int"?I.util.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:o.message}),n.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),n.dirty()):o.kind==="multipleOf"?Qm(e.data,o.value)!==0&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.not_finite,message:o.message}),n.dirty()):I.util.assertNever(o);return{status:n.value,value:e.data}}gte(e,s){return this.setLimit("min",e,!0,T.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,T.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,T.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,T.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:T.errorUtil.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:T.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:T.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:T.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:T.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:T.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:T.errorUtil.toString(s)})}finite(e){return this._addCheck({kind:"finite",message:T.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:T.errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:T.errorUtil.toString(e)})}get minValue(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxValue(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&I.util.isInteger(e.value))}get isFinite(){let e=null,s=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(s===null||r.value>s)&&(s=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(s)&&Number.isFinite(e)}};f.ZodNumber=dt;dt.create=t=>new dt({checks:[],typeName:v.ZodNumber,coerce:t?.coerce||!1,...R(t)});var pt=class t extends L{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==I.ZodParsedType.bigint)return this._getInvalidInput(e);let r,n=new m.ParseStatus;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):I.util.assertNever(o);return{status:n.value,value:e.data}}_getInvalidInput(e){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.bigint,received:s.parsedType}),m.INVALID}gte(e,s){return this.setLimit("min",e,!0,T.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,T.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,T.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,T.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:T.errorUtil.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:T.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:T.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:T.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:T.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:T.errorUtil.toString(s)})}get minValue(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e}get maxValue(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e}};f.ZodBigInt=pt;pt.create=t=>new pt({checks:[],typeName:v.ZodBigInt,coerce:t?.coerce??!1,...R(t)});var ft=class extends L{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==I.ZodParsedType.boolean){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.boolean,received:r.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodBoolean=ft;ft.create=t=>new ft({typeName:v.ZodBoolean,coerce:t?.coerce||!1,...R(t)});var mt=class t extends L{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==I.ZodParsedType.date){let o=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(o,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.date,received:o.parsedType}),m.INVALID}if(Number.isNaN(e.data.getTime())){let o=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(o,{code:S.ZodIssueCode.invalid_date}),m.INVALID}let r=new m.ParseStatus,n;for(let o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),r.dirty()):o.kind==="max"?e.data.getTime()>o.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):I.util.assertNever(o);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,s){return this._addCheck({kind:"min",value:e.getTime(),message:T.errorUtil.toString(s)})}max(e,s){return this._addCheck({kind:"max",value:e.getTime(),message:T.errorUtil.toString(s)})}get minDate(){let e=null;for(let s of this._def.checks)s.kind==="min"&&(e===null||s.value>e)&&(e=s.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let s of this._def.checks)s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);return e!=null?new Date(e):null}};f.ZodDate=mt;mt.create=t=>new mt({checks:[],coerce:t?.coerce||!1,typeName:v.ZodDate,...R(t)});var Gt=class extends L{_parse(e){if(this._getType(e)!==I.ZodParsedType.symbol){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.symbol,received:r.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodSymbol=Gt;Gt.create=t=>new Gt({typeName:v.ZodSymbol,...R(t)});var ht=class extends L{_parse(e){if(this._getType(e)!==I.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.undefined,received:r.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodUndefined=ht;ht.create=t=>new ht({typeName:v.ZodUndefined,...R(t)});var gt=class extends L{_parse(e){if(this._getType(e)!==I.ZodParsedType.null){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.null,received:r.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodNull=gt;gt.create=t=>new gt({typeName:v.ZodNull,...R(t)});var et=class extends L{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,m.OK)(e.data)}};f.ZodAny=et;et.create=t=>new et({typeName:v.ZodAny,...R(t)});var Fe=class extends L{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,m.OK)(e.data)}};f.ZodUnknown=Fe;Fe.create=t=>new Fe({typeName:v.ZodUnknown,...R(t)});var Ae=class extends L{_parse(e){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.never,received:s.parsedType}),m.INVALID}};f.ZodNever=Ae;Ae.create=t=>new Ae({typeName:v.ZodNever,...R(t)});var Bt=class extends L{_parse(e){if(this._getType(e)!==I.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.void,received:r.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodVoid=Bt;Bt.create=t=>new Bt({typeName:v.ZodVoid,...R(t)});var Ze=class t extends L{_parse(e){let{ctx:s,status:r}=this._processInputParams(e),n=this._def;if(s.parsedType!==I.ZodParsedType.array)return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.array,received:s.parsedType}),m.INVALID;if(n.exactLength!==null){let i=s.data.length>n.exactLength.value,a=s.data.length<n.exactLength.value;(i||a)&&((0,m.addIssueToContext)(s,{code:i?S.ZodIssueCode.too_big:S.ZodIssueCode.too_small,minimum:a?n.exactLength.value:void 0,maximum:i?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(n.minLength!==null&&s.data.length<n.minLength.value&&((0,m.addIssueToContext)(s,{code:S.ZodIssueCode.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),n.maxLength!==null&&s.data.length>n.maxLength.value&&((0,m.addIssueToContext)(s,{code:S.ZodIssueCode.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),s.common.async)return Promise.all([...s.data].map((i,a)=>n.type._parseAsync(new xe(s,i,s.path,a)))).then(i=>m.ParseStatus.mergeArray(r,i));let o=[...s.data].map((i,a)=>n.type._parseSync(new xe(s,i,s.path,a)));return m.ParseStatus.mergeArray(r,o)}get element(){return this._def.type}min(e,s){return new t({...this._def,minLength:{value:e,message:T.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxLength:{value:e,message:T.errorUtil.toString(s)}})}length(e,s){return new t({...this._def,exactLength:{value:e,message:T.errorUtil.toString(s)}})}nonempty(e){return this.min(1,e)}};f.ZodArray=Ze;Ze.create=(t,e)=>new Ze({type:t,minLength:null,maxLength:null,exactLength:null,typeName:v.ZodArray,...R(e)});function Mt(t){if(t instanceof me){let e={};for(let s in t.shape){let r=t.shape[s];e[s]=ke.create(Mt(r))}return new me({...t._def,shape:()=>e})}else return t instanceof Ze?new Ze({...t._def,type:Mt(t.element)}):t instanceof ke?ke.create(Mt(t.unwrap())):t instanceof Le?Le.create(Mt(t.unwrap())):t instanceof Re?Re.create(t.items.map(e=>Mt(e))):t}var me=class t extends L{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),s=I.util.objectKeys(e);return this._cached={shape:e,keys:s},this._cached}_parse(e){if(this._getType(e)!==I.ZodParsedType.object){let l=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(l,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:l.parsedType}),m.INVALID}let{status:r,ctx:n}=this._processInputParams(e),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Ae&&this._def.unknownKeys==="strip"))for(let l in n.data)i.includes(l)||a.push(l);let c=[];for(let l of i){let u=o[l],d=n.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new xe(n,d,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof Ae){let l=this._def.unknownKeys;if(l==="passthrough")for(let u of a)c.push({key:{status:"valid",value:u},value:{status:"valid",value:n.data[u]}});else if(l==="strict")a.length>0&&((0,m.addIssueToContext)(n,{code:S.ZodIssueCode.unrecognized_keys,keys:a}),r.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let u of a){let d=n.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new xe(n,d,n.path,u)),alwaysSet:u in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let l=[];for(let u of c){let d=await u.key,p=await u.value;l.push({key:d,value:p,alwaysSet:u.alwaysSet})}return l}).then(l=>m.ParseStatus.mergeObjectSync(r,l)):m.ParseStatus.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return T.errorUtil.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(s,r)=>{let n=this._def.errorMap?.(s,r).message??r.defaultError;return s.code==="unrecognized_keys"?{message:T.errorUtil.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:v.ZodObject})}setKey(e,s){return this.augment({[e]:s})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let s={};for(let r of I.util.objectKeys(e))e[r]&&this.shape[r]&&(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}omit(e){let s={};for(let r of I.util.objectKeys(this.shape))e[r]||(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}deepPartial(){return Mt(this)}partial(e){let s={};for(let r of I.util.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?s[r]=n:s[r]=n.optional()}return new t({...this._def,shape:()=>s})}required(e){let s={};for(let r of I.util.objectKeys(this.shape))if(e&&!e[r])s[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof ke;)o=o._def.innerType;s[r]=o}return new t({...this._def,shape:()=>s})}keyof(){return La(I.util.objectKeys(this.shape))}};f.ZodObject=me;me.create=(t,e)=>new me({shape:()=>t,unknownKeys:"strip",catchall:Ae.create(),typeName:v.ZodObject,...R(e)});me.strictCreate=(t,e)=>new me({shape:()=>t,unknownKeys:"strict",catchall:Ae.create(),typeName:v.ZodObject,...R(e)});me.lazycreate=(t,e)=>new me({shape:t,unknownKeys:"strip",catchall:Ae.create(),typeName:v.ZodObject,...R(e)});var yt=class extends L{_parse(e){let{ctx:s}=this._processInputParams(e),r=this._def.options;function n(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return s.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new S.ZodError(a.ctx.common.issues));return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union,unionErrors:i}),m.INVALID}if(s.common.async)return Promise.all(r.map(async o=>{let i={...s,common:{...s.common,issues:[]},parent:null};return{result:await o._parseAsync({data:s.data,path:s.path,parent:i}),ctx:i}})).then(n);{let o,i=[];for(let c of r){let l={...s,common:{...s.common,issues:[]},parent:null},u=c._parseSync({data:s.data,path:s.path,parent:l});if(u.status==="valid")return u;u.status==="dirty"&&!o&&(o={result:u,ctx:l}),l.common.issues.length&&i.push(l.common.issues)}if(o)return s.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(c=>new S.ZodError(c));return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union,unionErrors:a}),m.INVALID}}get options(){return this._def.options}};f.ZodUnion=yt;yt.create=(t,e)=>new yt({options:t,typeName:v.ZodUnion,...R(e)});var Be=t=>t instanceof wt?Be(t.schema):t instanceof ye?Be(t.innerType()):t instanceof bt?[t.value]:t instanceof kt?t.options:t instanceof xt?I.util.objectValues(t.enum):t instanceof St?Be(t._def.innerType):t instanceof ht?[void 0]:t instanceof gt?[null]:t instanceof ke?[void 0,...Be(t.unwrap())]:t instanceof Le?[null,...Be(t.unwrap())]:t instanceof _s||t instanceof Ct?Be(t.unwrap()):t instanceof It?Be(t._def.innerType):[],Qs=class t extends L{_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.object)return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:s.parsedType}),m.INVALID;let r=this.discriminator,n=s.data[r],o=this.optionsMap.get(n);return o?s.common.async?o._parseAsync({data:s.data,path:s.path,parent:s}):o._parseSync({data:s.data,path:s.path,parent:s}):((0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),m.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,s,r){let n=new Map;for(let o of s){let i=Be(o.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let a of i){if(n.has(a))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(a)}`);n.set(a,o)}}return new t({typeName:v.ZodDiscriminatedUnion,discriminator:e,options:s,optionsMap:n,...R(r)})}};f.ZodDiscriminatedUnion=Qs;function Sn(t,e){let s=(0,I.getParsedType)(t),r=(0,I.getParsedType)(e);if(t===e)return{valid:!0,data:t};if(s===I.ZodParsedType.object&&r===I.ZodParsedType.object){let n=I.util.objectKeys(e),o=I.util.objectKeys(t).filter(a=>n.indexOf(a)!==-1),i={...t,...e};for(let a of o){let c=Sn(t[a],e[a]);if(!c.valid)return{valid:!1};i[a]=c.data}return{valid:!0,data:i}}else if(s===I.ZodParsedType.array&&r===I.ZodParsedType.array){if(t.length!==e.length)return{valid:!1};let n=[];for(let o=0;o<t.length;o++){let i=t[o],a=e[o],c=Sn(i,a);if(!c.valid)return{valid:!1};n.push(c.data)}return{valid:!0,data:n}}else return s===I.ZodParsedType.date&&r===I.ZodParsedType.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}var _t=class extends L{_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=(o,i)=>{if((0,m.isAborted)(o)||(0,m.isAborted)(i))return m.INVALID;let a=Sn(o.value,i.value);return a.valid?(((0,m.isDirty)(o)||(0,m.isDirty)(i))&&s.dirty(),{status:s.value,value:a.data}):((0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_intersection_types}),m.INVALID)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>n(o,i)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};f.ZodIntersection=_t;_t.create=(t,e,s)=>new _t({left:t,right:e,typeName:v.ZodIntersection,...R(s)});var Re=class t extends L{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.array)return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.array,received:r.parsedType}),m.INVALID;if(r.data.length<this._def.items.length)return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),m.INVALID;!this._def.rest&&r.data.length>this._def.items.length&&((0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),s.dirty());let o=[...r.data].map((i,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new xe(r,i,r.path,a)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>m.ParseStatus.mergeArray(s,i)):m.ParseStatus.mergeArray(s,o)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};f.ZodTuple=Re;Re.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Re({items:t,typeName:v.ZodTuple,rest:null,...R(e)})};var er=class t extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.object)return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.object,received:r.parsedType}),m.INVALID;let n=[],o=this._def.keyType,i=this._def.valueType;for(let a in r.data)n.push({key:o._parse(new xe(r,a,r.path,a)),value:i._parse(new xe(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?m.ParseStatus.mergeObjectAsync(s,n):m.ParseStatus.mergeObjectSync(s,n)}get element(){return this._def.valueType}static create(e,s,r){return s instanceof L?new t({keyType:e,valueType:s,typeName:v.ZodRecord,...R(r)}):new t({keyType:Qe.create(),valueType:e,typeName:v.ZodRecord,...R(s)})}};f.ZodRecord=er;var Ft=class extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.map)return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.map,received:r.parsedType}),m.INVALID;let n=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([a,c],l)=>({key:n._parse(new xe(r,a,r.path,[l,"key"])),value:o._parse(new xe(r,c,r.path,[l,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of i){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return m.INVALID;(l.status==="dirty"||u.status==="dirty")&&s.dirty(),a.set(l.value,u.value)}return{status:s.value,value:a}})}else{let a=new Map;for(let c of i){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return m.INVALID;(l.status==="dirty"||u.status==="dirty")&&s.dirty(),a.set(l.value,u.value)}return{status:s.value,value:a}}}};f.ZodMap=Ft;Ft.create=(t,e,s)=>new Ft({valueType:e,keyType:t,typeName:v.ZodMap,...R(s)});var Zt=class t extends L{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==I.ZodParsedType.set)return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.set,received:r.parsedType}),m.INVALID;let n=this._def;n.minSize!==null&&r.data.size<n.minSize.value&&((0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),s.dirty()),n.maxSize!==null&&r.data.size>n.maxSize.value&&((0,m.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),s.dirty());let o=this._def.valueType;function i(c){let l=new Set;for(let u of c){if(u.status==="aborted")return m.INVALID;u.status==="dirty"&&s.dirty(),l.add(u.value)}return{status:s.value,value:l}}let a=[...r.data.values()].map((c,l)=>o._parse(new xe(r,c,r.path,l)));return r.common.async?Promise.all(a).then(c=>i(c)):i(a)}min(e,s){return new t({...this._def,minSize:{value:e,message:T.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxSize:{value:e,message:T.errorUtil.toString(s)}})}size(e,s){return this.min(e,s).max(e,s)}nonempty(e){return this.min(1,e)}};f.ZodSet=Zt;Zt.create=(t,e)=>new Zt({valueType:t,minSize:null,maxSize:null,typeName:v.ZodSet,...R(e)});var tr=class t extends L{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.function)return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.function,received:s.parsedType}),m.INVALID;function r(a,c){return(0,m.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,Xs.getErrorMap)(),Xs.defaultErrorMap].filter(l=>!!l),issueData:{code:S.ZodIssueCode.invalid_arguments,argumentsError:c}})}function n(a,c){return(0,m.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,Xs.getErrorMap)(),Xs.defaultErrorMap].filter(l=>!!l),issueData:{code:S.ZodIssueCode.invalid_return_type,returnTypeError:c}})}let o={errorMap:s.common.contextualErrorMap},i=s.data;if(this._def.returns instanceof tt){let a=this;return(0,m.OK)(async function(...c){let l=new S.ZodError([]),u=await a._def.args.parseAsync(c,o).catch(h=>{throw l.addIssue(r(c,h)),l}),d=await Reflect.apply(i,this,u);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw l.addIssue(n(d,h)),l})})}else{let a=this;return(0,m.OK)(function(...c){let l=a._def.args.safeParse(c,o);if(!l.success)throw new S.ZodError([r(c,l.error)]);let u=Reflect.apply(i,this,l.data),d=a._def.returns.safeParse(u,o);if(!d.success)throw new S.ZodError([n(u,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Re.create(e).rest(Fe.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,s,r){return new t({args:e||Re.create([]).rest(Fe.create()),returns:s||Fe.create(),typeName:v.ZodFunction,...R(r)})}};f.ZodFunction=tr;var wt=class extends L{get schema(){return this._def.getter()}_parse(e){let{ctx:s}=this._processInputParams(e);return this._def.getter()._parse({data:s.data,path:s.path,parent:s})}};f.ZodLazy=wt;wt.create=(t,e)=>new wt({getter:t,typeName:v.ZodLazy,...R(e)});var bt=class extends L{_parse(e){if(e.data!==this._def.value){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{received:s.data,code:S.ZodIssueCode.invalid_literal,expected:this._def.value}),m.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}};f.ZodLiteral=bt;bt.create=(t,e)=>new bt({value:t,typeName:v.ZodLiteral,...R(e)});function La(t,e){return new kt({values:t,typeName:v.ZodEnum,...R(e)})}var kt=class t extends L{_parse(e){if(typeof e.data!="string"){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,m.addIssueToContext)(s,{expected:I.util.joinValues(r),received:s.parsedType,code:S.ZodIssueCode.invalid_type}),m.INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,m.addIssueToContext)(s,{received:s.data,code:S.ZodIssueCode.invalid_enum_value,options:r}),m.INVALID}return(0,m.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let s of this._def.values)e[s]=s;return e}get Values(){let e={};for(let s of this._def.values)e[s]=s;return e}get Enum(){let e={};for(let s of this._def.values)e[s]=s;return e}extract(e,s=this._def){return t.create(e,{...this._def,...s})}exclude(e,s=this._def){return t.create(this.options.filter(r=>!e.includes(r)),{...this._def,...s})}};f.ZodEnum=kt;kt.create=La;var xt=class extends L{_parse(e){let s=I.util.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==I.ZodParsedType.string&&r.parsedType!==I.ZodParsedType.number){let n=I.util.objectValues(s);return(0,m.addIssueToContext)(r,{expected:I.util.joinValues(n),received:r.parsedType,code:S.ZodIssueCode.invalid_type}),m.INVALID}if(this._cache||(this._cache=new Set(I.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=I.util.objectValues(s);return(0,m.addIssueToContext)(r,{received:r.data,code:S.ZodIssueCode.invalid_enum_value,options:n}),m.INVALID}return(0,m.OK)(e.data)}get enum(){return this._def.values}};f.ZodNativeEnum=xt;xt.create=(t,e)=>new xt({values:t,typeName:v.ZodNativeEnum,...R(e)});var tt=class extends L{unwrap(){return this._def.type}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==I.ZodParsedType.promise&&s.common.async===!1)return(0,m.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.promise,received:s.parsedType}),m.INVALID;let r=s.parsedType===I.ZodParsedType.promise?s.data:Promise.resolve(s.data);return(0,m.OK)(r.then(n=>this._def.type.parseAsync(n,{path:s.path,errorMap:s.common.contextualErrorMap})))}};f.ZodPromise=tt;tt.create=(t,e)=>new tt({type:t,typeName:v.ZodPromise,...R(e)});var ye=class extends L{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===v.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=this._def.effect||null,o={addIssue:i=>{(0,m.addIssueToContext)(r,i),i.fatal?s.abort():s.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),n.type==="preprocess"){let i=n.transform(r.data,o);if(r.common.async)return Promise.resolve(i).then(async a=>{if(s.value==="aborted")return m.INVALID;let c=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return c.status==="aborted"?m.INVALID:c.status==="dirty"||s.value==="dirty"?(0,m.DIRTY)(c.value):c});{if(s.value==="aborted")return m.INVALID;let a=this._def.schema._parseSync({data:i,path:r.path,parent:r});return a.status==="aborted"?m.INVALID:a.status==="dirty"||s.value==="dirty"?(0,m.DIRTY)(a.value):a}}if(n.type==="refinement"){let i=a=>{let c=n.refinement(a,o);if(r.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?m.INVALID:(a.status==="dirty"&&s.dirty(),i(a.value),{status:s.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?m.INVALID:(a.status==="dirty"&&s.dirty(),i(a.value).then(()=>({status:s.value,value:a.value}))))}if(n.type==="transform")if(r.common.async===!1){let i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!(0,m.isValid)(i))return m.INVALID;let a=n.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:s.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>(0,m.isValid)(i)?Promise.resolve(n.transform(i.value,o)).then(a=>({status:s.value,value:a})):m.INVALID);I.util.assertNever(n)}};f.ZodEffects=ye;f.ZodTransformer=ye;ye.create=(t,e,s)=>new ye({schema:t,typeName:v.ZodEffects,effect:e,...R(s)});ye.createWithPreprocess=(t,e,s)=>new ye({schema:e,effect:{type:"preprocess",transform:t},typeName:v.ZodEffects,...R(s)});var ke=class extends L{_parse(e){return this._getType(e)===I.ZodParsedType.undefined?(0,m.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodOptional=ke;ke.create=(t,e)=>new ke({innerType:t,typeName:v.ZodOptional,...R(e)});var Le=class extends L{_parse(e){return this._getType(e)===I.ZodParsedType.null?(0,m.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodNullable=Le;Le.create=(t,e)=>new Le({innerType:t,typeName:v.ZodNullable,...R(e)});var St=class extends L{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return s.parsedType===I.ZodParsedType.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:s.path,parent:s})}removeDefault(){return this._def.innerType}};f.ZodDefault=St;St.create=(t,e)=>new St({innerType:t,typeName:v.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...R(e)});var It=class extends L{_parse(e){let{ctx:s}=this._processInputParams(e),r={...s,common:{...s.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return(0,m.isAsync)(n)?n.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new S.ZodError(r.common.issues)},input:r.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new S.ZodError(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};f.ZodCatch=It;It.create=(t,e)=>new It({innerType:t,typeName:v.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...R(e)});var Vt=class extends L{_parse(e){if(this._getType(e)!==I.ZodParsedType.nan){let r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:I.ZodParsedType.nan,received:r.parsedType}),m.INVALID}return{status:"valid",value:e.data}}};f.ZodNaN=Vt;Vt.create=t=>new Vt({typeName:v.ZodNaN,...R(t)});f.BRAND=Symbol("zod_brand");var _s=class extends L{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return this._def.type._parse({data:r,path:s.path,parent:s})}unwrap(){return this._def.type}};f.ZodBranded=_s;var ws=class t extends L{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?m.INVALID:o.status==="dirty"?(s.dirty(),(0,m.DIRTY)(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let n=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return n.status==="aborted"?m.INVALID:n.status==="dirty"?(s.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:r.path,parent:r})}}static create(e,s){return new t({in:e,out:s,typeName:v.ZodPipeline})}};f.ZodPipeline=ws;var Ct=class extends L{_parse(e){let s=this._def.innerType._parse(e),r=n=>((0,m.isValid)(n)&&(n.value=Object.freeze(n.value)),n);return(0,m.isAsync)(s)?s.then(n=>r(n)):r(s)}unwrap(){return this._def.innerType}};f.ZodReadonly=Ct;Ct.create=(t,e)=>new Ct({innerType:t,typeName:v.ZodReadonly,...R(e)});function va(t,e){let s=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof s=="string"?{message:s}:s}function Pa(t,e={},s){return t?et.create().superRefine((r,n)=>{let o=t(r);if(o instanceof Promise)return o.then(i=>{if(!i){let a=va(e,r),c=a.fatal??s??!0;n.addIssue({code:"custom",...a,fatal:c})}});if(!o){let i=va(e,r),a=i.fatal??s??!0;n.addIssue({code:"custom",...i,fatal:a})}}):et.create()}f.late={object:me.lazycreate};var v;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(v||(f.ZodFirstPartyTypeKind=v={}));var eh=(t,e={message:`Input not instance of ${t.name}`})=>Pa(s=>s instanceof t,e);f.instanceof=eh;var Na=Qe.create;f.string=Na;var qa=dt.create;f.number=qa;var th=Vt.create;f.nan=th;var sh=pt.create;f.bigint=sh;var ja=ft.create;f.boolean=ja;var rh=mt.create;f.date=rh;var nh=Gt.create;f.symbol=nh;var oh=ht.create;f.undefined=oh;var ih=gt.create;f.null=ih;var ah=et.create;f.any=ah;var ch=Fe.create;f.unknown=ch;var lh=Ae.create;f.never=lh;var uh=Bt.create;f.void=uh;var dh=Ze.create;f.array=dh;var ph=me.create;f.object=ph;var fh=me.strictCreate;f.strictObject=fh;var mh=yt.create;f.union=mh;var hh=Qs.create;f.discriminatedUnion=hh;var gh=_t.create;f.intersection=gh;var yh=Re.create;f.tuple=yh;var _h=er.create;f.record=_h;var wh=Ft.create;f.map=wh;var bh=Zt.create;f.set=bh;var kh=tr.create;f.function=kh;var xh=wt.create;f.lazy=xh;var Sh=bt.create;f.literal=Sh;var Ih=kt.create;f.enum=Ih;var Ch=xt.create;f.nativeEnum=Ch;var Eh=tt.create;f.promise=Eh;var Ma=ye.create;f.effect=Ma;f.transformer=Ma;var Ah=ke.create;f.optional=Ah;var $h=Le.create;f.nullable=$h;var Th=ye.createWithPreprocess;f.preprocess=Th;var Uh=ws.create;f.pipeline=Uh;var vh=()=>Na().optional();f.ostring=vh;var Oh=()=>qa().optional();f.onumber=Oh;var Dh=()=>ja().optional();f.oboolean=Dh;f.coerce={string:(t=>Qe.create({...t,coerce:!0})),number:(t=>dt.create({...t,coerce:!0})),boolean:(t=>ft.create({...t,coerce:!0})),bigint:(t=>pt.create({...t,coerce:!0})),date:(t=>mt.create({...t,coerce:!0}))};f.NEVER=m.INVALID});var In=k(Se=>{"use strict";var Rh=Se&&Se.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,n)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),Wt=Se&&Se.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&Rh(e,t,s)};Object.defineProperty(Se,"__esModule",{value:!0});Wt(Hs(),Se);Wt(kn(),Se);Wt(Aa(),Se);Wt(gs(),Se);Wt(Ga(),Se);Wt(Js(),Se)});var Za=k(he=>{"use strict";var Ba=he&&he.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,n)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),Lh=he&&he.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Ph=he&&he.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var s in t)s!=="default"&&Object.prototype.hasOwnProperty.call(t,s)&&Ba(e,t,s);return Lh(e,t),e},Nh=he&&he.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&Ba(e,t,s)};Object.defineProperty(he,"__esModule",{value:!0});he.z=void 0;var Fa=Ph(In());he.z=Fa;Nh(In(),he);he.default=Fa});var sr=k((Nx,za)=>{var Cn=null;function En(){return Cn||(Cn=Za().z),Cn}function Va(){return En().string().trim().refine(t=>{let e=t.indexOf(".");return e>0&&e<t.length-1},{message:"API Key \u683C\u5F0F\u9519\u8BEF\uFF0C\u5E94\u4E3A <ak>.<sk>"})}function Wa(){return En().string().refine(t=>{try{return JSON.parse(t),!0}catch{return!1}},{message:"--meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON"})}function Ka(){return En().string().trim().refine(t=>/^https?:\/\/[^\s]+$/i.test(t),{message:"registry \u5FC5\u987B\u662F http(s):// \u5F00\u5934\u7684 URL"})}function qh(t){let e=Va().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function jh(t){let e=Wa().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function Mh(t){let e=Ka().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}za.exports={apiKeySchema:Va,pubMetaDataSchema:Wa,registrySchema:Ka,validateApiKey:qh,validatePubMetaData:jh,validateRegistry:Mh}});var Ha=k((qx,Ja)=>{var Gh=ba(),{validateApiKey:Bh}=sr();function Fh(t,e){let s=new Gh(e),r=t.command("auth").description("\u7BA1\u7406\u8EAB\u4EFD\u9A8C\u8BC1\u51ED\u8BC1");r.command("login").description("\u767B\u5F55 MakeCoder\uFF08\u6D4F\u89C8\u5668\u6216\u7EC8\u7AEF\u8F93\u5165 API Key\uFF09").option("--apikey <key>","\u76F4\u63A5\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09").action(async n=>{if(n.apikey){let o=Bh(n.apikey);if(!o.ok){e.fail(o.error,"API Key \u5F62\u5982 <ak>.<sk>\uFF0C\u83B7\u53D6: https://makecoder.com/my/apikeys"),process.exitCode=1;return}process.exitCode=await s.handle({authSubcommand:"login",authRemainingArgs:["--apikey",o.value],coderBaseUrl:e.getCoderBaseUrl()})||0;return}if(e.isNonInteractive){e.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`"),process.exitCode=1;return}process.exitCode=await s.handle({authSubcommand:"login",authRemainingArgs:[],coderBaseUrl:e.getCoderBaseUrl()})||0}),r.command("logout").description("\u9000\u51FA\u767B\u5F55\uFF0C\u6E05\u9664\u5DF2\u4FDD\u5B58\u7684 API Key").action(async()=>{process.exitCode=await s.handle({authSubcommand:"logout"})||0}),r.command("status").description("\u67E5\u770B\u5F53\u524D\u767B\u5F55\u72B6\u6001").action(async()=>{process.exitCode=await s.handle({authSubcommand:"status"})||0})}Ja.exports={register:Fh}});var Qa=k((jx,Xa)=>{var $e=require("fs"),Et=require("path"),Zh=require("readline"),{execSync:rr}=require("child_process"),Ya=require("os"),An=class{constructor(){this.serverUrl="https://makecoder.com/bigapis/codev/v1/coderpub"}getClaudeJsonlPath(e,s=!1){let r=e.replace(/[/_]/g,"-"),n=Et.join(Ya.homedir(),".claude","projects",r);if(s&&(console.log(`
286
+ \u{1F4C2} [allow-clone] \u67E5\u627E JSONL \u6587\u4EF6...`),console.log(` \u9879\u76EE\u76EE\u5F55: ${e}`),console.log(` Claude \u9879\u76EE\u540D: ${r}`),console.log(` Claude \u9879\u76EE\u76EE\u5F55: ${n}`)),!$e.existsSync(n))return s&&console.log(" \u274C Claude \u9879\u76EE\u76EE\u5F55\u4E0D\u5B58\u5728"),null;s&&console.log(" \u2713 Claude \u9879\u76EE\u76EE\u5F55\u5B58\u5728");try{let o=$e.readdirSync(n).filter(i=>i.endsWith(".jsonl")).map(i=>({name:i,path:Et.join(n,i),mtime:$e.statSync(Et.join(n,i)).mtime,size:$e.statSync(Et.join(n,i)).size})).sort((i,a)=>a.mtime-i.mtime);return s&&(console.log(` \u627E\u5230 ${o.length} \u4E2A JSONL \u6587\u4EF6:`),o.forEach((i,a)=>{let c=(i.size/1024).toFixed(2),l=i.mtime.toLocaleString(),u=a===0?" <- \u6700\u65B0":"";console.log(` ${a+1}. ${i.name} (${c} KB, ${l})${u}`)})),o.length>0?(s&&console.log(` \u2713 \u9009\u62E9\u6700\u65B0\u6587\u4EF6: ${o[0].name}`),o[0].path):(s&&console.log(" \u274C \u76EE\u5F55\u4E2D\u6CA1\u6709 JSONL \u6587\u4EF6"),null)}catch(o){return s&&console.log(` \u274C \u8BFB\u53D6\u76EE\u5F55\u5931\u8D25: ${o.message}`),null}}async promptForName(){let e=Zh.createInterface({input:process.stdin,output:process.stdout});return new Promise((s,r)=>{e.question("\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0 (name): ",n=>{e.close();let o=n.trim();if(!o){r(new Error("\u9879\u76EE\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A"));return}if(!/^[a-zA-Z0-9_-]+$/.test(o)){r(new Error("\u9879\u76EE\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u548C\u8FDE\u5B57\u7B26"));return}s(o)})})}async createZip(e,s={}){let{allowClone:r=!1}=s,n=Ya.tmpdir(),o=`coder-pub-${Date.now()}.zip`,i=Et.join(n,o);try{let a=!1;if($e.existsSync(Et.join(e,".git")))try{rr(`git archive -o "${i}" HEAD`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u4F7F\u7528 git archive \u521B\u5EFA\u538B\u7F29\u5305\uFF08\u5DF2\u6392\u9664 .gitignore \u4E2D\u7684\u6587\u4EF6\uFF09"),a=!0}catch{console.log("\u26A0\uFE0F git archive \u5931\u8D25\uFF0C\u4F7F\u7528\u666E\u901A zip \u547D\u4EE4")}if(!a){let l=[".git/*","node_modules/*",".env",".env.*","*.log",".DS_Store"].map(u=>`-x "${u}"`).join(" ");rr(`zip -r "${i}" . ${l}`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u5DF2\u521B\u5EFA\u538B\u7F29\u5305")}if(r){console.log(`
287
+ \u{1F504} [allow-clone] \u5F00\u59CB\u5904\u7406 AI \u751F\u6210\u8BB0\u5F55...`);let c=this.getClaudeJsonlPath(e,!0);if(c){let l=Et.join(n,"coder.pub.jsonl"),d=($e.statSync(c).size/1024).toFixed(2);console.log(`
288
+ \u{1F4E6} [allow-clone] \u6253\u5305 JSONL \u6587\u4EF6...`),console.log(` \u6E90\u6587\u4EF6: ${c}`),console.log(` \u6587\u4EF6\u5927\u5C0F: ${d} KB`),console.log(` \u4E34\u65F6\u6587\u4EF6: ${l}`),$e.copyFileSync(c,l),console.log(" \u2713 \u5DF2\u590D\u5236\u5230\u4E34\u65F6\u76EE\u5F55"),console.log(` \u76EE\u6807 ZIP: ${i}`),console.log(" \u76EE\u6807\u6587\u4EF6\u540D: coder.pub.jsonl"),rr(`zip -j "${i}" "${l}"`,{stdio:"pipe"}),console.log(" \u2713 \u5DF2\u6DFB\u52A0\u5230 ZIP \u5305"),$e.unlinkSync(l),console.log(" \u2713 \u5DF2\u6E05\u7406\u4E34\u65F6\u6587\u4EF6"),console.log(`\u{1F4CB} [allow-clone] AI \u751F\u6210\u8BB0\u5F55\u5904\u7406\u5B8C\u6210 (coder.pub.jsonl)
289
289
  `)}else console.log(`\u26A0\uFE0F [allow-clone] \u672A\u627E\u5230 Claude Code \u751F\u6210\u8BB0\u5F55
290
- `)}return i}catch(a){throw new Error(`\u521B\u5EFA\u538B\u7F29\u5305\u5931\u8D25: ${a.message}`)}}async upload(e,s,r,n,o=!1){let i=n?`${n}/coderpub`:this.serverUrl,a=r;console.log("\u{1F4E4} \u6B63\u5728\u4E0A\u4F20\u5230\u670D\u52A1\u5668..."),o&&(console.log(` \u670D\u52A1\u5668\u5730\u5740: ${i}`),console.log(` \u9879\u76EE\u540D\u79F0: ${s}`),console.log(` ZIP \u6587\u4EF6: ${e}`));try{let c=`curl -s -X POST "${i}" -H "Authorization: Bearer ${a}" -F "name=${s}" -F "zip_file=@${e}"`;o&&console.log(" \u6267\u884C\u4E0A\u4F20\u547D\u4EE4...");let l=Xs(c,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]});return o&&console.log(" \u2713 \u4E0A\u4F20\u5B8C\u6210\uFF0C\u89E3\u6790\u54CD\u5E94..."),JSON.parse(l)}catch(c){if(c.stdout)try{return JSON.parse(c.stdout)}catch{throw new Error(`\u4E0A\u4F20\u5931\u8D25: ${c.message}`)}throw new Error(`\u4E0A\u4F20\u5931\u8D25: ${c.message}`)}}cleanup(e){try{Ie.existsSync(e)&&Ie.unlinkSync(e)}catch{}}async publish(e){let{apikey:s,coderBaseUrl:r,allowClone:n}=e,{name:o}=e,i=null;try{o||(o=await this.promptForName()),console.log(`
291
- \u{1F680} \u6B63\u5728\u53D1\u5E03\u9879\u76EE: ${o}`),console.log(`\u{1F4C1} \u76EE\u5F55: ${process.cwd()}`),n&&console.log("\u{1F513} allow-clone: \u542F\u7528 (\u5C06\u5305\u542B AI \u751F\u6210\u8BB0\u5F55)"),console.log(),i=await this.createZip(process.cwd(),{allowClone:n});let c=(Ie.statSync(i).size/(1024*1024)).toFixed(2);console.log(`\u{1F4CA} \u538B\u7F29\u5305\u5927\u5C0F: ${c} MB`),n&&console.log(`
290
+ `)}return i}catch(a){throw new Error(`\u521B\u5EFA\u538B\u7F29\u5305\u5931\u8D25: ${a.message}`)}}async upload(e,s,r,n,o=!1){let i=n?`${n}/coderpub`:this.serverUrl,a=r;console.log("\u{1F4E4} \u6B63\u5728\u4E0A\u4F20\u5230\u670D\u52A1\u5668..."),o&&(console.log(` \u670D\u52A1\u5668\u5730\u5740: ${i}`),console.log(` \u9879\u76EE\u540D\u79F0: ${s}`),console.log(` ZIP \u6587\u4EF6: ${e}`));try{let c=`curl -s -X POST "${i}" -H "Authorization: Bearer ${a}" -F "name=${s}" -F "zip_file=@${e}"`;o&&console.log(" \u6267\u884C\u4E0A\u4F20\u547D\u4EE4...");let l=rr(c,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]});return o&&console.log(" \u2713 \u4E0A\u4F20\u5B8C\u6210\uFF0C\u89E3\u6790\u54CD\u5E94..."),JSON.parse(l)}catch(c){if(c.stdout)try{return JSON.parse(c.stdout)}catch{throw new Error(`\u4E0A\u4F20\u5931\u8D25: ${c.message}`)}throw new Error(`\u4E0A\u4F20\u5931\u8D25: ${c.message}`)}}cleanup(e){try{$e.existsSync(e)&&$e.unlinkSync(e)}catch{}}async publish(e){let{apikey:s,coderBaseUrl:r,allowClone:n}=e,{name:o}=e,i=null;try{o||(o=await this.promptForName()),console.log(`
291
+ \u{1F680} \u6B63\u5728\u53D1\u5E03\u9879\u76EE: ${o}`),console.log(`\u{1F4C1} \u76EE\u5F55: ${process.cwd()}`),n&&console.log("\u{1F513} allow-clone: \u542F\u7528 (\u5C06\u5305\u542B AI \u751F\u6210\u8BB0\u5F55)"),console.log(),i=await this.createZip(process.cwd(),{allowClone:n});let c=($e.statSync(i).size/(1024*1024)).toFixed(2);console.log(`\u{1F4CA} \u538B\u7F29\u5305\u5927\u5C0F: ${c} MB`),n&&console.log(`
292
292
  \u{1F310} [allow-clone] \u5F00\u59CB\u4E0A\u4F20\u5230\u670D\u52A1\u5668...`);let l=await this.upload(i,o,s,r,n);return l.code===0?(console.log(`
293
293
  \u2705 \u53D1\u5E03\u6210\u529F!`),console.log(`\u{1F4CC} \u7248\u672C: ${l.data.version}`),console.log(`\u{1F310} \u8BBF\u95EE\u5730\u5740: https://${o}.coder.pub/`),0):(console.error(`
294
294
  \u274C \u53D1\u5E03\u5931\u8D25: ${l.message||l.reason}`),1)}catch(a){return console.error(`
295
295
  \u274C ${a.message}`),1}finally{i&&this.cleanup(i)}}showHelp(){console.log(["Usage: coder pub [options]","","\u53D1\u5E03\u5F53\u524D\u76EE\u5F55\u4E3A MakeCoder \u7F51\u9875\u5E94\u7528","","Options:"," --name <name> \u5E94\u7528\u540D\u79F0\uFF08\u5FC5\u9700\uFF09"," --allow-clone \u5305\u542B Claude Code \u751F\u6210\u8BB0\u5F55\uFF0C\u5141\u8BB8\u4ED6\u4EBA\u514B\u9686"," --help, -h \u663E\u793A\u6B64\u5E2E\u52A9\u4FE1\u606F","","Description:"," \u5C06\u5F53\u524D\u76EE\u5F55\u7684\u4EE3\u7801\u53D1\u5E03\u4E3A MakeCoder \u5E73\u53F0\u4E0A\u7684\u7F51\u9875\u5E94\u7528\u3002"," \u5E94\u7528\u5C06\u5728 https://<name>.coder.pub/ \u4E0A\u53EF\u8BBF\u95EE\u3002","","Examples:"," coder pub --name myapp \u53D1\u5E03\u5E94\u7528\uFF0C\u8BBF\u95EE\u5730\u5740: https://myapp.coder.pub/"," coder pub --name myapp --allow-clone \u53D1\u5E03\u5E94\u7528\u5E76\u5305\u542B\u751F\u6210\u8BB0\u5F55","","Notes:"," - \u5E94\u7528\u540D\u79F0\u53EA\u80FD\u5305\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u548C\u8FDE\u5B57\u7B26"," - \u4F7F\u7528 git archive \u521B\u5EFA\u538B\u7F29\u5305\uFF08\u81EA\u52A8\u6392\u9664 .gitignore \u4E2D\u7684\u6587\u4EF6\uFF09"," - \u5982\u679C\u4E0D\u662F git \u4ED3\u5E93\uFF0C\u5C06\u4F7F\u7528\u666E\u901A zip \u547D\u4EE4"].join(`
296
- `))}};Ka.exports=xn});var Ha=k((Dx,Ja)=>{var jh=za(),{validatePubMetaData:Mh}=Ys();function Gh(t,e){let s=new jh;t.command("pub").description("\u53D1\u5E03\u5F53\u524D\u76EE\u5F55\u4E3A MakeCoder \u7F51\u9875\u5E94\u7528\uFF08*.coder.pub\uFF09").option("--name <name>","\u9879\u76EE\u540D\u79F0\uFF08\u7F3A\u7701\u5219\u5728\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4E2D\u63D0\u793A\u8F93\u5165\uFF09").option("--meta-data <json>","\u9644\u52A0\u5143\u6570\u636E\uFF08\u5408\u6CD5 JSON \u5B57\u7B26\u4E32\uFF09").option("--allow-clone","\u5305\u542B AI \u751F\u6210\u8BB0\u5F55\uFF08Claude JSONL\uFF09\u4EE5\u4FBF\u514B\u9686").action(async r=>{if(!e.requireApiKey()){process.exitCode=1;return}if(r.metaData){let n=Mh(r.metaData);if(!n.ok){e.fail(n.error,`--meta-data \u9700\u4E3A\u5408\u6CD5 JSON\uFF0C\u4F8B\u5982 '{"key":"value"}'`),process.exitCode=1;return}}if(!r.name&&e.isNonInteractive){e.fail("missing project name","run `coder pub --name <name>`"),process.exitCode=1;return}process.exitCode=await s.publish({name:r.name,metaData:r.metaData,allowClone:!!r.allowClone,apikey:e.getApiKey(),coderBaseUrl:e.getCoderBaseUrl()})||0})}Ja.exports={register:Gh}});var oc=k((Rx,nc)=>{var{execSync:In,execFileSync:Ya}=require("child_process"),Sn=require("fs"),Qs=require("path"),{PLATFORM_PACKAGE:Bh}=$s(),{validateRegistry:Fh}=Ys(),Ft=["https://registry.npmmirror.com","https://mirrors.cloud.tencent.com/npm/","https://mirrors.huaweicloud.com/repository/npm/"];function Xa(t){if(!t)return!1;let e=t.toLowerCase();return e.includes("npmmirror.com")||e.includes("npm.taobao.org")||e.includes("cloud.tencent.com")||e.includes("huaweicloud.com")||e.includes("cnpmjs.org")||e.includes("ustc.edu.cn")}function Qa(){try{return In("npm config get registry",{encoding:"utf8"}).trim()}catch{return"https://registry.npmjs.org/"}}function Zh(){try{let t=In("npm root -g",{encoding:"utf8"}).trim(),e=Qs.join(t,"makecoder","package.json");if(Sn.existsSync(e))return JSON.parse(Sn.readFileSync(e,"utf8")).version}catch{}return null}function Vh(t){try{let e=["view","makecoder@latest","version"];return t&&e.push("--registry",t),Ya("npm",e,{encoding:"utf8"}).trim()||null}catch{return null}}function Wh({registry:t,verbose:e}){let s=["install","-g"];return t&&s.push("--registry",t),e&&s.push("--loglevel","verbose"),s}function ec(t,e,s){let r=[...Wh(e),t];e.verbose&&s.emit(`$ npm ${r.join(" ")}`),Ya("npm",r,{stdio:"inherit"})}function Kh(t,e){let s=`${process.platform}-${process.arch}`,r=Bh[s];if(!r)return;let n;try{n=In("npm root -g",{encoding:"utf8"}).trim()}catch{return}if([Qs.join(n,"makecoder","node_modules",r,"package.json"),Qs.join(n,r,"package.json")].some(l=>Sn.existsSync(l)))return;e.emit(`\u672A\u68C0\u6D4B\u5230 ${r}\uFF0C\u6B63\u5728\u8865\u88C5...`);let i;try{i=require(Qs.join(n,"makecoder","package.json")).optionalDependencies?.[r]}catch{}let a=l=>{try{return ec(l,t,e),!0}catch{return!1}};i&&a(`${r}@${i}`)||a(`${r}@latest`)||e.fail(`\u81EA\u52A8\u8865\u88C5 ${r} \u5931\u8D25\uFF0Ccoder codex \u53EF\u80FD\u4E0D\u53EF\u7528`,`\u624B\u52A8\u6267\u884C: npm install -g ${r}@latest`)}function tc(t,e){if(!Xa(t)){e.emit(""),e.emit(`\u5F53\u524D npm \u6E90\u4E3A ${t}\uFF08\u975E\u56FD\u5185\u6E90\uFF0C\u56FD\u5185\u7F51\u7EDC\u53EF\u80FD\u8F83\u6162\uFF09\u3002`),e.emit("\u53EF\u4E34\u65F6\u4E3A\u672C\u6B21\u5347\u7EA7\u6307\u5B9A\u56FD\u5185\u6E90:"),e.emit(` coder update --registry ${Ft[0]}`),e.emit("\u6216\u6C38\u4E45\u5207\u6362 npm \u5168\u5C40\u6E90:");for(let s of Ft)e.emit(` npm config set registry ${s}`)}}function zh(t,e){let s=o=>String(o).replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(n[o]||0))return!0;if((r[o]||0)<(n[o]||0))return!1}return!1}function sc(t,e){let s=vt().version,r=t.registry||Qa(),n=Vh(t.registry||null);return e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`\u6700\u65B0\u7248\u672C: ${n||"\u67E5\u8BE2\u5931\u8D25\uFF08\u68C0\u67E5\u7F51\u7EDC\u6216 registry\uFF09"}`),e.emit(`npm \u6E90: ${r}`),n&&zh(n,s)?(e.emit(""),e.emit(`\u6709\u53EF\u7528\u66F4\u65B0 ${s} \u2192 ${n}\uFF0C\u8FD0\u884C coder update \u5347\u7EA7\u3002`)):n&&(e.emit(""),e.emit("\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002")),tc(r,e),0}function rc(t,e){let s=vt().version,r=t.registry||Qa();e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`npm \u6E90: ${r}`),tc(r,e),e.emit(""),e.emit("\u6B63\u5728\u5347\u7EA7 Coder...");try{ec("makecoder@latest",t,e)}catch(o){let i=String(o.message||""),a=/EACCES|permission/i.test(i)?"\u6743\u9650\u4E0D\u8DB3\uFF0C\u5C1D\u8BD5: sudo npm install -g makecoder@latest\uFF08\u6216\u4FEE\u590D npm \u5168\u5C40\u76EE\u5F55\u6743\u9650\uFF09":"\u68C0\u67E5\u7F51\u7EDC\u6216\u6362\u6E90\u540E\u91CD\u8BD5: coder update --registry "+Ft[0];return e.fail(`\u5347\u7EA7\u5931\u8D25: ${i.split(`
297
- `)[0]}`,a),1}Kh(t,e);let n=Zh();return e.emit(""),e.emit(n?`\u5347\u7EA7\u6210\u529F\uFF0C\u5F53\u524D\u7248\u672C: ${n}`:"\u5347\u7EA7\u6210\u529F"),0}function Jh(t,e){t.command("update").description("\u5347\u7EA7 Coder \u5230\u6700\u65B0\u7248\u672C").option("--check","\u53EA\u68C0\u6D4B\u6700\u65B0\u7248\u672C\u4E0E\u5F53\u524D npm \u6E90\uFF0C\u4E0D\u6267\u884C\u5B89\u88C5").option("--registry <url>","\u672C\u6B21\u64CD\u4F5C\u4F7F\u7528\u7684 npm \u6E90\uFF08\u9ED8\u8BA4\u6CBF\u7528\u5168\u5C40 registry\uFF09").option("--verbose","\u6253\u5370\u6BCF\u4E00\u6B65\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u5E76\u63D0\u9AD8 npm \u65E5\u5FD7\u7EA7\u522B").addHelpText("after",["","\u793A\u4F8B:"," coder update \u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C"," coder update --check \u53EA\u770B\u6709\u6CA1\u6709\u65B0\u7248\u672C\uFF0C\u4E0D\u5B89\u88C5",` coder update --registry ${Ft[0]}`," coder update --verbose \u6392\u67E5\u5347\u7EA7\u95EE\u9898\u65F6\u67E5\u770B\u8BE6\u7EC6\u65E5\u5FD7"].join(`
298
- `)).action(s=>{if(s.registry){let r=Fh(s.registry);if(!r.ok){e.fail(r.error,`\u793A\u4F8B: coder update --registry ${Ft[0]}`),process.exitCode=1;return}s.registry=r.value}process.exitCode=s.check?sc(s,e):rc(s,e)})}nc.exports={register:Jh,runUpdate:rc,runCheck:sc,isCnRegistry:Xa,CN_REGISTRIES:Ft}});var ac=k((Lx,ic)=>{var{isUuid:Hh,classifyId:Yh}=zr(),Cn=class{constructor(e){this.http=e,this._cache=new Map}async toDocUuid(e){return this._resolve(e,"documents.info","\u6587\u6863")}async toColUuid(e){return this._resolve(e,"collections.info","\u96C6\u5408")}async _resolve(e,s,r){if(e==null||e===""||Hh(e))return e;if(this._cache.has(e))return this._cache.get(e);let n=Yh(e);if(!n){let l=new Error(`\u65E0\u6CD5\u8BC6\u522B\u7684${r} id: ${e}`);throw l.hint=`\u4F20\u5165${r}\u7684 UUID\u3001urlId \u6216\u6D4F\u89C8\u5668 URL\uFF1B\u6216\u7528 coder wiki search <\u5173\u952E\u8BCD> \u67E5\u627E`,l}if(n.kind==="uuid")return this._cache.set(e,n.value),n.value;let{ok:o,json:i,body:a}=await this.http.postJson(s,{id:n.value}),c=i?.data?.id;if(!o||!c){let l=new Error(`\u627E\u4E0D\u5230${r}: ${e}`);throw l.hint=`\u786E\u8BA4${r}\u5B58\u5728\u4E14\u5F53\u524D\u56E2\u961F\u6709\u6743\u8BBF\u95EE\uFF08${Xh(a)}\uFF09`,l}return this._cache.set(e,c),c}};function Xh(t){try{let e=JSON.parse(t);return e.message||e.error||""}catch{return(t||"").slice(0,120)}}ic.exports={IdResolver:Cn}});var lc=k((Px,cc)=>{function Qh(t){let e=["Usage: coder wiki <subcommand> [args] [options]","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\u4E0A\u4E0B\u6587\uFF08\u9ED8\u8BA4\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09"," --format json \u7ED3\u6784\u5316 JSON \u8F93\u51FA\uFF08\u9ED8\u8BA4 text\uFF09","","Collections:"," list \u5217\u51FA\u6240\u6709\u96C6\u5408"," list <collection> [-d <depth>] \u5217\u51FA\u96C6\u5408\u4E0B\u6587\u6863\uFF08-d -1 \u5C55\u5F00\u6574\u68F5\u6811\uFF09"," create-collection <name> [desc] [--permission r|rw|null] [--icon <i>] [--color #hex] [--sort-field title|index] [--sort-direction asc|desc] [--index <fi>]"," update-collection <collection> [--name] [--description] [--permission] [--color] [--sharing]"," archive-collection / restore-collection / delete-collection <collection>"," collection-info <collection> \u96C6\u5408\u8BE6\u60C5"," collection-members <collection> [--query] [--permission]"," collection-add-user / collection-remove-user <collection> <userId>"," collection-add-group / collection-remove-group <collection> <groupId>"," collection-group-members <collection>"," collection-export <collection> [--format outline|markdown_zip]"," export-all [--format outline|markdown_zip]"," collection-move <collection> <index>"," icons [keyword] \u5217\u51FA\u53EF\u7528\u56FE\u6807\u540D","","Documents:"," get <doc> \u67E5\u770B\u6587\u6863\uFF08\u542B\u6B63\u6587\uFF09",' publish <collection> "\u6807\u9898" ["\u6B63\u6587"]'," publish <collection> --file <path> [--parent <doc>] [--index <n>] [--after <doc>]",' update <doc> "\u6807\u9898" ["\u6B63\u6587"] | update <doc> --file <path>'," delete <doc> [--permanent]"," move <doc> [collection] [parentDoc] [--index <n>] [--after <doc>]"," archive <doc> / restore <doc> [--revision <revId>] [--collection <col>]"," archived [--collection <col>] / deleted"," insights <doc> [--start-date] [--end-date]"," export <doc> [--include-children]"," search <keyword> / search-titles <keyword>"," duplicate <doc> [--title] [--recursive] [--publish] [--collection] [--parent]"," unpublish <doc> / templatize <doc> [--collection]"," doc-members <doc>"," doc-add-user / doc-remove-user <doc> <userId>"," doc-add-group / doc-remove-group <doc> <groupId>"," doc-group-members <doc> / sub-docs <doc> / empty-trash","","Revisions / Discovery:"," revisions <doc> / revision <revId>"," drafts / recent","","Favorites & Pins:"," stars / star <doc|col> [--collection] / unstar <starId>"," pins [collection] / pin <doc> [collection] / unpin <pinId>","","Comments:",' comments <doc> / comment <doc> "\u5185\u5BB9"',"","Shares:"," shares [--document <doc>] / share-info <shareId>"," share <doc> [--published] [--include-children]"," share-update <shareId> [--published] [--no-published] [--include-children]"," unshare <shareId>","","Users / Groups:"," users [--query] [--filter] / user-info <userId>"," invite <email> <name> <role> / user-update-role <userId> <role>"," user-suspend / user-activate <userId>"," groups [--query] / group-info <groupId> / create-group <name>"," update-group <groupId> --name <n> / delete-group <groupId>"," group-members <groupId> / group-add-user / group-remove-user <groupId> <userId>","","Subscriptions / Events / Templates / Files / Attachments:"," subscriptions <doc>|--collection <col> / subscribe <doc> / unsubscribe <subId>"," views <doc> / view <doc>"," events [--actor] [--document] [--collection] [--type]"," templates [--collection] / template-info <tplId>"," create-template <collection> <title> [--text] / update-template <tplId> [--title] [--text]"," delete-template / duplicate-template <tplId>"," file-ops [--type] / file-op-info / file-op-delete <fileOpId>"," reactions <commentId>"," attachments [doc] / delete-attachment <attId>"," upload <doc> <filePath> / upload-url <doc> <url>","","Examples:"," coder wiki list"," coder wiki get https://makecoder.com/wiki/doc/title-gohs4hSGLY # URL \u76F4\u63A5\u7528"," coder wiki revisions gohs4hSGLY # urlId \u76F4\u63A5\u7528"," coder wiki publish <collection> --file ./doc.md --after <\u524D\u4E00\u7BC7> # \u7D27\u8DDF\u67D0\u7BC7\u4E4B\u540E"," coder wiki move <doc> --index 3 # \u628A\u5DF2\u53D1\u5E03\u6587\u6863\u79FB\u5230\u8BE5\u4F4D\u7F6E",' coder wiki search "\u5173\u952E\u8BCD" --format json',"","Notes:"," \u6587\u6863/\u96C6\u5408 id \u5904\u53EF\u76F4\u63A5\u4F20 UUID\u3001urlId\uFF08\u6D4F\u89C8\u5668 URL \u672B\u6BB5\uFF09\u6216\u5B8C\u6574 URL\uFF0C\u81EA\u52A8\u8BC6\u522B\u3002"," \u5176\u5B83\u5B9E\u4F53 id\uFF08\u7528\u6237/\u7FA4\u7EC4/\u5206\u4EAB/\u7248\u672C/\u8BC4\u8BBA\u2026\uFF09\u9700\u4F20 UUID\uFF0C\u4ECE\u5BF9\u5E94 list \u547D\u4EE4\u83B7\u53D6\u3002",""," \u987A\u5E8F / \u4F4D\u7F6E\uFF08\u53D1\u5E03\u524D\u52A1\u5FC5\u5173\u6CE8\uFF09\uFF1A"," \u65B0\u6587\u6863\u9ED8\u8BA4\u63D2\u5230\u540C\u7EA7\u5217\u8868\u6700\u524D\u9762\u3002\u5148 `list <collection> -d -1` \u770B\u6574\u68F5\u6811\uFF0C"," \u627E\u5230\u8BE5\u6587\u6863\u5E94\u5F52\u5C5E\u7684\u540C\u7EA7\u4F4D\u7F6E\uFF08\u9876\u5C42\u6216\u67D0\u4E2A\u7236\u6587\u6863\u4E0B\uFF09\u3002"," \u63A8\u8350\u7528 --after <\u540C\u7EA7\u7684\u524D\u4E00\u7BC7>\uFF1A\u5728\u6574\u68F5\u6811\u91CC\u5B9A\u4F4D\uFF0C\u63D2\u5230\u5176\u540E\u5E76\u81EA\u52A8\u7EE7\u627F\u540C\u7EA7\u7236\u6587\u6863\uFF0C"," \u4E0D\u7BA1\u76EE\u6807\u5728\u9876\u5C42\u8FD8\u662F\u5B50\u76EE\u5F55\u90FD\u9002\u7528\u3002--index <n> \u662F\u540C\u4E00\u7236\u7EA7\u4E0B\u7684\u4E0B\u6807\uFF080 \u5728\u6700\u524D\uFF09\uFF0C"," \u4EC5\u5728\u4F60\u5DF2\u786E\u5B9A\u7236\u7EA7\u65F6\u7528\uFF1B\u653E\u8FDB\u5B50\u76EE\u5F55\u53EF\u518D\u914D\u5408 --parent <\u7236\u6587\u6863>\u3002"," \u5DF2\u53D1\u5E03\u7684\u6587\u6863\u8C03\u987A\u5E8F\u7528 move\uFF1A`move <doc> --after <doc>` \u6216 `move <doc> [parentDoc] --index <n>`\u3002"," \uFF08update \u53EA\u6539\u5185\u5BB9/\u6807\u9898\uFF0C\u4E0D\u5F71\u54CD\u987A\u5E8F\u3002\uFF09"];t.emit(e.join(`
299
- `))}cc.exports={showHelp:Qh}});var fc=k((qx,dc)=>{var{WikiHttp:eg,docUrl:tg,colUrl:sg,errorMessage:rg}=cs(),{IdResolver:ng}=ac(),{COMMANDS:og,flag:Nx}=en(),uc=rn(),{showHelp:ig}=lc(),ag=t=>t.replace(/-([a-z])/g,(e,s)=>s.toUpperCase()),cg=new Set(["--format","--apikey"]);function lg(t){let e=[];for(let s=0;s<t.length;s++){if(cg.has(t[s])){s++;continue}e.push(t[s])}return e}var En=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({wikiSubcommand:e,wikiRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return ig(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),1;let{teamId:i,remaining:a}=this._extractTeamFlag(lg(s||[])),c=await this._resolveTeam(i,o),l=new eg(o,c),u=new ng(l),d={ctx:n,http:l,resolver:u,args:a,arg:a[0],teamId:c,docUrl:tg,colUrl:sg};try{let m=ag(e);if(typeof uc[m]=="function")return await uc[m](d)||0;let h=og[e];return h?await this._runCommand(h,d):(n.fail(`\u672A\u77E5\u5B50\u547D\u4EE4: ${e}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder wiki --help"),1)}catch(m){return m&&m.handled||n.fail(m.message||String(m),m.hint),1}}async _runCommand(e,s){let{ctx:r,http:n,resolver:o,arg:i,args:a}=s,c=i;if(e.req&&!c)return r.fail(e.req,"\u67E5\u770B\u7528\u6CD5: coder wiki --help"),1;if(e.reqArgs){let d=e.reqArgs(c,a);if(d)return r.fail(d,"\u67E5\u770B\u7528\u6CD5: coder wiki --help"),1}if(c&&e.id==="doc"?c=await o.toDocUuid(c):c&&e.id==="col"&&(c=await o.toColUuid(c)),e.resolve)for(let d of e.resolve)await this._resolveSlot(d,a,o);let l=e.body(c,a),u=await n.postJson(e.endpoint,l,{allowNoData:!!e.expectOk});return u.ok?(e.render(r,u.json),0):(r.fail(rg(u.body),this._failHint(u)),1)}async _resolveSlot(e,s,r){let n=e.kind==="col"?o=>r.toColUuid(o):o=>r.toDocUuid(o);if(e.flag){let o=s.indexOf(e.flag);o!==-1&&s[o+1]&&(s[o+1]=await n(s[o+1]))}else typeof e.pos=="number"&&s[e.pos]&&(s[e.pos]=await n(s[e.pos]))}_failHint(e){if(e.status===401||e.status===403)return"\u68C0\u67E5\u767B\u5F55\u4E0E\u56E2\u961F\u6743\u9650: coder auth status";if(e.status===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528 coder wiki search <\u5173\u952E\u8BCD> \u67E5\u627E"}_extractTeamFlag(e){let s=e.indexOf("--team");return s!==-1&&e[s+1]?{teamId:e[s+1],remaining:[...e.slice(0,s),...e.slice(s+2)]}:{teamId:null,remaining:e}}async _resolveTeam(e,s){if(e)return e;let r=this.ctx,n=r.getTeam?r.getTeam():null;if(n&&n.id)return n.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),i=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(i.status===200){let c=this.teamService.parseJson(i.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};dc.exports=En});var mc=k((jx,pc)=>{function ug(t){let e=["Usage: coder team <command> [args] [options]"," coder team <members|groups> <verb> [args] [options]","","AI \u539F\u751F\u7684\u56E2\u961F\u4E0E\u6210\u5458\u7BA1\u7406\u3002","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\uFF08members/groups \u5B50\u547D\u4EE4\u9ED8\u8BA4\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09"," --format json \u7ED3\u6784\u5316 JSON \u8F93\u51FA\uFF08\u9ED8\u8BA4 text\uFF09","","Team:"," list \u5217\u51FA\u6211\u52A0\u5165\u7684\u56E2\u961F\uFF08\u522B\u540D: ls\uFF09"," current \u663E\u793A\u5F53\u524D\u9ED8\u8BA4\u56E2\u961F"," use <teamId> \u5207\u6362\u9ED8\u8BA4\u56E2\u961F\uFF08\u5199\u5165\u914D\u7F6E\uFF09"," info [teamId] \u56E2\u961F\u8BE6\u60C5\uFF1A\u79EF\u5206\u3001\u6210\u5458\u6570\u3001\u6709\u6548\u671F\u7B49","","Members (coder team members <verb>):"," list [-q <kw>] [--type human|ai] \u5217\u51FA/\u641C\u7D22\u6210\u5458\uFF08\u7701\u7565 verb \u5373 list\uFF09"," info <userId|username> \u6210\u5458\u8BE6\u60C5"," create <username> \u521B\u5EFA\u6210\u5458\uFF08\u9ED8\u8BA4 user_type=human\uFF09"," [--type human|ai] [--password <pwd>] [--phone <phone>]"," [--nickname <n>] [--mentor <userId|username>] [--points <n>] [--save-to <path>]"," update <userId|username> \u66F4\u65B0\u6635\u79F0 / mentor"," [--nickname <n>] [--mentor <userId|username>] [--clear-mentor]"," set-points <userId|username> --points <n|unlimited> \u8BBE\u7F6E\u79EF\u5206\u914D\u989D\uFF08owner/manager\uFF09"," delete <userId|username> [--yes] \u5220\u9664\u6210\u5458\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09","","Groups (coder team groups <verb>):"," list \u5217\u51FA\u5C0F\u7EC4\uFF08\u7701\u7565 verb \u5373 list\uFF09"," info <groupId> \u5C0F\u7EC4\u8BE6\u60C5\uFF08\u542B\u6210\u5458\u6570\uFF09"," members <groupId> \u5217\u51FA\u5C0F\u7EC4\u6210\u5458"," create <name> [--description <d>] \u521B\u5EFA\u5C0F\u7EC4"," update <groupId> [--name <n>] [--description <d>] \u66F4\u65B0\u5C0F\u7EC4"," delete <groupId> [--yes] \u5220\u9664\u5C0F\u7EC4\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09"," add-member <groupId> <userIds> [--role member|mentor] \u6279\u91CF\u6DFB\u52A0\uFF08userIds \u9017\u53F7\u5206\u9694\uFF09"," set-role <groupId> <userId|username> <member|mentor> \u4FEE\u6539\u6210\u5458\u89D2\u8272"," remove-member <groupId> <userId|username> [--yes] \u79FB\u9664\u6210\u5458\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09","","\u9000\u51FA\u7801: 0 \u6210\u529F \xB7 3 \u53C2\u6570\u9519\u8BEF \xB7 4 \u4E0D\u5B58\u5728 \xB7 5 \u65E0\u6743\u9650 \xB7 10 \u5F85\u786E\u8BA4(\u9AD8\u5F71\u54CD\u9700 --yes) \xB7 \u5176\u4F59\u975E\u96F6\u4E3A\u9519\u8BEF","","Examples:"," coder team list"," coder team members --type ai"," coder team members -q mulan --format json"," coder team members create alice --phone 13800000000 --save-to ./alice.cred"," coder team groups add-member <groupId> alice,bob --role mentor"];t.emit(e.join(`
300
- `))}pc.exports={showHelp:ug}});var er=k((Mx,yc)=>{var{TeamHttp:hc,parseJson:dg}=Rs(),gc=Fr(),{showHelp:fg}=mc(),pg=new Set(["--format","--apikey"]);function mg(t){let e=[];for(let s=0;s<t.length;s++){if(pg.has(t[s])){s++;continue}e.push(t[s])}return e}var hg=new Set(["list","current","use","info"]),gg=new Set(["members","groups"]),An=class{constructor(e){this.ctx=e||null}request(e,s,r,n,o){return new hc(r).request(e,s,n,o)}parseJson(e){return dg(e)}async handle({teamSubcommand:e,teamRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return fg(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let i=mg(s||[]),a=e==="ls"?"list":e,c=this._resolve(a,i);if(!c)return n.fail(`\u672A\u77E5\u547D\u4EE4: coder team ${e}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;if(c.error)return n.fail(c.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;let{fn:l,args:u}=c,d=new hc(o),m={ctx:n,http:d,args:u,arg:u[0]};try{return await l(m)||0}catch(h){return h&&h.handled?h.code||1:(n.fail(h.message||String(h),h.hint),1)}}_resolve(e,s){if(hg.has(e))return{fn:gc[e],args:s};if(gg.has(e)){let r=gc[e],n=s[0];if(!n||n.startsWith("-"))return{fn:r.list,args:s};let o=r[n];if(!o){let i=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${i}\uFF09`}}return{fn:o,args:s.slice(1)}}return null}};yc.exports=An});var wc=k((Gx,_c)=>{var yg=fc(),_g=er();function wg(t,e){let s=new yg(e);return s.teamService=new _g(e),t.command("wiki [args...]").description("\u7BA1\u7406 MakeCoder \u77E5\u8BC6\u5E93").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],o=await s.handle({wikiSubcommand:n[0],wikiRemainingArgs:n.slice(1),apikey:e.getApiKey()});process.exitCode=o||0}),s}_c.exports={register:wg}});var Tn=k((Bx,kc)=>{var bg=require("https"),kg=require("http"),{URL:xg}=require("url"),bc="https://flow.makecoder.com",Sg="coder";function Ig(t){return t==="darwin"?"macos":t==="win32"?"windows":"linux"}var $n=class{constructor(e,s,r){this.token=e,this.baseUrl=(s||bc).replace(/\/+$/,""),this.workspaceId=r||null,this.version=process.env.CODER_VERSION||"dev",this.os=Ig(process.platform)}request(e,s,r){return new Promise((n,o)=>{let i=new xg(`${this.baseUrl}${s}`),a=i.protocol==="http:"?kg:bg,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":Sg,"X-Client-Version":this.version,"X-Client-OS":this.os};this.workspaceId&&(c["X-Workspace-ID"]=this.workspaceId);let l=null;r!=null&&(l=JSON.stringify(r),c["Content-Length"]=Buffer.byteLength(l));let u=a.request({hostname:i.hostname,port:i.port||(i.protocol==="http:"?80:443),path:i.pathname+i.search,method:e,headers:c},d=>{let m="";d.on("data",h=>m+=h),d.on("end",()=>n({status:d.statusCode,body:m}))});u.on("error",o),l&&u.write(l),u.end()})}async getWorkspaceSlug(){if(this._slug!==void 0)return this._slug;if(this._slug=null,!this.workspaceId)return null;try{let e=await this.request("GET",`/api/workspaces/${encodeURIComponent(this.workspaceId)}`);if(e.status>=200&&e.status<300){let s=gs(e.body);s&&s.slug&&(this._slug=s.slug)}}catch{}return this._slug}async getActorLookup(){if(this._actorLookup)return this._actorLookup;if(this._actorLookup=new Map,!this.workspaceId)return this._actorLookup;let e=await this.getWorkspaceSlug(),[s,r]=await Promise.allSettled([this.request("GET",`/api/agents?workspace_id=${encodeURIComponent(this.workspaceId)}`),this.request("GET",`/api/workspaces/${encodeURIComponent(this.workspaceId)}/members`)]);if(s.status==="fulfilled"){let n=gs(s.value.body),o=Array.isArray(n)?n:n?.data??n?.agents??[];for(let i of o){if(!i.id)continue;let a=e?`${this.baseUrl}/${e}/agents/${i.id}`:null;this._actorLookup.set(i.id,{name:i.name||i.id,type:"agent",url:a})}}if(r.status==="fulfilled"){let n=gs(r.value.body),o=Array.isArray(n)?n:n?.data??n?.members??[];for(let i of o){let a=i.user_id||i.id;if(!a)continue;let c=e?`${this.baseUrl}/${e}/members/${a}`:null;this._actorLookup.set(a,{name:i.name||i.username||a,type:"member",url:c})}}return this._actorLookup}};function gs(t){try{return JSON.parse(t)}catch{return null}}function Cg(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Eg(t){let e=gs(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}kc.exports={MulticaHttp:$n,parseJson:gs,exitCodeForStatus:Cg,errorMessage:Eg,DEFAULT_BASE_URL:bc}});var Ec=k((Fx,Cc)=>{var Un=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function xc(t,e){return`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`}function Ag(t,e){return`[${t}](${e})`}function vn(t){return!t.isJson}function tr(t,e){return process.stdout.isTTY?xc(t,e):Ag(t,e)}function Sc(t){return t>=4352&&t<=4447||t>=11904&&t<=12350||t>=12353&&t<=13311||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=40960&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141?2:1}function Zt(t){let e=0;for(let s of String(t))e+=Sc(s.codePointAt(0));return e}function $g(t,e){if(Zt(t)<=e)return t;let s=0,r="";for(let n of t){let o=Sc(n.codePointAt(0));if(s+o>e-1)break;r+=n,s+=o}return r+"\u2026"}function Ic(t,e){return t+" ".repeat(Math.max(0,e-Zt(t)))}function Tg(t,e,s={}){let{labels:r={},empty:n="\uFF08\u7A7A\uFF09",values:o={},linkCol:i=null,rowLinks:a=null,colLinks:c=null}=s;if(!e||!e.length){t.emit(n);return}if(t.isJson){t.emit(e);return}let l=Object.keys(e[0]),u=l.map(P=>Un(r[P]||P)),d=(P,j)=>{let G=o[P];return G&&G[j]!==void 0?G[j]:j},m=e.map(P=>l.map(j=>$g(Un(d(j,P[j])),48))),h=l.map((P,j)=>{let G=Zt(u[j]);for(let te of m)G=Math.max(G,Zt(te[j]));return Math.max(3,G)}),g=i?l.indexOf(i):-1,_=g!==-1&&a&&vn(t),w=c?l.indexOf(c.col):-1,S=w!==-1&&c?.links&&vn(t),L=(P,j)=>`| ${P.map((G,te)=>{let Re=Ic(G,h[te]);return _&&te===g&&j>=0&&a[j]?tr(G,a[j])+Re.slice(G.length):S&&te===w&&j>=0&&c.links[j]?tr(G,c.links[j])+Re.slice(G.length):Re}).join(" | ")} |`,z=[L(u,-1),`| ${h.map(P=>"-".repeat(P)).join(" | ")} |`,...m.map((P,j)=>L(P,j))];t.emit(z.join(`
301
- `))}function Ug(t,e,s=null,r={}){if(t.isJson){let h={};for(let[g,_]of e)h[g]=_;s&&typeof s=="object"&&Object.assign(h,s),t.emit(h);return}let{labels:n={},values:o={},link:i=null,fieldLinks:a=null}=r,c=(h,g)=>String(g||n[h]||h),l=e.map(([h,,g])=>c(h,g)),u=Math.max(0,...l.map(h=>Zt(h))),d=vn(t),m=(h,g)=>{let _=o[h],w=_&&_[g]!==void 0?_[g]:g??"";return d&&i&&h===i.key&&i.url?w=tr(String(w),i.url):d&&a&&a[h]&&(w=tr(String(w),a[h])),w};t.emit(e.map(([h,g,_])=>`${Ic(c(h,_),u)} ${m(h,g)}`).join(`
302
- `))}Cc.exports={emitTable:Tg,emitDetails:Ug,escCell:Un,displayWidth:Zt,hyperlink:xc}});var Tc=k((Zx,$c)=>{var{parseJson:vg,exitCodeForStatus:Og,errorMessage:Dg}=Tn();function sr(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function Rg(t){if(t===401)return"\u786E\u8BA4\u51ED\u8BC1: coder auth login --apikey <ak>.<sk>";if(t===403)return"\u6743\u9650\u4E0D\u8DB3\uFF1B\u786E\u8BA4\u5F53\u524D\u56E2\u961F: coder team current";if(t===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528\u5BF9\u5E94\u8D44\u6E90\u7684 list \u67E5\u627E"}function Ac(t,e){sr(t,Dg(e.body),Rg(e.status),Og(e.status))}async function Lg(t,e,s,r){try{return await t.http.request(e,s,r)}catch(n){sr(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${n.message}`,void 0,1)}}function Pg(t,e){return(e.status<200||e.status>=300)&&Ac(t.ctx,e),vg(e.body)}var Ng=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},qg=(t,...e)=>t.some(s=>e.includes(s));function jg(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let o=t[n];if(!e.includes(o)){if(s.includes(o)){n++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function Mg(t){let e=t.http&&t.http.workspaceId;return e||sr(t.ctx,"\u672A\u6307\u5B9A workspace \u4E14\u65E0\u5F53\u524D\u56E2\u961F","\u5148\u5207\u56E2\u961F: coder team use <id>\uFF08\u6216 coder team current \u67E5\u770B\uFF09\uFF0C\u6216\u52A0 --team <id>",3),e}$c.exports={abort:sr,abortOnHttp:Ac,send:Lg,ensureOk:Pg,flag:Ng,hasFlag:qg,positionals:jg,requireWorkspaceId:Mg}});var ys=k((Vx,Uc)=>{var Dn=require("http"),rr=19514,On=class{constructor(e=rr){this.port=e,this.status="starting",this.startTime=Date.now(),this.daemonId=null,this.agents=[],this.workspaces=[],this._shutdownFn=null,this._server=null}setShutdown(e){this._shutdownFn=e}start(){this._server=Dn.createServer((e,s)=>{if(e.method==="GET"&&e.url==="/health"){let r=JSON.stringify({status:this.status,pid:process.pid,uptime:Math.floor((Date.now()-this.startTime)/1e3)+"s",daemon_id:this.daemonId,agents:this.agents,workspaces:this.workspaces});s.writeHead(200,{"Content-Type":"application/json"}),s.end(r)}else e.method==="POST"&&e.url==="/shutdown"?(s.writeHead(200,{"Content-Type":"application/json"}),s.end('{"ok":true}'),this._shutdownFn&&setImmediate(this._shutdownFn)):(s.writeHead(404),s.end())}),this._server.listen(this.port,"127.0.0.1")}close(){this._server&&this._server.close()}};async function Gg(t=rr,e=2e3){return new Promise(s=>{let r=Dn.get(`http://127.0.0.1:${t}/health`,{timeout:e},n=>{let o="";n.on("data",i=>o+=i),n.on("end",()=>{try{s(JSON.parse(o))}catch{s({status:"stopped"})}})});r.on("error",()=>s({status:"stopped"})),r.on("timeout",()=>{r.destroy(),s({status:"stopped"})})})}async function Bg(t=rr){return new Promise((e,s)=>{let r=Dn.request({host:"127.0.0.1",port:t,path:"/shutdown",method:"POST",timeout:2e3},n=>{n.resume(),n.on("end",e)});r.on("error",s),r.on("timeout",()=>{r.destroy(),s(new Error("timeout"))}),r.end()})}Uc.exports={HealthServer:On,checkHealth:Gg,requestShutdown:Bg,DEFAULT_HEALTH_PORT:rr}});var Wt=k((Wx,Oc)=>{var St=require("fs"),nr=require("path"),Fg=require("os"),Zg=require("crypto");function Vt(){return nr.join(Fg.homedir(),".multica")}function vc(){return nr.join(Vt(),"daemon.id")}function or(){return nr.join(Vt(),"daemon.pid")}function Vg(){return nr.join(Vt(),"daemon.log")}function Wg(t){if(t)return t;let e=vc();try{let r=St.readFileSync(e,"utf8").trim();if(r)return r}catch{}let s=Zg.randomUUID();try{St.mkdirSync(Vt(),{recursive:!0}),St.writeFileSync(e,s,"utf8")}catch{}return s}function Kg(t){try{St.mkdirSync(Vt(),{recursive:!0}),St.writeFileSync(or(),String(t),"utf8")}catch{}}function zg(){try{let t=St.readFileSync(or(),"utf8").trim();return parseInt(t,10)||null}catch{return null}}function Jg(){try{St.unlinkSync(or())}catch{}}Oc.exports={daemonDir:Vt,daemonIdPath:vc,daemonPidPath:or,daemonLogPath:Vg,loadOrCreateDaemonId:Wg,writePid:Kg,readPid:zg,removePid:Jg}});var Rn=k((Kx,Rc)=>{var Dc=require("os"),Hg=require("path");function Yg(t={}){let e=t.pollInterval||process.env.MULTICA_DAEMON_POLL_INTERVAL||"30s",s=t.heartbeatInterval||process.env.MULTICA_DAEMON_HEARTBEAT_INTERVAL||"15s";return{serverUrl:t.serverUrl||process.env.MULTICA_SERVER_URL||"https://flow.makecoder.com",daemonId:t.daemonId||process.env.MULTICA_DAEMON_ID||null,deviceName:t.deviceName||process.env.MULTICA_DAEMON_DEVICE_NAME||Dc.hostname(),runtimeName:t.runtimeName||process.env.MULTICA_AGENT_RUNTIME_NAME||"Claude",pollInterval:ir(e,3e4),heartbeatInterval:ir(s,15e3),maxConcurrentTasks:t.maxConcurrentTasks||parseInt(process.env.MULTICA_DAEMON_MAX_CONCURRENT_TASKS||"20",10),agentTimeout:t.agentTimeout!==void 0?t.agentTimeout:ir(process.env.MULTICA_AGENT_TIMEOUT||"0",0),workspacesRoot:process.env.MULTICA_WORKSPACES_ROOT||Hg.join(Dc.homedir(),"multica_workspaces"),keepEnvAfterTask:(process.env.MULTICA_KEEP_ENV_AFTER_TASK||"false")==="true",gcEnabled:(process.env.MULTICA_GC_ENABLED||"true")==="true",gcTtl:parseInt(process.env.MULTICA_GC_TTL||String(864e5),10),claudePath:process.env.MULTICA_CLAUDE_PATH||"coder",codexPath:process.env.MULTICA_CODEX_PATH||"coder",coderBaseUrl:t.coderBaseUrl||process.env.CODER_BASE_URL||"https://api.makecoder.com/v1",healthPort:t.healthPort||19514,token:t.token||null,cliVersion:t.cliVersion||(()=>{try{return vt().version}catch{return"0.2.20"}})()}}function ir(t,e){if(!t||t==="0"||t==="0s")return 0;let s=String(t).match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(!s)return e;let r=parseFloat(s[1]),n=s[2]||"s";return n==="ms"?Math.round(r):n==="s"?Math.round(r*1e3):n==="m"?Math.round(r*6e4):n==="h"?Math.round(r*36e5):e}Rc.exports={loadConfig:Yg,parseDuration:ir}});var Pc=k((Jx,Lc)=>{var Xg=require("https"),Qg=require("http"),{URL:ey}=require("url"),zx=require("os"),Ln=class{constructor(e,s,r){this.serverUrl=(e||"https://flow.makecoder.com").replace(/\/+$/,""),this.token=s,this.cliVersion=r||"dev",this.os=this._normalizeOS(process.platform)}_normalizeOS(e){return e==="darwin"?"macos":e==="win32"?"windows":"linux"}_request(e,s,r){return new Promise((n,o)=>{let i=new ey(`${this.serverUrl}${s}`),a=i.protocol==="http:"?Qg:Xg,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion,"X-Client-OS":this.os},l=null;r!=null&&(l=JSON.stringify(r),c["Content-Length"]=Buffer.byteLength(l));let u=a.request({hostname:i.hostname,port:i.port||(i.protocol==="http:"?80:443),path:i.pathname+i.search,method:e,headers:c},d=>{let m="";d.on("data",h=>m+=h),d.on("end",()=>n({status:d.statusCode,body:m}))});u.on("error",o),l&&u.write(l),u.end()})}_json(e){try{return JSON.parse(e.body)}catch{return null}}async register({workspaceId:e,daemonId:s,deviceName:r,cliVersion:n,runtimes:o}){let i=await this._request("POST","/api/daemon/register",{workspace_id:e,daemon_id:s,device_name:r,cli_version:n||this.cliVersion,runtimes:o});return this._json(i)}async deregister(e){let s=await this._request("POST","/api/daemon/deregister",{runtime_ids:e});return this._json(s)}async claimTask(e){let s=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/tasks/claim`,{});if(s.status===404)return null;let r=this._json(s);return r&&r.task||null}async taskStart(e){return this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/start`,{})}async taskComplete(e,{output:s,sessionId:r,workDir:n}={}){let o={};return s!==void 0&&(o.output=s),r&&(o.session_id=r),n&&(o.work_dir=n),this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/complete`,o)}async taskFail(e,{error:s,sessionId:r,workDir:n}={}){let o={};return s!==void 0&&(o.error=s),r&&(o.session_id=r),n&&(o.work_dir=n),this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/fail`,o)}async taskMessages(e,s){return this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/messages`,{messages:s})}async taskSession(e,{sessionId:s,workDir:r}={}){let n={};return s&&(n.session_id=s),r&&(n.work_dir=r),this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/session`,n)}async taskStatus(e){let s=await this._request("GET",`/api/daemon/tasks/${encodeURIComponent(e)}/status`);return this._json(s)}async heartbeat(e){let s=await this._request("POST","/api/daemon/heartbeat",{runtime_id:e,supports_batch_import:!0});return this._json(s)}async reportModelListResult(e,s,r){let n=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(s)}/result`,r);if(n.status>=400)throw new Error(`reportModelListResult ${n.status}: ${n.body}`);return this._json(n)}async getWorkspaces(){let e=await this._request("GET","/api/workspaces"),s=this._json(e);return s?Array.isArray(s)?s:s.workspaces||[]:[]}};Lc.exports={DaemonClient:Ln}});var Gc=k((Hx,Mc)=>{var It=require("fs"),qc=require("path"),ty=require("os"),Pn="<!-- BEGIN MULTICA-RUNTIME (auto-managed; do not edit) -->",Nn="<!-- END MULTICA-RUNTIME -->",qn=`
296
+ `))}};Xa.exports=An});var tc=k((Mx,ec)=>{var Vh=Qa(),{validatePubMetaData:Wh}=sr();function Kh(t,e){let s=new Vh;t.command("pub").description("\u53D1\u5E03\u5F53\u524D\u76EE\u5F55\u4E3A MakeCoder \u7F51\u9875\u5E94\u7528\uFF08*.coder.pub\uFF09").option("--name <name>","\u9879\u76EE\u540D\u79F0\uFF08\u7F3A\u7701\u5219\u5728\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4E2D\u63D0\u793A\u8F93\u5165\uFF09").option("--meta-data <json>","\u9644\u52A0\u5143\u6570\u636E\uFF08\u5408\u6CD5 JSON \u5B57\u7B26\u4E32\uFF09").option("--allow-clone","\u5305\u542B AI \u751F\u6210\u8BB0\u5F55\uFF08Claude JSONL\uFF09\u4EE5\u4FBF\u514B\u9686").action(async r=>{if(!e.requireApiKey()){process.exitCode=1;return}if(r.metaData){let n=Wh(r.metaData);if(!n.ok){e.fail(n.error,`--meta-data \u9700\u4E3A\u5408\u6CD5 JSON\uFF0C\u4F8B\u5982 '{"key":"value"}'`),process.exitCode=1;return}}if(!r.name&&e.isNonInteractive){e.fail("missing project name","run `coder pub --name <name>`"),process.exitCode=1;return}process.exitCode=await s.publish({name:r.name,metaData:r.metaData,allowClone:!!r.allowClone,apikey:e.getApiKey(),coderBaseUrl:e.getCoderBaseUrl()})||0})}ec.exports={register:Kh}});var uc=k((Gx,lc)=>{var{execSync:Tn,execFileSync:sc}=require("child_process"),$n=require("fs"),nr=require("path"),{PLATFORM_PACKAGE:zh}=Ds(),{validateRegistry:Jh}=sr(),Kt=["https://registry.npmmirror.com","https://mirrors.cloud.tencent.com/npm/","https://mirrors.huaweicloud.com/repository/npm/"];function rc(t){if(!t)return!1;let e=t.toLowerCase();return e.includes("npmmirror.com")||e.includes("npm.taobao.org")||e.includes("cloud.tencent.com")||e.includes("huaweicloud.com")||e.includes("cnpmjs.org")||e.includes("ustc.edu.cn")}function nc(){try{return Tn("npm config get registry",{encoding:"utf8"}).trim()}catch{return"https://registry.npmjs.org/"}}function Hh(){try{let t=Tn("npm root -g",{encoding:"utf8"}).trim(),e=nr.join(t,"makecoder","package.json");if($n.existsSync(e))return JSON.parse($n.readFileSync(e,"utf8")).version}catch{}return null}function Yh(t){try{let e=["view","makecoder@latest","version"];return t&&e.push("--registry",t),sc("npm",e,{encoding:"utf8"}).trim()||null}catch{return null}}function Xh({registry:t,verbose:e}){let s=["install","-g"];return t&&s.push("--registry",t),e&&s.push("--loglevel","verbose"),s}function oc(t,e,s){let r=[...Xh(e),t];e.verbose&&s.emit(`$ npm ${r.join(" ")}`),sc("npm",r,{stdio:"inherit"})}function Qh(t,e){let s=`${process.platform}-${process.arch}`,r=zh[s];if(!r)return;let n;try{n=Tn("npm root -g",{encoding:"utf8"}).trim()}catch{return}if([nr.join(n,"makecoder","node_modules",r,"package.json"),nr.join(n,r,"package.json")].some(l=>$n.existsSync(l)))return;e.emit(`\u672A\u68C0\u6D4B\u5230 ${r}\uFF0C\u6B63\u5728\u8865\u88C5...`);let i;try{i=require(nr.join(n,"makecoder","package.json")).optionalDependencies?.[r]}catch{}let a=l=>{try{return oc(l,t,e),!0}catch{return!1}};i&&a(`${r}@${i}`)||a(`${r}@latest`)||e.fail(`\u81EA\u52A8\u8865\u88C5 ${r} \u5931\u8D25\uFF0Ccoder codex \u53EF\u80FD\u4E0D\u53EF\u7528`,`\u624B\u52A8\u6267\u884C: npm install -g ${r}@latest`)}function ic(t,e){if(!rc(t)){e.emit(""),e.emit(`\u5F53\u524D npm \u6E90\u4E3A ${t}\uFF08\u975E\u56FD\u5185\u6E90\uFF0C\u56FD\u5185\u7F51\u7EDC\u53EF\u80FD\u8F83\u6162\uFF09\u3002`),e.emit("\u53EF\u4E34\u65F6\u4E3A\u672C\u6B21\u5347\u7EA7\u6307\u5B9A\u56FD\u5185\u6E90:"),e.emit(` coder update --registry ${Kt[0]}`),e.emit("\u6216\u6C38\u4E45\u5207\u6362 npm \u5168\u5C40\u6E90:");for(let s of Kt)e.emit(` npm config set registry ${s}`)}}function eg(t,e){let s=o=>String(o).replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(n[o]||0))return!0;if((r[o]||0)<(n[o]||0))return!1}return!1}function ac(t,e){let s=Lt().version,r=t.registry||nc(),n=Yh(t.registry||null);return e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`\u6700\u65B0\u7248\u672C: ${n||"\u67E5\u8BE2\u5931\u8D25\uFF08\u68C0\u67E5\u7F51\u7EDC\u6216 registry\uFF09"}`),e.emit(`npm \u6E90: ${r}`),n&&eg(n,s)?(e.emit(""),e.emit(`\u6709\u53EF\u7528\u66F4\u65B0 ${s} \u2192 ${n}\uFF0C\u8FD0\u884C coder update \u5347\u7EA7\u3002`)):n&&(e.emit(""),e.emit("\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002")),ic(r,e),0}function cc(t,e){let s=Lt().version,r=t.registry||nc();e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`npm \u6E90: ${r}`),ic(r,e),e.emit(""),e.emit("\u6B63\u5728\u5347\u7EA7 Coder...");try{oc("makecoder@latest",t,e)}catch(o){let i=String(o.message||""),a=/EACCES|permission/i.test(i)?"\u6743\u9650\u4E0D\u8DB3\uFF0C\u5C1D\u8BD5: sudo npm install -g makecoder@latest\uFF08\u6216\u4FEE\u590D npm \u5168\u5C40\u76EE\u5F55\u6743\u9650\uFF09":"\u68C0\u67E5\u7F51\u7EDC\u6216\u6362\u6E90\u540E\u91CD\u8BD5: coder update --registry "+Kt[0];return e.fail(`\u5347\u7EA7\u5931\u8D25: ${i.split(`
297
+ `)[0]}`,a),1}Qh(t,e);let n=Hh();return e.emit(""),e.emit(n?`\u5347\u7EA7\u6210\u529F\uFF0C\u5F53\u524D\u7248\u672C: ${n}`:"\u5347\u7EA7\u6210\u529F"),0}function tg(t,e){t.command("update").description("\u5347\u7EA7 Coder \u5230\u6700\u65B0\u7248\u672C").option("--check","\u53EA\u68C0\u6D4B\u6700\u65B0\u7248\u672C\u4E0E\u5F53\u524D npm \u6E90\uFF0C\u4E0D\u6267\u884C\u5B89\u88C5").option("--registry <url>","\u672C\u6B21\u64CD\u4F5C\u4F7F\u7528\u7684 npm \u6E90\uFF08\u9ED8\u8BA4\u6CBF\u7528\u5168\u5C40 registry\uFF09").option("--verbose","\u6253\u5370\u6BCF\u4E00\u6B65\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u5E76\u63D0\u9AD8 npm \u65E5\u5FD7\u7EA7\u522B").addHelpText("after",["","\u793A\u4F8B:"," coder update \u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C"," coder update --check \u53EA\u770B\u6709\u6CA1\u6709\u65B0\u7248\u672C\uFF0C\u4E0D\u5B89\u88C5",` coder update --registry ${Kt[0]}`," coder update --verbose \u6392\u67E5\u5347\u7EA7\u95EE\u9898\u65F6\u67E5\u770B\u8BE6\u7EC6\u65E5\u5FD7"].join(`
298
+ `)).action(s=>{if(s.registry){let r=Jh(s.registry);if(!r.ok){e.fail(r.error,`\u793A\u4F8B: coder update --registry ${Kt[0]}`),process.exitCode=1;return}s.registry=r.value}process.exitCode=s.check?ac(s,e):cc(s,e)})}lc.exports={register:tg,runUpdate:cc,runCheck:ac,isCnRegistry:rc,CN_REGISTRIES:Kt}});var pc=k((Bx,dc)=>{var{isUuid:sg,classifyId:rg}=Qr(),Un=class{constructor(e){this.http=e,this._cache=new Map}async toDocUuid(e){return this._resolve(e,"documents.info","\u6587\u6863")}async toColUuid(e){return this._resolve(e,"collections.info","\u96C6\u5408")}async _resolve(e,s,r){if(e==null||e===""||sg(e))return e;if(this._cache.has(e))return this._cache.get(e);let n=rg(e);if(!n){let l=new Error(`\u65E0\u6CD5\u8BC6\u522B\u7684${r} id: ${e}`);throw l.hint=`\u4F20\u5165${r}\u7684 UUID\u3001urlId \u6216\u6D4F\u89C8\u5668 URL\uFF1B\u6216\u7528 coder wiki search <\u5173\u952E\u8BCD> \u67E5\u627E`,l}if(n.kind==="uuid")return this._cache.set(e,n.value),n.value;let{ok:o,json:i,body:a}=await this.http.postJson(s,{id:n.value}),c=i?.data?.id;if(!o||!c){let l=new Error(`\u627E\u4E0D\u5230${r}: ${e}`);throw l.hint=`\u786E\u8BA4${r}\u5B58\u5728\u4E14\u5F53\u524D\u56E2\u961F\u6709\u6743\u8BBF\u95EE\uFF08${ng(a)}\uFF09`,l}return this._cache.set(e,c),c}};function ng(t){try{let e=JSON.parse(t);return e.message||e.error||""}catch{return(t||"").slice(0,120)}}dc.exports={IdResolver:Un}});var mc=k((Fx,fc)=>{function og(t){let e=["Usage: coder wiki <subcommand> [args] [options]","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\u4E0A\u4E0B\u6587\uFF08\u9ED8\u8BA4\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09"," --format json \u7ED3\u6784\u5316 JSON \u8F93\u51FA\uFF08\u9ED8\u8BA4 text\uFF09","","Collections:"," list \u5217\u51FA\u6240\u6709\u96C6\u5408"," list <collection> [-d <depth>] \u5217\u51FA\u96C6\u5408\u4E0B\u6587\u6863\uFF08-d -1 \u5C55\u5F00\u6574\u68F5\u6811\uFF09"," create-collection <name> [desc] [--permission r|rw|null] [--icon <i>] [--color #hex] [--sort-field title|index] [--sort-direction asc|desc] [--index <fi>]"," update-collection <collection> [--name] [--description] [--permission] [--color] [--sharing]"," archive-collection / restore-collection / delete-collection <collection>"," collection-info <collection> \u96C6\u5408\u8BE6\u60C5"," collection-members <collection> [--query] [--permission]"," collection-add-user / collection-remove-user <collection> <userId>"," collection-add-group / collection-remove-group <collection> <groupId>"," collection-group-members <collection>"," collection-export <collection> [--format outline|markdown_zip]"," export-all [--format outline|markdown_zip]"," collection-move <collection> <index>"," icons [keyword] \u5217\u51FA\u53EF\u7528\u56FE\u6807\u540D","","Documents:"," get <doc> \u67E5\u770B\u6587\u6863\uFF08\u542B\u6B63\u6587\uFF09",' publish <collection> "\u6807\u9898" ["\u6B63\u6587"]'," publish <collection> --file <path> [--parent <doc>] [--index <n>] [--after <doc>]"," update <doc> --file <path>",' update <doc> "\u6807\u9898" ["\u6B63\u6587"]'," delete <doc> [--permanent]"," move <doc> [collection] [parentDoc] [--index <n>] [--after <doc>]"," archive <doc> / restore <doc> [--revision <revId>] [--collection <col>]"," archived [--collection <col>] / deleted"," insights <doc> [--start-date] [--end-date]"," export <doc> [--include-children]"," search <keyword> / search-titles <keyword>"," duplicate <doc> [--title] [--recursive] [--publish] [--collection] [--parent]"," unpublish <doc> / templatize <doc> [--collection]"," doc-members <doc>"," doc-add-user / doc-remove-user <doc> <userId>"," doc-add-group / doc-remove-group <doc> <groupId>"," doc-group-members <doc> / sub-docs <doc> / empty-trash","","Revisions / Discovery:"," revisions <doc> / revision <revId>"," drafts / recent","","Favorites & Pins:"," stars / star <doc|col> [--collection] / unstar <starId>"," pins [collection] / pin <doc> [collection] / unpin <pinId>","","Comments:",' comments <doc> / comment <doc> "\u5185\u5BB9"',"","Shares:"," shares [--document <doc>] / share-info <shareId>"," share <doc> [--published] [--include-children]"," share-update <shareId> [--published] [--no-published] [--include-children]"," unshare <shareId>","","Users / Groups:"," users [--query] [--filter] / user-info <userId>"," invite <email> <name> <role> / user-update-role <userId> <role>"," user-suspend / user-activate <userId>"," groups [--query] / group-info <groupId> / create-group <name>"," update-group <groupId> --name <n> / delete-group <groupId>"," group-members <groupId> / group-add-user / group-remove-user <groupId> <userId>","","Subscriptions / Events / Templates / Files / Attachments:"," subscriptions <doc>|--collection <col> / subscribe <doc> / unsubscribe <subId>"," views <doc> / view <doc>"," events [--actor] [--document] [--collection] [--type]"," templates [--collection] / template-info <tplId>"," create-template <collection> <title> [--text] / update-template <tplId> [--title] [--text]"," delete-template / duplicate-template <tplId>"," file-ops [--type] / file-op-info / file-op-delete <fileOpId>"," reactions <commentId>"," attachments [doc] / delete-attachment <attId>"," upload <doc> <filePath> / upload-url <doc> <url>","","Examples:"," coder wiki list"," coder wiki get https://makecoder.com/wiki/doc/title-gohs4hSGLY # URL \u76F4\u63A5\u7528"," coder wiki revisions gohs4hSGLY # urlId \u76F4\u63A5\u7528"," coder wiki publish <collection> --file ./doc.md --after <\u524D\u4E00\u7BC7> # \u7D27\u8DDF\u67D0\u7BC7\u4E4B\u540E"," coder wiki move <doc> --index 3 # \u628A\u5DF2\u53D1\u5E03\u6587\u6863\u79FB\u5230\u8BE5\u4F4D\u7F6E",' coder wiki search "\u5173\u952E\u8BCD" --format json',"","Notes:"," \u6587\u6863/\u96C6\u5408 id \u5904\u53EF\u76F4\u63A5\u4F20 UUID\u3001urlId\uFF08\u6D4F\u89C8\u5668 URL \u672B\u6BB5\uFF09\u6216\u5B8C\u6574 URL\uFF0C\u81EA\u52A8\u8BC6\u522B\u3002"," \u5176\u5B83\u5B9E\u4F53 id\uFF08\u7528\u6237/\u7FA4\u7EC4/\u5206\u4EAB/\u7248\u672C/\u8BC4\u8BBA\u2026\uFF09\u9700\u4F20 UUID\uFF0C\u4ECE\u5BF9\u5E94 list \u547D\u4EE4\u83B7\u53D6\u3002",""," \u987A\u5E8F / \u4F4D\u7F6E\uFF08\u53D1\u5E03\u524D\u52A1\u5FC5\u5173\u6CE8\uFF09\uFF1A"," \u65B0\u6587\u6863\u9ED8\u8BA4\u63D2\u5230\u540C\u7EA7\u5217\u8868\u6700\u524D\u9762\u3002\u5148 `list <collection> -d -1` \u770B\u6574\u68F5\u6811\uFF0C"," \u627E\u5230\u8BE5\u6587\u6863\u5E94\u5F52\u5C5E\u7684\u540C\u7EA7\u4F4D\u7F6E\uFF08\u9876\u5C42\u6216\u67D0\u4E2A\u7236\u6587\u6863\u4E0B\uFF09\u3002"," \u63A8\u8350\u7528 --after <\u540C\u7EA7\u7684\u524D\u4E00\u7BC7>\uFF1A\u5728\u6574\u68F5\u6811\u91CC\u5B9A\u4F4D\uFF0C\u63D2\u5230\u5176\u540E\u5E76\u81EA\u52A8\u7EE7\u627F\u540C\u7EA7\u7236\u6587\u6863\uFF0C"," \u4E0D\u7BA1\u76EE\u6807\u5728\u9876\u5C42\u8FD8\u662F\u5B50\u76EE\u5F55\u90FD\u9002\u7528\u3002--index <n> \u662F\u540C\u4E00\u7236\u7EA7\u4E0B\u7684\u4E0B\u6807\uFF080 \u5728\u6700\u524D\uFF09\uFF0C"," \u4EC5\u5728\u4F60\u5DF2\u786E\u5B9A\u7236\u7EA7\u65F6\u7528\uFF1B\u653E\u8FDB\u5B50\u76EE\u5F55\u53EF\u518D\u914D\u5408 --parent <\u7236\u6587\u6863>\u3002"," \u5DF2\u53D1\u5E03\u7684\u6587\u6863\u8C03\u987A\u5E8F\u7528 move\uFF1A`move <doc> --after <doc>` \u6216 `move <doc> [parentDoc] --index <n>`\u3002"," \uFF08update \u53EA\u6539\u5185\u5BB9/\u6807\u9898\uFF0C\u4E0D\u5F71\u54CD\u987A\u5E8F\u3002\uFF09"];t.emit(e.join(`
299
+ `))}fc.exports={showHelp:og}});var yc=k((Vx,gc)=>{var{WikiHttp:ig,docUrl:ag,colUrl:cg,errorMessage:lg}=ps(),{IdResolver:ug}=pc(),{COMMANDS:dg,flag:Zx}=on(),hc=ln(),{showHelp:pg}=mc(),fg=t=>t.replace(/-([a-z])/g,(e,s)=>s.toUpperCase()),mg=new Set(["--format","--apikey"]);function hg(t){let e=[];for(let s=0;s<t.length;s++){if(mg.has(t[s])){s++;continue}e.push(t[s])}return e}var vn=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({wikiSubcommand:e,wikiRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return pg(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),1;let{teamId:i,remaining:a}=this._extractTeamFlag(hg(s||[])),c=await this._resolveTeam(i,o),l=new ig(o,c),u=new ug(l),d={ctx:n,http:l,resolver:u,args:a,arg:a[0],teamId:c,docUrl:ag,colUrl:cg};try{let p=fg(e);if(typeof hc[p]=="function")return await hc[p](d)||0;let h=dg[e];return h?await this._runCommand(h,d):(n.fail(`\u672A\u77E5\u5B50\u547D\u4EE4: ${e}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder wiki --help"),1)}catch(p){return p&&p.handled||n.fail(p.message||String(p),p.hint),1}}async _runCommand(e,s){let{ctx:r,http:n,resolver:o,arg:i,args:a}=s,c=i;if(e.req&&!c)return r.fail(e.req,"\u67E5\u770B\u7528\u6CD5: coder wiki --help"),1;if(e.reqArgs){let d=e.reqArgs(c,a);if(d)return r.fail(d,"\u67E5\u770B\u7528\u6CD5: coder wiki --help"),1}if(c&&e.id==="doc"?c=await o.toDocUuid(c):c&&e.id==="col"&&(c=await o.toColUuid(c)),e.resolve)for(let d of e.resolve)await this._resolveSlot(d,a,o);let l=e.body(c,a),u=await n.postJson(e.endpoint,l,{allowNoData:!!e.expectOk});return u.ok?(e.render(r,u.json),0):(r.fail(lg(u.body),this._failHint(u)),1)}async _resolveSlot(e,s,r){let n=e.kind==="col"?o=>r.toColUuid(o):o=>r.toDocUuid(o);if(e.flag){let o=s.indexOf(e.flag);o!==-1&&s[o+1]&&(s[o+1]=await n(s[o+1]))}else typeof e.pos=="number"&&s[e.pos]&&(s[e.pos]=await n(s[e.pos]))}_failHint(e){if(e.status===401||e.status===403)return"\u68C0\u67E5\u767B\u5F55\u4E0E\u56E2\u961F\u6743\u9650: coder auth status";if(e.status===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528 coder wiki search <\u5173\u952E\u8BCD> \u67E5\u627E"}_extractTeamFlag(e){let s=e.indexOf("--team");return s!==-1&&e[s+1]?{teamId:e[s+1],remaining:[...e.slice(0,s),...e.slice(s+2)]}:{teamId:null,remaining:e}}async _resolveTeam(e,s){if(e)return e;let r=this.ctx,n=r.getTeam?r.getTeam():null;if(n&&n.id)return n.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),i=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(i.status===200){let c=this.teamService.parseJson(i.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};gc.exports=vn});var wc=k((Wx,_c)=>{function gg(t){let e=["Usage: coder team <command> [args] [options]"," coder team <members|groups> <verb> [args] [options]","","AI \u539F\u751F\u7684\u56E2\u961F\u4E0E\u6210\u5458\u7BA1\u7406\u3002","","Global Options:"," --team <teamId> \u6307\u5B9A\u56E2\u961F\uFF08members/groups \u5B50\u547D\u4EE4\u9ED8\u8BA4\u7528 coder team use \u8BBE\u7F6E\u7684\u56E2\u961F\uFF09"," --format json \u7ED3\u6784\u5316 JSON \u8F93\u51FA\uFF08\u9ED8\u8BA4 text\uFF09","","Team:"," list \u5217\u51FA\u6211\u52A0\u5165\u7684\u56E2\u961F\uFF08\u522B\u540D: ls\uFF09"," current \u663E\u793A\u5F53\u524D\u9ED8\u8BA4\u56E2\u961F"," use <teamId> \u5207\u6362\u9ED8\u8BA4\u56E2\u961F\uFF08\u5199\u5165\u914D\u7F6E\uFF09"," info [teamId] \u56E2\u961F\u8BE6\u60C5\uFF1A\u79EF\u5206\u3001\u6210\u5458\u6570\u3001\u6709\u6548\u671F\u7B49","","Members (coder team members <verb>):"," list [-q <kw>] [--type human|ai] \u5217\u51FA/\u641C\u7D22\u6210\u5458\uFF08\u7701\u7565 verb \u5373 list\uFF09"," info <userId|username> \u6210\u5458\u8BE6\u60C5"," create <username> \u521B\u5EFA\u6210\u5458\uFF08\u9ED8\u8BA4 user_type=human\uFF09"," [--type human|ai] [--password <pwd>] [--phone <phone>]"," [--nickname <n>] [--mentor <userId|username>] [--points <n>] [--save-to <path>]"," update <userId|username> \u66F4\u65B0\u6635\u79F0 / mentor"," [--nickname <n>] [--mentor <userId|username>] [--clear-mentor]"," set-points <userId|username> --points <n|unlimited> \u8BBE\u7F6E\u79EF\u5206\u914D\u989D\uFF08owner/manager\uFF09"," delete <userId|username> [--yes] \u5220\u9664\u6210\u5458\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09","","Groups (coder team groups <verb>):"," list \u5217\u51FA\u5C0F\u7EC4\uFF08\u7701\u7565 verb \u5373 list\uFF09"," info <groupId> \u5C0F\u7EC4\u8BE6\u60C5\uFF08\u542B\u6210\u5458\u6570\uFF09"," members <groupId> \u5217\u51FA\u5C0F\u7EC4\u6210\u5458"," create <name> [--description <d>] \u521B\u5EFA\u5C0F\u7EC4"," update <groupId> [--name <n>] [--description <d>] \u66F4\u65B0\u5C0F\u7EC4"," delete <groupId> [--yes] \u5220\u9664\u5C0F\u7EC4\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09"," add-member <groupId> <userIds> [--role member|mentor] \u6279\u91CF\u6DFB\u52A0\uFF08userIds \u9017\u53F7\u5206\u9694\uFF09"," set-role <groupId> <userId|username> <member|mentor> \u4FEE\u6539\u6210\u5458\u89D2\u8272"," remove-member <groupId> <userId|username> [--yes] \u79FB\u9664\u6210\u5458\uFF08\u9AD8\u5F71\u54CD\uFF0C\u9700 --yes\uFF09","","\u9000\u51FA\u7801: 0 \u6210\u529F \xB7 3 \u53C2\u6570\u9519\u8BEF \xB7 4 \u4E0D\u5B58\u5728 \xB7 5 \u65E0\u6743\u9650 \xB7 10 \u5F85\u786E\u8BA4(\u9AD8\u5F71\u54CD\u9700 --yes) \xB7 \u5176\u4F59\u975E\u96F6\u4E3A\u9519\u8BEF","","Examples:"," coder team list"," coder team members --type ai"," coder team members -q mulan --format json"," coder team members create alice --phone 13800000000 --save-to ./alice.cred"," coder team groups add-member <groupId> alice,bob --role mentor"];t.emit(e.join(`
300
+ `))}_c.exports={showHelp:gg}});var or=k((Kx,xc)=>{var{TeamHttp:bc,parseJson:yg}=js(),kc=zr(),{showHelp:_g}=wc(),wg=new Set(["--format","--apikey"]);function bg(t){let e=[];for(let s=0;s<t.length;s++){if(wg.has(t[s])){s++;continue}e.push(t[s])}return e}var kg=new Set(["list","current","use","info"]),xg=new Set(["members","groups"]),On=class{constructor(e){this.ctx=e||null}request(e,s,r,n,o){return new bc(r).request(e,s,n,o)}parseJson(e){return yg(e)}async handle({teamSubcommand:e,teamRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return _g(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let i=bg(s||[]),a=e==="ls"?"list":e,c=this._resolve(a,i);if(!c)return n.fail(`\u672A\u77E5\u547D\u4EE4: coder team ${e}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;if(c.error)return n.fail(c.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;let{fn:l,args:u}=c,d=new bc(o),p={ctx:n,http:d,args:u,arg:u[0]};try{return await l(p)||0}catch(h){return h&&h.handled?h.code||1:(n.fail(h.message||String(h),h.hint),1)}}_resolve(e,s){if(kg.has(e))return{fn:kc[e],args:s};if(xg.has(e)){let r=kc[e],n=s[0];if(!n||n.startsWith("-"))return{fn:r.list,args:s};let o=r[n];if(!o){let i=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${i}\uFF09`}}return{fn:o,args:s.slice(1)}}return null}};xc.exports=On});var Ic=k((zx,Sc)=>{var Sg=yc(),Ig=or();function Cg(t,e){let s=new Sg(e);return s.teamService=new Ig(e),t.command("wiki [args...]").description("\u7BA1\u7406 MakeCoder \u77E5\u8BC6\u5E93").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],o=await s.handle({wikiSubcommand:n[0],wikiRemainingArgs:n.slice(1),apikey:e.getApiKey()});process.exitCode=o||0}),s}Sc.exports={register:Cg}});var Rn=k((Jx,Ec)=>{var Eg=require("https"),Ag=require("http"),{URL:$g}=require("url"),Cc="https://flow.makecoder.com",Tg="coder";function Ug(t){return t==="darwin"?"macos":t==="win32"?"windows":"linux"}var Dn=class{constructor(e,s,r){this.token=e,this.baseUrl=(s||Cc).replace(/\/+$/,""),this.workspaceId=r||null,this.version=process.env.CODER_VERSION||"dev",this.os=Ug(process.platform)}request(e,s,r){return new Promise((n,o)=>{let i=new $g(`${this.baseUrl}${s}`),a=i.protocol==="http:"?Ag:Eg,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":Tg,"X-Client-Version":this.version,"X-Client-OS":this.os};this.workspaceId&&(c["X-Workspace-ID"]=this.workspaceId);let l=null;r!=null&&(l=JSON.stringify(r),c["Content-Length"]=Buffer.byteLength(l));let u=a.request({hostname:i.hostname,port:i.port||(i.protocol==="http:"?80:443),path:i.pathname+i.search,method:e,headers:c},d=>{let p="";d.on("data",h=>p+=h),d.on("end",()=>n({status:d.statusCode,body:p}))});u.on("error",o),l&&u.write(l),u.end()})}async getWorkspaceSlug(){if(this._slug!==void 0)return this._slug;if(this._slug=null,!this.workspaceId)return null;try{let e=await this.request("GET",`/api/workspaces/${encodeURIComponent(this.workspaceId)}`);if(e.status>=200&&e.status<300){let s=bs(e.body);s&&s.slug&&(this._slug=s.slug)}}catch{}return this._slug}async getActorLookup(){if(this._actorLookup)return this._actorLookup;if(this._actorLookup=new Map,!this.workspaceId)return this._actorLookup;let e=await this.getWorkspaceSlug(),[s,r]=await Promise.allSettled([this.request("GET",`/api/agents?workspace_id=${encodeURIComponent(this.workspaceId)}`),this.request("GET",`/api/workspaces/${encodeURIComponent(this.workspaceId)}/members`)]);if(s.status==="fulfilled"){let n=bs(s.value.body),o=Array.isArray(n)?n:n?.data??n?.agents??[];for(let i of o){if(!i.id)continue;let a=e?`${this.baseUrl}/${e}/agents/${i.id}`:null;this._actorLookup.set(i.id,{name:i.name||i.id,type:"agent",url:a})}}if(r.status==="fulfilled"){let n=bs(r.value.body),o=Array.isArray(n)?n:n?.data??n?.members??[];for(let i of o){let a=i.user_id||i.id;if(!a)continue;let c=e?`${this.baseUrl}/${e}/members/${a}`:null;this._actorLookup.set(a,{name:i.name||i.username||a,type:"member",url:c})}}return this._actorLookup}};function bs(t){try{return JSON.parse(t)}catch{return null}}function vg(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Og(t){let e=bs(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Ec.exports={MulticaHttp:Dn,parseJson:bs,exitCodeForStatus:vg,errorMessage:Og,DEFAULT_BASE_URL:Cc}});var vc=k((Hx,Uc)=>{var Ln=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Ac(t,e){return`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`}function Dg(t,e){return`[${t}](${e})`}function Pn(t){return!t.isJson}function ir(t,e){return process.stdout.isTTY?Ac(t,e):Dg(t,e)}function $c(t){return t>=4352&&t<=4447||t>=11904&&t<=12350||t>=12353&&t<=13311||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=40960&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141?2:1}function zt(t){let e=0;for(let s of String(t))e+=$c(s.codePointAt(0));return e}function Rg(t,e){if(zt(t)<=e)return t;let s=0,r="";for(let n of t){let o=$c(n.codePointAt(0));if(s+o>e-1)break;r+=n,s+=o}return r+"\u2026"}function Tc(t,e){return t+" ".repeat(Math.max(0,e-zt(t)))}function Lg(t,e,s={}){let{labels:r={},empty:n="\uFF08\u7A7A\uFF09",values:o={},linkCol:i=null,rowLinks:a=null,colLinks:c=null}=s;if(!e||!e.length){t.emit(n);return}if(t.isJson){t.emit(e);return}let l=Object.keys(e[0]),u=l.map(D=>Ln(r[D]||D)),d=(D,N)=>{let W=o[D];return W&&W[N]!==void 0?W[N]:N},p=e.map(D=>l.map(N=>Rg(Ln(d(N,D[N])),48))),h=l.map((D,N)=>{let W=zt(u[N]);for(let B of p)W=Math.max(W,zt(B[N]));return Math.max(3,W)}),g=i?l.indexOf(i):-1,_=g!==-1&&a&&Pn(t),b=c?l.indexOf(c.col):-1,x=b!==-1&&c?.links&&Pn(t),P=(D,N)=>`| ${D.map((W,B)=>{let q=Tc(W,h[B]);return _&&B===g&&N>=0&&a[N]?ir(W,a[N])+q.slice(W.length):x&&B===b&&N>=0&&c.links[N]?ir(W,c.links[N])+q.slice(W.length):q}).join(" | ")} |`,V=[P(u,-1),`| ${h.map(D=>"-".repeat(D)).join(" | ")} |`,...p.map((D,N)=>P(D,N))];t.emit(V.join(`
301
+ `))}function Pg(t,e,s=null,r={}){if(t.isJson){let h={};for(let[g,_]of e)h[g]=_;s&&typeof s=="object"&&Object.assign(h,s),t.emit(h);return}let{labels:n={},values:o={},link:i=null,fieldLinks:a=null}=r,c=(h,g)=>String(g||n[h]||h),l=e.map(([h,,g])=>c(h,g)),u=Math.max(0,...l.map(h=>zt(h))),d=Pn(t),p=(h,g)=>{let _=o[h],b=_&&_[g]!==void 0?_[g]:g??"";return d&&i&&h===i.key&&i.url?b=ir(String(b),i.url):d&&a&&a[h]&&(b=ir(String(b),a[h])),b};t.emit(e.map(([h,g,_])=>`${Tc(c(h,_),u)} ${p(h,g)}`).join(`
302
+ `))}Uc.exports={emitTable:Lg,emitDetails:Pg,escCell:Ln,displayWidth:zt,hyperlink:Ac}});var Rc=k((Yx,Dc)=>{var{parseJson:Ng,exitCodeForStatus:qg,errorMessage:jg}=Rn();function ar(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function Mg(t){if(t===401)return"\u786E\u8BA4\u51ED\u8BC1: coder auth login --apikey <ak>.<sk>";if(t===403)return"\u6743\u9650\u4E0D\u8DB3\uFF1B\u786E\u8BA4\u5F53\u524D\u56E2\u961F: coder team current";if(t===404)return"\u786E\u8BA4 id \u6B63\u786E\uFF0C\u6216\u7528\u5BF9\u5E94\u8D44\u6E90\u7684 list \u67E5\u627E"}function Oc(t,e){ar(t,jg(e.body),Mg(e.status),qg(e.status))}async function Gg(t,e,s,r){try{return await t.http.request(e,s,r)}catch(n){ar(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${n.message}`,void 0,1)}}function Bg(t,e){return(e.status<200||e.status>=300)&&Oc(t.ctx,e),Ng(e.body)}var Fg=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},Zg=(t,...e)=>t.some(s=>e.includes(s));function Vg(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let o=t[n];if(!e.includes(o)){if(s.includes(o)){n++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function Wg(t){let e=t.http&&t.http.workspaceId;return e||ar(t.ctx,"\u672A\u6307\u5B9A workspace \u4E14\u65E0\u5F53\u524D\u56E2\u961F","\u5148\u5207\u56E2\u961F: coder team use <id>\uFF08\u6216 coder team current \u67E5\u770B\uFF09\uFF0C\u6216\u52A0 --team <id>",3),e}Dc.exports={abort:ar,abortOnHttp:Oc,send:Gg,ensureOk:Bg,flag:Fg,hasFlag:Zg,positionals:Vg,requireWorkspaceId:Wg}});var ks=k((Xx,Lc)=>{var qn=require("http"),cr=19514,Nn=class{constructor(e=cr){this.port=e,this.status="starting",this.startTime=Date.now(),this.daemonId=null,this.agents=[],this.workspaces=[],this._shutdownFn=null,this._server=null}setShutdown(e){this._shutdownFn=e}start(){this._server=qn.createServer((e,s)=>{if(e.method==="GET"&&e.url==="/health"){let r=JSON.stringify({status:this.status,pid:process.pid,uptime:Math.floor((Date.now()-this.startTime)/1e3)+"s",daemon_id:this.daemonId,agents:this.agents,workspaces:this.workspaces});s.writeHead(200,{"Content-Type":"application/json"}),s.end(r)}else e.method==="POST"&&e.url==="/shutdown"?(s.writeHead(200,{"Content-Type":"application/json"}),s.end('{"ok":true}'),this._shutdownFn&&setImmediate(this._shutdownFn)):(s.writeHead(404),s.end())}),this._server.listen(this.port,"127.0.0.1")}close(){this._server&&this._server.close()}};async function Kg(t=cr,e=2e3){return new Promise(s=>{let r=qn.get(`http://127.0.0.1:${t}/health`,{timeout:e},n=>{let o="";n.on("data",i=>o+=i),n.on("end",()=>{try{s(JSON.parse(o))}catch{s({status:"stopped"})}})});r.on("error",()=>s({status:"stopped"})),r.on("timeout",()=>{r.destroy(),s({status:"stopped"})})})}async function zg(t=cr){return new Promise((e,s)=>{let r=qn.request({host:"127.0.0.1",port:t,path:"/shutdown",method:"POST",timeout:2e3},n=>{n.resume(),n.on("end",e)});r.on("error",s),r.on("timeout",()=>{r.destroy(),s(new Error("timeout"))}),r.end()})}Lc.exports={HealthServer:Nn,checkHealth:Kg,requestShutdown:zg,DEFAULT_HEALTH_PORT:cr}});var Ht=k((Qx,Nc)=>{var At=require("fs"),lr=require("path"),Jg=require("os"),Hg=require("crypto");function Jt(){return lr.join(Jg.homedir(),".multica")}function Pc(){return lr.join(Jt(),"daemon.id")}function ur(){return lr.join(Jt(),"daemon.pid")}function Yg(){return lr.join(Jt(),"daemon.log")}function Xg(t){if(t)return t;let e=Pc();try{let r=At.readFileSync(e,"utf8").trim();if(r)return r}catch{}let s=Hg.randomUUID();try{At.mkdirSync(Jt(),{recursive:!0}),At.writeFileSync(e,s,"utf8")}catch{}return s}function Qg(t){try{At.mkdirSync(Jt(),{recursive:!0}),At.writeFileSync(ur(),String(t),"utf8")}catch{}}function ey(){try{let t=At.readFileSync(ur(),"utf8").trim();return parseInt(t,10)||null}catch{return null}}function ty(){try{At.unlinkSync(ur())}catch{}}Nc.exports={daemonDir:Jt,daemonIdPath:Pc,daemonPidPath:ur,daemonLogPath:Yg,loadOrCreateDaemonId:Xg,writePid:Qg,readPid:ey,removePid:ty}});var jn=k((e0,jc)=>{var qc=require("os"),sy=require("path");function ry(t={}){let e=t.pollInterval||process.env.MULTICA_DAEMON_POLL_INTERVAL||"30s",s=t.heartbeatInterval||process.env.MULTICA_DAEMON_HEARTBEAT_INTERVAL||"15s";return{serverUrl:t.serverUrl||process.env.MULTICA_SERVER_URL||"https://flow.makecoder.com",daemonId:t.daemonId||process.env.MULTICA_DAEMON_ID||null,deviceName:t.deviceName||process.env.MULTICA_DAEMON_DEVICE_NAME||qc.hostname(),runtimeName:t.runtimeName||process.env.MULTICA_AGENT_RUNTIME_NAME||"Claude",pollInterval:dr(e,3e4),heartbeatInterval:dr(s,15e3),maxConcurrentTasks:t.maxConcurrentTasks||parseInt(process.env.MULTICA_DAEMON_MAX_CONCURRENT_TASKS||"20",10),agentTimeout:t.agentTimeout!==void 0?t.agentTimeout:dr(process.env.MULTICA_AGENT_TIMEOUT||"0",0),workspacesRoot:process.env.MULTICA_WORKSPACES_ROOT||sy.join(qc.homedir(),"multica_workspaces"),keepEnvAfterTask:(process.env.MULTICA_KEEP_ENV_AFTER_TASK||"false")==="true",gcEnabled:(process.env.MULTICA_GC_ENABLED||"true")==="true",gcTtl:parseInt(process.env.MULTICA_GC_TTL||String(864e5),10),claudePath:process.env.MULTICA_CLAUDE_PATH||"coder",codexPath:process.env.MULTICA_CODEX_PATH||"coder",coderBaseUrl:t.coderBaseUrl||process.env.CODER_BASE_URL||"https://api.makecoder.com/v1",healthPort:t.healthPort||19514,token:t.token||null,cliVersion:t.cliVersion||(()=>{try{return Lt().version}catch{return"0.2.20"}})()}}function dr(t,e){if(!t||t==="0"||t==="0s")return 0;let s=String(t).match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(!s)return e;let r=parseFloat(s[1]),n=s[2]||"s";return n==="ms"?Math.round(r):n==="s"?Math.round(r*1e3):n==="m"?Math.round(r*6e4):n==="h"?Math.round(r*36e5):e}jc.exports={loadConfig:ry,parseDuration:dr}});var Gc=k((t0,Mc)=>{var ny=require("https"),oy=require("http"),{URL:iy}=require("url"),Mn=class{constructor(e,s,r){this.serverUrl=(e||"https://flow.makecoder.com").replace(/\/+$/,""),this.token=s,this.cliVersion=r||"dev",this.os=this._normalizeOS(process.platform)}_normalizeOS(e){return e==="darwin"?"macos":e==="win32"?"windows":"linux"}_request(e,s,r){return new Promise((n,o)=>{let i=new iy(`${this.serverUrl}${s}`),a=i.protocol==="http:"?oy:ny,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion,"X-Client-OS":this.os},l=null;r!=null&&(l=JSON.stringify(r),c["Content-Length"]=Buffer.byteLength(l));let u=a.request({hostname:i.hostname,port:i.port||(i.protocol==="http:"?80:443),path:i.pathname+i.search,method:e,headers:c},d=>{let p="";d.on("data",h=>p+=h),d.on("end",()=>n({status:d.statusCode,body:p}))});u.on("error",o),l&&u.write(l),u.end()})}async _requestWithRetry(e,s,r,n=[1e3,2e3,4e3,8e3,16e3]){let o;for(let i=0;i<=n.length;i++){try{let a=await this._request(e,s,r);if(a.status<500)return a;o=new Error(`HTTP ${a.status}: ${a.body.slice(0,200)}`)}catch(a){o=a}i<n.length&&await ay(n[i])}throw o}_json(e){try{return JSON.parse(e.body)}catch{return null}}async register({workspaceId:e,daemonId:s,deviceName:r,cliVersion:n,runtimes:o}){let i=await this._request("POST","/api/daemon/register",{workspace_id:e,daemon_id:s,device_name:r,cli_version:n||this.cliVersion,runtimes:o});return this._json(i)}async deregister(e){let s=await this._request("POST","/api/daemon/deregister",{runtime_ids:e});return this._json(s)}async claimTask(e){let s=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/tasks/claim`,{});if(s.status===404)return null;let r=this._json(s);return r&&r.task||null}async recoverOrphans(e){let s=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/recover-orphans`,{});return this._json(s)}async taskStart(e){return this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/start`,{})}async taskComplete(e,{output:s,sessionId:r,workDir:n,branchName:o}={}){let i={};return s!==void 0&&(i.output=s),r&&(i.session_id=r),n&&(i.work_dir=n),o&&(i.branch_name=o),this._requestWithRetry("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/complete`,i)}async taskFail(e,{error:s,sessionId:r,workDir:n,failureReason:o}={}){let i={};return s!==void 0&&(i.error=s),r&&(i.session_id=r),n&&(i.work_dir=n),o&&(i.failure_reason=o),this._requestWithRetry("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/fail`,i)}async taskMessages(e,s){return this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/messages`,{messages:s})}async taskSession(e,{sessionId:s,workDir:r}={}){let n={};return s&&(n.session_id=s),r&&(n.work_dir=r),this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/session`,n)}async taskStatus(e){let s=await this._request("GET",`/api/daemon/tasks/${encodeURIComponent(e)}/status`);if(s.status===404){let r=new Error(`task not found: ${e}`);throw r.isTaskNotFound=!0,r}return this._json(s)}async heartbeat(e){let s=await this._request("POST","/api/daemon/heartbeat",{runtime_id:e,supports_batch_import:!0});return this._json(s)}async renewToken(){let e=await this._request("POST","/api/tokens/current/renew",{});return this._json(e)}async reportModelListResult(e,s,r){let n=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(s)}/result`,r);if(n.status>=400)throw new Error(`reportModelListResult ${n.status}: ${n.body}`);return this._json(n)}async getWorkspaces(){let e=await this._request("GET","/api/workspaces"),s=this._json(e);return s?Array.isArray(s)?s:s.workspaces||[]:[]}};function ay(t){return new Promise(e=>setTimeout(e,t))}Mc.exports={DaemonClient:Mn}});var Wc=k((s0,Vc)=>{var $t=require("fs"),Fc=require("path"),cy=require("os"),Gn="<!-- BEGIN MULTICA-RUNTIME (auto-managed; do not edit) -->",Bn="<!-- END MULTICA-RUNTIME -->",Fn=`
303
303
 
304
- `;function sy(t,e){let s=qc.join(t,"CLAUDE.md"),r=oy(e),n=`${Pn}
304
+ `;function ly(t,e){let s=Fc.join(t,"CLAUDE.md"),r=py(e),n=`${Gn}
305
305
  ${r.trimEnd()}
306
- ${Nn}
307
- `,o;try{o=It.readFileSync(s,"utf8")}catch{o=null}if(o===null){It.writeFileSync(s,n,"utf8");return}let{start:i,end:a,found:c}=jc(o);if(c){let l=o.slice(0,i)+n+o.slice(a);It.writeFileSync(s,l,"utf8")}else It.writeFileSync(s,o+qn+n,"utf8")}function ry(t){let e=qc.join(t,"CLAUDE.md"),s;try{s=It.readFileSync(e,"utf8")}catch{return}let{start:r,end:n,found:o}=jc(s);if(!o)return;let i=s.slice(0,r),a=s.slice(n),c=i.endsWith(qn),l=(c?i.slice(0,i.length-qn.length):i)+a;if(!c&&l==="")try{It.unlinkSync(e)}catch{}else It.writeFileSync(e,l,"utf8")}function jc(t){let e=t.indexOf(Pn);if(e<0)return{start:0,end:0,found:!1};let s=e+Pn.length,r=t.indexOf(Nn,s);if(r<0)return{start:e,end:t.length,found:!0};let n=r+Nn.length;return n<t.length&&t[n]===`
308
- `&&n++,{start:e,end:n,found:!0}}function Nc(t){if(!t)return"";let e="",s=!1;for(let r of t){let n=r.codePointAt(0);r==="\r"||r===`
309
- `||r===" "||r==="\v"||r==="\f"?!s&&e.length>0&&(e+=" ",s=!0):n<32||n===127||("*_`\\[]<".includes(r)?(e+="\\"+r,s=!1):(e+=r,s=!1))}return e.trimEnd()}function ny(t){if(!t||(t=t.trim(),!t.includes("@")))return"";for(let e of t){let s=e.codePointAt(0);if(s<32||s===127||" \\`*<>[]".includes(e))return""}return t}function oy(t){let e=[];e.push(`# Multica Agent Runtime
306
+ ${Bn}
307
+ `,o;try{o=$t.readFileSync(s,"utf8")}catch{o=null}if(o===null){$t.writeFileSync(s,n,"utf8");return}let{start:i,end:a,found:c}=Zc(o);if(c){let l=o.slice(0,i)+n+o.slice(a);$t.writeFileSync(s,l,"utf8")}else $t.writeFileSync(s,o+Fn+n,"utf8")}function uy(t){let e=Fc.join(t,"CLAUDE.md"),s;try{s=$t.readFileSync(e,"utf8")}catch{return}let{start:r,end:n,found:o}=Zc(s);if(!o)return;let i=s.slice(0,r),a=s.slice(n),c=i.endsWith(Fn),l=(c?i.slice(0,i.length-Fn.length):i)+a;if(!c&&l==="")try{$t.unlinkSync(e)}catch{}else $t.writeFileSync(e,l,"utf8")}function Zc(t){let e=t.indexOf(Gn);if(e<0)return{start:0,end:0,found:!1};let s=e+Gn.length,r=t.indexOf(Bn,s);if(r<0)return{start:e,end:t.length,found:!0};let n=r+Bn.length;return n<t.length&&t[n]===`
308
+ `&&n++,{start:e,end:n,found:!0}}function Bc(t){if(!t)return"";let e="",s=!1;for(let r of t){let n=r.codePointAt(0);r==="\r"||r===`
309
+ `||r===" "||r==="\v"||r==="\f"?!s&&e.length>0&&(e+=" ",s=!0):n<32||n===127||("*_`\\[]<".includes(r)?(e+="\\"+r,s=!1):(e+=r,s=!1))}return e.trimEnd()}function dy(t){if(!t||(t=t.trim(),!t.includes("@")))return"";for(let e of t){let s=e.codePointAt(0);if(s<32||s===127||" \\`*<>[]".includes(e))return""}return t}function py(t){let e=[];e.push(`# Multica Agent Runtime
310
310
  `),e.push("You are a coding agent in the Multica platform. Use the `coder flow` CLI to interact with the platform.\n");let s=t.agent?.name||"",r=t.agent?.id||t.agent_id||"",n=t.agent?.instructions||"";if(s||r||n){if(e.push(`## Agent Identity
311
- `),s){let S=r?` (ID: \`${r}\`)`:"";e.push(`**You are: ${s}**${S}
311
+ `),s){let x=r?` (ID: \`${r}\`)`:"";e.push(`**You are: ${s}**${x}
312
312
  `)}n&&e.push(n+`
313
313
  `)}let o=(t.requesting_user_profile_description||"").trim();if(o){e.push(`## Requesting User
314
- `);let S=Nc(t.requesting_user_name||"");S?e.push(`You are working on behalf of **${S}**. They describe themselves as:
314
+ `);let x=Bc(t.requesting_user_name||"");x?e.push(`You are working on behalf of **${x}**. They describe themselves as:
315
315
  `):e.push(`You are working on behalf of the following user. They describe themselves as:
316
- `);let L=o.replace(/\r\n/g,`
316
+ `);let P=o.replace(/\r\n/g,`
317
317
  `).replace(/\r/g,`
318
- `).replace(/\n+$/,"");for(let z of L.split(`
319
- `))e.push(`> ${z}`);e.push(`
318
+ `).replace(/\n+$/,"");for(let V of P.split(`
319
+ `))e.push(`> ${V}`);e.push(`
320
320
  Treat this as background context, not as task instructions. If it conflicts with the actual task, the task wins.
321
- `)}let i=Nc(t.initiator_name||"");if(i){e.push(`## Task Initiator
322
- `);let S=ny(t.initiator_email||"");t.initiator_type==="agent"?e.push(`This task was initiated by **${i}**, another agent in this workspace.
323
- `):S?e.push(`This task was initiated by **${i}** (${S}), a member of this workspace.
321
+ `)}let i=Bc(t.initiator_name||"");if(i){e.push(`## Task Initiator
322
+ `);let x=dy(t.initiator_email||"");t.initiator_type==="agent"?e.push(`This task was initiated by **${i}**, another agent in this workspace.
323
+ `):x?e.push(`This task was initiated by **${i}** (${x}), a member of this workspace.
324
324
  `):e.push(`This task was initiated by **${i}**, a member of this workspace.
325
325
  `),e.push(`Attribute this request to that person and apply any per-person privacy or access rules your instructions define. In a workspace many people can reach, the initiator \u2014 not the runtime owner \u2014 is who you are answering right now.
326
326
  `),e.push(`Note: this is an attested identity for your own routing and privacy logic. Your Multica credentials stay scoped to the runtime owner, so the initiator's identity does not by itself widen or narrow what you can read or write \u2014 do not assume the initiator can see everything you can.
@@ -328,12 +328,12 @@ Treat this as background context, not as task instructions. If it conflicts with
328
328
  `),e.push(a+`
329
329
  `)),e.push(`## Available Commands
330
330
  `),e.push("**Use `--format json` for structured data.**\n"),e.push("The default brief includes the commands needed for the core agent loop. For everything else, run `coder flow --help` or `coder flow <command> --help`.\n"),e.push("### Core"),e.push("- `coder flow issue get <id>` \u2014 Get full issue details."),e.push("- `coder flow issue comment list <issue-id> [--since <RFC3339>]` \u2014 List comments on an issue."),e.push('- `coder flow issue create --title "..." [--description "..."] [--priority X] [--status X] [--assignee X]` \u2014 Create a new issue.'),e.push("- `coder flow issue update <id> [--title X] [--description X] [--priority X] [--status X]` \u2014 Update issue fields."),e.push("- `coder flow repo checkout <url> [--ref <branch-or-sha>]` \u2014 Check out a repository into the working directory."),e.push("- `coder flow issue status <id> --set <status>` \u2014 Update issue status (todo, in_progress, in_review, done, blocked, cancelled)."),e.push("- `coder flow issue comment add <issue-id> --content-stdin [--parent <comment-id>]` \u2014 Post a comment. For agent-authored bodies, do NOT inline `--content` \u2014 use `--content-stdin` with a HEREDOC or `--content-file <path>`."),e.push("- `coder flow issue metadata list <issue-id>` \u2014 List metadata keys."),e.push("- `coder flow issue metadata set <issue-id> --key <k> --value <v> [--type string|number|bool]` \u2014 Pin a metadata key."),e.push("- `coder flow issue metadata delete <issue-id> --key <k>` \u2014 Remove a metadata key."),e.push("### Squad maintenance"),e.push("- `coder flow squad member set-role <squad-id> --member-id <id> --member-type <agent|member> --role <role>` \u2014 Change a squad member role.\n"),e.push(`## Comment Formatting
331
- `),ty.platform()==="win32"?e.push("On Windows, **always write the comment body to a UTF-8 file with your file-write tool first, then post it with `--content-file <path>`** \u2014 do NOT pipe via `--content-stdin`. PowerShell 5.1 defaults to ASCIIEncoding when piping to native commands and silently drops non-ASCII as `?`. Never use inline `--content` for agent-authored comments. Keep the same `--parent` value from the trigger comment when replying. Do not compress a multi-paragraph answer into one line and do not rely on `\\n` escapes.\n"):e.push("For issue comments, always use `--content-stdin` with a HEREDOC, even for short single-line replies \u2014 use a quoted delimiter (`<<'COMMENT'`) so the shell does not expand backticks, `$()`, or `$VAR` inside the body. `--content-file <path>` works too. Never use inline `--content` for agent-authored comments: unescaped backticks, `$()`, `$VAR`, or quotes in the body are rewritten by the shell before the CLI receives them. Keep the same `--parent` value from the trigger comment when replying. Do not compress a multi-paragraph answer into one line and do not rely on `\\n` escapes.\n");let c=t.repos||[];if(c.length>0){e.push(`## Repositories
332
- `),e.push("The following code repositories are available in this workspace."),e.push("Use `coder flow repo checkout <url>` to check out a repository into your working directory. Add `--ref <branch-or-sha>` when you need an exact branch, tag, or commit.\n");for(let S of c)S.description?e.push(`- ${S.url} \u2014 ${S.description}`):e.push(`- ${S.url}`);e.push(`
331
+ `),cy.platform()==="win32"?e.push("On Windows, **always write the comment body to a UTF-8 file with your file-write tool first, then post it with `--content-file <path>`** \u2014 do NOT pipe via `--content-stdin`. PowerShell 5.1 defaults to ASCIIEncoding when piping to native commands and silently drops non-ASCII as `?`. Never use inline `--content` for agent-authored comments. Keep the same `--parent` value from the trigger comment when replying. Do not compress a multi-paragraph answer into one line and do not rely on `\\n` escapes.\n"):e.push("For issue comments, always use `--content-stdin` with a HEREDOC, even for short single-line replies \u2014 use a quoted delimiter (`<<'COMMENT'`) so the shell does not expand backticks, `$()`, or `$VAR` inside the body. `--content-file <path>` works too. Never use inline `--content` for agent-authored comments: unescaped backticks, `$()`, `$VAR`, or quotes in the body are rewritten by the shell before the CLI receives them. Keep the same `--parent` value from the trigger comment when replying. Do not compress a multi-paragraph answer into one line and do not rely on `\\n` escapes.\n");let c=t.repos||[];if(c.length>0){e.push(`## Repositories
332
+ `),e.push("The following code repositories are available in this workspace."),e.push("Use `coder flow repo checkout <url>` to check out a repository into your working directory. Add `--ref <branch-or-sha>` when you need an exact branch, tag, or commit.\n");for(let x of c)x.description?e.push(`- ${x.url} \u2014 ${x.description}`):e.push(`- ${x.url}`);e.push(`
333
333
  The checkout command creates a git worktree with a dedicated branch.
334
334
  `)}let l=t.project_id||"",u=t.project_title||"",d=t.project_resources||[];if(l||d.length>0)if(e.push(`## Project Context
335
335
  `),u&&e.push(`This issue belongs to **${u}**.
336
- `),d.length>0){e.push("Project resources (also written to `.multica/project/resources.json`):\n");for(let S of d)e.push(`- ${iy(S)}`);e.push("\nResources are pointers \u2014 open them only when relevant to the task. For `github_repo` resources, use `coder flow repo checkout <url>` to fetch the code.\n")}else e.push(`This project has no resources attached yet.
336
+ `),d.length>0){e.push("Project resources (also written to `.multica/project/resources.json`):\n");for(let x of d)e.push(`- ${fy(x)}`);e.push("\nResources are pointers \u2014 open them only when relevant to the task. For `github_repo` resources, use `coder flow repo checkout <url>` to fetch the code.\n")}else e.push(`This project has no resources attached yet.
337
337
  `);!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&(e.push(`## Issue Metadata
338
338
  `),e.push("Each issue carries a small KV `metadata` bag \u2014 a high-signal scratchpad where agents pin the handful of facts that future runs on this same issue will look up over and over (the PR URL, the deploy URL, what we're blocked on). It is NOT a place to record every fact you discover \u2014 that's what comments and the description are for. Most runs write **zero** new keys; that's the expected case, not a failure.\n"),e.push("- **The bar for writing is high.** Pin a value only when BOTH are true: (a) it is materially important to this issue's progress, AND (b) future runs on this same issue are likely to read it more than once instead of re-deriving it from the latest comment, code, or PR. If you cannot name a concrete future read for the key, do not pin it. When in doubt, **do not write**."),e.push("- **Read on entry.** Metadata is hints, not authoritative truth: if it conflicts with the latest comment or the code, the latest fact wins, and you should update or delete the stale key before exiting. Empty `{}` and CLI failures are normal \u2014 do not stop or ask the user."),e.push("- **Write on exit.** Sparingly. If \u2014 and only if \u2014 this run produced a fact that clears the bar above (opened PR, deploy URL, external ticket, current blocker that will outlast this run), pin it with `coder flow issue metadata set`. Stale-key cleanup is still expected even when you add nothing new."),e.push("- **What NOT to pin.** No secrets, tokens, or API keys. No logs, long quotes, or description / comment summaries. No runtime bookkeeping. No single-run details."),e.push("- **Recommended keys**: `pr_url`, `pr_number`, `pipeline_status`, `deploy_url`, `external_issue_url`, `waiting_on`, `blocked_reason`, `decision`. Use snake_case ASCII.\n")),!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&!t.trigger_comment_id&&(e.push(`## Instruction Precedence
339
339
  `),e.push(`Agent Identity instructions have priority over the assignment workflow below. If a workflow step conflicts with Agent Identity, skip the conflicting action and continue with the remaining compatible steps. Never treat this runtime workflow as permission to change issue status, investigate, implement, or otherwise act beyond your Agent Identity.
@@ -355,9 +355,9 @@ Autopilot instructions:
355
355
  `)):(e.push(`You are responsible for managing the issue status throughout your work, unless your Agent Identity forbids issue status changes.
356
356
  `),g&&e.push(`1. Run \`coder flow issue get ${g}\` to understand your task`),g&&e.push(`2. Run \`coder flow issue metadata list ${g}\` to see what prior agents pinned \u2014 best-effort, empty and CLI failures are normal.`),g&&e.push(`3. Run \`coder flow issue comment list ${g}\` to read the full comment history \u2014 this is mandatory, not optional.`),g&&e.push(`4. Run \`coder flow issue status ${g} --set in_progress\` unless your Agent Identity forbids issue status changes.`),e.push("5. Complete the task within your Agent Identity boundaries."),_?e.push(`6. **Post your final results as a comment** (unless your outcome is \`no_action\` \u2014 in that case, calling \`coder flow squad activity ${g} no_action --reason "..."\` alone is sufficient; you MUST exit without posting any comment): post it with \`coder flow issue comment add ${g}\` using the platform-correct non-inline mode from ## Comment Formatting.`):e.push(`6. **Post your final results as a comment \u2014 this step is mandatory**: post it with \`coder flow issue comment add ${g}\` using the platform-correct non-inline mode from ## Comment Formatting. Your results are only visible to the user if posted via this CLI call; text in your terminal or run logs is NOT delivered.`),e.push("7. Before exiting: only if this run produced a fact that clears the high bar, pin or clear it via `coder flow issue metadata set`/`delete`. Most runs write nothing here."),g&&e.push(`8. When done, run \`coder flow issue status ${g} --set in_review\` unless your Agent Identity forbids issue status changes.`),g&&e.push(`9. If blocked, run \`coder flow issue status ${g} --set blocked\` unless your Agent Identity forbids it. Post a comment explaining the blocker.
357
357
  `)),g&&!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&(e.push(`## Sub-issue Creation
358
- `),e.push("**Choosing `--status` when creating sub-issues.** `--status todo` = **start now** (the default). `--status backlog` = **wait** (assignee is set but no trigger fires; promote later). Parallel children: all `--status todo`. Strict serial Step 1\u21922\u21923: only Step 1 is `todo`; Steps 2/3 are `--status backlog` from the start, promoted in turn.\n"));let w=t.agent?.skills||[];if(w.length>0){e.push(`## Skills
358
+ `),e.push("**Choosing `--status` when creating sub-issues.** `--status todo` = **start now** (the default). `--status backlog` = **wait** (assignee is set but no trigger fires; promote later). Parallel children: all `--status todo`. Strict serial Step 1\u21922\u21923: only Step 1 is `todo`; Steps 2/3 are `--status backlog` from the start, promoted in turn.\n"));let b=t.agent?.skills||[];if(b.length>0){e.push(`## Skills
359
359
  `),e.push(`You have the following skills installed (discovered automatically):
360
- `);for(let S of w)S.description&&S.description.trim()?e.push(`- **${S.name}** \u2014 ${S.description.trim()}`):e.push(`- **${S.name}**`);e.push("")}return e.push(`## Mentions
360
+ `);for(let x of b)x.description&&x.description.trim()?e.push(`- **${x.name}** \u2014 ${x.description.trim()}`):e.push(`- **${x.name}**`);e.push("")}return e.push(`## Mentions
361
361
  `),e.push(`Mention links are **side-effecting actions**, not just formatting:
362
362
  `),e.push("- `[MUL-123](mention://issue/<issue-id>)` \u2014 clickable link to an issue (safe, no side effect)"),e.push("- `[@Name](mention://member/<user-id>)` \u2014 **sends a notification to a human**"),e.push("- `[@Name](mention://agent/<agent-id>)` \u2014 **enqueues a new run for that agent**\n"),e.push(`### When NOT to use a mention link
363
363
  `),e.push("- Referring to someone in prose \u2014 write the plain name, no link."),e.push("- **Replying to another agent that just spoke to you.** By default, do NOT put a `mention://agent/...` link anywhere in your reply. Re-mentioning the other agent will make them run again \u2014 that is a loop and it costs the user money."),e.push(`- Thanking, acknowledging, wrapping up, or signing off.
@@ -367,25 +367,25 @@ Autopilot instructions:
367
367
  `),e.push("Issues and comments may include file attachments (images, documents, etc.)."),e.push("When a task includes attachment IDs and you need the files, use `coder flow attachment download <id>`. Do not open Multica resource URLs directly.\n"),e.push("## Important: Always Use the `coder flow` CLI\n"),e.push("All interactions with Multica platform resources \u2014 including issues, comments, attachments, images, files, and any other platform data \u2014 **must** go through the `coder flow` CLI. Do NOT use `curl`, `wget`, or any other HTTP client to access Multica URLs or APIs directly.\n"),e.push(`## Output
368
368
  `),t.autopilot_run_id?e.push("This is a run-only autopilot task, so there may be no issue comment to post. Your final assistant output is captured automatically as the autopilot run result. Keep it concise and state the outcome."):t.quick_create_prompt?(e.push("This is a quick-create task. There is NO existing issue to comment on. Your final stdout is captured automatically."),e.push("- Do NOT call `coder flow issue comment add` \u2014 the issue you just created has no conversation context for this run."),e.push("- Print exactly one final line: `Created <identifier-or-id>: <title>` after a successful `coder flow issue create`."),e.push("- On CLI failure, exit with the CLI error as the only output.")):_?(e.push('\u26A0\uFE0F **Final results MUST be delivered via `coder flow issue comment add`** \u2014 unless your outcome is `no_action`. When you evaluate a trigger and decide no action is needed, calling `coder flow squad activity <issue-id> no_action --reason "..."` alone is sufficient; you MUST exit without posting any comment. DO NOT post a comment that announces no_action, acknowledges another agent, or says you are exiting silently \u2014 such comments are noise. For all other outcomes (`action`, `failed`), a comment is still mandatory.\n'),e.push("Keep comments concise and natural \u2014 state the outcome, not the process.")):(e.push("\u26A0\uFE0F **Final results MUST be delivered via `coder flow issue comment add`.** The user does NOT see your terminal output, assistant chat text, or run logs \u2014 only comments on the issue. A task that finishes without a result comment is invisible to the user, even if the work itself was correct.\n"),e.push("Keep comments concise and natural \u2014 state the outcome, not the process."),e.push('Good: "Fixed the login redirect. PR: https://..."'),e.push('Bad: "1. Read the issue 2. Found the bug in auth.go 3. Created branch 4. ..."')),e.join(`
369
369
  `)+`
370
- `}function iy(t){let e;if(t.resource_type==="github_repo"){let s=typeof t.resource_ref=="string"?JSON.parse(t.resource_ref||"{}"):t.resource_ref||{};e=`**GitHub repo**: ${s.url||""}`,s.default_branch_hint&&(e+=` (default branch: \`${s.default_branch_hint}\`)`)}else{let s=typeof t.resource_ref=="string"?t.resource_ref:JSON.stringify(t.resource_ref||{});e=`**${t.resource_type}**: \`${s}\``}return t.label&&(e+=` \u2014 ${t.label}`),e}Mc.exports={injectRuntimeConfig:sy,cleanupRuntimeConfig:ry}});var Kc=k((Yx,Wc)=>{var ay=require("os");function cy(t){return t.chat_session_id?dy(t):t.trigger_comment_id?uy(t):t.autopilot_run_id?fy(t):t.quick_create_prompt?py(t):ly(t)}function ly(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
370
+ `}function fy(t){let e;if(t.resource_type==="github_repo"){let s=typeof t.resource_ref=="string"?JSON.parse(t.resource_ref||"{}"):t.resource_ref||{};e=`**GitHub repo**: ${s.url||""}`,s.default_branch_hint&&(e+=` (default branch: \`${s.default_branch_hint}\`)`)}else{let s=typeof t.resource_ref=="string"?t.resource_ref:JSON.stringify(t.resource_ref||{});e=`**${t.resource_type}**: \`${s}\``}return t.label&&(e+=` \u2014 ${t.label}`),e}Vc.exports={injectRuntimeConfig:ly,cleanupRuntimeConfig:uy}});var Xc=k((r0,Yc)=>{var my=require("os");function hy(t){return t.chat_session_id?_y(t):t.trigger_comment_id?yy(t):t.autopilot_run_id?wy(t):t.quick_create_prompt?by(t):gy(t)}function gy(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
371
371
  `),t.issue_id&&(e.push(`Your assigned issue ID is: ${t.issue_id}
372
372
  `),e.push(`Start by running \`coder flow issue get ${t.issue_id}\` to understand your task, then complete it.`),e.push(`For comment history, run \`coder flow issue comment list ${t.issue_id}\` to read the full discussion.
373
373
  `)),e.join(`
374
- `)}function uy(t){let e=[];if(e.push(`You are running as a local coding agent for a Multica workspace.
374
+ `)}function yy(t){let e=[];if(e.push(`You are running as a local coding agent for a Multica workspace.
375
375
  `),t.issue_id&&e.push(`Your assigned issue ID is: ${t.issue_id}
376
376
  `),t.trigger_comment_content){let r="A user";t.trigger_author_type==="agent"&&(r=`Another agent (${t.trigger_author_name||"another agent"})`),e.push(`[NEW COMMENT] ${r} just left a new comment. Focus on THIS comment \u2014 do not confuse it with previous ones:
377
377
  `),e.push(`> ${t.trigger_comment_content}
378
378
  `),t.trigger_author_type==="agent"&&e.push(`\u26A0\uFE0F The triggering comment was posted by another agent. Decide whether a reply is warranted. If you produced actual work this turn (investigated, fixed something, answered a real question), post the result as a normal reply. If the triggering comment was a pure acknowledgment, thanks, or sign-off AND you produced no work this turn, do NOT reply \u2014 and do NOT post a comment saying 'No reply needed' or similar. Simply exit with no output. Silence is the preferred way to end agent-to-agent threads. If you do reply, do not @mention the other agent as a sign-off (that re-triggers them and starts a loop).
379
379
  `),(t.agent?.instructions||"").includes("## Squad Operating Protocol")&&e.push(`\u26A0\uFE0F **Squad leader no_action rule:** If you decide no action is needed, call \`coder flow squad activity ${t.issue_id} no_action --reason "..."\` and EXIT. DO NOT post any comment \u2014 not even one that says "no action needed" or "exiting silently". The squad activity call records your decision; a comment is redundant noise.
380
380
  `)}t.issue_id&&e.push(`Start by running \`coder flow issue get ${t.issue_id}\` to understand your task, then decide how to proceed.
381
- `);let s=Bc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id,t.new_comments_since,t.new_comment_count);if(s)e.push(s);else if(t.prior_session_id){let r=Fc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r&&e.push(r)}else{let r=Zc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r?e.push(r):t.issue_id&&e.push(`Read the discussion: \`coder flow issue comment list ${t.issue_id}\`.
382
- `)}return e.push(Vc(t.issue_id,t.trigger_comment_id)),e.join(`
383
- `)}function dy(t){let e=[];e.push("You are running as a chat assistant for a Multica workspace."),e.push(`A user is chatting with you directly. Respond to their message.
384
- `);let s=t.agent?.skills||[];if(s.length>0&&t.chat_message){let n=my(t.chat_message);if(n.length>0){let o=new Map(s.map(c=>[c.id,c.name])),i=[],a=new Set;for(let c of n){let l=o.get(c.id);l&&!a.has(c.id)&&(i.push(l),a.add(c.id))}if(i.length>0){e.push("Explicitly selected skills:");for(let c of i)e.push(`- ${c}`);e.push("")}}}t.chat_message&&e.push(`User message:
381
+ `);let s=Kc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id,t.new_comments_since,t.new_comment_count);if(s)e.push(s);else if(t.prior_session_id){let r=zc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r&&e.push(r)}else{let r=Jc(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r?e.push(r):t.issue_id&&e.push(`Read the discussion: \`coder flow issue comment list ${t.issue_id}\`.
382
+ `)}return e.push(Hc(t.issue_id,t.trigger_comment_id)),e.join(`
383
+ `)}function _y(t){let e=[];e.push("You are running as a chat assistant for a Multica workspace."),e.push(`A user is chatting with you directly. Respond to their message.
384
+ `);let s=t.agent?.skills||[];if(s.length>0&&t.chat_message){let n=ky(t.chat_message);if(n.length>0){let o=new Map(s.map(c=>[c.id,c.name])),i=[],a=new Set;for(let c of n){let l=o.get(c.id);l&&!a.has(c.id)&&(i.push(l),a.add(c.id))}if(i.length>0){e.push("Explicitly selected skills:");for(let c of i)e.push(`- ${c}`);e.push("")}}}t.chat_message&&e.push(`User message:
385
385
  ${t.chat_message}`);let r=t.chat_message_attachments||[];if(r.length>0){e.push(`
386
386
  Attachments on this message:`);for(let n of r)n.content_type?e.push(`- id=${n.id} filename=${JSON.stringify(n.filename)} content_type=${n.content_type}`):e.push(`- id=${n.id} filename=${JSON.stringify(n.filename)}`);e.push("Use `coder flow attachment download <id>` to fetch each file locally before referring to it."),e.push("When creating an issue that should preserve one of these attachments, pass `--attachment-id <id>` to `coder flow issue create` in addition to keeping the attachment markdown inline.")}return e.join(`
387
387
  `)+`
388
- `}function fy(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
388
+ `}function wy(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
389
389
  `),e.push(`This task was triggered by an Autopilot in run-only mode. There is no assigned Multica issue for this run.
390
390
  `),t.autopilot_run_id&&e.push(`Autopilot run ID: ${t.autopilot_run_id}`),t.autopilot_id&&e.push(`Autopilot ID: ${t.autopilot_id}`),t.autopilot_title&&e.push(`Autopilot title: ${t.autopilot_title}`),t.autopilot_source&&e.push(`Trigger source: ${t.autopilot_source}`),(t.autopilot_trigger_payload||"").trim()&&e.push(`Trigger payload:
391
391
  ${(t.autopilot_trigger_payload||"").trim()}`),e.push(`
@@ -394,7 +394,7 @@ Autopilot instructions:`),(t.autopilot_description||"").trim()?e.push(t.autopilo
394
394
  `):e.push(`No additional autopilot instructions were provided. Inspect the autopilot configuration before proceeding.
395
395
  `),t.autopilot_id?e.push(`Start by running \`coder flow autopilot get ${t.autopilot_id}\` if you need the full autopilot configuration, then complete the instructions above.`):e.push("Complete the instructions above."),e.push("Do not run `coder flow issue get`; this run does not have an issue ID."),e.join(`
396
396
  `)+`
397
- `}function py(t){let e=[];e.push(`You are running as a quick-create assistant for a Multica workspace.
397
+ `}function by(t){let e=[];e.push(`You are running as a quick-create assistant for a Multica workspace.
398
398
  `),e.push("A user captured the following input via the quick-create modal. There is NO existing issue. Your job is to create a well-formed issue from this input with a single `coder flow issue create` command.\n"),e.push(`User input:
399
399
  > ${t.quick_create_prompt}
400
400
  `),e.push(`Field rules:
@@ -416,11 +416,11 @@ Autopilot instructions:`),(t.autopilot_description||"").trim()?e.push(t.autopilo
416
416
  `):e.push(`- **parent**: required for this run. Pass \`--parent ${JSON.stringify(c)}\`. Do not infer a different parent from the prompt text.
417
417
  `)),e.push("- **status**: omit (defaults to `todo`)."),e.push("- **attachments**: do NOT pass `--attachment`. The flag only accepts LOCAL file paths. Any image URL in the user input is already markdown \u2014 keep it inline in `--description` instead.\n"),e.push("Output format:"),e.push("- Run exactly one `coder flow issue create` invocation. Do not retry for any reason \u2014 even on non-zero exit."),e.push("- Parse the JSON response to read the created issue's `identifier` (preferred) or `id` (fallback). Do not assume any workspace issue prefix such as `MUL-`."),e.push("- After success, print exactly one line: `Created <identifier-or-id>: <title>` and exit. No commentary, no follow-up tool calls."),e.push("- Do NOT call `coder flow issue get` or `coder flow issue comment add` \u2014 there is no issue to query or comment on."),e.push("- On CLI error or JSON parse error, exit with the error as the only output."),e.join(`
418
418
  `)+`
419
- `}function Bc(t,e,s,r,n){if(!n||n<=0||!r||!t)return"";let o=jn(s,e);return o?`${n} new comment(s) on this issue since your last run \u2014 don't read them all blindly. Start with the thread your triggering comment is in: \`coder flow issue comment list ${t} --thread ${o} --since ${r}\` (swap \`--since\` for \`--tail 30\` if you need the full thread, not just the delta). Only if you need context from the other threads, catch up issue-wide: \`coder flow issue comment list ${t} --since ${r}\`.
419
+ `}function Kc(t,e,s,r,n){if(!n||n<=0||!r||!t)return"";let o=Zn(s,e);return o?`${n} new comment(s) on this issue since your last run \u2014 don't read them all blindly. Start with the thread your triggering comment is in: \`coder flow issue comment list ${t} --thread ${o} --since ${r}\` (swap \`--since\` for \`--tail 30\` if you need the full thread, not just the delta). Only if you need context from the other threads, catch up issue-wide: \`coder flow issue comment list ${t} --since ${r}\`.
420
420
  `:`${n} new comment(s) on this issue since your last run. Catch up: \`coder flow issue comment list ${t} --since ${r}\`.
421
- `}function Fc(t,e,s){let r=jn(s,e);return!t||!r?"":`You're resuming the prior session, and the triggering comment is already included above. No other new comments on this issue since your last run. Use the active thread anchor \`${r}\` and triggering comment ID \`${e}\`. If your reply depends on thread context, do not rely only on resumed session memory \u2014 first pull the triggering conversation with: \`coder flow issue comment list ${t} --thread ${r} --tail 30\`.
422
- `}function Zc(t,e,s){let r=jn(s,e);return!t||!r?"":`Read the triggering conversation first: \`coder flow issue comment list ${t} --thread ${r} --tail 30\` (that thread's root + its 30 newest replies). Need cross-thread background? \`coder flow issue comment list ${t} --recent 20\`.
423
- `}function jn(t,e){return t||e||""}function Vc(t,e){return e?ay.platform()==="win32"?`If you decide to reply, post it as a comment \u2014 always use the trigger comment ID below, do NOT reuse --parent values from previous turns in this session.
421
+ `}function zc(t,e,s){let r=Zn(s,e);return!t||!r?"":`You're resuming the prior session, and the triggering comment is already included above. No other new comments on this issue since your last run. Use the active thread anchor \`${r}\` and triggering comment ID \`${e}\`. If your reply depends on thread context, do not rely only on resumed session memory \u2014 first pull the triggering conversation with: \`coder flow issue comment list ${t} --thread ${r} --tail 30\`.
422
+ `}function Jc(t,e,s){let r=Zn(s,e);return!t||!r?"":`Read the triggering conversation first: \`coder flow issue comment list ${t} --thread ${r} --tail 30\` (that thread's root + its 30 newest replies). Need cross-thread background? \`coder flow issue comment list ${t} --recent 20\`.
423
+ `}function Zn(t,e){return t||e||""}function Hc(t,e){return e?my.platform()==="win32"?`If you decide to reply, post it as a comment \u2014 always use the trigger comment ID below, do NOT reuse --parent values from previous turns in this session.
424
424
 
425
425
  On Windows, write the reply body to a UTF-8 file with your file-write tool, then post it with \`--content-file\`. Do NOT pipe via \`--content-stdin\` \u2014 Windows PowerShell 5.1's \`$OutputEncoding\` defaults to ASCIIEncoding when piping to native commands and silently drops non-ASCII (Chinese, Japanese, Cyrillic, accents, emoji) as \`?\` before the bytes reach \`coder.exe\`. Do NOT use inline \`--content\`; it is easy to lose formatting or accidentally compress a structured reply into one line.
426
426
 
@@ -444,22 +444,22 @@ Use this form, preserving the same issue ID and --parent value:
444
444
  COMMENT
445
445
 
446
446
  Do NOT write literal \`\\n\` escapes to simulate line breaks; the HEREDOC preserves real newlines.
447
- `:""}function my(t){if(!t)return[];let e=[],s=/\/[\w-]+\s*\(id:\s*([a-f0-9-]+)\)/gi,r;for(;(r=s.exec(t))!==null;)e.push({id:r[1]});return e}Wc.exports={buildPrompt:cy,buildNewCommentsHint:Bc,buildResumedCommentsHint:Fc,buildColdCommentsHint:Zc,buildCommentReplyInstructions:Vc}});var Gn=k((Xx,Jc)=>{var Y=require("fs"),se=require("path");function hy(t,e){let s=(e.id||"unknown").slice(0,12),r=se.join(t.workspacesRoot,e.workspace_id||"default",s),n=se.join(r,"workdir");return{rootDir:r,workDir:n}}function gy(t){Y.mkdirSync(se.join(t,".claude","skills"),{recursive:!0}),Y.mkdirSync(se.join(t,".agent_context"),{recursive:!0})}function yy(t,e){let s=e.agent?.skills||[];if(!s.length)return;let r=se.join(t,".claude","skills");Y.mkdirSync(r,{recursive:!0});for(let n of s){let o=_y(n.name||"skill"),{slug:i,dir:a}=wy(r,o);Y.mkdirSync(a,{recursive:!0});let c=by(n.content||"",i,n.description||"");Y.writeFileSync(se.join(a,"SKILL.md"),c,"utf8");for(let l of n.files||[]){if(Cy(l.path))continue;let u=se.join(a,l.path);Y.mkdirSync(se.dirname(u),{recursive:!0}),Y.writeFileSync(u,l.content||"","utf8")}}}function _y(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"skill"}function wy(t,e){let s=[e,`${e}-multica`];for(let r=2;r<100;r++)s.push(`${e}-multica-${r}`);for(let r of s){let n=se.join(t,r);if(!Y.existsSync(n))return{slug:r,dir:n};if(Y.existsSync(se.join(n,"SKILL.md")))return{slug:r,dir:n}}return{slug:e,dir:se.join(t,e)}}function by(t,e,s){let r=Mn(t);if(r<0)return zc(t,e,s);if(ky(t.slice(r))){if(xy(t))return t;let n=Sy(t);return zc(n,e,s)}return t.slice(0,r)+`name: ${e}
448
- `+t.slice(r)}function zc(t,e,s){let r=`---
447
+ `:""}function ky(t){if(!t)return[];let e=[],s=/\/[\w-]+\s*\(id:\s*([a-f0-9-]+)\)/gi,r;for(;(r=s.exec(t))!==null;)e.push({id:r[1]});return e}Yc.exports={buildPrompt:hy,buildNewCommentsHint:Kc,buildResumedCommentsHint:zc,buildColdCommentsHint:Jc,buildCommentReplyInstructions:Hc}});var Wn=k((n0,el)=>{var Q=require("fs"),ne=require("path");function xy(t,e){let s=(e.id||"unknown").slice(0,12),r=ne.join(t.workspacesRoot,e.workspace_id||"default",s),n=ne.join(r,"workdir");return{rootDir:r,workDir:n}}function Sy(t){Q.mkdirSync(ne.join(t,".claude","skills"),{recursive:!0}),Q.mkdirSync(ne.join(t,".agent_context"),{recursive:!0})}function Iy(t,e){let s=e.agent?.skills||[];if(!s.length)return;let r=ne.join(t,".claude","skills");Q.mkdirSync(r,{recursive:!0});for(let n of s){let o=Cy(n.name||"skill"),{slug:i,dir:a}=Ey(r,o);Q.mkdirSync(a,{recursive:!0});let c=Ay(n.content||"",i,n.description||"");Q.writeFileSync(ne.join(a,"SKILL.md"),c,"utf8");for(let l of n.files||[]){if(Oy(l.path))continue;let u=ne.join(a,l.path);Q.mkdirSync(ne.dirname(u),{recursive:!0}),Q.writeFileSync(u,l.content||"","utf8")}}}function Cy(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"skill"}function Ey(t,e){let s=[e,`${e}-multica`];for(let r=2;r<100;r++)s.push(`${e}-multica-${r}`);for(let r of s){let n=ne.join(t,r);if(!Q.existsSync(n))return{slug:r,dir:n};if(Q.existsSync(ne.join(n,"SKILL.md")))return{slug:r,dir:n}}return{slug:e,dir:ne.join(t,e)}}function Ay(t,e,s){let r=Vn(t);if(r<0)return Qc(t,e,s);if($y(t.slice(r))){if(Ty(t))return t;let n=Uy(t);return Qc(n,e,s)}return t.slice(0,r)+`name: ${e}
448
+ `+t.slice(r)}function Qc(t,e,s){let r=`---
449
449
  name: ${e}
450
- `,n=(s||"").trim();return n&&(r+=`description: ${Iy(n)}
450
+ `,n=(s||"").trim();return n&&(r+=`description: ${vy(n)}
451
451
  `),r+=`---
452
452
 
453
- `,r+t}function Mn(t){return t.startsWith(`---
453
+ `,r+t}function Vn(t){return t.startsWith(`---
454
454
  `)?4:t.startsWith(`---\r
455
- `)?5:-1}function ky(t){let e=t.indexOf(`
455
+ `)?5:-1}function $y(t){let e=t.indexOf(`
456
456
  ---`),s=e>=0?t.slice(0,e):t;for(let r of s.split(`
457
- `)){let n=r.trim();if(!n.startsWith("name:"))continue;if(n.slice(5).trim().replace(/^["']|["']$/g,""))return!0}return!1}function xy(t){let e=Mn(t);if(e<0)return!1;let s=t.slice(e),r=s.indexOf(`
457
+ `)){let n=r.trim();if(!n.startsWith("name:"))continue;if(n.slice(5).trim().replace(/^["']|["']$/g,""))return!0}return!1}function Ty(t){let e=Vn(t);if(e<0)return!1;let s=t.slice(e),r=s.indexOf(`
458
458
  ---`);if(r<0)return!1;let n=s.slice(0,r);if(!n.trim())return!1;for(let o of n.split(`
459
- `)){let i=o.trim();if(!(!i||i.startsWith("#"))&&!(i.includes(": ")||i.endsWith(":"))&&!(i.startsWith("- ")||i.startsWith('"')||i.startsWith("'"))&&!/^[a-zA-Z_][a-zA-Z0-9_]*:/.test(i))return!1}return!0}function Sy(t){let e=Mn(t);if(e<0)return t;let s=t.slice(e),r=s.indexOf(`
459
+ `)){let i=o.trim();if(!(!i||i.startsWith("#"))&&!(i.includes(": ")||i.endsWith(":"))&&!(i.startsWith("- ")||i.startsWith('"')||i.startsWith("'"))&&!/^[a-zA-Z_][a-zA-Z0-9_]*:/.test(i))return!1}return!0}function Uy(t){let e=Vn(t);if(e<0)return t;let s=t.slice(e),r=s.indexOf(`
460
460
  ---`);if(r<0)return t;let n=s.slice(r+4);return n.startsWith(`\r
461
461
  `)?n=n.slice(2):n.startsWith(`
462
- `)&&(n=n.slice(1)),n}function Iy(t){return`"${t.replace(/\r\n/g," ").replace(/\n/g," ").replace(/\r/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Cy(t){return t?t.replace(/\\/g,"/").replace(/^\.\//,"")==="SKILL.md":!1}function Ey(t,e){let s=Ay(e);try{let r=se.join(t,".agent_context","issue_context.md");Y.existsSync(r)||Y.writeFileSync(r,s,"utf8")}catch{}}function Ay(t){if(t.autopilot_run_id)return Ty(t);if(t.quick_create_prompt)return $y(t);let e=[`# Task Assignment
462
+ `)&&(n=n.slice(1)),n}function vy(t){return`"${t.replace(/\r\n/g," ").replace(/\n/g," ").replace(/\r/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Oy(t){return t?t.replace(/\\/g,"/").replace(/^\.\//,"")==="SKILL.md":!1}function Dy(t,e){let s=Ry(e);try{let r=ne.join(t,".agent_context","issue_context.md");Q.existsSync(r)||Q.writeFileSync(r,s,"utf8")}catch{}}function Ry(t){if(t.autopilot_run_id)return Py(t);if(t.quick_create_prompt)return Ly(t);let e=[`# Task Assignment
463
463
  `];t.issue_id&&e.push(`**Issue ID:** ${t.issue_id}
464
464
  `),t.trigger_comment_id?(e.push("**Trigger:** Comment Reply"),e.push(`**Triggering comment ID:** \`${t.trigger_comment_id}\`
465
465
  `)):e.push(`**Trigger:** New Assignment
@@ -469,14 +469,14 @@ name: ${e}
469
469
  `),e.push(`The following skills are available to you:
470
470
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
471
471
  `)+`
472
- `}function $y(t){let e=[`# Quick Create
472
+ `}function Ly(t){let e=[`# Quick Create
473
473
  `,`**Trigger:** Quick-create modal
474
474
  `,`## User input
475
475
  `];e.push(`> ${t.quick_create_prompt}
476
476
  `);let s=t.agent?.skills||[];if(s.length>0){e.push(`## Agent Skills
477
477
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
478
478
  `)+`
479
- `}function Ty(t){let e=[`# Autopilot Run
479
+ `}function Py(t){let e=[`# Autopilot Run
480
480
  `];t.autopilot_run_id&&e.push(`**Autopilot run ID:** ${t.autopilot_run_id}
481
481
  `),t.autopilot_id&&e.push(`**Autopilot ID:** ${t.autopilot_id}
482
482
  `),t.autopilot_title&&e.push(`**Title:** ${t.autopilot_title}
@@ -490,20 +490,22 @@ name: ${e}
490
490
  `),e.push(`The following skills are available to you:
491
491
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
492
492
  `)+`
493
- `}function Uy(t,e){let s=e.project_id||"",r=e.project_resources||[];if(!s&&!r.length)return;let n=se.join(t,".multica","project");Y.mkdirSync(n,{recursive:!0});let o={project_id:s,project_title:e.project_title||"",resources:r.length?r:[]},i=se.join(n,"resources.json");Y.existsSync(i)||Y.writeFileSync(i,JSON.stringify(o,null,2),"utf8")}function vy(t){if(!t.gcEnabled)return;let e=t.workspacesRoot;if(!Y.existsSync(e))return;let s=Date.now(),r;try{r=Y.readdirSync(e)}catch{return}for(let n of r){if(n===".repos")continue;let o=se.join(e,n),i;try{i=Y.readdirSync(o)}catch{continue}for(let a of i){let c=se.join(o,a),l=se.join(c,".gc_meta.json");try{let u=JSON.parse(Y.readFileSync(l,"utf8"));u.completed_at&&s-u.completed_at>t.gcTtl&&Y.rmSync(c,{recursive:!0,force:!0})}catch{}}}}function Oy(t,{status:e,taskId:s}){try{Y.writeFileSync(se.join(t,".gc_meta.json"),JSON.stringify({task_id:s,status:e,completed_at:Date.now()}),"utf8")}catch{}}function Dy(t,e){if(!e.keepEnvAfterTask)try{Y.rmSync(t,{recursive:!0,force:!0})}catch{}}Jc.exports={taskPaths:hy,prepareWorkdir:gy,writeSkillFiles:yy,writeIssueContext:Ey,writeProjectResources:Uy,runGc:vy,writeGcMeta:Oy,cleanupWorkdir:Dy}});var Qc=k((Qx,Xc)=>{var{spawn:Ry}=require("child_process"),{injectRuntimeConfig:Ly,cleanupRuntimeConfig:Hc}=Gc(),{buildPrompt:Py}=Kc(),{taskPaths:Ny,prepareWorkdir:qy,writeSkillFiles:jy,writeIssueContext:My,writeProjectResources:Gy,writeGcMeta:Yc,cleanupWorkdir:By}=Gn(),Fy=new Set(["HOME","PATH","USER","SHELL","CODEX_HOME"]);async function Zy(t,e,s,r,n=0){let{rootDir:o,workDir:i}=Ny(t,s),a=s.id?s.id.slice(0,8):"?",c=s.issue_id||s.issueId||"",l=s.agent_id||s.agentId||"",u=s.agent?.name||"";r(`[task ${a}] start slot=${n} issue=${c} agent=${l}(${u})`),r(`[task ${a}] workDir=${i}`);try{await e.taskStart(s.id),r(`[task ${a}] taskStart OK`)}catch(G){r(`[task ${a}] taskStart failed: ${G.message}`)}try{qy(i),jy(i,s),My(i,s),Gy(i,s),Ly(i,s),r(`[task ${a}] workdir prepared`)}catch(G){r(`[task ${a}] workdir prep failed: ${G.message}`),await Bn(e,s.id,`workdir preparation failed: ${G.message}`);return}let d=Py(s);r(`[task ${a}] prompt length=${d.length} chars`);let m=s.auth_token||t.token||"",h=Vy(t,s,m,n),{cmd:g,args:_}=Wy(t,s),w=s.agent?.provider||"claude";r(`[task ${a}] spawn provider=${w} cmd=${g} args=${_.join(" ")}`);let S=null,L=null,z=[],P={seq:0,pendingText:"",pendingThinking:"",callIdToTool:{},sessionId:null,finalOutput:""};try{S=await Ky({cmd:g,args:_,cwd:i,env:h,prompt:d,taskId:s.id},{onLine:G=>{let te=zy(G,P);if(P.sessionId&&!L&&(L=P.sessionId,r(`[task ${a}] session pinned sessionId=${L}`),e.taskSession(s.id,{sessionId:L,workDir:i}).catch(()=>{})),!te)return;let Re=Array.isArray(te)?te:[te];if(z.push(...Re),z.length>=20){let Le=z.splice(0);e.taskMessages(s.id,Le).catch(()=>{})}},agentTimeout:t.agentTimeout,log:r}),r(`[task ${a}] agent exited exitCode=${S}`)}catch(G){r(`[task ${a}] agent error: ${G.message}`),Hc(i),Yc(o,{status:"failed",taskId:s.id}),await Bn(e,s.id,G.message,L,i);return}let j=ar(P);j.length&&z.push(...j),z.length>0&&(r(`[task ${a}] flushing ${z.length} remaining message(s)`),await e.taskMessages(s.id,z).catch(()=>{})),Hc(i),Yc(o,{status:S===0?"completed":"failed",taskId:s.id}),By(o,t),S===0?(r(`[task ${a}] complete output_len=${P.finalOutput.length}`),await e.taskComplete(s.id,{output:P.finalOutput,sessionId:L,workDir:i}).catch(()=>{})):(r(`[task ${a}] failed (exit ${S})`),await Bn(e,s.id,`agent exited with code ${S}`,L,i))}function Vy(t,e,s,r){let n=Object.assign({},process.env);n.MULTICA_TOKEN=s,n.MULTICA_SERVER_URL=t.serverUrl,n.MULTICA_DAEMON_PORT=String(t.healthPort||19514),n.MULTICA_WORKSPACE_ID=e.workspace_id||"",n.MULTICA_AGENT_NAME=e.agent?.name||"",n.MULTICA_AGENT_ID=e.agent_id||e.agent?.id||"",n.MULTICA_TASK_ID=e.id,n.MULTICA_TASK_SLOT=String(r),e.autopilot_run_id&&(n.MULTICA_AUTOPILOT_RUN_ID=e.autopilot_run_id);let o=require("path").dirname(require("path").resolve(process.argv[1]));o&&!n.PATH.startsWith(o)&&(n.PATH=`${o}:${n.PATH}`);let i=e.agent?.custom_env||{};for(let[a,c]of Object.entries(i))a.startsWith("MULTICA_")||Fy.has(a)||(n[a]=c);return e.agent?.model&&(n.ANTHROPIC_MODEL=e.agent.model),n}function Wy(t,e){return(e.agent?.provider||"claude")==="codex"?{cmd:t.codexPath,args:["agent","codex"]}:{cmd:t.claudePath,args:["agent","claude","-p","--output-format","stream-json","--input-format","stream-json","--verbose","--strict-mcp-config","--permission-mode","bypassPermissions","--disallowedTools","AskUserQuestion"]}}function Ky({cmd:t,args:e,cwd:s,env:r,prompt:n,taskId:o,agentTimeout:i},{onLine:a,log:c}){return new Promise((l,u)=>{let d=Ry(t,e,{cwd:s,env:r,stdio:["pipe","pipe","pipe"]}),m=null;i>0&&(m=setTimeout(()=>{c(`[task ${o}] agent timeout after ${i}ms`),d.kill("SIGTERM"),setTimeout(()=>d.kill("SIGKILL"),5e3)},i));let h="";d.stdout.on("data",_=>{h+=_.toString();let w=h.split(`
494
- `);h=w.pop();for(let S of w)S.trim()&&a(S)}),d.stderr.on("data",_=>{let w=_.toString();w.trim()&&c(`[task ${o}] stderr: ${w.trimEnd()}`)}),d.on("error",_=>{m&&clearTimeout(m),u(_)}),d.on("close",_=>{m&&clearTimeout(m),h.trim()&&a(h),l(_||0)});let g=JSON.stringify({type:"user",message:{role:"user",content:[{type:"text",text:n}]}})+`
495
- `;d.stdin.write(g),d.stdin.end()})}function zy(t,e){let s;try{s=JSON.parse(t)}catch{return null}if(!s||typeof s!="object")return null;let r=s.type;if(r==="system"&&s.session_id&&!e.sessionId&&(e.sessionId=s.session_id),r==="assistant"){let n=s.message||{},o=Array.isArray(n.content)?n.content:[];for(let i of o)if(i.type==="text"&&i.text)e.pendingText+=i.text;else if(i.type==="thinking"&&i.thinking)e.pendingThinking+=i.thinking;else if(i.type==="tool_use"){let a=ar(e),c=++e.seq;return a.push({seq:c,type:"tool_use",tool:i.name||"",input:i.input||{}}),i.id&&(e.callIdToTool[i.id]=i.name||""),a.length?a:null}return null}if(r==="tool_result"){let n=ar(e),o=++e.seq,i="",a=s.content;typeof a=="string"?i=a:Array.isArray(a)&&(i=a.map(l=>l.text||l.content||"").join("")),i.length>8192&&(i=i.slice(0,8192));let c=s.tool_name||(s.tool_use_id?e.callIdToTool[s.tool_use_id]:"")||"";return n.push({seq:o,type:"tool_result",tool:c,output:i}),n.length?n:null}if(r==="result"){let n=ar(e),o=++e.seq,i=s.result||s.content||"";return i&&(n.push({seq:o,type:"text",content:i}),e.finalOutput=i),n.length?n:null}return null}function ar(t){let e=[];return t.pendingThinking&&(e.push({seq:++t.seq,type:"thinking",content:t.pendingThinking}),t.pendingThinking=""),t.pendingText&&(e.push({seq:++t.seq,type:"text",content:t.pendingText}),t.pendingText=""),e}async function Bn(t,e,s,r,n){try{await t.taskFail(e,{error:s,sessionId:r,workDir:n})}catch{}}Xc.exports={runTask:Zy}});var tl=k((e0,el)=>{var{runTask:Jy}=Qc(),Fn=class{constructor(e,s,r,n){this.cfg=e,this.client=s,this.runtimeId=r,this.log=n,this._running=!1,this._taskCount=0,this._slotCounter=0,this._wakeupResolve=null}get activeTaskCount(){return this._taskCount}start(e){this._running=!0,this._loop(e)}wakeup(){this._wakeupResolve&&(this._wakeupResolve(),this._wakeupResolve=null)}async _loop(e){for(this.log(`[poller ${this.runtimeId.slice(0,8)}] started`);this._running&&(!e||!e.aborted);){try{if(this._taskCount>=this.cfg.maxConcurrentTasks){this.log(`[poller ${this.runtimeId.slice(0,8)}] at capacity (${this._taskCount}/${this.cfg.maxConcurrentTasks}), sleeping`),await this._sleep(e);continue}this.log(`[poller ${this.runtimeId.slice(0,8)}] claiming task (active=${this._taskCount})`);let s=await this.client.claimTask(this.runtimeId);if(s){let r=this._slotCounter++;this._taskCount++;let n=s.id?s.id.slice(0,8):"?",o=s.issue_id||s.issueId||"";this.log(`[poller ${this.runtimeId.slice(0,8)}] claimed task=${n} issue=${o} slot=${r} (active=${this._taskCount})`),this._runTask(s,r).finally(()=>{this._taskCount--,this.log(`[poller ${this.runtimeId.slice(0,8)}] task=${n} finished (active=${this._taskCount})`)});continue}else this.log(`[poller ${this.runtimeId.slice(0,8)}] no task available`)}catch(s){this.log(`[poller ${this.runtimeId.slice(0,8)}] claim error: ${s.message}`)}await this._sleep(e)}this.log(`[poller ${this.runtimeId.slice(0,8)}] stopped`)}_sleep(e){return new Promise(s=>{this._wakeupResolve=s;let r=Hy(this.cfg.pollInterval||3e4),n=setTimeout(()=>{this._wakeupResolve=null,s()},r),o=()=>{clearTimeout(n),this._wakeupResolve=null,s()};e&&e.addEventListener("abort",o,{once:!0})})}async _runTask(e,s){try{await Jy(this.cfg,this.client,e,this.log,s)}catch(r){this.log(`[poller ${this.runtimeId.slice(0,8)}] task ${e.id} uncaught: ${r.message}`)}}stop(){this._running=!1,this.wakeup()}};function Hy(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}el.exports={Poller:Fn}});var rl=k((t0,sl)=>{var Yy=require("https"),Xy=require("http"),{URL:Qy}=require("url"),e_={claude:[{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",provider:"anthropic",default:!0},{id:"claude-opus-4-8",label:"Claude Opus 4.8",provider:"anthropic"},{id:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",provider:"anthropic"}],codex:[{id:"gpt-5.5",label:"GPT-5.5",provider:"openai",default:!0},{id:"o3",label:"o3",provider:"openai"}]};async function t_(t,e){let s=(t||"https://api.makecoder.com/v1").replace(/\/+$/,""),r=new Qy(`${s}/claudeproxy/v1/models`),n=r.protocol==="http:"?Xy:Yy;return new Promise(o=>{let i={"Content-Type":"application/json"};e&&(i.Authorization=`Bearer ${e}`);let a=n.request({hostname:r.hostname,port:r.port||(r.protocol==="http:"?80:443),path:r.pathname+r.search,method:"GET",headers:i,timeout:5e3},c=>{let l="";c.on("data",u=>l+=u),c.on("end",()=>{try{let u=JSON.parse(l);if(u.code===0&&Array.isArray(u.data?.models)){let d=u.data.models.filter(m=>m.id).sort((m,h)=>m.id.localeCompare(h.id)).map((m,h)=>({id:m.id,label:m.name??m.id,provider:m.provider||"anthropic",...h===0?{default:!0}:{}}));o(d)}else o(null)}catch{o(null)}})});a.on("error",()=>o(null)),a.on("timeout",()=>{a.destroy(),o(null)}),a.end()})}async function s_(t,e,s,r,n,o){n(`[model-list] runtime=${e} request=${s} provider=${r}`);let i=null;if(r==="claude"&&(i=await t_(o||t.serverUrl,t.token),n(i?`[model-list] fetched ${i.length} models from API`:"[model-list] API unavailable, using fallback list")),i||(i=e_[r]||null),!i){await t.reportModelListResult(e,s,{status:"failed",error:`no model catalog for provider "${r}"`});return}try{await t.reportModelListResult(e,s,{status:"completed",models:i,supported:!0}),n(`[model-list] reported ${i.length} models for runtime=${e}`)}catch(a){n(`[model-list] report failed: ${a.message}`)}}sl.exports={handleModelList:s_}});var il=k((s0,ol)=>{var{handleModelList:r_}=rl(),Zn=class{constructor(e,s,r,n,o,i){this.cfg=e,this.client=s,this.getRuntimeIds=r,this.log=n,this.onRuntimeGone=o,this.getRuntimeProvider=i||(()=>"claude"),this._timer=null}start(e){let s=this.cfg.heartbeatInterval||15e3,r=async()=>{if(e&&e.aborted)return;let n=this.getRuntimeIds();for(let o of n)try{let i=await this.client.heartbeat(o);if(i&&i.runtime_gone&&(this.log(`[heartbeat] runtime ${o} gone, re-registering`),this.onRuntimeGone&&this.onRuntimeGone(o)),i&&i.pending_model_list){let a=this.getRuntimeProvider(o);r_(this.client,o,i.pending_model_list.id,a,this.log,this.cfg.coderBaseUrl).catch(c=>this.log(`[heartbeat] model-list error: ${c.message}`))}}catch(i){this.log(`[heartbeat] error for ${o}: ${i.message}`)}(!e||!e.aborted)&&(this._timer=setTimeout(r,nl(s)))};this._timer=setTimeout(r,nl(s))}stop(){this._timer&&(clearTimeout(this._timer),this._timer=null)}};function nl(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}ol.exports={Heartbeat:Zn}});var Be=k((r0,ll)=>{"use strict";var al=["nodebuffer","arraybuffer","fragments"],cl=typeof Blob<"u";cl&&al.push("blob");ll.exports={BINARY_TYPES:al,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:cl,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var _s=k((n0,cr)=>{"use strict";var{EMPTY_BUFFER:n_}=Be(),Vn=Buffer[Symbol.species];function o_(t,e){if(t.length===0)return n_;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let n=0;n<t.length;n++){let o=t[n];s.set(o,r),r+=o.length}return r<e?new Vn(s.buffer,s.byteOffset,r):s}function ul(t,e,s,r,n){for(let o=0;o<n;o++)s[r+o]=t[o]^e[o&3]}function dl(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function i_(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Wn(t){if(Wn.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Vn(t):ArrayBuffer.isView(t)?e=new Vn(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Wn.readOnly=!1),e}cr.exports={concat:o_,mask:ul,toArrayBuffer:i_,toBuffer:Wn,unmask:dl};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");cr.exports.mask=function(e,s,r,n,o){o<48?ul(e,s,r,n,o):t.mask(e,s,r,n,o)},cr.exports.unmask=function(e,s){e.length<32?dl(e,s):t.unmask(e,s)}}catch{}});var ml=k((o0,pl)=>{"use strict";var fl=Symbol("kDone"),Kn=Symbol("kRun"),zn=class{constructor(e){this[fl]=()=>{this.pending--,this[Kn]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Kn]()}[Kn](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[fl])}}};pl.exports=zn});var Jt=k((i0,_l)=>{"use strict";var ws=require("zlib"),hl=_s(),a_=ml(),{kStatusCode:gl}=Be(),c_=Buffer[Symbol.species],l_=Buffer.from([0,0,255,255]),ur=Symbol("permessage-deflate"),Fe=Symbol("total-length"),Kt=Symbol("callback"),Qe=Symbol("buffers"),zt=Symbol("error"),lr,Jn=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!lr){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;lr=new a_(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Kt];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let s=this._options,r=e.find(n=>!(s.serverNoContextTakeover===!1&&n.server_no_context_takeover||n.server_max_window_bits&&(s.serverMaxWindowBits===!1||typeof s.serverMaxWindowBits=="number"&&s.serverMaxWindowBits>n.server_max_window_bits)||typeof s.clientMaxWindowBits=="number"&&!n.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return s.serverNoContextTakeover&&(r.server_no_context_takeover=!0),s.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof s.serverMaxWindowBits=="number"&&(r.server_max_window_bits=s.serverMaxWindowBits),typeof s.clientMaxWindowBits=="number"?r.client_max_window_bits=s.clientMaxWindowBits:(r.client_max_window_bits===!0||s.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let s=e[0];if(this._options.clientNoContextTakeover===!1&&s.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!s.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(s.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&s.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return s}normalizeParams(e){return e.forEach(s=>{Object.keys(s).forEach(r=>{let n=s[r];if(n.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(n=n[0],r==="client_max_window_bits"){if(n!==!0){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else if(r==="server_max_window_bits"){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(n!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else throw new Error(`Unknown parameter "${r}"`);s[r]=n})}),e}decompress(e,s,r){lr.add(n=>{this._decompress(e,s,(o,i)=>{n(),r(o,i)})})}compress(e,s,r){lr.add(n=>{this._compress(e,s,(o,i)=>{n(),r(o,i)})})}_decompress(e,s,r){let n=this._isServer?"client":"server";if(!this._inflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?ws.Z_DEFAULT_WINDOWBITS:this.params[o];this._inflate=ws.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[ur]=this,this._inflate[Fe]=0,this._inflate[Qe]=[],this._inflate.on("error",d_),this._inflate.on("data",yl)}this._inflate[Kt]=r,this._inflate.write(e),s&&this._inflate.write(l_),this._inflate.flush(()=>{let o=this._inflate[zt];if(o){this._inflate.close(),this._inflate=null,r(o);return}let i=hl.concat(this._inflate[Qe],this._inflate[Fe]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Fe]=0,this._inflate[Qe]=[],s&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(e,s,r){let n=this._isServer?"server":"client";if(!this._deflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?ws.Z_DEFAULT_WINDOWBITS:this.params[o];this._deflate=ws.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[Fe]=0,this._deflate[Qe]=[],this._deflate.on("data",u_)}this._deflate[Kt]=r,this._deflate.write(e),this._deflate.flush(ws.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let o=hl.concat(this._deflate[Qe],this._deflate[Fe]);s&&(o=new c_(o.buffer,o.byteOffset,o.length-4)),this._deflate[Kt]=null,this._deflate[Fe]=0,this._deflate[Qe]=[],s&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,o)})}};_l.exports=Jn;function u_(t){this[Qe].push(t),this[Fe]+=t.length}function yl(t){if(this[Fe]+=t.length,this[ur]._maxPayload<1||this[Fe]<=this[ur]._maxPayload){this[Qe].push(t);return}this[zt]=new RangeError("Max payload size exceeded"),this[zt].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[zt][gl]=1009,this.removeListener("data",yl),this.reset()}function d_(t){if(this[ur]._inflate=null,this[zt]){this[Kt](this[zt]);return}t[gl]=1007,this[Kt](t)}});var Ht=k((a0,dr)=>{"use strict";var{isUtf8:wl}=require("buffer"),{hasBlob:f_}=Be(),p_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function m_(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Hn(t){let e=t.length,s=0;for(;s<e;)if((t[s]&128)===0)s++;else if((t[s]&224)===192){if(s+1===e||(t[s+1]&192)!==128||(t[s]&254)===192)return!1;s+=2}else if((t[s]&240)===224){if(s+2>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||t[s]===224&&(t[s+1]&224)===128||t[s]===237&&(t[s+1]&224)===160)return!1;s+=3}else if((t[s]&248)===240){if(s+3>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||(t[s+3]&192)!==128||t[s]===240&&(t[s+1]&240)===128||t[s]===244&&t[s+1]>143||t[s]>244)return!1;s+=4}else return!1;return!0}function h_(t){return f_&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}dr.exports={isBlob:h_,isValidStatusCode:m_,isValidUTF8:Hn,tokenChars:p_};if(wl)dr.exports.isValidUTF8=function(t){return t.length<24?Hn(t):wl(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");dr.exports.isValidUTF8=function(e){return e.length<32?Hn(e):t(e)}}catch{}});var to=k((c0,El)=>{"use strict";var{Writable:g_}=require("stream"),bl=Jt(),{BINARY_TYPES:y_,EMPTY_BUFFER:kl,kStatusCode:__,kWebSocket:w_}=Be(),{concat:Yn,toArrayBuffer:b_,unmask:k_}=_s(),{isValidStatusCode:x_,isValidUTF8:xl}=Ht(),fr=Buffer[Symbol.species],be=0,Sl=1,Il=2,Cl=3,Xn=4,Qn=5,pr=6,eo=class extends g_{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||y_[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[w_]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=be}_write(e,s,r){if(this._opcode===8&&this._state==be)return r();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){r(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new fr(r.buffer,r.byteOffset+e,r.length-e),new fr(r.buffer,r.byteOffset,e)}let s=Buffer.allocUnsafe(e);do{let r=this._buffers[0],n=s.length-e;e>=r.length?s.set(this._buffers.shift(),n):(s.set(new Uint8Array(r.buffer,r.byteOffset,e),n),this._buffers[0]=new fr(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return s}startLoop(e){this._loop=!0;do switch(this._state){case be:this.getInfo(e);break;case Sl:this.getPayloadLength16(e);break;case Il:this.getPayloadLength64(e);break;case Cl:this.getMask();break;case Xn:this.getData(e);break;case Qn:case pr:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let s=this.consume(2);if((s[0]&48)!==0){let n=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(n);return}let r=(s[0]&64)===64;if(r&&!this._extensions[bl.extensionName]){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._fin=(s[0]&128)===128,this._opcode=s[0]&15,this._payloadLength=s[1]&127,this._opcode===0){if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(!this._fragmented){let n=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let n=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(n);return}if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let n=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(n);return}}else{let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(s[1]&128)===128,this._isServer){if(!this._masked){let n=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(n);return}}else if(this._masked){let n=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(n);return}this._payloadLength===126?this._state=Sl:this._payloadLength===127?this._state=Il:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let s=this.consume(8),r=s.readUInt32BE(0);if(r>Math.pow(2,21)-1){let n=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(n);return}this._payloadLength=r*Math.pow(2,32)+s.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(s);return}this._masked?this._state=Cl:this._state=Xn}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Xn}getData(e){let s=kl;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}s=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&k_(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=Qn,this.decompress(s,e);return}if(s.length){if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let r=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");e(r);return}this._messageLength=this._totalPayloadLength,this._fragments.push(s)}this.dataMessage(e)}decompress(e,s){this._extensions[bl.extensionName].decompress(e,this._fin,(n,o)=>{if(n)return s(n);if(o.length){if(this._messageLength+=o.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(i);return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let i=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");s(i);return}this._fragments.push(o)}this.dataMessage(s),this._state===be&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=be;return}let s=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=Yn(r,s):this._binaryType==="arraybuffer"?n=b_(Yn(r,s)):this._binaryType==="blob"?n=new Blob(r):n=r,this._allowSynchronousEvents?(this.emit("message",n,!0),this._state=be):(this._state=pr,setImmediate(()=>{this.emit("message",n,!0),this._state=be,this.startLoop(e)}))}else{let n=Yn(r,s);if(!this._skipUTF8Validation&&!xl(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(o);return}this._state===Qn||this._allowSynchronousEvents?(this.emit("message",n,!1),this._state=be):(this._state=pr,setImmediate(()=>{this.emit("message",n,!1),this._state=be,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,kl),this.end();else{let r=e.readUInt16BE(0);if(!x_(r)){let o=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(o);return}let n=new fr(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!xl(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");s(o);return}this._loop=!1,this.emit("conclude",r,n),this.end()}this._state=be;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=be):(this._state=pr,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=be,this.startLoop(s)}))}createError(e,s,r,n,o){this._loop=!1,this._errored=!0;let i=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(i,this.createError),i.code=o,i[__]=n,i}};El.exports=eo});var no=k((u0,Tl)=>{"use strict";var{Duplex:l0}=require("stream"),{randomFillSync:S_}=require("crypto"),{types:{isUint8Array:I_}}=require("util"),Al=Jt(),{EMPTY_BUFFER:C_,kWebSocket:E_,NOOP:A_}=Be(),{isBlob:Yt,isValidStatusCode:$_}=Ht(),{mask:$l,toBuffer:Ct}=_s(),ke=Symbol("kByteLength"),T_=Buffer.alloc(4),mr=8*1024,Et,Xt=mr,Ce=0,U_=1,v_=2,so=class t{constructor(e,s,r){this._extensions=s||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=Ce,this.onerror=A_,this[E_]=void 0}static frame(e,s){let r,n=!1,o=2,i=!1;s.mask&&(r=s.maskBuffer||T_,s.generateMask?s.generateMask(r):(Xt===mr&&(Et===void 0&&(Et=Buffer.alloc(mr)),S_(Et,0,mr),Xt=0),r[0]=Et[Xt++],r[1]=Et[Xt++],r[2]=Et[Xt++],r[3]=Et[Xt++]),i=(r[0]|r[1]|r[2]|r[3])===0,o=6);let a;typeof e=="string"?(!s.mask||i)&&s[ke]!==void 0?a=s[ke]:(e=Buffer.from(e),a=e.length):(a=e.length,n=s.mask&&s.readOnly&&!i);let c=a;a>=65536?(o+=8,c=127):a>125&&(o+=2,c=126);let l=Buffer.allocUnsafe(n?a+o:o);return l[0]=s.fin?s.opcode|128:s.opcode,s.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(a,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(a,4,6)),s.mask?(l[1]|=128,l[o-4]=r[0],l[o-3]=r[1],l[o-2]=r[2],l[o-1]=r[3],i?[l,e]:n?($l(e,r,l,o,a),[l]):($l(e,r,e,0,a),[l,e])):[l,e]}close(e,s,r,n){let o;if(e===void 0)o=C_;else{if(typeof e!="number"||!$_(e))throw new TypeError("First argument must be a valid error code number");if(s===void 0||!s.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(e,0);else{let a=Buffer.byteLength(s);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");if(o=Buffer.allocUnsafe(2+a),o.writeUInt16BE(e,0),typeof s=="string")o.write(s,2);else if(I_(s))o.set(s,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let i={[ke]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==Ce?this.enqueue([this.dispatch,o,!1,i,n]):this.sendFrame(t.frame(o,i),n)}ping(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):Yt(e)?(n=e.size,o=!1):(e=Ct(e),n=e.length,o=Ct.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[ke]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};Yt(e)?this._state!==Ce?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==Ce?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}pong(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):Yt(e)?(n=e.size,o=!1):(e=Ct(e),n=e.length,o=Ct.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[ke]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};Yt(e)?this._state!==Ce?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==Ce?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}send(e,s,r){let n=this._extensions[Al.extensionName],o=s.binary?2:1,i=s.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):Yt(e)?(a=e.size,c=!1):(e=Ct(e),a=e.length,c=Ct.readOnly),this._firstFragment?(this._firstFragment=!1,i&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=n._threshold),this._compress=i):(i=!1,o=0),s.fin&&(this._firstFragment=!0);let l={[ke]:a,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:c,rsv1:i};Yt(e)?this._state!==Ce?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==Ce?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,s,r,n){this._bufferedBytes+=r[ke],this._state=v_,e.arrayBuffer().then(o=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(ro,this,a,n);return}this._bufferedBytes-=r[ke];let i=Ct(o);s?this.dispatch(i,s,r,n):(this._state=Ce,this.sendFrame(t.frame(i,r),n),this.dequeue())}).catch(o=>{process.nextTick(O_,this,o,n)})}dispatch(e,s,r,n){if(!s){this.sendFrame(t.frame(e,r),n);return}let o=this._extensions[Al.extensionName];this._bufferedBytes+=r[ke],this._state=U_,o.compress(e,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");ro(this,c,n);return}this._bufferedBytes-=r[ke],this._state=Ce,r.readOnly=!1,this.sendFrame(t.frame(a,r),n),this.dequeue()})}dequeue(){for(;this._state===Ce&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][ke],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][ke],this._queue.push(e)}sendFrame(e,s){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],s),this._socket.uncork()):this._socket.write(e[0],s)}};Tl.exports=so;function ro(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let n=t._queue[r],o=n[n.length-1];typeof o=="function"&&o(e)}}function O_(t,e,s){ro(t,e,s),t.onerror(e)}});var ql=k((d0,Nl)=>{"use strict";var{kForOnEventAttribute:bs,kListener:oo}=Be(),Ul=Symbol("kCode"),vl=Symbol("kData"),Ol=Symbol("kError"),Dl=Symbol("kMessage"),Rl=Symbol("kReason"),Qt=Symbol("kTarget"),Ll=Symbol("kType"),Pl=Symbol("kWasClean"),Ze=class{constructor(e){this[Qt]=null,this[Ll]=e}get target(){return this[Qt]}get type(){return this[Ll]}};Object.defineProperty(Ze.prototype,"target",{enumerable:!0});Object.defineProperty(Ze.prototype,"type",{enumerable:!0});var At=class extends Ze{constructor(e,s={}){super(e),this[Ul]=s.code===void 0?0:s.code,this[Rl]=s.reason===void 0?"":s.reason,this[Pl]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[Ul]}get reason(){return this[Rl]}get wasClean(){return this[Pl]}};Object.defineProperty(At.prototype,"code",{enumerable:!0});Object.defineProperty(At.prototype,"reason",{enumerable:!0});Object.defineProperty(At.prototype,"wasClean",{enumerable:!0});var es=class extends Ze{constructor(e,s={}){super(e),this[Ol]=s.error===void 0?null:s.error,this[Dl]=s.message===void 0?"":s.message}get error(){return this[Ol]}get message(){return this[Dl]}};Object.defineProperty(es.prototype,"error",{enumerable:!0});Object.defineProperty(es.prototype,"message",{enumerable:!0});var ks=class extends Ze{constructor(e,s={}){super(e),this[vl]=s.data===void 0?null:s.data}get data(){return this[vl]}};Object.defineProperty(ks.prototype,"data",{enumerable:!0});var D_={addEventListener(t,e,s={}){for(let n of this.listeners(t))if(!s[bs]&&n[oo]===e&&!n[bs])return;let r;if(t==="message")r=function(o,i){let a=new ks("message",{data:i?o:o.toString()});a[Qt]=this,hr(e,this,a)};else if(t==="close")r=function(o,i){let a=new At("close",{code:o,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[Qt]=this,hr(e,this,a)};else if(t==="error")r=function(o){let i=new es("error",{error:o,message:o.message});i[Qt]=this,hr(e,this,i)};else if(t==="open")r=function(){let o=new Ze("open");o[Qt]=this,hr(e,this,o)};else return;r[bs]=!!s[bs],r[oo]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[oo]===e&&!s[bs]){this.removeListener(t,s);break}}};Nl.exports={CloseEvent:At,ErrorEvent:es,Event:Ze,EventTarget:D_,MessageEvent:ks};function hr(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var gr=k((f0,jl)=>{"use strict";var{tokenChars:xs}=Ht();function Oe(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function R_(t){let e=Object.create(null),s=Object.create(null),r=!1,n=!1,o=!1,i,a,c=-1,l=-1,u=-1,d=0;for(;d<t.length;d++)if(l=t.charCodeAt(d),i===void 0)if(u===-1&&xs[l]===1)c===-1&&(c=d);else if(d!==0&&(l===32||l===9))u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(c,u);l===44?(Oe(e,h,s),s=Object.create(null)):i=h,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&xs[l]===1)c===-1&&(c=d);else if(l===32||l===9)u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Oe(s,t.slice(c,u),!0),l===44&&(Oe(e,i,s),s=Object.create(null),i=void 0),c=u=-1}else if(l===61&&c!==-1&&u===-1)a=t.slice(c,d),c=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(n){if(xs[l]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:r||(r=!0),n=!1}else if(o)if(xs[l]===1)c===-1&&(c=d);else if(l===34&&c!==-1)o=!1,u=d;else if(l===92)n=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(l===34&&t.charCodeAt(d-1)===61)o=!0;else if(u===-1&&xs[l]===1)c===-1&&(c=d);else if(c!==-1&&(l===32||l===9))u===-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(c,u);r&&(h=h.replace(/\\/g,""),r=!1),Oe(s,a,h),l===44&&(Oe(e,i,s),s=Object.create(null),i=void 0),a=void 0,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||o||l===32||l===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let m=t.slice(c,u);return i===void 0?Oe(e,m,s):(a===void 0?Oe(s,m,!0):r?Oe(s,a,m.replace(/\\/g,"")):Oe(s,a,m),Oe(e,i,s)),e}function L_(t){return Object.keys(t).map(e=>{let s=t[e];return Array.isArray(s)||(s=[s]),s.map(r=>[e].concat(Object.keys(r).map(n=>{let o=r[n];return Array.isArray(o)||(o=[o]),o.map(i=>i===!0?n:`${n}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}jl.exports={format:L_,parse:R_}});var br=k((h0,Yl)=>{"use strict";var P_=require("events"),N_=require("https"),q_=require("http"),Bl=require("net"),j_=require("tls"),{randomBytes:M_,createHash:G_}=require("crypto"),{Duplex:p0,Readable:m0}=require("stream"),{URL:io}=require("url"),et=Jt(),B_=to(),F_=no(),{isBlob:Z_}=Ht(),{BINARY_TYPES:Ml,CLOSE_TIMEOUT:V_,EMPTY_BUFFER:yr,GUID:W_,kForOnEventAttribute:ao,kListener:K_,kStatusCode:z_,kWebSocket:re,NOOP:Fl}=Be(),{EventTarget:{addEventListener:J_,removeEventListener:H_}}=ql(),{format:Y_,parse:X_}=gr(),{toBuffer:Q_}=_s(),Zl=Symbol("kAborted"),co=[8,13],Ve=["CONNECTING","OPEN","CLOSING","CLOSED"],ew=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,J=class t extends P_{constructor(e,s,r){super(),this._binaryType=Ml[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=yr,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,s===void 0?s=[]:Array.isArray(s)||(typeof s=="object"&&s!==null?(r=s,s=[]):s=[s]),Vl(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ml.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,s,r){let n=new B_({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new F_(e,this._extensions,r.generateMask);this._receiver=n,this._sender=o,this._socket=e,n[re]=this,o[re]=this,e[re]=this,n.on("conclude",rw),n.on("drain",nw),n.on("error",ow),n.on("message",iw),n.on("ping",aw),n.on("pong",cw),o.onerror=lw,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",zl),e.on("data",wr),e.on("end",Jl),e.on("error",Hl),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[et.extensionName]&&this._extensions[et.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,s){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){he(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,s,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Kl(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){lo(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||yr,s,r)}pong(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){lo(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||yr,s,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof s=="function"&&(r=s,s={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){lo(this,e,r);return}let n={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[et.extensionName]||(n.compress=!1),this._sender.send(e||yr,n,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){he(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(J,"CONNECTING",{enumerable:!0,value:Ve.indexOf("CONNECTING")});Object.defineProperty(J.prototype,"CONNECTING",{enumerable:!0,value:Ve.indexOf("CONNECTING")});Object.defineProperty(J,"OPEN",{enumerable:!0,value:Ve.indexOf("OPEN")});Object.defineProperty(J.prototype,"OPEN",{enumerable:!0,value:Ve.indexOf("OPEN")});Object.defineProperty(J,"CLOSING",{enumerable:!0,value:Ve.indexOf("CLOSING")});Object.defineProperty(J.prototype,"CLOSING",{enumerable:!0,value:Ve.indexOf("CLOSING")});Object.defineProperty(J,"CLOSED",{enumerable:!0,value:Ve.indexOf("CLOSED")});Object.defineProperty(J.prototype,"CLOSED",{enumerable:!0,value:Ve.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(J.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(J.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[ao])return e[K_];return null},set(e){for(let s of this.listeners(t))if(s[ao]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[ao]:!0})}})});J.prototype.addEventListener=J_;J.prototype.removeEventListener=H_;Yl.exports=J;function Vl(t,e,s,r){let n={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:V_,protocolVersion:co[1],maxBufferedChunks:1048576,maxFragments:131072,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=n.autoPong,t._closeTimeout=n.closeTimeout,!co.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${co.join(", ")})`);let o;if(e instanceof io)o=e;else try{o=new io(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),t._url=o.href;let i=o.protocol==="wss:",a=o.protocol==="ws+unix:",c;if(o.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!o.pathname?c="The URL's pathname is empty":o.hash&&(c="The URL contains a fragment identifier"),c){let _=new SyntaxError(c);if(t._redirects===0)throw _;_r(t,_);return}let l=i?443:80,u=M_(16).toString("base64"),d=i?N_.request:q_.request,m=new Set,h;if(n.createConnection=n.createConnection||(i?sw:tw),n.defaultPort=n.defaultPort||l,n.port=o.port||l,n.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},n.path=o.pathname+o.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(h=new et({...n.perMessageDeflate,isServer:!1,maxPayload:n.maxPayload}),n.headers["Sec-WebSocket-Extensions"]=Y_({[et.extensionName]:h.offer()})),s.length){for(let _ of s){if(typeof _!="string"||!ew.test(_)||m.has(_))throw new SyntaxError("An invalid or duplicated subprotocol was specified");m.add(_)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(o.username||o.password)&&(n.auth=`${o.username}:${o.password}`),a){let _=n.path.split(":");n.socketPath=_[0],n.path=_[1]}let g;if(n.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=i,t._originalHostOrSocketPath=a?n.socketPath:o.host;let _=r&&r.headers;if(r={...r,headers:{}},_)for(let[w,S]of Object.entries(_))r.headers[w.toLowerCase()]=S}else if(t.listenerCount("redirect")===0){let _=a?t._originalIpc?n.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:o.host===t._originalHostOrSocketPath;(!_||t._originalSecure&&!i)&&(delete n.headers.authorization,delete n.headers.cookie,_||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),g=t._req=d(n),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=d(n);n.timeout&&g.on("timeout",()=>{he(t,g,"Opening handshake has timed out")}),g.on("error",_=>{g===null||g[Zl]||(g=t._req=null,_r(t,_))}),g.on("response",_=>{let w=_.headers.location,S=_.statusCode;if(w&&n.followRedirects&&S>=300&&S<400){if(++t._redirects>n.maxRedirects){he(t,g,"Maximum redirects exceeded");return}g.abort();let L;try{L=new io(w,e)}catch{let P=new SyntaxError(`Invalid URL: ${w}`);_r(t,P);return}Vl(t,L,s,r)}else t.emit("unexpected-response",g,_)||he(t,g,`Unexpected server response: ${_.statusCode}`)}),g.on("upgrade",(_,w,S)=>{if(t.emit("upgrade",_),t.readyState!==J.CONNECTING)return;g=t._req=null;let L=_.headers.upgrade;if(L===void 0||L.toLowerCase()!=="websocket"){he(t,w,"Invalid Upgrade header");return}let z=G_("sha1").update(u+W_).digest("base64");if(_.headers["sec-websocket-accept"]!==z){he(t,w,"Invalid Sec-WebSocket-Accept header");return}let P=_.headers["sec-websocket-protocol"],j;if(P!==void 0?m.size?m.has(P)||(j="Server sent an invalid subprotocol"):j="Server sent a subprotocol but none was requested":m.size&&(j="Server sent no subprotocol"),j){he(t,w,j);return}P&&(t._protocol=P);let G=_.headers["sec-websocket-extensions"];if(G!==void 0){if(!h){he(t,w,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let te;try{te=X_(G)}catch{he(t,w,"Invalid Sec-WebSocket-Extensions header");return}let Re=Object.keys(te);if(Re.length!==1||Re[0]!==et.extensionName){he(t,w,"Server indicated an extension that was not requested");return}try{h.accept(te[et.extensionName])}catch{he(t,w,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[et.extensionName]=h}t.setSocket(w,S,{allowSynchronousEvents:n.allowSynchronousEvents,generateMask:n.generateMask,maxBufferedChunks:n.maxBufferedChunks,maxFragments:n.maxFragments,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})}),n.finishRequest?n.finishRequest(g,t):g.end()}function _r(t,e){t._readyState=J.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function tw(t){return t.path=t.socketPath,Bl.connect(t)}function sw(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Bl.isIP(t.host)?"":t.host),j_.connect(t)}function he(t,e,s){t._readyState=J.CLOSING;let r=new Error(s);Error.captureStackTrace(r,he),e.setHeader?(e[Zl]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(_r,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function lo(t,e,s){if(e){let r=Z_(e)?e.size:Q_(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Ve[t.readyState]})`);process.nextTick(s,r)}}function rw(t,e){let s=this[re];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[re]!==void 0&&(s._socket.removeListener("data",wr),process.nextTick(Wl,s._socket),t===1005?s.close():s.close(t,e))}function nw(){let t=this[re];t.isPaused||t._socket.resume()}function ow(t){let e=this[re];e._socket[re]!==void 0&&(e._socket.removeListener("data",wr),process.nextTick(Wl,e._socket),e.close(t[z_])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Gl(){this[re].emitClose()}function iw(t,e){this[re].emit("message",t,e)}function aw(t){let e=this[re];e._autoPong&&e.pong(t,!this._isServer,Fl),e.emit("ping",t)}function cw(t){this[re].emit("pong",t)}function Wl(t){t.resume()}function lw(t){let e=this[re];e.readyState!==J.CLOSED&&(e.readyState===J.OPEN&&(e._readyState=J.CLOSING,Kl(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Kl(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function zl(){let t=this[re];if(this.removeListener("close",zl),this.removeListener("data",wr),this.removeListener("end",Jl),t._readyState=J.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[re]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Gl),t._receiver.on("finish",Gl))}function wr(t){this[re]._receiver.write(t)||this.pause()}function Jl(){let t=this[re];t._readyState=J.CLOSING,t._receiver.end(),this.end()}function Hl(){let t=this[re];this.removeListener("error",Hl),this.on("error",Fl),t&&(t._readyState=J.CLOSING,this.destroy())}});var tu=k((y0,eu)=>{"use strict";var g0=br(),{Duplex:uw}=require("stream");function Xl(t){t.emit("close")}function dw(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ql(t){this.removeListener("error",Ql),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function fw(t,e){let s=!0,r=new uw({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o,i){let a=!i&&r._readableState.objectMode?o.toString():o;r.push(a)||t.pause()}),t.once("error",function(o){r.destroyed||(s=!1,r.destroy(o))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(n,o){if(t.readyState===t.CLOSED){o(n),process.nextTick(Xl,r);return}let i=!1;t.once("error",function(c){i=!0,o(c)}),t.once("close",function(){i||o(n),process.nextTick(Xl,r)}),s&&t.terminate()},r._final=function(n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(n)});return}t._socket!==null&&(t._socket._writableState.finished?(n(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){n()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(n,o,i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(n,o,i)});return}t.send(n,i)},r.on("end",dw),r.on("error",Ql),r}eu.exports=fw});var uo=k((_0,su)=>{"use strict";var{tokenChars:pw}=Ht();function mw(t){let e=new Set,s=-1,r=-1,n=0;for(n;n<t.length;n++){let i=t.charCodeAt(n);if(r===-1&&pw[i]===1)s===-1&&(s=n);else if(n!==0&&(i===32||i===9))r===-1&&s!==-1&&(r=n);else if(i===44){if(s===-1)throw new SyntaxError(`Unexpected character at index ${n}`);r===-1&&(r=n);let a=t.slice(s,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),s=r=-1}else throw new SyntaxError(`Unexpected character at index ${n}`)}if(s===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let o=t.slice(s,n);if(e.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return e.add(o),e}su.exports={parse:mw}});var lu=k((b0,cu)=>{"use strict";var hw=require("events"),kr=require("http"),{Duplex:w0}=require("stream"),{createHash:gw}=require("crypto"),ru=gr(),$t=Jt(),yw=uo(),_w=br(),{CLOSE_TIMEOUT:ww,GUID:bw,kWebSocket:kw}=Be(),xw=/^[+/0-9A-Za-z]{22}==$/,nu=0,ou=1,au=2,fo=class extends hw{constructor(e,s){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:1024*1024,maxFragments:128*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:ww,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:_w,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=kr.createServer((r,n)=>{let o=kr.STATUS_CODES[426];n.writeHead(426,{"Content-Length":o.length,"Content-Type":"text/plain"}),n.end(o)}),this._server.listen(e.port,e.host,e.backlog,s)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Sw(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(n,o,i)=>{this.handleUpgrade(n,o,i,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=nu}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===au){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Ss,this);return}if(e&&this.once("close",e),this._state!==ou)if(this._state=ou,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Ss,this):process.nextTick(Ss,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{Ss(this)})}}shouldHandle(e){if(this.options.path){let s=e.url.indexOf("?");if((s!==-1?e.url.slice(0,s):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,s,r,n){s.on("error",iu);let o=e.headers["sec-websocket-key"],i=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Tt(this,e,s,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Tt(this,e,s,400,"Invalid Upgrade header");return}if(o===void 0||!xw.test(o)){Tt(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Tt(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Is(s,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=yw.parse(c)}catch{Tt(this,e,s,400,"Invalid Sec-WebSocket-Protocol header");return}let u=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let m=new $t({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let h=ru.parse(u);h[$t.extensionName]&&(m.accept(h[$t.extensionName]),d[$t.extensionName]=m)}catch{Tt(this,e,s,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let m={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(m,(h,g,_,w)=>{if(!h)return Is(s,g||401,_,w);this.completeUpgrade(d,o,l,e,s,r,n)});return}if(!this.options.verifyClient(m))return Is(s,401)}this.completeUpgrade(d,o,l,e,s,r,n)}completeUpgrade(e,s,r,n,o,i,a){if(!o.readable||!o.writable)return o.destroy();if(o[kw])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>nu)return Is(o,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${gw("sha1").update(s+bw).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(r.size){let d=this.options.handleProtocols?this.options.handleProtocols(r,n):r.values().next().value;d&&(l.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(e[$t.extensionName]){let d=e[$t.extensionName].params,m=ru.format({[$t.extensionName]:[d]});l.push(`Sec-WebSocket-Extensions: ${m}`),u._extensions=e}this.emit("headers",l,n),o.write(l.concat(`\r
493
+ `}function Ny(t,e){let s=e.project_id||"",r=e.project_resources||[];if(!s&&!r.length)return;let n=ne.join(t,".multica","project");Q.mkdirSync(n,{recursive:!0});let o={project_id:s,project_title:e.project_title||"",resources:r.length?r:[]},i=ne.join(n,"resources.json");Q.existsSync(i)||Q.writeFileSync(i,JSON.stringify(o,null,2),"utf8")}function qy(t){if(!t.gcEnabled)return;let e=t.workspacesRoot;if(!Q.existsSync(e))return;let s=Date.now(),r;try{r=Q.readdirSync(e)}catch{return}for(let n of r){if(n===".repos")continue;let o=ne.join(e,n),i;try{i=Q.readdirSync(o)}catch{continue}for(let a of i){let c=ne.join(o,a),l=ne.join(c,".gc_meta.json");try{let u=JSON.parse(Q.readFileSync(l,"utf8"));u.completed_at&&s-u.completed_at>t.gcTtl&&Q.rmSync(c,{recursive:!0,force:!0})}catch{}}}}function jy(t,{status:e,taskId:s}){try{Q.writeFileSync(ne.join(t,".gc_meta.json"),JSON.stringify({task_id:s,status:e,completed_at:Date.now()}),"utf8")}catch{}}function My(t,e){if(!e.keepEnvAfterTask)try{Q.rmSync(t,{recursive:!0,force:!0})}catch{}}el.exports={taskPaths:xy,prepareWorkdir:Sy,writeSkillFiles:Iy,writeIssueContext:Dy,writeProjectResources:Ny,runGc:qy,writeGcMeta:jy,cleanupWorkdir:My}});var nl=k((o0,rl)=>{var{spawn:Gy}=require("child_process"),{injectRuntimeConfig:By,cleanupRuntimeConfig:tl}=Wc(),{buildPrompt:Fy}=Xc(),{taskPaths:Zy,prepareWorkdir:Vy,writeSkillFiles:Wy,writeIssueContext:Ky,writeProjectResources:zy,writeGcMeta:sl,cleanupWorkdir:Jy}=Wn(),Hy=new Set(["HOME","PATH","USER","SHELL","CODEX_HOME"]);async function Yy(t,e,s,r,n=0){let{rootDir:o,workDir:i}=Zy(t,s),a=s.id?s.id.slice(0,8):"?",c=s.issue_id||s.issueId||"",l=s.agent_id||s.agentId||"",u=s.agent?.name||"";r(`[task ${a}] start slot=${n} issue=${c} agent=${l}(${u})`),r(`[task ${a}] workDir=${i}`);try{await e.taskStart(s.id),r(`[task ${a}] taskStart OK`)}catch(q){r(`[task ${a}] taskStart failed: ${q.message}`)}try{Vy(i),Wy(i,s),Ky(i,s),zy(i,s),By(i,s),r(`[task ${a}] workdir prepared`)}catch(q){r(`[task ${a}] workdir prep failed: ${q.message}`),await Kn(e,s.id,`workdir preparation failed: ${q.message}`);return}let d=Fy(s);r(`[task ${a}] prompt length=${d.length} chars`);let p=s.auth_token||t.token||"",h=Xy(t,s,p,n),{cmd:g,args:_}=Qy(t,s),b=s.agent?.provider||"claude";r(`[task ${a}] spawn provider=${b} cmd=${g} args=${_.join(" ")}`);let x=new AbortController,P=x.signal;s_(e,s.id,a,P,r);let V=null,D=null,N=[],W={seq:0,pendingText:"",pendingThinking:"",callIdToTool:{},sessionId:null,finalOutput:""};try{V=await e_({cmd:g,args:_,cwd:i,env:h,prompt:d,taskId:s.id,cancelSignal:P},{onLine:(q,re)=>{let be=t_(q,W,ge=>{if(ge.type==="tool_use"){let qe=JSON.stringify(ge.input||{}).slice(0,200);r(`[task ${a}] tool_use tool=${ge.tool} input=${qe}`)}else if(ge.type==="tool_result"){let qe=(ge.output||"").slice(0,120).replace(/\n/g,"\\n");r(`[task ${a}] tool_result tool=${ge.tool} output=${qe}`)}else if(ge.type==="result"){let qe=(ge.content||"").slice(0,200).replace(/\n/g,"\\n");r(`[task ${a}] result output=${qe}`)}});if(W.sessionId&&!D&&(D=W.sessionId,r(`[task ${a}] session pinned sessionId=${D}`),e.taskSession(s.id,{sessionId:D,workDir:i}).catch(()=>{})),!be)return;let nt=Array.isArray(be)?be:[be];if(N.push(...nt),N.length>=20){let ge=N.splice(0);e.taskMessages(s.id,ge).catch(()=>{})}},agentTimeout:t.agentTimeout,log:r}),r(`[task ${a}] agent exited exitCode=${V}`)}catch(q){r(`[task ${a}] agent error: ${q.message}`),x.abort(),tl(i),sl(o,{status:"failed",taskId:s.id}),await Kn(e,s.id,q.message,D,i);return}x.abort();let B=pr(W);B.length&&N.push(...B),N.length>0&&(r(`[task ${a}] flushing ${N.length} remaining message(s)`),await e.taskMessages(s.id,N).catch(()=>{})),tl(i),sl(o,{status:V===0?"completed":"failed",taskId:s.id}),Jy(o,t),V===0?(r(`[task ${a}] complete output_len=${W.finalOutput.length}`),await e.taskComplete(s.id,{output:W.finalOutput,sessionId:D,workDir:i}).then(q=>r(`[task ${a}] taskComplete reported status=${q?.status??"ok"}`)).catch(q=>r(`[task ${a}] taskComplete report failed: ${q.message}`))):(r(`[task ${a}] failed (exit ${V})`),await Kn(e,s.id,`agent exited with code ${V}`,D,i))}function Xy(t,e,s,r){let n=Object.assign({},process.env);n.MULTICA_TOKEN=s,n.MULTICA_SERVER_URL=t.serverUrl,n.MULTICA_DAEMON_PORT=String(t.healthPort||19514),n.MULTICA_WORKSPACE_ID=e.workspace_id||"",n.MULTICA_AGENT_NAME=e.agent?.name||"",n.MULTICA_AGENT_ID=e.agent_id||e.agent?.id||"",n.MULTICA_TASK_ID=e.id,n.MULTICA_TASK_SLOT=String(r),e.autopilot_run_id&&(n.MULTICA_AUTOPILOT_RUN_ID=e.autopilot_run_id);let o=require("path").dirname(require("path").resolve(process.argv[1]));o&&!n.PATH.startsWith(o)&&(n.PATH=`${o}:${n.PATH}`);let i=e.agent?.custom_env||{};for(let[a,c]of Object.entries(i))a.startsWith("MULTICA_")||Hy.has(a)||(n[a]=c);return e.agent?.model&&(n.ANTHROPIC_MODEL=e.agent.model),e.quick_create_prompt&&(n.MULTICA_QUICK_CREATE_TASK_ID=e.id||""),n}function Qy(t,e){return(e.agent?.provider||"claude")==="codex"?{cmd:t.codexPath,args:["agent","codex"]}:{cmd:t.claudePath,args:["agent","claude","-p","--output-format","stream-json","--input-format","stream-json","--verbose","--strict-mcp-config","--permission-mode","bypassPermissions","--disallowedTools","AskUserQuestion"]}}function e_({cmd:t,args:e,cwd:s,env:r,prompt:n,taskId:o,agentTimeout:i,cancelSignal:a},{onLine:c,log:l}){return new Promise((u,d)=>{let p=Gy(t,e,{cwd:s,env:r,stdio:["pipe","pipe","pipe"]}),h=null;i>0&&(h=setTimeout(()=>{l(`[task ${o}] agent timeout after ${i}ms`),p.kill("SIGTERM"),setTimeout(()=>p.kill("SIGKILL"),5e3)},i));let g=()=>{l(`[task ${o}] cancelled server-side, interrupting agent`),p.kill("SIGTERM"),setTimeout(()=>{try{p.kill("SIGKILL")}catch{}},5e3)};a&&a.addEventListener("abort",g,{once:!0});let _="";p.stdout.on("data",x=>{_+=x.toString();let P=_.split(`
494
+ `);_=P.pop();for(let V of P)V.trim()&&c(V)}),p.stderr.on("data",x=>{let P=x.toString();if(!P.trim())return;let V=P.trimEnd().split(`
495
+ `),D=V.slice(0,3).join(`
496
+ `),N=V.length>3?` ... (${V.length-3} more lines)`:"";l(`[task ${o}] stderr: ${D}${N}`)}),p.on("error",x=>{h&&clearTimeout(h),a&&a.removeEventListener("abort",g),d(x)}),p.on("close",x=>{h&&clearTimeout(h),a&&a.removeEventListener("abort",g),_.trim()&&c(_),u(x||0)});let b=JSON.stringify({type:"user",message:{role:"user",content:[{type:"text",text:n}]}})+`
497
+ `;p.stdin.write(b),p.stdin.end()})}function t_(t,e,s){let r;try{r=JSON.parse(t)}catch{return null}if(!r||typeof r!="object")return null;let n=r.type;if(n==="system"&&r.session_id&&!e.sessionId&&(e.sessionId=r.session_id),n==="assistant"){let o=r.message||{},i=Array.isArray(o.content)?o.content:[];for(let a of i)if(a.type==="text"&&a.text)e.pendingText+=a.text;else if(a.type==="thinking"&&a.thinking)e.pendingThinking+=a.thinking;else if(a.type==="tool_use"){let c=pr(e),l=++e.seq;return c.push({seq:l,type:"tool_use",tool:a.name||"",input:a.input||{}}),a.id&&(e.callIdToTool[a.id]=a.name||""),s&&s({type:"tool_use",tool:a.name||"",input:a.input||{}}),c.length?c:null}return null}if(n==="tool_result"){let o=pr(e),i=++e.seq,a="",c=r.content;typeof c=="string"?a=c:Array.isArray(c)&&(a=c.map(u=>u.text||u.content||"").join("")),a.length>8192&&(a=a.slice(0,8192));let l=r.tool_name||(r.tool_use_id?e.callIdToTool[r.tool_use_id]:"")||"";return o.push({seq:i,type:"tool_result",tool:l,output:a}),s&&s({type:"tool_result",tool:l,output:a}),o.length?o:null}if(n==="result"){let o=pr(e),i=++e.seq,a=r.result||r.content||"";return a&&(o.push({seq:i,type:"text",content:a}),e.finalOutput=a),s&&s({type:"result",content:a}),o.length?o:null}return null}function pr(t){let e=[];return t.pendingThinking&&(e.push({seq:++t.seq,type:"thinking",content:t.pendingThinking}),t.pendingThinking=""),t.pendingText&&(e.push({seq:++t.seq,type:"text",content:t.pendingText}),t.pendingText=""),e}async function Kn(t,e,s,r,n){try{await t.taskFail(e,{error:s,sessionId:r,workDir:n})}catch(o){}}function s_(t,e,s,r,n){let o=new Set(["completed","failed","cancelled"]),i=5e3,a=async()=>{if(!r.aborted){try{let l=(await t.taskStatus(e))?.status||"";if(o.has(l)){n(`[task ${s}] server status=${l}, interrupting agent`),r.dispatchEvent(new Event("abort"));return}}catch(c){if(c.isTaskNotFound){n(`[task ${s}] task gone server-side, interrupting agent`),r.dispatchEvent(new Event("abort"));return}}r.aborted||setTimeout(a,i)}};setTimeout(a,i)}rl.exports={runTask:Yy}});var il=k((i0,ol)=>{var{runTask:r_}=nl(),zn=class{constructor(e,s,r,n){this.cfg=e,this.client=s,this.runtimeId=r,this.log=n,this._running=!1,this._taskCount=0,this._slotCounter=0,this._wakeupResolve=null}get activeTaskCount(){return this._taskCount}start(e){this._running=!0,this._loop(e)}wakeup(){this._wakeupResolve&&(this._wakeupResolve(),this._wakeupResolve=null)}async _loop(e){for(this.log(`[poller ${this.runtimeId.slice(0,8)}] started`);this._running&&(!e||!e.aborted);){try{if(this._taskCount>=this.cfg.maxConcurrentTasks){this.log(`[poller ${this.runtimeId.slice(0,8)}] at capacity (${this._taskCount}/${this.cfg.maxConcurrentTasks}), sleeping`),await this._sleep(e);continue}this.log(`[poller ${this.runtimeId.slice(0,8)}] claiming task (active=${this._taskCount})`);let s=await this.client.claimTask(this.runtimeId);if(s){let r=this._slotCounter++;this._taskCount++;let n=s.id?s.id.slice(0,8):"?",o=s.issue_id||s.issueId||"";this.log(`[poller ${this.runtimeId.slice(0,8)}] claimed task=${n} issue=${o} slot=${r} (active=${this._taskCount})`),this._runTask(s,r).finally(()=>{this._taskCount--,this.log(`[poller ${this.runtimeId.slice(0,8)}] task=${n} finished (active=${this._taskCount})`)});continue}else this.log(`[poller ${this.runtimeId.slice(0,8)}] no task available`)}catch(s){this.log(`[poller ${this.runtimeId.slice(0,8)}] claim error: ${s.message}`)}await this._sleep(e)}this.log(`[poller ${this.runtimeId.slice(0,8)}] stopped`)}_sleep(e){return new Promise(s=>{this._wakeupResolve=s;let r=n_(this.cfg.pollInterval||3e4),n=setTimeout(()=>{this._wakeupResolve=null,s()},r),o=()=>{clearTimeout(n),this._wakeupResolve=null,s()};e&&e.addEventListener("abort",o,{once:!0})})}async _runTask(e,s){try{await r_(this.cfg,this.client,e,this.log,s)}catch(r){this.log(`[poller ${this.runtimeId.slice(0,8)}] task ${e.id} uncaught: ${r.message}`)}}stop(){this._running=!1,this.wakeup()}};function n_(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}ol.exports={Poller:zn}});var cl=k((a0,al)=>{var o_=require("https"),i_=require("http"),{URL:a_}=require("url"),c_={claude:[{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",provider:"anthropic",default:!0},{id:"claude-opus-4-8",label:"Claude Opus 4.8",provider:"anthropic"},{id:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",provider:"anthropic"}],codex:[{id:"gpt-5.5",label:"GPT-5.5",provider:"openai",default:!0},{id:"o3",label:"o3",provider:"openai"}]};async function l_(t,e){let s=(t||"https://api.makecoder.com/v1").replace(/\/+$/,""),r=new a_(`${s}/claudeproxy/v1/models`),n=r.protocol==="http:"?i_:o_;return new Promise(o=>{let i={"Content-Type":"application/json"};e&&(i.Authorization=`Bearer ${e}`);let a=n.request({hostname:r.hostname,port:r.port||(r.protocol==="http:"?80:443),path:r.pathname+r.search,method:"GET",headers:i,timeout:5e3},c=>{let l="";c.on("data",u=>l+=u),c.on("end",()=>{try{let u=JSON.parse(l);if(u.code===0&&Array.isArray(u.data?.models)){let d=u.data.models.filter(p=>p.id).sort((p,h)=>p.id.localeCompare(h.id)).map((p,h)=>({id:p.id,label:p.name??p.id,provider:p.provider||"anthropic",...h===0?{default:!0}:{}}));o(d)}else o(null)}catch{o(null)}})});a.on("error",()=>o(null)),a.on("timeout",()=>{a.destroy(),o(null)}),a.end()})}async function u_(t,e,s,r,n,o){n(`[model-list] runtime=${e} request=${s} provider=${r}`);let i=null;if(r==="claude"&&(i=await l_(o||t.serverUrl,t.token),n(i?`[model-list] fetched ${i.length} models from API`:"[model-list] API unavailable, using fallback list")),i||(i=c_[r]||null),!i){await t.reportModelListResult(e,s,{status:"failed",error:`no model catalog for provider "${r}"`});return}try{await t.reportModelListResult(e,s,{status:"completed",models:i,supported:!0}),n(`[model-list] reported ${i.length} models for runtime=${e}`)}catch(a){n(`[model-list] report failed: ${a.message}`)}}al.exports={handleModelList:u_}});var dl=k((c0,ul)=>{var{handleModelList:d_}=cl(),Jn=class{constructor(e,s,r,n,o,i){this.cfg=e,this.client=s,this.getRuntimeIds=r,this.log=n,this.onRuntimeGone=o,this.getRuntimeProvider=i||(()=>"claude"),this._timer=null,this._beatCount=0}start(e){let s=this.cfg.heartbeatInterval||15e3,r=async()=>{if(e&&e.aborted)return;let n=this.getRuntimeIds();this._beatCount++;for(let o of n)try{let i=await this.client.heartbeat(o);if(i&&i.runtime_gone?(this.log(`[heartbeat] runtime ${o} gone, re-registering`),this.onRuntimeGone&&this.onRuntimeGone(o)):this._beatCount%10===0&&this.log(`[heartbeat] ok runtime=${o.slice(0,8)} count=${this._beatCount}`),i&&i.pending_model_list){let a=this.getRuntimeProvider(o);this.log(`[heartbeat] pending_model_list runtime=${o.slice(0,8)} requestId=${i.pending_model_list.id}`),d_(this.client,o,i.pending_model_list.id,a,this.log,this.cfg.coderBaseUrl).catch(c=>this.log(`[heartbeat] model-list error: ${c.message}`))}}catch(i){this.log(`[heartbeat] error for ${o}: ${i.message}`)}(!e||!e.aborted)&&(this._timer=setTimeout(r,ll(s)))};this._timer=setTimeout(r,ll(s))}stop(){this._timer&&(clearTimeout(this._timer),this._timer=null)}};function ll(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}ul.exports={Heartbeat:Jn}});var Ve=k((l0,ml)=>{"use strict";var pl=["nodebuffer","arraybuffer","fragments"],fl=typeof Blob<"u";fl&&pl.push("blob");ml.exports={BINARY_TYPES:pl,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:fl,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var xs=k((u0,fr)=>{"use strict";var{EMPTY_BUFFER:p_}=Ve(),Hn=Buffer[Symbol.species];function f_(t,e){if(t.length===0)return p_;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let n=0;n<t.length;n++){let o=t[n];s.set(o,r),r+=o.length}return r<e?new Hn(s.buffer,s.byteOffset,r):s}function hl(t,e,s,r,n){for(let o=0;o<n;o++)s[r+o]=t[o]^e[o&3]}function gl(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function m_(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Yn(t){if(Yn.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Hn(t):ArrayBuffer.isView(t)?e=new Hn(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Yn.readOnly=!1),e}fr.exports={concat:f_,mask:hl,toArrayBuffer:m_,toBuffer:Yn,unmask:gl};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");fr.exports.mask=function(e,s,r,n,o){o<48?hl(e,s,r,n,o):t.mask(e,s,r,n,o)},fr.exports.unmask=function(e,s){e.length<32?gl(e,s):t.unmask(e,s)}}catch{}});var wl=k((d0,_l)=>{"use strict";var yl=Symbol("kDone"),Xn=Symbol("kRun"),Qn=class{constructor(e){this[yl]=()=>{this.pending--,this[Xn]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Xn]()}[Xn](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[yl])}}};_l.exports=Qn});var Qt=k((p0,Sl)=>{"use strict";var Ss=require("zlib"),bl=xs(),h_=wl(),{kStatusCode:kl}=Ve(),g_=Buffer[Symbol.species],y_=Buffer.from([0,0,255,255]),hr=Symbol("permessage-deflate"),We=Symbol("total-length"),Yt=Symbol("callback"),st=Symbol("buffers"),Xt=Symbol("error"),mr,eo=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!mr){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;mr=new h_(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Yt];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let s=this._options,r=e.find(n=>!(s.serverNoContextTakeover===!1&&n.server_no_context_takeover||n.server_max_window_bits&&(s.serverMaxWindowBits===!1||typeof s.serverMaxWindowBits=="number"&&s.serverMaxWindowBits>n.server_max_window_bits)||typeof s.clientMaxWindowBits=="number"&&!n.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return s.serverNoContextTakeover&&(r.server_no_context_takeover=!0),s.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof s.serverMaxWindowBits=="number"&&(r.server_max_window_bits=s.serverMaxWindowBits),typeof s.clientMaxWindowBits=="number"?r.client_max_window_bits=s.clientMaxWindowBits:(r.client_max_window_bits===!0||s.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let s=e[0];if(this._options.clientNoContextTakeover===!1&&s.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!s.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(s.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&s.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return s}normalizeParams(e){return e.forEach(s=>{Object.keys(s).forEach(r=>{let n=s[r];if(n.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(n=n[0],r==="client_max_window_bits"){if(n!==!0){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else if(r==="server_max_window_bits"){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(n!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else throw new Error(`Unknown parameter "${r}"`);s[r]=n})}),e}decompress(e,s,r){mr.add(n=>{this._decompress(e,s,(o,i)=>{n(),r(o,i)})})}compress(e,s,r){mr.add(n=>{this._compress(e,s,(o,i)=>{n(),r(o,i)})})}_decompress(e,s,r){let n=this._isServer?"client":"server";if(!this._inflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?Ss.Z_DEFAULT_WINDOWBITS:this.params[o];this._inflate=Ss.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[hr]=this,this._inflate[We]=0,this._inflate[st]=[],this._inflate.on("error",w_),this._inflate.on("data",xl)}this._inflate[Yt]=r,this._inflate.write(e),s&&this._inflate.write(y_),this._inflate.flush(()=>{let o=this._inflate[Xt];if(o){this._inflate.close(),this._inflate=null,r(o);return}let i=bl.concat(this._inflate[st],this._inflate[We]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[We]=0,this._inflate[st]=[],s&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(e,s,r){let n=this._isServer?"server":"client";if(!this._deflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?Ss.Z_DEFAULT_WINDOWBITS:this.params[o];this._deflate=Ss.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[We]=0,this._deflate[st]=[],this._deflate.on("data",__)}this._deflate[Yt]=r,this._deflate.write(e),this._deflate.flush(Ss.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let o=bl.concat(this._deflate[st],this._deflate[We]);s&&(o=new g_(o.buffer,o.byteOffset,o.length-4)),this._deflate[Yt]=null,this._deflate[We]=0,this._deflate[st]=[],s&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,o)})}};Sl.exports=eo;function __(t){this[st].push(t),this[We]+=t.length}function xl(t){if(this[We]+=t.length,this[hr]._maxPayload<1||this[We]<=this[hr]._maxPayload){this[st].push(t);return}this[Xt]=new RangeError("Max payload size exceeded"),this[Xt].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Xt][kl]=1009,this.removeListener("data",xl),this.reset()}function w_(t){if(this[hr]._inflate=null,this[Xt]){this[Yt](this[Xt]);return}t[kl]=1007,this[Yt](t)}});var es=k((f0,gr)=>{"use strict";var{isUtf8:Il}=require("buffer"),{hasBlob:b_}=Ve(),k_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function x_(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function to(t){let e=t.length,s=0;for(;s<e;)if((t[s]&128)===0)s++;else if((t[s]&224)===192){if(s+1===e||(t[s+1]&192)!==128||(t[s]&254)===192)return!1;s+=2}else if((t[s]&240)===224){if(s+2>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||t[s]===224&&(t[s+1]&224)===128||t[s]===237&&(t[s+1]&224)===160)return!1;s+=3}else if((t[s]&248)===240){if(s+3>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||(t[s+3]&192)!==128||t[s]===240&&(t[s+1]&240)===128||t[s]===244&&t[s+1]>143||t[s]>244)return!1;s+=4}else return!1;return!0}function S_(t){return b_&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}gr.exports={isBlob:S_,isValidStatusCode:x_,isValidUTF8:to,tokenChars:k_};if(Il)gr.exports.isValidUTF8=function(t){return t.length<24?to(t):Il(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");gr.exports.isValidUTF8=function(e){return e.length<32?to(e):t(e)}}catch{}});var io=k((m0,vl)=>{"use strict";var{Writable:I_}=require("stream"),Cl=Qt(),{BINARY_TYPES:C_,EMPTY_BUFFER:El,kStatusCode:E_,kWebSocket:A_}=Ve(),{concat:so,toArrayBuffer:$_,unmask:T_}=xs(),{isValidStatusCode:U_,isValidUTF8:Al}=es(),yr=Buffer[Symbol.species],Ie=0,$l=1,Tl=2,Ul=3,ro=4,no=5,_r=6,oo=class extends I_{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||C_[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[A_]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=Ie}_write(e,s,r){if(this._opcode===8&&this._state==Ie)return r();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){r(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new yr(r.buffer,r.byteOffset+e,r.length-e),new yr(r.buffer,r.byteOffset,e)}let s=Buffer.allocUnsafe(e);do{let r=this._buffers[0],n=s.length-e;e>=r.length?s.set(this._buffers.shift(),n):(s.set(new Uint8Array(r.buffer,r.byteOffset,e),n),this._buffers[0]=new yr(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return s}startLoop(e){this._loop=!0;do switch(this._state){case Ie:this.getInfo(e);break;case $l:this.getPayloadLength16(e);break;case Tl:this.getPayloadLength64(e);break;case Ul:this.getMask();break;case ro:this.getData(e);break;case no:case _r:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let s=this.consume(2);if((s[0]&48)!==0){let n=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(n);return}let r=(s[0]&64)===64;if(r&&!this._extensions[Cl.extensionName]){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._fin=(s[0]&128)===128,this._opcode=s[0]&15,this._payloadLength=s[1]&127,this._opcode===0){if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(!this._fragmented){let n=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let n=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(n);return}if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let n=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(n);return}}else{let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(s[1]&128)===128,this._isServer){if(!this._masked){let n=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(n);return}}else if(this._masked){let n=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(n);return}this._payloadLength===126?this._state=$l:this._payloadLength===127?this._state=Tl:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let s=this.consume(8),r=s.readUInt32BE(0);if(r>Math.pow(2,21)-1){let n=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(n);return}this._payloadLength=r*Math.pow(2,32)+s.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(s);return}this._masked?this._state=Ul:this._state=ro}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ro}getData(e){let s=El;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}s=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&T_(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=no,this.decompress(s,e);return}if(s.length){if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let r=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");e(r);return}this._messageLength=this._totalPayloadLength,this._fragments.push(s)}this.dataMessage(e)}decompress(e,s){this._extensions[Cl.extensionName].decompress(e,this._fin,(n,o)=>{if(n)return s(n);if(o.length){if(this._messageLength+=o.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(i);return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let i=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");s(i);return}this._fragments.push(o)}this.dataMessage(s),this._state===Ie&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=Ie;return}let s=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=so(r,s):this._binaryType==="arraybuffer"?n=$_(so(r,s)):this._binaryType==="blob"?n=new Blob(r):n=r,this._allowSynchronousEvents?(this.emit("message",n,!0),this._state=Ie):(this._state=_r,setImmediate(()=>{this.emit("message",n,!0),this._state=Ie,this.startLoop(e)}))}else{let n=so(r,s);if(!this._skipUTF8Validation&&!Al(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(o);return}this._state===no||this._allowSynchronousEvents?(this.emit("message",n,!1),this._state=Ie):(this._state=_r,setImmediate(()=>{this.emit("message",n,!1),this._state=Ie,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,El),this.end();else{let r=e.readUInt16BE(0);if(!U_(r)){let o=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(o);return}let n=new yr(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Al(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");s(o);return}this._loop=!1,this.emit("conclude",r,n),this.end()}this._state=Ie;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=Ie):(this._state=_r,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=Ie,this.startLoop(s)}))}createError(e,s,r,n,o){this._loop=!1,this._errored=!0;let i=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(i,this.createError),i.code=o,i[E_]=n,i}};vl.exports=oo});var lo=k((g0,Rl)=>{"use strict";var{Duplex:h0}=require("stream"),{randomFillSync:v_}=require("crypto"),{types:{isUint8Array:O_}}=require("util"),Ol=Qt(),{EMPTY_BUFFER:D_,kWebSocket:R_,NOOP:L_}=Ve(),{isBlob:ts,isValidStatusCode:P_}=es(),{mask:Dl,toBuffer:Tt}=xs(),Ce=Symbol("kByteLength"),N_=Buffer.alloc(4),wr=8*1024,Ut,ss=wr,Te=0,q_=1,j_=2,ao=class t{constructor(e,s,r){this._extensions=s||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=Te,this.onerror=L_,this[R_]=void 0}static frame(e,s){let r,n=!1,o=2,i=!1;s.mask&&(r=s.maskBuffer||N_,s.generateMask?s.generateMask(r):(ss===wr&&(Ut===void 0&&(Ut=Buffer.alloc(wr)),v_(Ut,0,wr),ss=0),r[0]=Ut[ss++],r[1]=Ut[ss++],r[2]=Ut[ss++],r[3]=Ut[ss++]),i=(r[0]|r[1]|r[2]|r[3])===0,o=6);let a;typeof e=="string"?(!s.mask||i)&&s[Ce]!==void 0?a=s[Ce]:(e=Buffer.from(e),a=e.length):(a=e.length,n=s.mask&&s.readOnly&&!i);let c=a;a>=65536?(o+=8,c=127):a>125&&(o+=2,c=126);let l=Buffer.allocUnsafe(n?a+o:o);return l[0]=s.fin?s.opcode|128:s.opcode,s.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(a,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(a,4,6)),s.mask?(l[1]|=128,l[o-4]=r[0],l[o-3]=r[1],l[o-2]=r[2],l[o-1]=r[3],i?[l,e]:n?(Dl(e,r,l,o,a),[l]):(Dl(e,r,e,0,a),[l,e])):[l,e]}close(e,s,r,n){let o;if(e===void 0)o=D_;else{if(typeof e!="number"||!P_(e))throw new TypeError("First argument must be a valid error code number");if(s===void 0||!s.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(e,0);else{let a=Buffer.byteLength(s);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");if(o=Buffer.allocUnsafe(2+a),o.writeUInt16BE(e,0),typeof s=="string")o.write(s,2);else if(O_(s))o.set(s,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let i={[Ce]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==Te?this.enqueue([this.dispatch,o,!1,i,n]):this.sendFrame(t.frame(o,i),n)}ping(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):ts(e)?(n=e.size,o=!1):(e=Tt(e),n=e.length,o=Tt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[Ce]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};ts(e)?this._state!==Te?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==Te?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}pong(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):ts(e)?(n=e.size,o=!1):(e=Tt(e),n=e.length,o=Tt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[Ce]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};ts(e)?this._state!==Te?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==Te?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}send(e,s,r){let n=this._extensions[Ol.extensionName],o=s.binary?2:1,i=s.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):ts(e)?(a=e.size,c=!1):(e=Tt(e),a=e.length,c=Tt.readOnly),this._firstFragment?(this._firstFragment=!1,i&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=n._threshold),this._compress=i):(i=!1,o=0),s.fin&&(this._firstFragment=!0);let l={[Ce]:a,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:c,rsv1:i};ts(e)?this._state!==Te?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==Te?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,s,r,n){this._bufferedBytes+=r[Ce],this._state=j_,e.arrayBuffer().then(o=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(co,this,a,n);return}this._bufferedBytes-=r[Ce];let i=Tt(o);s?this.dispatch(i,s,r,n):(this._state=Te,this.sendFrame(t.frame(i,r),n),this.dequeue())}).catch(o=>{process.nextTick(M_,this,o,n)})}dispatch(e,s,r,n){if(!s){this.sendFrame(t.frame(e,r),n);return}let o=this._extensions[Ol.extensionName];this._bufferedBytes+=r[Ce],this._state=q_,o.compress(e,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");co(this,c,n);return}this._bufferedBytes-=r[Ce],this._state=Te,r.readOnly=!1,this.sendFrame(t.frame(a,r),n),this.dequeue()})}dequeue(){for(;this._state===Te&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][Ce],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Ce],this._queue.push(e)}sendFrame(e,s){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],s),this._socket.uncork()):this._socket.write(e[0],s)}};Rl.exports=ao;function co(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let n=t._queue[r],o=n[n.length-1];typeof o=="function"&&o(e)}}function M_(t,e,s){co(t,e,s),t.onerror(e)}});var Fl=k((y0,Bl)=>{"use strict";var{kForOnEventAttribute:Is,kListener:uo}=Ve(),Ll=Symbol("kCode"),Pl=Symbol("kData"),Nl=Symbol("kError"),ql=Symbol("kMessage"),jl=Symbol("kReason"),rs=Symbol("kTarget"),Ml=Symbol("kType"),Gl=Symbol("kWasClean"),Ke=class{constructor(e){this[rs]=null,this[Ml]=e}get target(){return this[rs]}get type(){return this[Ml]}};Object.defineProperty(Ke.prototype,"target",{enumerable:!0});Object.defineProperty(Ke.prototype,"type",{enumerable:!0});var vt=class extends Ke{constructor(e,s={}){super(e),this[Ll]=s.code===void 0?0:s.code,this[jl]=s.reason===void 0?"":s.reason,this[Gl]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[Ll]}get reason(){return this[jl]}get wasClean(){return this[Gl]}};Object.defineProperty(vt.prototype,"code",{enumerable:!0});Object.defineProperty(vt.prototype,"reason",{enumerable:!0});Object.defineProperty(vt.prototype,"wasClean",{enumerable:!0});var ns=class extends Ke{constructor(e,s={}){super(e),this[Nl]=s.error===void 0?null:s.error,this[ql]=s.message===void 0?"":s.message}get error(){return this[Nl]}get message(){return this[ql]}};Object.defineProperty(ns.prototype,"error",{enumerable:!0});Object.defineProperty(ns.prototype,"message",{enumerable:!0});var Cs=class extends Ke{constructor(e,s={}){super(e),this[Pl]=s.data===void 0?null:s.data}get data(){return this[Pl]}};Object.defineProperty(Cs.prototype,"data",{enumerable:!0});var G_={addEventListener(t,e,s={}){for(let n of this.listeners(t))if(!s[Is]&&n[uo]===e&&!n[Is])return;let r;if(t==="message")r=function(o,i){let a=new Cs("message",{data:i?o:o.toString()});a[rs]=this,br(e,this,a)};else if(t==="close")r=function(o,i){let a=new vt("close",{code:o,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[rs]=this,br(e,this,a)};else if(t==="error")r=function(o){let i=new ns("error",{error:o,message:o.message});i[rs]=this,br(e,this,i)};else if(t==="open")r=function(){let o=new Ke("open");o[rs]=this,br(e,this,o)};else return;r[Is]=!!s[Is],r[uo]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[uo]===e&&!s[Is]){this.removeListener(t,s);break}}};Bl.exports={CloseEvent:vt,ErrorEvent:ns,Event:Ke,EventTarget:G_,MessageEvent:Cs};function br(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var kr=k((_0,Zl)=>{"use strict";var{tokenChars:Es}=es();function Pe(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function B_(t){let e=Object.create(null),s=Object.create(null),r=!1,n=!1,o=!1,i,a,c=-1,l=-1,u=-1,d=0;for(;d<t.length;d++)if(l=t.charCodeAt(d),i===void 0)if(u===-1&&Es[l]===1)c===-1&&(c=d);else if(d!==0&&(l===32||l===9))u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(c,u);l===44?(Pe(e,h,s),s=Object.create(null)):i=h,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&Es[l]===1)c===-1&&(c=d);else if(l===32||l===9)u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Pe(s,t.slice(c,u),!0),l===44&&(Pe(e,i,s),s=Object.create(null),i=void 0),c=u=-1}else if(l===61&&c!==-1&&u===-1)a=t.slice(c,d),c=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(n){if(Es[l]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:r||(r=!0),n=!1}else if(o)if(Es[l]===1)c===-1&&(c=d);else if(l===34&&c!==-1)o=!1,u=d;else if(l===92)n=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(l===34&&t.charCodeAt(d-1)===61)o=!0;else if(u===-1&&Es[l]===1)c===-1&&(c=d);else if(c!==-1&&(l===32||l===9))u===-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(c,u);r&&(h=h.replace(/\\/g,""),r=!1),Pe(s,a,h),l===44&&(Pe(e,i,s),s=Object.create(null),i=void 0),a=void 0,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||o||l===32||l===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let p=t.slice(c,u);return i===void 0?Pe(e,p,s):(a===void 0?Pe(s,p,!0):r?Pe(s,a,p.replace(/\\/g,"")):Pe(s,a,p),Pe(e,i,s)),e}function F_(t){return Object.keys(t).map(e=>{let s=t[e];return Array.isArray(s)||(s=[s]),s.map(r=>[e].concat(Object.keys(r).map(n=>{let o=r[n];return Array.isArray(o)||(o=[o]),o.map(i=>i===!0?n:`${n}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Zl.exports={format:F_,parse:B_}});var Cr=k((k0,su)=>{"use strict";var Z_=require("events"),V_=require("https"),W_=require("http"),Kl=require("net"),K_=require("tls"),{randomBytes:z_,createHash:J_}=require("crypto"),{Duplex:w0,Readable:b0}=require("stream"),{URL:po}=require("url"),rt=Qt(),H_=io(),Y_=lo(),{isBlob:X_}=es(),{BINARY_TYPES:Vl,CLOSE_TIMEOUT:Q_,EMPTY_BUFFER:xr,GUID:ew,kForOnEventAttribute:fo,kListener:tw,kStatusCode:sw,kWebSocket:oe,NOOP:zl}=Ve(),{EventTarget:{addEventListener:rw,removeEventListener:nw}}=Fl(),{format:ow,parse:iw}=kr(),{toBuffer:aw}=xs(),Jl=Symbol("kAborted"),mo=[8,13],ze=["CONNECTING","OPEN","CLOSING","CLOSED"],cw=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Y=class t extends Z_{constructor(e,s,r){super(),this._binaryType=Vl[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=xr,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,s===void 0?s=[]:Array.isArray(s)||(typeof s=="object"&&s!==null?(r=s,s=[]):s=[s]),Hl(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Vl.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,s,r){let n=new H_({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new Y_(e,this._extensions,r.generateMask);this._receiver=n,this._sender=o,this._socket=e,n[oe]=this,o[oe]=this,e[oe]=this,n.on("conclude",dw),n.on("drain",pw),n.on("error",fw),n.on("message",mw),n.on("ping",hw),n.on("pong",gw),o.onerror=yw,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",Ql),e.on("data",Ir),e.on("end",eu),e.on("error",tu),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[rt.extensionName]&&this._extensions[rt.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,s){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){_e(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,s,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Xl(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){ho(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||xr,s,r)}pong(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){ho(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||xr,s,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof s=="function"&&(r=s,s={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){ho(this,e,r);return}let n={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[rt.extensionName]||(n.compress=!1),this._sender.send(e||xr,n,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){_e(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(Y,"CONNECTING",{enumerable:!0,value:ze.indexOf("CONNECTING")});Object.defineProperty(Y.prototype,"CONNECTING",{enumerable:!0,value:ze.indexOf("CONNECTING")});Object.defineProperty(Y,"OPEN",{enumerable:!0,value:ze.indexOf("OPEN")});Object.defineProperty(Y.prototype,"OPEN",{enumerable:!0,value:ze.indexOf("OPEN")});Object.defineProperty(Y,"CLOSING",{enumerable:!0,value:ze.indexOf("CLOSING")});Object.defineProperty(Y.prototype,"CLOSING",{enumerable:!0,value:ze.indexOf("CLOSING")});Object.defineProperty(Y,"CLOSED",{enumerable:!0,value:ze.indexOf("CLOSED")});Object.defineProperty(Y.prototype,"CLOSED",{enumerable:!0,value:ze.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Y.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Y.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[fo])return e[tw];return null},set(e){for(let s of this.listeners(t))if(s[fo]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[fo]:!0})}})});Y.prototype.addEventListener=rw;Y.prototype.removeEventListener=nw;su.exports=Y;function Hl(t,e,s,r){let n={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Q_,protocolVersion:mo[1],maxBufferedChunks:1048576,maxFragments:131072,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=n.autoPong,t._closeTimeout=n.closeTimeout,!mo.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${mo.join(", ")})`);let o;if(e instanceof po)o=e;else try{o=new po(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),t._url=o.href;let i=o.protocol==="wss:",a=o.protocol==="ws+unix:",c;if(o.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!o.pathname?c="The URL's pathname is empty":o.hash&&(c="The URL contains a fragment identifier"),c){let _=new SyntaxError(c);if(t._redirects===0)throw _;Sr(t,_);return}let l=i?443:80,u=z_(16).toString("base64"),d=i?V_.request:W_.request,p=new Set,h;if(n.createConnection=n.createConnection||(i?uw:lw),n.defaultPort=n.defaultPort||l,n.port=o.port||l,n.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},n.path=o.pathname+o.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(h=new rt({...n.perMessageDeflate,isServer:!1,maxPayload:n.maxPayload}),n.headers["Sec-WebSocket-Extensions"]=ow({[rt.extensionName]:h.offer()})),s.length){for(let _ of s){if(typeof _!="string"||!cw.test(_)||p.has(_))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(_)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(o.username||o.password)&&(n.auth=`${o.username}:${o.password}`),a){let _=n.path.split(":");n.socketPath=_[0],n.path=_[1]}let g;if(n.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=i,t._originalHostOrSocketPath=a?n.socketPath:o.host;let _=r&&r.headers;if(r={...r,headers:{}},_)for(let[b,x]of Object.entries(_))r.headers[b.toLowerCase()]=x}else if(t.listenerCount("redirect")===0){let _=a?t._originalIpc?n.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:o.host===t._originalHostOrSocketPath;(!_||t._originalSecure&&!i)&&(delete n.headers.authorization,delete n.headers.cookie,_||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),g=t._req=d(n),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=d(n);n.timeout&&g.on("timeout",()=>{_e(t,g,"Opening handshake has timed out")}),g.on("error",_=>{g===null||g[Jl]||(g=t._req=null,Sr(t,_))}),g.on("response",_=>{let b=_.headers.location,x=_.statusCode;if(b&&n.followRedirects&&x>=300&&x<400){if(++t._redirects>n.maxRedirects){_e(t,g,"Maximum redirects exceeded");return}g.abort();let P;try{P=new po(b,e)}catch{let D=new SyntaxError(`Invalid URL: ${b}`);Sr(t,D);return}Hl(t,P,s,r)}else t.emit("unexpected-response",g,_)||_e(t,g,`Unexpected server response: ${_.statusCode}`)}),g.on("upgrade",(_,b,x)=>{if(t.emit("upgrade",_),t.readyState!==Y.CONNECTING)return;g=t._req=null;let P=_.headers.upgrade;if(P===void 0||P.toLowerCase()!=="websocket"){_e(t,b,"Invalid Upgrade header");return}let V=J_("sha1").update(u+ew).digest("base64");if(_.headers["sec-websocket-accept"]!==V){_e(t,b,"Invalid Sec-WebSocket-Accept header");return}let D=_.headers["sec-websocket-protocol"],N;if(D!==void 0?p.size?p.has(D)||(N="Server sent an invalid subprotocol"):N="Server sent a subprotocol but none was requested":p.size&&(N="Server sent no subprotocol"),N){_e(t,b,N);return}D&&(t._protocol=D);let W=_.headers["sec-websocket-extensions"];if(W!==void 0){if(!h){_e(t,b,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let B;try{B=iw(W)}catch{_e(t,b,"Invalid Sec-WebSocket-Extensions header");return}let q=Object.keys(B);if(q.length!==1||q[0]!==rt.extensionName){_e(t,b,"Server indicated an extension that was not requested");return}try{h.accept(B[rt.extensionName])}catch{_e(t,b,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[rt.extensionName]=h}t.setSocket(b,x,{allowSynchronousEvents:n.allowSynchronousEvents,generateMask:n.generateMask,maxBufferedChunks:n.maxBufferedChunks,maxFragments:n.maxFragments,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})}),n.finishRequest?n.finishRequest(g,t):g.end()}function Sr(t,e){t._readyState=Y.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function lw(t){return t.path=t.socketPath,Kl.connect(t)}function uw(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Kl.isIP(t.host)?"":t.host),K_.connect(t)}function _e(t,e,s){t._readyState=Y.CLOSING;let r=new Error(s);Error.captureStackTrace(r,_e),e.setHeader?(e[Jl]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Sr,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function ho(t,e,s){if(e){let r=X_(e)?e.size:aw(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${ze[t.readyState]})`);process.nextTick(s,r)}}function dw(t,e){let s=this[oe];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[oe]!==void 0&&(s._socket.removeListener("data",Ir),process.nextTick(Yl,s._socket),t===1005?s.close():s.close(t,e))}function pw(){let t=this[oe];t.isPaused||t._socket.resume()}function fw(t){let e=this[oe];e._socket[oe]!==void 0&&(e._socket.removeListener("data",Ir),process.nextTick(Yl,e._socket),e.close(t[sw])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Wl(){this[oe].emitClose()}function mw(t,e){this[oe].emit("message",t,e)}function hw(t){let e=this[oe];e._autoPong&&e.pong(t,!this._isServer,zl),e.emit("ping",t)}function gw(t){this[oe].emit("pong",t)}function Yl(t){t.resume()}function yw(t){let e=this[oe];e.readyState!==Y.CLOSED&&(e.readyState===Y.OPEN&&(e._readyState=Y.CLOSING,Xl(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Xl(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Ql(){let t=this[oe];if(this.removeListener("close",Ql),this.removeListener("data",Ir),this.removeListener("end",eu),t._readyState=Y.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[oe]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Wl),t._receiver.on("finish",Wl))}function Ir(t){this[oe]._receiver.write(t)||this.pause()}function eu(){let t=this[oe];t._readyState=Y.CLOSING,t._receiver.end(),this.end()}function tu(){let t=this[oe];this.removeListener("error",tu),this.on("error",zl),t&&(t._readyState=Y.CLOSING,this.destroy())}});var iu=k((S0,ou)=>{"use strict";var x0=Cr(),{Duplex:_w}=require("stream");function ru(t){t.emit("close")}function ww(){!this.destroyed&&this._writableState.finished&&this.destroy()}function nu(t){this.removeListener("error",nu),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function bw(t,e){let s=!0,r=new _w({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o,i){let a=!i&&r._readableState.objectMode?o.toString():o;r.push(a)||t.pause()}),t.once("error",function(o){r.destroyed||(s=!1,r.destroy(o))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(n,o){if(t.readyState===t.CLOSED){o(n),process.nextTick(ru,r);return}let i=!1;t.once("error",function(c){i=!0,o(c)}),t.once("close",function(){i||o(n),process.nextTick(ru,r)}),s&&t.terminate()},r._final=function(n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(n)});return}t._socket!==null&&(t._socket._writableState.finished?(n(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){n()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(n,o,i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(n,o,i)});return}t.send(n,i)},r.on("end",ww),r.on("error",nu),r}ou.exports=bw});var go=k((I0,au)=>{"use strict";var{tokenChars:kw}=es();function xw(t){let e=new Set,s=-1,r=-1,n=0;for(n;n<t.length;n++){let i=t.charCodeAt(n);if(r===-1&&kw[i]===1)s===-1&&(s=n);else if(n!==0&&(i===32||i===9))r===-1&&s!==-1&&(r=n);else if(i===44){if(s===-1)throw new SyntaxError(`Unexpected character at index ${n}`);r===-1&&(r=n);let a=t.slice(s,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),s=r=-1}else throw new SyntaxError(`Unexpected character at index ${n}`)}if(s===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let o=t.slice(s,n);if(e.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return e.add(o),e}au.exports={parse:xw}});var mu=k((E0,fu)=>{"use strict";var Sw=require("events"),Er=require("http"),{Duplex:C0}=require("stream"),{createHash:Iw}=require("crypto"),cu=kr(),Ot=Qt(),Cw=go(),Ew=Cr(),{CLOSE_TIMEOUT:Aw,GUID:$w,kWebSocket:Tw}=Ve(),Uw=/^[+/0-9A-Za-z]{22}==$/,lu=0,uu=1,pu=2,yo=class extends Sw{constructor(e,s){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:1024*1024,maxFragments:128*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Aw,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Ew,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=Er.createServer((r,n)=>{let o=Er.STATUS_CODES[426];n.writeHead(426,{"Content-Length":o.length,"Content-Type":"text/plain"}),n.end(o)}),this._server.listen(e.port,e.host,e.backlog,s)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=vw(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(n,o,i)=>{this.handleUpgrade(n,o,i,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=lu}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===pu){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(As,this);return}if(e&&this.once("close",e),this._state!==uu)if(this._state=uu,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(As,this):process.nextTick(As,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{As(this)})}}shouldHandle(e){if(this.options.path){let s=e.url.indexOf("?");if((s!==-1?e.url.slice(0,s):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,s,r,n){s.on("error",du);let o=e.headers["sec-websocket-key"],i=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Dt(this,e,s,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Dt(this,e,s,400,"Invalid Upgrade header");return}if(o===void 0||!Uw.test(o)){Dt(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Dt(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){$s(s,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=Cw.parse(c)}catch{Dt(this,e,s,400,"Invalid Sec-WebSocket-Protocol header");return}let u=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let p=new Ot({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let h=cu.parse(u);h[Ot.extensionName]&&(p.accept(h[Ot.extensionName]),d[Ot.extensionName]=p)}catch{Dt(this,e,s,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(p,(h,g,_,b)=>{if(!h)return $s(s,g||401,_,b);this.completeUpgrade(d,o,l,e,s,r,n)});return}if(!this.options.verifyClient(p))return $s(s,401)}this.completeUpgrade(d,o,l,e,s,r,n)}completeUpgrade(e,s,r,n,o,i,a){if(!o.readable||!o.writable)return o.destroy();if(o[Tw])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>lu)return $s(o,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Iw("sha1").update(s+$w).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(r.size){let d=this.options.handleProtocols?this.options.handleProtocols(r,n):r.values().next().value;d&&(l.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(e[Ot.extensionName]){let d=e[Ot.extensionName].params,p=cu.format({[Ot.extensionName]:[d]});l.push(`Sec-WebSocket-Extensions: ${p}`),u._extensions=e}this.emit("headers",l,n),o.write(l.concat(`\r
496
498
  `).join(`\r
497
- `)),o.removeListener("error",iu),u.setSocket(o,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Ss,this)})),a(u,n)}};cu.exports=fo;function Sw(t,e){for(let s of Object.keys(e))t.on(s,e[s]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function Ss(t){t._state=au,t.emit("close")}function iu(){this.destroy()}function Is(t,e,s,r){s=s||kr.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${kr.STATUS_CODES[e]}\r
499
+ `)),o.removeListener("error",du),u.setSocket(o,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(As,this)})),a(u,n)}};fu.exports=yo;function vw(t,e){for(let s of Object.keys(e))t.on(s,e[s]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function As(t){t._state=pu,t.emit("close")}function du(){this.destroy()}function $s(t,e,s,r){s=s||Er.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${Er.STATUS_CODES[e]}\r
498
500
  `+Object.keys(r).map(n=>`${n}: ${r[n]}`).join(`\r
499
501
  `)+`\r
500
502
  \r
501
- `+s)}function Tt(t,e,s,r,n,o){if(t.listenerCount("wsClientError")){let i=new Error(n);Error.captureStackTrace(i,Tt),t.emit("wsClientError",i,s,e)}else Is(s,r,n,o)}});var fu=k((k0,du)=>{"use strict";var Iw=tu(),Cw=gr(),Ew=Jt(),Aw=to(),$w=no(),Tw=uo(),Ee=br(),uu=lu();Ee.createWebSocketStream=Iw;Ee.extension=Cw;Ee.PerMessageDeflate=Ew;Ee.Receiver=Aw;Ee.Sender=$w;Ee.Server=uu;Ee.subprotocol=Tw;Ee.WebSocket=Ee;Ee.WebSocketServer=uu;du.exports=Ee});var hu=k((I0,mu)=>{var x0=require("https"),S0=require("http"),po=class{constructor(e,s,r,n,o,i){this.cfg=e,this.token=s,this.cliVersion=r||"dev",this.onWakeup=n,this.onHeartbeatAck=o,this.log=i,this._running=!1,this._ws=null,this._backoff=1e3,this._abortSignal=null,this._getRuntimeIds=null}start(e,s){this._running=!0,this._abortSignal=e,this._getRuntimeIds=s,this._loop()}stop(){if(this._running=!1,this._ws){try{this._ws.close()}catch{}this._ws=null}}async _loop(){for(;this._running&&(!this._abortSignal||!this._abortSignal.aborted);){let e=this._getRuntimeIds?this._getRuntimeIds():[];if(e.length===0){await pu(2e3);continue}try{await this._connect(e),this._backoff=1e3}catch(s){if(!this._running)return;this.log(`[wakeup] ws unavailable (${s.message}); polling fallback active, retry in ${this._backoff}ms`)}if(!this._running)return;await pu(Uw(this._backoff)),this._backoff<3e4&&(this._backoff=Math.min(this._backoff*2,3e4))}}_buildWsUrl(e){let r=(this.cfg.serverUrl||"https://flow.makecoder.com").replace(/\/+$/,"").replace(/^https?:\/\//,o=>o==="https://"?"wss://":"ws://"),n=[...e].sort().join(",");return`${r}/api/daemon/ws?runtime_ids=${encodeURIComponent(n)}`}async _connect(e){let s=this._buildWsUrl(e),r;try{r=fu()}catch{throw new Error("ws module not available \u2014 install with: npm install ws")}return new Promise((n,o)=>{let i={Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion},a=new r(s,{headers:i,handshakeTimeout:1e4});this._ws=a;let c=()=>{try{a.close()}catch{}};this._abortSignal&&this._abortSignal.addEventListener("abort",c,{once:!0}),a.on("open",()=>{this.log(`[wakeup] websocket connected (${e.length} runtimes)`),this._backoff=1e3,this.onWakeup("")}),a.on("message",l=>{try{let u=JSON.parse(l.toString());this._handleMessage(u)}catch(u){this.log(`[wakeup] invalid message: ${u.message}`)}}),a.on("error",l=>{this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,o(l)}),a.on("close",(l,u)=>{this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this._running&&this.log(`[wakeup] websocket closed (${l})`),n()})})}_handleMessage(e){let s=e.type;if(s==="daemon:task_available"){let r=e.payload||{},n=r.runtime_id||"",o=r.task_id||"";this.log(`[wakeup] task_available runtimeId=${n} taskId=${o}`),this.onWakeup(n)}else s==="daemon:heartbeat_ack"&&this.onHeartbeatAck&&this.onHeartbeatAck(e.payload||{})}};function pu(t){return new Promise(e=>setTimeout(e,t))}function Uw(t){return Math.max(500,t+(Math.random()-.5)*t*.2)}mu.exports={TaskWakeupLoop:po}});var yu=k((C0,gu)=>{var mo=require("os"),{HealthServer:vw}=ys(),{DaemonClient:Ow}=Pc(),{Poller:Dw}=tl(),{Heartbeat:Rw}=il(),{TaskWakeupLoop:Lw}=hu(),{loadOrCreateDaemonId:Pw}=Wt(),{runGc:Nw}=Gn(),ho=class{constructor(e,s){this.cfg=e,this.log=s||console.error,this._runtimeIds=[],this._runtimeProviders={},this._pollers={},this._heartbeat=null,this._wakeupLoop=null,this._health=null,this._client=null}async run(e){let s=this.cfg,r=e&&typeof e.abort=="function"?e:null,n=r?r.signal:e;this._health=new vw(s.healthPort||19514),this._health.setShutdown(()=>{r?r.abort():process.emit("SIGTERM")}),this._health.start();let o=Pw(s.daemonId);this._health.daemonId=o,this._client=new Ow(s.serverUrl,s.token,s.cliVersion||"dev"),this.log(`[daemon] starting id=${o} server=${s.serverUrl} version=${s.cliVersion||"dev"}`),this.log(`[daemon] config: pollInterval=${s.pollInterval}ms heartbeatInterval=${s.heartbeatInterval}ms maxConcurrentTasks=${s.maxConcurrentTasks}`);let i=[];try{this.log(`[daemon] fetching workspaces from ${s.serverUrl}/api/workspaces`),i=await this._client.getWorkspaces(),this.log(`[daemon] found ${i.length} workspace(s): ${i.map(a=>a.id||a.name).join(", ")||"(none)"}`)}catch(a){this.log(`[daemon] getWorkspaces error: ${a.message}`)}this._health.workspaces=i.map(a=>a.id||a.name||"");for(let a of i)try{this.log(`[daemon] registering runtime for workspace=${a.id||a.name} deviceName=${s.deviceName||mo.hostname()}`);let l=((await this._client.register({workspaceId:a.id,daemonId:o,deviceName:s.deviceName||mo.hostname(),cliVersion:s.cliVersion||"dev",runtimes:[{name:s.runtimeName||`Claude (${mo.hostname()})`,type:"claude",version:s.cliVersion||"dev",status:"online"}]}))?.runtimes||[]).map(u=>u.id).filter(Boolean);for(let u of l)this._runtimeProviders[u]="claude";this._runtimeIds.push(...l),this.log(`[daemon] registered workspace=${a.id} runtimeIds=[${l.join(", ")}]`)}catch(c){this.log(`[daemon] register error workspace=${a.id}: ${c.message}`)}this._runtimeIds.length===0&&this.log("[daemon] WARNING: no runtimes registered \u2014 tasks cannot be claimed"),this._health.agents=this._runtimeIds.map(a=>`claude:${a}`),this._health.status="running",setImmediate(()=>Nw(s));for(let a of this._runtimeIds){let c=new Dw(s,this._client,a,this.log);this._pollers[a]=c,c.start(n)}this.log(`[daemon] started ${Object.keys(this._pollers).length} poller(s)`),this._wakeupLoop=new Lw(s,s.token,s.cliVersion||"dev",a=>{if(a){let c=this._pollers[a];if(c)this.log(`[daemon] wakeup signal for runtime=${a.slice(0,8)}`),c.wakeup();else{this.log(`[daemon] wakeup signal for unknown runtime=${a.slice(0,8)}, fanning out`);for(let l of Object.values(this._pollers))l.wakeup()}}else for(let c of Object.values(this._pollers))c.wakeup()},a=>{a&&a.runtime_gone&&a.runtime_id&&(this.log(`[daemon] heartbeat_ack: runtime ${a.runtime_id} gone`),this._handleRuntimeGone(a.runtime_id))},this.log),this._wakeupLoop.start(n,()=>this._runtimeIds),this._heartbeat=new Rw(s,this._client,()=>this._runtimeIds,this.log,a=>this._handleRuntimeGone(a),a=>this._runtimeProviders[a]||"claude"),this._heartbeat.start(n),this.log("[daemon] running \u2014 waiting for tasks"),await qw(n),this.log("[daemon] shutting down"),this._heartbeat.stop(),this._wakeupLoop.stop();for(let a of Object.values(this._pollers))a.stop();if(this._runtimeIds.length)try{await this._client.deregister(this._runtimeIds),this.log(`[daemon] deregistered ${this._runtimeIds.length} runtime(s)`)}catch(a){this.log(`[daemon] deregister error: ${a.message}`)}this._health.close(),this.log("[daemon] stopped")}async _handleRuntimeGone(e){let s=this._runtimeIds.indexOf(e);s!==-1&&this._runtimeIds.splice(s,1),delete this._runtimeProviders[e];let r=this._pollers[e];r&&(r.stop(),delete this._pollers[e]),this.log(`[daemon] runtime ${e} removed; will re-register on next cycle`)}};function qw(t){return new Promise(e=>{if(!t){process.once("SIGINT",e),process.once("SIGTERM",e);return}if(t.aborted)return e();t.addEventListener("abort",e,{once:!0})})}gu.exports={DaemonProcess:ho}});var Ou=k((E0,vu)=>{var{emitTable:W,emitDetails:F}=Ec(),{abort:y,send:C,ensureOk:E,flag:b,positionals:xe,requireWorkspaceId:A}=Tc();function Eu(t,{full:e=!1,actors:s=null}={}){let r=t.assignee||(t.assignee_id?`${t.assignee_type||""}:${t.assignee_id}`:""),n=r;if(s&&r){let o=r.indexOf(":"),i=o!==-1?r.slice(o+1):r,a=s.get(i);a&&(n=a.name)}return{key:t.key||t.identifier||"",...e?{id:t.id||""}:{},title:t.title||"",status:t.status||"",priority:t.priority||"",assignee:n}}async function Au(t,e){let s=await C(t,"GET","/api/agents"),r=E(t,s)||{},n=Array.isArray(r)?r:r.agents||[],o=String(e).toLowerCase(),i=n.find(a=>a.id===e||(a.slug||"").toLowerCase()===o||(a.name||"").toLowerCase()===o);return i||y(t.ctx,`agent '${e}' \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder flow agent list \u67E5\u770B\u53EF\u7528 agent",4),i.id}var U={id:"ID",key:"Key",name:"\u540D\u79F0",slug:"Slug",title:"\u6807\u9898",status:"\u72B6\u6001",priority:"\u4F18\u5148\u7EA7",assignee:"\u8D1F\u8D23\u4EBA",description:"\u63CF\u8FF0",current:"\u5F53\u524D",start_date:"\u5F00\u59CB\u65E5\u671F",due_date:"\u622A\u6B62\u65E5\u671F",created_at:"\u521B\u5EFA\u65F6\u95F4",updated_at:"\u66F4\u65B0\u65F6\u95F4",author:"\u4F5C\u8005",content:"\u5185\u5BB9",agent:"Agent",deleted:"\u5DF2\u5220\u9664"},ge={status:{backlog:"\u5F85\u89C4\u5212",todo:"\u5F85\u529E",in_progress:"\u8FDB\u884C\u4E2D",in_review:"\u8BC4\u5BA1\u4E2D",done:"\u5DF2\u5B8C\u6210",cancelled:"\u5DF2\u53D6\u6D88",open:"\u5F00\u653E",closed:"\u5DF2\u5173\u95ED",active:"\u6D3B\u8DC3",inactive:"\u505C\u7528",archived:"\u5DF2\u5F52\u6863",planned:"\u89C4\u5212\u4E2D",started:"\u5DF2\u542F\u52A8",on_hold:"\u6401\u7F6E",idle:"\u7A7A\u95F2",busy:"\u5FD9\u788C",running:"\u8FD0\u884C\u4E2D",queued:"\u6392\u961F\u4E2D",pending:"\u7B49\u5F85\u4E2D",paused:"\u5DF2\u6682\u505C",stopped:"\u5DF2\u505C\u6B62",completed:"\u5DF2\u5B8C\u6210",failed:"\u5931\u8D25",success:"\u6210\u529F",error:"\u9519\u8BEF"},priority:{none:"\u65E0",low:"\u4F4E",medium:"\u4E2D",high:"\u9AD8",urgent:"\u7D27\u6025"}};async function yo(t,e,s){if(t.ctx.isJson||!s)return null;let r=await t.http.getWorkspaceSlug();return r?`${t.http.baseUrl}/${r}/${e}/${s}`:null}async function _o(t,e,s){if(t.ctx.isJson)return null;let r=await t.http.getWorkspaceSlug();return r?s.map(n=>n&&n.id?`${t.http.baseUrl}/${r}/${e}/${n.id}`:null):null}async function jw(t){A(t);let e=new URLSearchParams;e.set("workspace_id",t.http.workspaceId);let s=b(t.args,"--status"),r=b(t.args,"--priority"),n=b(t.args,"--limit"),o=b(t.args,"--offset");s&&e.set("status",s),r&&e.set("priority",r),n&&e.set("limit",n),o&&e.set("offset",o);let i=t.args.includes("--full-id"),[a,c]=await Promise.all([C(t,"GET",`/api/issues?${e.toString()}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),l=E(t,a)||{},u=Array.isArray(l)?l:l.issues||[],d=await _o(t,"issues",u),m=c?u.map(h=>{let g=h.assignee||(h.assignee_id?`${h.assignee_type||""}:${h.assignee_id}`:"");if(!g)return null;let _=g.indexOf(":"),w=_!==-1?g.slice(_+1):g;return c.get(w)?.url||null}):null;return W(t.ctx,u.map(h=>Eu(h,{full:i,actors:c})),{labels:U,values:ge,linkCol:"key",rowLinks:d,colLinks:m?{col:"assignee",links:m}:void 0,empty:"\u65E0 issue"}),0}async function _u(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue get <id|KEY>",3),A(t);let[s,r]=await Promise.all([C(t,"GET",`/api/issues/${encodeURIComponent(e)}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),n=E(t,s)||{},o=await yo(t,"issues",n.id),i=n.assignee||(n.assignee_id?`${n.assignee_type||""}:${n.assignee_id}`:""),a=i,c=null;if(r&&i){let l=i.indexOf(":"),u=l!==-1?i.slice(l+1):i,d=r.get(u);d&&(a=d.name,c=d.url)}return F(t.ctx,[["key",n.key||n.identifier||""],["id",n.id||""],["title",n.title||""],["status",n.status||""],["priority",n.priority||""],["assignee",a],["start_date",n.start_date||""],["due_date",n.due_date||""],["description",n.description||""]],null,{labels:U,values:ge,link:o?{key:"key",url:o}:null,fieldLinks:c?{assignee:c}:null}),0}async function Mw(t){let e=A(t),s=b(t.args,"--title");s||y(t.ctx,"\u7F3A\u5C11 --title","\u7528\u6CD5: coder flow issue create --title <t>",3);let r={workspace_id:e,title:s},n=b(t.args,"--description"),o=b(t.args,"--priority"),i=b(t.args,"--status"),a=b(t.args,"--project"),c=b(t.args,"--agent")||b(t.args,"--assignee");n!==void 0&&(r.description=n),o!==void 0&&(r.priority=o),i!==void 0&&(r.status=i),a!==void 0&&(r.project_id=a),c!==void 0&&(r.assignee_type="agent",r.assignee_id=await Au(t,c));let l=await C(t,"POST","/api/issues",r),u=E(t,l)||{};return F(t.ctx,[["key",u.key||u.identifier||""],["id",u.id||""],["title",u.title||s],["status",u.status||""]],null,{labels:U,values:ge}),0}async function wo(t,e,s,r){let n=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}`,s),o=E(t,n)||{},i=await yo(t,"issues",o.id);return F(t.ctx,r(o),null,{labels:U,values:ge,link:i?{key:"key",url:i}:null}),0}async function Gw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue update <id|KEY> ...",3),A(t);let s={},r=b(t.args,"--title"),n=b(t.args,"--description"),o=b(t.args,"--priority"),i=b(t.args,"--status");return r!==void 0&&(s.title=r),n!==void 0&&(s.description=n),o!==void 0&&(s.priority=o),i!==void 0&&(s.status=i),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u66F4\u65B0\u5B57\u6BB5","\u81F3\u5C11\u7ED9\u4E00\u4E2A --title/--description/--priority/--status",3),wo(t,e,s,a=>[["key",a.key||a.identifier||e],["title",a.title||""],["status",a.status||""],["priority",a.priority||""]])}async function Bw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3);let s=b(t.args,"--set")||b(t.args,"--status");return s||y(t.ctx,"\u7F3A\u5C11 --set <status>","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3),A(t),wo(t,e,{status:s},r=>[["key",r.key||r.identifier||e],["status",r.status||s]])}async function Fw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue assign <id|KEY> --agent <slug>",3),A(t);let s=b(t.args,"--agent")||b(t.args,"--to"),r=t.args.includes("--unassign"),n;return r?n={assignee_type:null,assignee_id:null}:(s||y(t.ctx,"\u7F3A\u5C11 --agent <slug>","\u6216\u7528 --unassign \u53D6\u6D88\u6307\u6D3E",3),n={assignee_type:"agent",assignee_id:await Au(t,s)}),wo(t,e,n,o=>[["key",o.key||o.identifier||e],["status",o.status||""],["assignee",o.assignee_id?`${o.assignee_type||""}:${o.assignee_id}`:""]])}async function Zw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u5173\u952E\u8BCD","\u7528\u6CD5: coder flow issue search <query>",3),A(t);let s=new URLSearchParams;s.set("q",e),s.set("workspace_id",t.http.workspaceId);let r=b(t.args,"--limit");r&&s.set("limit",r),t.args.includes("--include-closed")&&s.set("include_closed","true");let n=await C(t,"GET",`/api/issues/search?${s.toString()}`),o=E(t,n)||{},i=Array.isArray(o)?o:o.issues||[],a=await _o(t,"issues",i);return W(t.ctx,i.map(c=>Eu(c)),{labels:U,values:ge,linkCol:"key",rowLinks:a,empty:"\u65E0\u5339\u914D issue"}),0}async function Vw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/comments`),r=E(t,s)||{},n=Array.isArray(r)?r:r.comments||[];return W(t.ctx,n.map(o=>({id:o.id||"",author:o.author_id||o.user_id||"",created_at:o.created_at||"",content:o.content||""})),{labels:U,empty:"\u65E0\u8BC4\u8BBA"}),0}async function Ww(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment add <id|KEY> --content <text>",3),A(t);let s=b(t.args,"--content")||b(t.args,"--body");s||y(t.ctx,"\u7F3A\u5C11 --content",null,3);let r={content:s},n=b(t.args,"--parent");n&&(r.parent_id=n);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/comments`,r),i=E(t,o)||{};return F(t.ctx,[["id",i.id||""],["content",i.content||s]],null,{labels:U}),0}async function Kw(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue comment delete <issue-id> <comment-id>",3),A(t);let n=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/comments/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`\u8BC4\u8BBA ${r} \u5DF2\u5220\u9664`),0}async function zw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/subscribers`),r=E(t,s)||{},n=Array.isArray(r)?r:r.subscribers||[];return W(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",type:o.type||""})),{labels:U,empty:"\u65E0\u8BA2\u9605\u8005"}),0}async function Jw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber add <id|KEY> [--user <name>]",3),A(t);let s={},r=b(t.args,"--user-id"),n=b(t.args,"--user");r?s.user_id=r:n&&(s.user=n);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/subscribers`,s),i=E(t,o)||{};return t.ctx.emit(t.ctx.isJson?i:`\u5DF2\u8BA2\u9605 issue ${e}`),0}async function Hw(t){let s=xe(t.args,{valueFlags:["--user-id","--user"]})[0];s||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber remove <id|KEY>",3),A(t);let r={},n=b(t.args,"--user-id"),o=b(t.args,"--user");n?r.user_id=n:o&&(r.user=o);let i=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/subscribers`,r);return E(t,i),t.ctx.emit(t.ctx.isJson?{unsubscribed:!0}:`\u5DF2\u53D6\u6D88\u8BA2\u9605 issue ${s}`),0}async function Yw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue pull-requests <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/pull-requests`),r=E(t,s)||{},n=Array.isArray(r)?r:r.pull_requests||[];return W(t.ctx,n.map(o=>({id:o.id||"",title:o.title||"",url:o.url||"",status:o.status||""})),{labels:U,empty:"\u65E0\u5173\u8054 PR"}),0}async function Xw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue run-messages <task-id> [--since <seq>]",3),A(t);let s=new URLSearchParams,r=b(t.args,"--issue"),n=b(t.args,"--since");r&&s.set("issue_id",r),n&&s.set("since",n);let o=s.toString(),i=await C(t,"GET",`/api/tasks/${encodeURIComponent(e)}/messages${o?"?"+o:""}`),a=E(t,i)||{},c=Array.isArray(a)?a:a.messages||[];return t.ctx.isJson?(t.ctx.emit(c),0):(W(t.ctx,c.map(l=>({seq:String(l.seq??l.sequence??""),type:l.type||l.role||"",content:(l.content||l.output||"").slice(0,100)})),{labels:{seq:"Seq",type:"\u7C7B\u578B",content:"\u5185\u5BB9"},empty:"\u65E0\u6D88\u606F"}),0)}async function Qw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue cancel-task <task-id>",3),A(t);let s={},r=b(t.args,"--issue");r&&(s.issue_id=r);let n=await C(t,"POST",`/api/tasks/${encodeURIComponent(e)}/cancel`,s),o=E(t,n)||{};return F(t.ctx,[["id",o.id||e],["status",o.status||""]],null,{labels:U}),0}async function eb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue runs <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/task-runs`),r=E(t,s)||{},n=Array.isArray(r)?r:r.runs||r.tasks||[];return W(t.ctx,n.map(o=>({id:o.id||"",status:o.status||"",agent:o.agent_id||o.assignee_id||"",created_at:o.created_at||""})),{labels:U,values:ge,empty:"\u65E0\u4EFB\u52A1\u5386\u53F2"}),0}async function tb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue rerun <id|KEY>",3),A(t);let s=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/rerun`,{}),r=E(t,s)||{};return F(t.ctx,[["id",r.id||""],["status",r.status||""]],null,{labels:U,values:ge}),0}function Cs(t,e){return e.map(s=>[s,t[s]??""])}function ts(t,e,s,{webPath:r=null,linkCol:n=null}={}){return async o=>{A(o);let i=new URLSearchParams;i.set("workspace_id",o.http.workspaceId);let a=await C(o,"GET",`/api/${t}?${i.toString()}`),c=E(o,a)||{},l=Array.isArray(c)?c:c[e]||[],u=r?await _o(o,r,l):null;return W(o.ctx,l.map(d=>{let m={};for(let h of s)m[h]=d[h]??"";return m}),{labels:U,values:ge,linkCol:n,rowLinks:u,empty:`\u65E0 ${t}`}),0}}function De(t,e,{webPath:s=null,linkCol:r=null}={}){return async n=>{let o=n.arg;o||y(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... get <id>",3),A(n);let i=await C(n,"GET",`/api/${t}/${encodeURIComponent(o)}`),a=E(n,i)||{},c=s?await yo(n,s,a.id):null;return F(n.ctx,Cs(a,e),null,{labels:U,values:ge,link:c&&r?{key:r,url:c}:null}),0}}function xr(t){return async e=>{let s=e.arg;if(s||y(e.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... delete <id>",3),A(e),!e.args.includes("--yes"))return e.ctx.emit(`\u5C06\u5220\u9664 ${t}/${s}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let r=await C(e,"DELETE",`/api/${t}/${encodeURIComponent(s)}`);return E(e,r),e.ctx.emit(e.ctx.isJson?{deleted:s}:`\u5DF2\u5220\u9664 ${s}`),0}}function We(t,e,s,r,{withWorkspace:n=!1,idArg:o=!1}={}){return async i=>{let a=A(i),c=`/api/${t}`;if(o){let h=i.arg;h||y(i.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id> ...",3),c+=`/${encodeURIComponent(h)}`}let l={};n&&(l.workspace_id=a);for(let[h,g]of s){let _=b(i.args,`--${h}`);_!==void 0&&(l[g]=_)}Object.keys(l).filter(h=>h!=="workspace_id").length||y(i.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5",`\u7ED9\u51FA ${s.map(h=>"--"+h[0]).join(" / ")}`,3);let d=await C(i,e,c,l),m=E(i,d)||{};return F(i.ctx,Cs(m,r),null,{labels:U,values:ge}),0}}function go(t,e,s){return async r=>{let n=r.arg;n||y(r.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,`\u7528\u6CD5: coder flow ... ${e} <id>`,3),A(r);let o=await C(r,"POST",`/api/${t}/${encodeURIComponent(n)}/${e}`,{}),i=E(r,o)||{};return F(r.ctx,Cs(i,s),null,{labels:U,values:ge}),0}}function wu(t,e,s,r){return async n=>{let o=n.arg;o||y(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id>",3),A(n);let i=await C(n,"GET",`/api/${t}/${encodeURIComponent(o)}/${e}`),a=E(n,i)||{},c=Array.isArray(a)?a:a[s]||[];return W(n.ctx,c.map(l=>{let u={};for(let d of r)u[d]=l[d]??"";return u}),{labels:U,values:ge,empty:"\uFF08\u7A7A\uFF09"}),0}}async function sb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue label list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/labels`),r=E(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return W(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",color:o.color||""})),{labels:U,empty:"\u65E0\u6807\u7B7E"}),0}async function rb(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label add <issue-id> <label-id>",3),A(t);let n=await C(t,"POST",`/api/issues/${encodeURIComponent(s)}/labels`,{label_id:r}),o=E(t,n)||{},i=Array.isArray(o)?o:o.labels||[];return W(t.ctx,i.map(a=>({id:a.id||"",name:a.name||"",color:a.color||""})),{labels:U,empty:"\u65E0\u6807\u7B7E"}),0}async function nb(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label remove <issue-id> <label-id>",3),A(t);let n=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/labels/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`\u6807\u7B7E ${r} \u5DF2\u4ECE issue ${s} \u79FB\u9664`),0}async function ob(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),r=E(t,s)||{},n=r.metadata||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let o=Object.entries(n).map(([i,a])=>({key:i,value:String(a),type:typeof a}));return W(t.ctx,o,{labels:U,empty:"\u65E0 metadata"}),0}async function ib(t){let e=t.arg,s=b(t.args,"--key");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),s||y(t.ctx,"\u7F3A\u5C11 --key","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),A(t);let r=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),n=E(t,r)||{},o=n.metadata||n||{};s in o||y(t.ctx,`metadata key '${s}' \u4E0D\u5B58\u5728`,null,4);let i=o[s];return t.ctx.isJson?(t.ctx.emit(i),0):(F(t.ctx,[["key",s],["value",String(i)],["type",typeof i]],null,{labels:U}),0)}async function ab(t){let e=t.arg,s=b(t.args,"--key"),r=b(t.args,"--value"),n=b(t.args,"--type");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata set <id|KEY> --key <k> --value <v>",3),s||y(t.ctx,"\u7F3A\u5C11 --key",null,3),r===void 0&&y(t.ctx,"\u7F3A\u5C11 --value",null,3),A(t);let o=r;if(!n||n==="auto")try{o=JSON.parse(r)}catch{o=r}else n==="string"?o=r:n==="number"?(o=Number(r),Number.isNaN(o)&&y(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u6570\u5B57`,null,3)):n==="bool"&&(r!=="true"&&r!=="false"&&y(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u5E03\u5C14\uFF08true/false\uFF09`,null,3),o=r==="true");let i=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`,{value:o}),a=E(t,i)||{},c=a.metadata||a||{};if(t.ctx.isJson)return t.ctx.emit(c),0;let l=Object.entries(c).map(([u,d])=>({key:u,value:String(d),type:typeof d}));return W(t.ctx,l,{labels:U,empty:"\uFF08\u7A7A\uFF09"}),0}async function cb(t){let e=t.arg,s=b(t.args,"--key");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata delete <id|KEY> --key <k>",3),s||y(t.ctx,"\u7F3A\u5C11 --key",null,3),A(t);let r=await C(t,"DELETE",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`);return E(t,r),t.ctx.emit(t.ctx.isJson?{deleted:s}:`metadata key '${s}' \u5DF2\u5220\u9664`),0}async function lb(t){let e=t.arg;if(e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue delete <id|KEY> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 issue/${e}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let s=await C(t,"DELETE",`/api/issues/${encodeURIComponent(e)}`);return E(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`issue ${e} \u5DF2\u5220\u9664`),0}async function ub(t){A(t);let e=new URLSearchParams({workspace_id:t.http.workspaceId}),s=await C(t,"GET",`/api/labels?${e.toString()}`),r=E(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return W(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",color:o.color||"",created_at:o.created_at||""})),{labels:U,empty:"\u65E0 label"}),0}async function bu(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label get <id>",3),A(t);let s=await C(t,"GET",`/api/labels/${encodeURIComponent(e)}`),r=E(t,s)||{};return F(t.ctx,[["id",r.id||""],["name",r.name||""],["color",r.color||""],["created_at",r.created_at||""]],null,{labels:U}),0}async function db(t){let e=b(t.args,"--name"),s=b(t.args,"--color");e||y(t.ctx,"\u7F3A\u5C11 --name","\u7528\u6CD5: coder flow label create --name <n> --color <#hex>",3),s||y(t.ctx,"\u7F3A\u5C11 --color\uFF08\u683C\u5F0F: #3b82f6\uFF09",null,3),A(t);let r=await C(t,"POST","/api/labels",{name:e,color:s}),n=E(t,r)||{};return F(t.ctx,[["id",n.id||""],["name",n.name||""],["color",n.color||""]],null,{labels:U}),0}async function fb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label update <id> [--name <n>] [--color <#>]",3),A(t);let s={},r=b(t.args,"--name"),n=b(t.args,"--color");r!==void 0&&(s.name=r),n!==void 0&&(s.color=n),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --color",3);let o=await C(t,"PUT",`/api/labels/${encodeURIComponent(e)}`,s),i=E(t,o)||{};return F(t.ctx,[["id",i.id||""],["name",i.name||""],["color",i.color||""]],null,{labels:U}),0}async function pb(t){let e=t.arg;if(e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label delete <id> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 label/${e}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let s=await C(t,"DELETE",`/api/labels/${encodeURIComponent(e)}`);return E(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`label ${e} \u5DF2\u5220\u9664`),0}async function mb(t){let e=A(t),s=b(t.args,"--name");s||y(t.ctx,"--name \u662F\u5FC5\u586B\u9879",null,3);let r=b(t.args,"--runtime-id");r||y(t.ctx,"--runtime-id \u662F\u5FC5\u586B\u9879",null,3);let n={workspace_id:e,name:s,runtime_id:r};for(let[c,l]of[["description","description"],["instructions","instructions"],["model","model"],["thinking-level","thinking_level"],["visibility","visibility"],["max-concurrent-tasks","max_concurrent_tasks"]]){let u=b(t.args,`--${c}`);u!==void 0&&(n[l]=u)}let o=await C(t,"POST","/api/agents",n),i=E(t,o)||{},a=b(t.args,"--skill-ids");if(a&&i.id){let c=a.split(",").map(l=>l.trim()).filter(Boolean);if(c.length){let l=await C(t,"PUT",`/api/agents/${encodeURIComponent(i.id)}/skills`,{skill_ids:c});E(t,l)}}return F(t.ctx,Cs(i,["id","name","model","runtime_id"]),null,{labels:U,values:ge}),0}async function hb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills list <id>",3),A(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/skills`),r=E(t,s)||{},n=Array.isArray(r)?r:r.skills||[];return W(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",description:o.description||""})),{labels:U,empty:"\u65E0 skill"}),0}async function gb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills add <agent-id> --skill-ids <id1,id2>",3),A(t);let s=(b(t.args,"--skill-ids")||"").split(",").map(o=>o.trim()).filter(Boolean);s.length||y(t.ctx,"\u7F3A\u5C11 --skill-ids",null,3);let r=await C(t,"POST",`/api/agents/${encodeURIComponent(e)}/skills/add`,{skill_ids:s}),n=E(t,r)||{};return t.ctx.emit(t.ctx.isJson?n:`skill \u5DF2\u6DFB\u52A0\u5230 agent ${e}`),0}async function yb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills set <agent-id> --skill-ids <id1,id2>",3),A(t);let s=b(t.args,"--skill-ids")||"",r=s?s.split(",").map(i=>i.trim()).filter(Boolean):[],n=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/skills`,{skill_ids:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684 skill \u5DF2\u66F4\u65B0`),0}async function _b(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent env get <id>",3),A(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/env`),r=E(t,s)||{},n=r.env||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let o=Object.entries(n).map(([i,a])=>({key:i,value:String(a)}));return W(t.ctx,o,{labels:U,empty:"\u65E0\u73AF\u5883\u53D8\u91CF"}),0}async function wb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6",`\u7528\u6CD5: coder flow agent env set <id> --custom-env '{"KEY":"val"}'`,3),A(t);let s=b(t.args,"--custom-env");s||y(t.ctx,"\u7F3A\u5C11 --custom-env\uFF08JSON \u5BF9\u8C61\uFF09",null,3);let r;try{r=JSON.parse(s)}catch{y(t.ctx,"--custom-env \u4E0D\u662F\u6709\u6548 JSON",null,3)}let n=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/env`,{env:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684\u73AF\u5883\u53D8\u91CF\u5DF2\u66F4\u65B0`),0}async function bb(t){let e=t.arg,s=b(t.args,"--set")||b(t.args,"--status");e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project status <id> --set <status>",3),s||y(t.ctx,"\u7F3A\u5C11 --set <status>",null,3),A(t);let r=await C(t,"PUT",`/api/projects/${encodeURIComponent(e)}`,{status:s}),n=E(t,r)||{};return F(t.ctx,[["id",n.id||""],["title",n.title||""],["status",n.status||""]],null,{labels:U}),0}async function kb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource list <project-id>",3),A(t);let s=await C(t,"GET",`/api/projects/${encodeURIComponent(e)}/resources`),r=E(t,s)||{},n=Array.isArray(r)?r:r.resources||[];return W(t.ctx,n.map(o=>({id:o.id||"",resource_type:o.resource_type||"",label:o.label||""})),{labels:U,empty:"\u65E0\u8D44\u6E90"}),0}async function xb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource add <project-id> --type <t> --url <u>",3),A(t);let s=b(t.args,"--type")||"github_repo",r=b(t.args,"--url"),n=b(t.args,"--local-path"),o=b(t.args,"--daemon-id"),i=b(t.args,"--label"),a;if(s==="github_repo"){r||y(t.ctx,"github_repo \u9700\u8981 --url",null,3),a={url:r};let d=b(t.args,"--default-branch-hint");d&&(a.default_branch_hint=d)}else s==="local_directory"?((!n||!o)&&y(t.ctx,"local_directory \u9700\u8981 --local-path \u548C --daemon-id",null,3),a={local_path:n,daemon_id:o}):y(t.ctx,`\u672A\u77E5 resource type '${s}'\uFF1B\u652F\u6301: github_repo, local_directory`,null,3);let c={resource_type:s,resource_ref:a};i&&(c.label=i);let l=await C(t,"POST",`/api/projects/${encodeURIComponent(e)}/resources`,c),u=E(t,l)||{};return F(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""]],null,{labels:U}),0}async function Sb(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource remove <project-id> <resource-id>",3),A(t);let n=await C(t,"DELETE",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`resource ${r} \u5DF2\u4ECE project ${s} \u79FB\u9664`),0}async function Ib(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member list <squad-id>",3),A(t);let s=await C(t,"GET",`/api/squads/${encodeURIComponent(e)}/members`),r=E(t,s)||{},n=Array.isArray(r)?r:r.members||[];return W(t.ctx,n.map(o=>({member_id:o.member_id||"",member_type:o.member_type||"",role:o.role||""})),{labels:U,empty:"\u65E0\u6210\u5458"}),0}async function Cb(t){let e=t.arg,s=b(t.args,"--member-id"),r=b(t.args,"--type")||"agent",n=b(t.args,"--role")||"member";e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member add <squad-id> --member-id <id> [--type agent|member] [--role <r>]",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),A(t);let o={member_type:r,member_id:s,role:n},i=await C(t,"POST",`/api/squads/${encodeURIComponent(e)}/members`,o),a=E(t,i)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u5DF2\u52A0\u5165 squad ${e}`),0}async function Eb(t){let e=t.arg,s=b(t.args,"--member-id"),r=b(t.args,"--member-type")||"agent",n=b(t.args,"--role");e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member set-role <squad-id> --member-id <id> --role <r>",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),n||y(t.ctx,"\u7F3A\u5C11 --role",null,3),A(t);let o={member_type:r,member_id:s,role:n},i=await C(t,"PATCH",`/api/squads/${encodeURIComponent(e)}/members/role`,o),a=E(t,i)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u7684\u89D2\u8272\u5DF2\u66F4\u65B0\u4E3A ${n}`),0}async function Ab(t){let e=t.arg,s=b(t.args,"--member-id"),r=b(t.args,"--type")||"agent";e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member remove <squad-id> --member-id <id>",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),A(t);let n={member_type:r,member_id:s},o=await C(t,"DELETE",`/api/squads/${encodeURIComponent(e)}/members`,n);return E(t,o),t.ctx.emit(t.ctx.isJson?{removed:s}:`\u6210\u5458 ${s} \u5DF2\u4ECE squad ${e} \u79FB\u9664`),0}async function $b(t){let e=t.arg,s=t.args.find(i=>!i.startsWith("-")&&i!==e)||b(t.args,"--outcome");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow squad activity <issue-id> <outcome> [--reason <r>]",3),(!s||!["action","no_action","failed"].includes(s))&&y(t.ctx,"outcome \u5FC5\u987B\u662F action / no_action / failed",null,3),A(t);let r=b(t.args,"--reason")||"",n=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/squad-evaluated`,{outcome:s,reason:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`squad \u8BC4\u4F30\u5DF2\u8BB0\u5F55: ${s}\uFF08issue ${e}\uFF09`),0}async function Tb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 autopilot \u6807\u8BC6","\u7528\u6CD5: coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'",3),A(t);let s=b(t.args,"--kind")||"schedule";s!=="schedule"&&s!=="webhook"&&y(t.ctx,"--kind \u987B\u4E3A schedule \u6216 webhook",null,3);let r={kind:s};if(s==="schedule"){let a=b(t.args,"--cron");a||y(t.ctx,"schedule trigger \u9700\u8981 --cron",null,3),r.cron_expression=a;let c=b(t.args,"--timezone");c&&(r.timezone=c)}let n=b(t.args,"--label");n&&(r.label=n);let o=await C(t,"POST",`/api/autopilots/${encodeURIComponent(e)}/triggers`,r),i=E(t,o)||{};return F(t.ctx,[["id",i.id||""],["kind",i.kind||""],["label",i.label||""]],null,{labels:U}),0}async function Ub(t){let e=xe(t.args,{valueFlags:["--cron","--timezone","--label"]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-update <autopilot-id> <trigger-id> [--cron ...] [--enabled true|false]",3),A(t);let n={},o=b(t.args,"--cron"),i=b(t.args,"--timezone"),a=b(t.args,"--label"),c=b(t.args,"--enabled");o!==void 0&&(n.cron_expression=o),i!==void 0&&(n.timezone=i),a!==void 0&&(n.label=a),c!==void 0&&(n.enabled=c==="true"),Object.keys(n).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--cron / --timezone / --label / --enabled",3);let l=await C(t,"PATCH",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`,n),u=E(t,l)||{};return F(t.ctx,[["id",u.id||""],["kind",u.kind||""]],null,{labels:U}),0}async function vb(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-delete <autopilot-id> <trigger-id>",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 trigger ${r}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let n=await C(t,"DELETE",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`trigger ${r} \u5DF2\u5220\u9664`),0}async function Ob(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit("\u6B64\u64CD\u4F5C\u5C06\u7ACB\u5373\u4F7F\u5F53\u524D webhook URL \u5931\u6548\u3002\u786E\u8BA4\u8BF7\u52A0 --yes"),10;let n=await C(t,"POST",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}/rotate-webhook-token`,{}),o=E(t,n)||{};return F(t.ctx,[["id",o.id||""],["webhook_url",o.webhook_url||""]],null,{labels:U}),0}async function Db(t){A(t);let e=b(t.args,"--url");e||y(t.ctx,"\u7F3A\u5C11 --url","\u7528\u6CD5: coder flow skill import --url <url> [--on-conflict fail|overwrite|rename|skip]",3);let s=b(t.args,"--on-conflict")||"fail";["fail","overwrite","rename","skip"].includes(s)||y(t.ctx,"--on-conflict \u987B\u4E3A fail / overwrite / rename / skip",null,3);let r=await C(t,"POST","/api/skills/import",{url:e,on_conflict:s}),n=E(t,r)||{};return F(t.ctx,[["id",n.id||n.skill?.id||""],["name",n.name||n.skill?.name||""],["status",n.status||"created"]],null,{labels:U}),0}async function Rb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u8BCD","\u7528\u6CD5: coder flow skill search <query>",3),A(t);let s=await C(t,"GET",`/api/skills/search?q=${encodeURIComponent(e)}`),r=E(t,s)||{},n=Array.isArray(r)?r:r.results||[];return W(t.ctx,n.map(o=>({name:o.name||"",url:o.url||"",source:o.source||"",description:o.description||""})),{labels:U,empty:"\u65E0\u5339\u914D skill"}),0}async function Lb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files list <skill-id>",3),A(t);let s=await C(t,"GET",`/api/skills/${encodeURIComponent(e)}/files`),r=E(t,s)||{},n=Array.isArray(r)?r:r.files||[];return W(t.ctx,n.map(o=>({id:o.id||"",path:o.path||"",updated_at:o.updated_at||""})),{labels:U,empty:"\u65E0\u6587\u4EF6"}),0}async function Pb(t){let e=t.arg,s=b(t.args,"--path"),r=b(t.args,"--content");e||y(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files upsert <skill-id> --path <p> --content <c>",3),s||y(t.ctx,"\u7F3A\u5C11 --path",null,3),r||y(t.ctx,"\u7F3A\u5C11 --content",null,3),A(t);let n=await C(t,"PUT",`/api/skills/${encodeURIComponent(e)}/files`,{path:s,content:r}),o=E(t,n)||{};return F(t.ctx,[["id",o.id||""],["path",o.path||s]],null,{labels:U}),0}async function Nb(t){let e=xe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow skill files delete <skill-id> <file-id>",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 skill file ${r}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let n=await C(t,"DELETE",`/api/skills/${encodeURIComponent(s)}/files/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`skill file ${r} \u5DF2\u5220\u9664`),0}async function ku(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime get <id>",3),A(t);let s=new URLSearchParams;s.set("workspace_id",t.http.workspaceId);let r=await C(t,"GET",`/api/runtimes?${s.toString()}`),n=E(t,r)||{},i=(Array.isArray(n)?n:n.runtimes||[]).find(c=>c.id===e||c.name===e);i||y(t.ctx,`runtime \u4E0D\u5B58\u5728: ${e}`,null,4);let a=["id","name","status","provider","device_info","runtime_mode","visibility","last_seen_at","created_at"];return F(t.ctx,Cs(i,a),null,{labels:U}),0}async function qb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime usage <id> [--days <n>]",3),A(t);let s=b(t.args,"--days")||"90",r=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/usage?days=${s}`),n=E(t,r)||{},o=Array.isArray(n)?n:n.usage||[];return W(t.ctx,o.map(i=>({date:i.date||"",provider:i.provider||"",model:i.model||"",input_tokens:String(i.input_tokens??""),output_tokens:String(i.output_tokens??"")})),{labels:U,empty:"\u65E0\u7528\u91CF\u6570\u636E"}),0}async function jb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime activity <id>",3),A(t);let s=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/activity`),r=E(t,s)||{},n=Array.isArray(r)?r:r.activity||[];return W(t.ctx,n.map(o=>({hour:o.hour||"",count:String(o.count??"")})),{labels:U,empty:"\u65E0\u6D3B\u52A8\u6570\u636E"}),0}async function Mb(t){let e=t.arg,s=b(t.args,"--target-version");e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime initiate-update <id> --target-version <v>",3),s||y(t.ctx,"\u7F3A\u5C11 --target-version",null,3),A(t);let r=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/update`,{target_version:s}),n=E(t,r)||{};return F(t.ctx,[["id",n.id||""],["status",n.status||""]],null,{labels:U}),0}async function Gb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime models <id>",3),A(t);let s=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/models`,{}),n=(E(t,s)||{}).id;n||y(t.ctx,"\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE request id",null,1);let o=9e4,i=2e3,a=Date.now()+o,c;for(;Date.now()<a;){await new Promise(h=>setTimeout(h,i));let u=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(n)}`),d=E(t,u)||{},m=d.status;if(m==="completed"){c=d;break}(m==="failed"||m==="timeout")&&y(t.ctx,`\u83B7\u53D6\u6A21\u578B\u5217\u8868\u5931\u8D25: ${d.error||m}`,null,1)}if(c||y(t.ctx,"\u83B7\u53D6\u6A21\u578B\u5217\u8868\u8D85\u65F6\uFF08runtime \u672A\u54CD\u5E94\uFF09",null,1),!c.supported)return t.ctx.emit(t.ctx.isJson?{supported:!1,models:[]}:"\u8BE5 runtime \u4E0D\u652F\u6301\u6A21\u578B\u9009\u62E9"),0;let l=c.models||[];return t.ctx.isJson?(t.ctx.emit({supported:!0,models:l}),0):(W(t.ctx,l.map(u=>({id:u.id||"",label:u.label||"",provider:u.provider||"",default:u.default?"\u2713":"",thinking:u.thinking?(u.thinking.supported_levels||[]).join(","):""})),{labels:{id:"Model ID",label:"\u540D\u79F0",provider:"Provider",default:"\u9ED8\u8BA4",thinking:"Thinking"},empty:"\u65E0\u53EF\u7528\u6A21\u578B"}),0)}async function Bb(t){A(t);let e=await C(t,"GET","/api/workspaces"),s=E(t,e)||{},r=Array.isArray(s)?s:s.workspaces||[];return W(t.ctx,r.map(n=>({id:n.id||"",name:n.name||"",slug:n.slug||""})),{labels:U,empty:"\u65E0 workspace"}),0}async function xu(t){A(t);let e=t.arg||t.http.workspaceId,s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=E(t,s)||{};return F(t.ctx,[["id",r.id||""],["name",r.name||""],["slug",r.slug||""],["description",r.description||""]],null,{labels:U}),0}async function Fb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 workspace id/slug","\u7528\u6CD5: coder flow workspace switch <id|slug>",3),A(t);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=E(t,s)||{};return t.ctx.setTeam&&t.ctx.setTeam(r.id,r.name||""),t.ctx.emit(t.ctx.isJson?r:`\u5DF2\u5207\u6362\u5230 workspace: ${r.name||r.id}`),0}async function Zb(t){let e=t.arg||t.http.workspaceId;A(t);let s={},r=b(t.args,"--name"),n=b(t.args,"--description"),o=b(t.args,"--context"),i=b(t.args,"--issue-prefix");r!==void 0&&(s.name=r),n!==void 0&&(s.description=n),o!==void 0&&(s.context=o),i!==void 0&&(s.issue_prefix=i),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --description / --context / --issue-prefix",3);let a=await C(t,"PATCH",`/api/workspaces/${encodeURIComponent(e)}`,s),c=E(t,a)||{};return F(t.ctx,[["id",c.id||""],["name",c.name||""],["slug",c.slug||""]],null,{labels:U}),0}async function Vb(t){let e=t.arg||t.http.workspaceId;A(t);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}/members`),r=E(t,s)||{},n=Array.isArray(r)?r:r.members||[];return W(t.ctx,n.map(o=>({id:o.id||"",name:o.name||o.username||"",role:o.role||""})),{labels:U,empty:"\u65E0\u6210\u5458"}),0}async function Wb(t){A(t);let e=await C(t,"GET",`/api/workspaces/${t.http.workspaceId}/repos`),s=E(t,e)||{},r=Array.isArray(s)?s:s.repos||s.repositories||[];return W(t.ctx,r.map(n=>({url:n.url||"",description:n.description||""})),{labels:U,empty:"\u65E0 repo"}),0}async function Kb(t){A(t);let e=xe(t.args,{valueFlags:["--description"]}),s=b(t.args,"--description");e.length||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo add <url> [<url>...]",3);let r=e.map(i=>s&&e.length===1?{url:i,description:s}:{url:i}),n=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos`,{repos:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`${e.length} \u4E2A repo \u5DF2\u6DFB\u52A0`),0}async function Su(t){A(t);let e=xe(t.args,{valueFlags:[]});e.length||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo remove <url> [<url>...]",3);let s=await C(t,"DELETE",`/api/workspaces/${t.http.workspaceId}/repos`,{urls:e}),r=E(t,s)||{};return t.ctx.emit(t.ctx.isJson?r:`${e.length} \u4E2A repo \u5DF2\u79FB\u9664`),0}async function zb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo checkout <url> [--ref <branch>]",3),A(t);let s={url:e},r=b(t.args,"--ref");r&&(s.ref=r);let n=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos/checkout`,s),o=E(t,n)||{};return F(t.ctx,[["path",o.path||""],["url",e]],null,{labels:U}),0}async function Jb(t){A(t);let e=await C(t,"GET","/api/me"),s=E(t,e)||{};return F(t.ctx,[["id",s.id||""],["name",s.name||s.display_name||""],["email",s.email||""],["description",s.description||s.profile_description||""]],null,{labels:U}),0}async function Hb(t){A(t);let e={},s=b(t.args,"--description");t.args.includes("--clear")?e.profile_description="":s!==void 0?e.profile_description=s:y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--description <text> \u6216 --clear",3);let n=await C(t,"PATCH","/api/me",e),o=E(t,n)||{};return F(t.ctx,[["id",o.id||""],["description",o.description||o.profile_description||""]],null,{labels:U}),0}async function Yb(t){let e=xe(t.args,{valueFlags:["--url","--ref","--label","--position","--default-branch-hint","--local-path","--daemon-id","--ref-label"]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource update <project-id> <resource-id> [--url <u>] [--label <l>]",3),A(t);let n={},o=b(t.args,"--url"),i=b(t.args,"--ref"),a=b(t.args,"--label"),c=b(t.args,"--position");if(i)try{n.resource_ref=JSON.parse(i)}catch{y(t.ctx,"--ref \u4E0D\u662F\u6709\u6548 JSON",null,3)}else if(o){n.resource_ref={url:o};let d=b(t.args,"--default-branch-hint");d&&(n.resource_ref.default_branch_hint=d)}a!==void 0&&(n.label=a),c!==void 0&&(n.position=Number(c)),Object.keys(n).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--url / --ref / --label / --position",3);let l=await C(t,"PUT",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`,n),u=E(t,l)||{};return F(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""],["label",u.label||""]],null,{labels:U}),0}async function $u(t){let{spawn:e}=require("child_process"),{checkHealth:s}=ys(),{daemonLogPath:r,writePid:n}=Wt(),{loadConfig:o}=Rn(),i=require("fs"),a=require("path");if(t.args.includes("--foreground")){let{DaemonProcess:z}=yu(),P=tk(t),j=o(P);j.token=t.ctx.getApiKey?t.ctx.getApiKey():null,j.coderBaseUrl=t.ctx.baseUrl||j.coderBaseUrl;let G=Le=>process.stderr.write(`${new Date().toISOString()} ${Le}
502
- `);n(process.pid);let te=new AbortController;return process.once("SIGINT",()=>te.abort()),process.once("SIGTERM",()=>te.abort()),await new z(j,G).run(te),0}let l=19514,u=await s(l);(u.status==="running"||u.status==="starting")&&y(t.ctx,`daemon \u5DF2\u5728\u8FD0\u884C (pid ${u.pid})`,"\u7528 coder flow daemon restart \u91CD\u542F",1);let d=process.argv[0],m=process.argv[1],h=["flow","daemon","start","--foreground",...t.args.filter(z=>z!=="--foreground")],g=r();i.mkdirSync(require("path").dirname(g),{recursive:!0});let _=i.openSync(g,"a"),w=e(d,[m,...h],{detached:!0,stdio:["ignore",_,_],env:Object.assign({},process.env,{CODER_APIKEY:t.ctx.getApiKey?t.ctx.getApiKey():process.env.CODER_APIKEY||""})});i.closeSync(_),w.unref(),n(w.pid);let S=Date.now()+45e3,L=!1;for(;Date.now()<S;)if(await bo(500),(await s(l)).status==="running"){L=!0;break}return L?t.ctx.emit(`Daemon \u5DF2\u542F\u52A8 (pid ${w.pid})\u3002\u65E5\u5FD7: ${g}`):t.ctx.emit(`Daemon \u672A\u80FD\u5728 45s \u5185\u5C31\u7EEA\uFF0C\u68C0\u67E5\u65E5\u5FD7: ${g}`),0}async function Tu(t){let{checkHealth:e,requestShutdown:s}=ys(),{removePid:r}=Wt(),n=await e();if(n.status!=="running"&&n.status!=="starting")return t.ctx.emit("Daemon \u672A\u8FD0\u884C"),0;try{await s()}catch{if(n.pid)try{process.kill(n.pid,"SIGTERM")}catch{}}let o=Date.now()+15e3;for(;Date.now()<o;){await bo(500);let i=await e();if(i.status!=="running"&&i.status!=="starting")return r(),t.ctx.emit("Daemon \u5DF2\u505C\u6B62"),0}return t.ctx.emit("Daemon \u4ECD\u5728\u505C\u6B62\u4E2D\uFF08\u53EF\u80FD\u6709\u4EFB\u52A1\u5728\u6267\u884C\uFF09"),0}async function Xb(t){return await Tu(t),await bo(1e3),$u(t)}async function Iu(t){let{checkHealth:e}=ys(),{daemonLogPath:s}=Wt(),r=await e();return t.ctx.isJson?(t.ctx.emit(r),0):(r.status==="running"?(t.ctx.emit(`Daemon: \u8FD0\u884C\u4E2D (pid ${r.pid}, uptime ${r.uptime})`),Array.isArray(r.agents)&&r.agents.length&&t.ctx.emit(`Agents: ${r.agents.join(", ")}`),t.ctx.emit(`Workspaces: ${Array.isArray(r.workspaces)?r.workspaces.length:0}`)):r.status==="starting"?t.ctx.emit(`Daemon: \u542F\u52A8\u4E2D (pid ${r.pid})`):(t.ctx.emit("Daemon: \u672A\u8FD0\u884C"),t.ctx.emit(`\u65E5\u5FD7: ${s()}`)),0)}async function Qb(t){let e=require("fs"),{daemonLogPath:s}=Wt(),r=s();e.existsSync(r)||y(t.ctx,`\u65E5\u5FD7\u6587\u4EF6\u4E0D\u5B58\u5728: ${r}`,"\u5148\u542F\u52A8 daemon: coder flow daemon start",4);let n=t.args.includes("-f")||t.args.includes("--follow"),o=t.args.find((l,u)=>(l==="-n"||l==="--lines")&&t.args[u+1])&&t.args[t.args.findIndex(l=>l==="-n"||l==="--lines")+1]||"50",i=parseInt(o,10)||50,c=e.readFileSync(r,"utf8").split(`
503
- `).filter(l=>l).slice(-i);for(let l of c)t.ctx.emit(l);if(n){let l=e.statSync(r).size,u=setInterval(()=>{let d=e.statSync(r);if(d.size>l){let m=Buffer.alloc(d.size-l),h=e.openSync(r,"r");e.readSync(h,m,0,m.length,l),e.closeSync(h),l=d.size,m.toString().split(`
504
- `).forEach(g=>{g&&t.ctx.emit(g)})}},500);process.once("SIGINT",()=>clearInterval(u)),await new Promise(()=>{})}return 0}async function ek(t){let e=require("fs"),s=require("path"),r=require("os"),n=t.args.find((u,d)=>u==="--workspaces-root"&&t.args[d+1])&&t.args[t.args.findIndex(u=>u==="--workspaces-root")+1]||process.env.MULTICA_WORKSPACES_ROOT||s.join(r.homedir(),"multica_workspaces");if(!e.existsSync(n))return t.ctx.isJson?(t.ctx.emit({workspaces_root:n,total_bytes:0,tasks:[]}),0):(t.ctx.emit(`Workspaces root: ${n}`),t.ctx.emit("(no task directories)"),0);let o=[],i=0;for(let u of e.readdirSync(n)){if(u===".repos")continue;let d=s.join(n,u);if(e.statSync(d).isDirectory())for(let m of e.readdirSync(d)){let h=s.join(d,m);if(!e.statSync(h).isDirectory())continue;let g=Uu(h);i+=g,o.push({path:`${u}/${m}`,size:g})}}o.sort((u,d)=>d.size-u.size);let a=t.args[t.args.findIndex(u=>u==="--top")+1],c=a?parseInt(a,10):0,l=c>0?o.slice(0,c):o;if(t.ctx.isJson)return t.ctx.emit({workspaces_root:n,total_bytes:i,tasks:o}),0;if(t.ctx.emit(`Workspaces root: ${n}`),!l.length)return t.ctx.emit("(no task directories)"),0;for(let u of l)t.ctx.emit(` ${u.path.padEnd(40)} ${Cu(u.size)}`);return t.ctx.emit(`
505
- Total: ${Cu(i)} across ${o.length} task(s)`),0}function Uu(t){let e=require("fs"),s=require("path"),r=0;try{for(let n of e.readdirSync(t,{withFileTypes:!0})){if(n.name===".git")continue;let o=s.join(t,n.name);if(n.isDirectory())r+=Uu(o);else if(n.isFile())try{r+=e.statSync(o).size}catch{}}}catch{}return r}function Cu(t){return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:t<1073741824?`${(t/1048576).toFixed(1)} MiB`:`${(t/1073741824).toFixed(1)} GiB`}function tk(t){let{parseDuration:e}=Rn(),s={},r=n=>{let o=t.args.indexOf(n);return o!==-1?t.args[o+1]:void 0};return r("--daemon-id")&&(s.daemonId=r("--daemon-id")),r("--device-name")&&(s.deviceName=r("--device-name")),r("--runtime-name")&&(s.runtimeName=r("--runtime-name")),r("--poll-interval")&&(s.pollInterval=e(r("--poll-interval"),3e4)),r("--heartbeat-interval")&&(s.heartbeatInterval=e(r("--heartbeat-interval"),15e3)),r("--max-concurrent-tasks")&&(s.maxConcurrentTasks=parseInt(r("--max-concurrent-tasks"),10)),s}function bo(t){return new Promise(e=>setTimeout(e,t))}async function sk(t){let e=require("fs"),s=require("path"),r=t.arg;r||y(t.ctx,"\u7F3A\u5C11 attachment id","\u7528\u6CD5: coder flow attachment download <id> [-o <dir>]",3),A(t);let n=await C(t,"GET",`/api/attachments/${encodeURIComponent(r)}`),o=E(t,n)||{},i=o.download_url;i||y(t.ctx,"attachment \u65E0 download_url",null,4);let a=s.basename(o.filename||r),c=b(t.args,"-o")||b(t.args,"--output-dir")||".",l=s.join(c,a),u=await new Promise((m,h)=>{(i.startsWith("https")?require("https"):require("http")).get(i,_=>{let w=[];_.on("data",S=>w.push(S)),_.on("end",()=>m(Buffer.concat(w))),_.on("error",h)}).on("error",h)});e.mkdirSync(c,{recursive:!0}),e.writeFileSync(l,u);let d=s.resolve(l);return t.ctx.emit(t.ctx.isJson?{id:o.id||r,filename:a,path:d}:`\u5DF2\u4E0B\u8F7D: ${d}`),0}vu.exports={LABELS:U,issue:{list:jw,get:_u,info:_u,create:Mw,update:Gw,delete:lb,status:Bw,assign:Fw,search:Zw,runs:eb,rerun:tb,"pull-requests":Yw,"run-messages":Xw,"cancel-task":Qw,comment:{list:Vw,add:Ww,delete:Kw},label:{list:sb,add:rb,remove:nb},metadata:{list:ob,get:ib,set:ab,delete:cb},subscriber:{list:zw,add:Jw,remove:Hw}},label:{list:ub,get:bu,info:bu,create:db,update:fb,delete:pb},agent:{list:ts("agents","agents",["id","name","status"],{webPath:"agents",linkCol:"name"}),get:De("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),info:De("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),create:mb,update:We("agents","PUT",[["name","name"],["description","description"],["instructions","instructions"],["runtime-id","runtime_id"],["model","model"],["thinking-level","thinking_level"],["visibility","visibility"],["max-concurrent-tasks","max_concurrent_tasks"]],["id","name","model","runtime_id"],{idArg:!0}),archive:go("agents","archive",["id","name","status"]),restore:go("agents","restore",["id","name","status"]),tasks:wu("agents","tasks","tasks",["id","status","created_at"]),skills:{list:hb,add:gb,set:yb},env:{get:_b,set:wb}},project:{list:ts("projects","projects",["id","title","status"],{webPath:"projects",linkCol:"title"}),get:De("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),info:De("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),create:We("projects","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:We("projects","PUT",[["name","title"],["title","title"],["description","description"],["status","status"]],["id","title"],{idArg:!0}),delete:xr("projects"),status:bb,resource:{list:kb,add:xb,update:Yb,remove:Sb}},squad:{list:ts("squads","squads",["id","name"],{webPath:"squads",linkCol:"name"}),get:De("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),info:De("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),create:We("squads","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:We("squads","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:xr("squads"),activity:$b,member:{list:Ib,add:Cb,remove:Ab,"set-role":Eb}},autopilot:{list:ts("autopilots","autopilots",["id","title","status"],{webPath:"autopilots",linkCol:"title"}),get:De("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),info:De("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),create:We("autopilots","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:We("autopilots","PUT",[["name","title"],["title","title"],["description","description"]],["id","title"],{idArg:!0}),delete:xr("autopilots"),runs:wu("autopilots","runs","runs",["id","status","created_at"]),trigger:go("autopilots","trigger",["id","status"]),"trigger-add":Tb,"trigger-update":Ub,"trigger-delete":vb,"trigger-rotate-url":Ob},skill:{list:ts("skills","skills",["id","name"],{webPath:"skills",linkCol:"name"}),get:De("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),info:De("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),create:We("skills","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:We("skills","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:xr("skills"),import:Db,search:Rb,files:{list:Lb,upsert:Pb,delete:Nb}},runtime:{list:ts("runtimes","runtimes",["id","name","status"]),get:ku,info:ku,models:Gb,usage:qb,activity:jb,update:Mb},workspace:{list:Bb,get:xu,info:xu,switch:Fb,update:Zb,member:{list:Vb}},repo:{list:Wb,add:Kb,remove:Su,rm:Su,checkout:zb},user:{profile:{get:Jb,update:Hb}},attachment:{download:sk},daemon:{list:Iu,start:$u,stop:Tu,restart:Xb,status:Iu,logs:Qb,"disk-usage":ek}}});var Pu=k((A0,Lu)=>{function Du(t){let e=["USAGE"," coder flow <command> <subcommand> [flags]","","CORE COMMANDS"," agent: Work with agents"," autopilot: Manage autopilots (scheduled/triggered agent automations)"," issue: Work with issues"," label: Work with issue labels"," project: Work with projects"," repo: Work with repositories"," skill: Work with skills"," squad: Work with squads"," workspace: Work with workspaces","","RUNTIME COMMANDS"," daemon: Control the local agent runtime daemon"," runtime: Work with agent runtimes","","ADDITIONAL COMMANDS"," attachment: Work with attachments"," user: Work with your user account","","GLOBAL FLAGS"," --team <id> Specify team as workspace (default: coder team current)"," --workspace <id> Alias for --team"," --format json Structured JSON output (default: text)","","ENVIRONMENT VARIABLES"," MULTICA_BASE_URL Override the Multica server URL"," CODER_APIKEY API key (shared with coder auth)","","EXAMPLES"," $ coder team current # confirm current team (= multica workspace)"," $ coder flow issue list --format json"," $ coder flow issue get MUL-123"," $ coder flow agent list"," $ coder flow runtime list","","LEARN MORE"," Use `coder flow <command> --help` for more information about a command."];t.emit(e.join(`
506
- `))}function Ru(t,e){let r={issue:["Work with issues","","USAGE"," coder flow issue <command> [flags]","","COMMANDS"," assign: Assign an issue to a member, agent, or squad"," cancel-task: Cancel a running or queued task"," comment: Work with issue comments"," create: Create a new issue"," delete: Delete an issue"," get: Get issue details"," label: Manage labels on an issue"," list: List issues in the workspace"," metadata: Manage per-issue metadata (KV)"," pull-requests: List pull requests linked to an issue"," rerun: Re-enqueue an issue as a fresh task"," run-messages: List messages for an execution"," runs: List execution history for an issue"," search: Search issues by title or description"," status: Change issue status"," subscriber: Work with issue subscribers"," update: Update an issue"],agent:["Work with agents","","USAGE"," coder flow agent <command> [flags]","","COMMANDS"," archive: Archive an agent"," create: Create a new agent"," env: Read and update an agent's custom environment variables (audited)"," get: Get agent details"," list: List agents in the workspace"," restore: Restore an archived agent"," skills: Manage agent skill assignments"," tasks: List tasks for an agent"," update: Update an agent","","SUBCOMMANDS (skills)"," skills list <agent-id> List skills assigned to agent"," skills add <agent-id> --skill-ids <id1,id2> Add skills (keeps existing)"," skills set <agent-id> --skill-ids <id1,id2> Replace all skills (pass empty to clear)"],project:["Work with projects","","USAGE"," coder flow project <command> [flags]","","COMMANDS"," create: Create a new project"," delete: Delete a project"," get: Get project details"," list: List projects in the workspace"," resource: Manage resources attached to a project"," status: Change project status"," update: Update a project"],label:["Work with issue labels","","USAGE"," coder flow label <command> [flags]","","COMMANDS"," create: Create a new label"," delete: Delete a label"," get: Get label details"," list: List labels in the workspace"," update: Update a label"],autopilot:["Manage autopilots (scheduled/triggered agent automations)","","USAGE"," coder flow autopilot <command> [flags]","","COMMANDS"," create: Create a new autopilot"," delete: Delete an autopilot"," get: Get autopilot details (includes triggers)"," list: List autopilots in the workspace"," runs: List execution history for an autopilot"," trigger: Manually trigger an autopilot to run once"," trigger-add: Add a schedule or webhook trigger to an autopilot"," trigger-delete: Delete a trigger"," trigger-rotate-url: Rotate the webhook URL of a webhook trigger"," trigger-update: Update an existing trigger"," update: Update an autopilot"],squad:["Work with squads","","USAGE"," coder flow squad <command> [flags]","","COMMANDS"," activity: Record a squad leader evaluation on an issue"," create: Create a new squad"," delete: Delete a squad (requires --yes)"," get: Get squad details"," list: List squads in the workspace"," member: Work with squad members"," update: Update a squad"],skill:["Work with skills","","USAGE"," coder flow skill <command> [flags]","","COMMANDS"," create: Create a new skill"," delete: Delete a skill"," files: Work with skill files"," get: Get skill details (includes files)"," import: Import a skill from a URL (clawhub.ai, skills.sh, or github.com)"," list: List skills in the workspace"," search: Search for installable skills"," update: Update a skill"],runtime:["Work with agent runtimes","","USAGE"," coder flow runtime <command> [flags]","","COMMANDS"," activity: Get hourly task activity for a runtime"," get: Get runtime details"," list: List runtimes in the workspace"," models: List available models for a runtime (async, polls until ready)"," update: Initiate a CLI update on a runtime"," usage: Get token usage for a runtime"],workspace:["Work with workspaces","","USAGE"," coder flow workspace <command> [flags]","","COMMANDS"," get: Get workspace details"," list: List all workspaces you belong to"," member: Manage workspace members"," switch: Set the default workspace"," update: Update workspace metadata (admin/owner only)"],repo:["Work with repositories","","USAGE"," coder flow repo <command> [flags]","","COMMANDS"," add: Add repositories to the workspace registry"," checkout: Check out a repository into the working directory"," list: List workspace repositories"," remove: Remove repositories from the workspace registry"],user:["Work with your user account","","USAGE"," coder flow user <command> [flags]","","COMMANDS"," profile: Get or update your personal profile"],attachment:["Work with attachments","","USAGE"," coder flow attachment <command> [flags]","","COMMANDS"," download: Download an attachment to a local file"],daemon:["Control the local agent runtime daemon","","USAGE"," coder flow daemon <command> [flags]","","COMMANDS"," disk-usage: Show workspace disk usage"," logs: Show daemon logs [-f] [-n <lines>]"," restart: Restart the daemon"," start: Start the daemon [--foreground] [--daemon-id] [--device-name]"," [--runtime-name] [--poll-interval] [--heartbeat-interval]"," [--max-concurrent-tasks]"," status: Show daemon status [--format json]"," stop: Stop the running daemon","","ENVIRONMENT VARIABLES"," MULTICA_SERVER_URL Server URL (default: https://flow.makecoder.com)"," MULTICA_DAEMON_POLL_INTERVAL Task poll interval (default: 30s)"," MULTICA_DAEMON_HEARTBEAT_INTERVAL Heartbeat interval (default: 15s)"," MULTICA_DAEMON_MAX_CONCURRENT_TASKS Max parallel tasks (default: 20)"," MULTICA_WORKSPACES_ROOT Workdir root (default: ~/multica_workspaces)"]}[e];r?t.emit(r.join(`
507
- `)):Du(t)}var rk={issue:{list:["List issues in the workspace","","USAGE"," coder flow issue list [flags]","","FLAGS"," --status <string> Filter by status (backlog|todo|in_progress|in_review|done|cancelled)"," --priority <string> Filter by priority (none|low|medium|high|urgent)"," --limit <n> Max results"," --offset <n> Pagination offset"," --full-id Include full UUID in output"],get:["Get issue details","","USAGE"," coder flow issue get <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key (e.g. MUL-123)"],create:["Create a new issue","","USAGE"," coder flow issue create --title <title> [flags]","","FLAGS"," --title <string> Issue title (required)"," --description <string> Issue description"," --priority <string> none | low | medium | high | urgent"," --status <string> Initial status"," --project <id> Project ID to assign to"," --agent <slug> Assign to agent (by name or ID); alias: --assignee"],update:["Update an issue","","USAGE"," coder flow issue update <id|KEY> [flags]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --title <string> New title"," --description <string> New description"," --priority <string> none | low | medium | high | urgent"," --status <string> New status"],delete:["Delete an issue","","USAGE"," coder flow issue delete <id|KEY> [--yes]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --yes Skip confirmation (high-impact operation)"],status:["Change issue status","","USAGE"," coder flow issue status <id|KEY> --set <status>","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --set <string> New status (required); alias: --status"],assign:["Assign an issue to a member, agent, or squad","","USAGE"," coder flow issue assign <id|KEY> --agent <slug>"," coder flow issue assign <id|KEY> --unassign","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --agent <slug> Assign to agent by name or ID; alias: --to"," --unassign Remove current assignee"],search:["Search issues by title or description","","USAGE"," coder flow issue search <query> [flags]","","ARGS"," <query> Search keyword","","FLAGS"," --limit <n> Max results"," --include-closed Include closed/cancelled issues"],runs:["List execution history for an issue","","USAGE"," coder flow issue runs <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],rerun:["Re-enqueue an issue as a fresh task","","USAGE"," coder flow issue rerun <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],"pull-requests":["List pull requests linked to an issue","","USAGE"," coder flow issue pull-requests <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],"run-messages":["List messages for an execution (task run)","","USAGE"," coder flow issue run-messages <task-id> [flags]","","ARGS"," <task-id> Task run UUID","","FLAGS"," --issue <id> Filter to a specific issue"," --since <seq> Return messages with sequence > seq"],"cancel-task":["Cancel a running or queued task","","USAGE"," coder flow issue cancel-task <task-id> [flags]","","ARGS"," <task-id> Task run UUID","","FLAGS"," --issue <id> Issue ID (optional context)"],comment:["Work with issue comments","","USAGE"," coder flow issue comment <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List comments on an issue"," add <id|KEY> --content <text> Add a comment"," delete <issue-id> <comment-id> Delete a comment"],"comment list":["List comments on an issue","","USAGE"," coder flow issue comment list <id|KEY>"],"comment add":["Add a comment to an issue","","USAGE"," coder flow issue comment add <id|KEY> --content <text> [flags]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --content <string> Comment text (required); alias: --body"," --parent <id> Parent comment ID (for threads)"],"comment delete":["Delete a comment","","USAGE"," coder flow issue comment delete <issue-id> <comment-id>"],label:["Manage labels on an issue","","USAGE"," coder flow issue label <subcommand> ...","","SUBCOMMANDS"," list <issue-id> List labels on an issue"," add <issue-id> <label-id> Add a label"," remove <issue-id> <label-id> Remove a label"],"label list":["List labels on an issue","","USAGE"," coder flow issue label list <id|KEY>"],"label add":["Add a label to an issue","","USAGE"," coder flow issue label add <issue-id> <label-id>"],"label remove":["Remove a label from an issue","","USAGE"," coder flow issue label remove <issue-id> <label-id>"],metadata:["Manage per-issue metadata (KV store)","","USAGE"," coder flow issue metadata <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List all KV entries"," get <id|KEY> --key <k> Get a single value"," set <id|KEY> --key <k> --value <v> Set a value (auto-typed)"," delete <id|KEY> --key <k> Delete a key"],"metadata list":["List metadata for an issue","","USAGE"," coder flow issue metadata list <id|KEY>"],"metadata get":["Get a metadata value","","USAGE"," coder flow issue metadata get <id|KEY> --key <key>","","FLAGS"," --key <string> Metadata key (required)"],"metadata set":["Set a metadata value","","USAGE"," coder flow issue metadata set <id|KEY> --key <k> --value <v> [flags]","","FLAGS"," --key <string> Metadata key (required)"," --value <string> Value (required; auto-parsed as JSON number/bool/string)"," --type <string> Force type: auto | string | number | bool"],"metadata delete":["Delete a metadata key","","USAGE"," coder flow issue metadata delete <id|KEY> --key <key>","","FLAGS"," --key <string> Metadata key (required)"],subscriber:["Work with issue subscribers","","USAGE"," coder flow issue subscriber <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List subscribers"," add <id|KEY> [--user <name>] Subscribe (self or a user)"," remove <id|KEY> [--user <name>] Unsubscribe"],"subscriber list":["List subscribers for an issue","","USAGE"," coder flow issue subscriber list <id|KEY>"],"subscriber add":["Subscribe to an issue","","USAGE"," coder flow issue subscriber add <id|KEY> [flags]","","FLAGS"," --user <name> User display name or username"," --user-id <uuid> User UUID"],"subscriber remove":["Unsubscribe from an issue","","USAGE"," coder flow issue subscriber remove <id|KEY> [flags]","","FLAGS"," --user <name> User display name or username"," --user-id <uuid> User UUID"]},agent:{list:["List agents in the workspace","","USAGE"," coder flow agent list"],get:["Get agent details","","USAGE"," coder flow agent get <id>","","ARGS"," <id> Agent UUID or name"],create:["Create a new agent","","USAGE"," coder flow agent create --name <name> --runtime-id <id> [flags]","","FLAGS"," --name <string> Agent name (required)"," --runtime-id <uuid> Runtime to bind (required)"," --description <string> Agent description"," --instructions <string> System instructions"," --model <string> Model ID (run `coder flow runtime models <id>` to list)"," --thinking-level <string> Thinking level: low | medium | high"," --visibility <string> private (default) | workspace"," --max-concurrent-tasks <n> Max parallel tasks (default 6)"," --skill-ids <id1,id2,...> Skill IDs to assign on create (comma-separated)"],update:["Update an agent","","USAGE"," coder flow agent update <id> [flags]","","ARGS"," <id> Agent UUID or name","","FLAGS"," --name <string> New name"," --description <string> New description"," --instructions <string> New system instructions"," --runtime-id <uuid> New runtime"," --model <string> New model"," --thinking-level <string> low | medium | high"," --visibility <string> private | workspace"," --max-concurrent-tasks <n> Max parallel tasks"],archive:["Archive an agent","","USAGE"," coder flow agent archive <id>"],restore:["Restore an archived agent","","USAGE"," coder flow agent restore <id>"],tasks:["List tasks for an agent","","USAGE"," coder flow agent tasks <id>"],skills:["Manage agent skill assignments","","USAGE"," coder flow agent skills <subcommand> ...","","SUBCOMMANDS"," list <agent-id> List skills assigned to agent"," add <agent-id> --skill-ids <id1,id2> Add skills (keeps existing)"," set <agent-id> --skill-ids <id1,id2> Replace all skills (empty to clear)"],"skills list":["List skills assigned to an agent","","USAGE"," coder flow agent skills list <agent-id>"],"skills add":["Add skills to an agent (keeps existing)","","USAGE"," coder flow agent skills add <agent-id> --skill-ids <id1,id2>","","FLAGS"," --skill-ids <csv> Comma-separated skill UUIDs (required)"],"skills set":["Replace all skills on an agent","","USAGE"," coder flow agent skills set <agent-id> --skill-ids <id1,id2>","","FLAGS"," --skill-ids <csv> Comma-separated skill UUIDs (empty string to clear all)"],env:["Read and update an agent's custom environment variables","","USAGE"," coder flow agent env <subcommand> ...","","SUBCOMMANDS"," get <agent-id> List env vars"," set <agent-id> --custom-env '{...}' Replace env vars (JSON object)"],"env get":["Get agent environment variables","","USAGE"," coder flow agent env get <agent-id>"],"env set":["Set agent environment variables","","USAGE"," coder flow agent env set <agent-id> --custom-env <json>","","FLAGS",` --custom-env <json> Full env as JSON object, e.g. '{"KEY":"val"}' (required)`]},project:{list:["List projects in the workspace","","USAGE"," coder flow project list"],get:["Get project details","","USAGE"," coder flow project get <id>"],create:["Create a new project","","USAGE"," coder flow project create --title <title> [flags]","","FLAGS"," --title <string> Project title (required); alias: --name"," --description <string> Project description"],update:["Update a project","","USAGE"," coder flow project update <id> [flags]","","FLAGS"," --title <string> New title; alias: --name"," --description <string> New description"," --status <string> New status"],delete:["Delete a project","","USAGE"," coder flow project delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],status:["Change project status","","USAGE"," coder flow project status <id> --set <status>","","FLAGS"," --set <string> New status (required); alias: --status"],resource:["Manage resources attached to a project","","USAGE"," coder flow project resource <subcommand> ...","","SUBCOMMANDS"," list <project-id> List resources"," add <project-id> --url <u> Add a github_repo resource"," update <project-id> <resource-id> [flags] Update a resource"," remove <project-id> <resource-id> Remove a resource"],"resource list":["List resources in a project","","USAGE"," coder flow project resource list <project-id>"],"resource add":["Add a resource to a project","","USAGE"," coder flow project resource add <project-id> [flags]","","FLAGS"," --type <string> Resource type: github_repo (default) | local_directory"," --url <string> GitHub repo URL (github_repo)"," --default-branch-hint <string> Default branch override"," --local-path <string> Local path (local_directory)"," --daemon-id <string> Daemon ID (local_directory)"," --label <string> Display label"],"resource update":["Update a project resource","","USAGE"," coder flow project resource update <project-id> <resource-id> [flags]","","FLAGS"," --url <string> New URL"," --label <string> New label"," --position <n> New position"],"resource remove":["Remove a resource from a project","","USAGE"," coder flow project resource remove <project-id> <resource-id>"]},label:{list:["List labels in the workspace","","USAGE"," coder flow label list"],get:["Get label details","","USAGE"," coder flow label get <id>"],create:["Create a new label","","USAGE"," coder flow label create --name <n> --color <#hex>","","FLAGS"," --name <string> Label name (required)"," --color <string> Hex color code, e.g. #3b82f6 (required)"],update:["Update a label","","USAGE"," coder flow label update <id> [flags]","","FLAGS"," --name <string> New name"," --color <string> New hex color"],delete:["Delete a label","","USAGE"," coder flow label delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"]},autopilot:{list:["List autopilots in the workspace","","USAGE"," coder flow autopilot list"],get:["Get autopilot details (includes triggers)","","USAGE"," coder flow autopilot get <id>"],create:["Create a new autopilot","","USAGE"," coder flow autopilot create --title <title> [flags]","","FLAGS"," --title <string> Title (required); alias: --name"," --description <string> Description"],update:["Update an autopilot","","USAGE"," coder flow autopilot update <id> [flags]","","FLAGS"," --title <string> New title"," --description <string> New description"],delete:["Delete an autopilot","","USAGE"," coder flow autopilot delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],runs:["List execution history for an autopilot","","USAGE"," coder flow autopilot runs <id>"],trigger:["Manually trigger an autopilot to run once","","USAGE"," coder flow autopilot trigger <id>"],"trigger-add":["Add a schedule or webhook trigger to an autopilot","","USAGE"," coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'"," coder flow autopilot trigger-add <id> --kind webhook","","ARGS"," <id> Autopilot UUID","","FLAGS"," --kind <string> schedule | webhook (required)"," --cron <expr> Cron expression for schedule triggers, e.g. '0 9 * * *'"," --timezone <string> Timezone for cron (e.g. Asia/Shanghai)"," --label <string> Display label"],"trigger-update":["Update an existing trigger","","USAGE"," coder flow autopilot trigger-update <autopilot-id> <trigger-id> [flags]","","FLAGS"," --cron <expr> New cron expression"," --timezone <string> New timezone"," --label <string> New label"," --enabled true|false Enable or disable"],"trigger-delete":["Delete a trigger","","USAGE"," coder flow autopilot trigger-delete <autopilot-id> <trigger-id> [--yes]","","FLAGS"," --yes Skip confirmation"],"trigger-rotate-url":["Rotate the webhook URL of a webhook trigger","","USAGE"," coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]","","FLAGS"," --yes Confirm URL rotation (old URL becomes invalid immediately)"]},squad:{list:["List squads in the workspace","","USAGE"," coder flow squad list"],get:["Get squad details","","USAGE"," coder flow squad get <id>"],create:["Create a new squad","","USAGE"," coder flow squad create --name <name> [flags]","","FLAGS"," --name <string> Squad name (required)"," --description <string> Description"],update:["Update a squad","","USAGE"," coder flow squad update <id> [flags]","","FLAGS"," --name <string> New name"," --description <string> New description"],delete:["Delete a squad (requires --yes)","","USAGE"," coder flow squad delete <id> --yes","","FLAGS"," --yes Confirm deletion"],activity:["Record a squad leader evaluation on an issue","","USAGE"," coder flow squad activity <issue-id> <outcome> [flags]","","ARGS"," <issue-id> Issue UUID or short key"," <outcome> action | no_action | failed","","FLAGS"," --reason <string> Evaluation reason"],member:["Work with squad members","","USAGE"," coder flow squad member <subcommand> ...","","SUBCOMMANDS"," list <squad-id> List members"," add <squad-id> --member-id <id> [--type] [--role] Add a member"," remove <squad-id> --member-id <id> Remove a member"," set-role <squad-id> --member-id <id> --role <r> Change a member's role"],"member list":["List squad members","","USAGE"," coder flow squad member list <squad-id>"],"member add":["Add a member to a squad","","USAGE"," coder flow squad member add <squad-id> --member-id <id> [flags]","","FLAGS"," --member-id <uuid> Member UUID (required)"," --type <string> agent (default) | member"," --role <string> Role (default: member)"],"member remove":["Remove a member from a squad","","USAGE"," coder flow squad member remove <squad-id> --member-id <id>","","FLAGS"," --member-id <uuid> Member UUID (required)"," --type <string> agent (default) | member"],"member set-role":["Change a squad member's role","","USAGE"," coder flow squad member set-role <squad-id> --member-id <id> --role <r>","","FLAGS"," --member-id <uuid> Member UUID (required)"," --role <string> New role (required)"," --member-type <string> agent (default) | member"]},skill:{list:["List skills in the workspace","","USAGE"," coder flow skill list"],get:["Get skill details (includes files)","","USAGE"," coder flow skill get <id>"],create:["Create a new skill","","USAGE"," coder flow skill create --name <n> [flags]","","FLAGS"," --name <string> Skill name (required)"," --description <string> Description"],update:["Update a skill","","USAGE"," coder flow skill update <id> [flags]","","FLAGS"," --name <string> New name"," --description <string> New description"],delete:["Delete a skill","","USAGE"," coder flow skill delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],import:["Import a skill from a URL","","USAGE"," coder flow skill import --url <url> [flags]","","FLAGS"," --url <string> Source URL: clawhub.ai, skills.sh, or github.com (required)"," --on-conflict <string> fail (default) | overwrite | rename | skip"],search:["Search for installable skills","","USAGE"," coder flow skill search <query>","","ARGS"," <query> Search keyword"],files:["Work with skill files","","USAGE"," coder flow skill files <subcommand> ...","","SUBCOMMANDS"," list <skill-id> List files"," upsert <skill-id> --path <p> --content <c> Create or update a file"," delete <skill-id> <file-id> [--yes] Delete a file"],"files list":["List files in a skill","","USAGE"," coder flow skill files list <skill-id>"],"files upsert":["Create or update a skill file","","USAGE"," coder flow skill files upsert <skill-id> --path <p> --content <c>","","FLAGS"," --path <string> File path within the skill (required)"," --content <string> File content (required)"],"files delete":["Delete a skill file","","USAGE"," coder flow skill files delete <skill-id> <file-id> [--yes]","","FLAGS"," --yes Skip confirmation"]},runtime:{list:["List runtimes in the workspace","","USAGE"," coder flow runtime list"],get:["Get runtime details","","USAGE"," coder flow runtime get <id>","","ARGS"," <id> Runtime UUID or name"],models:["List available models for a runtime (async, polls until ready)","","USAGE"," coder flow runtime models <id>","","ARGS"," <id> Runtime UUID or name"],usage:["Get token usage for a runtime","","USAGE"," coder flow runtime usage <id> [flags]","","ARGS"," <id> Runtime UUID or name","","FLAGS"," --days <n> Number of days to include (default 90)"],activity:["Get hourly task activity for a runtime","","USAGE"," coder flow runtime activity <id>"],update:["Initiate a CLI update on a runtime","","USAGE"," coder flow runtime update <id> --target-version <v>","","FLAGS"," --target-version <string> Target version to update to (required)"]},workspace:{list:["List all workspaces you belong to","","USAGE"," coder flow workspace list"],get:["Get workspace details","","USAGE"," coder flow workspace get [id]","","ARGS"," [id] Workspace UUID or slug (default: current workspace)"],switch:["Set the default workspace","","USAGE"," coder flow workspace switch <id|slug>"],update:["Update workspace metadata (admin/owner only)","","USAGE"," coder flow workspace update [id] [flags]","","FLAGS"," --name <string> New workspace name"," --description <string> New description"," --context <string> New context string"," --issue-prefix <string> Issue key prefix"],member:["Manage workspace members","","USAGE"," coder flow workspace member list [workspace-id]"],"member list":["List workspace members","","USAGE"," coder flow workspace member list [workspace-id]"]},repo:{list:["List workspace repositories","","USAGE"," coder flow repo list"],add:["Add repositories to the workspace registry","","USAGE"," coder flow repo add <url> [<url>...] [flags]","","ARGS"," <url>... One or more repository URLs","","FLAGS"," --description <string> Description (only applied when adding a single repo)"],remove:["Remove repositories from the workspace registry","","USAGE"," coder flow repo remove <url> [<url>...]","","ARGS"," <url>... One or more repository URLs"],checkout:["Check out a repository into the working directory","","USAGE"," coder flow repo checkout <url> [flags]","","ARGS"," <url> Repository URL","","FLAGS"," --ref <string> Branch, tag, or commit to check out"]},user:{profile:["Get or update your personal profile","","USAGE"," coder flow user profile get"," coder flow user profile update --description <text>"," coder flow user profile update --clear"],"profile get":["Get your personal profile","","USAGE"," coder flow user profile get"],"profile update":["Update your personal profile","","USAGE"," coder flow user profile update --description <text>"," coder flow user profile update --clear","","FLAGS"," --description <string> New profile description"," --clear Clear the profile description"]},attachment:{download:["Download an attachment to a local file","","USAGE"," coder flow attachment download <id> [flags]","","ARGS"," <id> Attachment UUID","","FLAGS"," -o, --output-dir <dir> Directory to save file (default: current directory)"]},daemon:{start:["Start the daemon","","USAGE"," coder flow daemon start [flags]","","FLAGS"," --foreground Run in foreground (no daemonize)"," --daemon-id <string> Override daemon ID"," --device-name <string> Override device name"," --runtime-name <string> Override runtime name"," --poll-interval <duration> Task poll interval (default 30s)"," --heartbeat-interval <dur> Heartbeat interval (default 15s)"," --max-concurrent-tasks <n> Max parallel tasks (default 20)"],stop:["Stop the running daemon","","USAGE"," coder flow daemon stop"],restart:["Restart the daemon","","USAGE"," coder flow daemon restart"],status:["Show daemon status","","USAGE"," coder flow daemon status [flags]","","FLAGS"," --format json JSON output"],logs:["Show daemon logs","","USAGE"," coder flow daemon logs [flags]","","FLAGS"," -f, --follow Follow log output"," -n, --lines <n> Number of recent lines to show (default 50)"],"disk-usage":["Show workspace disk usage","","USAGE"," coder flow daemon disk-usage [flags]","","FLAGS"," --workspaces-root <dir> Custom workspaces root directory"," --top <n> Show only the top N entries by size"]}};function nk(t,e,s,r){let n=rk[e]||{},o=r&&n[`${s} ${r}`]||n[s];o?t.emit(o.join(`
508
- `)):Ru(t,e)}Lu.exports={showHelp:Du,showResourceHelp:Ru,showVerbHelp:nk}});var qu=k((T0,Nu)=>{var{MulticaHttp:ok,parseJson:$0}=Tn(),ik=Ou(),{showHelp:ak,showResourceHelp:ck,showVerbHelp:lk}=Pu(),uk=new Set(["--format","--apikey"]);function dk(t){let e=[];for(let s=0;s<t.length;s++){if(uk.has(t[s])){s++;continue}e.push(t[s])}return e}var fk=new Set(["issue","agent","project","label","skill","squad","autopilot","runtime","workspace","repo","user","attachment","daemon"]),pk=new Set(["daemon"]),ko=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({multicaSubcommand:e,multicaRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return ak(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let i=e;if(!fk.has(i))return n.fail(`\u672A\u77E5\u547D\u4EE4: coder flow ${i}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let a=dk(s||[]);if(a.length===0||a[0]==="--help"||a[0]==="-h")return ck(n,i),0;if(a.includes("--help")||a.includes("-h")){let S=a[0],L=a[1]&&!a[1].startsWith("-")?a[1]:null;return lk(n,i,S,L),0}let{teamId:c,remaining:l}=this._extractWorkspaceFlag(a),u=pk.has(i)?null:await this._resolveWorkspace(c,o),d=this._resolve(i,l);if(d.error)return n.fail(d.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let m=n.getMulticaBaseUrl?n.getMulticaBaseUrl():null,h=new ok(o,m,u),{fn:g,args:_}=d,w={ctx:n,http:h,args:_,arg:_[0]};try{return await g(w)||0}catch(S){return S&&S.handled?S.code||1:(n.fail(S.message||String(S),S.hint),1)}}_resolve(e,s){let r=ik[e];if(!r)return{error:`\u8D44\u6E90 ${e} \u6682\u672A\u5B9E\u73B0`};let n=s[0];if(!n||n.startsWith("-")){let i=r.list||r.get;return i?{fn:i,args:s}:{error:`${e} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let o=r[n];if(!o){let i=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${i}\uFF09`}}if(typeof o=="object"&&o!==null&&typeof o!="function"){let i=s[1];if(!i||i.startsWith("-")){let c=o.list||o.get;return c?{fn:c,args:s.slice(1)}:{error:`${e} ${n} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let a=o[i];if(!a){let c=Object.keys(o).join(" | ");return{error:`\u672A\u77E5 ${e} ${n} \u52A8\u8BCD: ${i}\uFF08\u53EF\u7528: ${c}\uFF09`}}return{fn:a,args:s.slice(2)}}return{fn:o,args:s.slice(1)}}_extractWorkspaceFlag(e){for(let s of["--workspace","--team"]){let r=e.indexOf(s);if(r!==-1&&e[r+1])return{teamId:e[r+1],remaining:[...e.slice(0,r),...e.slice(r+2)]}}return{teamId:null,remaining:e}}async _resolveWorkspace(e,s){if(e)return e;let r=this.ctx,n=r.getTeam?r.getTeam():null;if(n&&n.id)return n.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),i=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(i.status===200){let c=this.teamService.parseJson(i.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};Nu.exports=ko});var Mu=k((U0,ju)=>{var mk=qu(),hk=er();function gk(t,e){let s=new mk(e);return s.teamService=new hk(e),t.command("flow [args...]").description("\u64CD\u4F5C Coder Flow\uFF08issue/agent \u7B49\uFF09").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],o=await s.handle({multicaSubcommand:n[0],multicaRemainingArgs:n.slice(1),apikey:e.getApiKey()});process.exitCode=o||0}),s}ju.exports={register:gk}});var Zu=k((v0,Fu)=>{var yk=qs(),_k=er();function Bu(t,e,s){let[r,n]=e;return{[`${t}Subcommand`]:r,[`${t}Arg`]:n,[`${t}RemainingArgs`]:e.slice(1),apikey:s.getApiKey(),coderBaseUrl:s.getCoderBaseUrl()}}function Gu(t,e,s){t.command(`${s.name} [args...]`).description(s.describe).allowUnknownOption().helpOption(!1).action(async r=>{let n=await s.service.handle(Bu(s.prefix,r||[],e));process.exitCode=n||0})}function wk(t,e){let s=new _k(e),r=new yk(e);return r.teamService=s,Gu(t,e,{name:"team",describe:"\u7BA1\u7406\u56E2\u961F\u4E0E\u6210\u5458\uFF08\u9762\u5411 AI\uFF09",prefix:"team",service:s}),Gu(t,e,{name:"skills",describe:"\u7BA1\u7406 Claude Code skills",prefix:"skills",service:r}),{teamService:s,skillsService:r}}Fu.exports={register:wk,buildHandleArgs:Bu}});var Wu=k((O0,Vu)=>{var bk=ca(),kk=Va(),xk=Ha(),Sk=oc(),Ik=wc(),Ck=Mu(),Ek=Zu();function Ak(t,e){return bk.register(t,e),kk.register(t,e),xk.register(t,e),Sk.register(t,e),Ik.register(t,e),Ck.register(t,e),{domains:Ek.register(t,e)}}Vu.exports={registerAll:Ak}});var Ju=k((D0,zu)=>{var{CoderContext:Ku}=Ao(),{SHORTCUTS:$k,isAgentName:Tk,launchAgent:Uk}=Ds(),vk=ei(),{version:Ok}=vt(),xo=class{constructor(){this.vscodeExtensionService=new vk}_readGlobalOptions(e){let s=null,r=null;for(let n=0;n<e.length;n++)e[n]==="--format"&&e[n+1]?s=e[n+1]:e[n]==="--apikey"&&e[n+1]&&(r=e[n+1]);return{format:s,apikey:r}}_leadingCompletionFlag(e){let s=new Set(["--format","--apikey"]);for(let r=0;r<e.length;r++){let n=e[r];if(n==="--install-completion"||n==="--show-completion")return n;if(s.has(n)){r++;continue}if(!n.startsWith("-"))return null}return null}async run(e=process.argv.slice(2)){if(e[0]==="__complete"){let{complete:i}=Xi();return i(e.slice(1))}let s=this._leadingCompletionFlag(e);if(s){let i=this._readGlobalOptions(e),a=new Ku(i),{installCompletion:c,showCompletion:l}=oa(),u=e.indexOf(s),d=e[u+1]&&!e[u+1].startsWith("-")?e[u+1]:null;return s==="--install-completion"?c(a,d):l(a,d)}try{await this.vscodeExtensionService.ensureExtensionInstalled()}catch(i){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",i)}let r=this._readGlobalOptions(e),n=new Ku(r),o=e[0];return o?$k.has(o)&&Tk(o)?await this._launchShortcut(o,e.slice(1),n):await this._runCommander(e,n):await this._launchShortcut("claude",[],n)}async _launchShortcut(e,s,r){let n=r.getApiKey();return n?(this._notifySkillUpdates(n),await Uk(e,s,r)||0):(r.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`\uFF08\u83B7\u53D6: https://makecoder.com/my/apikeys\uFF09"),1)}_notifySkillUpdates(e){try{let s=qs();new s(null).notifyAndRefreshUpdates(e)}catch{}}async _runCommander(e,s){let{Command:r}=require("commander"),{registerAll:n}=Wu(),o=new r;return o.name("coder").description("Coder \u2014 AI Agent Runtime OS\uFF08AI\u667A\u80FD\u4F53\u64CD\u4F5C\u7CFB\u7EDF\uFF09").version(Ok,"-v, --version","\u663E\u793A\u7248\u672C\u53F7").helpOption("-h, --help","\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").enablePositionalOptions().addHelpText("after",["","\u5FEB\u6377\u65B9\u5F0F:"," coder \u7B49\u540C coder agent claude"," coder claude ... \u7B49\u540C coder agent claude ..."," coder codex ... \u7B49\u540C coder agent codex ..."," coder gemini ... \u7B49\u540C coder agent gemini ...","",`\u914D\u7F6E\u6587\u4EF6: ${s.configPath}`].join(`
509
- `)),o.option("--format <fmt>","\u8F93\u51FA\u683C\u5F0F\uFF1Atext\uFF08\u9ED8\u8BA4\uFF09| json"),o.option("--apikey <key>","\u4E34\u65F6\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09"),o.option("--install-completion","\u4E3A\u5F53\u524D shell \u5B89\u88C5\u81EA\u52A8\u8865\u5168"),o.option("--show-completion","\u6253\u5370\u5F53\u524D shell \u7684\u8865\u5168\u811A\u672C\uFF08\u4F9B\u590D\u5236/\u81EA\u5B9A\u4E49\u5B89\u88C5\uFF09"),n(o,s),await o.parseAsync(e,{from:"user"}),process.exitCode||0}};zu.exports=xo});var Dk=Ju(),{shouldSuppressUpdateNotice:Rk}=Zr();process.on("unhandledRejection",(t,e)=>{console.error("Unhandled Promise Rejection:",t),process.exit(1)});process.on("uncaughtException",t=>{console.error("Uncaught Exception:",t.message),process.env.CODER_DEBUG&&console.error(t.stack),process.exit(1)});function Lk(t,e){let s=o=>o.replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(n[o]||0))return!0;if((r[o]||0)<(n[o]||0))return!1}return!1}function Pk(){if(Rk())return;let t=require("https"),{version:e}=vt(),r=t.get("https://registry.npmmirror.com/makecoder/latest",{timeout:5e3},n=>{let o="";n.on("data",i=>{o+=i}),n.on("end",()=>{try{let i=JSON.parse(o).version;i&&Lk(i,e)&&console.error(`\x1B[33m\u26A1 \u68C0\u6D4B\u5230\u65B0\u7248\u672C ${i}\uFF08\u5F53\u524D ${e}\uFF09\uFF0C\u8FD0\u884C coder update \u5347\u7EA7\x1B[0m`)}catch{}})});r.on("error",()=>{}),r.on("timeout",()=>r.destroy())}async function Nk(){let t=new Set(["pub","auth","update","skills","wiki","team"]),e=process.argv[2];e!=="__complete"&&(!e||!t.has(e))&&Pk(),process.env.CODER_NESTED="1";let s=new Dk;try{let r=await s.run();process.exit(r)}catch(r){console.error(`Fatal error: ${r.message}`),process.env.CODER_DEBUG&&console.error(r.stack),process.exit(1)}}Nk().catch(t=>{console.error(`Startup error: ${t.message}`),process.exit(1)});
503
+ `+s)}function Dt(t,e,s,r,n,o){if(t.listenerCount("wsClientError")){let i=new Error(n);Error.captureStackTrace(i,Dt),t.emit("wsClientError",i,s,e)}else $s(s,r,n,o)}});var yu=k((A0,gu)=>{"use strict";var Ow=iu(),Dw=kr(),Rw=Qt(),Lw=io(),Pw=lo(),Nw=go(),Ue=Cr(),hu=mu();Ue.createWebSocketStream=Ow;Ue.extension=Dw;Ue.PerMessageDeflate=Rw;Ue.Receiver=Lw;Ue.Sender=Pw;Ue.Server=hu;Ue.subprotocol=Nw;Ue.WebSocket=Ue;Ue.WebSocketServer=hu;gu.exports=Ue});var bu=k((U0,wu)=>{var $0=require("https"),T0=require("http"),_o=class{constructor(e,s,r,n,o,i){this.cfg=e,this.token=s,this.cliVersion=r||"dev",this.onWakeup=n,this.onHeartbeatAck=o,this.log=i,this._running=!1,this._ws=null,this._backoff=1e3,this._abortSignal=null,this._getRuntimeIds=null}start(e,s){this._running=!0,this._abortSignal=e,this._getRuntimeIds=s,this._loop()}stop(){if(this._running=!1,this._ws){try{this._ws.close()}catch{}this._ws=null}}async _loop(){for(;this._running&&(!this._abortSignal||!this._abortSignal.aborted);){let e=this._getRuntimeIds?this._getRuntimeIds():[];if(e.length===0){await _u(2e3);continue}try{await this._connect(e),this._backoff=1e3}catch(s){if(!this._running)return;this.log(`[wakeup] ws unavailable (${s.message}); polling fallback active, retry in ${this._backoff}ms`)}if(!this._running)return;await _u(qw(this._backoff)),this._backoff<3e4&&(this._backoff=Math.min(this._backoff*2,3e4))}}_buildWsUrl(e){let r=(this.cfg.serverUrl||"https://flow.makecoder.com").replace(/\/+$/,"").replace(/^https?:\/\//,o=>o==="https://"?"wss://":"ws://"),n=[...e].sort().join(",");return`${r}/api/daemon/ws?runtime_ids=${encodeURIComponent(n)}`}async _connect(e){let s=this._buildWsUrl(e),r;try{r=yu()}catch{throw new Error("ws module not available \u2014 install with: npm install ws")}return new Promise((n,o)=>{let i={Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion},a=new r(s,{headers:i,handshakeTimeout:1e4});this._ws=a;let c=()=>{try{a.close()}catch{}};this._abortSignal&&this._abortSignal.addEventListener("abort",c,{once:!0}),a.on("open",()=>{this.log(`[wakeup] websocket connected (${e.length} runtimes)`),this._backoff=1e3,this.onWakeup("")}),a.on("message",l=>{try{let u=JSON.parse(l.toString());this._handleMessage(u)}catch(u){this.log(`[wakeup] invalid message: ${u.message}`)}}),a.on("error",l=>{this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,o(l)}),a.on("close",(l,u)=>{this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this._running&&this.log(`[wakeup] websocket closed (${l})`),n()})})}_handleMessage(e){let s=e.type;if(s==="daemon:task_available"){let r=e.payload||{},n=r.runtime_id||"",o=r.task_id||"";this.log(`[wakeup] task_available runtimeId=${n} taskId=${o}`),this.onWakeup(n)}else s==="daemon:heartbeat_ack"&&this.onHeartbeatAck&&this.onHeartbeatAck(e.payload||{})}};function _u(t){return new Promise(e=>setTimeout(e,t))}function qw(t){return Math.max(500,t+(Math.random()-.5)*t*.2)}wu.exports={TaskWakeupLoop:_o}});var Iu=k((v0,Su)=>{var wo=require("os"),{HealthServer:jw}=ks(),{DaemonClient:Mw}=Gc(),{Poller:ku}=il(),{Heartbeat:Gw}=dl(),{TaskWakeupLoop:Bw}=bu(),{loadOrCreateDaemonId:Fw}=Ht(),{runGc:Zw}=Wn(),xu=4320*60*1e3,bo=class{constructor(e,s){this.cfg=e,this.log=s||console.error,this._runtimeIds=[],this._runtimeProviders={},this._pollers={},this._heartbeat=null,this._wakeupLoop=null,this._health=null,this._client=null,this._daemonId=null}async run(e){let s=this.cfg,r=e&&typeof e.abort=="function"?e:null,n=r?r.signal:e;this._health=new jw(s.healthPort||19514),this._health.setShutdown(()=>{r?r.abort():process.emit("SIGTERM")}),this._health.start(),this._daemonId=Fw(s.daemonId),this._health.daemonId=this._daemonId,this._client=new Mw(s.serverUrl,s.token,s.cliVersion||"dev"),this.log(`[daemon] starting id=${this._daemonId} server=${s.serverUrl} version=${s.cliVersion||"dev"}`),this.log(`[daemon] config: pollInterval=${s.pollInterval}ms heartbeatInterval=${s.heartbeatInterval}ms maxConcurrentTasks=${s.maxConcurrentTasks}`);try{let i=await this._client.renewToken();i?.renewed&&this.log(`[daemon] token renewed expires_at=${i.expires_at}`)}catch(i){this.log(`[daemon] token renewal preflight skipped: ${i.message}`)}let o=[];try{this.log(`[daemon] fetching workspaces from ${s.serverUrl}/api/workspaces`),o=await this._client.getWorkspaces(),this.log(`[daemon] found ${o.length} workspace(s): ${o.map(i=>i.id||i.name).join(", ")||"(none)"}`)}catch(i){this.log(`[daemon] getWorkspaces error: ${i.message}`)}this._health.workspaces=o.map(i=>i.id||i.name||"");for(let i of o)await this._registerWorkspace(i);this._runtimeIds.length===0&&this.log("[daemon] WARNING: no runtimes registered \u2014 tasks cannot be claimed"),this._health.agents=this._runtimeIds.map(i=>`claude:${i}`),this._health.status="running",setImmediate(()=>Zw(s));for(let i of this._runtimeIds){let a=new ku(s,this._client,i,this.log);this._pollers[i]=a,a.start(n)}this.log(`[daemon] started ${Object.keys(this._pollers).length} poller(s)`),this._wakeupLoop=new Bw(s,s.token,s.cliVersion||"dev",i=>{if(i){let a=this._pollers[i];if(a)this.log(`[daemon] wakeup signal for runtime=${i.slice(0,8)}`),a.wakeup();else{this.log(`[daemon] wakeup signal for unknown runtime=${i.slice(0,8)}, fanning out`);for(let c of Object.values(this._pollers))c.wakeup()}}else for(let a of Object.values(this._pollers))a.wakeup()},i=>{i&&i.runtime_gone&&i.runtime_id&&(this.log(`[daemon] heartbeat_ack: runtime ${i.runtime_id} gone`),this._handleRuntimeGone(i.runtime_id))},this.log),this._wakeupLoop.start(n,()=>this._runtimeIds),this._heartbeat=new Gw(s,this._client,()=>this._runtimeIds,this.log,i=>this._handleRuntimeGone(i),i=>this._runtimeProviders[i]||"claude"),this._heartbeat.start(n),this._startTokenRenewalLoop(n),this.log("[daemon] running \u2014 waiting for tasks"),await Vw(n),this.log("[daemon] shutting down"),this._heartbeat.stop(),this._wakeupLoop.stop();for(let i of Object.values(this._pollers))i.stop();if(this._runtimeIds.length)try{await this._client.deregister(this._runtimeIds),this.log(`[daemon] deregistered ${this._runtimeIds.length} runtime(s)`)}catch(i){this.log(`[daemon] deregister error: ${i.message}`)}this._health.close(),this.log("[daemon] stopped")}async _registerWorkspace(e){try{this.log(`[daemon] registering runtime for workspace=${e.id||e.name} deviceName=${this.cfg.deviceName||wo.hostname()}`);let r=((await this._client.register({workspaceId:e.id,daemonId:this._daemonId,deviceName:this.cfg.deviceName||wo.hostname(),cliVersion:this.cfg.cliVersion||"dev",runtimes:[{name:this.cfg.runtimeName||`Claude (${wo.hostname()})`,type:"claude",version:this.cfg.cliVersion||"dev",status:"online"}]}))?.runtimes||[]).map(n=>n.id).filter(Boolean);for(let n of r)this._runtimeProviders[n]="claude";this._runtimeIds.push(...r),this.log(`[daemon] registered workspace=${e.id} runtimeIds=[${r.join(", ")}]`);for(let n of r)try{await this._client.recoverOrphans(n),this.log(`[daemon] recover-orphans OK runtime=${n.slice(0,8)}`)}catch(o){this.log(`[daemon] recover-orphans failed runtime=${n.slice(0,8)}: ${o.message}`)}}catch(s){this.log(`[daemon] register error workspace=${e.id}: ${s.message}`)}}async _handleRuntimeGone(e){let s=this._runtimeIds.indexOf(e);s!==-1&&this._runtimeIds.splice(s,1);let r=this._runtimeProviders[e]||"claude";delete this._runtimeProviders[e];let n=this._pollers[e];n&&(n.stop(),delete this._pollers[e]),this.log(`[daemon] runtime ${e.slice(0,8)} gone (provider=${r}), re-registering`);try{let o=await this._client.getWorkspaces();for(let i of o){let a=this._runtimeIds.length;await this._registerWorkspace(i);let c=this._runtimeIds.slice(a);for(let l of c){let u=new ku(this.cfg,this._client,l,this.log);this._pollers[l]=u,u.start()}}}catch(o){this.log(`[daemon] re-register after runtime_gone failed: ${o.message}`)}}_startTokenRenewalLoop(e){let s=async()=>{if(!(e&&e.aborted)){try{let r=await this._client.renewToken();r?.renewed&&this.log(`[daemon] token renewed expires_at=${r.expires_at}`)}catch(r){this.log(`[daemon] token renewal failed: ${r.message}`)}(!e||!e.aborted)&&setTimeout(s,xu)}};setTimeout(s,xu)}};function Vw(t){return new Promise(e=>{if(!t){process.once("SIGINT",e),process.once("SIGTERM",e);return}if(t.aborted)return e();t.addEventListener("abort",e,{once:!0})})}Su.exports={DaemonProcess:bo}});var ju=k((O0,qu)=>{var{emitTable:J,emitDetails:Z}=vc(),{abort:y,send:C,ensureOk:E,flag:w,positionals:Ee,requireWorkspaceId:A}=Rc();function Du(t,{full:e=!1,actors:s=null}={}){let r=t.assignee||(t.assignee_id?`${t.assignee_type||""}:${t.assignee_id}`:""),n=r;if(s&&r){let o=r.indexOf(":"),i=o!==-1?r.slice(o+1):r,a=s.get(i);a&&(n=a.name)}return{key:t.key||t.identifier||"",...e?{id:t.id||""}:{},title:t.title||"",status:t.status||"",priority:t.priority||"",assignee:n}}async function Ru(t,e){let s=await C(t,"GET","/api/agents"),r=E(t,s)||{},n=Array.isArray(r)?r:r.agents||[],o=String(e).toLowerCase(),i=n.find(a=>a.id===e||(a.slug||"").toLowerCase()===o||(a.name||"").toLowerCase()===o);return i||y(t.ctx,`agent '${e}' \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder flow agent list \u67E5\u770B\u53EF\u7528 agent",4),i.id}var U={id:"ID",key:"Key",name:"\u540D\u79F0",slug:"Slug",title:"\u6807\u9898",status:"\u72B6\u6001",priority:"\u4F18\u5148\u7EA7",assignee:"\u8D1F\u8D23\u4EBA",description:"\u63CF\u8FF0",current:"\u5F53\u524D",start_date:"\u5F00\u59CB\u65E5\u671F",due_date:"\u622A\u6B62\u65E5\u671F",created_at:"\u521B\u5EFA\u65F6\u95F4",updated_at:"\u66F4\u65B0\u65F6\u95F4",author:"\u4F5C\u8005",content:"\u5185\u5BB9",agent:"Agent",deleted:"\u5DF2\u5220\u9664"},we={status:{backlog:"\u5F85\u89C4\u5212",todo:"\u5F85\u529E",in_progress:"\u8FDB\u884C\u4E2D",in_review:"\u8BC4\u5BA1\u4E2D",done:"\u5DF2\u5B8C\u6210",cancelled:"\u5DF2\u53D6\u6D88",open:"\u5F00\u653E",closed:"\u5DF2\u5173\u95ED",active:"\u6D3B\u8DC3",inactive:"\u505C\u7528",archived:"\u5DF2\u5F52\u6863",planned:"\u89C4\u5212\u4E2D",started:"\u5DF2\u542F\u52A8",on_hold:"\u6401\u7F6E",idle:"\u7A7A\u95F2",busy:"\u5FD9\u788C",running:"\u8FD0\u884C\u4E2D",queued:"\u6392\u961F\u4E2D",pending:"\u7B49\u5F85\u4E2D",paused:"\u5DF2\u6682\u505C",stopped:"\u5DF2\u505C\u6B62",completed:"\u5DF2\u5B8C\u6210",failed:"\u5931\u8D25",success:"\u6210\u529F",error:"\u9519\u8BEF"},priority:{none:"\u65E0",low:"\u4F4E",medium:"\u4E2D",high:"\u9AD8",urgent:"\u7D27\u6025"}};async function xo(t,e,s){if(t.ctx.isJson||!s)return null;let r=await t.http.getWorkspaceSlug();return r?`${t.http.baseUrl}/${r}/${e}/${s}`:null}async function So(t,e,s){if(t.ctx.isJson)return null;let r=await t.http.getWorkspaceSlug();return r?s.map(n=>n&&n.id?`${t.http.baseUrl}/${r}/${e}/${n.id}`:null):null}async function Ww(t){A(t);let e=new URLSearchParams;e.set("workspace_id",t.http.workspaceId);let s=w(t.args,"--status"),r=w(t.args,"--priority"),n=w(t.args,"--limit"),o=w(t.args,"--offset");s&&e.set("status",s),r&&e.set("priority",r),n&&e.set("limit",n),o&&e.set("offset",o);let i=t.args.includes("--full-id"),[a,c]=await Promise.all([C(t,"GET",`/api/issues?${e.toString()}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),l=E(t,a)||{},u=Array.isArray(l)?l:l.issues||[],d=await So(t,"issues",u),p=c?u.map(h=>{let g=h.assignee||(h.assignee_id?`${h.assignee_type||""}:${h.assignee_id}`:"");if(!g)return null;let _=g.indexOf(":"),b=_!==-1?g.slice(_+1):g;return c.get(b)?.url||null}):null;return J(t.ctx,u.map(h=>Du(h,{full:i,actors:c})),{labels:U,values:we,linkCol:"key",rowLinks:d,colLinks:p?{col:"assignee",links:p}:void 0,empty:"\u65E0 issue"}),0}async function Cu(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue get <id|KEY>",3),A(t);let[s,r]=await Promise.all([C(t,"GET",`/api/issues/${encodeURIComponent(e)}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),n=E(t,s)||{},o=await xo(t,"issues",n.id),i=n.assignee||(n.assignee_id?`${n.assignee_type||""}:${n.assignee_id}`:""),a=i,c=null;if(r&&i){let l=i.indexOf(":"),u=l!==-1?i.slice(l+1):i,d=r.get(u);d&&(a=d.name,c=d.url)}return Z(t.ctx,[["key",n.key||n.identifier||""],["id",n.id||""],["title",n.title||""],["status",n.status||""],["priority",n.priority||""],["assignee",a],["start_date",n.start_date||""],["due_date",n.due_date||""],["description",n.description||""]],null,{labels:U,values:we,link:o?{key:"key",url:o}:null,fieldLinks:c?{assignee:c}:null}),0}async function Kw(t){let e=A(t),s=w(t.args,"--title");s||y(t.ctx,"\u7F3A\u5C11 --title","\u7528\u6CD5: coder flow issue create --title <t>",3);let r={workspace_id:e,title:s},n=w(t.args,"--description"),o=w(t.args,"--priority"),i=w(t.args,"--status"),a=w(t.args,"--project"),c=w(t.args,"--parent"),l=w(t.args,"--agent")||w(t.args,"--assignee"),u=w(t.args,"--assignee-id");n!==void 0&&(r.description=n),o!==void 0&&(r.priority=o),i!==void 0&&(r.status=i),a!==void 0&&(r.project_id=a),c!==void 0&&(r.parent_id=c),u!==void 0?r.assignee_id=u:l!==void 0&&(r.assignee_type="agent",r.assignee_id=await Ru(t,l));let d=process.env.MULTICA_QUICK_CREATE_TASK_ID;d&&(r.origin_type="quick_create",r.origin_id=d);let p=await C(t,"POST","/api/issues",r),h=E(t,p)||{};return Z(t.ctx,[["key",h.key||h.identifier||""],["id",h.id||""],["title",h.title||s],["status",h.status||""]],null,{labels:U,values:we}),0}async function Io(t,e,s,r){let n=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}`,s),o=E(t,n)||{},i=await xo(t,"issues",o.id);return Z(t.ctx,r(o),null,{labels:U,values:we,link:i?{key:"key",url:i}:null}),0}async function zw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue update <id|KEY> ...",3),A(t);let s={},r=w(t.args,"--title"),n=w(t.args,"--description"),o=w(t.args,"--priority"),i=w(t.args,"--status");return r!==void 0&&(s.title=r),n!==void 0&&(s.description=n),o!==void 0&&(s.priority=o),i!==void 0&&(s.status=i),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u66F4\u65B0\u5B57\u6BB5","\u81F3\u5C11\u7ED9\u4E00\u4E2A --title/--description/--priority/--status",3),Io(t,e,s,a=>[["key",a.key||a.identifier||e],["title",a.title||""],["status",a.status||""],["priority",a.priority||""]])}async function Jw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3);let s=w(t.args,"--set")||w(t.args,"--status");return s||y(t.ctx,"\u7F3A\u5C11 --set <status>","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3),A(t),Io(t,e,{status:s},r=>[["key",r.key||r.identifier||e],["status",r.status||s]])}async function Hw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue assign <id|KEY> --agent <slug>",3),A(t);let s=w(t.args,"--agent")||w(t.args,"--to"),r=t.args.includes("--unassign"),n;return r?n={assignee_type:null,assignee_id:null}:(s||y(t.ctx,"\u7F3A\u5C11 --agent <slug>","\u6216\u7528 --unassign \u53D6\u6D88\u6307\u6D3E",3),n={assignee_type:"agent",assignee_id:await Ru(t,s)}),Io(t,e,n,o=>[["key",o.key||o.identifier||e],["status",o.status||""],["assignee",o.assignee_id?`${o.assignee_type||""}:${o.assignee_id}`:""]])}async function Yw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u5173\u952E\u8BCD","\u7528\u6CD5: coder flow issue search <query>",3),A(t);let s=new URLSearchParams;s.set("q",e),s.set("workspace_id",t.http.workspaceId);let r=w(t.args,"--limit");r&&s.set("limit",r),t.args.includes("--include-closed")&&s.set("include_closed","true");let n=await C(t,"GET",`/api/issues/search?${s.toString()}`),o=E(t,n)||{},i=Array.isArray(o)?o:o.issues||[],a=await So(t,"issues",i);return J(t.ctx,i.map(c=>Du(c)),{labels:U,values:we,linkCol:"key",rowLinks:a,empty:"\u65E0\u5339\u914D issue"}),0}async function Xw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/comments`),r=E(t,s)||{},n=Array.isArray(r)?r:r.comments||[];return J(t.ctx,n.map(o=>({id:o.id||"",author:o.author_id||o.user_id||"",created_at:o.created_at||"",content:o.content||""})),{labels:U,empty:"\u65E0\u8BC4\u8BBA"}),0}async function Qw(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment add <id|KEY> --content <text>",3),A(t);let s=w(t.args,"--content")||w(t.args,"--body");s||y(t.ctx,"\u7F3A\u5C11 --content",null,3);let r={content:s},n=w(t.args,"--parent");n&&(r.parent_id=n);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/comments`,r),i=E(t,o)||{};return Z(t.ctx,[["id",i.id||""],["content",i.content||s]],null,{labels:U}),0}async function eb(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue comment delete <issue-id> <comment-id>",3),A(t);let n=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/comments/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`\u8BC4\u8BBA ${r} \u5DF2\u5220\u9664`),0}async function tb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/subscribers`),r=E(t,s)||{},n=Array.isArray(r)?r:r.subscribers||[];return J(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",type:o.type||""})),{labels:U,empty:"\u65E0\u8BA2\u9605\u8005"}),0}async function sb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber add <id|KEY> [--user <name>]",3),A(t);let s={},r=w(t.args,"--user-id"),n=w(t.args,"--user");r?s.user_id=r:n&&(s.user=n);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/subscribers`,s),i=E(t,o)||{};return t.ctx.emit(t.ctx.isJson?i:`\u5DF2\u8BA2\u9605 issue ${e}`),0}async function rb(t){let s=Ee(t.args,{valueFlags:["--user-id","--user"]})[0];s||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber remove <id|KEY>",3),A(t);let r={},n=w(t.args,"--user-id"),o=w(t.args,"--user");n?r.user_id=n:o&&(r.user=o);let i=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/subscribers`,r);return E(t,i),t.ctx.emit(t.ctx.isJson?{unsubscribed:!0}:`\u5DF2\u53D6\u6D88\u8BA2\u9605 issue ${s}`),0}async function nb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue pull-requests <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/pull-requests`),r=E(t,s)||{},n=Array.isArray(r)?r:r.pull_requests||[];return J(t.ctx,n.map(o=>({id:o.id||"",title:o.title||"",url:o.url||"",status:o.status||""})),{labels:U,empty:"\u65E0\u5173\u8054 PR"}),0}async function ob(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue run-messages <task-id> [--since <seq>]",3),A(t);let s=new URLSearchParams,r=w(t.args,"--issue"),n=w(t.args,"--since");r&&s.set("issue_id",r),n&&s.set("since",n);let o=s.toString(),i=await C(t,"GET",`/api/tasks/${encodeURIComponent(e)}/messages${o?"?"+o:""}`),a=E(t,i)||{},c=Array.isArray(a)?a:a.messages||[];return t.ctx.isJson?(t.ctx.emit(c),0):(J(t.ctx,c.map(l=>({seq:String(l.seq??l.sequence??""),type:l.type||l.role||"",content:(l.content||l.output||"").slice(0,100)})),{labels:{seq:"Seq",type:"\u7C7B\u578B",content:"\u5185\u5BB9"},empty:"\u65E0\u6D88\u606F"}),0)}async function ib(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue cancel-task <task-id>",3),A(t);let s={},r=w(t.args,"--issue");r&&(s.issue_id=r);let n=await C(t,"POST",`/api/tasks/${encodeURIComponent(e)}/cancel`,s),o=E(t,n)||{};return Z(t.ctx,[["id",o.id||e],["status",o.status||""]],null,{labels:U}),0}async function ab(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue runs <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/task-runs`),r=E(t,s)||{},n=Array.isArray(r)?r:r.runs||r.tasks||[];return J(t.ctx,n.map(o=>({id:o.id||"",status:o.status||"",agent:o.agent_id||o.assignee_id||"",created_at:o.created_at||""})),{labels:U,values:we,empty:"\u65E0\u4EFB\u52A1\u5386\u53F2"}),0}async function cb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue rerun <id|KEY>",3),A(t);let s=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/rerun`,{}),r=E(t,s)||{};return Z(t.ctx,[["id",r.id||""],["status",r.status||""]],null,{labels:U,values:we}),0}function Ts(t,e){return e.map(s=>[s,t[s]??""])}function os(t,e,s,{webPath:r=null,linkCol:n=null}={}){return async o=>{A(o);let i=new URLSearchParams;i.set("workspace_id",o.http.workspaceId);let a=await C(o,"GET",`/api/${t}?${i.toString()}`),c=E(o,a)||{},l=Array.isArray(c)?c:c[e]||[],u=r?await So(o,r,l):null;return J(o.ctx,l.map(d=>{let p={};for(let h of s)p[h]=d[h]??"";return p}),{labels:U,values:we,linkCol:n,rowLinks:u,empty:`\u65E0 ${t}`}),0}}function Ne(t,e,{webPath:s=null,linkCol:r=null}={}){return async n=>{let o=n.arg;o||y(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... get <id>",3),A(n);let i=await C(n,"GET",`/api/${t}/${encodeURIComponent(o)}`),a=E(n,i)||{},c=s?await xo(n,s,a.id):null;return Z(n.ctx,Ts(a,e),null,{labels:U,values:we,link:c&&r?{key:r,url:c}:null}),0}}function Ar(t){return async e=>{let s=e.arg;if(s||y(e.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... delete <id>",3),A(e),!e.args.includes("--yes"))return e.ctx.emit(`\u5C06\u5220\u9664 ${t}/${s}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let r=await C(e,"DELETE",`/api/${t}/${encodeURIComponent(s)}`);return E(e,r),e.ctx.emit(e.ctx.isJson?{deleted:s}:`\u5DF2\u5220\u9664 ${s}`),0}}function Je(t,e,s,r,{withWorkspace:n=!1,idArg:o=!1}={}){return async i=>{let a=A(i),c=`/api/${t}`;if(o){let h=i.arg;h||y(i.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id> ...",3),c+=`/${encodeURIComponent(h)}`}let l={};n&&(l.workspace_id=a);for(let[h,g]of s){let _=w(i.args,`--${h}`);_!==void 0&&(l[g]=_)}Object.keys(l).filter(h=>h!=="workspace_id").length||y(i.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5",`\u7ED9\u51FA ${s.map(h=>"--"+h[0]).join(" / ")}`,3);let d=await C(i,e,c,l),p=E(i,d)||{};return Z(i.ctx,Ts(p,r),null,{labels:U,values:we}),0}}function ko(t,e,s){return async r=>{let n=r.arg;n||y(r.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,`\u7528\u6CD5: coder flow ... ${e} <id>`,3),A(r);let o=await C(r,"POST",`/api/${t}/${encodeURIComponent(n)}/${e}`,{}),i=E(r,o)||{};return Z(r.ctx,Ts(i,s),null,{labels:U,values:we}),0}}function Eu(t,e,s,r){return async n=>{let o=n.arg;o||y(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id>",3),A(n);let i=await C(n,"GET",`/api/${t}/${encodeURIComponent(o)}/${e}`),a=E(n,i)||{},c=Array.isArray(a)?a:a[s]||[];return J(n.ctx,c.map(l=>{let u={};for(let d of r)u[d]=l[d]??"";return u}),{labels:U,values:we,empty:"\uFF08\u7A7A\uFF09"}),0}}async function lb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue label list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/labels`),r=E(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return J(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",color:o.color||""})),{labels:U,empty:"\u65E0\u6807\u7B7E"}),0}async function ub(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label add <issue-id> <label-id>",3),A(t);let n=await C(t,"POST",`/api/issues/${encodeURIComponent(s)}/labels`,{label_id:r}),o=E(t,n)||{},i=Array.isArray(o)?o:o.labels||[];return J(t.ctx,i.map(a=>({id:a.id||"",name:a.name||"",color:a.color||""})),{labels:U,empty:"\u65E0\u6807\u7B7E"}),0}async function db(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label remove <issue-id> <label-id>",3),A(t);let n=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/labels/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`\u6807\u7B7E ${r} \u5DF2\u4ECE issue ${s} \u79FB\u9664`),0}async function pb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata list <id|KEY>",3),A(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),r=E(t,s)||{},n=r.metadata||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let o=Object.entries(n).map(([i,a])=>({key:i,value:String(a),type:typeof a}));return J(t.ctx,o,{labels:U,empty:"\u65E0 metadata"}),0}async function fb(t){let e=t.arg,s=w(t.args,"--key");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),s||y(t.ctx,"\u7F3A\u5C11 --key","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),A(t);let r=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),n=E(t,r)||{},o=n.metadata||n||{};s in o||y(t.ctx,`metadata key '${s}' \u4E0D\u5B58\u5728`,null,4);let i=o[s];return t.ctx.isJson?(t.ctx.emit(i),0):(Z(t.ctx,[["key",s],["value",String(i)],["type",typeof i]],null,{labels:U}),0)}async function mb(t){let e=t.arg,s=w(t.args,"--key"),r=w(t.args,"--value"),n=w(t.args,"--type");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata set <id|KEY> --key <k> --value <v>",3),s||y(t.ctx,"\u7F3A\u5C11 --key",null,3),r===void 0&&y(t.ctx,"\u7F3A\u5C11 --value",null,3),A(t);let o=r;if(!n||n==="auto")try{o=JSON.parse(r)}catch{o=r}else n==="string"?o=r:n==="number"?(o=Number(r),Number.isNaN(o)&&y(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u6570\u5B57`,null,3)):n==="bool"&&(r!=="true"&&r!=="false"&&y(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u5E03\u5C14\uFF08true/false\uFF09`,null,3),o=r==="true");let i=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`,{value:o}),a=E(t,i)||{},c=a.metadata||a||{};if(t.ctx.isJson)return t.ctx.emit(c),0;let l=Object.entries(c).map(([u,d])=>({key:u,value:String(d),type:typeof d}));return J(t.ctx,l,{labels:U,empty:"\uFF08\u7A7A\uFF09"}),0}async function hb(t){let e=t.arg,s=w(t.args,"--key");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata delete <id|KEY> --key <k>",3),s||y(t.ctx,"\u7F3A\u5C11 --key",null,3),A(t);let r=await C(t,"DELETE",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`);return E(t,r),t.ctx.emit(t.ctx.isJson?{deleted:s}:`metadata key '${s}' \u5DF2\u5220\u9664`),0}async function gb(t){let e=t.arg;if(e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue delete <id|KEY> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 issue/${e}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let s=await C(t,"DELETE",`/api/issues/${encodeURIComponent(e)}`);return E(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`issue ${e} \u5DF2\u5220\u9664`),0}async function yb(t){A(t);let e=new URLSearchParams({workspace_id:t.http.workspaceId}),s=await C(t,"GET",`/api/labels?${e.toString()}`),r=E(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return J(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",color:o.color||"",created_at:o.created_at||""})),{labels:U,empty:"\u65E0 label"}),0}async function Au(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label get <id>",3),A(t);let s=await C(t,"GET",`/api/labels/${encodeURIComponent(e)}`),r=E(t,s)||{};return Z(t.ctx,[["id",r.id||""],["name",r.name||""],["color",r.color||""],["created_at",r.created_at||""]],null,{labels:U}),0}async function _b(t){let e=w(t.args,"--name"),s=w(t.args,"--color");e||y(t.ctx,"\u7F3A\u5C11 --name","\u7528\u6CD5: coder flow label create --name <n> --color <#hex>",3),s||y(t.ctx,"\u7F3A\u5C11 --color\uFF08\u683C\u5F0F: #3b82f6\uFF09",null,3),A(t);let r=await C(t,"POST","/api/labels",{name:e,color:s}),n=E(t,r)||{};return Z(t.ctx,[["id",n.id||""],["name",n.name||""],["color",n.color||""]],null,{labels:U}),0}async function wb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label update <id> [--name <n>] [--color <#>]",3),A(t);let s={},r=w(t.args,"--name"),n=w(t.args,"--color");r!==void 0&&(s.name=r),n!==void 0&&(s.color=n),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --color",3);let o=await C(t,"PUT",`/api/labels/${encodeURIComponent(e)}`,s),i=E(t,o)||{};return Z(t.ctx,[["id",i.id||""],["name",i.name||""],["color",i.color||""]],null,{labels:U}),0}async function bb(t){let e=t.arg;if(e||y(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label delete <id> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 label/${e}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let s=await C(t,"DELETE",`/api/labels/${encodeURIComponent(e)}`);return E(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`label ${e} \u5DF2\u5220\u9664`),0}async function kb(t){let e=A(t),s=w(t.args,"--name");s||y(t.ctx,"--name \u662F\u5FC5\u586B\u9879",null,3);let r=w(t.args,"--runtime-id");r||y(t.ctx,"--runtime-id \u662F\u5FC5\u586B\u9879",null,3);let n={workspace_id:e,name:s,runtime_id:r};for(let[c,l]of[["description","description"],["instructions","instructions"],["model","model"],["thinking-level","thinking_level"],["visibility","visibility"],["max-concurrent-tasks","max_concurrent_tasks"]]){let u=w(t.args,`--${c}`);u!==void 0&&(n[l]=u)}let o=await C(t,"POST","/api/agents",n),i=E(t,o)||{},a=w(t.args,"--skill-ids");if(a&&i.id){let c=a.split(",").map(l=>l.trim()).filter(Boolean);if(c.length){let l=await C(t,"PUT",`/api/agents/${encodeURIComponent(i.id)}/skills`,{skill_ids:c});E(t,l)}}return Z(t.ctx,Ts(i,["id","name","model","runtime_id"]),null,{labels:U,values:we}),0}async function xb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills list <id>",3),A(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/skills`),r=E(t,s)||{},n=Array.isArray(r)?r:r.skills||[];return J(t.ctx,n.map(o=>({id:o.id||"",name:o.name||"",description:o.description||""})),{labels:U,empty:"\u65E0 skill"}),0}async function Sb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills add <agent-id> --skill-ids <id1,id2>",3),A(t);let s=(w(t.args,"--skill-ids")||"").split(",").map(o=>o.trim()).filter(Boolean);s.length||y(t.ctx,"\u7F3A\u5C11 --skill-ids",null,3);let r=await C(t,"POST",`/api/agents/${encodeURIComponent(e)}/skills/add`,{skill_ids:s}),n=E(t,r)||{};return t.ctx.emit(t.ctx.isJson?n:`skill \u5DF2\u6DFB\u52A0\u5230 agent ${e}`),0}async function Ib(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills set <agent-id> --skill-ids <id1,id2>",3),A(t);let s=w(t.args,"--skill-ids")||"",r=s?s.split(",").map(i=>i.trim()).filter(Boolean):[],n=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/skills`,{skill_ids:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684 skill \u5DF2\u66F4\u65B0`),0}async function Cb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent env get <id>",3),A(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/env`),r=E(t,s)||{},n=r.env||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let o=Object.entries(n).map(([i,a])=>({key:i,value:String(a)}));return J(t.ctx,o,{labels:U,empty:"\u65E0\u73AF\u5883\u53D8\u91CF"}),0}async function Eb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6",`\u7528\u6CD5: coder flow agent env set <id> --custom-env '{"KEY":"val"}'`,3),A(t);let s=w(t.args,"--custom-env");s||y(t.ctx,"\u7F3A\u5C11 --custom-env\uFF08JSON \u5BF9\u8C61\uFF09",null,3);let r;try{r=JSON.parse(s)}catch{y(t.ctx,"--custom-env \u4E0D\u662F\u6709\u6548 JSON",null,3)}let n=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/env`,{env:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684\u73AF\u5883\u53D8\u91CF\u5DF2\u66F4\u65B0`),0}async function Ab(t){let e=t.arg,s=w(t.args,"--set")||w(t.args,"--status");e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project status <id> --set <status>",3),s||y(t.ctx,"\u7F3A\u5C11 --set <status>",null,3),A(t);let r=await C(t,"PUT",`/api/projects/${encodeURIComponent(e)}`,{status:s}),n=E(t,r)||{};return Z(t.ctx,[["id",n.id||""],["title",n.title||""],["status",n.status||""]],null,{labels:U}),0}async function $b(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource list <project-id>",3),A(t);let s=await C(t,"GET",`/api/projects/${encodeURIComponent(e)}/resources`),r=E(t,s)||{},n=Array.isArray(r)?r:r.resources||[];return J(t.ctx,n.map(o=>({id:o.id||"",resource_type:o.resource_type||"",label:o.label||""})),{labels:U,empty:"\u65E0\u8D44\u6E90"}),0}async function Tb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource add <project-id> --type <t> --url <u>",3),A(t);let s=w(t.args,"--type")||"github_repo",r=w(t.args,"--url"),n=w(t.args,"--local-path"),o=w(t.args,"--daemon-id"),i=w(t.args,"--label"),a;if(s==="github_repo"){r||y(t.ctx,"github_repo \u9700\u8981 --url",null,3),a={url:r};let d=w(t.args,"--default-branch-hint");d&&(a.default_branch_hint=d)}else s==="local_directory"?((!n||!o)&&y(t.ctx,"local_directory \u9700\u8981 --local-path \u548C --daemon-id",null,3),a={local_path:n,daemon_id:o}):y(t.ctx,`\u672A\u77E5 resource type '${s}'\uFF1B\u652F\u6301: github_repo, local_directory`,null,3);let c={resource_type:s,resource_ref:a};i&&(c.label=i);let l=await C(t,"POST",`/api/projects/${encodeURIComponent(e)}/resources`,c),u=E(t,l)||{};return Z(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""]],null,{labels:U}),0}async function Ub(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource remove <project-id> <resource-id>",3),A(t);let n=await C(t,"DELETE",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`resource ${r} \u5DF2\u4ECE project ${s} \u79FB\u9664`),0}async function vb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member list <squad-id>",3),A(t);let s=await C(t,"GET",`/api/squads/${encodeURIComponent(e)}/members`),r=E(t,s)||{},n=Array.isArray(r)?r:r.members||[];return J(t.ctx,n.map(o=>({member_id:o.member_id||"",member_type:o.member_type||"",role:o.role||""})),{labels:U,empty:"\u65E0\u6210\u5458"}),0}async function Ob(t){let e=t.arg,s=w(t.args,"--member-id"),r=w(t.args,"--type")||"agent",n=w(t.args,"--role")||"member";e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member add <squad-id> --member-id <id> [--type agent|member] [--role <r>]",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),A(t);let o={member_type:r,member_id:s,role:n},i=await C(t,"POST",`/api/squads/${encodeURIComponent(e)}/members`,o),a=E(t,i)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u5DF2\u52A0\u5165 squad ${e}`),0}async function Db(t){let e=t.arg,s=w(t.args,"--member-id"),r=w(t.args,"--member-type")||"agent",n=w(t.args,"--role");e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member set-role <squad-id> --member-id <id> --role <r>",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),n||y(t.ctx,"\u7F3A\u5C11 --role",null,3),A(t);let o={member_type:r,member_id:s,role:n},i=await C(t,"PATCH",`/api/squads/${encodeURIComponent(e)}/members/role`,o),a=E(t,i)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u7684\u89D2\u8272\u5DF2\u66F4\u65B0\u4E3A ${n}`),0}async function Rb(t){let e=t.arg,s=w(t.args,"--member-id"),r=w(t.args,"--type")||"agent";e||y(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member remove <squad-id> --member-id <id>",3),s||y(t.ctx,"\u7F3A\u5C11 --member-id",null,3),A(t);let n={member_type:r,member_id:s},o=await C(t,"DELETE",`/api/squads/${encodeURIComponent(e)}/members`,n);return E(t,o),t.ctx.emit(t.ctx.isJson?{removed:s}:`\u6210\u5458 ${s} \u5DF2\u4ECE squad ${e} \u79FB\u9664`),0}async function Lb(t){let e=t.arg,s=t.args.find(i=>!i.startsWith("-")&&i!==e)||w(t.args,"--outcome");e||y(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow squad activity <issue-id> <outcome> [--reason <r>]",3),(!s||!["action","no_action","failed"].includes(s))&&y(t.ctx,"outcome \u5FC5\u987B\u662F action / no_action / failed",null,3),A(t);let r=w(t.args,"--reason")||"",n=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/squad-evaluated`,{outcome:s,reason:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`squad \u8BC4\u4F30\u5DF2\u8BB0\u5F55: ${s}\uFF08issue ${e}\uFF09`),0}async function Pb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 autopilot \u6807\u8BC6","\u7528\u6CD5: coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'",3),A(t);let s=w(t.args,"--kind")||"schedule";s!=="schedule"&&s!=="webhook"&&y(t.ctx,"--kind \u987B\u4E3A schedule \u6216 webhook",null,3);let r={kind:s};if(s==="schedule"){let a=w(t.args,"--cron");a||y(t.ctx,"schedule trigger \u9700\u8981 --cron",null,3),r.cron_expression=a;let c=w(t.args,"--timezone");c&&(r.timezone=c)}let n=w(t.args,"--label");n&&(r.label=n);let o=await C(t,"POST",`/api/autopilots/${encodeURIComponent(e)}/triggers`,r),i=E(t,o)||{};return Z(t.ctx,[["id",i.id||""],["kind",i.kind||""],["label",i.label||""]],null,{labels:U}),0}async function Nb(t){let e=Ee(t.args,{valueFlags:["--cron","--timezone","--label"]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-update <autopilot-id> <trigger-id> [--cron ...] [--enabled true|false]",3),A(t);let n={},o=w(t.args,"--cron"),i=w(t.args,"--timezone"),a=w(t.args,"--label"),c=w(t.args,"--enabled");o!==void 0&&(n.cron_expression=o),i!==void 0&&(n.timezone=i),a!==void 0&&(n.label=a),c!==void 0&&(n.enabled=c==="true"),Object.keys(n).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--cron / --timezone / --label / --enabled",3);let l=await C(t,"PATCH",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`,n),u=E(t,l)||{};return Z(t.ctx,[["id",u.id||""],["kind",u.kind||""]],null,{labels:U}),0}async function qb(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-delete <autopilot-id> <trigger-id>",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 trigger ${r}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let n=await C(t,"DELETE",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`trigger ${r} \u5DF2\u5220\u9664`),0}async function jb(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]",3),A(t),!t.args.includes("--yes"))return t.ctx.emit("\u6B64\u64CD\u4F5C\u5C06\u7ACB\u5373\u4F7F\u5F53\u524D webhook URL \u5931\u6548\u3002\u786E\u8BA4\u8BF7\u52A0 --yes"),10;let n=await C(t,"POST",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}/rotate-webhook-token`,{}),o=E(t,n)||{};return Z(t.ctx,[["id",o.id||""],["webhook_url",o.webhook_url||""]],null,{labels:U}),0}async function Mb(t){A(t);let e=w(t.args,"--url");e||y(t.ctx,"\u7F3A\u5C11 --url","\u7528\u6CD5: coder flow skill import --url <url> [--on-conflict fail|overwrite|rename|skip]",3);let s=w(t.args,"--on-conflict")||"fail";["fail","overwrite","rename","skip"].includes(s)||y(t.ctx,"--on-conflict \u987B\u4E3A fail / overwrite / rename / skip",null,3);let r=await C(t,"POST","/api/skills/import",{url:e,on_conflict:s}),n=E(t,r)||{};return Z(t.ctx,[["id",n.id||n.skill?.id||""],["name",n.name||n.skill?.name||""],["status",n.status||"created"]],null,{labels:U}),0}async function Gb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u8BCD","\u7528\u6CD5: coder flow skill search <query>",3),A(t);let s=await C(t,"GET",`/api/skills/search?q=${encodeURIComponent(e)}`),r=E(t,s)||{},n=Array.isArray(r)?r:r.results||[];return J(t.ctx,n.map(o=>({name:o.name||"",url:o.url||"",source:o.source||"",description:o.description||""})),{labels:U,empty:"\u65E0\u5339\u914D skill"}),0}async function Bb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files list <skill-id>",3),A(t);let s=await C(t,"GET",`/api/skills/${encodeURIComponent(e)}/files`),r=E(t,s)||{},n=Array.isArray(r)?r:r.files||[];return J(t.ctx,n.map(o=>({id:o.id||"",path:o.path||"",updated_at:o.updated_at||""})),{labels:U,empty:"\u65E0\u6587\u4EF6"}),0}async function Fb(t){let e=t.arg,s=w(t.args,"--path"),r=w(t.args,"--content");e||y(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files upsert <skill-id> --path <p> --content <c>",3),s||y(t.ctx,"\u7F3A\u5C11 --path",null,3),r||y(t.ctx,"\u7F3A\u5C11 --content",null,3),A(t);let n=await C(t,"PUT",`/api/skills/${encodeURIComponent(e)}/files`,{path:s,content:r}),o=E(t,n)||{};return Z(t.ctx,[["id",o.id||""],["path",o.path||s]],null,{labels:U}),0}async function Zb(t){let e=Ee(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow skill files delete <skill-id> <file-id>",3),A(t),!t.args.includes("--yes"))return t.ctx.emit(`\u5C06\u5220\u9664 skill file ${r}\uFF08\u9AD8\u5F71\u54CD\uFF09\u3002\u786E\u8BA4\u8BF7\u52A0 --yes`),10;let n=await C(t,"DELETE",`/api/skills/${encodeURIComponent(s)}/files/${encodeURIComponent(r)}`);return E(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`skill file ${r} \u5DF2\u5220\u9664`),0}async function $u(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime get <id>",3),A(t);let s=new URLSearchParams;s.set("workspace_id",t.http.workspaceId);let r=await C(t,"GET",`/api/runtimes?${s.toString()}`),n=E(t,r)||{},i=(Array.isArray(n)?n:n.runtimes||[]).find(c=>c.id===e||c.name===e);i||y(t.ctx,`runtime \u4E0D\u5B58\u5728: ${e}`,null,4);let a=["id","name","status","provider","device_info","runtime_mode","visibility","last_seen_at","created_at"];return Z(t.ctx,Ts(i,a),null,{labels:U}),0}async function Vb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime usage <id> [--days <n>]",3),A(t);let s=w(t.args,"--days")||"90",r=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/usage?days=${s}`),n=E(t,r)||{},o=Array.isArray(n)?n:n.usage||[];return J(t.ctx,o.map(i=>({date:i.date||"",provider:i.provider||"",model:i.model||"",input_tokens:String(i.input_tokens??""),output_tokens:String(i.output_tokens??"")})),{labels:U,empty:"\u65E0\u7528\u91CF\u6570\u636E"}),0}async function Wb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime activity <id>",3),A(t);let s=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/activity`),r=E(t,s)||{},n=Array.isArray(r)?r:r.activity||[];return J(t.ctx,n.map(o=>({hour:o.hour||"",count:String(o.count??"")})),{labels:U,empty:"\u65E0\u6D3B\u52A8\u6570\u636E"}),0}async function Kb(t){let e=t.arg,s=w(t.args,"--target-version");e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime initiate-update <id> --target-version <v>",3),s||y(t.ctx,"\u7F3A\u5C11 --target-version",null,3),A(t);let r=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/update`,{target_version:s}),n=E(t,r)||{};return Z(t.ctx,[["id",n.id||""],["status",n.status||""]],null,{labels:U}),0}async function zb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime models <id>",3),A(t);let s=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/models`,{}),n=(E(t,s)||{}).id;n||y(t.ctx,"\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE request id",null,1);let o=9e4,i=2e3,a=Date.now()+o,c;for(;Date.now()<a;){await new Promise(h=>setTimeout(h,i));let u=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(n)}`),d=E(t,u)||{},p=d.status;if(p==="completed"){c=d;break}(p==="failed"||p==="timeout")&&y(t.ctx,`\u83B7\u53D6\u6A21\u578B\u5217\u8868\u5931\u8D25: ${d.error||p}`,null,1)}if(c||y(t.ctx,"\u83B7\u53D6\u6A21\u578B\u5217\u8868\u8D85\u65F6\uFF08runtime \u672A\u54CD\u5E94\uFF09",null,1),!c.supported)return t.ctx.emit(t.ctx.isJson?{supported:!1,models:[]}:"\u8BE5 runtime \u4E0D\u652F\u6301\u6A21\u578B\u9009\u62E9"),0;let l=c.models||[];return t.ctx.isJson?(t.ctx.emit({supported:!0,models:l}),0):(J(t.ctx,l.map(u=>({id:u.id||"",label:u.label||"",provider:u.provider||"",default:u.default?"\u2713":"",thinking:u.thinking?(u.thinking.supported_levels||[]).join(","):""})),{labels:{id:"Model ID",label:"\u540D\u79F0",provider:"Provider",default:"\u9ED8\u8BA4",thinking:"Thinking"},empty:"\u65E0\u53EF\u7528\u6A21\u578B"}),0)}async function Jb(t){A(t);let e=await C(t,"GET","/api/workspaces"),s=E(t,e)||{},r=Array.isArray(s)?s:s.workspaces||[];return J(t.ctx,r.map(n=>({id:n.id||"",name:n.name||"",slug:n.slug||""})),{labels:U,empty:"\u65E0 workspace"}),0}async function Tu(t){A(t);let e=t.arg||t.http.workspaceId,s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=E(t,s)||{};return Z(t.ctx,[["id",r.id||""],["name",r.name||""],["slug",r.slug||""],["description",r.description||""]],null,{labels:U}),0}async function Hb(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 workspace id/slug","\u7528\u6CD5: coder flow workspace switch <id|slug>",3),A(t);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=E(t,s)||{};return t.ctx.setTeam&&t.ctx.setTeam(r.id,r.name||""),t.ctx.emit(t.ctx.isJson?r:`\u5DF2\u5207\u6362\u5230 workspace: ${r.name||r.id}`),0}async function Yb(t){let e=t.arg||t.http.workspaceId;A(t);let s={},r=w(t.args,"--name"),n=w(t.args,"--description"),o=w(t.args,"--context"),i=w(t.args,"--issue-prefix");r!==void 0&&(s.name=r),n!==void 0&&(s.description=n),o!==void 0&&(s.context=o),i!==void 0&&(s.issue_prefix=i),Object.keys(s).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --description / --context / --issue-prefix",3);let a=await C(t,"PATCH",`/api/workspaces/${encodeURIComponent(e)}`,s),c=E(t,a)||{};return Z(t.ctx,[["id",c.id||""],["name",c.name||""],["slug",c.slug||""]],null,{labels:U}),0}async function Xb(t){let e=t.arg||t.http.workspaceId;A(t);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}/members`),r=E(t,s)||{},n=Array.isArray(r)?r:r.members||[];return J(t.ctx,n.map(o=>({id:o.id||"",name:o.name||o.username||"",role:o.role||""})),{labels:U,empty:"\u65E0\u6210\u5458"}),0}async function Qb(t){A(t);let e=await C(t,"GET",`/api/workspaces/${t.http.workspaceId}/repos`),s=E(t,e)||{},r=Array.isArray(s)?s:s.repos||s.repositories||[];return J(t.ctx,r.map(n=>({url:n.url||"",description:n.description||""})),{labels:U,empty:"\u65E0 repo"}),0}async function ek(t){A(t);let e=Ee(t.args,{valueFlags:["--description"]}),s=w(t.args,"--description");e.length||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo add <url> [<url>...]",3);let r=e.map(i=>s&&e.length===1?{url:i,description:s}:{url:i}),n=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos`,{repos:r}),o=E(t,n)||{};return t.ctx.emit(t.ctx.isJson?o:`${e.length} \u4E2A repo \u5DF2\u6DFB\u52A0`),0}async function Uu(t){A(t);let e=Ee(t.args,{valueFlags:[]});e.length||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo remove <url> [<url>...]",3);let s=await C(t,"DELETE",`/api/workspaces/${t.http.workspaceId}/repos`,{urls:e}),r=E(t,s)||{};return t.ctx.emit(t.ctx.isJson?r:`${e.length} \u4E2A repo \u5DF2\u79FB\u9664`),0}async function tk(t){let e=t.arg;e||y(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo checkout <url> [--ref <branch>]",3),A(t);let s={url:e},r=w(t.args,"--ref");r&&(s.ref=r);let n=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos/checkout`,s),o=E(t,n)||{};return Z(t.ctx,[["path",o.path||""],["url",e]],null,{labels:U}),0}async function sk(t){A(t);let e=await C(t,"GET","/api/me"),s=E(t,e)||{};return Z(t.ctx,[["id",s.id||""],["name",s.name||s.display_name||""],["email",s.email||""],["description",s.description||s.profile_description||""]],null,{labels:U}),0}async function rk(t){A(t);let e={},s=w(t.args,"--description");t.args.includes("--clear")?e.profile_description="":s!==void 0?e.profile_description=s:y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--description <text> \u6216 --clear",3);let n=await C(t,"PATCH","/api/me",e),o=E(t,n)||{};return Z(t.ctx,[["id",o.id||""],["description",o.description||o.profile_description||""]],null,{labels:U}),0}async function nk(t){let e=Ee(t.args,{valueFlags:["--url","--ref","--label","--position","--default-branch-hint","--local-path","--daemon-id","--ref-label"]}),s=e[0],r=e[1];(!s||!r)&&y(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource update <project-id> <resource-id> [--url <u>] [--label <l>]",3),A(t);let n={},o=w(t.args,"--url"),i=w(t.args,"--ref"),a=w(t.args,"--label"),c=w(t.args,"--position");if(i)try{n.resource_ref=JSON.parse(i)}catch{y(t.ctx,"--ref \u4E0D\u662F\u6709\u6548 JSON",null,3)}else if(o){n.resource_ref={url:o};let d=w(t.args,"--default-branch-hint");d&&(n.resource_ref.default_branch_hint=d)}a!==void 0&&(n.label=a),c!==void 0&&(n.position=Number(c)),Object.keys(n).length||y(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--url / --ref / --label / --position",3);let l=await C(t,"PUT",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`,n),u=E(t,l)||{};return Z(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""],["label",u.label||""]],null,{labels:U}),0}async function Lu(t){let{spawn:e}=require("child_process"),{checkHealth:s}=ks(),{daemonLogPath:r,writePid:n}=Ht(),{loadConfig:o}=jn(),i=require("fs"),a=require("path"),c=t.args.includes("--foreground"),l=r(),u=10*1024*1024,d=5;function p(){try{if(!i.existsSync(l)||i.statSync(l).size<u)return;let B=`${l}.${d}`;i.existsSync(B)&&i.unlinkSync(B);for(let q=d-1;q>=1;q--){let re=`${l}.${q}`;i.existsSync(re)&&i.renameSync(re,`${l}.${q+1}`)}i.renameSync(l,`${l}.1`)}catch{}}function h(B=new Date){let q=(qe,Us=2)=>String(qe).padStart(Us,"0"),re=-B.getTimezoneOffset(),be=re>=0?"+":"-",nt=q(Math.floor(Math.abs(re)/60)),ge=q(Math.abs(re)%60);return`${B.getFullYear()}-${q(B.getMonth()+1)}-${q(B.getDate())} ${q(B.getHours())}:${q(B.getMinutes())}:${q(B.getSeconds())}.${q(B.getMilliseconds(),3)} ${be}${nt}:${ge}`}if(c){let{DaemonProcess:B}=Iu(),q=ck(t),re=o(q);re.token=t.ctx.getApiKey?t.ctx.getApiKey():null,re.coderBaseUrl=t.ctx.baseUrl||re.coderBaseUrl,i.mkdirSync(a.dirname(l),{recursive:!0}),p();let be=qe=>{p();let Us=`[${h()}] ${qe}
504
+ `;try{i.appendFileSync(l,Us)}catch{}process.stderr.isTTY&&process.stderr.write(Us)};be(`[daemon] pid=${process.pid} node=${process.version} platform=${process.platform}`),be(`[daemon] log=${l} maxSize=${u/1024/1024}MB keep=${d}`),n(process.pid);let nt=new AbortController;return process.once("SIGINT",()=>nt.abort()),process.once("SIGTERM",()=>nt.abort()),await new B(re,be).run(nt),0}let g=19514,_=await s(g);(_.status==="running"||_.status==="starting")&&y(t.ctx,`daemon \u5DF2\u5728\u8FD0\u884C (pid ${_.pid})`,"\u7528 coder flow daemon restart \u91CD\u542F",1);let b=process.argv[0],x=process.argv[1],P=["flow","daemon","start","--foreground",...t.args.filter(B=>B!=="--foreground")];i.mkdirSync(a.dirname(l),{recursive:!0}),p();let V=i.openSync(l,"a"),D=e(b,[x,...P],{detached:!0,stdio:["ignore",V,"ignore"],env:Object.assign({},process.env,{CODER_APIKEY:t.ctx.getApiKey?t.ctx.getApiKey():process.env.CODER_APIKEY||""})});i.closeSync(V),D.unref(),n(D.pid);let N=Date.now()+45e3,W=!1;for(;Date.now()<N;)if(await Co(500),(await s(g)).status==="running"){W=!0;break}return W?t.ctx.emit(`Daemon \u5DF2\u542F\u52A8 (pid ${D.pid})\u3002\u65E5\u5FD7: ${l}`):t.ctx.emit(`Daemon \u672A\u80FD\u5728 45s \u5185\u5C31\u7EEA\uFF0C\u68C0\u67E5\u65E5\u5FD7: ${l}`),0}async function Pu(t){let{checkHealth:e,requestShutdown:s}=ks(),{removePid:r}=Ht(),n=await e();if(n.status!=="running"&&n.status!=="starting")return t.ctx.emit("Daemon \u672A\u8FD0\u884C"),0;try{await s()}catch{if(n.pid)try{process.kill(n.pid,"SIGTERM")}catch{}}let o=Date.now()+15e3;for(;Date.now()<o;){await Co(500);let i=await e();if(i.status!=="running"&&i.status!=="starting")return r(),t.ctx.emit("Daemon \u5DF2\u505C\u6B62"),0}return t.ctx.emit("Daemon \u4ECD\u5728\u505C\u6B62\u4E2D\uFF08\u53EF\u80FD\u6709\u4EFB\u52A1\u5728\u6267\u884C\uFF09"),0}async function ok(t){return await Pu(t),await Co(1e3),Lu(t)}async function vu(t){let{checkHealth:e}=ks(),{daemonLogPath:s}=Ht(),r=await e();return t.ctx.isJson?(t.ctx.emit(r),0):(r.status==="running"?(t.ctx.emit(`Daemon: \u8FD0\u884C\u4E2D (pid ${r.pid}, uptime ${r.uptime})`),Array.isArray(r.agents)&&r.agents.length&&t.ctx.emit(`Agents: ${r.agents.join(", ")}`),t.ctx.emit(`Workspaces: ${Array.isArray(r.workspaces)?r.workspaces.length:0}`)):r.status==="starting"?t.ctx.emit(`Daemon: \u542F\u52A8\u4E2D (pid ${r.pid})`):(t.ctx.emit("Daemon: \u672A\u8FD0\u884C"),t.ctx.emit(`\u65E5\u5FD7: ${s()}`)),0)}async function ik(t){let e=require("fs"),{daemonLogPath:s}=Ht(),r=s();e.existsSync(r)||y(t.ctx,`\u65E5\u5FD7\u6587\u4EF6\u4E0D\u5B58\u5728: ${r}`,"\u5148\u542F\u52A8 daemon: coder flow daemon start",4);let n=t.args.includes("-f")||t.args.includes("--follow"),o=t.args.find((l,u)=>(l==="-n"||l==="--lines")&&t.args[u+1])&&t.args[t.args.findIndex(l=>l==="-n"||l==="--lines")+1]||"50",i=parseInt(o,10)||50,c=e.readFileSync(r,"utf8").split(`
505
+ `).filter(l=>l).slice(-i);for(let l of c)t.ctx.emit(l);if(n){let l=e.statSync(r).size,u=setInterval(()=>{let d=e.statSync(r);if(d.size>l){let p=Buffer.alloc(d.size-l),h=e.openSync(r,"r");e.readSync(h,p,0,p.length,l),e.closeSync(h),l=d.size,p.toString().split(`
506
+ `).forEach(g=>{g&&t.ctx.emit(g)})}},500);process.once("SIGINT",()=>clearInterval(u)),await new Promise(()=>{})}return 0}async function ak(t){let e=require("fs"),s=require("path"),r=require("os"),n=t.args.find((u,d)=>u==="--workspaces-root"&&t.args[d+1])&&t.args[t.args.findIndex(u=>u==="--workspaces-root")+1]||process.env.MULTICA_WORKSPACES_ROOT||s.join(r.homedir(),"multica_workspaces");if(!e.existsSync(n))return t.ctx.isJson?(t.ctx.emit({workspaces_root:n,total_bytes:0,tasks:[]}),0):(t.ctx.emit(`Workspaces root: ${n}`),t.ctx.emit("(no task directories)"),0);let o=[],i=0;for(let u of e.readdirSync(n)){if(u===".repos")continue;let d=s.join(n,u);if(e.statSync(d).isDirectory())for(let p of e.readdirSync(d)){let h=s.join(d,p);if(!e.statSync(h).isDirectory())continue;let g=Nu(h);i+=g,o.push({path:`${u}/${p}`,size:g})}}o.sort((u,d)=>d.size-u.size);let a=t.args[t.args.findIndex(u=>u==="--top")+1],c=a?parseInt(a,10):0,l=c>0?o.slice(0,c):o;if(t.ctx.isJson)return t.ctx.emit({workspaces_root:n,total_bytes:i,tasks:o}),0;if(t.ctx.emit(`Workspaces root: ${n}`),!l.length)return t.ctx.emit("(no task directories)"),0;for(let u of l)t.ctx.emit(` ${u.path.padEnd(40)} ${Ou(u.size)}`);return t.ctx.emit(`
507
+ Total: ${Ou(i)} across ${o.length} task(s)`),0}function Nu(t){let e=require("fs"),s=require("path"),r=0;try{for(let n of e.readdirSync(t,{withFileTypes:!0})){if(n.name===".git")continue;let o=s.join(t,n.name);if(n.isDirectory())r+=Nu(o);else if(n.isFile())try{r+=e.statSync(o).size}catch{}}}catch{}return r}function Ou(t){return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:t<1073741824?`${(t/1048576).toFixed(1)} MiB`:`${(t/1073741824).toFixed(1)} GiB`}function ck(t){let{parseDuration:e}=jn(),s={},r=n=>{let o=t.args.indexOf(n);return o!==-1?t.args[o+1]:void 0};return r("--daemon-id")&&(s.daemonId=r("--daemon-id")),r("--device-name")&&(s.deviceName=r("--device-name")),r("--runtime-name")&&(s.runtimeName=r("--runtime-name")),r("--poll-interval")&&(s.pollInterval=e(r("--poll-interval"),3e4)),r("--heartbeat-interval")&&(s.heartbeatInterval=e(r("--heartbeat-interval"),15e3)),r("--max-concurrent-tasks")&&(s.maxConcurrentTasks=parseInt(r("--max-concurrent-tasks"),10)),s}function Co(t){return new Promise(e=>setTimeout(e,t))}async function lk(t){let e=require("fs"),s=require("path"),r=t.arg;r||y(t.ctx,"\u7F3A\u5C11 attachment id","\u7528\u6CD5: coder flow attachment download <id> [-o <dir>]",3),A(t);let n=await C(t,"GET",`/api/attachments/${encodeURIComponent(r)}`),o=E(t,n)||{},i=o.download_url;i||y(t.ctx,"attachment \u65E0 download_url",null,4);let a=s.basename(o.filename||r),c=w(t.args,"-o")||w(t.args,"--output-dir")||".",l=s.join(c,a),u=await new Promise((p,h)=>{(i.startsWith("https")?require("https"):require("http")).get(i,_=>{let b=[];_.on("data",x=>b.push(x)),_.on("end",()=>p(Buffer.concat(b))),_.on("error",h)}).on("error",h)});e.mkdirSync(c,{recursive:!0}),e.writeFileSync(l,u);let d=s.resolve(l);return t.ctx.emit(t.ctx.isJson?{id:o.id||r,filename:a,path:d}:`\u5DF2\u4E0B\u8F7D: ${d}`),0}qu.exports={LABELS:U,issue:{list:Ww,get:Cu,info:Cu,create:Kw,update:zw,delete:gb,status:Jw,assign:Hw,search:Yw,runs:ab,rerun:cb,"pull-requests":nb,"run-messages":ob,"cancel-task":ib,comment:{list:Xw,add:Qw,delete:eb},label:{list:lb,add:ub,remove:db},metadata:{list:pb,get:fb,set:mb,delete:hb},subscriber:{list:tb,add:sb,remove:rb}},label:{list:yb,get:Au,info:Au,create:_b,update:wb,delete:bb},agent:{list:os("agents","agents",["id","name","status"],{webPath:"agents",linkCol:"name"}),get:Ne("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),info:Ne("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),create:kb,update:Je("agents","PUT",[["name","name"],["description","description"],["instructions","instructions"],["runtime-id","runtime_id"],["model","model"],["thinking-level","thinking_level"],["visibility","visibility"],["max-concurrent-tasks","max_concurrent_tasks"]],["id","name","model","runtime_id"],{idArg:!0}),archive:ko("agents","archive",["id","name","status"]),restore:ko("agents","restore",["id","name","status"]),tasks:Eu("agents","tasks","tasks",["id","status","created_at"]),skills:{list:xb,add:Sb,set:Ib},env:{get:Cb,set:Eb}},project:{list:os("projects","projects",["id","title","status"],{webPath:"projects",linkCol:"title"}),get:Ne("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),info:Ne("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),create:Je("projects","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:Je("projects","PUT",[["name","title"],["title","title"],["description","description"],["status","status"]],["id","title"],{idArg:!0}),delete:Ar("projects"),status:Ab,resource:{list:$b,add:Tb,update:nk,remove:Ub}},squad:{list:os("squads","squads",["id","name"],{webPath:"squads",linkCol:"name"}),get:Ne("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),info:Ne("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),create:Je("squads","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:Je("squads","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:Ar("squads"),activity:Lb,member:{list:vb,add:Ob,remove:Rb,"set-role":Db}},autopilot:{list:os("autopilots","autopilots",["id","title","status"],{webPath:"autopilots",linkCol:"title"}),get:Ne("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),info:Ne("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),create:Je("autopilots","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:Je("autopilots","PUT",[["name","title"],["title","title"],["description","description"]],["id","title"],{idArg:!0}),delete:Ar("autopilots"),runs:Eu("autopilots","runs","runs",["id","status","created_at"]),trigger:ko("autopilots","trigger",["id","status"]),"trigger-add":Pb,"trigger-update":Nb,"trigger-delete":qb,"trigger-rotate-url":jb},skill:{list:os("skills","skills",["id","name"],{webPath:"skills",linkCol:"name"}),get:Ne("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),info:Ne("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),create:Je("skills","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:Je("skills","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:Ar("skills"),import:Mb,search:Gb,files:{list:Bb,upsert:Fb,delete:Zb}},runtime:{list:os("runtimes","runtimes",["id","name","status"]),get:$u,info:$u,models:zb,usage:Vb,activity:Wb,update:Kb},workspace:{list:Jb,get:Tu,info:Tu,switch:Hb,update:Yb,member:{list:Xb}},repo:{list:Qb,add:ek,remove:Uu,rm:Uu,checkout:tk},user:{profile:{get:sk,update:rk}},attachment:{download:lk},daemon:{list:vu,start:Lu,stop:Pu,restart:ok,status:vu,logs:ik,"disk-usage":ak}}});var Fu=k((D0,Bu)=>{function Mu(t){let e=["USAGE"," coder flow <command> <subcommand> [flags]","","CORE COMMANDS"," agent: Work with agents"," autopilot: Manage autopilots (scheduled/triggered agent automations)"," issue: Work with issues"," label: Work with issue labels"," project: Work with projects"," repo: Work with repositories"," skill: Work with skills"," squad: Work with squads"," workspace: Work with workspaces","","RUNTIME COMMANDS"," daemon: Control the local agent runtime daemon"," runtime: Work with agent runtimes","","ADDITIONAL COMMANDS"," attachment: Work with attachments"," user: Work with your user account","","GLOBAL FLAGS"," --team <id> Specify team as workspace (default: coder team current)"," --workspace <id> Alias for --team"," --format json Structured JSON output (default: text)","","ENVIRONMENT VARIABLES"," MULTICA_BASE_URL Override the Multica server URL"," CODER_APIKEY API key (shared with coder auth)","","EXAMPLES"," $ coder team current # confirm current team (= multica workspace)"," $ coder flow issue list --format json"," $ coder flow issue get MUL-123"," $ coder flow agent list"," $ coder flow runtime list","","LEARN MORE"," Use `coder flow <command> --help` for more information about a command."];t.emit(e.join(`
508
+ `))}function Gu(t,e){let r={issue:["Work with issues","","USAGE"," coder flow issue <command> [flags]","","COMMANDS"," assign: Assign an issue to a member, agent, or squad"," cancel-task: Cancel a running or queued task"," comment: Work with issue comments"," create: Create a new issue"," delete: Delete an issue"," get: Get issue details"," label: Manage labels on an issue"," list: List issues in the workspace"," metadata: Manage per-issue metadata (KV)"," pull-requests: List pull requests linked to an issue"," rerun: Re-enqueue an issue as a fresh task"," run-messages: List messages for an execution"," runs: List execution history for an issue"," search: Search issues by title or description"," status: Change issue status"," subscriber: Work with issue subscribers"," update: Update an issue"],agent:["Work with agents","","USAGE"," coder flow agent <command> [flags]","","COMMANDS"," archive: Archive an agent"," create: Create a new agent"," env: Read and update an agent's custom environment variables (audited)"," get: Get agent details"," list: List agents in the workspace"," restore: Restore an archived agent"," skills: Manage agent skill assignments"," tasks: List tasks for an agent"," update: Update an agent","","SUBCOMMANDS (skills)"," skills list <agent-id> List skills assigned to agent"," skills add <agent-id> --skill-ids <id1,id2> Add skills (keeps existing)"," skills set <agent-id> --skill-ids <id1,id2> Replace all skills (pass empty to clear)"],project:["Work with projects","","USAGE"," coder flow project <command> [flags]","","COMMANDS"," create: Create a new project"," delete: Delete a project"," get: Get project details"," list: List projects in the workspace"," resource: Manage resources attached to a project"," status: Change project status"," update: Update a project"],label:["Work with issue labels","","USAGE"," coder flow label <command> [flags]","","COMMANDS"," create: Create a new label"," delete: Delete a label"," get: Get label details"," list: List labels in the workspace"," update: Update a label"],autopilot:["Manage autopilots (scheduled/triggered agent automations)","","USAGE"," coder flow autopilot <command> [flags]","","COMMANDS"," create: Create a new autopilot"," delete: Delete an autopilot"," get: Get autopilot details (includes triggers)"," list: List autopilots in the workspace"," runs: List execution history for an autopilot"," trigger: Manually trigger an autopilot to run once"," trigger-add: Add a schedule or webhook trigger to an autopilot"," trigger-delete: Delete a trigger"," trigger-rotate-url: Rotate the webhook URL of a webhook trigger"," trigger-update: Update an existing trigger"," update: Update an autopilot"],squad:["Work with squads","","USAGE"," coder flow squad <command> [flags]","","COMMANDS"," activity: Record a squad leader evaluation on an issue"," create: Create a new squad"," delete: Delete a squad (requires --yes)"," get: Get squad details"," list: List squads in the workspace"," member: Work with squad members"," update: Update a squad"],skill:["Work with skills","","USAGE"," coder flow skill <command> [flags]","","COMMANDS"," create: Create a new skill"," delete: Delete a skill"," files: Work with skill files"," get: Get skill details (includes files)"," import: Import a skill from a URL (clawhub.ai, skills.sh, or github.com)"," list: List skills in the workspace"," search: Search for installable skills"," update: Update a skill"],runtime:["Work with agent runtimes","","USAGE"," coder flow runtime <command> [flags]","","COMMANDS"," activity: Get hourly task activity for a runtime"," get: Get runtime details"," list: List runtimes in the workspace"," models: List available models for a runtime (async, polls until ready)"," update: Initiate a CLI update on a runtime"," usage: Get token usage for a runtime"],workspace:["Work with workspaces","","USAGE"," coder flow workspace <command> [flags]","","COMMANDS"," get: Get workspace details"," list: List all workspaces you belong to"," member: Manage workspace members"," switch: Set the default workspace"," update: Update workspace metadata (admin/owner only)"],repo:["Work with repositories","","USAGE"," coder flow repo <command> [flags]","","COMMANDS"," add: Add repositories to the workspace registry"," checkout: Check out a repository into the working directory"," list: List workspace repositories"," remove: Remove repositories from the workspace registry"],user:["Work with your user account","","USAGE"," coder flow user <command> [flags]","","COMMANDS"," profile: Get or update your personal profile"],attachment:["Work with attachments","","USAGE"," coder flow attachment <command> [flags]","","COMMANDS"," download: Download an attachment to a local file"],daemon:["Control the local agent runtime daemon","","USAGE"," coder flow daemon <command> [flags]","","COMMANDS"," disk-usage: Show workspace disk usage"," logs: Show daemon logs [-f] [-n <lines>]"," restart: Restart the daemon"," start: Start the daemon [--foreground] [--daemon-id] [--device-name]"," [--runtime-name] [--poll-interval] [--heartbeat-interval]"," [--max-concurrent-tasks]"," status: Show daemon status [--format json]"," stop: Stop the running daemon","","ENVIRONMENT VARIABLES"," MULTICA_SERVER_URL Server URL (default: https://flow.makecoder.com)"," MULTICA_DAEMON_POLL_INTERVAL Task poll interval (default: 30s)"," MULTICA_DAEMON_HEARTBEAT_INTERVAL Heartbeat interval (default: 15s)"," MULTICA_DAEMON_MAX_CONCURRENT_TASKS Max parallel tasks (default: 20)"," MULTICA_WORKSPACES_ROOT Workdir root (default: ~/multica_workspaces)"]}[e];r?t.emit(r.join(`
509
+ `)):Mu(t)}var uk={issue:{list:["List issues in the workspace","","USAGE"," coder flow issue list [flags]","","FLAGS"," --status <string> Filter by status (backlog|todo|in_progress|in_review|done|cancelled)"," --priority <string> Filter by priority (none|low|medium|high|urgent)"," --limit <n> Max results"," --offset <n> Pagination offset"," --full-id Include full UUID in output"],get:["Get issue details","","USAGE"," coder flow issue get <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key (e.g. MUL-123)"],create:["Create a new issue","","USAGE"," coder flow issue create --title <title> [flags]","","FLAGS"," --title <string> Issue title (required)"," --description <string> Issue description"," --priority <string> none | low | medium | high | urgent"," --status <string> Initial status"," --project <id> Project ID to assign to"," --agent <slug> Assign to agent (by name or ID); alias: --assignee"],update:["Update an issue","","USAGE"," coder flow issue update <id|KEY> [flags]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --title <string> New title"," --description <string> New description"," --priority <string> none | low | medium | high | urgent"," --status <string> New status"],delete:["Delete an issue","","USAGE"," coder flow issue delete <id|KEY> [--yes]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --yes Skip confirmation (high-impact operation)"],status:["Change issue status","","USAGE"," coder flow issue status <id|KEY> --set <status>","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --set <string> New status (required); alias: --status"],assign:["Assign an issue to a member, agent, or squad","","USAGE"," coder flow issue assign <id|KEY> --agent <slug>"," coder flow issue assign <id|KEY> --unassign","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --agent <slug> Assign to agent by name or ID; alias: --to"," --unassign Remove current assignee"],search:["Search issues by title or description","","USAGE"," coder flow issue search <query> [flags]","","ARGS"," <query> Search keyword","","FLAGS"," --limit <n> Max results"," --include-closed Include closed/cancelled issues"],runs:["List execution history for an issue","","USAGE"," coder flow issue runs <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],rerun:["Re-enqueue an issue as a fresh task","","USAGE"," coder flow issue rerun <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],"pull-requests":["List pull requests linked to an issue","","USAGE"," coder flow issue pull-requests <id|KEY>","","ARGS"," <id|KEY> Issue UUID or short key"],"run-messages":["List messages for an execution (task run)","","USAGE"," coder flow issue run-messages <task-id> [flags]","","ARGS"," <task-id> Task run UUID","","FLAGS"," --issue <id> Filter to a specific issue"," --since <seq> Return messages with sequence > seq"],"cancel-task":["Cancel a running or queued task","","USAGE"," coder flow issue cancel-task <task-id> [flags]","","ARGS"," <task-id> Task run UUID","","FLAGS"," --issue <id> Issue ID (optional context)"],comment:["Work with issue comments","","USAGE"," coder flow issue comment <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List comments on an issue"," add <id|KEY> --content <text> Add a comment"," delete <issue-id> <comment-id> Delete a comment"],"comment list":["List comments on an issue","","USAGE"," coder flow issue comment list <id|KEY>"],"comment add":["Add a comment to an issue","","USAGE"," coder flow issue comment add <id|KEY> --content <text> [flags]","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --content <string> Comment text (required); alias: --body"," --parent <id> Parent comment ID (for threads)"],"comment delete":["Delete a comment","","USAGE"," coder flow issue comment delete <issue-id> <comment-id>"],label:["Manage labels on an issue","","USAGE"," coder flow issue label <subcommand> ...","","SUBCOMMANDS"," list <issue-id> List labels on an issue"," add <issue-id> <label-id> Add a label"," remove <issue-id> <label-id> Remove a label"],"label list":["List labels on an issue","","USAGE"," coder flow issue label list <id|KEY>"],"label add":["Add a label to an issue","","USAGE"," coder flow issue label add <issue-id> <label-id>"],"label remove":["Remove a label from an issue","","USAGE"," coder flow issue label remove <issue-id> <label-id>"],metadata:["Manage per-issue metadata (KV store)","","USAGE"," coder flow issue metadata <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List all KV entries"," get <id|KEY> --key <k> Get a single value"," set <id|KEY> --key <k> --value <v> Set a value (auto-typed)"," delete <id|KEY> --key <k> Delete a key"],"metadata list":["List metadata for an issue","","USAGE"," coder flow issue metadata list <id|KEY>"],"metadata get":["Get a metadata value","","USAGE"," coder flow issue metadata get <id|KEY> --key <key>","","FLAGS"," --key <string> Metadata key (required)"],"metadata set":["Set a metadata value","","USAGE"," coder flow issue metadata set <id|KEY> --key <k> --value <v> [flags]","","FLAGS"," --key <string> Metadata key (required)"," --value <string> Value (required; auto-parsed as JSON number/bool/string)"," --type <string> Force type: auto | string | number | bool"],"metadata delete":["Delete a metadata key","","USAGE"," coder flow issue metadata delete <id|KEY> --key <key>","","FLAGS"," --key <string> Metadata key (required)"],subscriber:["Work with issue subscribers","","USAGE"," coder flow issue subscriber <subcommand> ...","","SUBCOMMANDS"," list <id|KEY> List subscribers"," add <id|KEY> [--user <name>] Subscribe (self or a user)"," remove <id|KEY> [--user <name>] Unsubscribe"],"subscriber list":["List subscribers for an issue","","USAGE"," coder flow issue subscriber list <id|KEY>"],"subscriber add":["Subscribe to an issue","","USAGE"," coder flow issue subscriber add <id|KEY> [flags]","","FLAGS"," --user <name> User display name or username"," --user-id <uuid> User UUID"],"subscriber remove":["Unsubscribe from an issue","","USAGE"," coder flow issue subscriber remove <id|KEY> [flags]","","FLAGS"," --user <name> User display name or username"," --user-id <uuid> User UUID"]},agent:{list:["List agents in the workspace","","USAGE"," coder flow agent list"],get:["Get agent details","","USAGE"," coder flow agent get <id>","","ARGS"," <id> Agent UUID or name"],create:["Create a new agent","","USAGE"," coder flow agent create --name <name> --runtime-id <id> [flags]","","FLAGS"," --name <string> Agent name (required)"," --runtime-id <uuid> Runtime to bind (required)"," --description <string> Agent description"," --instructions <string> System instructions"," --model <string> Model ID (run `coder flow runtime models <id>` to list)"," --thinking-level <string> Thinking level: low | medium | high"," --visibility <string> private (default) | workspace"," --max-concurrent-tasks <n> Max parallel tasks (default 6)"," --skill-ids <id1,id2,...> Skill IDs to assign on create (comma-separated)"],update:["Update an agent","","USAGE"," coder flow agent update <id> [flags]","","ARGS"," <id> Agent UUID or name","","FLAGS"," --name <string> New name"," --description <string> New description"," --instructions <string> New system instructions"," --runtime-id <uuid> New runtime"," --model <string> New model"," --thinking-level <string> low | medium | high"," --visibility <string> private | workspace"," --max-concurrent-tasks <n> Max parallel tasks"],archive:["Archive an agent","","USAGE"," coder flow agent archive <id>"],restore:["Restore an archived agent","","USAGE"," coder flow agent restore <id>"],tasks:["List tasks for an agent","","USAGE"," coder flow agent tasks <id>"],skills:["Manage agent skill assignments","","USAGE"," coder flow agent skills <subcommand> ...","","SUBCOMMANDS"," list <agent-id> List skills assigned to agent"," add <agent-id> --skill-ids <id1,id2> Add skills (keeps existing)"," set <agent-id> --skill-ids <id1,id2> Replace all skills (empty to clear)"],"skills list":["List skills assigned to an agent","","USAGE"," coder flow agent skills list <agent-id>"],"skills add":["Add skills to an agent (keeps existing)","","USAGE"," coder flow agent skills add <agent-id> --skill-ids <id1,id2>","","FLAGS"," --skill-ids <csv> Comma-separated skill UUIDs (required)"],"skills set":["Replace all skills on an agent","","USAGE"," coder flow agent skills set <agent-id> --skill-ids <id1,id2>","","FLAGS"," --skill-ids <csv> Comma-separated skill UUIDs (empty string to clear all)"],env:["Read and update an agent's custom environment variables","","USAGE"," coder flow agent env <subcommand> ...","","SUBCOMMANDS"," get <agent-id> List env vars"," set <agent-id> --custom-env '{...}' Replace env vars (JSON object)"],"env get":["Get agent environment variables","","USAGE"," coder flow agent env get <agent-id>"],"env set":["Set agent environment variables","","USAGE"," coder flow agent env set <agent-id> --custom-env <json>","","FLAGS",` --custom-env <json> Full env as JSON object, e.g. '{"KEY":"val"}' (required)`]},project:{list:["List projects in the workspace","","USAGE"," coder flow project list"],get:["Get project details","","USAGE"," coder flow project get <id>"],create:["Create a new project","","USAGE"," coder flow project create --title <title> [flags]","","FLAGS"," --title <string> Project title (required); alias: --name"," --description <string> Project description"],update:["Update a project","","USAGE"," coder flow project update <id> [flags]","","FLAGS"," --title <string> New title; alias: --name"," --description <string> New description"," --status <string> New status"],delete:["Delete a project","","USAGE"," coder flow project delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],status:["Change project status","","USAGE"," coder flow project status <id> --set <status>","","FLAGS"," --set <string> New status (required); alias: --status"],resource:["Manage resources attached to a project","","USAGE"," coder flow project resource <subcommand> ...","","SUBCOMMANDS"," list <project-id> List resources"," add <project-id> --url <u> Add a github_repo resource"," update <project-id> <resource-id> [flags] Update a resource"," remove <project-id> <resource-id> Remove a resource"],"resource list":["List resources in a project","","USAGE"," coder flow project resource list <project-id>"],"resource add":["Add a resource to a project","","USAGE"," coder flow project resource add <project-id> [flags]","","FLAGS"," --type <string> Resource type: github_repo (default) | local_directory"," --url <string> GitHub repo URL (github_repo)"," --default-branch-hint <string> Default branch override"," --local-path <string> Local path (local_directory)"," --daemon-id <string> Daemon ID (local_directory)"," --label <string> Display label"],"resource update":["Update a project resource","","USAGE"," coder flow project resource update <project-id> <resource-id> [flags]","","FLAGS"," --url <string> New URL"," --label <string> New label"," --position <n> New position"],"resource remove":["Remove a resource from a project","","USAGE"," coder flow project resource remove <project-id> <resource-id>"]},label:{list:["List labels in the workspace","","USAGE"," coder flow label list"],get:["Get label details","","USAGE"," coder flow label get <id>"],create:["Create a new label","","USAGE"," coder flow label create --name <n> --color <#hex>","","FLAGS"," --name <string> Label name (required)"," --color <string> Hex color code, e.g. #3b82f6 (required)"],update:["Update a label","","USAGE"," coder flow label update <id> [flags]","","FLAGS"," --name <string> New name"," --color <string> New hex color"],delete:["Delete a label","","USAGE"," coder flow label delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"]},autopilot:{list:["List autopilots in the workspace","","USAGE"," coder flow autopilot list"],get:["Get autopilot details (includes triggers)","","USAGE"," coder flow autopilot get <id>"],create:["Create a new autopilot","","USAGE"," coder flow autopilot create --title <title> [flags]","","FLAGS"," --title <string> Title (required); alias: --name"," --description <string> Description"],update:["Update an autopilot","","USAGE"," coder flow autopilot update <id> [flags]","","FLAGS"," --title <string> New title"," --description <string> New description"],delete:["Delete an autopilot","","USAGE"," coder flow autopilot delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],runs:["List execution history for an autopilot","","USAGE"," coder flow autopilot runs <id>"],trigger:["Manually trigger an autopilot to run once","","USAGE"," coder flow autopilot trigger <id>"],"trigger-add":["Add a schedule or webhook trigger to an autopilot","","USAGE"," coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'"," coder flow autopilot trigger-add <id> --kind webhook","","ARGS"," <id> Autopilot UUID","","FLAGS"," --kind <string> schedule | webhook (required)"," --cron <expr> Cron expression for schedule triggers, e.g. '0 9 * * *'"," --timezone <string> Timezone for cron (e.g. Asia/Shanghai)"," --label <string> Display label"],"trigger-update":["Update an existing trigger","","USAGE"," coder flow autopilot trigger-update <autopilot-id> <trigger-id> [flags]","","FLAGS"," --cron <expr> New cron expression"," --timezone <string> New timezone"," --label <string> New label"," --enabled true|false Enable or disable"],"trigger-delete":["Delete a trigger","","USAGE"," coder flow autopilot trigger-delete <autopilot-id> <trigger-id> [--yes]","","FLAGS"," --yes Skip confirmation"],"trigger-rotate-url":["Rotate the webhook URL of a webhook trigger","","USAGE"," coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]","","FLAGS"," --yes Confirm URL rotation (old URL becomes invalid immediately)"]},squad:{list:["List squads in the workspace","","USAGE"," coder flow squad list"],get:["Get squad details","","USAGE"," coder flow squad get <id>"],create:["Create a new squad","","USAGE"," coder flow squad create --name <name> [flags]","","FLAGS"," --name <string> Squad name (required)"," --description <string> Description"],update:["Update a squad","","USAGE"," coder flow squad update <id> [flags]","","FLAGS"," --name <string> New name"," --description <string> New description"],delete:["Delete a squad (requires --yes)","","USAGE"," coder flow squad delete <id> --yes","","FLAGS"," --yes Confirm deletion"],activity:["Record a squad leader evaluation on an issue","","USAGE"," coder flow squad activity <issue-id> <outcome> [flags]","","ARGS"," <issue-id> Issue UUID or short key"," <outcome> action | no_action | failed","","FLAGS"," --reason <string> Evaluation reason"],member:["Work with squad members","","USAGE"," coder flow squad member <subcommand> ...","","SUBCOMMANDS"," list <squad-id> List members"," add <squad-id> --member-id <id> [--type] [--role] Add a member"," remove <squad-id> --member-id <id> Remove a member"," set-role <squad-id> --member-id <id> --role <r> Change a member's role"],"member list":["List squad members","","USAGE"," coder flow squad member list <squad-id>"],"member add":["Add a member to a squad","","USAGE"," coder flow squad member add <squad-id> --member-id <id> [flags]","","FLAGS"," --member-id <uuid> Member UUID (required)"," --type <string> agent (default) | member"," --role <string> Role (default: member)"],"member remove":["Remove a member from a squad","","USAGE"," coder flow squad member remove <squad-id> --member-id <id>","","FLAGS"," --member-id <uuid> Member UUID (required)"," --type <string> agent (default) | member"],"member set-role":["Change a squad member's role","","USAGE"," coder flow squad member set-role <squad-id> --member-id <id> --role <r>","","FLAGS"," --member-id <uuid> Member UUID (required)"," --role <string> New role (required)"," --member-type <string> agent (default) | member"]},skill:{list:["List skills in the workspace","","USAGE"," coder flow skill list"],get:["Get skill details (includes files)","","USAGE"," coder flow skill get <id>"],create:["Create a new skill","","USAGE"," coder flow skill create --name <n> [flags]","","FLAGS"," --name <string> Skill name (required)"," --description <string> Description"],update:["Update a skill","","USAGE"," coder flow skill update <id> [flags]","","FLAGS"," --name <string> New name"," --description <string> New description"],delete:["Delete a skill","","USAGE"," coder flow skill delete <id> [--yes]","","FLAGS"," --yes Skip confirmation"],import:["Import a skill from a URL","","USAGE"," coder flow skill import --url <url> [flags]","","FLAGS"," --url <string> Source URL: clawhub.ai, skills.sh, or github.com (required)"," --on-conflict <string> fail (default) | overwrite | rename | skip"],search:["Search for installable skills","","USAGE"," coder flow skill search <query>","","ARGS"," <query> Search keyword"],files:["Work with skill files","","USAGE"," coder flow skill files <subcommand> ...","","SUBCOMMANDS"," list <skill-id> List files"," upsert <skill-id> --path <p> --content <c> Create or update a file"," delete <skill-id> <file-id> [--yes] Delete a file"],"files list":["List files in a skill","","USAGE"," coder flow skill files list <skill-id>"],"files upsert":["Create or update a skill file","","USAGE"," coder flow skill files upsert <skill-id> --path <p> --content <c>","","FLAGS"," --path <string> File path within the skill (required)"," --content <string> File content (required)"],"files delete":["Delete a skill file","","USAGE"," coder flow skill files delete <skill-id> <file-id> [--yes]","","FLAGS"," --yes Skip confirmation"]},runtime:{list:["List runtimes in the workspace","","USAGE"," coder flow runtime list"],get:["Get runtime details","","USAGE"," coder flow runtime get <id>","","ARGS"," <id> Runtime UUID or name"],models:["List available models for a runtime (async, polls until ready)","","USAGE"," coder flow runtime models <id>","","ARGS"," <id> Runtime UUID or name"],usage:["Get token usage for a runtime","","USAGE"," coder flow runtime usage <id> [flags]","","ARGS"," <id> Runtime UUID or name","","FLAGS"," --days <n> Number of days to include (default 90)"],activity:["Get hourly task activity for a runtime","","USAGE"," coder flow runtime activity <id>"],update:["Initiate a CLI update on a runtime","","USAGE"," coder flow runtime update <id> --target-version <v>","","FLAGS"," --target-version <string> Target version to update to (required)"]},workspace:{list:["List all workspaces you belong to","","USAGE"," coder flow workspace list"],get:["Get workspace details","","USAGE"," coder flow workspace get [id]","","ARGS"," [id] Workspace UUID or slug (default: current workspace)"],switch:["Set the default workspace","","USAGE"," coder flow workspace switch <id|slug>"],update:["Update workspace metadata (admin/owner only)","","USAGE"," coder flow workspace update [id] [flags]","","FLAGS"," --name <string> New workspace name"," --description <string> New description"," --context <string> New context string"," --issue-prefix <string> Issue key prefix"],member:["Manage workspace members","","USAGE"," coder flow workspace member list [workspace-id]"],"member list":["List workspace members","","USAGE"," coder flow workspace member list [workspace-id]"]},repo:{list:["List workspace repositories","","USAGE"," coder flow repo list"],add:["Add repositories to the workspace registry","","USAGE"," coder flow repo add <url> [<url>...] [flags]","","ARGS"," <url>... One or more repository URLs","","FLAGS"," --description <string> Description (only applied when adding a single repo)"],remove:["Remove repositories from the workspace registry","","USAGE"," coder flow repo remove <url> [<url>...]","","ARGS"," <url>... One or more repository URLs"],checkout:["Check out a repository into the working directory","","USAGE"," coder flow repo checkout <url> [flags]","","ARGS"," <url> Repository URL","","FLAGS"," --ref <string> Branch, tag, or commit to check out"]},user:{profile:["Get or update your personal profile","","USAGE"," coder flow user profile get"," coder flow user profile update --description <text>"," coder flow user profile update --clear"],"profile get":["Get your personal profile","","USAGE"," coder flow user profile get"],"profile update":["Update your personal profile","","USAGE"," coder flow user profile update --description <text>"," coder flow user profile update --clear","","FLAGS"," --description <string> New profile description"," --clear Clear the profile description"]},attachment:{download:["Download an attachment to a local file","","USAGE"," coder flow attachment download <id> [flags]","","ARGS"," <id> Attachment UUID","","FLAGS"," -o, --output-dir <dir> Directory to save file (default: current directory)"]},daemon:{start:["Start the daemon","","USAGE"," coder flow daemon start [flags]","","FLAGS"," --foreground Run in foreground (no daemonize)"," --daemon-id <string> Override daemon ID"," --device-name <string> Override device name"," --runtime-name <string> Override runtime name"," --poll-interval <duration> Task poll interval (default 30s)"," --heartbeat-interval <dur> Heartbeat interval (default 15s)"," --max-concurrent-tasks <n> Max parallel tasks (default 20)"],stop:["Stop the running daemon","","USAGE"," coder flow daemon stop"],restart:["Restart the daemon","","USAGE"," coder flow daemon restart"],status:["Show daemon status","","USAGE"," coder flow daemon status [flags]","","FLAGS"," --format json JSON output"],logs:["Show daemon logs","","USAGE"," coder flow daemon logs [flags]","","FLAGS"," -f, --follow Follow log output"," -n, --lines <n> Number of recent lines to show (default 50)"],"disk-usage":["Show workspace disk usage","","USAGE"," coder flow daemon disk-usage [flags]","","FLAGS"," --workspaces-root <dir> Custom workspaces root directory"," --top <n> Show only the top N entries by size"]}};function dk(t,e,s,r){let n=uk[e]||{},o=r&&n[`${s} ${r}`]||n[s];o?t.emit(o.join(`
510
+ `)):Gu(t,e)}Bu.exports={showHelp:Mu,showResourceHelp:Gu,showVerbHelp:dk}});var Vu=k((L0,Zu)=>{var{MulticaHttp:pk,parseJson:R0}=Rn(),fk=ju(),{showHelp:mk,showResourceHelp:hk,showVerbHelp:gk}=Fu(),yk=new Set(["--format","--apikey"]);function _k(t){let e=[];for(let s=0;s<t.length;s++){if(yk.has(t[s])){s++;continue}e.push(t[s])}return e}var wk=new Set(["issue","agent","project","label","skill","squad","autopilot","runtime","workspace","repo","user","attachment","daemon"]),bk=new Set(["daemon"]),Eo=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({multicaSubcommand:e,multicaRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return mk(n),0;let o=r;if(!o)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let i=e;if(!wk.has(i))return n.fail(`\u672A\u77E5\u547D\u4EE4: coder flow ${i}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let a=_k(s||[]);if(a.length===0||a[0]==="--help"||a[0]==="-h")return hk(n,i),0;if(a.includes("--help")||a.includes("-h")){let x=a[0],P=a[1]&&!a[1].startsWith("-")?a[1]:null;return gk(n,i,x,P),0}let{teamId:c,remaining:l}=this._extractWorkspaceFlag(a),u=bk.has(i)?null:await this._resolveWorkspace(c,o),d=this._resolve(i,l);if(d.error)return n.fail(d.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let p=n.getMulticaBaseUrl?n.getMulticaBaseUrl():null,h=new pk(o,p,u),{fn:g,args:_}=d,b={ctx:n,http:h,args:_,arg:_[0]};try{return await g(b)||0}catch(x){return x&&x.handled?x.code||1:(n.fail(x.message||String(x),x.hint),1)}}_resolve(e,s){let r=fk[e];if(!r)return{error:`\u8D44\u6E90 ${e} \u6682\u672A\u5B9E\u73B0`};let n=s[0];if(!n||n.startsWith("-")){let i=r.list||r.get;return i?{fn:i,args:s}:{error:`${e} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let o=r[n];if(!o){let i=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${i}\uFF09`}}if(typeof o=="object"&&o!==null&&typeof o!="function"){let i=s[1];if(!i||i.startsWith("-")){let c=o.list||o.get;return c?{fn:c,args:s.slice(1)}:{error:`${e} ${n} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let a=o[i];if(!a){let c=Object.keys(o).join(" | ");return{error:`\u672A\u77E5 ${e} ${n} \u52A8\u8BCD: ${i}\uFF08\u53EF\u7528: ${c}\uFF09`}}return{fn:a,args:s.slice(2)}}return{fn:o,args:s.slice(1)}}_extractWorkspaceFlag(e){for(let s of["--workspace","--team"]){let r=e.indexOf(s);if(r!==-1&&e[r+1])return{teamId:e[r+1],remaining:[...e.slice(0,r),...e.slice(r+2)]}}return{teamId:null,remaining:e}}async _resolveWorkspace(e,s){if(e)return e;let r=this.ctx,n=r.getTeam?r.getTeam():null;if(n&&n.id)return n.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),i=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(i.status===200){let c=this.teamService.parseJson(i.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};Zu.exports=Eo});var Ku=k((P0,Wu)=>{var kk=Vu(),xk=or();function Sk(t,e){let s=new kk(e);return s.teamService=new xk(e),t.command("flow [args...]").description("\u64CD\u4F5C Coder Flow\uFF08issue/agent \u7B49\uFF09").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],o=await s.handle({multicaSubcommand:n[0],multicaRemainingArgs:n.slice(1),apikey:e.getApiKey()});process.exitCode=o||0}),s}Wu.exports={register:Sk}});var Yu=k((N0,Hu)=>{var Ik=Fs(),Ck=or();function Ju(t,e,s){let[r,n]=e;return{[`${t}Subcommand`]:r,[`${t}Arg`]:n,[`${t}RemainingArgs`]:e.slice(1),apikey:s.getApiKey(),coderBaseUrl:s.getCoderBaseUrl()}}function zu(t,e,s){t.command(`${s.name} [args...]`).description(s.describe).allowUnknownOption().helpOption(!1).action(async r=>{let n=await s.service.handle(Ju(s.prefix,r||[],e));process.exitCode=n||0})}function Ek(t,e){let s=new Ck(e),r=new Ik(e);return r.teamService=s,zu(t,e,{name:"team",describe:"\u7BA1\u7406\u56E2\u961F\u4E0E\u6210\u5458\uFF08\u9762\u5411 AI\uFF09",prefix:"team",service:s}),zu(t,e,{name:"skills",describe:"\u7BA1\u7406 Claude Code skills",prefix:"skills",service:r}),{teamService:s,skillsService:r}}Hu.exports={register:Ek,buildHandleArgs:Ju}});var Qu=k((q0,Xu)=>{var Ak=fa(),$k=Ha(),Tk=tc(),Uk=uc(),vk=Ic(),Ok=Ku(),Dk=Yu();function Rk(t,e){return Ak.register(t,e),$k.register(t,e),Tk.register(t,e),Uk.register(t,e),vk.register(t,e),Ok.register(t,e),{domains:Dk.register(t,e)}}Xu.exports={registerAll:Rk}});var sd=k((j0,td)=>{var{CoderContext:ed}=Oo(),{SHORTCUTS:Lk,isAgentName:Pk,launchAgent:Nk}=qs(),qk=oi(),{version:jk}=Lt(),Ao=class{constructor(){this.vscodeExtensionService=new qk}_readGlobalOptions(e){let s=null,r=null;for(let n=0;n<e.length;n++)e[n]==="--format"&&e[n+1]?s=e[n+1]:e[n]==="--apikey"&&e[n+1]&&(r=e[n+1]);return{format:s,apikey:r}}_leadingCompletionFlag(e){let s=new Set(["--format","--apikey"]);for(let r=0;r<e.length;r++){let n=e[r];if(n==="--install-completion"||n==="--show-completion")return n;if(s.has(n)){r++;continue}if(!n.startsWith("-"))return null}return null}async run(e=process.argv.slice(2)){if(e[0]==="__complete"){let{complete:i}=ra();return i(e.slice(1))}let s=this._leadingCompletionFlag(e);if(s){let i=this._readGlobalOptions(e),a=new ed(i),{installCompletion:c,showCompletion:l}=ua(),u=e.indexOf(s),d=e[u+1]&&!e[u+1].startsWith("-")?e[u+1]:null;return s==="--install-completion"?c(a,d):l(a,d)}try{await this.vscodeExtensionService.ensureExtensionInstalled()}catch(i){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",i)}let r=this._readGlobalOptions(e),n=new ed(r),o=e[0];return o?Lk.has(o)&&Pk(o)?await this._launchShortcut(o,e.slice(1),n):await this._runCommander(e,n):await this._launchShortcut("claude",[],n)}async _launchShortcut(e,s,r){let n=r.getApiKey();return n?(this._notifySkillUpdates(n),await Nk(e,s,r)||0):(r.fail("missing credentials","run `coder auth login --apikey <ak>.<sk>`\uFF08\u83B7\u53D6: https://makecoder.com/my/apikeys\uFF09"),1)}_notifySkillUpdates(e){try{let s=Fs();new s(null).notifyAndRefreshUpdates(e)}catch{}}async _runCommander(e,s){let{Command:r}=require("commander"),{registerAll:n}=Qu(),o=new r;return o.name("coder").description("Coder \u2014 AI Agent Runtime OS\uFF08AI\u667A\u80FD\u4F53\u64CD\u4F5C\u7CFB\u7EDF\uFF09").version(jk,"-v, --version","\u663E\u793A\u7248\u672C\u53F7").helpOption("-h, --help","\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").enablePositionalOptions().addHelpText("after",["","\u5FEB\u6377\u65B9\u5F0F:"," coder \u7B49\u540C coder agent claude"," coder claude ... \u7B49\u540C coder agent claude ..."," coder codex ... \u7B49\u540C coder agent codex ..."," coder gemini ... \u7B49\u540C coder agent gemini ...","",`\u914D\u7F6E\u6587\u4EF6: ${s.configPath}`].join(`
511
+ `)),o.option("--format <fmt>","\u8F93\u51FA\u683C\u5F0F\uFF1Atext\uFF08\u9ED8\u8BA4\uFF09| json"),o.option("--apikey <key>","\u4E34\u65F6\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09"),o.option("--install-completion","\u4E3A\u5F53\u524D shell \u5B89\u88C5\u81EA\u52A8\u8865\u5168"),o.option("--show-completion","\u6253\u5370\u5F53\u524D shell \u7684\u8865\u5168\u811A\u672C\uFF08\u4F9B\u590D\u5236/\u81EA\u5B9A\u4E49\u5B89\u88C5\uFF09"),n(o,s),await o.parseAsync(e,{from:"user"}),process.exitCode||0}};td.exports=Ao});var Mk=sd(),{shouldSuppressUpdateNotice:Gk}=Jr();process.on("unhandledRejection",(t,e)=>{console.error("Unhandled Promise Rejection:",t),process.exit(1)});process.on("uncaughtException",t=>{console.error("Uncaught Exception:",t.message),process.env.CODER_DEBUG&&console.error(t.stack),process.exit(1)});function Bk(t,e){let s=o=>o.replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(n[o]||0))return!0;if((r[o]||0)<(n[o]||0))return!1}return!1}function Fk(){if(Gk())return;let t=require("https"),{version:e}=Lt(),r=t.get("https://registry.npmmirror.com/makecoder/latest",{timeout:5e3},n=>{let o="";n.on("data",i=>{o+=i}),n.on("end",()=>{try{let i=JSON.parse(o).version;i&&Bk(i,e)&&console.error(`\x1B[33m\u26A1 \u68C0\u6D4B\u5230\u65B0\u7248\u672C ${i}\uFF08\u5F53\u524D ${e}\uFF09\uFF0C\u8FD0\u884C coder update \u5347\u7EA7\x1B[0m`)}catch{}})});r.on("error",()=>{}),r.on("timeout",()=>r.destroy())}async function Zk(){let t=new Set(["pub","auth","update","skills","wiki","team"]),e=process.argv[2];e!=="__complete"&&(!e||!t.has(e))&&Fk(),process.env.CODER_NESTED="1";let s=new Mk;try{let r=await s.run();process.exit(r)}catch(r){console.error(`Fatal error: ${r.message}`),process.env.CODER_DEBUG&&console.error(r.stack),process.exit(1)}}Zk().catch(t=>{console.error(`Startup error: ${t.message}`),process.exit(1)});