makecoder 4.1.24 → 4.1.26

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,78 +1,75 @@
1
1
  #!/usr/bin/env node
2
- var Ip=Object.create;var fo=Object.defineProperty;var Cp=Object.getOwnPropertyDescriptor;var Ep=Object.getOwnPropertyNames;var $p=Object.getPrototypeOf,Ap=Object.prototype.hasOwnProperty;var x=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(s){throw e=0,s}};var Tp=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ep(e))!Ap.call(t,n)&&n!==s&&fo(t,n,{get:()=>e[n],enumerable:!(r=Cp(e,n))||r.enumerable});return t};var vp=(t,e,s)=>(s=t!=null?Ip($p(t)):{},Tp(e||!t||!t.__esModule?fo(s,"default",{value:t,enumerable:!0}):s,t));var yo=x((fS,go)=>{var Yt=require("fs"),mo=require("path"),Up=require("os"),ho="https://api.makecoder.com/v1",Qr=class{constructor(e={}){let s=process.env.CODER_PROFILE,r=s?`.coder.${s}`:".coder";this.configPath=mo.join(Up.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=mo.dirname(this.configPath);try{return Yt.existsSync(e)||Yt.mkdirSync(e,{recursive:!0}),Yt.existsSync(this.configPath)||Yt.writeFileSync(this.configPath,JSON.stringify(this.defaultConfig,null,2)),JSON.parse(Yt.readFileSync(this.configPath,"utf8"))}catch{return{...this.defaultConfig}}}_writeConfig(e){try{return Yt.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||ho}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 Ep=Object.create;var dn=Object.defineProperty;var Ap=Object.getOwnPropertyDescriptor;var Cp=Object.getOwnPropertyNames;var Up=Object.getPrototypeOf,$p=Object.prototype.hasOwnProperty;var I=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(s){throw e=0,s}};var Tp=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Cp(e))!$p.call(t,i)&&i!==s&&dn(t,i,{get:()=>e[i],enumerable:!(r=Ap(e,i))||r.enumerable});return t};var vp=(t,e,s)=>(s=t!=null?Ep(Up(t)):{},Tp(e||!t||!t.__esModule?dn(s,"default",{value:t,enumerable:!0}):s,t));var fn=I((zS,mn)=>{var Yt=require("fs"),un=require("path"),Dp=require("os"),pn="https://api.makecoder.com/v1",si=class{constructor(e={}){let s=process.env.CODER_PROFILE,r=s?`.coder.${s}`:".coder";this.configPath=un.join(Dp.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=un.dirname(this.configPath);try{return Yt.existsSync(e)||Yt.mkdirSync(e,{recursive:!0}),Yt.existsSync(this.configPath)||Yt.writeFileSync(this.configPath,JSON.stringify(this.defaultConfig,null,2)),JSON.parse(Yt.readFileSync(this.configPath,"utf8"))}catch{return{...this.defaultConfig}}}_writeConfig(e){try{return Yt.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||pn}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 <apiKey>`"),!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
- `)}};go.exports={CoderContext:Qr,DEFAULT_BASE_URL:ho}});var Es=x((mS,wo)=>{var{spawn:Op}=require("child_process"),Cs=require("path"),_o=require("fs"),en=class{constructor(e){this.config=e}findExecutablePath(){let e=Cs.dirname(require.main.filename);for(let s of this.config.executablePaths){let r=Cs.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=Cs.dirname(process.execPath),r=[Cs.join(s,"..","lib","node_modules","makecoder","dist",e),Cs.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:i={}}=e;try{let o=this.findExecutablePath();return process.env.CODER_DEBUG&&console.log(`executablePath: ${o}`),new Promise((a,c)=>{let l={...process.env,...this.config.environmentVariables(r),...i};n&&(l.CODER_APIKEY=n);let u=["--no-warnings"];process.env.CODER_INSPECT_BRK==="True"&&u.push("--inspect-brk"),u.push(o,...s);let d=Op("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(o){throw o}}};wo.exports=en});var tn=x((hS,bo)=>{var Dp=["# 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
- `);bo.exports={CODER_RUNTIME_PROMPT:Dp}});var xo=x((gS,ko)=>{var Rp=require("fs"),{CODER_RUNTIME_PROMPT:sn}=tn(),Lp=new Set(["agents","auth","auto-mode","config","doctor","install","mcp","plugin","plugins","project","setup-token","ultrareview","update","upgrade"]);function Pp(t){for(let e of t){if(e==="--")break;if(!e.startsWith("-"))return Lp.has(e)}return!1}function Np(t){let e=[...t];if(Pp(e))return e;let s=e.indexOf("--append-system-prompt");if(s!==-1&&s+1<e.length)return e[s+1]=`${sn}
8
+ `)}};mn.exports={CoderContext:si,DEFAULT_BASE_URL:pn}});var As=I((JS,gn)=>{var{spawn:Op}=require("child_process"),Es=require("path"),hn=require("fs"),ri=class{constructor(e){this.config=e}findExecutablePath(){let e=Es.dirname(require.main.filename);for(let s of this.config.executablePaths){let r=Es.resolve(e,s);if(hn.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=Es.dirname(process.execPath),r=[Es.join(s,"..","lib","node_modules","makecoder","dist",e),Es.join(s,"node_modules","makecoder","dist",e)];for(let i of r)if(hn.existsSync(i))return i;return null}async launch(e={}){let{remainingArgs:s=[],coderBaseUrl:r,apikey:i=null,extraEnv:o={}}=e;try{let n=this.findExecutablePath();return process.env.CODER_DEBUG&&console.log(`executablePath: ${n}`),new Promise((a,c)=>{let l={...process.env,...this.config.environmentVariables(r),...o};i&&(l.CODER_APIKEY=i);let d=["--no-warnings"];process.env.CODER_INSPECT_BRK==="True"&&d.push("--inspect-brk"),d.push(n,...s);let u=Op("node",d,{env:l,stdio:"inherit"});u.on("error",p=>{console.error(`Failed to start: ${p.message}`),c(p)}),u.on("exit",p=>a(p)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{u.kill("SIGTERM"),setTimeout(()=>{u.killed||u.kill("SIGKILL")},8e3)})})}catch(n){throw n}}};gn.exports=ri});var ii=I((HS,yn)=>{var Lp=["# 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
+ `);yn.exports={CODER_RUNTIME_PROMPT:Lp}});var wn=I((YS,_n)=>{var Rp=require("fs"),{CODER_RUNTIME_PROMPT:oi}=ii(),Pp=new Set(["agents","auth","auto-mode","config","doctor","install","mcp","plugin","plugins","project","setup-token","ultrareview","update","upgrade"]);function Np(t){for(let e of t){if(e==="--")break;if(!e.startsWith("-"))return Pp.has(e)}return!1}function jp(t){let e=[...t];if(Np(e))return e;let s=e.indexOf("--append-system-prompt");if(s!==-1&&s+1<e.length)return e[s+1]=`${oi}
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=Rp.readFileSync(e[r+1],"utf8")}catch{return e}return e.splice(r,2,"--append-system-prompt",`${sn}
11
+ ${e[s+1]}`,e;let r=e.indexOf("--append-system-prompt-file");if(r!==-1&&r+1<e.length){let i="";try{i=Rp.readFileSync(e[r+1],"utf8")}catch{return e}return e.splice(r,2,"--append-system-prompt",`${oi}
12
12
 
13
- ${n}`),e}return[...e,"--append-system-prompt",sn]}ko.exports={withRuntimePrompt:Np}});var Io=x((yS,So)=>{var jp=Es(),{spawn:qp,execFileSync:Mp}=require("child_process"),Qs=require("path"),$s=require("fs"),{withRuntimePrompt:Gp}=xo(),rn=class extends jp{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 Mp(s,["--version"],{stdio:"ignore"}),s}catch{}if(r){let i=Qs.join(r,".bun","bin",s);if($s.existsSync(i))return i}if(r){let i=Qs.join(r,".local","bin",s);if($s.existsSync(i))return i}try{let i=require.resolve(`bun/${e?"bin/bun.exe":"bin/bun"}`);if($s.existsSync(i))return i}catch{}let n=this._getBunPlatformPackage();if(n)try{let i=Qs.dirname(require.resolve(`${n}/package.json`)),o=Qs.join(i,"bin",s);if($s.existsSync(o))return o}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:i={}}=e,o=this.findExecutablePath(),a=this._resolveBunPath();return process.env.CODER_DEBUG&&(console.log(`executablePath (bun): ${o}`),console.log(`bunPath: ${a}`)),new Promise((c,l)=>{let u={...process.env,...this.config.environmentVariables(r),CODER_EXECPATH:$s.realpathSync(process.argv[1]),...i};n&&(u.CODER_APIKEY=n);let d=Gp(s),p=qp(a,[o,...d],{env:u,stdio:"inherit"});p.on("error",f=>{f.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: ${f.message}`),l(f)}),p.on("exit",f=>c(f)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{p.kill("SIGTERM"),setTimeout(()=>{p.killed||p.kill("SIGKILL")},8e3)})})}};So.exports=rn});var $o=x((_S,Eo)=>{var{execFileSync:nn,spawnSync:He}=require("child_process"),Fp=require("readline"),X=require("path"),L=require("fs"),on=require("os"),Bp=require("crypto"),Zp=["opus4.8","claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001"],ct="/Applications/Claude.app",Wp=`${ct}/Contents/Resources/app.asar`,an="1.12603.1",er="https://cdn.makecoder.com/cdnuploads/claude-app/Claude-darwin-universal-1.12603.1.dmg",cn=class{constructor(){this.name="Claude Desktop (3p)",this.userData=X.join(on.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,i=(s[0]||"setup").toLowerCase();try{if(i==="restore")return this._restore();if(i==="status")return this._status();if(i==="setup"){if(L.existsSync(ct)){let o=await this._ensureInstalledAppVersion();if(o!==0)return o}else{let o=this._ensureClaudeAppInstalled();if(o!==0)return o}return await this._setup(r,n)}return console.error(`\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A${i}\uFF08\u53EF\u7528\uFF1Asetup | restore | status\uFF09`),1}catch(o){return console.error(`Error: ${o.message}`),process.env.CODER_DEBUG&&console.error(o.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:i}=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:i,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=X.join(on.tmpdir(),`claude-app-${process.pid}-${Date.now()}.dmg`),s=null;try{if(He("curl",["-fL","--retry","2","-o",e,er],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!L.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${er}\uFF09\u3002`),1;let n=He("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 i=n.stdout.match(/(\/Volumes\/[^\n]+)\s*$/m);if(s=i?i[1].trim():null,!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let o=X.join(s,"Claude.app");return L.existsSync(o)?He("ditto",[o,ct],{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${o}\uFF09\u3002`),1)}finally{s&&He("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{L.rmSync(e,{force:!0})}catch{}}}async _ensureInstalledAppVersion(){let e=this._readInstalledAppVersion();return e?Vp(e,an)?(console.error(`\u68C0\u6D4B\u5230 Claude Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${e}\uFF0C\u63A8\u8350 ${an}\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 ${ct} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_readInstalledAppVersion(){let e=X.join(ct,"Contents","Info.plist");if(!L.existsSync(e))return null;try{return nn("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=Fp.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${ct}`),this._quitApp();let e=X.join(on.tmpdir(),`claude-app-upgrade-${process.pid}-${Date.now()}.dmg`),s=null;try{if(He("curl",["-fL","--retry","2","-o",e,er],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!L.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${er}\uFF09\u3002`),1;let n=He("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=Kp(n.stdout),!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let i=zp(s,"Claude.app");return i?this._replaceAppBundle(i,ct)?(console.error(`Claude Desktop \u5DF2\u5347\u7EA7\u5230 ${an}\u3002`),0):1:(console.error("DMG \u5185\u672A\u627E\u5230 Claude.app\u3002"),1)}finally{s&&He("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{L.rmSync(e,{force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return L.rmSync(r,{recursive:!0,force:!0}),L.renameSync(s,r),He("ditto",[e,s],{stdio:"inherit"}).status===0?(L.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Claude Desktop \u5931\u8D25\uFF1A${s}`),L.rmSync(s,{recursive:!0,force:!0}),L.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}`),!L.existsSync(s)&&L.existsSync(r))try{L.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002")}catch(i){console.error(`\u6062\u590D\u65E7\u7248 Claude Desktop \u5931\u8D25\uFF1A${i.message}`)}return!1}}_detectRequiredVersion(){try{let s=L.readFileSync(Wp).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=L.realpathSync(process.execPath),s=L.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(){L.existsSync(this.backupDir)||L.existsSync(this.userData)&&(L.cpSync(this.userData,this.backupDir,{recursive:!0}),process.env.CODER_DEBUG&&console.log(`[claude app] \u5DF2\u5907\u4EFD -> ${this.backupDir}`))}_writeDeploymentMode(){L.mkdirSync(this.userData,{recursive:!0});let e=X.join(this.userData,"claude_desktop_config.json"),s={};try{s=JSON.parse(L.readFileSync(e,"utf8"))}catch{}s.deploymentMode="3p",L.writeFileSync(e,JSON.stringify(s,null,2))}_writeGatewayConfig(e,s){let r=X.join(this.userData,"configLibrary");L.mkdirSync(r,{recursive:!0});let n=Bp.randomUUID().toLowerCase(),i={inferenceProvider:"gateway",inferenceCredentialKind:"static",inferenceGatewayBaseUrl:`${e}/claude`,inferenceGatewayAuthScheme:"x-api-key",inferenceGatewayApiKey:s,modelDiscoveryEnabled:!1,inferenceModels:Zp};L.writeFileSync(X.join(r,`${n}.json`),JSON.stringify(i,null,2)),L.writeFileSync(X.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=X.join(e,"ccd-shim"),r=require.main&&require.main.filename&&X.dirname(require.main.filename)||__dirname,n=[X.resolve(r,s),X.resolve(r,"../dist",s),X.resolve(__dirname,"../../../dist",s)],i=X.dirname(process.execPath);n.push(X.join(i,"..","lib","node_modules","makecoder","dist",e,"ccd-shim"),X.join(i,"node_modules","makecoder","dist",e,"ccd-shim"));for(let o of n)if(L.existsSync(o))return o;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 X.join(this.userData,"claude-code",e,"claude.app","Contents","MacOS")}_installShim(e,{exec:s,entry:r,apikey:n,coderBaseUrl:i}){let o=this._resolveShimBinary(),a=this._shimInstallDir(e);L.mkdirSync(a,{recursive:!0});let c=X.join(a,"claude");L.copyFileSync(o,c),L.chmodSync(c,493);let l=`exec=${s}
13
+ ${i}`),e}return[...e,"--append-system-prompt",oi]}_n.exports={withRuntimePrompt:jp}});var kn=I((XS,bn)=>{var Gp=As(),{spawn:qp,execFileSync:Mp}=require("child_process"),Xs=require("path"),Cs=require("fs"),{withRuntimePrompt:Fp}=wn(),ni=class extends Gp{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 Mp(s,["--version"],{stdio:"ignore"}),s}catch{}if(r){let o=Xs.join(r,".bun","bin",s);if(Cs.existsSync(o))return o}if(r){let o=Xs.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 i=this._getBunPlatformPackage();if(i)try{let o=Xs.dirname(require.resolve(`${i}/package.json`)),n=Xs.join(o,"bin",s);if(Cs.existsSync(n))return n}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:i=null,extraEnv:o={}}=e,n=this.findExecutablePath(),a=this._resolveBunPath();return process.env.CODER_DEBUG&&(console.log(`executablePath (bun): ${n}`),console.log(`bunPath: ${a}`)),new Promise((c,l)=>{let d={...process.env,...this.config.environmentVariables(r),CODER_EXECPATH:Cs.realpathSync(process.argv[1]),...o};i&&(d.CODER_APIKEY=i);let u=Fp(s),p=qp(a,[n,...u],{env:d,stdio:"inherit"});p.on("error",m=>{m.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: ${m.message}`),l(m)}),p.on("exit",m=>c(m)),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{p.kill("SIGTERM"),setTimeout(()=>{p.killed||p.kill("SIGKILL")},8e3)})})}};bn.exports=ni});var In=I((QS,xn)=>{var{execFileSync:ai,spawnSync:Ye}=require("child_process"),Bp=require("readline"),ee=require("path"),N=require("fs"),ci=require("os"),Wp=require("crypto"),Zp=["opus4.8","claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001"],lt="/Applications/Claude.app",Vp=`${lt}/Contents/Resources/app.asar`,li="1.12603.1",Qs="https://cdn.makecoder.com/cdnuploads/claude-app/Claude-darwin-universal-1.12603.1.dmg",di=class{constructor(){this.name="Claude Desktop (3p)",this.userData=ee.join(ci.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:i=null}=e,o=(s[0]||"setup").toLowerCase();try{if(o==="restore")return this._restore();if(o==="status")return this._status();if(o==="setup"){if(N.existsSync(lt)){let n=await this._ensureInstalledAppVersion();if(n!==0)return n}else{let n=this._ensureClaudeAppInstalled();if(n!==0)return n}return await this._setup(r,i)}return console.error(`\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A${o}\uFF08\u53EF\u7528\uFF1Asetup | restore | status\uFF09`),1}catch(n){return console.error(`Error: ${n.message}`),process.env.CODER_DEBUG&&console.error(n.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:i,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:i,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=ee.join(ci.tmpdir(),`claude-app-${process.pid}-${Date.now()}.dmg`),s=null;try{if(Ye("curl",["-fL","--retry","2","-o",e,Qs],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!N.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${Qs}\uFF09\u3002`),1;let i=Ye("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(i.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),1;let o=i.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 n=ee.join(s,"Claude.app");return N.existsSync(n)?Ye("ditto",[n,lt],{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${n}\uFF09\u3002`),1)}finally{s&&Ye("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{N.rmSync(e,{force:!0})}catch{}}}async _ensureInstalledAppVersion(){let e=this._readInstalledAppVersion();return e?Kp(e,li)?(console.error(`\u68C0\u6D4B\u5230 Claude Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${e}\uFF0C\u63A8\u8350 ${li}\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 ${lt} \u7684\u7248\u672C\u53F7\uFF0C\u8DF3\u8FC7\u5347\u7EA7\u68C0\u67E5\u3002`),0)}_readInstalledAppVersion(){let e=ee.join(lt,"Contents","Info.plist");if(!N.existsSync(e))return null;try{return ai("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=Bp.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Claude Desktop\uFF1F[Y/n] ",i=>{r.close(),s(i.trim().toLowerCase())})});return e===""||e==="y"||e==="yes"}_upgradeClaudeApp(){console.error(`\u6B63\u5728\u5347\u7EA7 Claude Desktop\uFF1A${lt}`),this._quitApp();let e=ee.join(ci.tmpdir(),`claude-app-upgrade-${process.pid}-${Date.now()}.dmg`),s=null;try{if(Ye("curl",["-fL","--retry","2","-o",e,Qs],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!N.existsSync(e))return console.error(`\u4E0B\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\uFF08${Qs}\uFF09\u3002`),1;let i=Ye("hdiutil",["attach",e,"-nobrowse","-readonly"],{encoding:"utf8"});if(i.status!==0)return console.error("\u6302\u8F7D Claude \u5B89\u88C5\u5305\u5931\u8D25\u3002"),process.env.CODER_DEBUG&&i.stderr&&console.error(i.stderr.trim()),1;if(s=zp(i.stdout),!s)return console.error("\u65E0\u6CD5\u89E3\u6790 DMG \u6302\u8F7D\u70B9\u3002"),1;let o=Jp(s,"Claude.app");return o?this._replaceAppBundle(o,lt)?(console.error(`Claude Desktop \u5DF2\u5347\u7EA7\u5230 ${li}\u3002`),0):1:(console.error("DMG \u5185\u672A\u627E\u5230 Claude.app\u3002"),1)}finally{s&&Ye("hdiutil",["detach",s,"-quiet"],{stdio:"ignore"});try{N.rmSync(e,{force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return N.rmSync(r,{recursive:!0,force:!0}),N.renameSync(s,r),Ye("ditto",[e,s],{stdio:"inherit"}).status===0?(N.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Claude Desktop \u5931\u8D25\uFF1A${s}`),N.rmSync(s,{recursive:!0,force:!0}),N.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Claude Desktop\u3002"),!1)}catch(i){if(console.error(`\u66FF\u6362 Claude Desktop \u5931\u8D25\uFF1A${i.message}`),!N.existsSync(s)&&N.existsSync(r))try{N.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=N.readFileSync(Vp).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=N.realpathSync(process.execPath),s=N.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(){N.existsSync(this.backupDir)||N.existsSync(this.userData)&&(N.cpSync(this.userData,this.backupDir,{recursive:!0}),process.env.CODER_DEBUG&&console.log(`[claude app] \u5DF2\u5907\u4EFD -> ${this.backupDir}`))}_writeDeploymentMode(){N.mkdirSync(this.userData,{recursive:!0});let e=ee.join(this.userData,"claude_desktop_config.json"),s={};try{s=JSON.parse(N.readFileSync(e,"utf8"))}catch{}s.deploymentMode="3p",N.writeFileSync(e,JSON.stringify(s,null,2))}_writeGatewayConfig(e,s){let r=ee.join(this.userData,"configLibrary");N.mkdirSync(r,{recursive:!0});let i=Wp.randomUUID().toLowerCase(),o={inferenceProvider:"gateway",inferenceCredentialKind:"static",inferenceGatewayBaseUrl:`${e}/claude`,inferenceGatewayAuthScheme:"x-api-key",inferenceGatewayApiKey:s,modelDiscoveryEnabled:!1,inferenceModels:Zp};N.writeFileSync(ee.join(r,`${i}.json`),JSON.stringify(o,null,2)),N.writeFileSync(ee.join(r,"_meta.json"),JSON.stringify({appliedId:i,entries:[{id:i,name:"Coder Gateway"}]},null,2)),process.env.CODER_DEBUG&&console.log(`[claude app] gateway \u914D\u7F6E uuid=${i}`)}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=ee.join(e,"ccd-shim"),r=require.main&&require.main.filename&&ee.dirname(require.main.filename)||__dirname,i=[ee.resolve(r,s),ee.resolve(r,"../dist",s),ee.resolve(__dirname,"../../../dist",s)],o=ee.dirname(process.execPath);i.push(ee.join(o,"..","lib","node_modules","makecoder","dist",e,"ccd-shim"),ee.join(o,"node_modules","makecoder","dist",e,"ccd-shim"));for(let n of i)if(N.existsSync(n))return n;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 ee.join(this.userData,"claude-code",e,"claude.app","Contents","MacOS")}_installShim(e,{exec:s,entry:r,apikey:i,coderBaseUrl:o}){let n=this._resolveShimBinary(),a=this._shimInstallDir(e);N.mkdirSync(a,{recursive:!0});let c=ee.join(a,"claude");N.copyFileSync(n,c),N.chmodSync(c,493);let l=`exec=${s}
15
15
  entry=${r}
16
- apikey=${n}
17
- baseurl=${i}
18
- `;L.writeFileSync(`${c}.conf`,l),L.writeFileSync(X.join(this.userData,"claude-code",e,".verified"),""),process.env.CODER_DEBUG&&console.log(`[claude app] shim \u5B89\u88C5 -> ${c}`)}_quitApp(){try{nn("osascript",["-e",'quit app "Claude"'],{stdio:"ignore"})}catch{}He("sleep",["2"])}_openApp(){try{nn("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 L.existsSync(this.backupDir)?(this._quitApp(),L.rmSync(this.userData,{recursive:!0,force:!0}),L.cpSync(this.backupDir,this.userData,{recursive:!0}),L.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(L.readFileSync(X.join(this.userData,"claude_desktop_config.json"),"utf8")).deploymentMode}catch{}let r=null;try{let o=JSON.parse(L.readFileSync(X.join(this.userData,"configLibrary","_meta.json"),"utf8"));r=JSON.parse(L.readFileSync(X.join(this.userData,"configLibrary",`${o.appliedId}.json`),"utf8")).inferenceGatewayBaseUrl}catch{}let n=e&&L.existsSync(X.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: ${ct}`),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: ${L.existsSync(this.backupDir)?"yes":"no"}`)),0}};function Vp(t,e){let s=Co(t),r=Co(e),n=Math.max(s.length,r.length);for(let i=0;i<n;i++){let o=s[i]||0,a=r[i]||0;if(o<a)return!0;if(o>a)return!1}return!1}function Co(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function Kp(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(o=>o.trim().startsWith("/Volumes/"));if(n)return n.trim();let i=s.match(/(\/Volumes\/.+)$/);if(i)return i[1].trim()}return null}function zp(t,e){let s=X.join(t,e);if(L.existsSync(s))return s;for(let r of L.readdirSync(t)){let n=X.join(t,r);if(r.endsWith(".app")&&L.statSync(n).isDirectory())return n}return null}Eo.exports=cn});var To=x((wS,Ao)=>{var Jp=Es(),ln=class extends Jp{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"})})}};Ao.exports=ln});var tr=x((bS,vo)=>{var{CODER_RUNTIME_PROMPT:Hp}=tn(),Yp={"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 Xp(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=${Hp}`]}vo.exports={PLATFORM_PACKAGE:Yp,buildConfigOverrides:Xp}});var Oo=x((kS,Uo)=>{var Qp=Es(),{buildConfigOverrides:ef}=tr(),un=class extends Qp{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=ef(r);return await super.launch({...e,remainingArgs:[...n,...s]})}};Uo.exports=un});var Po=x((xS,Lo)=>{var{execFileSync:sr,spawnSync:rr}=require("child_process"),tf=require("readline"),pn=require("os"),me=require("path"),ne=require("fs"),sf=Es(),{buildConfigOverrides:rf}=tr(),dn="26.609.41114",Do={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"},nr="Codex.app",nf=[me.join("/Applications",nr),me.join(pn.homedir(),"Applications",nr)],of=5e3,fn=class extends sf{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,i=rf(r),o=await this._ensureInstalledAppVersion();if(o!==0)return o;let a=this._injectDesktopEnv(n,r),c=this._withDownloadUrlMirror(s);try{return await super.launch({...e,remainingArgs:[...i,...c]})}finally{a&&(await new Promise(l=>setTimeout(l,of)),this._removeDesktopEnv(a))}}_withDownloadUrlMirror(e){if(process.platform!=="darwin"||e.includes("--download-url"))return e;let s=Do[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=Do[process.arch];if(!e)return 0;let s=this._findInstalledAppPath();if(!s)return 0;let r=this._readInstalledAppVersion(s);return r?af(r,dn)?(console.error(`\u68C0\u6D4B\u5230 Codex Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${r}\uFF0C\u63A8\u8350 ${dn}\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 nf.find(e=>ne.existsSync(e))||null}_readInstalledAppVersion(e){let s=me.join(e,"Contents","Info.plist");if(!ne.existsSync(s))return null;try{return sr("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=tf.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=ne.mkdtempSync(me.join(pn.tmpdir(),"codex-app-upgrade-")),n=me.join(r,"Codex.dmg"),i=null;try{if(rr("curl",["-fL","--retry","2","-o",n,s],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!ne.existsSync(n))return console.error(`\u4E0B\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\uFF1A${s}`),1;let a=rr("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(i=cf(a.stdout),!i)return console.error("\u65E0\u6CD5\u89E3\u6790 Codex Desktop \u5B89\u88C5\u5305\u6302\u8F7D\u70B9\u3002"),1;let c=this._findAppInMount(i);return c?this._replaceAppBundle(c,e)?(console.error(`Codex Desktop \u5DF2\u5347\u7EA7\u5230 ${dn}\u3002`),0):1:(console.error(`DMG \u5185\u672A\u627E\u5230 ${nr}\u3002`),1)}catch(o){return console.error(`\u5347\u7EA7 Codex Desktop \u5931\u8D25\uFF1A${o.message}`),process.env.CODER_DEBUG&&console.error(o.stack),1}finally{i&&rr("hdiutil",["detach",i,"-quiet"],{stdio:"ignore"});try{ne.rmSync(r,{recursive:!0,force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return ne.rmSync(r,{recursive:!0,force:!0}),ne.renameSync(s,r),rr("ditto",[e,s],{stdio:"inherit"}).status===0?(ne.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Codex Desktop \u5931\u8D25\uFF1A${s}`),ne.rmSync(s,{recursive:!0,force:!0}),ne.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}`),!ne.existsSync(s)&&ne.existsSync(r))try{ne.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002")}catch(i){console.error(`\u6062\u590D\u65E7\u7248 Codex Desktop \u5931\u8D25\uFF1A${i.message}`)}return!1}}_quitApp(){try{sr("osascript",["-e",'quit app "Codex"'],{stdio:"ignore"})}catch{}}_findAppInMount(e){let s=me.join(e,nr);if(ne.existsSync(s))return s;for(let r of ne.readdirSync(e)){let n=me.join(e,r);if(r.endsWith(".app")&&ne.statSync(n).isDirectory())return n}return null}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=me.join(e,"cdx-shim"),r=require.main&&require.main.filename&&me.dirname(require.main.filename)||__dirname,n=[me.resolve(r,s),me.resolve(r,"../dist",s),me.resolve(__dirname,"../../../dist",s)],i=me.dirname(process.execPath);n.push(me.join(i,"..","lib","node_modules","makecoder","dist",e,"cdx-shim"),me.join(i,"node_modules","makecoder","dist",e,"cdx-shim"));for(let o of n)if(ne.existsSync(o))return o;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:ne.realpathSync(process.execPath),entry:ne.realpathSync(process.argv[1])}}_installShim({apikey:e,coderBaseUrl:s}){let r=this._resolveShimBinary(),{exec:n,entry:i}=this._resolveCoderEntry(),o=process.env.CODER_PROFILE,a=o?`.coder.${o}`:".coder",c=me.join(pn.homedir(),a,"codex-app");ne.mkdirSync(c,{recursive:!0,mode:448});let l=me.join(c,"cdx-shim");ne.copyFileSync(r,l),ne.chmodSync(l,493);let u=`exec=${n}
20
- entry=${i}
16
+ apikey=${i}
17
+ baseurl=${o}
18
+ `;N.writeFileSync(`${c}.conf`,l),N.writeFileSync(ee.join(this.userData,"claude-code",e,".verified"),""),process.env.CODER_DEBUG&&console.log(`[claude app] shim \u5B89\u88C5 -> ${c}`)}_quitApp(){try{ai("osascript",["-e",'quit app "Claude"'],{stdio:"ignore"})}catch{}Ye("sleep",["2"])}_openApp(){try{ai("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 N.existsSync(this.backupDir)?(this._quitApp(),N.rmSync(this.userData,{recursive:!0,force:!0}),N.cpSync(this.backupDir,this.userData,{recursive:!0}),N.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(N.readFileSync(ee.join(this.userData,"claude_desktop_config.json"),"utf8")).deploymentMode}catch{}let r=null;try{let n=JSON.parse(N.readFileSync(ee.join(this.userData,"configLibrary","_meta.json"),"utf8"));r=JSON.parse(N.readFileSync(ee.join(this.userData,"configLibrary",`${n.appliedId}.json`),"utf8")).inferenceGatewayBaseUrl}catch{}let i=e&&N.existsSync(ee.join(this._shimInstallDir(e),"claude.conf"));return s==="3p"&&r&&i?(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: ${lt}`),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: ${i?"yes":"no"}`),console.log(` backup: ${N.existsSync(this.backupDir)?"yes":"no"}`)),0}};function Kp(t,e){let s=Sn(t),r=Sn(e),i=Math.max(s.length,r.length);for(let o=0;o<i;o++){let n=s[o]||0,a=r[o]||0;if(n<a)return!0;if(n>a)return!1}return!1}function Sn(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function zp(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let i=s.split(" ").find(n=>n.trim().startsWith("/Volumes/"));if(i)return i.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}function Jp(t,e){let s=ee.join(t,e);if(N.existsSync(s))return s;for(let r of N.readdirSync(t)){let i=ee.join(t,r);if(r.endsWith(".app")&&N.statSync(i).isDirectory())return i}return null}xn.exports=di});var An=I((ex,En)=>{var Hp=As(),ui=class extends Hp{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"})})}};En.exports=ui});var er=I((tx,Cn)=>{var{CODER_RUNTIME_PROMPT:Yp}=ii(),Xp={"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 Qp(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=${Yp}`]}Cn.exports={PLATFORM_PACKAGE:Xp,buildConfigOverrides:Qp}});var $n=I((sx,Un)=>{var em=As(),{buildConfigOverrides:tm}=er(),pi=class extends em{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,i=tm(r);return await super.launch({...e,remainingArgs:[...i,...s]})}};Un.exports=pi});var On=I((rx,Dn)=>{var{execFileSync:tr,spawnSync:sr}=require("child_process"),sm=require("readline"),fi=require("os"),he=require("path"),ne=require("fs"),rm=As(),{buildConfigOverrides:im}=er(),mi="26.609.41114",Tn={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"},rr="Codex.app",om=[he.join("/Applications",rr),he.join(fi.homedir(),"Applications",rr)],nm=5e3,hi=class extends rm{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:i=null}=e,o=im(r),n=await this._ensureInstalledAppVersion();if(n!==0)return n;let a=this._injectDesktopEnv(i,r),c=this._withDownloadUrlMirror(s);try{return await super.launch({...e,remainingArgs:[...o,...c]})}finally{a&&(await new Promise(l=>setTimeout(l,nm)),this._removeDesktopEnv(a))}}_withDownloadUrlMirror(e){if(process.platform!=="darwin"||e.includes("--download-url"))return e;let s=Tn[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=Tn[process.arch];if(!e)return 0;let s=this._findInstalledAppPath();if(!s)return 0;let r=this._readInstalledAppVersion(s);return r?am(r,mi)?(console.error(`\u68C0\u6D4B\u5230 Codex Desktop \u7248\u672C\u8F83\u65E7\uFF1A\u5F53\u524D ${r}\uFF0C\u63A8\u8350 ${mi}\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 om.find(e=>ne.existsSync(e))||null}_readInstalledAppVersion(e){let s=he.join(e,"Contents","Info.plist");if(!ne.existsSync(s))return null;try{return tr("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=sm.createInterface({input:process.stdin,output:process.stderr});r.question("\u662F\u5426\u73B0\u5728\u5347\u7EA7 Codex Desktop\uFF1F[Y/n] ",i=>{r.close(),s(i.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=ne.mkdtempSync(he.join(fi.tmpdir(),"codex-app-upgrade-")),i=he.join(r,"Codex.dmg"),o=null;try{if(sr("curl",["-fL","--retry","2","-o",i,s],{stdio:process.env.CODER_DEBUG?"inherit":["ignore","ignore","inherit"]}).status!==0||!ne.existsSync(i))return console.error(`\u4E0B\u8F7D Codex Desktop \u5B89\u88C5\u5305\u5931\u8D25\uFF1A${s}`),1;let a=sr("hdiutil",["attach",i,"-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=cm(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 ${mi}\u3002`),0):1:(console.error(`DMG \u5185\u672A\u627E\u5230 ${rr}\u3002`),1)}catch(n){return console.error(`\u5347\u7EA7 Codex Desktop \u5931\u8D25\uFF1A${n.message}`),process.env.CODER_DEBUG&&console.error(n.stack),1}finally{o&&sr("hdiutil",["detach",o,"-quiet"],{stdio:"ignore"});try{ne.rmSync(r,{recursive:!0,force:!0})}catch{}}}_replaceAppBundle(e,s){let r=`${s}.coder-upgrade-backup`;try{return ne.rmSync(r,{recursive:!0,force:!0}),ne.renameSync(s,r),sr("ditto",[e,s],{stdio:"inherit"}).status===0?(ne.rmSync(r,{recursive:!0,force:!0}),!0):(console.error(`\u5B89\u88C5\u65B0\u7248 Codex Desktop \u5931\u8D25\uFF1A${s}`),ne.rmSync(s,{recursive:!0,force:!0}),ne.renameSync(r,s),console.error("\u5DF2\u6062\u590D\u65E7\u7248 Codex Desktop\u3002"),!1)}catch(i){if(console.error(`\u66FF\u6362 Codex Desktop \u5931\u8D25\uFF1A${i.message}`),!ne.existsSync(s)&&ne.existsSync(r))try{ne.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{tr("osascript",["-e",'quit app "Codex"'],{stdio:"ignore"})}catch{}}_findAppInMount(e){let s=he.join(e,rr);if(ne.existsSync(s))return s;for(let r of ne.readdirSync(e)){let i=he.join(e,r);if(r.endsWith(".app")&&ne.statSync(i).isDirectory())return i}return null}_resolveShimBinary(){let e=`darwin-${process.arch}`,s=he.join(e,"cdx-shim"),r=require.main&&require.main.filename&&he.dirname(require.main.filename)||__dirname,i=[he.resolve(r,s),he.resolve(r,"../dist",s),he.resolve(__dirname,"../../../dist",s)],o=he.dirname(process.execPath);i.push(he.join(o,"..","lib","node_modules","makecoder","dist",e,"cdx-shim"),he.join(o,"node_modules","makecoder","dist",e,"cdx-shim"));for(let n of i)if(ne.existsSync(n))return n;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:ne.realpathSync(process.execPath),entry:ne.realpathSync(process.argv[1])}}_installShim({apikey:e,coderBaseUrl:s}){let r=this._resolveShimBinary(),{exec:i,entry:o}=this._resolveCoderEntry(),n=process.env.CODER_PROFILE,a=n?`.coder.${n}`:".coder",c=he.join(fi.homedir(),a,"codex-app");ne.mkdirSync(c,{recursive:!0,mode:448});let l=he.join(c,"cdx-shim");ne.copyFileSync(r,l),ne.chmodSync(l,493);let d=`exec=${i}
20
+ entry=${o}
21
21
  apikey=${e||""}
22
22
  baseurl=${s||""}
23
- `;return ne.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=${i}`)),l}_injectDesktopEnv(e,s){if(process.platform!=="darwin")return null;let r;try{r=this._installShim({apikey:e,coderBaseUrl:s})}catch(o){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: ${o.message}`),null}let n={CODEX_CLI_PATH:r};e&&(n.CODER_APIKEY=e);let i=[];for(let[o,a]of Object.entries(n))try{sr("launchctl",["setenv",o,a],{stdio:"ignore"}),i.push(o)}catch(c){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl setenv ${o} \u5931\u8D25: ${c.message}`)}return process.env.CODER_DEBUG&&i.length&&console.log(`[codex app] \u5DF2\u6CE8\u5165 launchd \u73AF\u5883\u53D8\u91CF: ${i.join(", ")} (shim: ${r})`),i.length?i:null}_removeDesktopEnv(e){for(let s of e)try{sr("launchctl",["unsetenv",s],{stdio:"ignore"})}catch(r){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl unsetenv ${s} \u5931\u8D25: ${r.message}`)}}};function af(t,e){let s=Ro(t),r=Ro(e),n=Math.max(s.length,r.length);for(let i=0;i<n;i++){let o=s[i]||0,a=r[i]||0;if(o<a)return!0;if(o>a)return!1}return!1}function Ro(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function cf(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let n=s.split(" ").find(o=>o.trim().startsWith("/Volumes/"));if(n)return n.trim();let i=s.match(/(\/Volumes\/.+)$/);if(i)return i[1].trim()}return null}Lo.exports=fn});var or=x((SS,Mo)=>{var lf=Io(),uf=$o(),df=To(),pf=Oo(),ff=Po();function No(){let t=new lf;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 ir={claude:{aliases:["claude"],description:"Claude Code \u667A\u80FD\u4F53\uFF08\u9ED8\u8BA4\uFF09",create:No,mapArgs:t=>t},"claude-app":{aliases:["claude-app"],description:"\u914D\u7F6E Claude Desktop\uFF08macOS\uFF09\u8D70 coder API\uFF1Asetup|restore|status",create:()=>new uf,mapArgs:t=>t},codex:{aliases:["codex"],description:"OpenAI Codex \u667A\u80FD\u4F53",create:()=>new pf,mapArgs:t=>t},"codex-app":{aliases:["codex-app"],description:"\u914D\u7F6E Codex Desktop\uFF08macOS\uFF09\u8D70 coder API",create:()=>new ff,mapArgs:t=>["app",...t]},gemini:{aliases:["gemini"],description:"Gemini \u667A\u80FD\u4F53",create:()=>new df,mapArgs:t=>t}},jo=Object.keys(ir),mf=new Set(["claude","codex","gemini"]);function hf(t){return Object.prototype.hasOwnProperty.call(ir,t)}function qo(t){return ir[t]||null}async function gf(t,e,s){let r=qo(t);return r?await r.create().launch({remainingArgs:r.mapArgs(e),coderBaseUrl:s.getCoderBaseUrl(),apikey:s.getApiKey()}):(s.fail(`unknown agent: ${t}`,`available: ${jo.join(" | ")}`),1)}Mo.exports={AGENTS:ir,AGENT_NAMES:jo,SHORTCUTS:mf,isAgentName:hf,getAgent:qo,launchAgent:gf,createClaudeLauncher:No}});var Zo=x((IS,Bo)=>{var As=require("fs"),Go=require("path"),{spawn:Fo}=require("child_process"),mn=class{constructor(){this.extensionId="codev.codev-background";let e=require.main?Go.dirname(require.main.filename):__dirname;this.extensionPath=Go.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(As.existsSync(e))try{return As.accessSync(e,As.constants.F_OK|As.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",i=>{n+=i.toString().trim()}),r.on("close",i=>{i===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):!!As.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",i=>{console.log("which code:",i.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=Fo(e,["--list-extensions"],r),i="";n.stdout.on("data",o=>{i+=o.toString()}),n.on("close",o=>{if(o===0){let a=i.split(`
24
- `).map(c=>c.trim());s(a.includes(this.extensionId))}else s(!1)}),n.on("error",o=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",o.message),console.error("Error code:",o.code),console.error("Error errno:",o.errno),console.error("Error syscall:",o.syscall)),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 i={stdio:"ignore",shell:!1,env:{...process.env,PATH:process.env.PATH,HOME:process.env.HOME,USER:process.env.USER}};process.env.CODER_DEBUG&&console.log(`Spawning: ${r} ${e.join(" ")}`);let o=Fo(r,e,i);o.on("close",c=>{n(c===0)}),o.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{o.kill()}catch{}n(!1)},a)}catch(i){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",i.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)}}};Bo.exports=mn});var Xt=x((CS,yf)=>{yf.exports={name:"makecoder",version:"4.1.24",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 Vo=x((ES,Wo)=>{var hn=require("crypto"),{URL:_f}=require("url"),gn=class{static generateSignature(e,s,r,n){try{let i=new _f(e),o=Buffer.from(i.pathname),a=Buffer.from(o),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=hn.createHmac("sha256",r);return u.update(l),u.digest("hex")}catch(i){throw new Error(`Failed to generate signature: ${i.message}`)}}static validateSignature(e,s,r,n,i){return this.generateSignature(e,s,r,n)===i}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(e=16){let s="abcdefghijkmnpqrstuvwxyz",r="ABCDEFGHJKLMNPQRSTUVWXYZ",n="23456789",i="!@#$%^&*-_=+",o=s+r+n+i;e<8&&(e=8);let a=l=>l[hn.randomBytes(1)[0]%l.length],c=[a(s),a(r),a(n),a(i)];for(;c.length<e;)c.push(a(o));for(let l=c.length-1;l>0;l--){let u=hn.randomBytes(1)[0]%(l+1);[c[l],c[u]]=[c[u],c[l]]}return c.join("")}};Wo.exports=gn});var ar=x(($S,Jo)=>{var wf=require("https"),{URL:bf}=require("url"),Ko="https://makecoder.com/bigapis/auth/v1",kf="https://makecoder.com/bigapis/kbb2/v1",xf="https://makecoder.com/wiki/api",yn=class{constructor(e){this.token=e}request(e,s,r,n){return new Promise((i,o)=>{let a=n||Ko,c=new bf(`${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=wf.request({hostname:c.hostname,port:c.port||443,path:c.pathname+c.search,method:e,headers:l},p=>{let f="";p.on("data",g=>f+=g),p.on("end",()=>i({status:p.statusCode,body:f}))});d.on("error",o),u&&d.write(u),d.end()})}};function zo(t){try{return JSON.parse(t)}catch{return null}}function Sf(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function If(t){let e=zo(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Jo.exports={TeamHttp:yn,parseJson:zo,exitCodeForStatus:Sf,errorMessage:If,API_BASE:Ko,BIGKBB_BASE:kf,WIKI_API_BASE:xf}});var Yo=x((AS,Ho)=>{var _n=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Cf(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 i=Object.keys(e[0]),a=[`| ${i.map(c=>r[c]||c).map(_n).join(" | ")} |`,`| ${i.map(()=>"---").join(" | ")} |`,...e.map(c=>`| ${i.map(l=>_n(c[l])).join(" | ")} |`)];t.emit(a.join(`
25
- `))}function Ef(t,e,s=null){if(t.isJson){let r={};for(let[n,i]of e)r[n]=i;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,i])=>`${i||r}: ${n??""}`).join(`
26
- `))}Ho.exports={emitTable:Cf,emitDetails:Ef,escCell:_n}});var ta=x((vS,ea)=>{var{TeamHttp:TS,parseJson:$f,exitCodeForStatus:Af,errorMessage:Tf,BIGKBB_BASE:vf,WIKI_API_BASE:Uf}=ar();function _t(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function Xo(t,e){_t(t,Tf(e.body),Of(e.status),Af(e.status))}function Of(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 Qo(t,e){if(e)return e;let s=t.ctx.getTeam?t.ctx.getTeam():null;return s&&s.id?s.id:null}function Df(t,e){let s=Qo(t,e);return s||_t(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 Rf(t,e){let s=encodeURIComponent(JSON.stringify({id__in:[e]})),r;try{r=await t.http.request("GET",`/team?constraints=${s}`)}catch(o){_t(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${o.message}`,void 0,1)}r.status!==200&&Xo(t.ctx,r);let n=$f(r.body),i=n&&n.data&&n.data.items||[];return i.length||_t(t.ctx,`\u56E2\u961F ${e} \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),i[0]}function Lf(t){return Array.isArray(t.members)?t.members:[]}function Pf(t,e,s,r){let n=e.find(i=>i.user_id===s||i.id===s||i.username===s);return n||_t(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 Nf(t,e){return e?t.filter(s=>s.user_type===e):t}function jf(t,e){e&&e!=="human"&&e!=="ai"&&_t(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3)}function qf(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 Mf(t){return t==="mentor"?"admin":"member"}async function Gf(t,e,s){try{let r=await t.http.request("POST",`/${e}`,s,Uf);(r.status<200||r.status>=300)&&process.stderr.write(`Warning: \u77E5\u8BC6\u5E93\u540C\u6B65\u5931\u8D25 (${e}): HTTP ${r.status}
23
+ `;return ne.writeFileSync(`${l}.conf`,d,{mode:384}),process.env.CODER_DEBUG&&(console.log(`[codex app] cdx-shim \u5DF2\u5B89\u88C5: ${l}`),console.log(`[codex app] exec=${i} entry=${o}`)),l}_injectDesktopEnv(e,s){if(process.platform!=="darwin")return null;let r;try{r=this._installShim({apikey:e,coderBaseUrl:s})}catch(n){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: ${n.message}`),null}let i={CODEX_CLI_PATH:r};e&&(i.CODER_APIKEY=e);let o=[];for(let[n,a]of Object.entries(i))try{tr("launchctl",["setenv",n,a],{stdio:"ignore"}),o.push(n)}catch(c){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl setenv ${n} \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{tr("launchctl",["unsetenv",s],{stdio:"ignore"})}catch(r){process.env.CODER_DEBUG&&console.log(`[codex app] launchctl unsetenv ${s} \u5931\u8D25: ${r.message}`)}}};function am(t,e){let s=vn(t),r=vn(e),i=Math.max(s.length,r.length);for(let o=0;o<i;o++){let n=s[o]||0,a=r[o]||0;if(n<a)return!0;if(n>a)return!1}return!1}function vn(t){return String(t).replace(/^v/i,"").split(".").map(e=>Number.parseInt(e,10)).map(e=>Number.isFinite(e)?e:0)}function cm(t){let e=String(t||"").split(/\r?\n/);for(let s of e){if(!s.includes("/Volumes/"))continue;let i=s.split(" ").find(n=>n.trim().startsWith("/Volumes/"));if(i)return i.trim();let o=s.match(/(\/Volumes\/.+)$/);if(o)return o[1].trim()}return null}Dn.exports=hi});var or=I((ix,Nn)=>{var lm=kn(),dm=In(),um=An(),pm=$n(),mm=On();function Ln(){let t=new lm;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 ir={claude:{aliases:["claude"],description:"Claude Code \u667A\u80FD\u4F53\uFF08\u9ED8\u8BA4\uFF09",create:Ln,mapArgs:t=>t},"claude-app":{aliases:["claude-app"],description:"\u914D\u7F6E Claude Desktop\uFF08macOS\uFF09\u8D70 coder API\uFF1Asetup|restore|status",create:()=>new dm,mapArgs:t=>t},codex:{aliases:["codex"],description:"OpenAI Codex \u667A\u80FD\u4F53",create:()=>new pm,mapArgs:t=>t},"codex-app":{aliases:["codex-app"],description:"\u914D\u7F6E Codex Desktop\uFF08macOS\uFF09\u8D70 coder API",create:()=>new mm,mapArgs:t=>["app",...t]},gemini:{aliases:["gemini"],description:"Gemini \u667A\u80FD\u4F53",create:()=>new um,mapArgs:t=>t}},Rn=Object.keys(ir),fm=new Set(["claude","codex","gemini"]);function hm(t){return Object.prototype.hasOwnProperty.call(ir,t)}function Pn(t){return ir[t]||null}async function gm(t,e,s){let r=Pn(t);return r?await r.create().launch({remainingArgs:r.mapArgs(e),coderBaseUrl:s.getCoderBaseUrl(),apikey:s.getApiKey()}):(s.fail(`unknown agent: ${t}`,`available: ${Rn.join(" | ")}`),1)}Nn.exports={AGENTS:ir,AGENT_NAMES:Rn,SHORTCUTS:fm,isAgentName:hm,getAgent:Pn,launchAgent:gm,createClaudeLauncher:Ln}});var Mn=I((ox,qn)=>{var Us=require("fs"),jn=require("path"),{spawn:Gn}=require("child_process"),gi=class{constructor(){this.extensionId="codev.codev-background";let e=require.main?jn.dirname(require.main.filename):__dirname;this.extensionPath=jn.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(Us.existsSync(e))try{return Us.accessSync(e,Us.constants.F_OK|Us.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"]}),i="";r.stdout.on("data",o=>{i+=o.toString().trim()}),r.on("close",o=>{o===0&&i?(this._codeCommand=i,process.env.CODER_DEBUG&&console.log(`Resolved code command path: ${i}`),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):!!Us.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(i){console.log("which command failed:",i.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 i=Gn(e,["--list-extensions"],r),o="";i.stdout.on("data",n=>{o+=n.toString()}),i.on("close",n=>{if(n===0){let a=o.split(`
24
+ `).map(c=>c.trim());s(a.includes(this.extensionId))}else s(!1)}),i.on("error",n=>{process.env.CODER_DEBUG&&(console.error("VSCode list extensions error:",n.message),console.error("Error code:",n.code),console.error("Error errno:",n.errno),console.error("Error syscall:",n.syscall)),s(!1)}),setTimeout(()=>{try{i.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(i=>{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 n=Gn(r,e,o);n.on("close",c=>{i(c===0)}),n.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)),i(!1)});let a=s.timeout||3e4;setTimeout(()=>{try{n.kill()}catch{}i(!1)},a)}catch(o){process.env.CODER_DEBUG&&console.error("Failed to spawn VSCode command:",o.message),i(!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)}}};qn.exports=gi});var Xt=I((nx,ym)=>{ym.exports={name:"makecoder",version:"4.1.26",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 Bn=I((ax,Fn)=>{var yi=require("crypto"),{URL:_m}=require("url"),_i=class{static generateSignature(e,s,r,i){try{let o=new _m(e),n=Buffer.from(o.pathname),a=Buffer.from(n),c=s?typeof s=="string"?Buffer.from(s):Buffer.from(JSON.stringify(s)):Buffer.alloc(0),l=Buffer.concat([a,c,Buffer.from(i)]),d=yi.createHmac("sha256",r);return d.update(l),d.digest("hex")}catch(o){throw new Error(`Failed to generate signature: ${o.message}`)}}static validateSignature(e,s,r,i,o){return this.generateSignature(e,s,r,i)===o}static generateTimestamp(){return Date.now().toString()}static generateStrongPassword(e=16){let s="abcdefghijkmnpqrstuvwxyz",r="ABCDEFGHJKLMNPQRSTUVWXYZ",i="23456789",o="!@#$%^&*-_=+",n=s+r+i+o;e<8&&(e=8);let a=l=>l[yi.randomBytes(1)[0]%l.length],c=[a(s),a(r),a(i),a(o)];for(;c.length<e;)c.push(a(n));for(let l=c.length-1;l>0;l--){let d=yi.randomBytes(1)[0]%(l+1);[c[l],c[d]]=[c[d],c[l]]}return c.join("")}};Fn.exports=_i});var nr=I((cx,Vn)=>{var wm=require("https"),{URL:bm}=require("url"),Wn="https://makecoder.com/bigapis/auth/v1",km="https://makecoder.com/bigapis/kbb2/v1",Sm="https://makecoder.com/wiki/api",wi=class{constructor(e){this.token=e}request(e,s,r,i){return new Promise((o,n)=>{let a=i||Wn,c=new bm(`${a}${s}`),l={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},d=null;r!=null&&(d=JSON.stringify(r),l["Content-Length"]=Buffer.byteLength(d));let u=wm.request({hostname:c.hostname,port:c.port||443,path:c.pathname+c.search,method:e,headers:l},p=>{let m="";p.on("data",y=>m+=y),p.on("end",()=>o({status:p.statusCode,body:m}))});u.on("error",n),d&&u.write(d),u.end()})}};function Zn(t){try{return JSON.parse(t)}catch{return null}}function xm(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Im(t){let e=Zn(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}Vn.exports={TeamHttp:wi,parseJson:Zn,exitCodeForStatus:xm,errorMessage:Im,API_BASE:Wn,BIGKBB_BASE:km,WIKI_API_BASE:Sm}});var zn=I((lx,Kn)=>{var bi=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Em(t,e,s={}){let{labels:r={},empty:i="\uFF08\u7A7A\uFF09"}=s;if(!e||!e.length){t.emit(i);return}if(t.isJson){t.emit(e);return}let o=Object.keys(e[0]),a=[`| ${o.map(c=>r[c]||c).map(bi).join(" | ")} |`,`| ${o.map(()=>"---").join(" | ")} |`,...e.map(c=>`| ${o.map(l=>bi(c[l])).join(" | ")} |`)];t.emit(a.join(`
25
+ `))}function Am(t,e,s=null){if(t.isJson){let r={};for(let[i,o]of e)r[i]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,i,o])=>`${o||r}: ${i??""}`).join(`
26
+ `))}Kn.exports={emitTable:Em,emitDetails:Am,escCell:bi}});var Xn=I((ux,Yn)=>{var{TeamHttp:dx,parseJson:Cm,exitCodeForStatus:Um,errorMessage:$m,BIGKBB_BASE:Tm,WIKI_API_BASE:vm}=nr();function wt(t,e,s,r=1){t.fail(e,s);let i=new Error("__handled__");throw i.handled=!0,i.code=r,i}function Jn(t,e){wt(t,$m(e.body),Dm(e.status),Um(e.status))}function Dm(t){if(t===401)return"\u5148\u767B\u5F55: coder auth login --apikey <apiKey>";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 Hn(t,e){if(e)return e;let s=t.ctx.getTeam?t.ctx.getTeam():null;return s&&s.id?s.id:null}function Om(t,e){let s=Hn(t,e);return s||wt(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 Lm(t,e){let s=encodeURIComponent(JSON.stringify({id__in:[e]})),r;try{r=await t.http.request("GET",`/team?constraints=${s}`)}catch(n){wt(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${n.message}`,void 0,1)}r.status!==200&&Jn(t.ctx,r);let i=Cm(r.body),o=i&&i.data&&i.data.items||[];return o.length||wt(t.ctx,`\u56E2\u961F ${e} \u4E0D\u5B58\u5728`,"\u8FD0\u884C coder team list \u67E5\u770B\u53EF\u7528\u56E2\u961F",4),o[0]}function Rm(t){return Array.isArray(t.members)?t.members:[]}function Pm(t,e,s,r){let i=e.find(o=>o.user_id===s||o.id===s||o.username===s);return i||wt(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),i}function Nm(t,e){return e?t.filter(s=>s.user_type===e):t}function jm(t,e){e&&e!=="human"&&e!=="ai"&&wt(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3)}function Gm(t,e){let s=t.config&&t.config.metadata&&t.config.metadata.created_by;if(!s)return"";let r=e.find(i=>i.user_id===s);return r?r.nickname?`${r.username}(${r.nickname})`:r.username:s}function qm(t){return t==="mentor"?"admin":"member"}async function Mm(t,e,s){try{let r=await t.http.request("POST",`/${e}`,s,vm);(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
- `)}}ea.exports={abort:_t,abortOnHttp:Xo,resolveTeamId:Qo,requireTeamId:Df,fetchTeam:Rf,teamMembers:Lf,findMember:Pf,filterMembersByType:Nf,validateType:jf,resolveMentorUsername:qf,toWikiGroupRole:Mf,wikiSync:Gf,BIGKBB_BASE:vf}});var bn=x((US,aa)=>{var Ts=require("fs"),wt=require("path"),Ff=Vo(),{parseJson:Ye}=ar(),{emitTable:cr,emitDetails:Se}=Yo(),{abort:Z,abortOnHttp:ye,requireTeamId:sa,fetchTeam:Be,teamMembers:Ze,findMember:Qt,filterMembersByType:Bf,validateType:Zf,resolveMentorUsername:ra,toWikiGroupRole:na,wikiSync:es,BIGKBB_BASE:Wf}=ta(),ue=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},ia=(t,...e)=>{for(let s of e){let r=ue(t,s);if(r!==void 0)return r}},vs=(t,...e)=>t.some(s=>e.includes(s));function lr(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let i=t[n];if(!e.includes(i)){if(s.includes(i)){n++;continue}i&&i.startsWith("--")||r.push(i)}}return r}function _e(t){return sa(t,ue(t.args,"--team"))}async function we(t,e,s,r,n){try{return await t.http.request(e,s,r,n)}catch(i){Z(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${i.message}`,void 0,1)}}var bt={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 Vf(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:ra(t,e),points:t.points==null?"\u221E":String(t.points),joined_at:(t.created_at||"").slice(0,10)}}function Kf(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 wn(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||bt[s]||s}: ${r??""}`).join(`
29
- `));return 10}async function zf(t){let e=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),s=await we(t,"GET",`/team?constraints=${e}&page=1&size=200`);s.status!==200&&ye(t.ctx,s);let r=Ye(s.body);(!r||!r.data)&&Z(t.ctx,"\u54CD\u5E94\u89E3\u6790\u5931\u8D25",void 0,1);let n=r.data.items||[];return cr(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",members:(i.members_count??i.member_count??"")+"",points:i.points!=null?String(i.points):""})),{labels:bt,empty:"\u4F60\u8FD8\u6CA1\u6709\u52A0\u5165\u4EFB\u4F55\u56E2\u961F"}),0}async function Jf(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):(Se(t.ctx,[["name",e.name||"","\u9ED8\u8BA4\u56E2\u961F"],["id",e.id,"teamId"]]),0)}async function Hf(t){let e=t.arg;e||Z(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 we(t,"GET",`/team?constraints=${s}&page=1&size=200`);r.status!==200&&ye(t.ctx,r);let n=Ye(r.body),o=(n&&n.data&&n.data.items||[]).find(a=>a.id===e);return o||Z(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(o.id,o.name||"")||Z(t.ctx,"\u5199\u5165\u914D\u7F6E\u5931\u8D25",void 0,1),t.ctx.setTeamManual(!0),Se(t.ctx,[["name",o.name||"","\u5DF2\u5207\u6362\u9ED8\u8BA4\u56E2\u961F"],["id",o.id,"teamId"]]),0}async function Yf(t){let e=sa(t,t.arg||ue(t.args,"--team")),s=await Be(t,e),r=Ze(s),n=r.filter(o=>o.user_type==="ai").length,i=r.filter(o=>o.user_type==="human").length;return Se(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=${i})`,"\u6210\u5458"]],t.ctx.isJson?{id:s.id,name:s.name,members_total:r.length,members_ai:n,members_human:i}:null),0}async function Xf(t){let e=ue(t.args,"--type")||null;Zf(t,e);let s=ia(t.args,"-q","--query")||null,r=_e(t),n=await Be(t,r),i=Ze(n),o=Bf(i,e);if(s){let c=s.toLowerCase();o=o.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 cr(t.ctx,Kf(o).map(c=>Vf(c,i)),{labels:bt,empty:a}),0}async function Qf(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members info <userId|username>",3);let s=_e(t),r=await Be(t,s),n=Ze(r),i=Qt(t,n,e,r.name);return Se(t.ctx,[["username",i.username||""],["user_id",i.user_id||""],["type",i.user_type||""],["role",i.role||""],["nickname",i.nickname||""],["introduction",i.introduction||""],["mentor",ra(i,n)],["status",i.status||""],["points",i.points==null?"\u221E":i.points],["joined_at",i.created_at||""],["im_bindings",i.im_bindings&&i.im_bindings.length?i.im_bindings.map(o=>o.channel).join(","):""]].map(([o,a])=>[o,a,bt[o]]),t.ctx.isJson?i:null),0}function em(t){let e=wt.resolve(t);for((!Ts.existsSync(e)||!Ts.statSync(e).isDirectory())&&(e=wt.dirname(e));e&&e!==wt.dirname(e);){if(Ts.existsSync(wt.join(e,".git")))return!0;e=wt.dirname(e)}return!1}async function tm(t){let e=ue(t.args,"--type")||"human";e!=="human"&&e!=="ai"&&Z(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3);let s=ue(t.args,"--password")||null,r=ue(t.args,"--phone")||null,n=ue(t.args,"--points"),i=ue(t.args,"--save-to")||null,o=ue(t.args,"--nickname")||null,a=ue(t.args,"--mentor")||null,c=t.arg;c||Z(t.ctx,"\u7F3A\u5C11 username \u53C2\u6570","\u7528\u6CD5: coder team members create <username> [...]",3);let l=_e(t);if(e==="human"&&!r&&Z(t.ctx,"\u521B\u5EFA human \u6210\u5458\u5FC5\u987B\u63D0\u4F9B --phone <phone>",void 0,3),i){let y=wt.resolve(i);em(y)&&Z(t.ctx,`--save-to \u8DEF\u5F84\u5728 git \u4ED3\u5E93\u5185\uFF08${y}\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 y=Number(n);Number.isFinite(y)||Z(t.ctx,`--points \u5E94\u4E3A\u6570\u5B57\uFF0C\u6536\u5230 '${n}'`,void 0,3),u=y}let d=s||Ff.generateStrongPassword(16),p=!s,f={payload:{username:c,password:d,phone:r||null,team_id:l,points:u,user_type:e,...o?{nickname:o}:{},...e==="ai"&&a?{config:{metadata:{created_by:a}}}:{}},auto_login:!1,auth_name:"UserPass"},g=await we(t,"POST","/users",f);(g.status<200||g.status>=300)&&ye(t.ctx,g);let _=null;if(i){let y=wt.resolve(i),w=`# Coder team member credentials
28
+ `)}}Yn.exports={abort:wt,abortOnHttp:Jn,resolveTeamId:Hn,requireTeamId:Om,fetchTeam:Lm,teamMembers:Rm,findMember:Pm,filterMembersByType:Nm,validateType:jm,resolveMentorUsername:Gm,toWikiGroupRole:qm,wikiSync:Mm,BIGKBB_BASE:Tm}});var Si=I((px,ia)=>{var $s=require("fs"),bt=require("path"),Fm=Bn(),{parseJson:Xe}=nr(),{emitTable:ar,emitDetails:xe}=zn(),{abort:Z,abortOnHttp:_e,requireTeamId:Qn,fetchTeam:Ze,teamMembers:Ve,findMember:Qt,filterMembersByType:Bm,validateType:Wm,resolveMentorUsername:ea,toWikiGroupRole:ta,wikiSync:es,BIGKBB_BASE:Zm}=Xn(),ue=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},sa=(t,...e)=>{for(let s of e){let r=ue(t,s);if(r!==void 0)return r}},Ts=(t,...e)=>t.some(s=>e.includes(s));function cr(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let i=0;i<t.length;i++){let o=t[i];if(!e.includes(o)){if(s.includes(o)){i++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function we(t){return Qn(t,ue(t.args,"--team"))}async function be(t,e,s,r,i){try{return await t.http.request(e,s,r,i)}catch(o){Z(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${o.message}`,void 0,1)}}var kt={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 Vm(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:ea(t,e),points:t.points==null?"\u221E":String(t.points),joined_at:(t.created_at||"").slice(0,10)}}function Km(t){return[...t].sort((e,s)=>{let r=e.user_type==="ai"?0:1,i=s.user_type==="ai"?0:1;return r!==i?r-i:(e.username||"").localeCompare(s.username||"")})}function ki(t,e){if(t.ctx.isJson){let s={pending_confirmation:!0};for(let[r,i]of e)s[r]=i;t.ctx.emit(s)}else t.ctx.emit(e.map(([s,r,i])=>`${i||kt[s]||s}: ${r??""}`).join(`
29
+ `));return 10}async function zm(t){let e=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),s=await be(t,"GET",`/team?constraints=${e}&page=1&size=200`);s.status!==200&&_e(t.ctx,s);let r=Xe(s.body);(!r||!r.data)&&Z(t.ctx,"\u54CD\u5E94\u89E3\u6790\u5931\u8D25",void 0,1);let i=r.data.items||[];return ar(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",members:(o.members_count??o.member_count??"")+"",points:o.points!=null?String(o.points):""})),{labels:kt,empty:"\u4F60\u8FD8\u6CA1\u6709\u52A0\u5165\u4EFB\u4F55\u56E2\u961F"}),0}async function Jm(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):(xe(t.ctx,[["name",e.name||"","\u9ED8\u8BA4\u56E2\u961F"],["id",e.id,"teamId"]]),0)}async function Hm(t){let e=t.arg;e||Z(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 be(t,"GET",`/team?constraints=${s}&page=1&size=200`);r.status!==200&&_e(t.ctx,r);let i=Xe(r.body),n=(i&&i.data&&i.data.items||[]).find(a=>a.id===e);return n||Z(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(n.id,n.name||"")||Z(t.ctx,"\u5199\u5165\u914D\u7F6E\u5931\u8D25",void 0,1),t.ctx.setTeamManual(!0),xe(t.ctx,[["name",n.name||"","\u5DF2\u5207\u6362\u9ED8\u8BA4\u56E2\u961F"],["id",n.id,"teamId"]]),0}async function Ym(t){let e=Qn(t,t.arg||ue(t.args,"--team")),s=await Ze(t,e),r=Ve(s),i=r.filter(n=>n.user_type==="ai").length,o=r.filter(n=>n.user_type==="human").length;return xe(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=${i}, human=${o})`,"\u6210\u5458"]],t.ctx.isJson?{id:s.id,name:s.name,members_total:r.length,members_ai:i,members_human:o}:null),0}async function Xm(t){let e=ue(t.args,"--type")||null;Wm(t,e);let s=sa(t.args,"-q","--query")||null,r=we(t),i=await Ze(t,r),o=Ve(i),n=Bm(o,e);if(s){let c=s.toLowerCase();n=n.filter(l=>[l.username,l.user_id,l.id,l.nickname,l.introduction].map(d=>(d||"").toLowerCase()).some(d=>d.includes(c)))}let a=s?`\u672A\u5339\u914D\u5230 '${s}'`:e?`\u65E0 ${e} \u7C7B\u578B\u6210\u5458`:"\u56E2\u961F\u6682\u65E0\u6210\u5458";return ar(t.ctx,Km(n).map(c=>Vm(c,o)),{labels:kt,empty:a}),0}async function Qm(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members info <userId|username>",3);let s=we(t),r=await Ze(t,s),i=Ve(r),o=Qt(t,i,e,r.name);return xe(t.ctx,[["username",o.username||""],["user_id",o.user_id||""],["type",o.user_type||""],["role",o.role||""],["nickname",o.nickname||""],["introduction",o.introduction||""],["mentor",ea(o,i)],["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(n=>n.channel).join(","):""]].map(([n,a])=>[n,a,kt[n]]),t.ctx.isJson?o:null),0}function ef(t){let e=bt.resolve(t);for((!$s.existsSync(e)||!$s.statSync(e).isDirectory())&&(e=bt.dirname(e));e&&e!==bt.dirname(e);){if($s.existsSync(bt.join(e,".git")))return!0;e=bt.dirname(e)}return!1}async function tf(t){let e=ue(t.args,"--type")||"human";e!=="human"&&e!=="ai"&&Z(t.ctx,`--type \u4EC5\u652F\u6301 human \u6216 ai\uFF0C\u6536\u5230 '${e}'`,void 0,3);let s=ue(t.args,"--password")||null,r=ue(t.args,"--phone")||null,i=ue(t.args,"--points"),o=ue(t.args,"--save-to")||null,n=ue(t.args,"--nickname")||null,a=ue(t.args,"--mentor")||null,c=t.arg;c||Z(t.ctx,"\u7F3A\u5C11 username \u53C2\u6570","\u7528\u6CD5: coder team members create <username> [...]",3);let l=we(t);if(e==="human"&&!r&&Z(t.ctx,"\u521B\u5EFA human \u6210\u5458\u5FC5\u987B\u63D0\u4F9B --phone <phone>",void 0,3),o){let w=bt.resolve(o);ef(w)&&Z(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 d=null;if(i!=null){let w=Number(i);Number.isFinite(w)||Z(t.ctx,`--points \u5E94\u4E3A\u6570\u5B57\uFF0C\u6536\u5230 '${i}'`,void 0,3),d=w}let u=s||Fm.generateStrongPassword(16),p=!s,m={payload:{username:c,password:u,phone:r||null,team_id:l,points:d,user_type:e,...n?{nickname:n}:{},...e==="ai"&&a?{config:{metadata:{created_by:a}}}:{}},auto_login:!1,auth_name:"UserPass"},y=await be(t,"POST","/users",m);(y.status<200||y.status>=300)&&_e(t.ctx,y);let _=null;if(o){let w=bt.resolve(o),b=`# Coder team member credentials
30
30
  # Created: ${new Date().toISOString()}
31
31
  username: ${c}
32
- password: ${d}
32
+ password: ${u}
33
33
  team_id: ${l}
34
34
  type: ${e}
35
- `;try{Ts.writeFileSync(y,w,{mode:384});try{Ts.chmodSync(y,384)}catch{}_=y}catch(T){process.stderr.write(`Warning: \u4FDD\u5B58\u51ED\u636E\u5931\u8D25 ${T.message}
36
- `)}}return Se(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",o||"","\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 sm(t){let e=ue(t.args,"--nickname"),s=ue(t.args,"--mentor"),r=vs(t.args,"--clear-mentor"),n=t.arg;n||Z(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&&Z(t.ctx,"\u81F3\u5C11\u9700\u8981 --nickname / --mentor / --clear-mentor \u4E4B\u4E00",void 0,3);let i=_e(t),o=await Be(t,i),a=Ze(o),c=Qt(t,a,n,o.name),l={};if(e!==void 0&&(l.nickname=e),r)l.created_by=null;else if(s!==void 0){let p=a.find(f=>f.user_id===s||f.username===s);p||Z(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 we(t,"PATCH",`/team/${i}/ai_users/${c.user_id}`,l);(u.status<200||u.status>=300)&&ye(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"]),Se(t.ctx,d,t.ctx.isJson?{user_id:c.user_id,team_id:i}:null),0}async function rm(t){let e=ue(t.args,"--points"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members set-points <userId|username> --points <n|unlimited>",3),e===void 0&&Z(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)&&Z(t.ctx,`--points \u5E94\u4E3A\u975E\u8D1F\u6570\u5B57\u6216 unlimited\uFF0C\u6536\u5230 '${e}'`,void 0,3),r=d}let n=_e(t),i=await Be(t,n),o=Qt(t,Ze(i),s,i.name),a=`/refactor/coder/teams/${n}/members/${o.user_id}/points`,c=r===null?"\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09":String(r),l=await we(t,"POST",a,{points:r},Wf);(l.status<200||l.status>=300)&&ye(t.ctx,l);let u=Ye(l.body);return u&&u.code!==void 0&&u.code!==0&&u.code!==null&&Z(t.ctx,`\u540E\u7AEF\u8FD4\u56DE code=${u.code} message=${u.message||""}`,void 0,1),Se(t.ctx,[["username",`${o.username} (${o.user_id})`,"\u5DF2\u8BBE\u7F6E\u79EF\u5206\u914D\u989D"],["quota",c,"\u914D\u989D"]],t.ctx.isJson?{user_id:o.user_id,team_id:n,points:r}:null),0}async function nm(t){let e=vs(t.args,"--yes","-y"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members delete <userId|username> [--yes]",3);let r=_e(t),n=await Be(t,r),i=Qt(t,Ze(n),s,n.name);if(!e)return wn(t,[["username",`${i.username} (user_id=${i.user_id}, role=${i.role})`,"\u5C06\u5220\u9664\u6210\u5458"],["team",`${n.name} (${r})`,"\u4ECE\u56E2\u961F"],["endpoint",`DELETE /team/${r}/members/${i.id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let o=await we(t,"DELETE",`/team/${r}/members/${i.id}`);return(o.status<200||o.status>=300)&&ye(t.ctx,o),Se(t.ctx,[["username",`${i.username} (${i.user_id})`,"\u5DF2\u5220\u9664\u6210\u5458"],["team",n.name,"\u4ECE\u56E2\u961F"]],t.ctx.isJson?{deleted:!0,user_id:i.user_id,team_id:r}:null),0}async function oa(t,e,s){let r=await we(t,"GET",`/team/${e}/groups/${s}/members`);(r.status<200||r.status>=300)&&ye(t.ctx,r);let n=Ye(r.body);return n&&(n.data||n)||[]}async function im(t){let e=_e(t),s=await we(t,"GET",`/team/${e}/groups`);(s.status<200||s.status>=300)&&ye(t.ctx,s);let r=Ye(s.body),n=r&&(r.data||r)||[];return cr(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",description:i.description||"",created_at:(i.created_at||"").slice(0,10)})),{labels:bt,empty:"\u6682\u65E0\u5C0F\u7EC4"}),0}async function om(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups info <groupId>",3);let s=_e(t),r=await we(t,"GET",`/team/${s}/groups`);(r.status<200||r.status>=300)&&ye(t.ctx,r);let i=(Ye(r.body)?.data||[]).find(a=>a.id===e);i||Z(t.ctx,`\u5C0F\u7EC4 '${e}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team groups \u67E5\u770B\u5C0F\u7EC4",4);let o=await oa(t,s,e);return Se(t.ctx,[["group",`${i.name} (${i.id})`,"\u5C0F\u7EC4"],["description",i.description||"","\u63CF\u8FF0"],["team_id",s,"teamId"],["members_total",o.length,"\u6210\u5458\u6570"]],t.ctx.isJson?{id:i.id,name:i.name,members:o,members_total:o.length}:null),0}async function am(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups members <groupId>",3);let s=_e(t),r=await Be(t,s),n=new Map(Ze(r).map(o=>[o.user_id,o])),i=await oa(t,s,e);return cr(t.ctx,i.map(o=>{let a=n.get(o.user_id)||{};return{username:a.username||"",user_id:o.user_id||"",type:a.user_type||"",role:o.role||"",nickname:a.nickname||""}}),{labels:bt,empty:"\u5C0F\u7EC4\u6682\u65E0\u6210\u5458"}),0}async function cm(t){let e=ue(t.args,"--description"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 name \u53C2\u6570","\u7528\u6CD5: coder team groups create <name> [--description <d>]",3);let r=_e(t),n={name:s};e&&(n.description=e);let i=await we(t,"POST",`/team/${r}/groups`,n);(i.status<200||i.status>=300)&&ye(t.ctx,i);let a=((Ye(i.body)||{}).data||Ye(i.body)||{}).id;return a&&await es(t,"sync.upsertGroup",{teamId:r,externalGroupId:a,name:s,description:e||void 0}),Se(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 lm(t){let e=ue(t.args,"--name"),s=ue(t.args,"--description"),r=t.arg;r||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups update <groupId> [--name <n>] [--description <d>]",3);let n=_e(t);e===void 0&&s===void 0&&Z(t.ctx,"\u81F3\u5C11\u9700\u8981 --name \u6216 --description",void 0,3);let i={};e!==void 0&&(i.name=e),s!==void 0&&(i.description=s);let o=await we(t,"PATCH",`/team/${n}/groups/${r}`,i);(o.status<200||o.status>=300)&&ye(t.ctx,o);let a=Ye(o.body)?.data||{},c=e!==void 0?e:a.name;c&&await es(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"]),Se(t.ctx,l,t.ctx.isJson?{id:r,team_id:n,...i}:null),0}async function um(t){let e=vs(t.args,"--yes","-y"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups delete <groupId> [--yes]",3);let r=_e(t);if(!e)return wn(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 we(t,"DELETE",`/team/${r}/groups/${s}`);return(n.status<200||n.status>=300)&&ye(t.ctx,n),await es(t,"sync.deleteGroup",{teamId:r,externalGroupId:s}),Se(t.ctx,[["group",s,"\u5DF2\u5220\u9664\u5C0F\u7EC4"]],t.ctx.isJson?{deleted:!0,id:s,team_id:r}:null),0}function dm(t,e,s){return s.split(",").map(n=>n.trim()).filter(Boolean).map(n=>{let i=e.find(o=>o.user_id===n||o.username===n||o.id===n);return i||Z(t.ctx,`\u6210\u5458 '${n}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),i})}async function pm(t){let e=ue(t.args,"--role")||"member",s=lr(t.args,{valueFlags:["--team","--role"]}),r=s[0];r||Z(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||Z(t.ctx,"\u7F3A\u5C11 userIds \u53C2\u6570\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u652F\u6301 user_id / username\uFF09",void 0,3);let i=_e(t);e!=="member"&&e!=="mentor"&&Z(t.ctx,`--role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${e}'`,void 0,3);let o=await Be(t,i),a=dm(t,Ze(o),n),c=await we(t,"POST",`/team/${i}/groups/${r}/members`,{user_ids:a.map(l=>l.user_id),role:e});if((c.status<200||c.status>=300)&&ye(t.ctx,c),await es(t,"sync.upsertGroupMembers",{teamId:i,externalGroupId:r,members:a.map(l=>({externalUserId:l.user_id,username:l.username||l.user_id,role:na(e)}))}),t.ctx.isJson)t.ctx.emit({team_id:i,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 fm(t){let e=lr(t.args,{valueFlags:["--team","--role"]}),s=e[0];s||Z(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]||ue(t.args,"--role");(!r||!n)&&Z(t.ctx,"\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",void 0,3),n!=="member"&&n!=="mentor"&&Z(t.ctx,`role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${n}'`,void 0,3);let i=_e(t),o=await Be(t,i),a=Qt(t,Ze(o),r,o.name),c=await we(t,"PATCH",`/team/${i}/groups/${s}/members/${a.user_id}`,{role:n});return(c.status<200||c.status>=300)&&ye(t.ctx,c),await es(t,"sync.upsertGroupMembers",{teamId:i,externalGroupId:s,members:[{externalUserId:a.user_id,username:a.username||a.user_id,role:na(n)}]}),Se(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:i,group_id:s,user_id:a.user_id,role:n}:null),0}async function mm(t){let e=vs(t.args,"--yes","-y"),s=lr(t.args,{boolFlags:["--yes","-y"],valueFlags:["--team"]}),r=s[0];r||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups remove-member <groupId> <userId|username> [--yes]",3);let n=s[1];n||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570",void 0,3);let i=_e(t),o=await Be(t,i),a=Qt(t,Ze(o),n,o.name);if(!e)return wn(t,[["username",`${a.username} (${a.user_id})`,"\u5C06\u4ECE\u5C0F\u7EC4\u79FB\u9664"],["group",r,"\u5C0F\u7EC4"],["endpoint",`DELETE /team/${i}/groups/${r}/members/${a.user_id}`],["confirm","\u9AD8\u5F71\u54CD\u64CD\u4F5C\uFF0C\u52A0 --yes \u624D\u4F1A\u6267\u884C"]]);let c=await we(t,"DELETE",`/team/${i}/groups/${r}/members/${a.user_id}`);return(c.status<200||c.status>=300)&&ye(t.ctx,c),await es(t,"sync.removeGroupMember",{teamId:i,externalGroupId:r,externalUserId:a.user_id}),Se(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:i}:null),0}aa.exports={list:zf,current:Jf,use:Hf,info:Yf,members:{list:Xf,info:Qf,create:tm,update:sm,"set-points":rm,delete:nm},groups:{list:im,info:om,members:am,create:cm,update:lm,delete:um,"add-member":pm,"set-role":fm,"remove-member":mm},_internal:{positionals:lr,flag:ue,flagAny:ia,hasFlag:vs,LABELS:bt}}});var kn=x((OS,ca)=>{function hm(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}ca.exports={shouldSuppressUpdateNotice:hm}});var dr=x((DS,In)=>{var xn=require("https"),se=require("fs"),be=require("path"),ur=require("os"),{shouldSuppressUpdateNotice:gm}=kn(),kt="https://makecoder.com/skillhub",ym=["add","remove","update","check-updates","search","list","my-skills","publish","unpublish"],Sn=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=ur.homedir();return[be.join(e,".agents","skills")]}_request(e,s,r){return new Promise((n,i)=>{let o=new URL(`${kt}${s}`),a={hostname:o.hostname,port:o.port||443,path:o.pathname+o.search,method:e,headers:r?{Authorization:`Bearer ${r}`}:{}},c=xn.request(a,l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location)return this._request(e,l.headers.location,r).then(n).catch(i);let u="";l.on("data",d=>u+=d),l.on("end",()=>n({status:l.statusCode,body:u}))});c.on("error",i),c.end()})}fetchWithAuth(e,s){return new Promise((r,n)=>{let i=new URL(e),o={hostname:i.hostname,port:i.port||443,path:i.pathname+i.search,method:"GET",headers:s?{Authorization:`Bearer ${s}`}:{}};xn.get(o,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 i=this.getInstalledSkills();if(i.length===0)return console.log("\u6CA1\u6709\u5DF2\u5B89\u88C5\u7684 skill"),0;console.log(`\u{1F50D} \u68C0\u67E5 ${i.length} \u4E2A skill \u7684\u66F4\u65B0...`);let o=await this.checkUpdates(n);if(o.length===0)console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C");else{console.log(`
38
- \u53D1\u73B0 ${o.length} \u4E2A\u53EF\u66F4\u65B0\u7684 skill:
39
- `);for(let a of o)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 i=await this.checkUpdates(n);if(i.length===0)return console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C"),0;console.log(`\u{1F4E6} \u53D1\u73B0 ${i.length} \u4E2A\u53EF\u66F4\u65B0\u7684 skill\uFF0C\u5F00\u59CB\u66F4\u65B0...
40
- `);let o=0,a=0,c=!1;for(let l of i){let u=await this.install(l.name,n);u==="EACCES"?(c=!0,a++):u!==0?a++:o++}console.log(`
41
- \u66F4\u65B0\u5B8C\u6210: ${o} \u6210\u529F, ${a} \u5931\u8D25`);try{let l=be.join(ur.homedir(),".agents","skills",".update-cache.json");se.existsSync(l)&&se.unlinkSync(l)}catch{}if(c){let l=this.getSkillDirs()[0];console.error(`
35
+ `;try{$s.writeFileSync(w,b,{mode:384});try{$s.chmodSync(w,384)}catch{}_=w}catch(v){process.stderr.write(`Warning: \u4FDD\u5B58\u51ED\u636E\u5931\u8D25 ${v.message}
36
+ `)}}return xe(t.ctx,[["username",c,"\u7528\u6237\u540D"],["password",`${u}${p?" (\u968F\u673A\u751F\u6210\uFF0C\u8BF7\u59A5\u5584\u4FDD\u7BA1)":""}`,"\u5BC6\u7801"],["team_id",l,"teamId"],["type",e,"\u7C7B\u578B"],["nickname",n||"","\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:u,team_id:l,user_type:e,saved_to:_}:null),0}async function sf(t){let e=ue(t.args,"--nickname"),s=ue(t.args,"--mentor"),r=Ts(t.args,"--clear-mentor"),i=t.arg;i||Z(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&&Z(t.ctx,"\u81F3\u5C11\u9700\u8981 --nickname / --mentor / --clear-mentor \u4E4B\u4E00",void 0,3);let o=we(t),n=await Ze(t,o),a=Ve(n),c=Qt(t,a,i,n.name),l={};if(e!==void 0&&(l.nickname=e),r)l.created_by=null;else if(s!==void 0){let p=a.find(m=>m.user_id===s||m.username===s);p||Z(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 d=await be(t,"PATCH",`/team/${o}/ai_users/${c.user_id}`,l);(d.status<200||d.status>=300)&&_e(t.ctx,d);let u=[["username",`${c.username} (${c.user_id})`,"\u5DF2\u66F4\u65B0\u6210\u5458"]];return e!==void 0&&u.push(["nickname",e,"\u6635\u79F0"]),r?u.push(["mentor","(\u5DF2\u6E05\u9664)","\u5BFC\u5E08"]):s!==void 0&&u.push(["mentor",s,"\u5BFC\u5E08"]),xe(t.ctx,u,t.ctx.isJson?{user_id:c.user_id,team_id:o}:null),0}async function rf(t){let e=ue(t.args,"--points"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members set-points <userId|username> --points <n|unlimited>",3),e===void 0&&Z(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 u=Number(e);(!Number.isFinite(u)||u<0)&&Z(t.ctx,`--points \u5E94\u4E3A\u975E\u8D1F\u6570\u5B57\u6216 unlimited\uFF0C\u6536\u5230 '${e}'`,void 0,3),r=u}let i=we(t),o=await Ze(t,i),n=Qt(t,Ve(o),s,o.name),a=`/refactor/coder/teams/${i}/members/${n.user_id}/points`,c=r===null?"\u4E0D\u9650\u91CF\uFF08\u7EE7\u627F\u56E2\u961F\u6C60\uFF09":String(r),l=await be(t,"POST",a,{points:r},Zm);(l.status<200||l.status>=300)&&_e(t.ctx,l);let d=Xe(l.body);return d&&d.code!==void 0&&d.code!==0&&d.code!==null&&Z(t.ctx,`\u540E\u7AEF\u8FD4\u56DE code=${d.code} message=${d.message||""}`,void 0,1),xe(t.ctx,[["username",`${n.username} (${n.user_id})`,"\u5DF2\u8BBE\u7F6E\u79EF\u5206\u914D\u989D"],["quota",c,"\u914D\u989D"]],t.ctx.isJson?{user_id:n.user_id,team_id:i,points:r}:null),0}async function of(t){let e=Ts(t.args,"--yes","-y"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570","\u7528\u6CD5: coder team members delete <userId|username> [--yes]",3);let r=we(t),i=await Ze(t,r),o=Qt(t,Ve(i),s,i.name);if(!e)return ki(t,[["username",`${o.username} (user_id=${o.user_id}, role=${o.role})`,"\u5C06\u5220\u9664\u6210\u5458"],["team",`${i.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 n=await be(t,"DELETE",`/team/${r}/members/${o.id}`);return(n.status<200||n.status>=300)&&_e(t.ctx,n),xe(t.ctx,[["username",`${o.username} (${o.user_id})`,"\u5DF2\u5220\u9664\u6210\u5458"],["team",i.name,"\u4ECE\u56E2\u961F"]],t.ctx.isJson?{deleted:!0,user_id:o.user_id,team_id:r}:null),0}async function ra(t,e,s){let r=await be(t,"GET",`/team/${e}/groups/${s}/members`);(r.status<200||r.status>=300)&&_e(t.ctx,r);let i=Xe(r.body);return i&&(i.data||i)||[]}async function nf(t){let e=we(t),s=await be(t,"GET",`/team/${e}/groups`);(s.status<200||s.status>=300)&&_e(t.ctx,s);let r=Xe(s.body),i=r&&(r.data||r)||[];return ar(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",description:o.description||"",created_at:(o.created_at||"").slice(0,10)})),{labels:kt,empty:"\u6682\u65E0\u5C0F\u7EC4"}),0}async function af(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups info <groupId>",3);let s=we(t),r=await be(t,"GET",`/team/${s}/groups`);(r.status<200||r.status>=300)&&_e(t.ctx,r);let o=(Xe(r.body)?.data||[]).find(a=>a.id===e);o||Z(t.ctx,`\u5C0F\u7EC4 '${e}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team groups \u67E5\u770B\u5C0F\u7EC4",4);let n=await ra(t,s,e);return xe(t.ctx,[["group",`${o.name} (${o.id})`,"\u5C0F\u7EC4"],["description",o.description||"","\u63CF\u8FF0"],["team_id",s,"teamId"],["members_total",n.length,"\u6210\u5458\u6570"]],t.ctx.isJson?{id:o.id,name:o.name,members:n,members_total:n.length}:null),0}async function cf(t){let e=t.arg;e||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups members <groupId>",3);let s=we(t),r=await Ze(t,s),i=new Map(Ve(r).map(n=>[n.user_id,n])),o=await ra(t,s,e);return ar(t.ctx,o.map(n=>{let a=i.get(n.user_id)||{};return{username:a.username||"",user_id:n.user_id||"",type:a.user_type||"",role:n.role||"",nickname:a.nickname||""}}),{labels:kt,empty:"\u5C0F\u7EC4\u6682\u65E0\u6210\u5458"}),0}async function lf(t){let e=ue(t.args,"--description"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 name \u53C2\u6570","\u7528\u6CD5: coder team groups create <name> [--description <d>]",3);let r=we(t),i={name:s};e&&(i.description=e);let o=await be(t,"POST",`/team/${r}/groups`,i);(o.status<200||o.status>=300)&&_e(t.ctx,o);let a=((Xe(o.body)||{}).data||Xe(o.body)||{}).id;return a&&await es(t,"sync.upsertGroup",{teamId:r,externalGroupId:a,name:s,description:e||void 0}),xe(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 df(t){let e=ue(t.args,"--name"),s=ue(t.args,"--description"),r=t.arg;r||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups update <groupId> [--name <n>] [--description <d>]",3);let i=we(t);e===void 0&&s===void 0&&Z(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 n=await be(t,"PATCH",`/team/${i}/groups/${r}`,o);(n.status<200||n.status>=300)&&_e(t.ctx,n);let a=Xe(n.body)?.data||{},c=e!==void 0?e:a.name;c&&await es(t,"sync.upsertGroup",{teamId:i,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"]),xe(t.ctx,l,t.ctx.isJson?{id:r,team_id:i,...o}:null),0}async function uf(t){let e=Ts(t.args,"--yes","-y"),s=t.arg;s||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups delete <groupId> [--yes]",3);let r=we(t);if(!e)return ki(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 i=await be(t,"DELETE",`/team/${r}/groups/${s}`);return(i.status<200||i.status>=300)&&_e(t.ctx,i),await es(t,"sync.deleteGroup",{teamId:r,externalGroupId:s}),xe(t.ctx,[["group",s,"\u5DF2\u5220\u9664\u5C0F\u7EC4"]],t.ctx.isJson?{deleted:!0,id:s,team_id:r}:null),0}function pf(t,e,s){return s.split(",").map(i=>i.trim()).filter(Boolean).map(i=>{let o=e.find(n=>n.user_id===i||n.username===i||n.id===i);return o||Z(t.ctx,`\u6210\u5458 '${i}' \u4E0D\u5728\u56E2\u961F\u4E2D`,"\u8FD0\u884C coder team members \u67E5\u770B\u6210\u5458",4),o})}async function mf(t){let e=ue(t.args,"--role")||"member",s=cr(t.args,{valueFlags:["--team","--role"]}),r=s[0];r||Z(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 i=s[1];i||Z(t.ctx,"\u7F3A\u5C11 userIds \u53C2\u6570\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u652F\u6301 user_id / username\uFF09",void 0,3);let o=we(t);e!=="member"&&e!=="mentor"&&Z(t.ctx,`--role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${e}'`,void 0,3);let n=await Ze(t,o),a=pf(t,Ve(n),i),c=await be(t,"POST",`/team/${o}/groups/${r}/members`,{user_ids:a.map(l=>l.user_id),role:e});if((c.status<200||c.status>=300)&&_e(t.ctx,c),await es(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:r,members:a.map(l=>({externalUserId:l.user_id,username:l.username||l.user_id,role:ta(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 d of a)l.push(` - ${d.username} (${d.user_id})`);t.ctx.emit(l.join(`
37
+ `))}return 0}async function ff(t){let e=cr(t.args,{valueFlags:["--team","--role"]}),s=e[0];s||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",3);let r=e[1],i=e[2]||ue(t.args,"--role");(!r||!i)&&Z(t.ctx,"\u7528\u6CD5: coder team groups set-role <groupId> <userId|username> <member|mentor>",void 0,3),i!=="member"&&i!=="mentor"&&Z(t.ctx,`role \u4EC5\u652F\u6301 member|mentor\uFF0C\u6536\u5230 '${i}'`,void 0,3);let o=we(t),n=await Ze(t,o),a=Qt(t,Ve(n),r,n.name),c=await be(t,"PATCH",`/team/${o}/groups/${s}/members/${a.user_id}`,{role:i});return(c.status<200||c.status>=300)&&_e(t.ctx,c),await es(t,"sync.upsertGroupMembers",{teamId:o,externalGroupId:s,members:[{externalUserId:a.user_id,username:a.username||a.user_id,role:ta(i)}]}),xe(t.ctx,[["username",`${a.username} (${a.user_id})`,"\u5DF2\u8BBE\u7F6E\u5C0F\u7EC4\u89D2\u8272"],["group",s,"\u5C0F\u7EC4"],["role",i,"\u89D2\u8272"]],t.ctx.isJson?{team_id:o,group_id:s,user_id:a.user_id,role:i}:null),0}async function hf(t){let e=Ts(t.args,"--yes","-y"),s=cr(t.args,{boolFlags:["--yes","-y"],valueFlags:["--team"]}),r=s[0];r||Z(t.ctx,"\u7F3A\u5C11 groupId \u53C2\u6570","\u7528\u6CD5: coder team groups remove-member <groupId> <userId|username> [--yes]",3);let i=s[1];i||Z(t.ctx,"\u7F3A\u5C11 userId|username \u53C2\u6570",void 0,3);let o=we(t),n=await Ze(t,o),a=Qt(t,Ve(n),i,n.name);if(!e)return ki(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 be(t,"DELETE",`/team/${o}/groups/${r}/members/${a.user_id}`);return(c.status<200||c.status>=300)&&_e(t.ctx,c),await es(t,"sync.removeGroupMember",{teamId:o,externalGroupId:r,externalUserId:a.user_id}),xe(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}ia.exports={list:zm,current:Jm,use:Hm,info:Ym,members:{list:Xm,info:Qm,create:tf,update:sf,"set-points":rf,delete:of},groups:{list:nf,info:af,members:cf,create:lf,update:df,delete:uf,"add-member":mf,"set-role":ff,"remove-member":hf},_internal:{positionals:cr,flag:ue,flagAny:sa,hasFlag:Ts,LABELS:kt}}});var xi=I((mx,oa)=>{function gf(){return process.env.CODER_NESTED==="1"||!process.stdout.isTTY}oa.exports={shouldSuppressUpdateNotice:gf}});var dr=I((fx,Ai)=>{var Ii=require("https"),ie=require("fs"),ke=require("path"),lr=require("os"),{shouldSuppressUpdateNotice:yf}=xi(),St="https://makecoder.com/skillhub",_f=["add","remove","update","check-updates","search","list","my-skills","publish","unpublish"],Ei=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=lr.homedir();return[ke.join(e,".agents","skills")]}_request(e,s,r){return new Promise((i,o)=>{let n=new URL(`${St}${s}`),a={hostname:n.hostname,port:n.port||443,path:n.pathname+n.search,method:e,headers:r?{Authorization:`Bearer ${r}`}:{}},c=Ii.request(a,l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location)return this._request(e,l.headers.location,r).then(i).catch(o);let d="";l.on("data",u=>d+=u),l.on("end",()=>i({status:l.statusCode,body:d}))});c.on("error",o),c.end()})}fetchWithAuth(e,s){return new Promise((r,i)=>{let o=new URL(e),n={hostname:o.hostname,port:o.port||443,path:o.pathname+o.search,method:"GET",headers:s?{Authorization:`Bearer ${s}`}:{}};Ii.get(n,a=>{if(a.statusCode>=300&&a.statusCode<400&&a.headers.location)return this.fetchWithAuth(a.headers.location,s).then(r).catch(i);let c="";a.on("data",l=>{c+=l}),a.on("end",()=>r({status:a.statusCode,body:c}))}).on("error",i)})}async handle({skillsSubcommand:e,skillsArg:s,skillsRemainingArgs:r,apikey:i}){if(!e||e==="--help"||e==="-h")return this.showHelp(),0;if(e==="publish")return await this.publish(r||[],i);if(e==="unpublish")return await this.unpublish(s,i);if(e==="list")return await this.listTeamSkills(r||[],i);if(e==="my-skills")return await this.listMySkills(r||[],i);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 n=await this.checkUpdates(i);if(n.length===0)console.log("\u2705 \u6240\u6709 skill \u5747\u4E3A\u6700\u65B0\u7248\u672C");else{console.log(`
38
+ \u53D1\u73B0 ${n.length} \u4E2A\u53EF\u66F4\u65B0\u7684 skill:
39
+ `);for(let a of n)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?i?await this.install(s,i):(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(!i)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;if(s)return await this.install(s,i);console.log("\u{1F50D} \u68C0\u67E5\u53EF\u66F4\u65B0\u7684 skill...");let o=await this.checkUpdates(i);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
+ `);let n=0,a=0,c=!1;for(let l of o){let d=await this.install(l.name,i);d==="EACCES"?(c=!0,a++):d!==0?a++:n++}console.log(`
41
+ \u66F4\u65B0\u5B8C\u6210: ${n} \u6210\u529F, ${a} \u5931\u8D25`);try{let l=ke.join(lr.homedir(),".agents","skills",".update-cache.json");ie.existsSync(l)&&ie.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=kt.replace(/\/$/,"");console.log(`\u{1F50D} \u6B63\u5728\u4ECE ${kt} \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 i=(n.skills||[])[0];if(!i)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;let o=Array.from(new Set(["SKILL.md",...i.files||[]])),a=`${r}/.well-known/agent-skills/${i.name}`,c={};for(let d of o)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 ${i.name}...`);let l={name:i.name,version:i.version||null,installedAt:new Date().toISOString()};for(let d of this.getSkillDirs()){let p=be.join(d,i.name);se.mkdirSync(p,{recursive:!0});try{for(let[f,g]of Object.entries(c)){let _=be.join(p,f);se.mkdirSync(be.dirname(_),{recursive:!0}),se.writeFileSync(_,g,"utf8")}se.writeFileSync(be.join(p,".skill-meta.json"),JSON.stringify(l,null,2),"utf8")}catch(f){if(f.code==="EACCES")return"EACCES";throw f}}let u=i.version?` (v${i.version})`:"";return console.log(`\u2705 ${i.name}${u} \u5B89\u88C5\u5B8C\u6210`),this.cleanLegacySkill(i.name),0}cleanLegacySkill(e){let s=ur.homedir(),r=[".claude",".codex",".gemini"].map(n=>be.join(s,n,"skills",e));for(let n of r)if(se.existsSync(n))try{se.rmSync(n,{recursive:!0,force:!0})}catch{}}getInstalledSkills(){let e=[];for(let s of this.getSkillDirs())if(se.existsSync(s))for(let r of se.readdirSync(s,{withFileTypes:!0})){if(!r.isDirectory()||r.name.startsWith("."))continue;let n=be.join(s,r.name),i=be.join(n,".skill-meta.json"),o=null;if(se.existsSync(i))try{o=JSON.parse(se.readFileSync(i,"utf8"))}catch{}e.push({name:r.name,dir:n,meta:o})}return e}async checkUpdates(e){let s=this.getInstalledSkills();if(s.length===0)return[];let r=kt.replace(/\/$/,""),n=[];for(let i of s){let o=i.meta?.version||"0.0.1";try{let a=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(i.name)}`,e);if(a.status===404||a.status!==200)continue;let l=(JSON.parse(a.body).skills||[])[0];if(!l?.version)continue;l.version!==o&&n.push({name:i.name,localVersion:o,remoteVersion:l.version})}catch{}}return n}notifyAndRefreshUpdates(e){let s=be.join(ur.homedir(),".agents","skills",".update-cache.json");if(!gm())try{if(se.existsSync(s)){let o=JSON.parse(se.readFileSync(s,"utf8"));if(Array.isArray(o.updates)&&o.updates.length>0){let c=o.updates.length,l;if(c<=3)l=o.updates.map(u=>`${u.name} (${u.localVersion} \u2192 ${u.remoteVersion})`).join(", ");else{let u=o.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(se.readFileSync(s,"utf8")).checkedAt||0}catch{}!this.getInstalledSkills().some(o=>!o.meta?.version)&&Date.now()-n<r||setImmediate(async()=>{try{let o=await this.checkUpdates(e);se.mkdirSync(be.dirname(s),{recursive:!0}),se.writeFileSync(s,JSON.stringify({checkedAt:Date.now(),updates:o},null,2),"utf8")}catch{}})}remove(e){let s=!1;for(let r of this.getSkillDirs()){let n=be.join(r,e);se.existsSync(n)&&(se.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=`${kt}/api/web/skills?q=${encodeURIComponent(e)}&sort=relevance&page=0&size=12`;return new Promise(r=>{xn.get(s,n=>{let i="";n.on("data",o=>{i+=o}),n.on("end",()=>{try{let o=JSON.parse(i);if(o.code!==0)return console.error(`\u274C \u67E5\u8BE2\u5931\u8D25: ${o.msg}`),r(1);let a=o.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 ${o.data.total} \u4E2A\u7ED3\u679C:
44
- `);for(let c of a)console.log(` ${c.slug.padEnd(20)} ${c.summary}`);r(0)}catch(o){console.error(`\u274C \u89E3\u6790\u54CD\u5E94\u5931\u8D25: ${o.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"),i=null,o="PUBLIC",a=null,c=null,l=null,u=null;for(let y=0;y<e.length;y++)if(e[y]==="--team"||e[y]==="-t"||e[y]==="--namespace"||e[y]==="-n")i=e[++y];else if(e[y]==="--visibility"||e[y]==="-v")o=e[++y];else if(e[y]==="--meta-data"){let w=e[++y];try{JSON.parse(w)}catch(T){return console.error(`\u274C --meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON\uFF1A${T.message}`),1}a=w}else if(!e[y].startsWith("-")){let w=e[y];se.existsSync(w)&&se.statSync(w).isDirectory()?u=w:c=w}let d=this._resolveNamespace(i),p=d==="global";if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;p||(o="NAMESPACE_ONLY");let f=["PUBLIC","NAMESPACE_ONLY","PRIVATE"];if(!f.includes(o))return console.error(`\u274C visibility \u5FC5\u987B\u662F: ${f.join(", ")}`),1;if(c){if(!se.existsSync(c))return console.error(`\u274C \u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`),1}else{let y=u?be.resolve(u):process.cwd();l=be.join(n.tmpdir(),`skill-pub-${Date.now()}.zip`),console.log(`\u{1F4E6} \u6B63\u5728\u6253\u5305 ${y}...`);try{se.existsSync(be.join(y,".git"))?(r(`git archive -o "${l}" HEAD`,{cwd:y,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:y,stdio:"pipe"})}catch(w){return console.error(`\u274C \u6253\u5305\u5931\u8D25: ${w.message}`),1}c=l}let g=`${kt}/api/v1/skills/${encodeURIComponent(d)}/publish?visibility=${encodeURIComponent(o)}`,_=s;console.log(`\u{1F680} \u6B63\u5728\u53D1\u5E03\u5230 ${kt}`),console.log(` team: ${d}`),console.log(` visibility: ${o}`);try{let y=a?` -F "meta_data=${a.replace(/"/g,'\\"')}"`:"",w=`curl -s -X POST "${g}" -H "Authorization: Bearer ${_}" -F "file=@${c}"${y}`,T=r(w,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),N=JSON.parse(T);if(N.code===0){let v=N.data,G=v.namespace==="global"?`https://makecoder.com/skillhub/${v.slug}`:`https://makecoder.com/skillhub/space/${v.namespace}/${v.slug}`;return console.log(`
45
- \u2705 \u53D1\u5E03\u6210\u529F!`),console.log(` ${v.namespace}--${v.slug}@${v.version}`),console.log(` ${G}`),v.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: ${N.msg||JSON.stringify(N)}`),1}catch(y){let w=y.stdout;if(w)try{let T=JSON.parse(w);return console.error(`
47
- \u274C \u53D1\u5E03\u5931\u8D25: ${T.msg||w}`),1}catch{}return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${y.message}`),1}finally{l&&se.existsSync(l)&&se.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 o=e.split("--");if(o.length!==2||!o[0]||!o[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(o[0]),n=o[1]}else r=this._resolveNamespace(null),n=e;let i=`/api/v1/skills/${encodeURIComponent(r)}/${encodeURIComponent(n)}`;console.log(`\u{1F5D1}\uFE0F \u6B63\u5728\u4E0B\u67B6 ${r}--${n}`);try{let o=await this._request("DELETE",i,s),a=JSON.parse(o.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(o){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${o.message}`),1}}async listTeamSkills(e,s){let r=0,n=20,i=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]&&(i=e[++u]);let o=this._resolveNamespace(i),a=o==="global",c=a?"":`&namespace=${encodeURIComponent(o)}`,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||[],f=d.data?.total||0,g=a?"\u516C\u5171":`\u56E2\u961F ${o}`;if(p.length===0)return console.log(`${g} \u4E0B\u6682\u65E0 skill`),0;console.log(`${g} \u5171 ${f} \u4E2A skill\uFF08\u7B2C ${r+1} \u9875\uFF09:
48
- `);for(let _ of p){let y=`${_.slug}`.padEnd(28),w=`\u2B50 ${_.starCount??0}`.padEnd(8),T=`\u2193 ${_.downloadCount??0}`.padEnd(10);console.log(` ${y} ${w} ${T} ${_.summary||""}`)}return(r+1)*n<f&&console.log(`
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 i=0;i<e.length;i++)(e[i]==="--page"||e[i]==="-p")&&e[i+1]?r=parseInt(e[++i],10):(e[i]==="--size"||e[i]==="-s")&&e[i+1]&&(n=parseInt(e[++i],10));if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;try{let i=await this._request("GET",`/api/web/me/skills?page=${r}&size=${n}`,s),o=JSON.parse(i.body);if(o.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${o.msg}`),1;let a=o.data?.items||[],c=o.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),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(i){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${i.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
- `))}};In.exports=Sn;In.exports.SKILLS_SUBCOMMANDS=ym});var Cn=x((RS,ma)=>{var _m="https://makecoder.com/wiki",la=/^(?:[0-9a-zA-Z-_~]*-)?([a-zA-Z0-9]{10,15})$/,ua=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function da(t){return typeof t=="string"&&ua.test(t)}function pa(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 fa(t){let e=pa(t);if(!e)return null;if(da(e))return{kind:"uuid",value:e};let s=e.match(la);return s?{kind:"urlId",value:s[1]}:null}function wm(t){let e=fa(t);return e&&e.kind==="urlId"?e.value:null}ma.exports={WIKI_BASE:_m,SLUG_URL_REGEX:la,UUID_REGEX:ua,isUuid:da,lastPathSegment:pa,classifyId:fa,extractUrlId:wm}});var Us=x((LS,ga)=>{var bm=require("https"),{WIKI_BASE:pr}=Cn(),ha=`${pr}/api`,km=t=>`${pr}/doc/${t}`,xm=t=>`${pr}/collection/${t}`,En=class{constructor(e,s=null){this.token=e,this.teamId=s||null}post(e,s){return new Promise((r,n)=>{let i=JSON.stringify(s||{}),o=new URL(`${ha}/${e}`),a={"Content-Type":"application/json","Content-Length":Buffer.byteLength(i),Authorization:`Bearer ${this.token}`};this.teamId&&(a["X-Team-Id"]=this.teamId);let c=bm.request({hostname:o.hostname,port:o.port||443,path:o.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(i),c.end()})}async postJson(e,s,{allowNoData:r=!1}={}){let n=await this.post(e,s),i=$n(n.body);return{ok:n.status<400&&i?.ok!==!1&&(r||i?.data!==void 0),status:n.status,json:i,body:n.body}}};function $n(t){try{return JSON.parse(t)}catch{return null}}function Sm(t){let e=$n(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}ga.exports={WikiHttp:En,WIKI_BASE:pr,WIKI_API_BASE:ha,docUrl:km,colUrl:xm,parseJson:$n,errorMessage:Sm}});var Tn=x((PS,_a)=>{var{WIKI_BASE:Im,docUrl:Cm}=Us(),An=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Em(t,e,s={}){let r=typeof s=="string"?{empty:s}:s,{labels:n=ya,empty:i="\uFF08\u7A7A\uFF09"}=r;if(!e||!e.length){t.emit(i);return}if(t.isJson){t.emit(e);return}let o=Object.keys(e[0]),c=[`| ${o.map(l=>n[l]||l).map(An).join(" | ")} |`,`| ${o.map(()=>"---").join(" | ")} |`,...e.map(l=>`| ${o.map(u=>An(l[u])).join(" | ")} |`)];t.emit(c.join(`
52
- `))}function $m(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=(i,o,a)=>{i.forEach((c,l)=>{let u=l===i.length-1,d=u?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",p=c.url?`${Im}${c.url}`:Cm(c.id);r.push(`${o}${d}${c.title||c.id} ${p}`),c.children?.length&&a+1<s&&n(c.children,o+(u?" ":"\u2502 "),a+1)})};n(e,"",0),t.emit(r.join(`
53
- `))}function Am(t,e,s=null){if(t.isJson){let r={};for(let[n,i]of e)r[n]=i;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,n,i])=>`${i||r}: ${n??""}`).join(`
54
- `))}var ya={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"};_a.exports={emitTable:Em,emitTree:$m,emitDetails:Am,escCell:An,LABELS:ya}});var Un=x((NS,ba)=>{var{emitTable:wa,emitDetails:Tm,emitTree:vm,LABELS:Um}=Tn(),{docUrl:Om,colUrl:Dm}=Us(),ke=t=>t?.data||[],ts=t=>t?.data?.memberships||t?.data?.groupMemberships||t?.data||[],de=(t,e,s)=>(r,n)=>wa(r,(t(n)||[]).map(e),{labels:Um,empty:s}),xt=t=>(e,s)=>Tm(e,t(s.data)),F=t=>(e,s)=>e.emit(typeof t=="function"?t(s):t),A=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},vn=t=>({id:t.id,title:t.title,url:Om(t.urlId||t.id)}),Rm={"collection-info":{endpoint:"collections.info",id:"col",req:"\u8BF7\u6307\u5B9A\u96C6\u5408 id",body:t=>({id:t}),render:xt(t=>[["id",t.id],["name",t.name,"\u540D\u79F0"],["description",t.description||"","\u63CF\u8FF0"],["permission",t.permission||"null","\u6743\u9650"],["url",Dm(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 A(e,"--query")&&(s.query=A(e,"--query")),A(e,"--permission")&&(s.permission=A(e,"--permission")),s},render:de(ts,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 A(e,"--permission")&&(s.permission=A(e,"--permission")),s},render:F("\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:F("\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 A(e,"--permission")&&(s.permission=A(e,"--permission")),s},render:F("\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:F("\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:de(ts,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 A(e,"--format")&&(s.format=A(e,"--format")),s},render:F(t=>`\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${t.data?.id||""}`)},"export-all":{endpoint:"collections.export_all",body:(t,e)=>{let s={};return A(e,"--format")&&(s.format=A(e,"--format")),s},render:F(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)=>{let s=parseInt(e[1],10);return!e[1]&&"\u8BF7\u6307\u5B9A\u76EE\u6807 index\uFF08\u7B2C\u4E8C\u4E2A\u53C2\u6570\uFF09"||(isNaN(s)||s<0)&&"index \u9700\u4E3A\u975E\u8D1F\u6574\u6570"},body:(t,e)=>({id:t,index:parseInt(e[1],10)}),render:F("\u96C6\u5408\u5DF2\u79FB\u52A8")},archived:{endpoint:"documents.archived",resolve:[{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return A(e,"--collection")&&(s.collectionId=A(e,"--collection")),A(e,"--sort")&&(s.sort=A(e,"--sort")),A(e,"--direction")&&(s.direction=A(e,"--direction")),s},render:de(ke,vn,"\u6682\u65E0\u5DF2\u5F52\u6863\u6587\u6863")},deleted:{endpoint:"documents.deleted",body:(t,e)=>{let s={};return A(e,"--sort")&&(s.sort=A(e,"--sort")),A(e,"--direction")&&(s.direction=A(e,"--direction")),s},render:de(ke,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 A(e,"--start-date")&&(s.startDate=A(e,"--start-date")),A(e,"--end-date")&&(s.endDate=A(e,"--end-date")),s},render:de(ke,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:de(ke,vn,"\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 A(e,"--title")&&(s.title=A(e,"--title")),A(e,"--collection")&&(s.collectionId=A(e,"--collection")),A(e,"--parent")&&(s.parentDocumentId=A(e,"--parent")),e.includes("--recursive")&&(s.recursive=!0),e.includes("--publish")&&(s.publish=!0),s},render:F(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:F("\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 A(e,"--collection")&&(s.collectionId=A(e,"--collection")),s},render:F(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:de(ts,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 A(e,"--permission")&&(s.permission=A(e,"--permission")),s},render:F("\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:F("\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 A(e,"--permission")&&(s.permission=A(e,"--permission")),s},render:F("\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:F("\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:de(ts,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:F("\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)=>vm(t,e.data?.children||[])},shares:{endpoint:"shares.list",resolve:[{flag:"--document",kind:"doc"}],body:(t,e)=>{let s={};return A(e,"--document")&&(s.documentId=A(e,"--document")),s},render:de(ke,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:xt(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:F(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:F("\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:F("\u5206\u4EAB\u5DF2\u64A4\u9500")},users:{endpoint:"users.list",body:(t,e)=>{let s={};return A(e,"--query")&&(s.query=A(e,"--query")),A(e,"--filter")&&(s.filter=A(e,"--filter")),s},render:de(ke,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:xt(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)=>!(A(e,"--email")||t)&&"\u8BF7\u6307\u5B9A\u90AE\u7BB1\uFF08\u7B2C\u4E00\u4E2A\u53C2\u6570\u6216 --email\uFF09",body:(t,e)=>{let s=A(e,"--email")||t,r=A(e,"--name")||e[1],n=A(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");wa(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:F("\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:F("\u7528\u6237\u5DF2\u6682\u505C")},"user-activate":{endpoint:"users.activate",req:"\u8BF7\u6307\u5B9A\u7528\u6237 id\uFF08UUID\uFF09",body:t=>({id:t}),render:F("\u7528\u6237\u5DF2\u6FC0\u6D3B")},groups:{endpoint:"groups.list",body:(t,e)=>{let s={};return A(e,"--query")&&(s.query=A(e,"--query")),s},render:de(ke,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:xt(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:F(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 A(e,"--name")&&(s.name=A(e,"--name")),s},render:F("\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:F("\u7FA4\u7EC4\u5DF2\u5220\u9664")},"group-members":{endpoint:"groups.memberships",req:"\u8BF7\u6307\u5B9A\u7FA4\u7EC4 id\uFF08UUID\uFF09",body:t=>({id:t}),render:de(ts,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:F("\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:F("\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:de(ke,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:F("\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),A(e,"--collection")&&(s.collectionId=A(e,"--collection")),s},render:de(ke,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:F(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:F("\u5DF2\u53D6\u6D88\u8BA2\u9605")},events:{endpoint:"events.list",resolve:[{flag:"--document",kind:"doc"},{flag:"--collection",kind:"col"}],body:(t,e)=>{let s={};return A(e,"--actor")&&(s.actorId=A(e,"--actor")),A(e,"--document")&&(s.documentId=A(e,"--document")),A(e,"--collection")&&(s.collectionId=A(e,"--collection")),A(e,"--type")&&(s.name=A(e,"--type")),s},render:de(ke,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 A(e,"--collection")&&(s.collectionId=A(e,"--collection")),s},render:de(ke,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:xt(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=A(e,"--text")||"";return{collectionId:t,title:e[1],data:{type:"doc",content:s?[{type:"paragraph",content:[{type:"text",text:s}]}]:[]}}},render:F(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};A(e,"--title")&&(s.title=A(e,"--title"));let r=A(e,"--text");return r!==void 0&&(s.data={type:"doc",content:[{type:"paragraph",content:[{type:"text",text:r}]}]}),s},render:F("\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:F("\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 A(e,"--title")&&(s.title=A(e,"--title")),s},render:F(t=>`\u6A21\u677F\u5DF2\u590D\u5236: ${t.data.id} \u2014 ${t.data.title}`)},"file-ops":{endpoint:"fileOperations.list",body:(t,e)=>{let s={};return A(e,"--type")&&(s.type=A(e,"--type")),s},render:de(ke,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:xt(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:F("\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:de(ke,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:de(ke,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:F("\u9644\u4EF6\u5DF2\u5220\u9664")}};ba.exports={COMMANDS:Rm,list:de,details:xt,ok:F,flag:A,items:ke,memberships:ts,docRow:vn}});var xa=x((jS,ka)=>{var Lm=[{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"}];ka.exports={ICON_LIST:Lm}});var Ln=x((qS,Ta)=>{var fr=require("fs"),Os=require("path"),{docUrl:ss,colUrl:On,errorMessage:Pm}=Us(),{emitTable:We,emitTree:Nm,emitDetails:Ds}=Tn(),{ICON_LIST:Sa}=xa(),ie=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},Dn=(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 W(t,e,s,{allowNoData:r=!1}={}){let n=await t.http.postJson(e,s,{allowNoData:r});if(!n.ok){t.ctx.fail(Pm(n.body),void 0);let i=new Error("__handled__");throw i.handled=!0,i}return n.json}var mr=t=>({id:t.id,title:t.title,url:ss(t.urlId||t.id)});async function jm(t){let{ctx:e,http:s,resolver:r,arg:n,args:i}=t,o=i.indexOf("-d"),a=o!==-1?parseInt(i[o+1],10):null;if(!n){let u=await W(t,"collections.list",{});return We(e,(u.data||[]).filter(d=>!d?.isShared).map(d=>({id:d.id,name:d.name,description:d.description||"",url:On(d.urlId||d.id)})),"\u6682\u65E0\u96C6\u5408"),0}let c=await r.toColUuid(n);if(a===null){let u=await W(t,"documents.list",{collectionId:c,sort:"updatedAt",direction:"DESC"});return We(e,(u.data||[]).map(mr),"\u6682\u65E0\u6587\u6863"),0}let l=await W(t,"collections.documents",{id:c});return Nm(e,l.data||[],a===-1?1/0:a),0}async function qm(t){let{ctx:e,arg:s}=t,r=[...t.args],n=(_,y)=>{let w=r.indexOf(_);if(w===-1)return y;let T=r[w+1];return r.splice(w,2),T??y},i=n("--permission","read_write"),o=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(" "),f={name:d,description:p,sharing:!0};f.permission=i==="null"||i==="none"?null:i,o&&(f.icon=o),a&&(f.color=a),(c||l)&&(f.sort={field:c||"index",direction:l||"asc"}),u&&(f.index=u);let g=await W(t,"collections.create",f);return Ds(e,[["collection",`${g.data.id} \u2014 ${g.data.name}`,"\u96C6\u5408\u5DF2\u521B\u5EFA"],["url",On(g.data.urlId||g.data.id)]]),0}async function Mm(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 o={id:await s.toColUuid(r)};if(ie(n,"--name")&&(o.name=ie(n,"--name")),ie(n,"--description")&&(o.description=ie(n,"--description")),n.indexOf("--permission")!==-1){let c=ie(n,"--permission");o.permission=c==="null"||c==="none"?null:c}if(ie(n,"--color")&&(o.color=ie(n,"--color")),n.indexOf("--sharing")!==-1&&(o.sharing=ie(n,"--sharing")==="true"),Object.keys(o).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 W(t,"collections.update",o);return e.emit(`\u96C6\u5408\u5DF2\u66F4\u65B0: ${a.data.id} \u2014 ${a.data.name}`),0}async function Rn(t,e,s,{allowNoData:r=!1}={}){let{ctx:n,resolver:i,arg:o}=t;if(!o)return n.fail("\u8BF7\u6307\u5B9A\u96C6\u5408 id","coder wiki list \u67E5\u770B\u96C6\u5408"),1;let a=await i.toColUuid(o);return await W(t,e,{id:a},{allowNoData:r}),n.emit(s),0}var Gm=t=>Rn(t,"collections.delete","\u96C6\u5408\u5DF2\u5220\u9664",{allowNoData:!0}),Fm=t=>Rn(t,"collections.archive","\u96C6\u5408\u5DF2\u5F52\u6863"),Bm=t=>Rn(t,"collections.restore","\u96C6\u5408\u5DF2\u6062\u590D");async function Zm(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),o=(await W(t,"documents.info",{id:n})).data;return Ds(e,[["title",o.title,"\u6807\u9898"],["id",o.id],["collection",o.collectionId,"\u96C6\u5408"],["updated_at",o.updatedAt,"\u66F4\u65B0"],["url",ss(o.urlId||o.id)]]),!e.isJson&&o.text&&e.emit(`
56
- ${o.text}`),0}function Ca(t,e){let s=Os.resolve(e);if(!fr.existsSync(s))return t.ctx.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),null;let r=fr.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 Wm(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 i=await s.toColUuid(r),o,a,c=ie(n,"--parent")?await s.toDocUuid(ie(n,"--parent")):void 0,l=await $a(t,i);if(!l.ok)return 1;let u=l.index;l.parentDocumentId&&!c&&(c=l.parentDocumentId);let d=!1;if(n.indexOf("--file")!==-1){let w=ie(n,"--file");d=w&&Os.extname(w).toLowerCase()===".mdx";let T=Ca(t,w);if(!T)return 1;({title:o,text:a}=T)}else{let w=Dn(n,["--after","--index","--parent","--file"]);if(o=w[1],a=w.slice(2).join(" "),!o)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki publish <\u96C6\u5408> <\u6807\u9898> [\u6B63\u6587]"),1}let p={collectionId:i,title:o,text:"",publish:!0};c&&(p.parentDocumentId=c),d&&(p.format="mdx");let g=(await W(t,"documents.create",p)).data.id,_={id:g,title:o,text:a,publish:!0};d&&(_.format="mdx");let y=await W(t,"documents.update",_);if(u!==void 0){let w={id:g,collectionId:i,index:u};c&&(w.parentDocumentId=c),await W(t,"documents.move",w)}return Ds(e,[["title",y.data.title,"\u6587\u6863\u5DF2\u53D1\u5E03"],["id",g],["url",ss(y.data.urlId||g)]]),0}function Ea(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=Ea(t[r].children,e,t[r].id);if(n)return n}}return null}async function $a(t,e){let{ctx:s,resolver:r,args:n}=t,i=ie(n,"--after");if(n.indexOf("--after")!==-1){if(!i)return s.fail("\u8BF7\u6307\u5B9A --after \u7684\u6587\u6863","\u4F20 UUID / urlId / URL"),{ok:!1};let o=await r.toDocUuid(i),a=await W(t,"collections.documents",{id:e}),c=Ea(a.data,o);return c?{ok:!0,index:c.index+1,parentDocumentId:c.parentDocumentId}:(s.fail(`\u96C6\u5408\u4E2D\u672A\u627E\u5230\u6587\u6863 ${i}`,"\u786E\u8BA4\u8BE5\u6587\u6863\u5C5E\u4E8E\u6B64\u96C6\u5408"),{ok:!1})}if(n.indexOf("--index")!==-1){let o=parseInt(ie(n,"--index"),10);return isNaN(o)||o<0?(s.fail("--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570","\u4F8B\u5982 --index 3"),{ok:!1}):{ok:!0,index:o}}return{ok:!0}}async function Vm(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 i=await s.toDocUuid(r),o,a,c=!1;if(n.indexOf("--file")!==-1){let d=ie(n,"--file");c=d&&Os.extname(d).toLowerCase()===".mdx";let p=Ca(t,d);if(!p)return 1;({title:o,text:a}=p)}else if(o=n[1],a=n.slice(2).join(" "),!o)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863\u6807\u9898","coder wiki update <\u6587\u6863> <\u6807\u9898> [\u6B63\u6587]"),1;let l={id:i,title:o,publish:!0};a&&(l.text=a),c&&(l.format="mdx");let u=await W(t,"documents.update",l);return e.emit(`\u6587\u6863\u5DF2\u66F4\u65B0: ${u.data.title}`),0}async function Km(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=await s.toDocUuid(r),o=n.includes("--permanent");return await W(t,"documents.delete",{id:i,...o?{permanent:!0}:{}},{allowNoData:!0}),e.emit(`\u6587\u6863\u5DF2${o?"\u6C38\u4E45":""}\u5220\u9664`),0}async function zm(t){let{ctx:e,resolver:s,arg:r,args:n}=t;if(!r)return e.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id",`move <\u6587\u6863> --after <\u951A\u70B9> # \u63A8\u8350\uFF1A\u7EE7\u627F\u951A\u70B9\u7236\u7EA7
57
- move <\u6587\u6863> --parent <\u7236\u6587\u6863> [--index <n>] # \u79FB\u5165\u7236\u6587\u6863\u4E0B
58
- move <\u6587\u6863> --collection <\u96C6\u5408> [--parent <p>] [--index <n>] # \u8DE8\u96C6\u5408
59
- move <\u6587\u6863> --index <n> # \u4EC5\u9650\u96C6\u5408\u6839\u5C42\u6587\u6863\u6392\u5E8F`),1;let i=n.indexOf("--after")!==-1,o=n.indexOf("--index")!==-1,a=n.indexOf("--parent")!==-1,c=n.indexOf("--collection")!==-1;if(i&&o)return e.fail("--after \u548C --index \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--after \u5DF2\u81EA\u52A8\u786E\u5B9A\u4F4D\u7F6E\uFF0C\u53BB\u6389 --index"),1;if(i&&a)return e.fail("--after \u548C --parent \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--after \u4F1A\u81EA\u52A8\u7EE7\u627F\u951A\u70B9\u7684\u7236\u7EA7"),1;let l=await s.toDocUuid(r),u=Dn(n,["--index","--after","--parent","--collection"]),d,p;c?d=await s.toColUuid(ie(n,"--collection")):u[1]?d=await s.toColUuid(u[1]):(p=await W(t,"documents.info",{id:l}),d=p.data.collectionId);let f;a?f=await s.toDocUuid(ie(n,"--parent")):u[2]&&!c&&(f=await s.toDocUuid(u[2]));let g;if(i){let y=await $a(t,d);if(!y.ok)return 1;g=y.index,f=y.parentDocumentId}else if(o){let y=parseInt(ie(n,"--index"),10);if(isNaN(y)||y<0)return e.fail("--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570","\u4F8B\u5982 --index 0"),1;if(!a&&!u[2]&&(p||await W(t,"documents.info",{id:l})).data.parentDocumentId)return e.fail("--index \u5355\u72EC\u4F7F\u7528\u4F1A\u628A\u6587\u6863\u79FB\u5230\u96C6\u5408\u6839\uFF08\u8BE5\u6587\u6863\u5F53\u524D\u5728\u5B50\u76EE\u5F55\u4E2D\uFF09","\u7528 --parent <\u7236\u6587\u6863> --index <n> \u5728\u5B50\u76EE\u5F55\u5185\u6392\u5E8F\uFF0C\u6216 --after <\u951A\u70B9> \u81EA\u52A8\u7EE7\u627F\u7236\u7EA7"),1;g=y}else g=0;let _={id:l,collectionId:d,index:g};return f!==void 0&&(_.parentDocumentId=f),await W(t,"documents.move",_),e.emit("\u6587\u6863\u5DF2\u79FB\u52A8"),0}async function Jm(t,e,s){let{ctx:r,resolver:n,arg:i}=t;if(!i)return r.fail("\u8BF7\u6307\u5B9A\u6587\u6863 id","\u53EF\u4F20 UUID / urlId / URL"),1;let o=await n.toDocUuid(i);return await W(t,e,{id:o}),r.emit(s),0}var Hm=t=>Jm(t,"documents.archive","\u6587\u6863\u5DF2\u5F52\u6863");async function Ym(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={id:await s.toDocUuid(r)};return ie(n,"--revision")&&(o.revisionId=ie(n,"--revision")),ie(n,"--collection")&&(o.collectionId=await s.toColUuid(ie(n,"--collection"))),await W(t,"documents.restore",o),e.emit("\u6587\u6863\u5DF2\u6062\u590D"),0}async function Xm(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 W(t,"revisions.list",{documentId:n,sort:"createdAt",direction:"DESC"});return We(e,(i.data||[]).map(o=>({revisionId:o.id,name:o.name||"",created_at:o.createdAt})),"\u6682\u65E0\u5386\u53F2\u7248\u672C"),0}async function Qm(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 W(t,"revisions.info",{id:s})).data;return Ds(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(`
60
- ${n.text}`),0}async function eh(t){let e=await W(t,"documents.drafts",{sort:"updatedAt",direction:"DESC"});return We(t.ctx,(e.data||[]).map(mr),"\u6682\u65E0\u8349\u7A3F"),0}async function th(t){let e=await W(t,"documents.viewed",{sort:"updatedAt",direction:"DESC"});return We(t.ctx,(e.data||[]).map(mr),"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55"),0}async function sh(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(" "),o=(await W(t,"documents.search",{query:n,snippetMinWords:20,snippetMaxWords:30})).data||[];return We(e,o.map(a=>mr(a.document||a)),`\u6CA1\u6709\u627E\u5230\u4E0E "${n}" \u76F8\u5173\u7684\u6587\u6863`),0}async function rh(t){let{ctx:e}=t,s=await W(t,"stars.list",{}),r=s.data?.stars||[],n={};for(let i of s.data?.documents||[])n[i.id]=i;return We(e,r.map(i=>{let o=i.documentId?n[i.documentId]:null;return{starId:i.id,title:o?.title||i.collectionId||i.documentId||"",url:o?ss(o.urlId||o.id):i.collectionId?On(i.collectionId):i.documentId?ss(i.documentId):""}}),"\u6682\u65E0\u6536\u85CF"),0}async function nh(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 i=n.includes("--collection"),o=i?await s.toColUuid(r):await s.toDocUuid(r);return await W(t,"stars.create",i?{collectionId:o}:{documentId:o}),e.emit("\u5DF2\u6536\u85CF"),0}async function ih(t){let{ctx:e,arg:s}=t;return s?(await W(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 oh(t){let{ctx:e,resolver:s,arg:r}=t,n=r?{collectionId:await s.toColUuid(r)}:{},i=await W(t,"pins.list",n),o=i.data?.pins||[],a={};for(let c of i.data?.documents||[])a[c.id]=c;return We(e,o.map(c=>{let l=c.documentId?a[c.documentId]:null;return{pinId:c.id,title:l?.title||c.documentId,url:ss(l?.urlId||c.documentId)}}),"\u6682\u65E0\u7F6E\u9876"),0}async function ah(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> [--collection <\u96C6\u5408>]"),1;let o={documentId:await s.toDocUuid(r)},a=ie(n,"--collection")||Dn(n)[1];a&&(o.collectionId=await s.toColUuid(a));let c=await W(t,"pins.create",o);return e.emit(`\u5DF2\u7F6E\u9876: ${c.data.id}`),0}async function ch(t){let{ctx:e,arg:s}=t;return s?(await W(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 lh(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 W(t,"comments.list",{documentId:n,sort:"createdAt",direction:"ASC"})).data||[];return o.length?(e.isJson?We(e,o.map(a=>({id:a.id,author:a.createdBy?.name||"?",content:Ia(a.data)}))):e.emit(o.map(a=>` [${a.id}] ${a.createdBy?.name||"?"}: ${Ia(a.data)}`).join(`
61
- `)),0):(e.emit("\u6682\u65E0\u8BC4\u8BBA"),0)}async function uh(t){let{ctx:e,resolver:s,arg:r,args:n}=t,i=n.slice(1).join(" ");if(!r||!i)return e.fail("\u7528\u6CD5: coder wiki comment <\u6587\u6863> <\u5185\u5BB9>","\u53EF\u4F20 UUID / urlId / URL"),1;let o=await s.toDocUuid(r),a=await W(t,"comments.create",{documentId:o,text:i});return e.emit(`\u8BC4\u8BBA\u5DF2\u53D1\u5E03: ${a.data.id}`),0}function Ia(t){return t?.content?t.content.flatMap(e=>e.content||[]).filter(e=>e.type==="text").map(e=>e.text).join(""):""}function dh(t){let{ctx:e,arg:s,args:r}=t,n=ie(r,"--query")||s||"",i=n?Sa.filter(o=>o.name.toLowerCase().includes(n.toLowerCase())||o.keywords.toLowerCase().includes(n.toLowerCase())):Sa;return i.length?(We(e,i.map(o=>({icon:o.name,keywords:o.keywords}))),e.isJson||e.emit(`
62
- \u7528\u6CD5: coder wiki create-collection "<\u540D\u79F0>" --icon ${i[0].name}
63
- \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 ph(t){let{ctx:e,http:s,resolver:r,arg:n,args:i}=t,o=i[1];if(!n||!o)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=Os.resolve(o);if(!fr.existsSync(c))return e.fail(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E"),1;let l=fr.readFileSync(c),u=Os.basename(c),d=mh(c),p=await W(t,"attachments.create",{name:u,documentId:a,size:l.length,contentType:d,preset:"documentAttachment"}),{uploadUrl:f,form:g,attachment:_}=p.data,y=await hh(f,g,l,u,d);return y.status>=300?(e.fail(`\u4E0A\u4F20\u5931\u8D25 (HTTP ${y.status}): ${y.body.slice(0,200)}`,"\u68C0\u67E5\u7F51\u7EDC\u6216\u6587\u4EF6\u5927\u5C0F"),1):(Aa(e,_,d),0)}async function fh(t){let{ctx:e,resolver:s,arg:r,args:n}=t,i=n[1];if(!r||!i)return e.fail("\u7528\u6CD5: coder wiki upload-url <\u6587\u6863> <url>","\u53EF\u4F20 UUID / urlId / URL"),1;let o=await s.toDocUuid(r),a=await W(t,"attachments.createFromUrl",{url:i,documentId:o,preset:"documentAttachment"});return Aa(e,a.data,a.data.contentType),0}function Aa(t,e,s){let r=(s||"").startsWith("image/")?`![${e.name}](${e.url})`:`[${e.name}](${e.url})`;Ds(t,[["filename",e.name,"\u9644\u4EF6\u5DF2\u4E0A\u4F20"],["id",e.id],["url",e.url],["markdown",r]])}function mh(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 hh(t,e,s,r,n){return new Promise((i,o)=>{let a=`----FormBoundary${Math.random().toString(36).slice(2)}${Date.now()}`,c=[];for(let[_,y]of Object.entries(e))c.push(Buffer.from(`--${a}\r
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=St.replace(/\/$/,"");console.log(`\u{1F50D} \u6B63\u5728\u4ECE ${St} \u67E5\u627E skill...`);let i;try{let u=await this.fetchWithAuth(`${r}/.well-known/agent-skills/index.json?skill=${encodeURIComponent(e)}`,s);if(u.status===404)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;if(u.status!==200)return console.error(`\u274C \u65E0\u6CD5\u83B7\u53D6 skill \u4FE1\u606F (HTTP ${u.status})`),1;i=JSON.parse(u.body)}catch(u){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${u.message}`),1}let o=(i.skills||[])[0];if(!o)return console.error(`\u274C \u672A\u627E\u5230 skill: ${e}`),1;let n=Array.from(new Set(["SKILL.md",...o.files||[]])),a=`${r}/.well-known/agent-skills/${o.name}`,c={};for(let u of n)try{let p=await this.fetchWithAuth(`${a}/${u}`,s);if(p.status!==200){console.warn(`\u26A0\uFE0F \u8DF3\u8FC7 ${u} (HTTP ${p.status})`);continue}c[u]=p.body}catch(p){console.warn(`\u26A0\uFE0F \u4E0B\u8F7D ${u} \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 u of this.getSkillDirs()){let p=ke.join(u,o.name);ie.mkdirSync(p,{recursive:!0});try{for(let[m,y]of Object.entries(c)){let _=ke.join(p,m);ie.mkdirSync(ke.dirname(_),{recursive:!0}),ie.writeFileSync(_,y,"utf8")}ie.writeFileSync(ke.join(p,".skill-meta.json"),JSON.stringify(l,null,2),"utf8")}catch(m){if(m.code==="EACCES")return"EACCES";throw m}}let d=o.version?` (v${o.version})`:"";return console.log(`\u2705 ${o.name}${d} \u5B89\u88C5\u5B8C\u6210`),this.cleanLegacySkill(o.name),0}cleanLegacySkill(e){let s=lr.homedir(),r=[".claude",".codex",".gemini"].map(i=>ke.join(s,i,"skills",e));for(let i of r)if(ie.existsSync(i))try{ie.rmSync(i,{recursive:!0,force:!0})}catch{}}getInstalledSkills(){let e=[];for(let s of this.getSkillDirs())if(ie.existsSync(s))for(let r of ie.readdirSync(s,{withFileTypes:!0})){if(!r.isDirectory()||r.name.startsWith("."))continue;let i=ke.join(s,r.name),o=ke.join(i,".skill-meta.json"),n=null;if(ie.existsSync(o))try{n=JSON.parse(ie.readFileSync(o,"utf8"))}catch{}e.push({name:r.name,dir:i,meta:n})}return e}async checkUpdates(e){let s=this.getInstalledSkills();if(s.length===0)return[];let r=St.replace(/\/$/,""),i=[];for(let o of s){let n=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!==n&&i.push({name:o.name,localVersion:n,remoteVersion:l.version})}catch{}}return i}notifyAndRefreshUpdates(e){let s=ke.join(lr.homedir(),".agents","skills",".update-cache.json");if(!yf())try{if(ie.existsSync(s)){let n=JSON.parse(ie.readFileSync(s,"utf8"));if(Array.isArray(n.updates)&&n.updates.length>0){let c=n.updates.length,l;if(c<=3)l=n.updates.map(d=>`${d.name} (${d.localVersion} \u2192 ${d.remoteVersion})`).join(", ");else{let d=n.updates[0];l=`${d.name} (${d.localVersion} \u2192 ${d.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,i=0;try{i=JSON.parse(ie.readFileSync(s,"utf8")).checkedAt||0}catch{}!this.getInstalledSkills().some(n=>!n.meta?.version)&&Date.now()-i<r||setImmediate(async()=>{try{let n=await this.checkUpdates(e);ie.mkdirSync(ke.dirname(s),{recursive:!0}),ie.writeFileSync(s,JSON.stringify({checkedAt:Date.now(),updates:n},null,2),"utf8")}catch{}})}remove(e){let s=!1;for(let r of this.getSkillDirs()){let i=ke.join(r,e);ie.existsSync(i)&&(ie.rmSync(i,{recursive:!0,force:!0}),console.log(` \u{1F5D1}\uFE0F ${i}`),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=`${St}/api/web/skills?q=${encodeURIComponent(e)}&sort=relevance&page=0&size=12`;return new Promise(r=>{Ii.get(s,i=>{let o="";i.on("data",n=>{o+=n}),i.on("end",()=>{try{let n=JSON.parse(o);if(n.code!==0)return console.error(`\u274C \u67E5\u8BE2\u5931\u8D25: ${n.msg}`),r(1);let a=n.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 ${n.data.total} \u4E2A\u7ED3\u679C:
44
+ `);for(let c of a)console.log(` ${c.slug.padEnd(20)} ${c.summary}`);r(0)}catch(n){console.error(`\u274C \u89E3\u6790\u54CD\u5E94\u5931\u8D25: ${n.message}`),r(1)}})}).on("error",i=>{console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${i.message}`),r(1)})})}async publish(e,s){let{execSync:r}=require("child_process"),i=require("os"),o=null,n="PUBLIC",a=null,c=null,l=null,d=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")n=e[++w];else if(e[w]==="--meta-data"){let b=e[++w];try{JSON.parse(b)}catch(v){return console.error(`\u274C --meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON\uFF1A${v.message}`),1}a=b}else if(!e[w].startsWith("-")){let b=e[w];ie.existsSync(b)&&ie.statSync(b).isDirectory()?d=b:c=b}let u=this._resolveNamespace(o),p=u==="global";if(!s)return console.error("\u274C \u7F3A\u5C11 API Key\uFF0C\u8BF7\u5148\u767B\u5F55: coder auth login"),1;p||(n="NAMESPACE_ONLY");let m=["PUBLIC","NAMESPACE_ONLY","PRIVATE"];if(!m.includes(n))return console.error(`\u274C visibility \u5FC5\u987B\u662F: ${m.join(", ")}`),1;if(c){if(!ie.existsSync(c))return console.error(`\u274C \u6587\u4EF6\u4E0D\u5B58\u5728: ${c}`),1}else{let w=d?ke.resolve(d):process.cwd();l=ke.join(i.tmpdir(),`skill-pub-${Date.now()}.zip`),console.log(`\u{1F4E6} \u6B63\u5728\u6253\u5305 ${w}...`);try{ie.existsSync(ke.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(b){return console.error(`\u274C \u6253\u5305\u5931\u8D25: ${b.message}`),1}c=l}let y=`${St}/api/v1/skills/${encodeURIComponent(u)}/publish?visibility=${encodeURIComponent(n)}`,_=s;console.log(`\u{1F680} \u6B63\u5728\u53D1\u5E03\u5230 ${St}`),console.log(` team: ${u}`),console.log(` visibility: ${n}`);try{let w=a?` -F "meta_data=${a.replace(/"/g,'\\"')}"`:"",b=`curl -s -X POST "${y}" -H "Authorization: Bearer ${_}" -F "file=@${c}"${w}`,v=r(b,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),G=JSON.parse(v);if(G.code===0){let D=G.data,B=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(` ${B}`),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: ${G.msg||JSON.stringify(G)}`),1}catch(w){let b=w.stdout;if(b)try{let v=JSON.parse(b);return console.error(`
47
+ \u274C \u53D1\u5E03\u5931\u8D25: ${v.msg||b}`),1}catch{}return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${w.message}`),1}finally{l&&ie.existsSync(l)&&ie.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,i;if(e.includes("--")){let n=e.split("--");if(n.length!==2||!n[0]||!n[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(n[0]),i=n[1]}else r=this._resolveNamespace(null),i=e;let o=`/api/v1/skills/${encodeURIComponent(r)}/${encodeURIComponent(i)}`;console.log(`\u{1F5D1}\uFE0F \u6B63\u5728\u4E0B\u67B6 ${r}--${i}`);try{let n=await this._request("DELETE",o,s),a=JSON.parse(n.body);return a.code===0?(console.log(`\u2705 \u5DF2\u4E0B\u67B6 ${r}--${i}`),0):(console.error(`\u274C \u4E0B\u67B6\u5931\u8D25: ${a.msg||JSON.stringify(a)}`),1)}catch(n){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${n.message}`),1}}async listTeamSkills(e,s){let r=0,i=20,o=null;for(let d=0;d<e.length;d++)(e[d]==="--page"||e[d]==="-p")&&e[d+1]?r=parseInt(e[++d],10):(e[d]==="--size"||e[d]==="-s")&&e[d+1]?i=parseInt(e[++d],10):(e[d]==="--team"||e[d]==="-t")&&e[d+1]&&(o=e[++d]);let n=this._resolveNamespace(o),a=n==="global",c=a?"":`&namespace=${encodeURIComponent(n)}`,l=`/api/web/skills?sort=newest&page=${r}&size=${i}${c}`;try{let d=await this._request("GET",l,s),u=JSON.parse(d.body);if(u.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${u.msg}`),1;let p=u.data?.items||[],m=u.data?.total||0,y=a?"\u516C\u5171":`\u56E2\u961F ${n}`;if(p.length===0)return console.log(`${y} \u4E0B\u6682\u65E0 skill`),0;console.log(`${y} \u5171 ${m} \u4E2A skill\uFF08\u7B2C ${r+1} \u9875\uFF09:
48
+ `);for(let _ of p){let w=`${_.slug}`.padEnd(28),b=`\u2B50 ${_.starCount??0}`.padEnd(8),v=`\u2193 ${_.downloadCount??0}`.padEnd(10);console.log(` ${w} ${b} ${v} ${_.summary||""}`)}return(r+1)*i<m&&console.log(`
49
+ \u4E0B\u4E00\u9875: coder skills list --page ${r+1}`),0}catch(d){return console.error(`\u274C \u8BF7\u6C42\u5931\u8D25: ${d.message}`),1}}async listMySkills(e,s){let r=0,i=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]&&(i=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=${i}`,s),n=JSON.parse(o.body);if(n.code!==0)return console.error(`\u274C \u83B7\u53D6\u5931\u8D25: ${n.msg}`),1;let a=n.data?.items||[],c=n.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 d=`${l.namespace==="global"?"":"--"}${l.slug}`.padEnd(36),u=`\u2B50 ${l.starCount??0}`.padEnd(8),p=`\u2193 ${l.downloadCount??0}`.padEnd(10);console.log(` ${d} ${u} ${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
+ `))}};Ai.exports=Ei;Ai.exports.SKILLS_SUBCOMMANDS=_f});var Ci=I((hx,ua)=>{var wf="https://makecoder.com/wiki",na=/^(?:[0-9a-zA-Z-_~]*-)?([a-zA-Z0-9]{10,15})$/,aa=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ca(t){return typeof t=="string"&&aa.test(t)}function la(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 da(t){let e=la(t);if(!e)return null;if(ca(e))return{kind:"uuid",value:e};let s=e.match(na);return s?{kind:"urlId",value:s[1]}:null}function bf(t){let e=da(t);return e&&e.kind==="urlId"?e.value:null}ua.exports={WIKI_BASE:wf,SLUG_URL_REGEX:na,UUID_REGEX:aa,isUuid:ca,lastPathSegment:la,classifyId:da,extractUrlId:bf}});var pr=I((gx,ma)=>{var kf=require("https"),{WIKI_BASE:ur}=Ci(),pa=`${ur}/api`,Sf=t=>`${ur}/doc/${t}`,xf=t=>`${ur}/collection/${t}`,Ui=class{constructor(e,s=null){this.token=e,this.teamId=s||null}post(e,s){return new Promise((r,i)=>{let o=JSON.stringify(s||{}),n=new URL(`${pa}/${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:n.hostname,port:n.port||443,path:n.pathname,method:"POST",headers:a},l=>{let d="";l.on("data",u=>d+=u),l.on("end",()=>r({status:l.statusCode,body:d}))});c.on("error",i),c.write(o),c.end()})}async postJson(e,s,{allowNoData:r=!1}={}){let i=await this.post(e,s),o=$i(i.body);return{ok:i.status<400&&o?.ok!==!1&&(r||o?.data!==void 0),status:i.status,json:o,body:i.body}}};function $i(t){try{return JSON.parse(t)}catch{return null}}function If(t){let e=$i(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}ma.exports={WikiHttp:Ui,WIKI_BASE:ur,WIKI_API_BASE:pa,docUrl:Sf,colUrl:xf,parseJson:$i,errorMessage:If}});var ga=I((yx,ha)=>{var{WIKI_BASE:Ef,docUrl:Af}=pr(),Ti=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function Cf(t,e,s={}){let r=typeof s=="string"?{empty:s}:s,{labels:i=fa,empty:o="\uFF08\u7A7A\uFF09"}=r;if(!e||!e.length){t.emit(o);return}if(t.isJson){t.emit(e);return}let n=Object.keys(e[0]),c=[`| ${n.map(l=>i[l]||l).map(Ti).join(" | ")} |`,`| ${n.map(()=>"---").join(" | ")} |`,...e.map(l=>`| ${n.map(d=>Ti(l[d])).join(" | ")} |`)];t.emit(c.join(`
52
+ `))}function Uf(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=[],i=(o,n,a)=>{o.forEach((c,l)=>{let d=l===o.length-1,u=d?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",p=c.url?`${Ef}${c.url}`:Af(c.id);r.push(`${n}${u}${c.title||c.id} ${p}`),c.children?.length&&a+1<s&&i(c.children,n+(d?" ":"\u2502 "),a+1)})};i(e,"",0),t.emit(r.join(`
53
+ `))}function $f(t,e,s=null){if(t.isJson){let r={};for(let[i,o]of e)r[i]=o;s&&typeof s=="object"&&Object.assign(r,s),t.emit(r);return}t.emit(e.map(([r,i,o])=>`${o||r}: ${i??""}`).join(`
54
+ `))}var fa={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"};ha.exports={emitTable:Cf,emitTree:Uf,emitDetails:$f,escCell:Ti,LABELS:fa}});var _a=I((_x,ya)=>{var Tf=[{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"}];ya.exports={ICON_LIST:Tf}});var hr=I((wx,Ca)=>{var fr=require("fs"),vs=require("path"),{docUrl:ss,colUrl:mr,errorMessage:Ea}=pr(),{emitTable:z,emitTree:wa,emitDetails:je,LABELS:J}=ga(),{ICON_LIST:ba}=_a(),f=(t,e)=>{let s=`${e}=`;for(let r=0;r<t.length;r++){if(t[r]===e)return t[r+1];if(t[r].startsWith(s))return t[r].slice(s.length)}},pe=(t,...e)=>t.some(s=>e.includes(s)||e.some(r=>s.startsWith(`${r}=`)));async function E(t,e,s,{allowNoData:r=!1}={}){let i=await t.http.postJson(e,s,{allowNoData:r});if(!i.ok){t.ctx.fail(Ea(i.body),void 0);let o=new Error("__handled__");throw o.handled=!0,o}return i.json}function S(t,e,s){t.ctx.fail(e,s);let r=new Error("__handled__");throw r.handled=!0,r}var ts=t=>({id:t.id,title:t.title,url:ss(t.urlId||t.id)}),Ce=t=>t?.data||[],Ds=t=>t?.data?.memberships||t?.data?.groupMemberships||t?.data||[];function ka(t,e){let s=vs.resolve(e);fr.existsSync(s)||S(t,`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E");let r=fr.readFileSync(s,"utf8"),i=r.match(/^#\s+(.+)/m);return i||S(t,"\u6587\u4EF6\u7F3A\u5C11 H1 \u6807\u9898\uFF08# \u6807\u9898\uFF09","\u5728 Markdown \u9876\u90E8\u52A0\u4E00\u884C # \u6807\u9898"),{title:i[1].trim(),text:r.replace(/^#\s+.+\n?/,"").trimStart()}}function vf(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 Df(t,e,s,r,i){return new Promise((o,n)=>{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
64
55
  Content-Disposition: form-data; name="${_}"\r
65
56
  \r
66
- ${y}\r
57
+ ${w}\r
67
58
  `));let l=Buffer.from(`--${a}\r
68
59
  Content-Disposition: form-data; name="file"; filename="${r}"\r
69
- Content-Type: ${n}\r
60
+ Content-Type: ${i}\r
70
61
  \r
71
- `),u=Buffer.from(`\r
62
+ `),d=Buffer.from(`\r
72
63
  --${a}--\r
73
- `),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 y="";_.on("data",w=>y+=w),_.on("end",()=>i({status:_.statusCode,body:y}))});g.on("error",o),g.write(d),g.end()})}Ta.exports={list:jm,createCollection:qm,updateCollection:Mm,deleteCollection:Gm,archiveCollection:Fm,restoreCollection:Bm,get:Zm,publish:Wm,update:Vm,delete:Km,move:zm,archive:Hm,restore:Ym,revisions:Xm,revision:Qm,drafts:eh,recent:th,search:sh,stars:rh,star:nh,unstar:ih,pins:oh,pin:ah,unpin:ch,comments:lh,comment:uh,icons:dh,upload:ph,uploadUrl:fh}});var Fa=x((MS,Ga)=>{function va(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}var Ua=["agent","auth","pub","update","wiki","team","skills","claude","codex","gemini"],Oa=["--format","--apikey","--help","--version","--install-completion","--show-completion"],Pn={pub:["--name","--meta-data","--allow-clone"]},Da=["login","logout","status"],Ra=["list","current","use","info"],Nn=["members","groups"];function La(){return or().AGENT_NAMES}function Pa(t){let e=bn();return e[t]?Object.keys(e[t]):[]}function Na(){return dr().SKILLS_SUBCOMMANDS}function ja(){let{COMMANDS:t}=Un(),e=Ln(),s=Object.keys(t),r=Object.keys(e).filter(n=>typeof e[n]=="function").map(va);return Array.from(new Set([...r,...s])).sort()}function qa(t){let e=t.length?t[t.length-1]:"",s=t.slice(0,-1),r=s[0];if(e.startsWith("-")){let i=[...Oa];return r&&Pn[r]&&i.push(...Pn[r]),i}if(s[s.length-1]==="--format")return["text","json"];if(s.length===0)return Ua;switch(r){case"agent":return s.length===1?La():[];case"auth":return s.length===1?Da:[];case"skills":return s.length===1?Na():[];case"wiki":return s.length===1?ja():[];case"team":return s.length===1?[...Ra,...Nn]:s.length===2&&Nn.includes(s[1])?Pa(s[1]):[];default:return[]}}function Ma(t){let e=t.length?t[t.length-1]:"",s=qa(t),r=new Set,n=[];for(let i of s)i.startsWith(e)&&!r.has(i)&&(r.add(i),n.push(i));return n}function gh(t){let e=t.indexOf("--"),s=e===-1?t:t.slice(e+1),r=Ma(s);return r.length&&process.stdout.write(r.join(`
64
+ `),u=Buffer.concat([...c,l,s,d]),p=new URL(t),y=(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":u.length}},_=>{let w="";_.on("data",b=>w+=b),_.on("end",()=>o({status:_.statusCode,body:w}))});y.on("error",n),y.write(u),y.end()})}function Sa(t,e,s){let r=(s||"").startsWith("image/")?`![${e.name}](${e.url})`:`[${e.name}](${e.url})`;je(t,[["filename",e.name,"\u9644\u4EF6\u5DF2\u4E0A\u4F20"],["id",e.id],["url",e.url],["markdown",r]])}async function xa(t,e){let{ctx:s,resolver:r,args:i}=t,o=f(i,"--after");if(pe(i,"--after")){o||S(t,"\u8BF7\u6307\u5B9A --after \u7684\u6587\u6863","\u4F20 UUID / urlId / URL");let n=await r.toDocUuid(o),a=await E(t,"collections.documents",{id:e}),c=Aa(a.data,n);return c||S(t,`\u96C6\u5408\u4E2D\u672A\u627E\u5230\u6587\u6863 ${o}`,"\u786E\u8BA4\u8BE5\u6587\u6863\u5C5E\u4E8E\u6B64\u96C6\u5408"),{ok:!0,index:c.index+1,parentDocumentId:c.parentDocumentId}}if(pe(i,"--index")){let n=parseInt(f(i,"--index"),10);return(isNaN(n)||n<0)&&S(t,"--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570","\u4F8B\u5982 --index 3"),{ok:!0,index:n}}return{ok:!0}}function Aa(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 i=Aa(t[r].children,e,t[r].id);if(i)return i}}return null}var Of={async list(t){let{ctx:e,http:s}=t,r=await E(t,"collections.list",{});return z(e,(r.data||[]).filter(i=>!i?.isShared).map(i=>({id:i.id,name:i.name,description:i.description||"",url:mr(i.urlId||i.id)})),{labels:J,empty:"\u6682\u65E0\u96C6\u5408"}),0},async info(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>","\u4F20 UUID / urlId / URL");let o=await s.toColUuid(i),a=(await E(t,"collections.info",{id:o})).data;return je(e,[["id",a.id],["name",a.name,"\u540D\u79F0"],["description",a.description||"","\u63CF\u8FF0"],["permission",a.permission||"null","\u6743\u9650"],["url",mr(a.urlId||a.id)]]),0},async create(t){let{ctx:e,args:s}=t,r=f(s,"--name");r||S(t,"\u8BF7\u6307\u5B9A --name <\u540D\u79F0>");let i=f(s,"--description")||"",o=f(s,"--permission")||"read_write",a={name:r,description:i,sharing:!0,permission:o==="null"||o==="none"?null:o};f(s,"--icon")&&(a.icon=f(s,"--icon")),f(s,"--color")&&(a.color=f(s,"--color"));let c=f(s,"--sort-field"),l=f(s,"--sort-direction");(c||l)&&(a.sort={field:c||"index",direction:l||"asc"}),f(s,"--index")&&(a.index=f(s,"--index"));let d=await E(t,"collections.create",a);return je(e,[["collection",`${d.data.id} \u2014 ${d.data.name}`,"\u96C6\u5408\u5DF2\u521B\u5EFA"],["url",mr(d.data.urlId||d.data.id)]]),0},async update(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let n={id:await s.toColUuid(i)};if(f(r,"--name")&&(n.name=f(r,"--name")),f(r,"--description")&&(n.description=f(r,"--description")),pe(r,"--permission")){let c=f(r,"--permission");n.permission=c==="null"||c==="none"?null:c}f(r,"--color")&&(n.color=f(r,"--color")),pe(r,"--sharing")&&(n.sharing=f(r,"--sharing")==="true"),Object.keys(n).length<=1&&S(t,"\u8BF7\u81F3\u5C11\u6307\u5B9A\u4E00\u4E2A\u8981\u66F4\u65B0\u7684\u5B57\u6BB5","--name --description --permission --color --sharing");let a=await E(t,"collections.update",n);return e.emit(`\u96C6\u5408\u5DF2\u66F4\u65B0: ${a.data.id} \u2014 ${a.data.name}`),0},async delete(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i);return await E(t,"collections.delete",{id:o},{allowNoData:!0}),e.emit("\u96C6\u5408\u5DF2\u5220\u9664"),0},async archive(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i);return await E(t,"collections.archive",{id:o}),e.emit("\u96C6\u5408\u5DF2\u5F52\u6863"),0},async restore(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i);return await E(t,"collections.restore",{id:o}),e.emit("\u96C6\u5408\u5DF2\u6062\u590D"),0},async move(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i),n=parseInt(f(r,"--index"),10);return(isNaN(n)||n<0)&&S(t,"\u8BF7\u6307\u5B9A --index <n>\uFF08\u975E\u8D1F\u6574\u6570\uFF09"),await E(t,"collections.move",{id:o,index:n}),e.emit("\u96C6\u5408\u5DF2\u79FB\u52A8"),0},async export(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let n={id:await s.toColUuid(i)},a=f(r,"--export-format");a&&(n.format=a);let c=await E(t,"collections.export",n);return e.emit(`\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${c.data?.id||""}`),0},async"export-all"(t){let{ctx:e,args:s}=t,r={},i=f(s,"--export-format");i&&(r.format=i);let o=await E(t,"collections.export_all",r);return e.emit(`\u5168\u91CF\u5BFC\u51FA\u4EFB\u52A1\u5DF2\u521B\u5EFA: ${o.data?.id||""}`),0},async members(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let n={id:await s.toColUuid(i)};f(r,"--query")&&(n.query=f(r,"--query")),f(r,"--permission")&&(n.permission=f(r,"--permission"));let a=await E(t,"collections.memberships",n);return z(e,(Ds(a)||[]).map(c=>({userId:c.userId||"",name:c.user?.name||"",permission:c.permission||""})),{labels:J,empty:"\u6682\u65E0\u6210\u5458"}),0},async"add-user"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--user");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>"),o||S(t,"\u8BF7\u6307\u5B9A --user <userId>");let a={id:await s.toColUuid(i),userId:o};return f(r,"--permission")&&(a.permission=f(r,"--permission")),await E(t,"collections.add_user",a),e.emit("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u96C6\u5408"),0},async"remove-user"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--user");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>"),o||S(t,"\u8BF7\u6307\u5B9A --user <userId>");let n=await s.toColUuid(i);return await E(t,"collections.remove_user",{id:n,userId:o},{allowNoData:!0}),e.emit("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7528\u6237"),0},async"add-group"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--group");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>"),o||S(t,"\u8BF7\u6307\u5B9A --group <groupId>");let a={id:await s.toColUuid(i),groupId:o};return f(r,"--permission")&&(a.permission=f(r,"--permission")),await E(t,"collections.add_group",a),e.emit("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u96C6\u5408"),0},async"remove-group"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--group");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>"),o||S(t,"\u8BF7\u6307\u5B9A --group <groupId>");let n=await s.toColUuid(i);return await E(t,"collections.remove_group",{id:n,groupId:o},{allowNoData:!0}),e.emit("\u5DF2\u4ECE\u96C6\u5408\u79FB\u9664\u7FA4\u7EC4"),0},async"group-members"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i),n=await E(t,"collections.group_memberships",{id:o});return z(e,(Ds(n)||[]).map(a=>({groupId:a.groupId||"",name:a.group?.name||"",permission:a.permission||""})),{labels:J,empty:"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458"}),0}},Lf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>","\u4E0D\u5E26\u96C6\u5408 id \u8BF7\u7528 wiki document drafted / wiki document recent");let o=await s.toColUuid(i),n=await E(t,"documents.list",{collectionId:o,sort:"updatedAt",direction:"DESC"});return z(e,(n.data||[]).map(ts),{labels:J,empty:"\u6682\u65E0\u6587\u6863"}),0},async tree(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i),n=f(r,"--depth"),a=n!==void 0?parseInt(n,10):1,c=await E(t,"collections.documents",{id:o});return wa(e,c.data||[],isNaN(a)||a===-1?1/0:a),0},async get(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / \u6D4F\u89C8\u5668 URL");let o=await s.toDocUuid(i),a=(await E(t,"documents.info",{id:o})).data;return je(e,[["title",a.title,"\u6807\u9898"],["id",a.id],["collection",a.collectionId,"\u96C6\u5408"],["updated_at",a.updatedAt,"\u66F4\u65B0"],["url",ss(a.urlId||a.id)]]),!e.isJson&&a.text&&e.emit(`
65
+ ${a.text}`),0},async publish(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>");let o=await s.toColUuid(i),n,a,c=!1,l=f(r,"--file");l?(c=vs.extname(l).toLowerCase()===".mdx",{title:n,text:a}=ka(t,l)):(n=f(r,"--title"),a=f(r,"--body")||"",n||S(t,"\u8BF7\u6307\u5B9A --title <\u6807\u9898> \u6216 --file <path>"));let d;f(r,"--parent")&&(d=await s.toDocUuid(f(r,"--parent")));let u=await xa(t,o),p=u.index;u.parentDocumentId&&!d&&(d=u.parentDocumentId);let m={collectionId:o,title:n,text:"",publish:!0};d&&(m.parentDocumentId=d),c&&(m.format="mdx");let _=(await E(t,"documents.create",m)).data.id,w={id:_,title:n,text:a,publish:!0};c&&(w.format="mdx");let b=await E(t,"documents.update",w);if(p!==void 0){let v={id:_,collectionId:o,index:p};d&&(v.parentDocumentId=d),await E(t,"documents.move",v)}return je(e,[["title",b.data.title,"\u6587\u6863\u5DF2\u53D1\u5E03"],["id",_],["url",ss(b.data.urlId||_)]]),0},async update(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n,a,c=!1,l=f(r,"--file");l?(c=vs.extname(l).toLowerCase()===".mdx",{title:n,text:a}=ka(t,l)):(n=f(r,"--title"),a=f(r,"--body"),n||S(t,"\u8BF7\u6307\u5B9A --title <\u6807\u9898> \u6216 --file <path>"));let d={id:o,title:n,publish:!0};a&&(d.text=a),c&&(d.format="mdx");let u=await E(t,"documents.update",d);return e.emit(`\u6587\u6863\u5DF2\u66F4\u65B0: ${u.data.title}`),0},async delete(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=pe(r,"--permanent");return await E(t,"documents.delete",{id:o,...n?{permanent:!0}:{}},{allowNoData:!0}),e.emit(`\u6587\u6863\u5DF2${n?"\u6C38\u4E45":""}\u5220\u9664`),0},async move(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>"),pe(r,"--after")&&pe(r,"--index")&&S(t,"--after \u548C --index \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--after \u5DF2\u81EA\u52A8\u786E\u5B9A\u4F4D\u7F6E\uFF0C\u53BB\u6389 --index"),pe(r,"--after")&&pe(r,"--parent")&&S(t,"--after \u548C --parent \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--after \u4F1A\u81EA\u52A8\u7EE7\u627F\u951A\u70B9\u7684\u7236\u7EA7");let o=await s.toDocUuid(i),n;f(r,"--collection")?n=await s.toColUuid(f(r,"--collection")):n=(await E(t,"documents.info",{id:o})).data.collectionId;let a;f(r,"--parent")&&(a=await s.toDocUuid(f(r,"--parent")));let c;if(pe(r,"--after")){let d=await xa(t,n);c=d.index,a=d.parentDocumentId}else if(pe(r,"--index")){let d=parseInt(f(r,"--index"),10);(isNaN(d)||d<0)&&S(t,"--index \u9700\u4E3A\u975E\u8D1F\u6574\u6570"),f(r,"--parent")||(await E(t,"documents.info",{id:o})).data.parentDocumentId&&S(t,"--index \u5355\u72EC\u4F7F\u7528\u4F1A\u628A\u6587\u6863\u79FB\u5230\u96C6\u5408\u6839\uFF08\u8BE5\u6587\u6863\u5F53\u524D\u5728\u5B50\u76EE\u5F55\u4E2D\uFF09","\u7528 --parent <\u7236\u6587\u6863> --index <n> \u5728\u5B50\u76EE\u5F55\u5185\u6392\u5E8F\uFF0C\u6216 --after <\u951A\u70B9> \u81EA\u52A8\u7EE7\u627F\u7236\u7EA7"),c=d}else c=0;let l={id:o,collectionId:n,index:c};return a!==void 0&&(l.parentDocumentId=a),await E(t,"documents.move",l),e.emit("\u6587\u6863\u5DF2\u79FB\u52A8"),0},async archive(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i);return await E(t,"documents.archive",{id:o}),e.emit("\u6587\u6863\u5DF2\u5F52\u6863"),0},async restore(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let n={id:await s.toDocUuid(i)};return f(r,"--revision")&&(n.revisionId=f(r,"--revision")),f(r,"--collection")&&(n.collectionId=await s.toColUuid(f(r,"--collection"))),await E(t,"documents.restore",n),e.emit("\u6587\u6863\u5DF2\u6062\u590D"),0},async archived(t){let{ctx:e,resolver:s,args:r}=t,i={};f(r,"--collection")&&(i.collectionId=await s.toColUuid(f(r,"--collection"))),f(r,"--sort")&&(i.sort=f(r,"--sort")),f(r,"--direction")&&(i.direction=f(r,"--direction"));let o=await E(t,"documents.archived",i);return z(e,(Ce(o)||[]).map(ts),{labels:J,empty:"\u6682\u65E0\u5DF2\u5F52\u6863\u6587\u6863"}),0},async deleted(t){let{ctx:e,args:s}=t,r={};f(s,"--sort")&&(r.sort=f(s,"--sort")),f(s,"--direction")&&(r.direction=f(s,"--direction"));let i=await E(t,"documents.deleted",r);return z(e,(Ce(i)||[]).map(o=>({id:o.id,title:o.title,deleted_at:o.deletedAt||""})),{labels:J,empty:"\u6682\u65E0\u5DF2\u5220\u9664\u6587\u6863"}),0},async search(t){let{ctx:e,args:s}=t,r=f(s,"--query");r||S(t,"\u8BF7\u6307\u5B9A --query <\u5173\u952E\u8BCD>");let i=await E(t,"documents.search",{query:r,snippetMinWords:20,snippetMaxWords:30});return z(e,(i.data||[]).map(o=>ts(o.document||o)),{labels:J,empty:`\u6CA1\u6709\u627E\u5230\u4E0E "${r}" \u76F8\u5173\u7684\u6587\u6863`}),0},async"search-titles"(t){let{ctx:e,args:s}=t,r=f(s,"--query");r||S(t,"\u8BF7\u6307\u5B9A --query <\u5173\u952E\u8BCD>");let i=await E(t,"documents.search_titles",{query:r});return z(e,(Ce(i)||[]).map(ts),{labels:J,empty:"\u672A\u627E\u5230\u5339\u914D\u6807\u9898"}),0},async insights(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let n={id:await s.toDocUuid(i)};f(r,"--start-date")&&(n.startDate=f(r,"--start-date")),f(r,"--end-date")&&(n.endDate=f(r,"--end-date"));let a=await E(t,"documents.insights",n);return z(e,(Ce(a)||[]).map(c=>({userId:c.userId||"",name:c.user?.name||"",time:c.createdAt||""})),{labels:J,empty:"\u6682\u65E0\u8BBF\u95EE\u6570\u636E"}),0},async export(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await t.http.postJson("documents.export",{id:o,includeChildDocuments:pe(r,"--include-children")},{allowNoData:!1});if(!n.ok)return e.fail(Ea(n.body)),1;let a=n.json.data;return e.emit(typeof a=="string"?a:JSON.stringify(a)),0},async duplicate(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let n={id:await s.toDocUuid(i)};f(r,"--title")&&(n.title=f(r,"--title")),f(r,"--collection")&&(n.collectionId=await s.toColUuid(f(r,"--collection"))),f(r,"--parent")&&(n.parentDocumentId=await s.toDocUuid(f(r,"--parent"))),pe(r,"--recursive")&&(n.recursive=!0),pe(r,"--publish")&&(n.publish=!0);let c=((await E(t,"documents.duplicate",n)).data?.documents||[])[0];return e.emit(c?`\u6587\u6863\u5DF2\u590D\u5236: ${c.id} \u2014 ${c.title}`:"\u6587\u6863\u5DF2\u590D\u5236"),0},async unpublish(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i);return await E(t,"documents.unpublish",{id:o}),e.emit("\u6587\u6863\u5DF2\u53D6\u6D88\u53D1\u5E03"),0},async templatize(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let n={id:await s.toDocUuid(i),publish:!0};f(r,"--collection")&&(n.collectionId=await s.toColUuid(f(r,"--collection")));let a=await E(t,"documents.templatize",n);return e.emit(`\u5DF2\u8F6C\u4E3A\u6A21\u677F: ${a.data.id}`),0},async members(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"documents.memberships",{id:o});return z(e,(Ds(n)||[]).map(a=>({userId:a.userId||"",name:a.user?.name||"",permission:a.permission||""})),{labels:J,empty:"\u6682\u65E0\u6210\u5458"}),0},async"add-user"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--user");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>"),o||S(t,"\u8BF7\u6307\u5B9A --user <userId>");let a={id:await s.toDocUuid(i),userId:o};return f(r,"--permission")&&(a.permission=f(r,"--permission")),await E(t,"documents.add_user",a),e.emit("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u6587\u6863"),0},async"remove-user"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--user");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>"),o||S(t,"\u8BF7\u6307\u5B9A --user <userId>");let n=await s.toDocUuid(i);return await E(t,"documents.remove_user",{id:n,userId:o},{allowNoData:!0}),e.emit("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7528\u6237"),0},async"add-group"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--group");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>"),o||S(t,"\u8BF7\u6307\u5B9A --group <groupId>");let a={id:await s.toDocUuid(i),groupId:o};return f(r,"--permission")&&(a.permission=f(r,"--permission")),await E(t,"documents.add_group",a),e.emit("\u5DF2\u6DFB\u52A0\u7FA4\u7EC4\u5230\u6587\u6863"),0},async"remove-group"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--group");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>"),o||S(t,"\u8BF7\u6307\u5B9A --group <groupId>");let n=await s.toDocUuid(i);return await E(t,"documents.remove_group",{id:n,groupId:o},{allowNoData:!0}),e.emit("\u5DF2\u4ECE\u6587\u6863\u79FB\u9664\u7FA4\u7EC4"),0},async"group-members"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"documents.group_memberships",{id:o});return z(e,(Ds(n)||[]).map(a=>({groupId:a.groupId||"",name:a.group?.name||"",permission:a.permission||""})),{labels:J,empty:"\u6682\u65E0\u7FA4\u7EC4\u6210\u5458"}),0},async"sub-docs"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"documents.documents",{id:o});return wa(e,n.data?.children||[]),0},async"empty-trash"(t){let{ctx:e}=t;return await E(t,"documents.empty_trash",{},{allowNoData:!0}),e.emit("\u56DE\u6536\u7AD9\u5DF2\u6E05\u7A7A"),0},async drafts(t){let{ctx:e}=t,s=await E(t,"documents.drafts",{sort:"updatedAt",direction:"DESC"});return z(e,(s.data||[]).map(ts),{labels:J,empty:"\u6682\u65E0\u8349\u7A3F"}),0},async recent(t){let{ctx:e}=t,s=await E(t,"documents.viewed",{sort:"updatedAt",direction:"DESC"});return z(e,(s.data||[]).map(ts),{labels:J,empty:"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55"}),0}},Rf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / URL");let o=await s.toDocUuid(i),n=await E(t,"revisions.list",{documentId:o,sort:"createdAt",direction:"DESC"});return z(e,(n.data||[]).map(a=>({revisionId:a.id,name:a.name||"",created_at:a.createdAt})),{labels:J,empty:"\u6682\u65E0\u5386\u53F2\u7248\u672C"}),0},async get(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <\u7248\u672C>\uFF08UUID\uFF0C\u6765\u81EA revision list\uFF09","coder wiki revision list --id <\u6587\u6863>");let o=(await E(t,"revisions.info",{id:r})).data;return je(e,[["revisionId",o.id,"\u7248\u672C id"],["name",o.name||"","\u7248\u672C\u540D"],["documentId",o.documentId,"\u6587\u6863 id"],["created_at",o.createdAt,"\u521B\u5EFA\u65F6\u95F4"]]),!e.isJson&&o.text&&e.emit(`
66
+ ${o.text}`),0}},Pf={async list(t){let{ctx:e}=t,s=await E(t,"stars.list",{}),r=s.data?.stars||[],i={};for(let o of s.data?.documents||[])i[o.id]=o;return z(e,r.map(o=>{let n=o.documentId?i[o.documentId]:null;return{starId:o.id,title:n?.title||o.collectionId||o.documentId||"",url:n?ss(n.urlId||n.id):o.collectionId?mr(o.collectionId):o.documentId?ss(o.documentId):""}}),{labels:J,empty:"\u6682\u65E0\u6536\u85CF"}),0},async add(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--collection");!i&&!o&&S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863> \u6216 --collection <\u96C6\u5408>","\u4E8C\u8005\u62E9\u4E00");let n=i?{documentId:await s.toDocUuid(i)}:{collectionId:await s.toColUuid(o)};return await E(t,"stars.create",n),e.emit("\u5DF2\u6536\u85CF"),0},async remove(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <starId>\uFF08\u6765\u81EA star list\uFF09","coder wiki star list"),await E(t,"stars.delete",{id:r},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u6536\u85CF"),0}},Nf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--collection"),o=i?{collectionId:await s.toColUuid(i)}:{},n=await E(t,"pins.list",o),a=n.data?.pins||[],c={};for(let l of n.data?.documents||[])c[l.id]=l;return z(e,a.map(l=>{let d=l.documentId?c[l.documentId]:null;return{pinId:l.id,title:d?.title||l.documentId,url:ss(d?.urlId||l.documentId)}}),{labels:J,empty:"\u6682\u65E0\u7F6E\u9876"}),0},async add(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","coder wiki pin add --id <\u6587\u6863> [--collection <\u96C6\u5408>]");let n={documentId:await s.toDocUuid(i)},a=f(r,"--collection");a&&(n.collectionId=await s.toColUuid(a));let c=await E(t,"pins.create",n);return e.emit(`\u5DF2\u7F6E\u9876: ${c.data.id}`),0},async remove(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <pinId>\uFF08\u6765\u81EA pin list\uFF09","coder wiki pin list"),await E(t,"pins.delete",{id:r},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u7F6E\u9876"),0}};function Ia(t){return t?.content?t.content.flatMap(e=>e.content||[]).filter(e=>e.type==="text").map(e=>e.text).join(""):""}var jf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / URL");let o=await s.toDocUuid(i),a=(await E(t,"comments.list",{documentId:o,sort:"createdAt",direction:"ASC"})).data||[];return a.length?(e.isJson?z(e,a.map(c=>({id:c.id,author:c.createdBy?.name||"?",content:Ia(c.data)})),{labels:J}):e.emit(a.map(c=>` [${c.id}] ${c.createdBy?.name||"?"}: ${Ia(c.data)}`).join(`
67
+ `)),0):(e.emit("\u6682\u65E0\u8BC4\u8BBA"),0)},async add(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--text");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / URL"),o||S(t,"\u8BF7\u6307\u5B9A --text <\u5185\u5BB9>");let n=await s.toDocUuid(i),a=await E(t,"comments.create",{documentId:n,text:o});return e.emit(`\u8BC4\u8BBA\u5DF2\u53D1\u5E03: ${a.data.id}`),0}},Gf={async list(t){let{ctx:e,resolver:s,args:r}=t,i={},o=f(r,"--document");o&&(i.documentId=await s.toDocUuid(o));let n=await E(t,"shares.list",i);return z(e,(Ce(n)||[]).map(a=>({shareId:a.id,document:a.documentTitle||a.documentId||"",published:a.published?"\u662F":"\u5426",url:a.url||""})),{labels:J,empty:"\u6682\u65E0\u5206\u4EAB"}),0},async info(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <shareId>\uFF08UUID\uFF0C\u6765\u81EA share list\uFF09");let o=(await E(t,"shares.info",{id:r})).data;return je(e,[["id",o.id],["document",o.documentTitle||o.documentId||"","\u6587\u6863"],["published",o.published?"\u662F":"\u5426","\u5DF2\u53D1\u5E03"],["url",o.url||""]]),0},async create(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"shares.create",{documentId:o,published:pe(r,"--published"),includeChildDocuments:pe(r,"--include-children")});return e.emit(`\u5206\u4EAB\u5DF2\u521B\u5EFA: ${n.data.id}
68
+ ${n.data.url||""}`),0},async update(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <shareId>\uFF08UUID\uFF09");let i={id:r};return pe(s,"--published")&&(i.published=!0),pe(s,"--no-published")&&(i.published=!1),pe(s,"--include-children")&&(i.includeChildDocuments=!0),await E(t,"shares.update",i),e.emit("\u5206\u4EAB\u5DF2\u66F4\u65B0"),0},async revoke(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <shareId>\uFF08UUID\uFF09"),await E(t,"shares.revoke",{id:r},{allowNoData:!0}),e.emit("\u5206\u4EAB\u5DF2\u64A4\u9500"),0}},qf={async list(t){let{ctx:e,args:s}=t,r={};f(s,"--query")&&(r.query=f(s,"--query")),f(s,"--filter")&&(r.filter=f(s,"--filter"));let i=await E(t,"users.list",r);return z(e,(Ce(i)||[]).map(o=>({id:o.id,name:o.name,email:o.email||"",role:o.role||""})),{labels:J,empty:"\u6682\u65E0\u7528\u6237"}),0},async info(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <userId>\uFF08UUID\uFF09");let o=(await E(t,"users.info",{id:r})).data;return je(e,[["id",o.id],["name",o.name,"\u59D3\u540D"],["email",o.email||"","\u90AE\u7BB1"],["role",o.role||"","\u89D2\u8272"]]),0},async invite(t){let{ctx:e,args:s}=t,r=f(s,"--email");r||S(t,"\u8BF7\u6307\u5B9A --email <\u90AE\u7BB1>");let i=f(s,"--name"),o=f(s,"--role"),a=(await E(t,"users.invite",{invites:[{email:r,name:i,role:o}]})).data||[];return a.length?(z(e,a.map(c=>({id:c.id,email:c.email||"",name:c.name||""})),{labels:J}),0):(e.emit("\u9080\u8BF7\u5DF2\u53D1\u9001"),0)},async"update-role"(t){let{ctx:e,args:s}=t,r=f(s,"--id"),i=f(s,"--role");return r||S(t,"\u8BF7\u6307\u5B9A --id <userId>\uFF08UUID\uFF09"),i||S(t,"\u8BF7\u6307\u5B9A --role <admin|member|viewer>"),await E(t,"users.update_role",{id:r,role:i}),e.emit("\u7528\u6237\u89D2\u8272\u5DF2\u66F4\u65B0"),0},async suspend(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <userId>\uFF08UUID\uFF09"),await E(t,"users.suspend",{id:r}),e.emit("\u7528\u6237\u5DF2\u6682\u505C"),0},async activate(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <userId>\uFF08UUID\uFF09"),await E(t,"users.activate",{id:r}),e.emit("\u7528\u6237\u5DF2\u6FC0\u6D3B"),0}},Mf={async list(t){let{ctx:e,args:s}=t,r={};f(s,"--query")&&(r.query=f(s,"--query"));let i=await E(t,"groups.list",r),o=i.data?.groups||i.data||[];return z(e,(Array.isArray(o)?o:[]).map(n=>({id:n.id,name:n.name,members:n.memberCount??""})),{labels:J,empty:"\u6682\u65E0\u7FA4\u7EC4"}),0},async info(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09");let o=(await E(t,"groups.info",{id:r})).data;return je(e,[["id",o.id],["name",o.name,"\u540D\u79F0"],["members",o.memberCount??"","\u6210\u5458\u6570"]]),0},async create(t){let{ctx:e,args:s}=t,r=f(s,"--name");r||S(t,"\u8BF7\u6307\u5B9A --name <\u540D\u79F0>");let i=await E(t,"groups.create",{name:r});return e.emit(`\u7FA4\u7EC4\u5DF2\u521B\u5EFA: ${i.data.id} \u2014 ${i.data.name}`),0},async update(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09");let i=f(s,"--name");return i||S(t,"\u8BF7\u6307\u5B9A --name <\u540D\u79F0>"),await E(t,"groups.update",{id:r,name:i}),e.emit("\u7FA4\u7EC4\u5DF2\u66F4\u65B0"),0},async delete(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09"),await E(t,"groups.delete",{id:r},{allowNoData:!0}),e.emit("\u7FA4\u7EC4\u5DF2\u5220\u9664"),0},async members(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09");let i=await E(t,"groups.memberships",{id:r});return z(e,(Ds(i)||[]).map(o=>({userId:o.userId||o.user?.id||"",name:o.user?.name||""})),{labels:J,empty:"\u6682\u65E0\u6210\u5458"}),0},async"add-user"(t){let{ctx:e,args:s}=t,r=f(s,"--id"),i=f(s,"--user");return r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09"),i||S(t,"\u8BF7\u6307\u5B9A --user <userId>"),await E(t,"groups.add_user",{id:r,userId:i}),e.emit("\u5DF2\u6DFB\u52A0\u7528\u6237\u5230\u7FA4\u7EC4"),0},async"remove-user"(t){let{ctx:e,args:s}=t,r=f(s,"--id"),i=f(s,"--user");return r||S(t,"\u8BF7\u6307\u5B9A --id <groupId>\uFF08UUID\uFF09"),i||S(t,"\u8BF7\u6307\u5B9A --user <userId>"),await E(t,"groups.remove_user",{id:r,userId:i},{allowNoData:!0}),e.emit("\u5DF2\u4ECE\u7FA4\u7EC4\u79FB\u9664\u7528\u6237"),0}},Ff={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--collection");!i&&!o&&S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863> \u6216 --collection <\u96C6\u5408>");let n={event:"documents.update"};i&&(n.documentId=await s.toDocUuid(i)),o&&(n.collectionId=await s.toColUuid(o));let a=await E(t,"subscriptions.list",n);return z(e,(Ce(a)||[]).map(c=>({id:c.id,document:c.documentId||"",event:c.event||""})),{labels:J,empty:"\u6682\u65E0\u8BA2\u9605"}),0},async add(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"subscriptions.create",{documentId:o,event:"documents.update"});return e.emit(`\u5DF2\u8BA2\u9605: ${n.data.id}`),0},async remove(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <subId>\uFF08UUID\uFF09"),await E(t,"subscriptions.delete",{id:r},{allowNoData:!0}),e.emit("\u5DF2\u53D6\u6D88\u8BA2\u9605"),0}},Bf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i),n=await E(t,"views.list",{documentId:o});return z(e,(Ce(n)||[]).map(a=>({userId:a.userId||"",name:a.user?.name||"",count:a.count??"",latest:a.updatedAt||""})),{labels:J,empty:"\u6682\u65E0\u6D4F\u89C8\u8BB0\u5F55"}),0},async record(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>");let o=await s.toDocUuid(i);return await E(t,"views.create",{documentId:o}),e.emit("\u6D4F\u89C8\u5DF2\u8BB0\u5F55"),0}},Wf={async list(t){let{ctx:e,resolver:s,args:r}=t,i={};f(r,"--actor")&&(i.actorId=f(r,"--actor")),f(r,"--document")&&(i.documentId=await s.toDocUuid(f(r,"--document"))),f(r,"--collection")&&(i.collectionId=await s.toColUuid(f(r,"--collection"))),f(r,"--type")&&(i.name=f(r,"--type"));let o=await E(t,"events.list",i);return z(e,(Ce(o)||[]).map(n=>({event:n.name||"",actorId:n.actorId||"",time:n.createdAt||""})),{labels:J,empty:"\u6682\u65E0\u4E8B\u4EF6"}),0}},Zf={async list(t){let{ctx:e,resolver:s,args:r}=t,i={};f(r,"--collection")&&(i.collectionId=await s.toColUuid(f(r,"--collection")));let o=await E(t,"templates.list",i);return z(e,(Ce(o)||[]).map(n=>({id:n.id,title:n.title,collection:n.collectionId||""})),{labels:J,empty:"\u6682\u65E0\u6A21\u677F"}),0},async info(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <tplId>\uFF08UUID\uFF09");let o=(await E(t,"templates.info",{id:r})).data;return je(e,[["id",o.id],["title",o.title,"\u6807\u9898"],["collection",o.collectionId||"","\u96C6\u5408"]]),0},async create(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--title");i||S(t,"\u8BF7\u6307\u5B9A --id <\u96C6\u5408>"),o||S(t,"\u8BF7\u6307\u5B9A --title <\u6807\u9898>");let n=await s.toColUuid(i),a=f(r,"--text")||"",c=await E(t,"templates.create",{collectionId:n,title:o,data:{type:"doc",content:a?[{type:"paragraph",content:[{type:"text",text:a}]}]:[]}});return e.emit(`\u6A21\u677F\u5DF2\u521B\u5EFA: ${c.data.id} \u2014 ${c.data.title}`),0},async update(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <tplId>\uFF08UUID\uFF09");let i={id:r};f(s,"--title")&&(i.title=f(s,"--title"));let o=f(s,"--text");return o!==void 0&&(i.data={type:"doc",content:[{type:"paragraph",content:[{type:"text",text:o}]}]}),!i.title&&i.data===void 0&&S(t,"\u8BF7\u81F3\u5C11\u6307\u5B9A --title \u6216 --text"),await E(t,"templates.update",i),e.emit("\u6A21\u677F\u5DF2\u66F4\u65B0"),0},async delete(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <tplId>\uFF08UUID\uFF09"),await E(t,"templates.delete",{id:r},{allowNoData:!0}),e.emit("\u6A21\u677F\u5DF2\u5220\u9664"),0},async duplicate(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <tplId>\uFF08UUID\uFF09");let i={id:r};f(s,"--title")&&(i.title=f(s,"--title"));let o=await E(t,"templates.duplicate",i);return e.emit(`\u6A21\u677F\u5DF2\u590D\u5236: ${o.data.id} \u2014 ${o.data.title}`),0}},Vf={async list(t){let{ctx:e,args:s}=t,r={};f(s,"--type")&&(r.type=f(s,"--type"));let i=await E(t,"fileOperations.list",r);return z(e,(Ce(i)||[]).map(o=>({id:o.id,type:o.type||"",state:o.state||"",time:o.createdAt||""})),{labels:J,empty:"\u6682\u65E0\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55"}),0},async info(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <fileOpId>\uFF08UUID\uFF09");let o=(await E(t,"fileOperations.info",{id:r})).data;return je(e,[["id",o.id],["type",o.type||"","\u7C7B\u578B"],["state",o.state||"","\u72B6\u6001"],["time",o.createdAt||"","\u65F6\u95F4"]]),0},async delete(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <fileOpId>\uFF08UUID\uFF09"),await E(t,"fileOperations.delete",{id:r},{allowNoData:!0}),e.emit("\u6587\u4EF6\u64CD\u4F5C\u8BB0\u5F55\u5DF2\u5220\u9664"),0}},Kf={async list(t){let{ctx:e,args:s}=t,r=f(s,"--id");r||S(t,"\u8BF7\u6307\u5B9A --id <commentId>\uFF08UUID\uFF09");let i=await E(t,"reactions.list",{commentId:r});return z(e,(Ce(i)||[]).map(o=>({emoji:o.emoji||"",userId:o.userId||"",name:o.user?.name||""})),{labels:J,empty:"\u6682\u65E0\u53CD\u5E94"}),0}},zf={async list(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=i?{documentId:await s.toDocUuid(i)}:{},n=await E(t,"attachments.list",o);return z(e,(Ce(n)||[]).map(a=>({id:a.id,filename:a.name,type:a.contentType||"",size:a.size?`${Math.round(a.size/1024)}KB`:"",url:a.url||""})),{labels:J,empty:"\u6682\u65E0\u9644\u4EF6"}),0},async upload(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--file");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / URL"),o||S(t,"\u8BF7\u6307\u5B9A --file <\u6587\u4EF6\u8DEF\u5F84>");let n=await s.toDocUuid(i),a=vs.resolve(o);fr.existsSync(a)||S(t,`\u6587\u4EF6\u4E0D\u5B58\u5728: ${a}`,"\u786E\u8BA4\u8DEF\u5F84\u6B63\u786E");let c=fr.readFileSync(a),l=vs.basename(a),d=vf(a),u=await E(t,"attachments.create",{name:l,documentId:n,size:c.length,contentType:d,preset:"documentAttachment"}),{uploadUrl:p,form:m,attachment:y}=u.data,_=await Df(p,m,c,l,d);return _.status>=300&&S(t,`\u4E0A\u4F20\u5931\u8D25 (HTTP ${_.status}): ${_.body.slice(0,200)}`,"\u68C0\u67E5\u7F51\u7EDC\u6216\u6587\u4EF6\u5927\u5C0F"),Sa(e,y,d),0},async"upload-url"(t){let{ctx:e,resolver:s,args:r}=t,i=f(r,"--id"),o=f(r,"--url");i||S(t,"\u8BF7\u6307\u5B9A --id <\u6587\u6863>","\u53EF\u4F20 UUID / urlId / URL"),o||S(t,"\u8BF7\u6307\u5B9A --url <url>");let n=await s.toDocUuid(i),a=await E(t,"attachments.createFromUrl",{url:o,documentId:n,preset:"documentAttachment"});return Sa(e,a.data,a.data.contentType),0},async delete(t){let{ctx:e,args:s}=t,r=f(s,"--id");return r||S(t,"\u8BF7\u6307\u5B9A --id <attId>\uFF08UUID\uFF09"),await E(t,"attachments.delete",{id:r},{allowNoData:!0}),e.emit("\u9644\u4EF6\u5DF2\u5220\u9664"),0}},Jf={list(t){let{ctx:e,args:s}=t,r=f(s,"--query")||"",i=r?ba.filter(o=>o.name.toLowerCase().includes(r.toLowerCase())||o.keywords.toLowerCase().includes(r.toLowerCase())):ba;return i.length?(z(e,i.map(o=>({icon:o.name,keywords:o.keywords})),{labels:J}),e.isJson||e.emit(`
69
+ \u7528\u6CD5: coder wiki collection create --name "<\u540D\u79F0>" --icon ${i[0].name}
70
+ \u63D0\u793A: \u4E5F\u53EF\u76F4\u63A5\u7528 emoji\uFF0C\u5982 --icon \u{1F4DA}`),0):(e.emit(`\u6CA1\u6709\u627E\u5230\u4E0E "${r}" \u76F8\u5173\u7684\u56FE\u6807`),0)}},Hf={collection:Of,document:Lf,revision:Rf,star:Pf,pin:Nf,comment:jf,share:Gf,user:qf,group:Mf,subscription:Ff,view:Bf,event:Wf,template:Zf,"file-op":Vf,reaction:Kf,attachment:zf,icon:Jf};Ca.exports={WIKI_METHODS:Hf,_internal:{flag:f,hasFlag:pe}}});var Ga=I((bx,ja)=>{function Yf(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}var Ua=["agent","auth","pub","update","wiki","team","skills","claude","codex","gemini"],$a=["--format","--apikey","--help","--version","--install-completion","--show-completion"],vi={pub:["--name","--meta-data","--allow-clone"]},Ta=["login","logout","status"],va=["list","current","use","info"],Di=["members","groups"];function Da(){return or().AGENT_NAMES}function Oa(t){let e=Si();return e[t]?Object.keys(e[t]):[]}function La(){return dr().SKILLS_SUBCOMMANDS}function Oi(){let{WIKI_METHODS:t}=hr();return Object.keys(t)}function Ra(t){let{WIKI_METHODS:e}=hr();return e[t]?Object.keys(e[t]):[]}function Pa(t){let e=t.length?t[t.length-1]:"",s=t.slice(0,-1),r=s[0];if(e.startsWith("-")){let o=[...$a];return r&&vi[r]&&o.push(...vi[r]),o}if(s[s.length-1]==="--format")return["text","json"];if(s.length===0)return Ua;switch(r){case"agent":return s.length===1?Da():[];case"auth":return s.length===1?Ta:[];case"skills":return s.length===1?La():[];case"wiki":return s.length===1?Oi():s.length===2&&Oi().includes(s[1])?Ra(s[1]):[];case"team":return s.length===1?[...va,...Di]:s.length===2&&Di.includes(s[1])?Oa(s[1]):[];default:return[]}}function Na(t){let e=t.length?t[t.length-1]:"",s=Pa(t),r=new Set,i=[];for(let o of s)o.startsWith(e)&&!r.has(o)&&(r.add(o),i.push(o));return i}function Xf(t){let e=t.indexOf("--"),s=e===-1?t:t.slice(e+1),r=Na(s);return r.length&&process.stdout.write(r.join(`
74
71
  `)+`
75
- `),0}Ga.exports={complete:gh,candidates:Ma,candidatesFor:qa,camelToKebab:va,TOP_LEVEL:Ua,GLOBAL_OPTIONS:Oa,COMMAND_OPTIONS:Pn,AUTH_SUBCOMMANDS:Da,TEAM_TOP:Ra,TEAM_RESOURCES:Nn,wikiSubcommands:ja,skillsSubcommands:Na,teamVerbs:Pa,agentNames:La}});var Za=x((GS,Ba)=>{function yh(t="coder"){return`# bash completion for ${t}
72
+ `),0}ja.exports={complete:Xf,candidates:Na,candidatesFor:Pa,camelToKebab:Yf,TOP_LEVEL:Ua,GLOBAL_OPTIONS:$a,COMMAND_OPTIONS:vi,AUTH_SUBCOMMANDS:Ta,TEAM_TOP:va,TEAM_RESOURCES:Di,wikiResources:Oi,wikiVerbs:Ra,skillsSubcommands:La,teamVerbs:Oa,agentNames:Da}});var Ma=I((kx,qa)=>{function Qf(t="coder"){return`# bash completion for ${t}
76
73
  # \u5B89\u88C5: ${t} --install-completion \u6216 eval "$(${t} --show-completion bash)"
77
74
  _${t}_complete() {
78
75
  local cur words cword
@@ -94,7 +91,7 @@ _${t}_complete() {
94
91
  return 0
95
92
  }
96
93
  complete -F _${t}_complete ${t}
97
- `}Ba.exports={bashScript:yh}});var Va=x((FS,Wa)=>{function _h(t="coder"){return`# zsh completion for ${t}
94
+ `}qa.exports={bashScript:Qf}});var Ba=I((Sx,Fa)=>{function eh(t="coder"){return`# zsh completion for ${t}
98
95
  _${t}() {
99
96
  local -a line
100
97
  line=("\${words[2,CURRENT]}")
@@ -106,22 +103,21 @@ _${t}() {
106
103
  compadd -- "\${reply[@]}"
107
104
  }
108
105
  compdef _${t} ${t}
109
- `}Wa.exports={zshScript:_h}});var Ja=x((BS,za)=>{var hr=require("fs"),wh=require("os"),Xe=require("path"),{bashScript:bh}=Za(),{zshScript:kh}=Va(),gr=["bash","zsh","fish"];function jn(){let t=(process.env.SHELL||"").split("/").pop();return gr.includes(t)?t:"bash"}function qn(t){return t==="bash"?bh():t==="zsh"?kh():t==="fish"?xh():null}function xh(t="coder"){return`# fish completion for ${t}
106
+ `}Fa.exports={zshScript:eh}});var Va=I((xx,Za)=>{var gr=require("fs"),th=require("os"),Qe=require("path"),{bashScript:sh}=Ma(),{zshScript:rh}=Ba(),yr=["bash","zsh","fish"];function Li(){let t=(process.env.SHELL||"").split("/").pop();return yr.includes(t)?t:"bash"}function Ri(t){return t==="bash"?sh():t==="zsh"?rh():t==="fish"?ih():null}function ih(t="coder"){return`# fish completion for ${t}
110
107
  function __${t}_complete
111
108
  set -l tokens (commandline -opc) (commandline -ct)
112
109
  ${t} __complete -- $tokens[2..-1] 2>/dev/null
113
110
  end
114
111
  complete -c ${t} -f -a '(__${t}_complete)'
115
- `}function Sh(t){let e=wh.homedir();if(t==="bash"){let s=Xe.join(e,".coder","completions"),r=Xe.join(s,"coder.bash"),n=[Xe.join(e,".bashrc"),Xe.join(e,".bash_profile")];return{dir:s,file:r,rcs:n,sourceLine:`source "${r}"`}}if(t==="zsh"){let s=Xe.join(e,".coder","completions"),r=Xe.join(s,"coder.zsh");return{dir:s,file:r,rcs:[Xe.join(e,".zshrc")],sourceLine:`autoload -Uz compinit && compinit
116
- source "${r}"`}}if(t==="fish"){let s=Xe.join(e,".config","fish","completions"),r=Xe.join(s,"coder.fish");return{dir:s,file:r,rcs:[],sourceLine:null}}return null}var Ka="# >>> coder completion >>>",Ih="# <<< coder completion <<<";function Ch(t,e){let s="";try{s=hr.readFileSync(t,"utf8")}catch{s=""}if(s.includes(Ka))return!1;let r=`
117
- ${Ka}
112
+ `}function oh(t){let e=th.homedir();if(t==="bash"){let s=Qe.join(e,".coder","completions"),r=Qe.join(s,"coder.bash"),i=[Qe.join(e,".bashrc"),Qe.join(e,".bash_profile")];return{dir:s,file:r,rcs:i,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 Wa="# >>> coder completion >>>",nh="# <<< coder completion <<<";function ah(t,e){let s="";try{s=gr.readFileSync(t,"utf8")}catch{s=""}if(s.includes(Wa))return!1;let r=`
114
+ ${Wa}
118
115
  ${e}
119
- ${Ih}
120
- `;return hr.appendFileSync(t,r,"utf8"),!0}function Eh(t,e){let s=e||jn(),r=qn(s);return r?(process.stdout.write(r),0):(t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${gr.join(" | ")}`),1)}function $h(t,e){let s=e||jn(),r=qn(s),n=Sh(s);if(!r||!n)return t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${gr.join(" | ")}`),1;try{hr.mkdirSync(n.dir,{recursive:!0}),hr.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 i=[];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(`
121
- `)),0;for(let a of n.rcs)try{Ch(a,n.sourceLine)&&i.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 o=[`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${n.file}`];return i.length?o.push(`\u5DF2\u5728\u4EE5\u4E0B\u6587\u4EF6\u8FFD\u52A0 source: ${i.join(", ")}`):o.push("rc \u4E2D\u5DF2\u5B58\u5728 coder \u8865\u5168\u5757\uFF0C\u672A\u91CD\u590D\u8FFD\u52A0\u3002"),o.push("\u91CD\u5F00\u7EC8\u7AEF\uFF0C\u6216\u8FD0\u884C: "+n.sourceLine.split(`
122
- `).pop()),t.emit(o.join(`
123
- `)),0}za.exports={detectShell:jn,scriptFor:qn,showCompletion:Eh,installCompletion:$h,SUPPORTED:gr}});var Xa=x((ZS,Ya)=>{var{AGENTS:Ha,AGENT_NAMES:Rs,isAgentName:Ah,launchAgent:Th}=or(),vh=new Set(["--help","-h","help"]);function Uh(t){if(t.isJson){t.emit({usage:"coder agent <name> [args...]",agents:Rs.map(r=>({name:r,description:Ha[r].description}))});return}let e=["Usage: coder agent <name> [args...]","","Agents:"],s=Math.max(...Rs.map(r=>r.length));for(let r of Rs)e.push(` ${r.padEnd(s)} ${Ha[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(`
124
- `))}function Oh(t,e){t.command("agent <name> [args...]").description(`\u8FD0\u884C\u4E00\u4E2A AI \u667A\u80FD\u4F53\uFF08${Rs.join(" | ")}\uFF09`).allowUnknownOption().passThroughOptions().helpOption(!1).action(async(s,r)=>{if(vh.has(s)){Uh(e);return}if(!Ah(s)){e.fail(`unknown agent: ${s}`,`available: ${Rs.join(" | ")}`),process.exitCode=1;return}process.exitCode=await Th(s,r||[],e)||0})}Ya.exports={register:Oh}});var ec=x((WS,Qa)=>{var Dh=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=Dh.createServer((i,o)=>{let a=new URL(i.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){o.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),o.end(`
116
+ ${nh}
117
+ `;return gr.appendFileSync(t,r,"utf8"),!0}function ch(t,e){let s=e||Li(),r=Ri(s);return r?(process.stdout.write(r),0):(t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${yr.join(" | ")}`),1)}function lh(t,e){let s=e||Li(),r=Ri(s),i=oh(s);if(!r||!i)return t.fail(`unsupported shell: ${s}`,`\u652F\u6301: ${yr.join(" | ")}`),1;try{gr.mkdirSync(i.dir,{recursive:!0}),gr.writeFileSync(i.file,r,"utf8")}catch(a){return t.fail(`\u65E0\u6CD5\u5199\u5165\u8865\u5168\u811A\u672C: ${a.message}`,`\u68C0\u67E5\u76EE\u5F55\u6743\u9650: ${i.dir}`),1}let o=[];if(i.rcs.length===0)return t.emit([`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${i.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 i.rcs)try{ah(a,i.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 n=[`\u5DF2\u4E3A ${s} \u5B89\u88C5\u8865\u5168: ${i.file}`];return o.length?n.push(`\u5DF2\u5728\u4EE5\u4E0B\u6587\u4EF6\u8FFD\u52A0 source: ${o.join(", ")}`):n.push("rc \u4E2D\u5DF2\u5B58\u5728 coder \u8865\u5168\u5757\uFF0C\u672A\u91CD\u590D\u8FFD\u52A0\u3002"),n.push("\u91CD\u5F00\u7EC8\u7AEF\uFF0C\u6216\u8FD0\u884C: "+i.sourceLine.split(`
119
+ `).pop()),t.emit(n.join(`
120
+ `)),0}Za.exports={detectShell:Li,scriptFor:Ri,showCompletion:ch,installCompletion:lh,SUPPORTED:yr}});var za=I((Ix,Ka)=>{var dh=require("http"),Pi=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,i]=s;return r&&r.length>0&&i&&i.length>0}async waitForCallback(e){return new Promise((s,r)=>{let i=!1;this.server=dh.createServer((o,n)=>{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"),d=a.searchParams.get("error");if(d){n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(`
125
121
  <!DOCTYPE html>
126
122
  <html>
127
123
  <head>
@@ -142,11 +138,11 @@ ${Ih}
142
138
  <div class="icon">\u274C</div>
143
139
  <h1>\u767B\u5F55\u5931\u8D25</h1>
144
140
  <p>\u6388\u6743\u8FC7\u7A0B\u4E2D\u51FA\u73B0\u9519\u8BEF\uFF0C\u8BF7\u8FD4\u56DE\u7EC8\u7AEF\u91CD\u8BD5\u3002</p>
145
- <p class="code">\u9519\u8BEF: ${u}</p>
141
+ <p class="code">\u9519\u8BEF: ${d}</p>
146
142
  </div>
147
143
  </body>
148
144
  </html>
149
- `),n||(n=!0,this.cleanup(),r(new Error(`OAuth error: ${u}`)));return}if(l!==e){o.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),o.end(`
145
+ `),i||(i=!0,this.cleanup(),r(new Error(`OAuth error: ${d}`)));return}if(l!==e){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(`
150
146
  <!DOCTYPE html>
151
147
  <html>
152
148
  <head>
@@ -168,7 +164,7 @@ ${Ih}
168
164
  </div>
169
165
  </body>
170
166
  </html>
171
- `),n||(n=!0,this.cleanup(),r(new Error("Invalid state parameter - possible CSRF attack")));return}if(!c){o.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),o.end(`
167
+ `),i||(i=!0,this.cleanup(),r(new Error("Invalid state parameter - possible CSRF attack")));return}if(!c){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(`
172
168
  <!DOCTYPE html>
173
169
  <html>
174
170
  <head>
@@ -190,7 +186,7 @@ ${Ih}
190
186
  </div>
191
187
  </body>
192
188
  </html>
193
- `),n||(n=!0,this.cleanup(),r(new Error("No token received from OAuth callback")));return}if(!this.validateTokenFormat(c)){o.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),o.end(`
189
+ `),i||(i=!0,this.cleanup(),r(new Error("No token received from OAuth callback")));return}if(!this.validateTokenFormat(c)){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(`
194
190
  <!DOCTYPE html>
195
191
  <html>
196
192
  <head>
@@ -214,7 +210,7 @@ ${Ih}
214
210
  </div>
215
211
  </body>
216
212
  </html>
217
- `),n||(n=!0,this.cleanup(),r(new Error("Invalid token format - expected ak.sk format")));return}let[d,p]=c.split(".");o.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),o.end(`
213
+ `),i||(i=!0,this.cleanup(),r(new Error("Invalid token format - expected ak.sk format")));return}let[u,p]=c.split(".");n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(`
218
214
  <!DOCTYPE html>
219
215
  <html>
220
216
  <head>
@@ -246,27 +242,34 @@ ${Ih}
246
242
  </script>
247
243
  </body>
248
244
  </html>
249
- `),n||(n=!0,this.cleanup(),s({ak:d,sk:p}))}else o.writeHead(404,{"Content-Type":"text/plain"}),o.end("Not Found")}),this.server.on("error",i=>{if(i.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(i))}),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)}};Qa.exports=Mn});var sc=x((VS,tc)=>{var Rh=require("crypto"),Lh=ec(),Gn=class{constructor(e={}){this.baseUrl=e.baseUrl||"https://makecoder.com",this.callbackServer=null}generateState(){return Rh.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 Lh;let s=this.callbackServer.getCallbackUrl(),r=this.buildAuthorizationUrl(s,e),n=!1;try{let o=(await import("open")).default;await o(r),n=!0}catch(o){process.env.CODER_DEBUG&&console.error("Browser open error:",o)}let i=this.callbackServer.waitForCallback(e);return{authUrl:r,waitPromise:i,browserOpened:n}}async login(){try{let{authUrl:e,waitPromise:s,browserOpened:r}=await this.startOAuthFlow();console.log(`
245
+ `),i||(i=!0,this.cleanup(),s({ak:u,sk:p}))}else n.writeHead(404,{"Content-Type":"text/plain"}),n.end("Not Found")}),this.server.on("error",o=>{if(o.code==="EADDRINUSE"){if(this.port++,this.port>9390){i||(i=!0,r(new Error("Could not find available port for OAuth callback server")));return}this.server.close(),this.server.listen(this.port)}else i||(i=!0,this.cleanup(),r(o))}),this.server.listen(this.port,()=>{this.server.unref(),process.env.CODER_DEBUG&&console.log(`OAuth callback server listening on port ${this.port}`)}),this.timeoutId=setTimeout(()=>{i||(i=!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)}};Ka.exports=Pi});var Ha=I((Ex,Ja)=>{var uh=require("crypto"),ph=za(),Ni=class{constructor(e={}){this.baseUrl=e.baseUrl||"https://makecoder.com",this.callbackServer=null}generateState(){return uh.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 ph;let s=this.callbackServer.getCallbackUrl(),r=this.buildAuthorizationUrl(s,e),i=!1;try{let n=(await import("open")).default;await n(r),i=!0}catch(n){process.env.CODER_DEBUG&&console.error("Browser open error:",n)}let o=this.callbackServer.waitForCallback(e);return{authUrl:r,waitPromise:o,browserOpened:i}}async login(){try{let{authUrl:e,waitPromise:s,browserOpened:r}=await this.startOAuthFlow();console.log(`
250
246
  \u{1F510} \u5F00\u59CB OAuth \u767B\u5F55\u6D41\u7A0B...
251
247
  `),console.log(`\u{1F4CB} \u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55
252
248
  `),console.log(`\u{1F310} \u6388\u6743\u5730\u5740: ${e}
253
249
  `),console.log(`\u23F3 \u7B49\u5F85\u60A8\u7684\u6388\u6743...(\u8D85\u65F6\u65F6\u95F4: 5\u5206\u949F)
254
- `),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!
255
- `),n}catch(e){throw console.error(`
250
+ `),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 i=await s;return console.log(`\u2705 API Key \u83B7\u53D6\u6210\u529F!
251
+ `),i}catch(e){throw console.error(`
256
252
  \u274C OAuth \u767B\u5F55\u5931\u8D25: ${e.message}
257
- `),e}finally{this.callbackServer&&this.callbackServer.cleanup()}}cleanup(){this.callbackServer&&this.callbackServer.cleanup()}};tc.exports=Gn});var ic=x((KS,nc)=>{var rc=require("readline"),Ph=sc(),Fn=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 Ph({baseUrl:"https://makecoder.com"}),r,n,i;try{({authUrl:r,waitPromise:n,browserOpened:i}=await s.startOAuthFlow())}catch(l){return console.error(`\u274C \u542F\u52A8\u767B\u5F55\u6D41\u7A0B\u5931\u8D25: ${l.message}`),console.log(`
253
+ `),e}finally{this.callbackServer&&this.callbackServer.cleanup()}}cleanup(){this.callbackServer&&this.callbackServer.cleanup()}};Ja.exports=Ni});var Gi=I((Ax,Qa)=>{var Ya=require("readline"),Xa=Ha(),ji=class{constructor(e){this.argParser=e}async handle(e){let{authSubcommand:s,authRemainingArgs:r=[],coderBaseUrl:i}=e;if(s==="--help"||s===void 0)return this.showHelp(),0;switch(s){case"login":return await this.handleLogin(r,i);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 i=0;i<e.length;i++)if(e[i]==="--apikey"){r=e[i+1]||null;break}return r?this.loginWithApiKey(r):await this.dualLogin(s)}async browserLogin(e){let s=new Xa({baseUrl:"https://makecoder.com"}),r,i,o;try{({authUrl:r,waitPromise:i,browserOpened:o}=await s.startOAuthFlow())}catch(d){return console.error(`\u274C \u542F\u52A8\u767B\u5F55\u6D41\u7A0B\u5931\u8D25: ${d.message}`),await this._fallbackManualInput()}console.log(`
254
+ \u767B\u5F55 MakeCoder...
255
+ `),o?console.log("\u6D4F\u89C8\u5668\u5DF2\u6253\u5F00\u6388\u6743\u9875\u9762\uFF0C\u8BF7\u5B8C\u6210\u767B\u5F55\u3002"):(console.log("\u65E0\u6CD5\u81EA\u52A8\u6253\u5F00\u6D4F\u89C8\u5668\uFF0C\u8BF7\u624B\u52A8\u8BBF\u95EE\u4EE5\u4E0B\u5730\u5740\u5B8C\u6210\u767B\u5F55:"),console.log(` ${r}
256
+ `)),console.log("\u7B49\u5F85\u6388\u6743\u56DE\u8C03\u4E2D...\uFF08\u8D85\u65F6 5 \u5206\u949F\uFF09"),console.log("\u5982\u679C\u56DE\u8C03\u5931\u8D25\uFF0C\u53EF\u5C06\u6D4F\u89C8\u5668\u5730\u5740\u680F\u7684\u5B8C\u6574\u56DE\u8C03\u5730\u5740\u7C98\u8D34\u5230\u8FD9\u91CC:"),console.log("\u5982\u679C\u65E0\u6CD5\u8BBF\u95EE\u7F51\u9875\uFF0C\u53EF\u524D\u5F80 https://makecoder.com/my/apikeys \u83B7\u53D6 API Key \u540E\u7C98\u8D34\u5230\u8FD9\u91CC:"),process.stdout.write("> ");let n=this._readLineOnce(),a;try{a=await Promise.race([i.then(d=>({type:"oauth",creds:d})),n.then(d=>({type:"input",input:d}))])}catch(d){return s.cleanup(),console.error(`
257
+ \u274C \u767B\u5F55\u5931\u8D25: ${d.message}`),1}if(s.cleanup(),a.type==="oauth")return this._saveAndDone(`${a.creds.ak}.${a.creds.sk}`);let c=a.input.trim();if(!c)return console.error("\u274C \u672A\u8F93\u5165\u5185\u5BB9\uFF0C\u767B\u5F55\u53D6\u6D88"),1;try{let u=new URL(c).searchParams.get("token");if(u){let p=u.indexOf(".");if(p>0&&p<u.length-1)return this._saveAndDone(u)}}catch{}let l=c.indexOf(".");return l<=0||l===c.length-1?(console.error("\u274C \u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u8F93\u5165 API Key \u6216\u5B8C\u6574\u7684\u56DE\u8C03\u5730\u5740"),1):this._saveAndDone(c)}_saveAndDone(e){return this.argParser.saveAuthToConfig(e)?(console.log(`\u2705 \u767B\u5F55\u6210\u529F\uFF01
258
+ `),0):(console.error("\u26A0\uFE0F \u767B\u5F55\u6210\u529F\u4F46\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u6743\u9650"),1)}_readLineOnce(){return new Promise(e=>{let r=require("readline").createInterface({input:process.stdin,output:null,terminal:!1});r.once("line",i=>{r.close(),process.stdin.destroy(),e(i)}),r.once("close",()=>{process.stdin.destroy(),e("")})})}async _fallbackManualInput(){console.log(`
259
+ \u8BF7\u9009\u62E9\u767B\u5F55\u65B9\u5F0F:`),console.log(" 1. \u524D\u5F80 https://makecoder.com/my/apikeys \u83B7\u53D6 API Key \u540E\u7C98\u8D34\u5230\u8FD9\u91CC"),console.log(` 2. \u5B8C\u6210\u6D4F\u89C8\u5668\u6388\u6743\u540E\u5C06\u56DE\u8C03\u5730\u5740\u7C98\u8D34\u5230\u8FD9\u91CC
260
+ `),process.stdout.write("> ");let e=await this._readLineOnce().then(r=>r.trim());if(!e)return console.error("\u274C \u672A\u8F93\u5165\u5185\u5BB9\uFF0C\u767B\u5F55\u53D6\u6D88"),1;try{let i=new URL(e).searchParams.get("token");if(i){let o=i.indexOf(".");if(o>0&&o<i.length-1)return this._saveAndDone(i)}}catch{}let s=e.indexOf(".");return s<=0||s===e.length-1?(console.error("\u274C \u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u8F93\u5165 API Key \u6216\u5B8C\u6574\u7684\u56DE\u8C03\u5730\u5740"),1):this._saveAndDone(e)}loginWithApiKey(e){let s=e.indexOf(".");if(s<=0||s===e.length-1)return console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF"),1;let r=e.substring(0,s).trim(),i=e.substring(s+1).trim();return!r||!i?(console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF"),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 Xa({baseUrl:"https://makecoder.com"}),r,i,o;try{({authUrl:r,waitPromise:i,browserOpened:o}=await s.startOAuthFlow())}catch(l){return console.error(`\u274C \u542F\u52A8\u767B\u5F55\u6D41\u7A0B\u5931\u8D25: ${l.message}`),console.log(`
258
261
  \u8BF7\u624B\u52A8\u8F93\u5165 API Key\uFF08\u83B7\u53D6\u5730\u5740: https://makecoder.com/my/apikeys\uFF09
259
262
  `),await this.terminalOnlyLogin()}console.log(`
260
263
  \u{1F510} \u767B\u5F55 MakeCoder
261
- `),console.log(i?" \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}
264
+ `),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}
262
265
  `),console.log(` \u65B9\u5F0F\u4E8C\uFF1A\u7C98\u8D34 API Key\uFF08\u83B7\u53D6\u5730\u5740: https://makecoder.com/my/apikeys\uFF09
263
- `);let o=rc.createInterface({input:process.stdin,output:process.stdout}),a=new Promise((l,u)=>{o.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 f=p.indexOf(".");if(f<=0||f===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=>(o.close(),`${l.ak}.${l.sk}`)),a.then(l=>(s.cleanup(),l))])}catch(l){if(l.message==="__empty_input__"){console.log(`
266
+ `);let n=Ya.createInterface({input:process.stdin,output:process.stdout}),a=new Promise((l,d)=>{n.question("\u8BF7\u8F93\u5165 API Key\uFF08\u7559\u7A7A\u5219\u7B49\u5F85\u6D4F\u89C8\u5668\u767B\u5F55\uFF09: ",u=>{let p=u.trim();if(!p){d(new Error("__empty_input__"));return}let m=p.indexOf(".");if(m<=0||m===p.length-1){d(new Error("API Key \u683C\u5F0F\u9519\u8BEF"));return}l(p)})}),c;try{c=await Promise.race([i.then(l=>(n.close(),`${l.ak}.${l.sk}`)),a.then(l=>(s.cleanup(),l))])}catch(l){if(l.message==="__empty_input__"){console.log(`
264
267
  \u23F3 \u7B49\u5F85\u6D4F\u89C8\u5668\u6388\u6743\u5B8C\u6210...\uFF08\u8D85\u65F6\u65F6\u95F4: 5\u5206\u949F\uFF09
265
- `);try{let u=await n;c=`${u.ak}.${u.sk}`}catch(u){return s.cleanup(),console.error(`
266
- \u274C \u767B\u5F55\u5931\u8D25: ${u.message}`),1}}else return o.close(),s.cleanup(),console.error(`
268
+ `);try{let d=await i;c=`${d.ak}.${d.sk}`}catch(d){return s.cleanup(),console.error(`
269
+ \u274C \u767B\u5F55\u5931\u8D25: ${d.message}`),1}}else return n.close(),s.cleanup(),console.error(`
267
270
  \u274C ${l.message}`),1}return s.cleanup(),this.argParser.saveAuthToConfig(c)?(console.log(`
268
271
  \u2705 \u767B\u5F55\u6210\u529F\uFF01API Key \u5DF2\u4FDD\u5B58\u5230 ${this.argParser.configPath}`),0):(console.error(`
269
- \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=rc.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 i=n.indexOf(".");if(i<=0||i===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"),i=require("http"),o=new URL("https://makecoder.com/bigapis/auth/v1/users/me"),a=o.protocol==="https:"?n:i,c=await new Promise((l,u)=>{let d=a.request(o,{method:"GET",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},timeout:5e3},p=>{let f="";p.on("data",g=>{f+=g}),p.on("end",()=>{if(p.statusCode===200)try{l(JSON.parse(f))}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(`
272
+ \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=Ya.createInterface({input:process.stdin,output:process.stdout});return new Promise(s=>{e.question("\u8BF7\u8F93\u5165 API Key: ",r=>{e.close();let i=r.trim();if(!i){console.error("\u274C \u672A\u8F93\u5165 API Key"),s(1);return}let o=i.indexOf(".");if(o<=0||o===i.length-1){console.error("\u274C API Key \u683C\u5F0F\u9519\u8BEF"),s(1);return}this.argParser.saveAuthToConfig(i)?(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 i=require("https"),o=require("http"),n=new URL("https://makecoder.com/bigapis/auth/v1/users/me"),a=n.protocol==="https:"?i:o,c=await new Promise((l,d)=>{let u=a.request(n,{method:"GET",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},timeout:5e3},p=>{let m="";p.on("data",y=>{m+=y}),p.on("end",()=>{if(p.statusCode===200)try{l(JSON.parse(m))}catch{d(new Error("\u89E3\u6790\u54CD\u5E94\u5931\u8D25"))}else p.statusCode===401?d(new Error("unauthorized")):d(new Error(`HTTP ${p.statusCode}`))})});u.on("error",d),u.on("timeout",()=>{u.destroy(),d(new Error("\u8BF7\u6C42\u8D85\u65F6"))}),u.end()});c.data?.id&&console.log(`User ID: ${c.data.id}`),c.data?.username&&console.log(`User: ${c.data.username}`)}catch(i){i.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(`
270
273
  \u7528\u6CD5:
271
274
  coder auth <command>
272
275
 
@@ -276,7 +279,7 @@ ${Ih}
276
279
  status \u67E5\u770B\u5F53\u524D\u767B\u5F55\u72B6\u6001
277
280
 
278
281
  \u9009\u9879 (login):
279
- --apikey <API Key> \u76F4\u63A5\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09
282
+ --apikey <apiKey> \u76F4\u63A5\u63D0\u4F9B API Key
280
283
 
281
284
  \u793A\u4F8B:
282
285
  coder auth login # \u6D4F\u89C8\u5668\u767B\u5F55 \u6216 \u7EC8\u7AEF\u8F93\u5165 API Key
@@ -285,63 +288,66 @@ ${Ih}
285
288
  coder auth status # \u67E5\u770B\u767B\u5F55\u72B6\u6001
286
289
 
287
290
  \u83B7\u53D6 API Key: https://makecoder.com/my/apikeys
288
- `)}};nc.exports=Fn});var Ls=x(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.getParsedType=Q.ZodParsedType=Q.objectUtil=Q.util=void 0;var Bn;(function(t){t.assertEqual=n=>{};function e(n){}t.assertIs=e;function s(n){throw new Error}t.assertNever=s,t.arrayToEnum=n=>{let i={};for(let o of n)i[o]=o;return i},t.getValidEnumValues=n=>{let i=t.objectKeys(n).filter(a=>typeof n[n[a]]!="number"),o={};for(let a of i)o[a]=n[a];return t.objectValues(o)},t.objectValues=n=>t.objectKeys(n).map(function(i){return n[i]}),t.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let i=[];for(let o in n)Object.prototype.hasOwnProperty.call(n,o)&&i.push(o);return i},t.find=(n,i)=>{for(let o of n)if(i(o))return o},t.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function r(n,i=" | "){return n.map(o=>typeof o=="string"?`'${o}'`:o).join(i)}t.joinValues=r,t.jsonStringifyReplacer=(n,i)=>typeof i=="bigint"?i.toString():i})(Bn||(Q.util=Bn={}));var oc;(function(t){t.mergeShapes=(e,s)=>({...e,...s})})(oc||(Q.objectUtil=oc={}));Q.ZodParsedType=Bn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);var Nh=t=>{switch(typeof t){case"undefined":return Q.ZodParsedType.undefined;case"string":return Q.ZodParsedType.string;case"number":return Number.isNaN(t)?Q.ZodParsedType.nan:Q.ZodParsedType.number;case"boolean":return Q.ZodParsedType.boolean;case"function":return Q.ZodParsedType.function;case"bigint":return Q.ZodParsedType.bigint;case"symbol":return Q.ZodParsedType.symbol;case"object":return Array.isArray(t)?Q.ZodParsedType.array:t===null?Q.ZodParsedType.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?Q.ZodParsedType.promise:typeof Map<"u"&&t instanceof Map?Q.ZodParsedType.map:typeof Set<"u"&&t instanceof Set?Q.ZodParsedType.set:typeof Date<"u"&&t instanceof Date?Q.ZodParsedType.date:Q.ZodParsedType.object;default:return Q.ZodParsedType.unknown}};Q.getParsedType=Nh});var yr=x(lt=>{"use strict";Object.defineProperty(lt,"__esModule",{value:!0});lt.ZodError=lt.quotelessJson=lt.ZodIssueCode=void 0;var ac=Ls();lt.ZodIssueCode=ac.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 jh=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:");lt.quotelessJson=jh;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(i){return i.message},r={_errors:[]},n=i=>{for(let o of i.issues)if(o.code==="invalid_union")o.unionErrors.map(n);else if(o.code==="invalid_return_type")n(o.returnTypeError);else if(o.code==="invalid_arguments")n(o.argumentsError);else if(o.path.length===0)r._errors.push(s(o));else{let a=r,c=0;for(;c<o.path.length;){let l=o.path[c];c===o.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(s(o))):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,ac.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 i=n.path[0];s[i]=s[i]||[],s[i].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:s}}get formErrors(){return this.flatten()}};lt.ZodError=Ps;Ps.create=t=>new Ps(t)});var Wn=x(Zn=>{"use strict";Object.defineProperty(Zn,"__esModule",{value:!0});var he=yr(),St=Ls(),qh=(t,e)=>{let s;switch(t.code){case he.ZodIssueCode.invalid_type:t.received===St.ZodParsedType.undefined?s="Required":s=`Expected ${t.expected}, received ${t.received}`;break;case he.ZodIssueCode.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(t.expected,St.util.jsonStringifyReplacer)}`;break;case he.ZodIssueCode.unrecognized_keys:s=`Unrecognized key(s) in object: ${St.util.joinValues(t.keys,", ")}`;break;case he.ZodIssueCode.invalid_union:s="Invalid input";break;case he.ZodIssueCode.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${St.util.joinValues(t.options)}`;break;case he.ZodIssueCode.invalid_enum_value:s=`Invalid enum value. Expected ${St.util.joinValues(t.options)}, received '${t.received}'`;break;case he.ZodIssueCode.invalid_arguments:s="Invalid function arguments";break;case he.ZodIssueCode.invalid_return_type:s="Invalid function return type";break;case he.ZodIssueCode.invalid_date:s="Invalid date";break;case he.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}"`:St.util.assertNever(t.validation):t.validation!=="regex"?s=`Invalid ${t.validation}`:s="Invalid";break;case he.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 he.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 he.ZodIssueCode.custom:s="Invalid input";break;case he.ZodIssueCode.invalid_intersection_types:s="Intersection results could not be merged";break;case he.ZodIssueCode.not_multiple_of:s=`Number must be a multiple of ${t.multipleOf}`;break;case he.ZodIssueCode.not_finite:s="Number must be finite";break;default:s=e.defaultError,St.util.assertNever(t)}return{message:s}};Zn.default=qh});var _r=x(ut=>{"use strict";var Mh=ut&&ut.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ut,"__esModule",{value:!0});ut.defaultErrorMap=void 0;ut.setErrorMap=Gh;ut.getErrorMap=Fh;var cc=Mh(Wn());ut.defaultErrorMap=cc.default;var lc=cc.default;function Gh(t){lc=t}function Fh(){return lc}});var Kn=x(z=>{"use strict";var Bh=z&&z.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(z,"__esModule",{value:!0});z.isAsync=z.isValid=z.isDirty=z.isAborted=z.OK=z.DIRTY=z.INVALID=z.ParseStatus=z.EMPTY_PATH=z.makeIssue=void 0;z.addIssueToContext=Vh;var Zh=_r(),uc=Bh(Wn()),Wh=t=>{let{data:e,path:s,errorMaps:r,issueData:n}=t,i=[...s,...n.path||[]],o={...n,path:i};if(n.message!==void 0)return{...n,path:i,message:n.message};let a="",c=r.filter(l=>!!l).slice().reverse();for(let l of c)a=l(o,{data:e,defaultError:a}).message;return{...n,path:i,message:a}};z.makeIssue=Wh;z.EMPTY_PATH=[];function Vh(t,e){let s=(0,Zh.getErrorMap)(),r=(0,z.makeIssue)({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,s,s===uc.default?void 0:uc.default].filter(n=>!!n)});t.common.issues.push(r)}var Vn=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 z.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 i=await n.key,o=await n.value;r.push({key:i,value:o})}return t.mergeObjectSync(e,r)}static mergeObjectSync(e,s){let r={};for(let n of s){let{key:i,value:o}=n;if(i.status==="aborted"||o.status==="aborted")return z.INVALID;i.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof o.value<"u"||n.alwaysSet)&&(r[i.value]=o.value)}return{status:e.value,value:r}}};z.ParseStatus=Vn;z.INVALID=Object.freeze({status:"aborted"});var Kh=t=>({status:"dirty",value:t});z.DIRTY=Kh;var zh=t=>({status:"valid",value:t});z.OK=zh;var Jh=t=>t.status==="aborted";z.isAborted=Jh;var Hh=t=>t.status==="dirty";z.isDirty=Hh;var Yh=t=>t.status==="valid";z.isValid=Yh;var Xh=t=>typeof Promise<"u"&&t instanceof Promise;z.isAsync=Xh});var pc=x(dc=>{"use strict";Object.defineProperty(dc,"__esModule",{value:!0})});var mc=x(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.errorUtil=void 0;var fc;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(fc||(wr.errorUtil=fc={}))});var Ec=x(m=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.discriminatedUnion=m.date=m.boolean=m.bigint=m.array=m.any=m.coerce=m.ZodFirstPartyTypeKind=m.late=m.ZodSchema=m.Schema=m.ZodReadonly=m.ZodPipeline=m.ZodBranded=m.BRAND=m.ZodNaN=m.ZodCatch=m.ZodDefault=m.ZodNullable=m.ZodOptional=m.ZodTransformer=m.ZodEffects=m.ZodPromise=m.ZodNativeEnum=m.ZodEnum=m.ZodLiteral=m.ZodLazy=m.ZodFunction=m.ZodSet=m.ZodMap=m.ZodRecord=m.ZodTuple=m.ZodIntersection=m.ZodDiscriminatedUnion=m.ZodUnion=m.ZodObject=m.ZodArray=m.ZodVoid=m.ZodNever=m.ZodUnknown=m.ZodAny=m.ZodNull=m.ZodUndefined=m.ZodSymbol=m.ZodDate=m.ZodBoolean=m.ZodBigInt=m.ZodNumber=m.ZodString=m.ZodType=void 0;m.NEVER=m.void=m.unknown=m.union=m.undefined=m.tuple=m.transformer=m.symbol=m.string=m.strictObject=m.set=m.record=m.promise=m.preprocess=m.pipeline=m.ostring=m.optional=m.onumber=m.oboolean=m.object=m.number=m.nullable=m.null=m.never=m.nativeEnum=m.nan=m.map=m.literal=m.lazy=m.intersection=m.instanceof=m.function=m.enum=m.effect=void 0;m.datetimeRegex=wc;m.custom=kc;var S=yr(),br=_r(),U=mc(),h=Kn(),E=Ls(),Ue=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}},hc=(t,e)=>{if((0,h.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 j(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:(o,a)=>{let{message:c}=t;return o.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??r??a.defaultError}:o.code!=="invalid_type"?{message:a.defaultError}:{message:c??s??a.defaultError}},description:n}}var q=class{get description(){return this._def.description}_getType(e){return(0,E.getParsedType)(e.data)}_getOrReturnCtx(e,s){return s||{common:e.parent.common,data:e.data,parsedType:(0,E.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new h.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,E.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let s=this._parse(e);if((0,h.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,E.getParsedType)(e)},n=this._parseSync({data:e,path:r.path,parent:r});return hc(r,n)}"~validate"(e){let s={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,E.getParsedType)(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:s});return(0,h.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,h.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,E.getParsedType)(e)},n=this._parse({data:e,path:r.path,parent:r}),i=await((0,h.isAsync)(n)?n:Promise.resolve(n));return hc(r,i)}refine(e,s){let r=n=>typeof s=="string"||typeof s>"u"?{message:s}:typeof s=="function"?s(n):s;return this._refinement((n,i)=>{let o=e(n),a=()=>i.addIssue({code:S.ZodIssueCode.custom,...r(n)});return typeof Promise<"u"&&o instanceof Promise?o.then(c=>c?!0:(a(),!1)):o?!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 $e({schema:this,typeName:R.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 ve.create(this,this._def)}nullable(){return Ke.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return tt.create(this)}promise(){return ft.create(this,this._def)}or(e){return vt.create([this,e],this._def)}and(e){return Ut.create(this,e,this._def)}transform(e){return new $e({...j(this._def),schema:this,typeName:R.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let s=typeof e=="function"?e:()=>e;return new Pt({...j(this._def),innerType:this,defaultValue:s,typeName:R.ZodDefault})}brand(){return new Ns({typeName:R.ZodBranded,type:this,...j(this._def)})}catch(e){let s=typeof e=="function"?e:()=>e;return new Nt({...j(this._def),innerType:this,catchValue:s,typeName:R.ZodCatch})}describe(e){let s=this.constructor;return new s({...this._def,description:e})}pipe(e){return js.create(this,e)}readonly(){return jt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};m.ZodType=q;m.Schema=q;m.ZodSchema=q;var Qh=/^c[^\s-]{8,}$/i,eg=/^[0-9a-z]+$/,tg=/^[0-9A-HJKMNP-TV-Z]{26}$/i,sg=/^[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,rg=/^[a-z0-9_-]{21}$/i,ng=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ig=/^[-+]?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)?)??$/,og=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ag="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",zn,cg=/^(?:(?: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])$/,lg=/^(?:(?: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])$/,ug=/^(([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]))$/,dg=/^(([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])$/,pg=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,fg=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,yc="((\\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])))",mg=new RegExp(`^${yc}$`);function _c(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 hg(t){return new RegExp(`^${_c(t)}$`)}function wc(t){let e=`${yc}T${_c(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 gg(t,e){return!!((e==="v4"||!e)&&cg.test(t)||(e==="v6"||!e)&&ug.test(t))}function yg(t,e){if(!ng.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 _g(t,e){return!!((e==="v4"||!e)&&lg.test(t)||(e==="v6"||!e)&&dg.test(t))}var dt=class t extends q{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==E.ZodParsedType.string){let i=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(i,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.string,received:i.parsedType}),h.INVALID}let r=new h.ParseStatus,n;for(let i of this._def.checks)if(i.kind==="min")e.data.length<i.value&&(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),r.dirty());else if(i.kind==="max")e.data.length>i.value&&(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),r.dirty());else if(i.kind==="length"){let o=e.data.length>i.value,a=e.data.length<i.value;(o||a)&&(n=this._getOrReturnCtx(e,n),o?(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):a&&(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),r.dirty())}else if(i.kind==="email")og.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"email",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="emoji")zn||(zn=new RegExp(ag,"u")),zn.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"emoji",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="uuid")sg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"uuid",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="nanoid")rg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"nanoid",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="cuid")Qh.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"cuid",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="cuid2")eg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"cuid2",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="ulid")tg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"ulid",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty());else if(i.kind==="url")try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"url",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"regex",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty())):i.kind==="trim"?e.data=e.data.trim():i.kind==="includes"?e.data.includes(i.value,i.position)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),r.dirty()):i.kind==="toLowerCase"?e.data=e.data.toLowerCase():i.kind==="toUpperCase"?e.data=e.data.toUpperCase():i.kind==="startsWith"?e.data.startsWith(i.value)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{startsWith:i.value},message:i.message}),r.dirty()):i.kind==="endsWith"?e.data.endsWith(i.value)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:{endsWith:i.value},message:i.message}),r.dirty()):i.kind==="datetime"?wc(i).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"datetime",message:i.message}),r.dirty()):i.kind==="date"?mg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"date",message:i.message}),r.dirty()):i.kind==="time"?hg(i).test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.invalid_string,validation:"time",message:i.message}),r.dirty()):i.kind==="duration"?ig.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"duration",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):i.kind==="ip"?gg(e.data,i.version)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"ip",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):i.kind==="jwt"?yg(e.data,i.alg)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"jwt",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):i.kind==="cidr"?_g(e.data,i.version)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"cidr",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):i.kind==="base64"?pg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"base64",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):i.kind==="base64url"?fg.test(e.data)||(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{validation:"base64url",code:S.ZodIssueCode.invalid_string,message:i.message}),r.dirty()):E.util.assertNever(i);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,...U.errorUtil.errToObj(r)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...U.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...U.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...U.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...U.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...U.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...U.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...U.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...U.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...U.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...U.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...U.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...U.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...U.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,...U.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,...U.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...U.errorUtil.errToObj(e)})}regex(e,s){return this._addCheck({kind:"regex",regex:e,...U.errorUtil.errToObj(s)})}includes(e,s){return this._addCheck({kind:"includes",value:e,position:s?.position,...U.errorUtil.errToObj(s?.message)})}startsWith(e,s){return this._addCheck({kind:"startsWith",value:e,...U.errorUtil.errToObj(s)})}endsWith(e,s){return this._addCheck({kind:"endsWith",value:e,...U.errorUtil.errToObj(s)})}min(e,s){return this._addCheck({kind:"min",value:e,...U.errorUtil.errToObj(s)})}max(e,s){return this._addCheck({kind:"max",value:e,...U.errorUtil.errToObj(s)})}length(e,s){return this._addCheck({kind:"length",value:e,...U.errorUtil.errToObj(s)})}nonempty(e){return this.min(1,U.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}};m.ZodString=dt;dt.create=t=>new dt({checks:[],typeName:R.ZodString,coerce:t?.coerce??!1,...j(t)});function wg(t,e){let s=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,n=s>r?s:r,i=Number.parseInt(t.toFixed(n).replace(".","")),o=Number.parseInt(e.toFixed(n).replace(".",""));return i%o/10**n}var It=class t extends q{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)!==E.ZodParsedType.number){let i=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(i,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.number,received:i.parsedType}),h.INVALID}let r,n=new h.ParseStatus;for(let i of this._def.checks)i.kind==="int"?E.util.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty()):i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind==="multipleOf"?wg(e.data,i.value)!==0&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.not_finite,message:i.message}),n.dirty()):E.util.assertNever(i);return{status:n.value,value:e.data}}gte(e,s){return this.setLimit("min",e,!0,U.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,U.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,U.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,U.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:U.errorUtil.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:U.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:U.errorUtil.toString(s)})}finite(e){return this._addCheck({kind:"finite",message:U.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.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"&&E.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)}};m.ZodNumber=It;It.create=t=>new It({checks:[],typeName:R.ZodNumber,coerce:t?.coerce||!1,...j(t)});var Ct=class t extends q{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)!==E.ZodParsedType.bigint)return this._getInvalidInput(e);let r,n=new h.ParseStatus;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):E.util.assertNever(i);return{status:n.value,value:e.data}}_getInvalidInput(e){let s=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.bigint,received:s.parsedType}),h.INVALID}gte(e,s){return this.setLimit("min",e,!0,U.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,U.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,U.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,U.errorUtil.toString(s))}setLimit(e,s,r,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:U.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:U.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:U.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}};m.ZodBigInt=Ct;Ct.create=t=>new Ct({checks:[],typeName:R.ZodBigInt,coerce:t?.coerce??!1,...j(t)});var Et=class extends q{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==E.ZodParsedType.boolean){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.boolean,received:r.parsedType}),h.INVALID}return(0,h.OK)(e.data)}};m.ZodBoolean=Et;Et.create=t=>new Et({typeName:R.ZodBoolean,coerce:t?.coerce||!1,...j(t)});var $t=class t extends q{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==E.ZodParsedType.date){let i=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(i,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.date,received:i.parsedType}),h.INVALID}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(i,{code:S.ZodIssueCode.invalid_date}),h.INVALID}let r=new h.ParseStatus,n;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()<i.value&&(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),r.dirty()):i.kind==="max"?e.data.getTime()>i.value&&(n=this._getOrReturnCtx(e,n),(0,h.addIssueToContext)(n,{code:S.ZodIssueCode.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):E.util.assertNever(i);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:U.errorUtil.toString(s)})}max(e,s){return this._addCheck({kind:"max",value:e.getTime(),message:U.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}};m.ZodDate=$t;$t.create=t=>new $t({checks:[],coerce:t?.coerce||!1,typeName:R.ZodDate,...j(t)});var ns=class extends q{_parse(e){if(this._getType(e)!==E.ZodParsedType.symbol){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.symbol,received:r.parsedType}),h.INVALID}return(0,h.OK)(e.data)}};m.ZodSymbol=ns;ns.create=t=>new ns({typeName:R.ZodSymbol,...j(t)});var At=class extends q{_parse(e){if(this._getType(e)!==E.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.undefined,received:r.parsedType}),h.INVALID}return(0,h.OK)(e.data)}};m.ZodUndefined=At;At.create=t=>new At({typeName:R.ZodUndefined,...j(t)});var Tt=class extends q{_parse(e){if(this._getType(e)!==E.ZodParsedType.null){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.null,received:r.parsedType}),h.INVALID}return(0,h.OK)(e.data)}};m.ZodNull=Tt;Tt.create=t=>new Tt({typeName:R.ZodNull,...j(t)});var pt=class extends q{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,h.OK)(e.data)}};m.ZodAny=pt;pt.create=t=>new pt({typeName:R.ZodAny,...j(t)});var et=class extends q{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,h.OK)(e.data)}};m.ZodUnknown=et;et.create=t=>new et({typeName:R.ZodUnknown,...j(t)});var Ne=class extends q{_parse(e){let s=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.never,received:s.parsedType}),h.INVALID}};m.ZodNever=Ne;Ne.create=t=>new Ne({typeName:R.ZodNever,...j(t)});var is=class extends q{_parse(e){if(this._getType(e)!==E.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.void,received:r.parsedType}),h.INVALID}return(0,h.OK)(e.data)}};m.ZodVoid=is;is.create=t=>new is({typeName:R.ZodVoid,...j(t)});var tt=class t extends q{_parse(e){let{ctx:s,status:r}=this._processInputParams(e),n=this._def;if(s.parsedType!==E.ZodParsedType.array)return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.array,received:s.parsedType}),h.INVALID;if(n.exactLength!==null){let o=s.data.length>n.exactLength.value,a=s.data.length<n.exactLength.value;(o||a)&&((0,h.addIssueToContext)(s,{code:o?S.ZodIssueCode.too_big:S.ZodIssueCode.too_small,minimum:a?n.exactLength.value:void 0,maximum:o?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,h.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,h.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((o,a)=>n.type._parseAsync(new Ue(s,o,s.path,a)))).then(o=>h.ParseStatus.mergeArray(r,o));let i=[...s.data].map((o,a)=>n.type._parseSync(new Ue(s,o,s.path,a)));return h.ParseStatus.mergeArray(r,i)}get element(){return this._def.type}min(e,s){return new t({...this._def,minLength:{value:e,message:U.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxLength:{value:e,message:U.errorUtil.toString(s)}})}length(e,s){return new t({...this._def,exactLength:{value:e,message:U.errorUtil.toString(s)}})}nonempty(e){return this.min(1,e)}};m.ZodArray=tt;tt.create=(t,e)=>new tt({type:t,minLength:null,maxLength:null,exactLength:null,typeName:R.ZodArray,...j(e)});function rs(t){if(t instanceof Ie){let e={};for(let s in t.shape){let r=t.shape[s];e[s]=ve.create(rs(r))}return new Ie({...t._def,shape:()=>e})}else return t instanceof tt?new tt({...t._def,type:rs(t.element)}):t instanceof ve?ve.create(rs(t.unwrap())):t instanceof Ke?Ke.create(rs(t.unwrap())):t instanceof Ve?Ve.create(t.items.map(e=>rs(e))):t}var Ie=class t extends q{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=E.util.objectKeys(e);return this._cached={shape:e,keys:s},this._cached}_parse(e){if(this._getType(e)!==E.ZodParsedType.object){let l=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(l,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.object,received:l.parsedType}),h.INVALID}let{status:r,ctx:n}=this._processInputParams(e),{shape:i,keys:o}=this._getCached(),a=[];if(!(this._def.catchall instanceof Ne&&this._def.unknownKeys==="strip"))for(let l in n.data)o.includes(l)||a.push(l);let c=[];for(let l of o){let u=i[l],d=n.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new Ue(n,d,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof Ne){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,h.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 Ue(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=>h.ParseStatus.mergeObjectSync(r,l)):h.ParseStatus.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return U.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:U.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:R.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 E.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 E.util.objectKeys(this.shape))e[r]||(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}deepPartial(){return rs(this)}partial(e){let s={};for(let r of E.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 E.util.objectKeys(this.shape))if(e&&!e[r])s[r]=this.shape[r];else{let i=this.shape[r];for(;i instanceof ve;)i=i._def.innerType;s[r]=i}return new t({...this._def,shape:()=>s})}keyof(){return bc(E.util.objectKeys(this.shape))}};m.ZodObject=Ie;Ie.create=(t,e)=>new Ie({shape:()=>t,unknownKeys:"strip",catchall:Ne.create(),typeName:R.ZodObject,...j(e)});Ie.strictCreate=(t,e)=>new Ie({shape:()=>t,unknownKeys:"strict",catchall:Ne.create(),typeName:R.ZodObject,...j(e)});Ie.lazycreate=(t,e)=>new Ie({shape:t,unknownKeys:"strip",catchall:Ne.create(),typeName:R.ZodObject,...j(e)});var vt=class extends q{_parse(e){let{ctx:s}=this._processInputParams(e),r=this._def.options;function n(i){for(let a of i)if(a.result.status==="valid")return a.result;for(let a of i)if(a.result.status==="dirty")return s.common.issues.push(...a.ctx.common.issues),a.result;let o=i.map(a=>new S.ZodError(a.ctx.common.issues));return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union,unionErrors:o}),h.INVALID}if(s.common.async)return Promise.all(r.map(async i=>{let o={...s,common:{...s.common,issues:[]},parent:null};return{result:await i._parseAsync({data:s.data,path:s.path,parent:o}),ctx:o}})).then(n);{let i,o=[];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"&&!i&&(i={result:u,ctx:l}),l.common.issues.length&&o.push(l.common.issues)}if(i)return s.common.issues.push(...i.ctx.common.issues),i.result;let a=o.map(c=>new S.ZodError(c));return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union,unionErrors:a}),h.INVALID}}get options(){return this._def.options}};m.ZodUnion=vt;vt.create=(t,e)=>new vt({options:t,typeName:R.ZodUnion,...j(e)});var Qe=t=>t instanceof Ot?Qe(t.schema):t instanceof $e?Qe(t.innerType()):t instanceof Dt?[t.value]:t instanceof Rt?t.options:t instanceof Lt?E.util.objectValues(t.enum):t instanceof Pt?Qe(t._def.innerType):t instanceof At?[void 0]:t instanceof Tt?[null]:t instanceof ve?[void 0,...Qe(t.unwrap())]:t instanceof Ke?[null,...Qe(t.unwrap())]:t instanceof Ns||t instanceof jt?Qe(t.unwrap()):t instanceof Nt?Qe(t._def.innerType):[],kr=class t extends q{_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==E.ZodParsedType.object)return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.object,received:s.parsedType}),h.INVALID;let r=this.discriminator,n=s.data[r],i=this.optionsMap.get(n);return i?s.common.async?i._parseAsync({data:s.data,path:s.path,parent:s}):i._parseSync({data:s.data,path:s.path,parent:s}):((0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),h.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 i of s){let o=Qe(i.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let a of o){if(n.has(a))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(a)}`);n.set(a,i)}}return new t({typeName:R.ZodDiscriminatedUnion,discriminator:e,options:s,optionsMap:n,...j(r)})}};m.ZodDiscriminatedUnion=kr;function Jn(t,e){let s=(0,E.getParsedType)(t),r=(0,E.getParsedType)(e);if(t===e)return{valid:!0,data:t};if(s===E.ZodParsedType.object&&r===E.ZodParsedType.object){let n=E.util.objectKeys(e),i=E.util.objectKeys(t).filter(a=>n.indexOf(a)!==-1),o={...t,...e};for(let a of i){let c=Jn(t[a],e[a]);if(!c.valid)return{valid:!1};o[a]=c.data}return{valid:!0,data:o}}else if(s===E.ZodParsedType.array&&r===E.ZodParsedType.array){if(t.length!==e.length)return{valid:!1};let n=[];for(let i=0;i<t.length;i++){let o=t[i],a=e[i],c=Jn(o,a);if(!c.valid)return{valid:!1};n.push(c.data)}return{valid:!0,data:n}}else return s===E.ZodParsedType.date&&r===E.ZodParsedType.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}var Ut=class extends q{_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=(i,o)=>{if((0,h.isAborted)(i)||(0,h.isAborted)(o))return h.INVALID;let a=Jn(i.value,o.value);return a.valid?(((0,h.isDirty)(i)||(0,h.isDirty)(o))&&s.dirty(),{status:s.value,value:a.data}):((0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_intersection_types}),h.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(([i,o])=>n(i,o)):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}))}};m.ZodIntersection=Ut;Ut.create=(t,e,s)=>new Ut({left:t,right:e,typeName:R.ZodIntersection,...j(s)});var Ve=class t extends q{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==E.ZodParsedType.array)return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.array,received:r.parsedType}),h.INVALID;if(r.data.length<this._def.items.length)return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),h.INVALID;!this._def.rest&&r.data.length>this._def.items.length&&((0,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),s.dirty());let i=[...r.data].map((o,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new Ue(r,o,r.path,a)):null}).filter(o=>!!o);return r.common.async?Promise.all(i).then(o=>h.ParseStatus.mergeArray(s,o)):h.ParseStatus.mergeArray(s,i)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};m.ZodTuple=Ve;Ve.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ve({items:t,typeName:R.ZodTuple,rest:null,...j(e)})};var xr=class t extends q{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!==E.ZodParsedType.object)return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.object,received:r.parsedType}),h.INVALID;let n=[],i=this._def.keyType,o=this._def.valueType;for(let a in r.data)n.push({key:i._parse(new Ue(r,a,r.path,a)),value:o._parse(new Ue(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?h.ParseStatus.mergeObjectAsync(s,n):h.ParseStatus.mergeObjectSync(s,n)}get element(){return this._def.valueType}static create(e,s,r){return s instanceof q?new t({keyType:e,valueType:s,typeName:R.ZodRecord,...j(r)}):new t({keyType:dt.create(),valueType:e,typeName:R.ZodRecord,...j(s)})}};m.ZodRecord=xr;var os=class extends q{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!==E.ZodParsedType.map)return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.map,received:r.parsedType}),h.INVALID;let n=this._def.keyType,i=this._def.valueType,o=[...r.data.entries()].map(([a,c],l)=>({key:n._parse(new Ue(r,a,r.path,[l,"key"])),value:i._parse(new Ue(r,c,r.path,[l,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of o){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return h.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 o){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return h.INVALID;(l.status==="dirty"||u.status==="dirty")&&s.dirty(),a.set(l.value,u.value)}return{status:s.value,value:a}}}};m.ZodMap=os;os.create=(t,e,s)=>new os({valueType:e,keyType:t,typeName:R.ZodMap,...j(s)});var as=class t extends q{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==E.ZodParsedType.set)return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.set,received:r.parsedType}),h.INVALID;let n=this._def;n.minSize!==null&&r.data.size<n.minSize.value&&((0,h.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,h.addIssueToContext)(r,{code:S.ZodIssueCode.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),s.dirty());let i=this._def.valueType;function o(c){let l=new Set;for(let u of c){if(u.status==="aborted")return h.INVALID;u.status==="dirty"&&s.dirty(),l.add(u.value)}return{status:s.value,value:l}}let a=[...r.data.values()].map((c,l)=>i._parse(new Ue(r,c,r.path,l)));return r.common.async?Promise.all(a).then(c=>o(c)):o(a)}min(e,s){return new t({...this._def,minSize:{value:e,message:U.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxSize:{value:e,message:U.errorUtil.toString(s)}})}size(e,s){return this.min(e,s).max(e,s)}nonempty(e){return this.min(1,e)}};m.ZodSet=as;as.create=(t,e)=>new as({valueType:t,minSize:null,maxSize:null,typeName:R.ZodSet,...j(e)});var Sr=class t extends q{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==E.ZodParsedType.function)return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.function,received:s.parsedType}),h.INVALID;function r(a,c){return(0,h.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,br.getErrorMap)(),br.defaultErrorMap].filter(l=>!!l),issueData:{code:S.ZodIssueCode.invalid_arguments,argumentsError:c}})}function n(a,c){return(0,h.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,br.getErrorMap)(),br.defaultErrorMap].filter(l=>!!l),issueData:{code:S.ZodIssueCode.invalid_return_type,returnTypeError:c}})}let i={errorMap:s.common.contextualErrorMap},o=s.data;if(this._def.returns instanceof ft){let a=this;return(0,h.OK)(async function(...c){let l=new S.ZodError([]),u=await a._def.args.parseAsync(c,i).catch(f=>{throw l.addIssue(r(c,f)),l}),d=await Reflect.apply(o,this,u);return await a._def.returns._def.type.parseAsync(d,i).catch(f=>{throw l.addIssue(n(d,f)),l})})}else{let a=this;return(0,h.OK)(function(...c){let l=a._def.args.safeParse(c,i);if(!l.success)throw new S.ZodError([r(c,l.error)]);let u=Reflect.apply(o,this,l.data),d=a._def.returns.safeParse(u,i);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:Ve.create(e).rest(et.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||Ve.create([]).rest(et.create()),returns:s||et.create(),typeName:R.ZodFunction,...j(r)})}};m.ZodFunction=Sr;var Ot=class extends q{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})}};m.ZodLazy=Ot;Ot.create=(t,e)=>new Ot({getter:t,typeName:R.ZodLazy,...j(e)});var Dt=class extends q{_parse(e){if(e.data!==this._def.value){let s=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(s,{received:s.data,code:S.ZodIssueCode.invalid_literal,expected:this._def.value}),h.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}};m.ZodLiteral=Dt;Dt.create=(t,e)=>new Dt({value:t,typeName:R.ZodLiteral,...j(e)});function bc(t,e){return new Rt({values:t,typeName:R.ZodEnum,...j(e)})}var Rt=class t extends q{_parse(e){if(typeof e.data!="string"){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,h.addIssueToContext)(s,{expected:E.util.joinValues(r),received:s.parsedType,code:S.ZodIssueCode.invalid_type}),h.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,h.addIssueToContext)(s,{received:s.data,code:S.ZodIssueCode.invalid_enum_value,options:r}),h.INVALID}return(0,h.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})}};m.ZodEnum=Rt;Rt.create=bc;var Lt=class extends q{_parse(e){let s=E.util.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==E.ZodParsedType.string&&r.parsedType!==E.ZodParsedType.number){let n=E.util.objectValues(s);return(0,h.addIssueToContext)(r,{expected:E.util.joinValues(n),received:r.parsedType,code:S.ZodIssueCode.invalid_type}),h.INVALID}if(this._cache||(this._cache=new Set(E.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=E.util.objectValues(s);return(0,h.addIssueToContext)(r,{received:r.data,code:S.ZodIssueCode.invalid_enum_value,options:n}),h.INVALID}return(0,h.OK)(e.data)}get enum(){return this._def.values}};m.ZodNativeEnum=Lt;Lt.create=(t,e)=>new Lt({values:t,typeName:R.ZodNativeEnum,...j(e)});var ft=class extends q{unwrap(){return this._def.type}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==E.ZodParsedType.promise&&s.common.async===!1)return(0,h.addIssueToContext)(s,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.promise,received:s.parsedType}),h.INVALID;let r=s.parsedType===E.ZodParsedType.promise?s.data:Promise.resolve(s.data);return(0,h.OK)(r.then(n=>this._def.type.parseAsync(n,{path:s.path,errorMap:s.common.contextualErrorMap})))}};m.ZodPromise=ft;ft.create=(t,e)=>new ft({type:t,typeName:R.ZodPromise,...j(e)});var $e=class extends q{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===R.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:s,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:o=>{(0,h.addIssueToContext)(r,o),o.fatal?s.abort():s.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="preprocess"){let o=n.transform(r.data,i);if(r.common.async)return Promise.resolve(o).then(async a=>{if(s.value==="aborted")return h.INVALID;let c=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return c.status==="aborted"?h.INVALID:c.status==="dirty"||s.value==="dirty"?(0,h.DIRTY)(c.value):c});{if(s.value==="aborted")return h.INVALID;let a=this._def.schema._parseSync({data:o,path:r.path,parent:r});return a.status==="aborted"?h.INVALID:a.status==="dirty"||s.value==="dirty"?(0,h.DIRTY)(a.value):a}}if(n.type==="refinement"){let o=a=>{let c=n.refinement(a,i);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"?h.INVALID:(a.status==="dirty"&&s.dirty(),o(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"?h.INVALID:(a.status==="dirty"&&s.dirty(),o(a.value).then(()=>({status:s.value,value:a.value}))))}if(n.type==="transform")if(r.common.async===!1){let o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!(0,h.isValid)(o))return h.INVALID;let a=n.transform(o.value,i);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(o=>(0,h.isValid)(o)?Promise.resolve(n.transform(o.value,i)).then(a=>({status:s.value,value:a})):h.INVALID);E.util.assertNever(n)}};m.ZodEffects=$e;m.ZodTransformer=$e;$e.create=(t,e,s)=>new $e({schema:t,typeName:R.ZodEffects,effect:e,...j(s)});$e.createWithPreprocess=(t,e,s)=>new $e({schema:e,effect:{type:"preprocess",transform:t},typeName:R.ZodEffects,...j(s)});var ve=class extends q{_parse(e){return this._getType(e)===E.ZodParsedType.undefined?(0,h.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};m.ZodOptional=ve;ve.create=(t,e)=>new ve({innerType:t,typeName:R.ZodOptional,...j(e)});var Ke=class extends q{_parse(e){return this._getType(e)===E.ZodParsedType.null?(0,h.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};m.ZodNullable=Ke;Ke.create=(t,e)=>new Ke({innerType:t,typeName:R.ZodNullable,...j(e)});var Pt=class extends q{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return s.parsedType===E.ZodParsedType.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:s.path,parent:s})}removeDefault(){return this._def.innerType}};m.ZodDefault=Pt;Pt.create=(t,e)=>new Pt({innerType:t,typeName:R.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...j(e)});var Nt=class extends q{_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,h.isAsync)(n)?n.then(i=>({status:"valid",value:i.status==="valid"?i.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}};m.ZodCatch=Nt;Nt.create=(t,e)=>new Nt({innerType:t,typeName:R.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...j(e)});var cs=class extends q{_parse(e){if(this._getType(e)!==E.ZodParsedType.nan){let r=this._getOrReturnCtx(e);return(0,h.addIssueToContext)(r,{code:S.ZodIssueCode.invalid_type,expected:E.ZodParsedType.nan,received:r.parsedType}),h.INVALID}return{status:"valid",value:e.data}}};m.ZodNaN=cs;cs.create=t=>new cs({typeName:R.ZodNaN,...j(t)});m.BRAND=Symbol("zod_brand");var Ns=class extends q{_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}};m.ZodBranded=Ns;var js=class t extends q{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?h.INVALID:i.status==="dirty"?(s.dirty(),(0,h.DIRTY)(i.value)):this._def.out._parseAsync({data:i.value,path:r.path,parent:r})})();{let n=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return n.status==="aborted"?h.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:R.ZodPipeline})}};m.ZodPipeline=js;var jt=class extends q{_parse(e){let s=this._def.innerType._parse(e),r=n=>((0,h.isValid)(n)&&(n.value=Object.freeze(n.value)),n);return(0,h.isAsync)(s)?s.then(n=>r(n)):r(s)}unwrap(){return this._def.innerType}};m.ZodReadonly=jt;jt.create=(t,e)=>new jt({innerType:t,typeName:R.ZodReadonly,...j(e)});function gc(t,e){let s=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof s=="string"?{message:s}:s}function kc(t,e={},s){return t?pt.create().superRefine((r,n)=>{let i=t(r);if(i instanceof Promise)return i.then(o=>{if(!o){let a=gc(e,r),c=a.fatal??s??!0;n.addIssue({code:"custom",...a,fatal:c})}});if(!i){let o=gc(e,r),a=o.fatal??s??!0;n.addIssue({code:"custom",...o,fatal:a})}}):pt.create()}m.late={object:Ie.lazycreate};var R;(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"})(R||(m.ZodFirstPartyTypeKind=R={}));var bg=(t,e={message:`Input not instance of ${t.name}`})=>kc(s=>s instanceof t,e);m.instanceof=bg;var xc=dt.create;m.string=xc;var Sc=It.create;m.number=Sc;var kg=cs.create;m.nan=kg;var xg=Ct.create;m.bigint=xg;var Ic=Et.create;m.boolean=Ic;var Sg=$t.create;m.date=Sg;var Ig=ns.create;m.symbol=Ig;var Cg=At.create;m.undefined=Cg;var Eg=Tt.create;m.null=Eg;var $g=pt.create;m.any=$g;var Ag=et.create;m.unknown=Ag;var Tg=Ne.create;m.never=Tg;var vg=is.create;m.void=vg;var Ug=tt.create;m.array=Ug;var Og=Ie.create;m.object=Og;var Dg=Ie.strictCreate;m.strictObject=Dg;var Rg=vt.create;m.union=Rg;var Lg=kr.create;m.discriminatedUnion=Lg;var Pg=Ut.create;m.intersection=Pg;var Ng=Ve.create;m.tuple=Ng;var jg=xr.create;m.record=jg;var qg=os.create;m.map=qg;var Mg=as.create;m.set=Mg;var Gg=Sr.create;m.function=Gg;var Fg=Ot.create;m.lazy=Fg;var Bg=Dt.create;m.literal=Bg;var Zg=Rt.create;m.enum=Zg;var Wg=Lt.create;m.nativeEnum=Wg;var Vg=ft.create;m.promise=Vg;var Cc=$e.create;m.effect=Cc;m.transformer=Cc;var Kg=ve.create;m.optional=Kg;var zg=Ke.create;m.nullable=zg;var Jg=$e.createWithPreprocess;m.preprocess=Jg;var Hg=js.create;m.pipeline=Hg;var Yg=()=>xc().optional();m.ostring=Yg;var Xg=()=>Sc().optional();m.onumber=Xg;var Qg=()=>Ic().optional();m.oboolean=Qg;m.coerce={string:(t=>dt.create({...t,coerce:!0})),number:(t=>It.create({...t,coerce:!0})),boolean:(t=>Et.create({...t,coerce:!0})),bigint:(t=>Ct.create({...t,coerce:!0})),date:(t=>$t.create({...t,coerce:!0}))};m.NEVER=h.INVALID});var Hn=x(Oe=>{"use strict";var ey=Oe&&Oe.__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]})),ls=Oe&&Oe.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&ey(e,t,s)};Object.defineProperty(Oe,"__esModule",{value:!0});ls(_r(),Oe);ls(Kn(),Oe);ls(pc(),Oe);ls(Ls(),Oe);ls(Ec(),Oe);ls(yr(),Oe)});var Tc=x(Ce=>{"use strict";var $c=Ce&&Ce.__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]})),ty=Ce&&Ce.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),sy=Ce&&Ce.__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)&&$c(e,t,s);return ty(e,t),e},ry=Ce&&Ce.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&$c(e,t,s)};Object.defineProperty(Ce,"__esModule",{value:!0});Ce.z=void 0;var Ac=sy(Hn());Ce.z=Ac;ry(Hn(),Ce);Ce.default=Ac});var Ir=x((nI,Dc)=>{var Yn=null;function Xn(){return Yn||(Yn=Tc().z),Yn}function vc(){return Xn().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 Uc(){return Xn().string().refine(t=>{try{return JSON.parse(t),!0}catch{return!1}},{message:"--meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON"})}function Oc(){return Xn().string().trim().refine(t=>/^https?:\/\/[^\s]+$/i.test(t),{message:"registry \u5FC5\u987B\u662F http(s):// \u5F00\u5934\u7684 URL"})}function ny(t){let e=vc().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function iy(t){let e=Uc().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function oy(t){let e=Oc().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}Dc.exports={apiKeySchema:vc,pubMetaDataSchema:Uc,registrySchema:Oc,validateApiKey:ny,validatePubMetaData:iy,validateRegistry:oy}});var Lc=x((iI,Rc)=>{var ay=ic(),{validateApiKey:cy}=Ir();function ly(t,e){let s=new ay(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 i=cy(n.apikey);if(!i.ok){e.fail(i.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",i.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})}Rc.exports={register:ly}});var jc=x((oI,Nc)=>{var je=require("fs"),qt=require("path"),uy=require("readline"),{execSync:Cr}=require("child_process"),Pc=require("os"),Qn=class{constructor(){this.serverUrl="https://makecoder.com/bigapis/codev/v1/coderpub"}getClaudeJsonlPath(e,s=!1){let r=e.replace(/[/_]/g,"-"),n=qt.join(Pc.homedir(),".claude","projects",r);if(s&&(console.log(`
289
- \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}`)),!je.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 i=je.readdirSync(n).filter(o=>o.endsWith(".jsonl")).map(o=>({name:o,path:qt.join(n,o),mtime:je.statSync(qt.join(n,o)).mtime,size:je.statSync(qt.join(n,o)).size})).sort((o,a)=>a.mtime-o.mtime);return s&&(console.log(` \u627E\u5230 ${i.length} \u4E2A JSONL \u6587\u4EF6:`),i.forEach((o,a)=>{let c=(o.size/1024).toFixed(2),l=o.mtime.toLocaleString(),u=a===0?" <- \u6700\u65B0":"";console.log(` ${a+1}. ${o.name} (${c} KB, ${l})${u}`)})),i.length>0?(s&&console.log(` \u2713 \u9009\u62E9\u6700\u65B0\u6587\u4EF6: ${i[0].name}`),i[0].path):(s&&console.log(" \u274C \u76EE\u5F55\u4E2D\u6CA1\u6709 JSONL \u6587\u4EF6"),null)}catch(i){return s&&console.log(` \u274C \u8BFB\u53D6\u76EE\u5F55\u5931\u8D25: ${i.message}`),null}}async promptForName(){let e=uy.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 i=n.trim();if(!i){r(new Error("\u9879\u76EE\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A"));return}if(!/^[a-zA-Z0-9_-]+$/.test(i)){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(i)})})}async createZip(e,s={}){let{allowClone:r=!1}=s,n=Pc.tmpdir(),i=`coder-pub-${Date.now()}.zip`,o=qt.join(n,i);try{let a=!1;if(je.existsSync(qt.join(e,".git")))try{Cr(`git archive -o "${o}" 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(" ");Cr(`zip -r "${o}" . ${l}`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u5DF2\u521B\u5EFA\u538B\u7F29\u5305")}if(r){console.log(`
290
- \u{1F504} [allow-clone] \u5F00\u59CB\u5904\u7406 AI \u751F\u6210\u8BB0\u5F55...`);let c=this.getClaudeJsonlPath(e,!0);if(c){let l=qt.join(n,"coder.pub.jsonl"),d=(je.statSync(c).size/1024).toFixed(2);console.log(`
291
- \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}`),je.copyFileSync(c,l),console.log(" \u2713 \u5DF2\u590D\u5236\u5230\u4E34\u65F6\u76EE\u5F55"),console.log(` \u76EE\u6807 ZIP: ${o}`),console.log(" \u76EE\u6807\u6587\u4EF6\u540D: coder.pub.jsonl"),Cr(`zip -j "${o}" "${l}"`,{stdio:"pipe"}),console.log(" \u2713 \u5DF2\u6DFB\u52A0\u5230 ZIP \u5305"),je.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)
291
+ `)}};Qa.exports=ji});var sc=I((Cx,tc)=>{var{AGENTS:ec,AGENT_NAMES:Os,isAgentName:mh,launchAgent:fh}=or(),hh=new Set(["--help","-h","help"]);function gh(t){if(t.isJson){t.emit({usage:"coder agent <name> [args...]",agents:Os.map(r=>({name:r,description:ec[r].description}))});return}let e=["Usage: coder agent <name> [args...]","","Agents:"],s=Math.max(...Os.map(r=>r.length));for(let r of Os)e.push(` ${r.padEnd(s)} ${ec[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(`
292
+ `))}function yh(t,e){t.command("agent <name> [args...]").description(`\u8FD0\u884C\u4E00\u4E2A AI \u667A\u80FD\u4F53\uFF08${Os.join(" | ")}\uFF09`).allowUnknownOption().passThroughOptions().helpOption(!1).action(async(s,r)=>{if(hh.has(s)){gh(e);return}if(!mh(s)){e.fail(`unknown agent: ${s}`,`available: ${Os.join(" | ")}`),process.exitCode=1;return}process.exitCode=await fh(s,r||[],e)||0})}tc.exports={register:yh}});var Ls=I(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.getParsedType=te.ZodParsedType=te.objectUtil=te.util=void 0;var qi;(function(t){t.assertEqual=i=>{};function e(i){}t.assertIs=e;function s(i){throw new Error}t.assertNever=s,t.arrayToEnum=i=>{let o={};for(let n of i)o[n]=n;return o},t.getValidEnumValues=i=>{let o=t.objectKeys(i).filter(a=>typeof i[i[a]]!="number"),n={};for(let a of o)n[a]=i[a];return t.objectValues(n)},t.objectValues=i=>t.objectKeys(i).map(function(o){return i[o]}),t.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{let o=[];for(let n in i)Object.prototype.hasOwnProperty.call(i,n)&&o.push(n);return o},t.find=(i,o)=>{for(let n of i)if(o(n))return n},t.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function r(i,o=" | "){return i.map(n=>typeof n=="string"?`'${n}'`:n).join(o)}t.joinValues=r,t.jsonStringifyReplacer=(i,o)=>typeof o=="bigint"?o.toString():o})(qi||(te.util=qi={}));var rc;(function(t){t.mergeShapes=(e,s)=>({...e,...s})})(rc||(te.objectUtil=rc={}));te.ZodParsedType=qi.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);var _h=t=>{switch(typeof t){case"undefined":return te.ZodParsedType.undefined;case"string":return te.ZodParsedType.string;case"number":return Number.isNaN(t)?te.ZodParsedType.nan:te.ZodParsedType.number;case"boolean":return te.ZodParsedType.boolean;case"function":return te.ZodParsedType.function;case"bigint":return te.ZodParsedType.bigint;case"symbol":return te.ZodParsedType.symbol;case"object":return Array.isArray(t)?te.ZodParsedType.array:t===null?te.ZodParsedType.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?te.ZodParsedType.promise:typeof Map<"u"&&t instanceof Map?te.ZodParsedType.map:typeof Set<"u"&&t instanceof Set?te.ZodParsedType.set:typeof Date<"u"&&t instanceof Date?te.ZodParsedType.date:te.ZodParsedType.object;default:return te.ZodParsedType.unknown}};te.getParsedType=_h});var _r=I(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.ZodError=dt.quotelessJson=dt.ZodIssueCode=void 0;var ic=Ls();dt.ZodIssueCode=ic.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 wh=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:");dt.quotelessJson=wh;var Rs=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:[]},i=o=>{for(let n of o.issues)if(n.code==="invalid_union")n.unionErrors.map(i);else if(n.code==="invalid_return_type")i(n.returnTypeError);else if(n.code==="invalid_arguments")i(n.argumentsError);else if(n.path.length===0)r._errors.push(s(n));else{let a=r,c=0;for(;c<n.path.length;){let l=n.path[c];c===n.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(s(n))):a[l]=a[l]||{_errors:[]},a=a[l],c++}}};return i(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,ic.util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=s=>s.message){let s={},r=[];for(let i of this.issues)if(i.path.length>0){let o=i.path[0];s[o]=s[o]||[],s[o].push(e(i))}else r.push(e(i));return{formErrors:r,fieldErrors:s}}get formErrors(){return this.flatten()}};dt.ZodError=Rs;Rs.create=t=>new Rs(t)});var Fi=I(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});var ge=_r(),xt=Ls(),bh=(t,e)=>{let s;switch(t.code){case ge.ZodIssueCode.invalid_type:t.received===xt.ZodParsedType.undefined?s="Required":s=`Expected ${t.expected}, received ${t.received}`;break;case ge.ZodIssueCode.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(t.expected,xt.util.jsonStringifyReplacer)}`;break;case ge.ZodIssueCode.unrecognized_keys:s=`Unrecognized key(s) in object: ${xt.util.joinValues(t.keys,", ")}`;break;case ge.ZodIssueCode.invalid_union:s="Invalid input";break;case ge.ZodIssueCode.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${xt.util.joinValues(t.options)}`;break;case ge.ZodIssueCode.invalid_enum_value:s=`Invalid enum value. Expected ${xt.util.joinValues(t.options)}, received '${t.received}'`;break;case ge.ZodIssueCode.invalid_arguments:s="Invalid function arguments";break;case ge.ZodIssueCode.invalid_return_type:s="Invalid function return type";break;case ge.ZodIssueCode.invalid_date:s="Invalid date";break;case ge.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}"`:xt.util.assertNever(t.validation):t.validation!=="regex"?s=`Invalid ${t.validation}`:s="Invalid";break;case ge.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 ge.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 ge.ZodIssueCode.custom:s="Invalid input";break;case ge.ZodIssueCode.invalid_intersection_types:s="Intersection results could not be merged";break;case ge.ZodIssueCode.not_multiple_of:s=`Number must be a multiple of ${t.multipleOf}`;break;case ge.ZodIssueCode.not_finite:s="Number must be finite";break;default:s=e.defaultError,xt.util.assertNever(t)}return{message:s}};Mi.default=bh});var wr=I(ut=>{"use strict";var kh=ut&&ut.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ut,"__esModule",{value:!0});ut.defaultErrorMap=void 0;ut.setErrorMap=Sh;ut.getErrorMap=xh;var oc=kh(Fi());ut.defaultErrorMap=oc.default;var nc=oc.default;function Sh(t){nc=t}function xh(){return nc}});var Wi=I(H=>{"use strict";var Ih=H&&H.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(H,"__esModule",{value:!0});H.isAsync=H.isValid=H.isDirty=H.isAborted=H.OK=H.DIRTY=H.INVALID=H.ParseStatus=H.EMPTY_PATH=H.makeIssue=void 0;H.addIssueToContext=Ch;var Eh=wr(),ac=Ih(Fi()),Ah=t=>{let{data:e,path:s,errorMaps:r,issueData:i}=t,o=[...s,...i.path||[]],n={...i,path:o};if(i.message!==void 0)return{...i,path:o,message:i.message};let a="",c=r.filter(l=>!!l).slice().reverse();for(let l of c)a=l(n,{data:e,defaultError:a}).message;return{...i,path:o,message:a}};H.makeIssue=Ah;H.EMPTY_PATH=[];function Ch(t,e){let s=(0,Eh.getErrorMap)(),r=(0,H.makeIssue)({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,s,s===ac.default?void 0:ac.default].filter(i=>!!i)});t.common.issues.push(r)}var Bi=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 i of s){if(i.status==="aborted")return H.INVALID;i.status==="dirty"&&e.dirty(),r.push(i.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,s){let r=[];for(let i of s){let o=await i.key,n=await i.value;r.push({key:o,value:n})}return t.mergeObjectSync(e,r)}static mergeObjectSync(e,s){let r={};for(let i of s){let{key:o,value:n}=i;if(o.status==="aborted"||n.status==="aborted")return H.INVALID;o.status==="dirty"&&e.dirty(),n.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof n.value<"u"||i.alwaysSet)&&(r[o.value]=n.value)}return{status:e.value,value:r}}};H.ParseStatus=Bi;H.INVALID=Object.freeze({status:"aborted"});var Uh=t=>({status:"dirty",value:t});H.DIRTY=Uh;var $h=t=>({status:"valid",value:t});H.OK=$h;var Th=t=>t.status==="aborted";H.isAborted=Th;var vh=t=>t.status==="dirty";H.isDirty=vh;var Dh=t=>t.status==="valid";H.isValid=Dh;var Oh=t=>typeof Promise<"u"&&t instanceof Promise;H.isAsync=Oh});var lc=I(cc=>{"use strict";Object.defineProperty(cc,"__esModule",{value:!0})});var uc=I(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});br.errorUtil=void 0;var dc;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(dc||(br.errorUtil=dc={}))});var xc=I(h=>{"use strict";Object.defineProperty(h,"__esModule",{value:!0});h.discriminatedUnion=h.date=h.boolean=h.bigint=h.array=h.any=h.coerce=h.ZodFirstPartyTypeKind=h.late=h.ZodSchema=h.Schema=h.ZodReadonly=h.ZodPipeline=h.ZodBranded=h.BRAND=h.ZodNaN=h.ZodCatch=h.ZodDefault=h.ZodNullable=h.ZodOptional=h.ZodTransformer=h.ZodEffects=h.ZodPromise=h.ZodNativeEnum=h.ZodEnum=h.ZodLiteral=h.ZodLazy=h.ZodFunction=h.ZodSet=h.ZodMap=h.ZodRecord=h.ZodTuple=h.ZodIntersection=h.ZodDiscriminatedUnion=h.ZodUnion=h.ZodObject=h.ZodArray=h.ZodVoid=h.ZodNever=h.ZodUnknown=h.ZodAny=h.ZodNull=h.ZodUndefined=h.ZodSymbol=h.ZodDate=h.ZodBoolean=h.ZodBigInt=h.ZodNumber=h.ZodString=h.ZodType=void 0;h.NEVER=h.void=h.unknown=h.union=h.undefined=h.tuple=h.transformer=h.symbol=h.string=h.strictObject=h.set=h.record=h.promise=h.preprocess=h.pipeline=h.ostring=h.optional=h.onumber=h.oboolean=h.object=h.number=h.nullable=h.null=h.never=h.nativeEnum=h.nan=h.map=h.literal=h.lazy=h.intersection=h.instanceof=h.function=h.enum=h.effect=void 0;h.datetimeRegex=gc;h.custom=_c;var A=_r(),kr=wr(),O=uc(),g=Wi(),$=Ls(),De=class{constructor(e,s,r,i){this._cachedPath=[],this.parent=e,this.data=s,this._path=r,this._key=i}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}},pc=(t,e)=>{if((0,g.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 A.ZodError(t.common.issues);return this._error=s,this._error}}};function q(t){if(!t)return{};let{errorMap:e,invalid_type_error:s,required_error:r,description:i}=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:i}:{errorMap:(n,a)=>{let{message:c}=t;return n.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??r??a.defaultError}:n.code!=="invalid_type"?{message:a.defaultError}:{message:c??s??a.defaultError}},description:i}}var M=class{get description(){return this._def.description}_getType(e){return(0,$.getParsedType)(e.data)}_getOrReturnCtx(e,s){return s||{common:e.parent.common,data:e.data,parsedType:(0,$.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new g.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,$.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let s=this._parse(e);if((0,g.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,$.getParsedType)(e)},i=this._parseSync({data:e,path:r.path,parent:r});return pc(r,i)}"~validate"(e){let s={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,$.getParsedType)(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:s});return(0,g.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,g.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,$.getParsedType)(e)},i=this._parse({data:e,path:r.path,parent:r}),o=await((0,g.isAsync)(i)?i:Promise.resolve(i));return pc(r,o)}refine(e,s){let r=i=>typeof s=="string"||typeof s>"u"?{message:s}:typeof s=="function"?s(i):s;return this._refinement((i,o)=>{let n=e(i),a=()=>o.addIssue({code:A.ZodIssueCode.custom,...r(i)});return typeof Promise<"u"&&n instanceof Promise?n.then(c=>c?!0:(a(),!1)):n?!0:(a(),!1)})}refinement(e,s){return this._refinement((r,i)=>e(r)?!0:(i.addIssue(typeof s=="function"?s(r,i):s),!1))}_refinement(e){return new Ue({schema:this,typeName:P.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 ve.create(this,this._def)}nullable(){return ze.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return st.create(this)}promise(){return ft.create(this,this._def)}or(e){return Tt.create([this,e],this._def)}and(e){return vt.create(this,e,this._def)}transform(e){return new Ue({...q(this._def),schema:this,typeName:P.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let s=typeof e=="function"?e:()=>e;return new Pt({...q(this._def),innerType:this,defaultValue:s,typeName:P.ZodDefault})}brand(){return new Ps({typeName:P.ZodBranded,type:this,...q(this._def)})}catch(e){let s=typeof e=="function"?e:()=>e;return new Nt({...q(this._def),innerType:this,catchValue:s,typeName:P.ZodCatch})}describe(e){let s=this.constructor;return new s({...this._def,description:e})}pipe(e){return Ns.create(this,e)}readonly(){return jt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};h.ZodType=M;h.Schema=M;h.ZodSchema=M;var Lh=/^c[^\s-]{8,}$/i,Rh=/^[0-9a-z]+$/,Ph=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Nh=/^[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,jh=/^[a-z0-9_-]{21}$/i,Gh=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,qh=/^[-+]?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)?)??$/,Mh=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Fh="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Zi,Bh=/^(?:(?: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])$/,Wh=/^(?:(?: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])$/,Zh=/^(([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]))$/,Vh=/^(([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])$/,Kh=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,zh=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,fc="((\\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])))",Jh=new RegExp(`^${fc}$`);function hc(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 Hh(t){return new RegExp(`^${hc(t)}$`)}function gc(t){let e=`${fc}T${hc(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 Yh(t,e){return!!((e==="v4"||!e)&&Bh.test(t)||(e==="v6"||!e)&&Zh.test(t))}function Xh(t,e){if(!Gh.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,"="),i=JSON.parse(atob(r));return!(typeof i!="object"||i===null||"typ"in i&&i?.typ!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function Qh(t,e){return!!((e==="v4"||!e)&&Wh.test(t)||(e==="v6"||!e)&&Vh.test(t))}var pt=class t extends M{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==$.ZodParsedType.string){let o=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(o,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.string,received:o.parsedType}),g.INVALID}let r=new g.ParseStatus,i;for(let o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.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&&(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let n=e.data.length>o.value,a=e.data.length<o.value;(n||a)&&(i=this._getOrReturnCtx(e,i),n?(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")Mh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"email",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")Zi||(Zi=new RegExp(Fh,"u")),Zi.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"emoji",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")Nh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"uuid",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")jh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"nanoid",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")Lh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"cuid",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")Rh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"cuid2",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")Ph.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"ulid",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"url",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"regex",code:A.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)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.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)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?gc(o).test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?Jh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?Hh(o).test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?qh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"duration",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?Yh(e.data,o.version)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"ip",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Xh(e.data,o.alg)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"jwt",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Qh(e.data,o.version)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"cidr",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Kh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"base64",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?zh.test(e.data)||(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{validation:"base64url",code:A.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):$.util.assertNever(o);return{status:r.value,value:e.data}}_regex(e,s,r){return this.refinement(i=>e.test(i),{validation:s,code:A.ZodIssueCode.invalid_string,...O.errorUtil.errToObj(r)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...O.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...O.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...O.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...O.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...O.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...O.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...O.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...O.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...O.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...O.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...O.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...O.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...O.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,...O.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,...O.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...O.errorUtil.errToObj(e)})}regex(e,s){return this._addCheck({kind:"regex",regex:e,...O.errorUtil.errToObj(s)})}includes(e,s){return this._addCheck({kind:"includes",value:e,position:s?.position,...O.errorUtil.errToObj(s?.message)})}startsWith(e,s){return this._addCheck({kind:"startsWith",value:e,...O.errorUtil.errToObj(s)})}endsWith(e,s){return this._addCheck({kind:"endsWith",value:e,...O.errorUtil.errToObj(s)})}min(e,s){return this._addCheck({kind:"min",value:e,...O.errorUtil.errToObj(s)})}max(e,s){return this._addCheck({kind:"max",value:e,...O.errorUtil.errToObj(s)})}length(e,s){return this._addCheck({kind:"length",value:e,...O.errorUtil.errToObj(s)})}nonempty(e){return this.min(1,O.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}};h.ZodString=pt;pt.create=t=>new pt({checks:[],typeName:P.ZodString,coerce:t?.coerce??!1,...q(t)});function eg(t,e){let s=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,i=s>r?s:r,o=Number.parseInt(t.toFixed(i).replace(".","")),n=Number.parseInt(e.toFixed(i).replace(".",""));return o%n/10**i}var It=class t extends M{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)!==$.ZodParsedType.number){let o=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(o,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.number,received:o.parsedType}),g.INVALID}let r,i=new g.ParseStatus;for(let o of this._def.checks)o.kind==="int"?$.util.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:o.message}),i.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?eg(e.data,o.value)!==0&&(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.not_finite,message:o.message}),i.dirty()):$.util.assertNever(o);return{status:i.value,value:e.data}}gte(e,s){return this.setLimit("min",e,!0,O.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,O.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,O.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,O.errorUtil.toString(s))}setLimit(e,s,r,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:O.errorUtil.toString(i)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:O.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:O.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:O.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:O.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:O.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:O.errorUtil.toString(s)})}finite(e){return this._addCheck({kind:"finite",message:O.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:O.errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:O.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"&&$.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)}};h.ZodNumber=It;It.create=t=>new It({checks:[],typeName:P.ZodNumber,coerce:t?.coerce||!1,...q(t)});var Et=class t extends M{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)!==$.ZodParsedType.bigint)return this._getInvalidInput(e);let r,i=new g.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,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):$.util.assertNever(o);return{status:i.value,value:e.data}}_getInvalidInput(e){let s=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.bigint,received:s.parsedType}),g.INVALID}gte(e,s){return this.setLimit("min",e,!0,O.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,O.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,O.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,O.errorUtil.toString(s))}setLimit(e,s,r,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:r,message:O.errorUtil.toString(i)}]})}_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:O.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:O.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:O.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:O.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:O.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}};h.ZodBigInt=Et;Et.create=t=>new Et({checks:[],typeName:P.ZodBigInt,coerce:t?.coerce??!1,...q(t)});var At=class extends M{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==$.ZodParsedType.boolean){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.boolean,received:r.parsedType}),g.INVALID}return(0,g.OK)(e.data)}};h.ZodBoolean=At;At.create=t=>new At({typeName:P.ZodBoolean,coerce:t?.coerce||!1,...q(t)});var Ct=class t extends M{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==$.ZodParsedType.date){let o=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(o,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.date,received:o.parsedType}),g.INVALID}if(Number.isNaN(e.data.getTime())){let o=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(o,{code:A.ZodIssueCode.invalid_date}),g.INVALID}let r=new g.ParseStatus,i;for(let o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.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&&(i=this._getOrReturnCtx(e,i),(0,g.addIssueToContext)(i,{code:A.ZodIssueCode.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):$.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:O.errorUtil.toString(s)})}max(e,s){return this._addCheck({kind:"max",value:e.getTime(),message:O.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}};h.ZodDate=Ct;Ct.create=t=>new Ct({checks:[],coerce:t?.coerce||!1,typeName:P.ZodDate,...q(t)});var is=class extends M{_parse(e){if(this._getType(e)!==$.ZodParsedType.symbol){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.symbol,received:r.parsedType}),g.INVALID}return(0,g.OK)(e.data)}};h.ZodSymbol=is;is.create=t=>new is({typeName:P.ZodSymbol,...q(t)});var Ut=class extends M{_parse(e){if(this._getType(e)!==$.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.undefined,received:r.parsedType}),g.INVALID}return(0,g.OK)(e.data)}};h.ZodUndefined=Ut;Ut.create=t=>new Ut({typeName:P.ZodUndefined,...q(t)});var $t=class extends M{_parse(e){if(this._getType(e)!==$.ZodParsedType.null){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.null,received:r.parsedType}),g.INVALID}return(0,g.OK)(e.data)}};h.ZodNull=$t;$t.create=t=>new $t({typeName:P.ZodNull,...q(t)});var mt=class extends M{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,g.OK)(e.data)}};h.ZodAny=mt;mt.create=t=>new mt({typeName:P.ZodAny,...q(t)});var tt=class extends M{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,g.OK)(e.data)}};h.ZodUnknown=tt;tt.create=t=>new tt({typeName:P.ZodUnknown,...q(t)});var Ge=class extends M{_parse(e){let s=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.never,received:s.parsedType}),g.INVALID}};h.ZodNever=Ge;Ge.create=t=>new Ge({typeName:P.ZodNever,...q(t)});var os=class extends M{_parse(e){if(this._getType(e)!==$.ZodParsedType.undefined){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.void,received:r.parsedType}),g.INVALID}return(0,g.OK)(e.data)}};h.ZodVoid=os;os.create=t=>new os({typeName:P.ZodVoid,...q(t)});var st=class t extends M{_parse(e){let{ctx:s,status:r}=this._processInputParams(e),i=this._def;if(s.parsedType!==$.ZodParsedType.array)return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.array,received:s.parsedType}),g.INVALID;if(i.exactLength!==null){let n=s.data.length>i.exactLength.value,a=s.data.length<i.exactLength.value;(n||a)&&((0,g.addIssueToContext)(s,{code:n?A.ZodIssueCode.too_big:A.ZodIssueCode.too_small,minimum:a?i.exactLength.value:void 0,maximum:n?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),r.dirty())}if(i.minLength!==null&&s.data.length<i.minLength.value&&((0,g.addIssueToContext)(s,{code:A.ZodIssueCode.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),r.dirty()),i.maxLength!==null&&s.data.length>i.maxLength.value&&((0,g.addIssueToContext)(s,{code:A.ZodIssueCode.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),s.common.async)return Promise.all([...s.data].map((n,a)=>i.type._parseAsync(new De(s,n,s.path,a)))).then(n=>g.ParseStatus.mergeArray(r,n));let o=[...s.data].map((n,a)=>i.type._parseSync(new De(s,n,s.path,a)));return g.ParseStatus.mergeArray(r,o)}get element(){return this._def.type}min(e,s){return new t({...this._def,minLength:{value:e,message:O.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxLength:{value:e,message:O.errorUtil.toString(s)}})}length(e,s){return new t({...this._def,exactLength:{value:e,message:O.errorUtil.toString(s)}})}nonempty(e){return this.min(1,e)}};h.ZodArray=st;st.create=(t,e)=>new st({type:t,minLength:null,maxLength:null,exactLength:null,typeName:P.ZodArray,...q(e)});function rs(t){if(t instanceof Ie){let e={};for(let s in t.shape){let r=t.shape[s];e[s]=ve.create(rs(r))}return new Ie({...t._def,shape:()=>e})}else return t instanceof st?new st({...t._def,type:rs(t.element)}):t instanceof ve?ve.create(rs(t.unwrap())):t instanceof ze?ze.create(rs(t.unwrap())):t instanceof Ke?Ke.create(t.items.map(e=>rs(e))):t}var Ie=class t extends M{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=$.util.objectKeys(e);return this._cached={shape:e,keys:s},this._cached}_parse(e){if(this._getType(e)!==$.ZodParsedType.object){let l=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(l,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.object,received:l.parsedType}),g.INVALID}let{status:r,ctx:i}=this._processInputParams(e),{shape:o,keys:n}=this._getCached(),a=[];if(!(this._def.catchall instanceof Ge&&this._def.unknownKeys==="strip"))for(let l in i.data)n.includes(l)||a.push(l);let c=[];for(let l of n){let d=o[l],u=i.data[l];c.push({key:{status:"valid",value:l},value:d._parse(new De(i,u,i.path,l)),alwaysSet:l in i.data})}if(this._def.catchall instanceof Ge){let l=this._def.unknownKeys;if(l==="passthrough")for(let d of a)c.push({key:{status:"valid",value:d},value:{status:"valid",value:i.data[d]}});else if(l==="strict")a.length>0&&((0,g.addIssueToContext)(i,{code:A.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 d of a){let u=i.data[d];c.push({key:{status:"valid",value:d},value:l._parse(new De(i,u,i.path,d)),alwaysSet:d in i.data})}}return i.common.async?Promise.resolve().then(async()=>{let l=[];for(let d of c){let u=await d.key,p=await d.value;l.push({key:u,value:p,alwaysSet:d.alwaysSet})}return l}).then(l=>g.ParseStatus.mergeObjectSync(r,l)):g.ParseStatus.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return O.errorUtil.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(s,r)=>{let i=this._def.errorMap?.(s,r).message??r.defaultError;return s.code==="unrecognized_keys"?{message:O.errorUtil.errToObj(e).message??i}:{message:i}}}:{}})}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:P.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 $.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 $.util.objectKeys(this.shape))e[r]||(s[r]=this.shape[r]);return new t({...this._def,shape:()=>s})}deepPartial(){return rs(this)}partial(e){let s={};for(let r of $.util.objectKeys(this.shape)){let i=this.shape[r];e&&!e[r]?s[r]=i:s[r]=i.optional()}return new t({...this._def,shape:()=>s})}required(e){let s={};for(let r of $.util.objectKeys(this.shape))if(e&&!e[r])s[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof ve;)o=o._def.innerType;s[r]=o}return new t({...this._def,shape:()=>s})}keyof(){return yc($.util.objectKeys(this.shape))}};h.ZodObject=Ie;Ie.create=(t,e)=>new Ie({shape:()=>t,unknownKeys:"strip",catchall:Ge.create(),typeName:P.ZodObject,...q(e)});Ie.strictCreate=(t,e)=>new Ie({shape:()=>t,unknownKeys:"strict",catchall:Ge.create(),typeName:P.ZodObject,...q(e)});Ie.lazycreate=(t,e)=>new Ie({shape:t,unknownKeys:"strip",catchall:Ge.create(),typeName:P.ZodObject,...q(e)});var Tt=class extends M{_parse(e){let{ctx:s}=this._processInputParams(e),r=this._def.options;function i(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 n=o.map(a=>new A.ZodError(a.ctx.common.issues));return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_union,unionErrors:n}),g.INVALID}if(s.common.async)return Promise.all(r.map(async o=>{let n={...s,common:{...s.common,issues:[]},parent:null};return{result:await o._parseAsync({data:s.data,path:s.path,parent:n}),ctx:n}})).then(i);{let o,n=[];for(let c of r){let l={...s,common:{...s.common,issues:[]},parent:null},d=c._parseSync({data:s.data,path:s.path,parent:l});if(d.status==="valid")return d;d.status==="dirty"&&!o&&(o={result:d,ctx:l}),l.common.issues.length&&n.push(l.common.issues)}if(o)return s.common.issues.push(...o.ctx.common.issues),o.result;let a=n.map(c=>new A.ZodError(c));return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_union,unionErrors:a}),g.INVALID}}get options(){return this._def.options}};h.ZodUnion=Tt;Tt.create=(t,e)=>new Tt({options:t,typeName:P.ZodUnion,...q(e)});var et=t=>t instanceof Dt?et(t.schema):t instanceof Ue?et(t.innerType()):t instanceof Ot?[t.value]:t instanceof Lt?t.options:t instanceof Rt?$.util.objectValues(t.enum):t instanceof Pt?et(t._def.innerType):t instanceof Ut?[void 0]:t instanceof $t?[null]:t instanceof ve?[void 0,...et(t.unwrap())]:t instanceof ze?[null,...et(t.unwrap())]:t instanceof Ps||t instanceof jt?et(t.unwrap()):t instanceof Nt?et(t._def.innerType):[],Sr=class t extends M{_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==$.ZodParsedType.object)return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.object,received:s.parsedType}),g.INVALID;let r=this.discriminator,i=s.data[r],o=this.optionsMap.get(i);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,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),g.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 i=new Map;for(let o of s){let n=et(o.shape[e]);if(!n.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let a of n){if(i.has(a))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(a)}`);i.set(a,o)}}return new t({typeName:P.ZodDiscriminatedUnion,discriminator:e,options:s,optionsMap:i,...q(r)})}};h.ZodDiscriminatedUnion=Sr;function Vi(t,e){let s=(0,$.getParsedType)(t),r=(0,$.getParsedType)(e);if(t===e)return{valid:!0,data:t};if(s===$.ZodParsedType.object&&r===$.ZodParsedType.object){let i=$.util.objectKeys(e),o=$.util.objectKeys(t).filter(a=>i.indexOf(a)!==-1),n={...t,...e};for(let a of o){let c=Vi(t[a],e[a]);if(!c.valid)return{valid:!1};n[a]=c.data}return{valid:!0,data:n}}else if(s===$.ZodParsedType.array&&r===$.ZodParsedType.array){if(t.length!==e.length)return{valid:!1};let i=[];for(let o=0;o<t.length;o++){let n=t[o],a=e[o],c=Vi(n,a);if(!c.valid)return{valid:!1};i.push(c.data)}return{valid:!0,data:i}}else return s===$.ZodParsedType.date&&r===$.ZodParsedType.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}var vt=class extends M{_parse(e){let{status:s,ctx:r}=this._processInputParams(e),i=(o,n)=>{if((0,g.isAborted)(o)||(0,g.isAborted)(n))return g.INVALID;let a=Vi(o.value,n.value);return a.valid?(((0,g.isDirty)(o)||(0,g.isDirty)(n))&&s.dirty(),{status:s.value,value:a.data}):((0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_intersection_types}),g.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,n])=>i(o,n)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};h.ZodIntersection=vt;vt.create=(t,e,s)=>new vt({left:t,right:e,typeName:P.ZodIntersection,...q(s)});var Ke=class t extends M{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==$.ZodParsedType.array)return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.array,received:r.parsedType}),g.INVALID;if(r.data.length<this._def.items.length)return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),g.INVALID;!this._def.rest&&r.data.length>this._def.items.length&&((0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),s.dirty());let o=[...r.data].map((n,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new De(r,n,r.path,a)):null}).filter(n=>!!n);return r.common.async?Promise.all(o).then(n=>g.ParseStatus.mergeArray(s,n)):g.ParseStatus.mergeArray(s,o)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};h.ZodTuple=Ke;Ke.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ke({items:t,typeName:P.ZodTuple,rest:null,...q(e)})};var xr=class t extends M{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!==$.ZodParsedType.object)return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.object,received:r.parsedType}),g.INVALID;let i=[],o=this._def.keyType,n=this._def.valueType;for(let a in r.data)i.push({key:o._parse(new De(r,a,r.path,a)),value:n._parse(new De(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?g.ParseStatus.mergeObjectAsync(s,i):g.ParseStatus.mergeObjectSync(s,i)}get element(){return this._def.valueType}static create(e,s,r){return s instanceof M?new t({keyType:e,valueType:s,typeName:P.ZodRecord,...q(r)}):new t({keyType:pt.create(),valueType:e,typeName:P.ZodRecord,...q(s)})}};h.ZodRecord=xr;var ns=class extends M{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!==$.ZodParsedType.map)return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.map,received:r.parsedType}),g.INVALID;let i=this._def.keyType,o=this._def.valueType,n=[...r.data.entries()].map(([a,c],l)=>({key:i._parse(new De(r,a,r.path,[l,"key"])),value:o._parse(new De(r,c,r.path,[l,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of n){let l=await c.key,d=await c.value;if(l.status==="aborted"||d.status==="aborted")return g.INVALID;(l.status==="dirty"||d.status==="dirty")&&s.dirty(),a.set(l.value,d.value)}return{status:s.value,value:a}})}else{let a=new Map;for(let c of n){let l=c.key,d=c.value;if(l.status==="aborted"||d.status==="aborted")return g.INVALID;(l.status==="dirty"||d.status==="dirty")&&s.dirty(),a.set(l.value,d.value)}return{status:s.value,value:a}}}};h.ZodMap=ns;ns.create=(t,e,s)=>new ns({valueType:e,keyType:t,typeName:P.ZodMap,...q(s)});var as=class t extends M{_parse(e){let{status:s,ctx:r}=this._processInputParams(e);if(r.parsedType!==$.ZodParsedType.set)return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.set,received:r.parsedType}),g.INVALID;let i=this._def;i.minSize!==null&&r.data.size<i.minSize.value&&((0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),s.dirty()),i.maxSize!==null&&r.data.size>i.maxSize.value&&((0,g.addIssueToContext)(r,{code:A.ZodIssueCode.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),s.dirty());let o=this._def.valueType;function n(c){let l=new Set;for(let d of c){if(d.status==="aborted")return g.INVALID;d.status==="dirty"&&s.dirty(),l.add(d.value)}return{status:s.value,value:l}}let a=[...r.data.values()].map((c,l)=>o._parse(new De(r,c,r.path,l)));return r.common.async?Promise.all(a).then(c=>n(c)):n(a)}min(e,s){return new t({...this._def,minSize:{value:e,message:O.errorUtil.toString(s)}})}max(e,s){return new t({...this._def,maxSize:{value:e,message:O.errorUtil.toString(s)}})}size(e,s){return this.min(e,s).max(e,s)}nonempty(e){return this.min(1,e)}};h.ZodSet=as;as.create=(t,e)=>new as({valueType:t,minSize:null,maxSize:null,typeName:P.ZodSet,...q(e)});var Ir=class t extends M{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==$.ZodParsedType.function)return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.function,received:s.parsedType}),g.INVALID;function r(a,c){return(0,g.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,kr.getErrorMap)(),kr.defaultErrorMap].filter(l=>!!l),issueData:{code:A.ZodIssueCode.invalid_arguments,argumentsError:c}})}function i(a,c){return(0,g.makeIssue)({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,kr.getErrorMap)(),kr.defaultErrorMap].filter(l=>!!l),issueData:{code:A.ZodIssueCode.invalid_return_type,returnTypeError:c}})}let o={errorMap:s.common.contextualErrorMap},n=s.data;if(this._def.returns instanceof ft){let a=this;return(0,g.OK)(async function(...c){let l=new A.ZodError([]),d=await a._def.args.parseAsync(c,o).catch(m=>{throw l.addIssue(r(c,m)),l}),u=await Reflect.apply(n,this,d);return await a._def.returns._def.type.parseAsync(u,o).catch(m=>{throw l.addIssue(i(u,m)),l})})}else{let a=this;return(0,g.OK)(function(...c){let l=a._def.args.safeParse(c,o);if(!l.success)throw new A.ZodError([r(c,l.error)]);let d=Reflect.apply(n,this,l.data),u=a._def.returns.safeParse(d,o);if(!u.success)throw new A.ZodError([i(d,u.error)]);return u.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Ke.create(e).rest(tt.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||Ke.create([]).rest(tt.create()),returns:s||tt.create(),typeName:P.ZodFunction,...q(r)})}};h.ZodFunction=Ir;var Dt=class extends M{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})}};h.ZodLazy=Dt;Dt.create=(t,e)=>new Dt({getter:t,typeName:P.ZodLazy,...q(e)});var Ot=class extends M{_parse(e){if(e.data!==this._def.value){let s=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(s,{received:s.data,code:A.ZodIssueCode.invalid_literal,expected:this._def.value}),g.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}};h.ZodLiteral=Ot;Ot.create=(t,e)=>new Ot({value:t,typeName:P.ZodLiteral,...q(e)});function yc(t,e){return new Lt({values:t,typeName:P.ZodEnum,...q(e)})}var Lt=class t extends M{_parse(e){if(typeof e.data!="string"){let s=this._getOrReturnCtx(e),r=this._def.values;return(0,g.addIssueToContext)(s,{expected:$.util.joinValues(r),received:s.parsedType,code:A.ZodIssueCode.invalid_type}),g.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,g.addIssueToContext)(s,{received:s.data,code:A.ZodIssueCode.invalid_enum_value,options:r}),g.INVALID}return(0,g.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})}};h.ZodEnum=Lt;Lt.create=yc;var Rt=class extends M{_parse(e){let s=$.util.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==$.ZodParsedType.string&&r.parsedType!==$.ZodParsedType.number){let i=$.util.objectValues(s);return(0,g.addIssueToContext)(r,{expected:$.util.joinValues(i),received:r.parsedType,code:A.ZodIssueCode.invalid_type}),g.INVALID}if(this._cache||(this._cache=new Set($.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let i=$.util.objectValues(s);return(0,g.addIssueToContext)(r,{received:r.data,code:A.ZodIssueCode.invalid_enum_value,options:i}),g.INVALID}return(0,g.OK)(e.data)}get enum(){return this._def.values}};h.ZodNativeEnum=Rt;Rt.create=(t,e)=>new Rt({values:t,typeName:P.ZodNativeEnum,...q(e)});var ft=class extends M{unwrap(){return this._def.type}_parse(e){let{ctx:s}=this._processInputParams(e);if(s.parsedType!==$.ZodParsedType.promise&&s.common.async===!1)return(0,g.addIssueToContext)(s,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.promise,received:s.parsedType}),g.INVALID;let r=s.parsedType===$.ZodParsedType.promise?s.data:Promise.resolve(s.data);return(0,g.OK)(r.then(i=>this._def.type.parseAsync(i,{path:s.path,errorMap:s.common.contextualErrorMap})))}};h.ZodPromise=ft;ft.create=(t,e)=>new ft({type:t,typeName:P.ZodPromise,...q(e)});var Ue=class extends M{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===P.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:s,ctx:r}=this._processInputParams(e),i=this._def.effect||null,o={addIssue:n=>{(0,g.addIssueToContext)(r,n),n.fatal?s.abort():s.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),i.type==="preprocess"){let n=i.transform(r.data,o);if(r.common.async)return Promise.resolve(n).then(async a=>{if(s.value==="aborted")return g.INVALID;let c=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return c.status==="aborted"?g.INVALID:c.status==="dirty"||s.value==="dirty"?(0,g.DIRTY)(c.value):c});{if(s.value==="aborted")return g.INVALID;let a=this._def.schema._parseSync({data:n,path:r.path,parent:r});return a.status==="aborted"?g.INVALID:a.status==="dirty"||s.value==="dirty"?(0,g.DIRTY)(a.value):a}}if(i.type==="refinement"){let n=a=>{let c=i.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"?g.INVALID:(a.status==="dirty"&&s.dirty(),n(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"?g.INVALID:(a.status==="dirty"&&s.dirty(),n(a.value).then(()=>({status:s.value,value:a.value}))))}if(i.type==="transform")if(r.common.async===!1){let n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!(0,g.isValid)(n))return g.INVALID;let a=i.transform(n.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(n=>(0,g.isValid)(n)?Promise.resolve(i.transform(n.value,o)).then(a=>({status:s.value,value:a})):g.INVALID);$.util.assertNever(i)}};h.ZodEffects=Ue;h.ZodTransformer=Ue;Ue.create=(t,e,s)=>new Ue({schema:t,typeName:P.ZodEffects,effect:e,...q(s)});Ue.createWithPreprocess=(t,e,s)=>new Ue({schema:e,effect:{type:"preprocess",transform:t},typeName:P.ZodEffects,...q(s)});var ve=class extends M{_parse(e){return this._getType(e)===$.ZodParsedType.undefined?(0,g.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};h.ZodOptional=ve;ve.create=(t,e)=>new ve({innerType:t,typeName:P.ZodOptional,...q(e)});var ze=class extends M{_parse(e){return this._getType(e)===$.ZodParsedType.null?(0,g.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};h.ZodNullable=ze;ze.create=(t,e)=>new ze({innerType:t,typeName:P.ZodNullable,...q(e)});var Pt=class extends M{_parse(e){let{ctx:s}=this._processInputParams(e),r=s.data;return s.parsedType===$.ZodParsedType.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:s.path,parent:s})}removeDefault(){return this._def.innerType}};h.ZodDefault=Pt;Pt.create=(t,e)=>new Pt({innerType:t,typeName:P.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...q(e)});var Nt=class extends M{_parse(e){let{ctx:s}=this._processInputParams(e),r={...s,common:{...s.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return(0,g.isAsync)(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new A.ZodError(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new A.ZodError(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};h.ZodCatch=Nt;Nt.create=(t,e)=>new Nt({innerType:t,typeName:P.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...q(e)});var cs=class extends M{_parse(e){if(this._getType(e)!==$.ZodParsedType.nan){let r=this._getOrReturnCtx(e);return(0,g.addIssueToContext)(r,{code:A.ZodIssueCode.invalid_type,expected:$.ZodParsedType.nan,received:r.parsedType}),g.INVALID}return{status:"valid",value:e.data}}};h.ZodNaN=cs;cs.create=t=>new cs({typeName:P.ZodNaN,...q(t)});h.BRAND=Symbol("zod_brand");var Ps=class extends M{_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}};h.ZodBranded=Ps;var Ns=class t extends M{_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"?g.INVALID:o.status==="dirty"?(s.dirty(),(0,g.DIRTY)(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?g.INVALID:i.status==="dirty"?(s.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(e,s){return new t({in:e,out:s,typeName:P.ZodPipeline})}};h.ZodPipeline=Ns;var jt=class extends M{_parse(e){let s=this._def.innerType._parse(e),r=i=>((0,g.isValid)(i)&&(i.value=Object.freeze(i.value)),i);return(0,g.isAsync)(s)?s.then(i=>r(i)):r(s)}unwrap(){return this._def.innerType}};h.ZodReadonly=jt;jt.create=(t,e)=>new jt({innerType:t,typeName:P.ZodReadonly,...q(e)});function mc(t,e){let s=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof s=="string"?{message:s}:s}function _c(t,e={},s){return t?mt.create().superRefine((r,i)=>{let o=t(r);if(o instanceof Promise)return o.then(n=>{if(!n){let a=mc(e,r),c=a.fatal??s??!0;i.addIssue({code:"custom",...a,fatal:c})}});if(!o){let n=mc(e,r),a=n.fatal??s??!0;i.addIssue({code:"custom",...n,fatal:a})}}):mt.create()}h.late={object:Ie.lazycreate};var P;(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"})(P||(h.ZodFirstPartyTypeKind=P={}));var tg=(t,e={message:`Input not instance of ${t.name}`})=>_c(s=>s instanceof t,e);h.instanceof=tg;var wc=pt.create;h.string=wc;var bc=It.create;h.number=bc;var sg=cs.create;h.nan=sg;var rg=Et.create;h.bigint=rg;var kc=At.create;h.boolean=kc;var ig=Ct.create;h.date=ig;var og=is.create;h.symbol=og;var ng=Ut.create;h.undefined=ng;var ag=$t.create;h.null=ag;var cg=mt.create;h.any=cg;var lg=tt.create;h.unknown=lg;var dg=Ge.create;h.never=dg;var ug=os.create;h.void=ug;var pg=st.create;h.array=pg;var mg=Ie.create;h.object=mg;var fg=Ie.strictCreate;h.strictObject=fg;var hg=Tt.create;h.union=hg;var gg=Sr.create;h.discriminatedUnion=gg;var yg=vt.create;h.intersection=yg;var _g=Ke.create;h.tuple=_g;var wg=xr.create;h.record=wg;var bg=ns.create;h.map=bg;var kg=as.create;h.set=kg;var Sg=Ir.create;h.function=Sg;var xg=Dt.create;h.lazy=xg;var Ig=Ot.create;h.literal=Ig;var Eg=Lt.create;h.enum=Eg;var Ag=Rt.create;h.nativeEnum=Ag;var Cg=ft.create;h.promise=Cg;var Sc=Ue.create;h.effect=Sc;h.transformer=Sc;var Ug=ve.create;h.optional=Ug;var $g=ze.create;h.nullable=$g;var Tg=Ue.createWithPreprocess;h.preprocess=Tg;var vg=Ns.create;h.pipeline=vg;var Dg=()=>wc().optional();h.ostring=Dg;var Og=()=>bc().optional();h.onumber=Og;var Lg=()=>kc().optional();h.oboolean=Lg;h.coerce={string:(t=>pt.create({...t,coerce:!0})),number:(t=>It.create({...t,coerce:!0})),boolean:(t=>At.create({...t,coerce:!0})),bigint:(t=>Et.create({...t,coerce:!0})),date:(t=>Ct.create({...t,coerce:!0}))};h.NEVER=g.INVALID});var Ki=I(Oe=>{"use strict";var Rg=Oe&&Oe.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var i=Object.getOwnPropertyDescriptor(e,s);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,i)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),ls=Oe&&Oe.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&Rg(e,t,s)};Object.defineProperty(Oe,"__esModule",{value:!0});ls(wr(),Oe);ls(Wi(),Oe);ls(lc(),Oe);ls(Ls(),Oe);ls(xc(),Oe);ls(_r(),Oe)});var Ac=I(Ee=>{"use strict";var Ic=Ee&&Ee.__createBinding||(Object.create?(function(t,e,s,r){r===void 0&&(r=s);var i=Object.getOwnPropertyDescriptor(e,s);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(t,r,i)}):(function(t,e,s,r){r===void 0&&(r=s),t[r]=e[s]})),Pg=Ee&&Ee.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Ng=Ee&&Ee.__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)&&Ic(e,t,s);return Pg(e,t),e},jg=Ee&&Ee.__exportStar||function(t,e){for(var s in t)s!=="default"&&!Object.prototype.hasOwnProperty.call(e,s)&&Ic(e,t,s)};Object.defineProperty(Ee,"__esModule",{value:!0});Ee.z=void 0;var Ec=Ng(Ki());Ee.z=Ec;jg(Ki(),Ee);Ee.default=Ec});var Er=I((jx,Tc)=>{var zi=null;function Ji(){return zi||(zi=Ac().z),zi}function Cc(){return Ji().string().trim().refine(t=>{let e=t.indexOf(".");return e>0&&e<t.length-1},{message:"API Key \u683C\u5F0F\u9519\u8BEF"})}function Uc(){return Ji().string().refine(t=>{try{return JSON.parse(t),!0}catch{return!1}},{message:"--meta-data \u4E0D\u662F\u5408\u6CD5\u7684 JSON"})}function $c(){return Ji().string().trim().refine(t=>/^https?:\/\/[^\s]+$/i.test(t),{message:"registry \u5FC5\u987B\u662F http(s):// \u5F00\u5934\u7684 URL"})}function Gg(t){let e=Cc().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function qg(t){let e=Uc().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}function Mg(t){let e=$c().safeParse(t);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues[0].message}}Tc.exports={apiKeySchema:Cc,pubMetaDataSchema:Uc,registrySchema:$c,validateApiKey:Gg,validatePubMetaData:qg,validateRegistry:Mg}});var Dc=I((Gx,vc)=>{var Fg=Gi(),{validateApiKey:Bg}=Er();function Wg(t,e){let s=new Fg(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").action(async i=>{if(i.apikey){let o=Bg(i.apikey);if(!o.ok){e.fail(o.error,"\u83B7\u53D6 API Key: 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 <apiKey>`"),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})}vc.exports={register:Wg}});var Rc=I((qx,Lc)=>{var qe=require("fs"),Gt=require("path"),Zg=require("readline"),{execSync:Ar}=require("child_process"),Oc=require("os"),Hi=class{constructor(){this.serverUrl="https://makecoder.com/bigapis/codev/v1/coderpub"}getClaudeJsonlPath(e,s=!1){let r=e.replace(/[/_]/g,"-"),i=Gt.join(Oc.homedir(),".claude","projects",r);if(s&&(console.log(`
293
+ \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: ${i}`)),!qe.existsSync(i))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=qe.readdirSync(i).filter(n=>n.endsWith(".jsonl")).map(n=>({name:n,path:Gt.join(i,n),mtime:qe.statSync(Gt.join(i,n)).mtime,size:qe.statSync(Gt.join(i,n)).size})).sort((n,a)=>a.mtime-n.mtime);return s&&(console.log(` \u627E\u5230 ${o.length} \u4E2A JSONL \u6587\u4EF6:`),o.forEach((n,a)=>{let c=(n.size/1024).toFixed(2),l=n.mtime.toLocaleString(),d=a===0?" <- \u6700\u65B0":"";console.log(` ${a+1}. ${n.name} (${c} KB, ${l})${d}`)})),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=Zg.createInterface({input:process.stdin,output:process.stdout});return new Promise((s,r)=>{e.question("\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0 (name): ",i=>{e.close();let o=i.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,i=Oc.tmpdir(),o=`coder-pub-${Date.now()}.zip`,n=Gt.join(i,o);try{let a=!1;if(qe.existsSync(Gt.join(e,".git")))try{Ar(`git archive -o "${n}" 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(d=>`-x "${d}"`).join(" ");Ar(`zip -r "${n}" . ${l}`,{cwd:e,stdio:"pipe"}),console.log("\u{1F4E6} \u5DF2\u521B\u5EFA\u538B\u7F29\u5305")}if(r){console.log(`
294
+ \u{1F504} [allow-clone] \u5F00\u59CB\u5904\u7406 AI \u751F\u6210\u8BB0\u5F55...`);let c=this.getClaudeJsonlPath(e,!0);if(c){let l=Gt.join(i,"coder.pub.jsonl"),u=(qe.statSync(c).size/1024).toFixed(2);console.log(`
295
+ \u{1F4E6} [allow-clone] \u6253\u5305 JSONL \u6587\u4EF6...`),console.log(` \u6E90\u6587\u4EF6: ${c}`),console.log(` \u6587\u4EF6\u5927\u5C0F: ${u} KB`),console.log(` \u4E34\u65F6\u6587\u4EF6: ${l}`),qe.copyFileSync(c,l),console.log(" \u2713 \u5DF2\u590D\u5236\u5230\u4E34\u65F6\u76EE\u5F55"),console.log(` \u76EE\u6807 ZIP: ${n}`),console.log(" \u76EE\u6807\u6587\u4EF6\u540D: coder.pub.jsonl"),Ar(`zip -j "${n}" "${l}"`,{stdio:"pipe"}),console.log(" \u2713 \u5DF2\u6DFB\u52A0\u5230 ZIP \u5305"),qe.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)
292
296
  `)}else console.log(`\u26A0\uFE0F [allow-clone] \u672A\u627E\u5230 Claude Code \u751F\u6210\u8BB0\u5F55
293
- `)}return o}catch(a){throw new Error(`\u521B\u5EFA\u538B\u7F29\u5305\u5931\u8D25: ${a.message}`)}}async upload(e,s,r,n,i=!1){let o=n?`${n}/coderpub`:this.serverUrl,a=r;console.log("\u{1F4E4} \u6B63\u5728\u4E0A\u4F20\u5230\u670D\u52A1\u5668..."),i&&(console.log(` \u670D\u52A1\u5668\u5730\u5740: ${o}`),console.log(` \u9879\u76EE\u540D\u79F0: ${s}`),console.log(` ZIP \u6587\u4EF6: ${e}`));try{let c=`curl -s -X POST "${o}" -H "Authorization: Bearer ${a}" -F "name=${s}" -F "zip_file=@${e}"`;i&&console.log(" \u6267\u884C\u4E0A\u4F20\u547D\u4EE4...");let l=Cr(c,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]});return i&&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{je.existsSync(e)&&je.unlinkSync(e)}catch{}}async publish(e){let{apikey:s,coderBaseUrl:r,allowClone:n}=e,{name:i}=e,o=null;try{i||(i=await this.promptForName()),console.log(`
294
- \u{1F680} \u6B63\u5728\u53D1\u5E03\u9879\u76EE: ${i}`),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(),o=await this.createZip(process.cwd(),{allowClone:n});let c=(je.statSync(o).size/(1024*1024)).toFixed(2);console.log(`\u{1F4CA} \u538B\u7F29\u5305\u5927\u5C0F: ${c} MB`),n&&console.log(`
295
- \u{1F310} [allow-clone] \u5F00\u59CB\u4E0A\u4F20\u5230\u670D\u52A1\u5668...`);let l=await this.upload(o,i,s,r,n);return l.code===0?(console.log(`
296
- \u2705 \u53D1\u5E03\u6210\u529F!`),console.log(`\u{1F4CC} \u7248\u672C: ${l.data.version}`),console.log(`\u{1F310} \u8BBF\u95EE\u5730\u5740: https://${i}.coder.pub/`),0):(console.error(`
297
+ `)}return n}catch(a){throw new Error(`\u521B\u5EFA\u538B\u7F29\u5305\u5931\u8D25: ${a.message}`)}}async upload(e,s,r,i,o=!1){let n=i?`${i}/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: ${n}`),console.log(` \u9879\u76EE\u540D\u79F0: ${s}`),console.log(` ZIP \u6587\u4EF6: ${e}`));try{let c=`curl -s -X POST "${n}" -H "Authorization: Bearer ${a}" -F "name=${s}" -F "zip_file=@${e}"`;o&&console.log(" \u6267\u884C\u4E0A\u4F20\u547D\u4EE4...");let l=Ar(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{qe.existsSync(e)&&qe.unlinkSync(e)}catch{}}async publish(e){let{apikey:s,coderBaseUrl:r,allowClone:i}=e,{name:o}=e,n=null;try{o||(o=await this.promptForName()),console.log(`
298
+ \u{1F680} \u6B63\u5728\u53D1\u5E03\u9879\u76EE: ${o}`),console.log(`\u{1F4C1} \u76EE\u5F55: ${process.cwd()}`),i&&console.log("\u{1F513} allow-clone: \u542F\u7528 (\u5C06\u5305\u542B AI \u751F\u6210\u8BB0\u5F55)"),console.log(),n=await this.createZip(process.cwd(),{allowClone:i});let c=(qe.statSync(n).size/(1024*1024)).toFixed(2);console.log(`\u{1F4CA} \u538B\u7F29\u5305\u5927\u5C0F: ${c} MB`),i&&console.log(`
299
+ \u{1F310} [allow-clone] \u5F00\u59CB\u4E0A\u4F20\u5230\u670D\u52A1\u5668...`);let l=await this.upload(n,o,s,r,i);return l.code===0?(console.log(`
300
+ \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(`
297
301
  \u274C \u53D1\u5E03\u5931\u8D25: ${l.message||l.reason}`),1)}catch(a){return console.error(`
298
- \u274C ${a.message}`),1}finally{o&&this.cleanup(o)}}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(`
299
- `))}};Nc.exports=Qn});var Mc=x((aI,qc)=>{var dy=jc(),{validatePubMetaData:py}=Ir();function fy(t,e){let s=new dy;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=py(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})}qc.exports={register:fy}});var Jc=x((cI,zc)=>{var{execSync:ti,execFileSync:Gc}=require("child_process"),ei=require("fs"),Er=require("path"),{PLATFORM_PACKAGE:my}=tr(),{validateRegistry:hy}=Ir(),us=["https://registry.npmmirror.com","https://mirrors.cloud.tencent.com/npm/","https://mirrors.huaweicloud.com/repository/npm/"];function Fc(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 Bc(){try{return ti("npm config get registry",{encoding:"utf8"}).trim()}catch{return"https://registry.npmjs.org/"}}function gy(){try{let t=ti("npm root -g",{encoding:"utf8"}).trim(),e=Er.join(t,"makecoder","package.json");if(ei.existsSync(e))return JSON.parse(ei.readFileSync(e,"utf8")).version}catch{}return null}function yy(t){try{let e=["view","makecoder@latest","version"];return t&&e.push("--registry",t),Gc("npm",e,{encoding:"utf8"}).trim()||null}catch{return null}}function _y({registry:t,verbose:e}){let s=["install","-g"];return t&&s.push("--registry",t),e&&s.push("--loglevel","verbose"),s}function Zc(t,e,s){let r=[..._y(e),t];e.verbose&&s.emit(`$ npm ${r.join(" ")}`),Gc("npm",r,{stdio:"inherit"})}function wy(t,e){let s=`${process.platform}-${process.arch}`,r=my[s];if(!r)return;let n;try{n=ti("npm root -g",{encoding:"utf8"}).trim()}catch{return}if([Er.join(n,"makecoder","node_modules",r,"package.json"),Er.join(n,r,"package.json")].some(l=>ei.existsSync(l)))return;e.emit(`\u672A\u68C0\u6D4B\u5230 ${r}\uFF0C\u6B63\u5728\u8865\u88C5...`);let o;try{o=require(Er.join(n,"makecoder","package.json")).optionalDependencies?.[r]}catch{}let a=l=>{try{return Zc(l,t,e),!0}catch{return!1}};o&&a(`${r}@${o}`)||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 Wc(t,e){if(!Fc(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 ${us[0]}`),e.emit("\u6216\u6C38\u4E45\u5207\u6362 npm \u5168\u5C40\u6E90:");for(let s of us)e.emit(` npm config set registry ${s}`)}}function by(t,e){let s=i=>String(i).replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let i=0;i<3;i++){if((r[i]||0)>(n[i]||0))return!0;if((r[i]||0)<(n[i]||0))return!1}return!1}function Vc(t,e){let s=Xt().version,r=t.registry||Bc(),n=yy(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&&by(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")),Wc(r,e),0}function Kc(t,e){let s=Xt().version,r=t.registry||Bc();e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`npm \u6E90: ${r}`),Wc(r,e),e.emit(""),e.emit("\u6B63\u5728\u5347\u7EA7 Coder...");try{Zc("makecoder@latest",t,e)}catch(i){let o=String(i.message||""),a=/EACCES|permission/i.test(o)?"\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 "+us[0];return e.fail(`\u5347\u7EA7\u5931\u8D25: ${o.split(`
300
- `)[0]}`,a),1}wy(t,e);let n=gy();return e.emit(""),e.emit(n?`\u5347\u7EA7\u6210\u529F\uFF0C\u5F53\u524D\u7248\u672C: ${n}`:"\u5347\u7EA7\u6210\u529F"),0}function ky(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 ${us[0]}`," coder update --verbose \u6392\u67E5\u5347\u7EA7\u95EE\u9898\u65F6\u67E5\u770B\u8BE6\u7EC6\u65E5\u5FD7"].join(`
301
- `)).action(s=>{if(s.registry){let r=hy(s.registry);if(!r.ok){e.fail(r.error,`\u793A\u4F8B: coder update --registry ${us[0]}`),process.exitCode=1;return}s.registry=r.value}process.exitCode=s.check?Vc(s,e):Kc(s,e)})}zc.exports={register:ky,runUpdate:Kc,runCheck:Vc,isCnRegistry:Fc,CN_REGISTRIES:us}});var Yc=x((lI,Hc)=>{var{isUuid:xy,classifyId:Sy}=Cn(),si=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===""||xy(e))return e;if(this._cache.has(e))return this._cache.get(e);let n=Sy(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:i,json:o,body:a}=await this.http.postJson(s,{id:n.value}),c=o?.data?.id;if(!i||!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${Iy(a)}\uFF09`,l}return this._cache.set(e,c),c}};function Iy(t){try{let e=JSON.parse(t);return e.message||e.error||""}catch{return(t||"").slice(0,120)}}Hc.exports={IdResolver:si}});var Qc=x((uI,Xc)=>{function Cy(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> \u5217\u51FA\u96C6\u5408\u5185\u6240\u6709\u6587\u6863\uFF08\u5E73\u94FA\uFF0C\u4E0D\u542B\u5C42\u7EA7\uFF09"," list <collection> -d <depth> \u5C42\u7EA7\u6811\uFF08-d 1 = \u9876\u5C42\uFF1B-d -1 = \u5B8C\u6574\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> --after <\u951A\u70B9> # \u63A8\u8350\uFF1A\u7EE7\u627F\u951A\u70B9\u7236\u7EA7"," move <doc> --parent <\u7236\u6587\u6863> [--index <n>] # \u79FB\u5165\u7236\u6587\u6863\u4E0B"," move <doc> --collection <\u96C6\u5408> [--parent <p>] [--index <n>] # \u8DE8\u96C6\u5408"," move <doc> --index <n> # \u4EC5\u9650\u96C6\u5408\u6839\u5C42\u6587\u6863\u6392\u5E8F"," 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 <col>] / 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> --after <\u951A\u70B9> # \u63A8\u8350\u6392\u5E8F\u65B9\u5F0F"," coder wiki move <doc> --parent <\u7236\u6587\u6863> --index 0 # \u79FB\u5165\u5B50\u76EE\u5F55",' 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"," \u26A0\uFE0F list <collection> \u8FD4\u56DE\u7684\u662F\u5168\u96C6\u5408\u6587\u6863\u5E73\u94FA\uFF08\u65E0\u5C42\u7EA7\uFF09\uFF0C\u4E0D\u80FD\u7528\u6765\u5224\u65AD\u5C42\u7EA7\u7ED3\u6784\u3002"," \u8981\u770B\u771F\u6B63\u7684\u5C42\u7EA7\uFF0C\u7528 list <collection> -d 1\uFF08\u9876\u5C42\uFF09\u6216 -d -1\uFF08\u5B8C\u6574\u6811\uFF09\u3002"," \u65B0\u6587\u6863\u9ED8\u8BA4\u63D2\u5230\u540C\u7EA7\u6700\u524D\u9762\uFF0C\u5148\u7528 -d 1/-d -1 \u770B\u6E05\u5C42\u7EA7\u518D\u5B9A\u4F4D\u3002"," \u6392\u5E8F\u63A8\u8350 --after <\u540C\u7EA7\u951A\u70B9>\uFF1A\u5728\u6574\u68F5\u6811\u91CC\u5B9A\u4F4D\uFF0C\u63D2\u5230\u5176\u540E\u5E76\u81EA\u52A8\u7EE7\u627F\u7236\u6587\u6863\uFF0C"," \u4E0D\u7BA1\u76EE\u6807\u5728\u9876\u5C42\u8FD8\u662F\u5B50\u76EE\u5F55\u90FD\u9002\u7528\u3002"," --index <n> \u5728\u540C\u7236\u7EA7\u4E0B\u6309\u4E0B\u6807\u5B9A\u4F4D\uFF080 = \u6700\u524D\uFF09\uFF0C\u9700\u914D\u5408 --parent \u6216\u6587\u6863\u5728\u6839\u5C42\u65F6\u624D\u5B89\u5168\u3002"," \u26A0\uFE0F \u5BF9\u5B50\u76EE\u5F55\u4E2D\u7684\u6587\u6863\u5355\u72EC\u7528 --index \u4F1A\u628A\u6587\u6863\u63D0\u5347\u5230\u96C6\u5408\u6839\uFF0C\u73B0\u5728\u4F1A\u62A5\u9519\u963B\u6B62\u3002"," \uFF08update \u53EA\u6539\u5185\u5BB9/\u6807\u9898\uFF0C\u4E0D\u5F71\u54CD\u987A\u5E8F\u3002\uFF09"];t.emit(e.join(`
302
- `))}Xc.exports={showHelp:Cy}});var sl=x((pI,tl)=>{var{WikiHttp:Ey,docUrl:$y,colUrl:Ay,errorMessage:Ty}=Us(),{IdResolver:vy}=Yc(),{COMMANDS:Uy,flag:dI}=Un(),el=Ln(),{showHelp:Oy}=Qc(),Dy=t=>t.replace(/-([a-z])/g,(e,s)=>s.toUpperCase()),Ry=new Set(["--format","--apikey"]);function Ly(t){let e=[];for(let s=0;s<t.length;s++){if(Ry.has(t[s])){s++;continue}e.push(t[s])}return e}var ri=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 Oy(n),0;let i=r;if(!i)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),1;let{teamId:o,remaining:a}=this._extractTeamFlag(Ly(s||[])),c=await this._resolveTeam(o,i),l=new Ey(i,c),u=new vy(l),d={ctx:n,http:l,resolver:u,args:a,arg:a[0],teamId:c,docUrl:$y,colUrl:Ay};try{let p=Dy(e);if(typeof el[p]=="function")return await el[p](d)||0;let f=Uy[e];return f?await this._runCommand(f,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:i,arg:o,args:a}=s,c=o;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 i.toDocUuid(c):c&&e.id==="col"&&(c=await i.toColUuid(c)),e.resolve)for(let d of e.resolve)await this._resolveSlot(d,a,i);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(Ty(u.body),this._failHint(u)),1)}async _resolveSlot(e,s,r){let n=e.kind==="col"?i=>r.toColUuid(i):i=>r.toDocUuid(i);if(e.flag){let i=s.indexOf(e.flag);i!==-1&&s[i+1]&&(s[i+1]=await n(s[i+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 i=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),o=await this.teamService.request("GET",`/team?constraints=${i}&page=1&size=200`,s);if(o.status===200){let c=this.teamService.parseJson(o.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};tl.exports=ri});var nl=x((fI,rl)=>{function Py(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(`
303
- `))}rl.exports={showHelp:Py}});var $r=x((mI,al)=>{var{TeamHttp:il,parseJson:Ny}=ar(),ol=bn(),{showHelp:jy}=nl(),qy=new Set(["--format","--apikey"]);function My(t){let e=[];for(let s=0;s<t.length;s++){if(qy.has(t[s])){s++;continue}e.push(t[s])}return e}var Gy=new Set(["list","current","use","info"]),Fy=new Set(["members","groups"]),ni=class{constructor(e){this.ctx=e||null}request(e,s,r,n,i){return new il(r).request(e,s,n,i)}parseJson(e){return Ny(e)}async handle({teamSubcommand:e,teamRemainingArgs:s,apikey:r}){let n=this.ctx;if(!e||e==="--help"||e==="-h")return jy(n),0;let i=r;if(!i)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let o=My(s||[]),a=e==="ls"?"list":e,c=this._resolve(a,o);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 il(i),p={ctx:n,http:d,args:u,arg:u[0]};try{return await l(p)||0}catch(f){return f&&f.handled?f.code||1:(n.fail(f.message||String(f),f.hint),1)}}_resolve(e,s){if(Gy.has(e))return{fn:ol[e],args:s};if(Fy.has(e)){let r=ol[e],n=s[0];if(!n||n.startsWith("-"))return{fn:r.list,args:s};let i=r[n];if(!i){let o=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${o}\uFF09`}}return{fn:i,args:s.slice(1)}}return null}};al.exports=ni});var ll=x((hI,cl)=>{var By=sl(),Zy=$r();function Wy(t,e){let s=new By(e);return s.teamService=new Zy(e),t.command("wiki [args...]").description("\u7BA1\u7406 MakeCoder \u77E5\u8BC6\u5E93").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],i=await s.handle({wikiSubcommand:n[0],wikiRemainingArgs:n.slice(1),apikey:e.getApiKey()});process.exitCode=i||0}),s}cl.exports={register:Wy}});var oi=x((gI,dl)=>{var Vy=require("https"),Ky=require("http"),{URL:zy}=require("url"),ul="https://flow.makecoder.com",Jy="coder";function Hy(t){return t==="darwin"?"macos":t==="win32"?"windows":"linux"}var ii=class{constructor(e,s,r){this.token=e,this.baseUrl=(s||ul).replace(/\/+$/,""),this.workspaceId=r||null,this.version=process.env.CODER_VERSION||"dev",this.os=Hy(process.platform)}request(e,s,r){return new Promise((n,i)=>{let o=new zy(`${this.baseUrl}${s}`),a=o.protocol==="http:"?Ky:Vy,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":Jy,"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:o.hostname,port:o.port||(o.protocol==="http:"?80:443),path:o.pathname+o.search,method:e,headers:c},d=>{let p="";d.on("data",f=>p+=f),d.on("end",()=>n({status:d.statusCode,body:p}))});u.on("error",i),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=qs(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=qs(s.value.body),i=Array.isArray(n)?n:n?.data??n?.agents??[];for(let o of i){if(!o.id)continue;let a=e?`${this.baseUrl}/${e}/agents/${o.id}`:null;this._actorLookup.set(o.id,{name:o.name||o.id,type:"agent",url:a})}}if(r.status==="fulfilled"){let n=qs(r.value.body),i=Array.isArray(n)?n:n?.data??n?.members??[];for(let o of i){let a=o.user_id||o.id;if(!a)continue;let c=e?`${this.baseUrl}/${e}/members/${a}`:null;this._actorLookup.set(a,{name:o.name||o.username||a,type:"member",url:c})}}return this._actorLookup}};function qs(t){try{return JSON.parse(t)}catch{return null}}function Yy(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Xy(t){let e=qs(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}dl.exports={MulticaHttp:ii,parseJson:qs,exitCodeForStatus:Yy,errorMessage:Xy,DEFAULT_BASE_URL:ul}});var gl=x((yI,hl)=>{var ai=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function pl(t,e){return`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`}function Qy(t,e){return`[${t}](${e})`}function ci(t){return!t.isJson}function Ar(t,e){return process.stdout.isTTY?pl(t,e):Qy(t,e)}function fl(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 ds(t){let e=0;for(let s of String(t))e+=fl(s.codePointAt(0));return e}function e_(t,e){if(ds(t)<=e)return t;let s=0,r="";for(let n of t){let i=fl(n.codePointAt(0));if(s+i>e-1)break;r+=n,s+=i}return r+"\u2026"}function ml(t,e){return t+" ".repeat(Math.max(0,e-ds(t)))}function t_(t,e,s={}){let{labels:r={},empty:n="\uFF08\u7A7A\uFF09",values:i={},linkCol:o=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(v=>ai(r[v]||v)),d=(v,O)=>{let G=i[v];return G&&G[O]!==void 0?G[O]:O},p=e.map(v=>l.map(O=>e_(ai(d(O,v[O])),48))),f=l.map((v,O)=>{let G=ds(u[O]);for(let B of p)G=Math.max(G,ds(B[O]));return Math.max(3,G)}),g=o?l.indexOf(o):-1,_=g!==-1&&a&&ci(t),y=c?l.indexOf(c.col):-1,w=y!==-1&&c?.links&&ci(t),T=(v,O)=>`| ${v.map((G,B)=>{let H=ml(G,f[B]);return _&&B===g&&O>=0&&a[O]?Ar(G,a[O])+H.slice(G.length):w&&B===y&&O>=0&&c.links[O]?Ar(G,c.links[O])+H.slice(G.length):H}).join(" | ")} |`,N=[T(u,-1),`| ${f.map(v=>"-".repeat(v)).join(" | ")} |`,...p.map((v,O)=>T(v,O))];t.emit(N.join(`
304
- `))}function s_(t,e,s=null,r={}){if(t.isJson){let f={};for(let[g,_]of e)f[g]=_;s&&typeof s=="object"&&Object.assign(f,s),t.emit(f);return}let{labels:n={},values:i={},link:o=null,fieldLinks:a=null}=r,c=(f,g)=>String(g||n[f]||f),l=e.map(([f,,g])=>c(f,g)),u=Math.max(0,...l.map(f=>ds(f))),d=ci(t),p=(f,g)=>{let _=i[f],y=_&&_[g]!==void 0?_[g]:g??"";return d&&o&&f===o.key&&o.url?y=Ar(String(y),o.url):d&&a&&a[f]&&(y=Ar(String(y),a[f])),y};t.emit(e.map(([f,g,_])=>`${ml(c(f,_),u)} ${p(f,g)}`).join(`
305
- `))}hl.exports={emitTable:t_,emitDetails:s_,escCell:ai,displayWidth:ds,hyperlink:pl}});var wl=x((_I,_l)=>{var{parseJson:r_,exitCodeForStatus:n_,errorMessage:i_}=oi();function Tr(t,e,s,r=1){t.fail(e,s);let n=new Error("__handled__");throw n.handled=!0,n.code=r,n}function o_(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 yl(t,e){Tr(t,i_(e.body),o_(e.status),n_(e.status))}async function a_(t,e,s,r){try{return await t.http.request(e,s,r)}catch(n){Tr(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${n.message}`,void 0,1)}}function c_(t,e){return(e.status<200||e.status>=300)&&yl(t.ctx,e),r_(e.body)}var l_=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},u_=(t,...e)=>t.some(s=>e.includes(s));function d_(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let n=0;n<t.length;n++){let i=t[n];if(!e.includes(i)){if(s.includes(i)){n++;continue}i&&i.startsWith("--")||r.push(i)}}return r}function p_(t){let e=t.http&&t.http.workspaceId;return e||Tr(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}_l.exports={abort:Tr,abortOnHttp:yl,send:a_,ensureOk:c_,flag:l_,hasFlag:u_,positionals:d_,requireWorkspaceId:p_}});var Ms=x((wI,bl)=>{var ui=require("http"),vr=19514,li=class{constructor(e=vr){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=ui.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 f_(t=vr,e=2e3){return new Promise(s=>{let r=ui.get(`http://127.0.0.1:${t}/health`,{timeout:e},n=>{let i="";n.on("data",o=>i+=o),n.on("end",()=>{try{s(JSON.parse(i))}catch{s({status:"stopped"})}})});r.on("error",()=>s({status:"stopped"})),r.on("timeout",()=>{r.destroy(),s({status:"stopped"})})})}async function m_(t=vr){return new Promise((e,s)=>{let r=ui.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()})}bl.exports={HealthServer:li,checkHealth:f_,requestShutdown:m_,DEFAULT_HEALTH_PORT:vr}});var fs=x((bI,xl)=>{var Mt=require("fs"),Ur=require("path"),h_=require("os"),g_=require("crypto");function ps(){return Ur.join(h_.homedir(),".multica")}function kl(){return Ur.join(ps(),"daemon.id")}function Or(){return Ur.join(ps(),"daemon.pid")}function y_(){return Ur.join(ps(),"daemon.log")}function __(t){if(t)return t;let e=kl();try{let r=Mt.readFileSync(e,"utf8").trim();if(r)return r}catch{}let s=g_.randomUUID();try{Mt.mkdirSync(ps(),{recursive:!0}),Mt.writeFileSync(e,s,"utf8")}catch{}return s}function w_(t){try{Mt.mkdirSync(ps(),{recursive:!0}),Mt.writeFileSync(Or(),String(t),"utf8")}catch{}}function b_(){try{let t=Mt.readFileSync(Or(),"utf8").trim();return parseInt(t,10)||null}catch{return null}}function k_(){try{Mt.unlinkSync(Or())}catch{}}xl.exports={daemonDir:ps,daemonIdPath:kl,daemonPidPath:Or,daemonLogPath:y_,loadOrCreateDaemonId:__,writePid:w_,readPid:b_,removePid:k_}});var di=x((kI,Il)=>{var Sl=require("os"),x_=require("path");function S_(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||Sl.hostname(),runtimeName:t.runtimeName||process.env.MULTICA_AGENT_RUNTIME_NAME||"Local Agent",pollInterval:Gs(e,3e4),heartbeatInterval:Gs(s,15e3),maxConcurrentTasks:t.maxConcurrentTasks||parseInt(process.env.MULTICA_DAEMON_MAX_CONCURRENT_TASKS||"20",10),agentTimeout:t.agentTimeout!==void 0?t.agentTimeout:Gs(process.env.MULTICA_AGENT_TIMEOUT||"0",0),workspacesRoot:process.env.MULTICA_WORKSPACES_ROOT||x_.join(Sl.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),gcInterval:Gs(process.env.MULTICA_GC_INTERVAL||"1h",36e5),gcOrphanTtl:parseInt(process.env.MULTICA_GC_ORPHAN_TTL||String(72*36e5),10),gcArtifactTtl:parseInt(process.env.MULTICA_GC_ARTIFACT_TTL||String(12*36e5),10),gcArtifactPatterns:(process.env.MULTICA_GC_ARTIFACT_PATTERNS||"node_modules,.next,.turbo").split(",").map(r=>r.trim()).filter(Boolean),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 Xt().version}catch{return"0.2.20"}})()}}function Gs(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}Il.exports={loadConfig:S_,parseDuration:Gs}});var El=x((xI,Cl)=>{var I_=require("https"),C_=require("http"),{URL:E_}=require("url"),pi=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,i)=>{let o=new E_(`${this.serverUrl}${s}`),a=o.protocol==="http:"?C_:I_,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:o.hostname,port:o.port||(o.protocol==="http:"?80:443),path:o.pathname+o.search,method:e,headers:c},d=>{let p="";d.on("data",f=>p+=f),d.on("end",()=>n({status:d.statusCode,body:p}))});u.on("error",i),l&&u.write(l),u.end()})}async _requestWithRetry(e,s,r,n=[1e3,2e3,4e3,8e3,16e3]){let i;for(let o=0;o<=n.length;o++){try{let a=await this._request(e,s,r);if(a.status<500)return a;i=new Error(`HTTP ${a.status}: ${a.body.slice(0,200)}`)}catch(a){i=a}o<n.length&&await $_(n[o])}throw i}_json(e){try{return JSON.parse(e.body)}catch{return null}}async register({workspaceId:e,daemonId:s,deviceName:r,cliVersion:n,runtimes:i}){let o=await this._request("POST","/api/daemon/register",{workspace_id:e,daemon_id:s,device_name:r,cli_version:n||this.cliVersion,runtimes:i});return this._json(o)}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:i}={}){let o={};return s!==void 0&&(o.output=s),r&&(o.session_id=r),n&&(o.work_dir=n),i&&(o.branch_name=i),this._requestWithRetry("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/complete`,o)}async taskFail(e,{error:s,sessionId:r,workDir:n,failureReason:i}={}){let o={};return s!==void 0&&(o.error=s),r&&(o.session_id=r),n&&(o.work_dir=n),i&&(o.failure_reason=i),this._requestWithRetry("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`);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 reportTaskUsage(e,s){if(!s||!s.length)return;let r=await this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/usage`,{usage:s});if(r.status>=400)throw new Error(`reportTaskUsage ${r.status}: ${r.body.slice(0,200)}`);return this._json(r)}async reportLocalSkillListResult(e,s,r){let n=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/local-skills/${encodeURIComponent(s)}/result`,r);if(n.status>=400)throw new Error(`reportLocalSkillListResult ${n.status}: ${n.body.slice(0,200)}`);return this._json(n)}async reportLocalSkillImportResult(e,s,r){let n=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/local-skills/import/${encodeURIComponent(s)}/result`,r);if(n.status>=400)throw new Error(`reportLocalSkillImportResult ${n.status}: ${n.body.slice(0,200)}`);return this._json(n)}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 getIssueGcCheck(e){let s=await this._request("GET",`/api/daemon/issues/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getChatSessionGcCheck(e){let s=await this._request("GET",`/api/daemon/chat-sessions/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getAutopilotRunGcCheck(e){let s=await this._request("GET",`/api/daemon/autopilot-runs/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getTaskGcCheck(e){let s=await this._request("GET",`/api/daemon/tasks/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getWorkspaces(){let e=await this._request("GET","/api/workspaces"),s=this._json(e);return s?Array.isArray(s)?s:s.workspaces||[]:[]}};function $_(t){return new Promise(e=>setTimeout(e,t))}Cl.exports={DaemonClient:pi}});var Ul=x((SI,vl)=>{var Gt=require("fs"),Al=require("path"),A_=require("os"),fi="<!-- BEGIN MULTICA-RUNTIME (auto-managed; do not edit) -->",mi="<!-- END MULTICA-RUNTIME -->",hi=`
302
+ \u274C ${a.message}`),1}finally{n&&this.cleanup(n)}}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(`
303
+ `))}};Lc.exports=Hi});var Nc=I((Mx,Pc)=>{var Vg=Rc(),{validatePubMetaData:Kg}=Er();function zg(t,e){let s=new Vg;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 i=Kg(r.metaData);if(!i.ok){e.fail(i.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})}Pc.exports={register:zg}});var Vc=I((Fx,Zc)=>{var{execSync:Xi,execFileSync:jc}=require("child_process"),Yi=require("fs"),Cr=require("path"),{PLATFORM_PACKAGE:Jg}=er(),{validateRegistry:Hg}=Er(),ds=["https://registry.npmmirror.com","https://mirrors.cloud.tencent.com/npm/","https://mirrors.huaweicloud.com/repository/npm/"];function Gc(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 qc(){try{return Xi("npm config get registry",{encoding:"utf8"}).trim()}catch{return"https://registry.npmjs.org/"}}function Yg(){try{let t=Xi("npm root -g",{encoding:"utf8"}).trim(),e=Cr.join(t,"makecoder","package.json");if(Yi.existsSync(e))return JSON.parse(Yi.readFileSync(e,"utf8")).version}catch{}return null}function Xg(t){try{let e=["view","makecoder@latest","version"];return t&&e.push("--registry",t),jc("npm",e,{encoding:"utf8"}).trim()||null}catch{return null}}function Qg({registry:t,verbose:e}){let s=["install","-g"];return t&&s.push("--registry",t),e&&s.push("--loglevel","verbose"),s}function Mc(t,e,s){let r=[...Qg(e),t];e.verbose&&s.emit(`$ npm ${r.join(" ")}`),jc("npm",r,{stdio:"inherit"})}function ey(t,e){let s=`${process.platform}-${process.arch}`,r=Jg[s];if(!r)return;let i;try{i=Xi("npm root -g",{encoding:"utf8"}).trim()}catch{return}if([Cr.join(i,"makecoder","node_modules",r,"package.json"),Cr.join(i,r,"package.json")].some(l=>Yi.existsSync(l)))return;e.emit(`\u672A\u68C0\u6D4B\u5230 ${r}\uFF0C\u6B63\u5728\u8865\u88C5...`);let n;try{n=require(Cr.join(i,"makecoder","package.json")).optionalDependencies?.[r]}catch{}let a=l=>{try{return Mc(l,t,e),!0}catch{return!1}};n&&a(`${r}@${n}`)||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 Fc(t,e){if(!Gc(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 ${ds[0]}`),e.emit("\u6216\u6C38\u4E45\u5207\u6362 npm \u5168\u5C40\u6E90:");for(let s of ds)e.emit(` npm config set registry ${s}`)}}function ty(t,e){let s=o=>String(o).replace(/^v/,"").split(".").map(Number),[r,i]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(i[o]||0))return!0;if((r[o]||0)<(i[o]||0))return!1}return!1}function Bc(t,e){let s=Xt().version,r=t.registry||qc(),i=Xg(t.registry||null);return e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`\u6700\u65B0\u7248\u672C: ${i||"\u67E5\u8BE2\u5931\u8D25\uFF08\u68C0\u67E5\u7F51\u7EDC\u6216 registry\uFF09"}`),e.emit(`npm \u6E90: ${r}`),i&&ty(i,s)?(e.emit(""),e.emit(`\u6709\u53EF\u7528\u66F4\u65B0 ${s} \u2192 ${i}\uFF0C\u8FD0\u884C coder update \u5347\u7EA7\u3002`)):i&&(e.emit(""),e.emit("\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002")),Fc(r,e),0}function Wc(t,e){let s=Xt().version,r=t.registry||qc();e.emit(`\u5F53\u524D\u7248\u672C: ${s}`),e.emit(`npm \u6E90: ${r}`),Fc(r,e),e.emit(""),e.emit("\u6B63\u5728\u5347\u7EA7 Coder...");try{Mc("makecoder@latest",t,e)}catch(o){let n=String(o.message||""),a=/EACCES|permission/i.test(n)?"\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 "+ds[0];return e.fail(`\u5347\u7EA7\u5931\u8D25: ${n.split(`
304
+ `)[0]}`,a),1}ey(t,e);let i=Yg();return e.emit(""),e.emit(i?`\u5347\u7EA7\u6210\u529F\uFF0C\u5F53\u524D\u7248\u672C: ${i}`:"\u5347\u7EA7\u6210\u529F"),0}function sy(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 ${ds[0]}`," coder update --verbose \u6392\u67E5\u5347\u7EA7\u95EE\u9898\u65F6\u67E5\u770B\u8BE6\u7EC6\u65E5\u5FD7"].join(`
305
+ `)).action(s=>{if(s.registry){let r=Hg(s.registry);if(!r.ok){e.fail(r.error,`\u793A\u4F8B: coder update --registry ${ds[0]}`),process.exitCode=1;return}s.registry=r.value}process.exitCode=s.check?Bc(s,e):Wc(s,e)})}Zc.exports={register:sy,runUpdate:Wc,runCheck:Bc,isCnRegistry:Gc,CN_REGISTRIES:ds}});var zc=I((Bx,Kc)=>{var{isUuid:ry,classifyId:iy}=Ci(),Qi=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===""||ry(e))return e;if(this._cache.has(e))return this._cache.get(e);let i=iy(e);if(!i){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(i.kind==="uuid")return this._cache.set(e,i.value),i.value;let{ok:o,json:n,body:a}=await this.http.postJson(s,{id:i.value}),c=n?.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${oy(a)}\uFF09`,l}return this._cache.set(e,c),c}};function oy(t){try{let e=JSON.parse(t);return e.message||e.error||""}catch{return(t||"").slice(0,120)}}Kc.exports={IdResolver:Qi}});var Xc=I((Wx,Yc)=>{function Jc(t){let e=["USAGE"," coder wiki <command> <subcommand> [flags]","","CONTENT COMMANDS"," collection: Work with collections"," document: Work with documents"," revision: Work with document revision history"," template: Work with templates","","ENGAGEMENT COMMANDS"," star: Star documents and collections"," pin: Pin documents to a collection"," comment: Work with document comments"," reaction: List reactions on a comment"," subscription: Work with document/collection subscriptions"," share: Work with public share links"," view: Work with document view records","","ADMIN COMMANDS"," user: Work with wiki users"," group: Work with user groups"," event: List audit events"," file-op: Work with file operations (import/export jobs)"," attachment: Work with document attachments"," icon: List available icon names (local)","","GLOBAL FLAGS"," --team <teamId> Specify team context (default: coder team current)"," --format json Structured JSON output (default: text)","","EXAMPLES"," $ coder wiki collection list"," $ coder wiki document get --id https://makecoder.com/wiki/doc/kTI1eTPs7o"," $ coder wiki document search --query '\u5173\u952E\u8BCD' --format json"," $ coder wiki document publish --id <collection> --file ./doc.md --after <\u524D\u4E00\u7BC7>"," $ coder wiki document move --id <doc> --after <\u951A\u70B9>","","LEARN MORE"," Use `coder wiki <command> --help` to list a command's subcommands."," Use `coder wiki <command> <subcommand> --help` for a subcommand's flags."," A command with no subcommand defaults to `list`."," --id accepts UUID, urlId, or full browser URL."];t.emit(e.join(`
306
+ `))}var ny={collection:["Work with collections","","USAGE"," coder wiki collection <command> [flags]","","COMMANDS"," list: List collections"," info: Get collection details"," create: Create a new collection"," update: Update a collection"," delete: Delete a collection"," archive: Archive a collection"," restore: Restore an archived collection"," move: Reorder a collection by index"," export: Export a collection"," export-all: Export all collections"," members: List collection members (users)"," add-user: Add a user to a collection"," remove-user: Remove a user from a collection"," add-group: Add a group to a collection"," remove-group: Remove a group from a collection"," group-members: List groups in a collection"],document:["Work with documents","","USAGE"," coder wiki document <command> [flags]","","COMMANDS"," list: List documents in a collection"," tree: Show a collection's document tree"," get: View a document (with body)"," publish: Publish a new document"," update: Update a document title/body"," delete: Delete a document"," move: Move or reorder a document"," archive: Archive a document"," restore: Restore an archived document"," archived: List archived documents"," deleted: List deleted documents"," search: Full-text search across documents"," search-titles: Search document titles only"," insights: View access analytics for a document"," export: Export document content"," duplicate: Duplicate a document"," unpublish: Unpublish a document"," templatize: Convert a document to a template"," members: List document members (users)"," add-user: Add a user to a document"," remove-user: Remove a user from a document"," add-group: Add a group to a document"," remove-group: Remove a group from a document"," group-members: List groups on a document"," sub-docs: List child documents"," empty-trash: Empty the document trash"," drafts: List your draft documents"," recent: List recently viewed documents"],revision:["Work with document revision history","","USAGE"," coder wiki revision <command> [flags]","","COMMANDS"," list: List revision history for a document"," get: View a specific revision"],template:["Work with templates","","USAGE"," coder wiki template <command> [flags]","","COMMANDS"," list: List templates"," info: Get template details"," create: Create a template"," update: Update a template"," delete: Delete a template"," duplicate: Duplicate a template"],star:["Star documents and collections","","USAGE"," coder wiki star <command> [flags]","","COMMANDS"," list: List starred documents/collections"," add: Star a document or collection"," remove: Remove a star"],pin:["Pin documents to a collection","","USAGE"," coder wiki pin <command> [flags]","","COMMANDS"," list: List pinned documents"," add: Pin a document"," remove: Remove a pin"],comment:["Work with document comments","","USAGE"," coder wiki comment <command> [flags]","","COMMANDS"," list: List comments on a document"," add: Add a comment to a document"],reaction:["List reactions on a comment","","USAGE"," coder wiki reaction <command> [flags]","","COMMANDS"," list: List reactions on a comment"],subscription:["Work with document/collection subscriptions","","USAGE"," coder wiki subscription <command> [flags]","","COMMANDS"," list: List subscriptions"," add: Subscribe to a document"," remove: Remove a subscription"],share:["Work with public share links","","USAGE"," coder wiki share <command> [flags]","","COMMANDS"," list: List shares"," info: Get share details"," create: Create a share link for a document"," update: Update a share"," revoke: Revoke a share"],view:["Work with document view records","","USAGE"," coder wiki view <command> [flags]","","COMMANDS"," list: List views for a document"," record: Record a document view"],user:["Work with wiki users","","USAGE"," coder wiki user <command> [flags]","","COMMANDS"," list: List wiki users"," info: Get user details"," invite: Invite a user"," update-role: Change a user's role"," suspend: Suspend a user"," activate: Activate a suspended user"],group:["Work with user groups","","USAGE"," coder wiki group <command> [flags]","","COMMANDS"," list: List groups"," info: Get group details"," create: Create a group"," update: Update a group"," delete: Delete a group"," members: List group members"," add-user: Add a user to a group"," remove-user: Remove a user from a group"],event:["List audit events","","USAGE"," coder wiki event <command> [flags]","","COMMANDS"," list: List audit events"],"file-op":["Work with file operations (import/export jobs)","","USAGE"," coder wiki file-op <command> [flags]","","COMMANDS"," list: List file operations"," info: Get file operation details"," delete: Delete a file operation record"],attachment:["Work with document attachments","","USAGE"," coder wiki attachment <command> [flags]","","COMMANDS"," list: List attachments"," upload: Upload a local file as an attachment"," upload-url: Upload from a URL as an attachment"," delete: Delete an attachment"],icon:["List available icon names (local)","","USAGE"," coder wiki icon <command> [flags]","","COMMANDS"," list: List available icon names"]};function Hc(t,e){let s=ny[e];s?t.emit([...s,"","LEARN MORE",` Use \`coder wiki ${e} <subcommand> --help\` for a subcommand's flags.`].join(`
307
+ `)):Jc(t)}var ay={collection:{list:["List collections","","USAGE"," coder wiki collection list"],info:["Get collection details","","USAGE"," coder wiki collection info --id <collection>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"],create:["Create a new collection","","USAGE"," coder wiki collection create --name <name> [flags]","","FLAGS"," --name <string> Collection name (required)"," --description <string> Description"," --permission r|rw|null Access permission (default: rw / read_write)"," --icon <name> Icon name (see `coder wiki icon list`) or emoji"," --color <#hex> Brand color"," --sort-field title|index Sort field"," --sort-direction asc|desc Sort direction"," --index <n> Position index"],update:["Update a collection","","USAGE"," coder wiki collection update --id <collection> [flags]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --name <string> New name"," --description <string> New description"," --permission r|rw|null New permission"," --color <#hex> New brand color"," --sharing true|false Enable/disable sharing"],delete:["Delete a collection","","USAGE"," coder wiki collection delete --id <collection>"],archive:["Archive a collection","","USAGE"," coder wiki collection archive --id <collection>"],restore:["Restore an archived collection","","USAGE"," coder wiki collection restore --id <collection>"],move:["Reorder a collection by index","","USAGE"," coder wiki collection move --id <collection> --index <n>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --index <n> Target position index (non-negative integer)"],export:["Export a collection","","USAGE"," coder wiki collection export --id <collection> [flags]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --export-format outline|markdown_zip Export format (default: outline)"],"export-all":["Export all collections","","USAGE"," coder wiki collection export-all [flags]","","FLAGS"," --export-format outline|markdown_zip Export format (default: outline)"],members:["List collection members (users)","","USAGE"," coder wiki collection members --id <collection> [flags]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --query <string> Search query"," --permission <string> Filter by permission"],"add-user":["Add a user to a collection","","USAGE"," coder wiki collection add-user --id <collection> --user <userId> [--permission <p>]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --user <userId> User UUID (required)"," --permission <string> Permission to grant"],"remove-user":["Remove a user from a collection","","USAGE"," coder wiki collection remove-user --id <collection> --user <userId>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --user <userId> User UUID (required)"],"add-group":["Add a group to a collection","","USAGE"," coder wiki collection add-group --id <collection> --group <groupId> [--permission <p>]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --group <groupId> Group UUID (required)"," --permission <string> Permission to grant"],"remove-group":["Remove a group from a collection","","USAGE"," coder wiki collection remove-group --id <collection> --group <groupId>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --group <groupId> Group UUID (required)"],"group-members":["List groups in a collection","","USAGE"," coder wiki collection group-members --id <collection>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"]},document:{list:["List documents in a collection","","USAGE"," coder wiki document list --id <collection>","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"],tree:["Show a collection's document tree","","USAGE"," coder wiki document tree --id <collection> [--depth <n>]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL"," --depth <n> Tree depth: 1 = top-level (default), -1 = full tree"],get:["View a document (with body)","","USAGE"," coder wiki document get --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],publish:["Publish a new document","","USAGE"," coder wiki document publish --id <collection> --title <title> [--body <text>]"," coder wiki document publish --id <collection> --file <path> [flags]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL (required)"," --title <string> Document title (inline mode; or use --file)"," --body <text> Document body (inline mode)"," --file <path> Read title (H1) and body from a Markdown/MDX file"," --parent <doc> Parent document id"," --after <doc> Insert after this document (inherits its parent)"," --index <n> Position index within parent (0 = first)"],update:["Update a document title/body","","USAGE"," coder wiki document update --id <doc> --title <title> [--body <text>]"," coder wiki document update --id <doc> --file <path>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL (required)"," --title <string> New title (or use --file)"," --body <text> New body"," --file <path> Read new title (H1) and body from a Markdown/MDX file"],delete:["Delete a document","","USAGE"," coder wiki document delete --id <doc> [--permanent]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --permanent Permanently delete (bypass trash)"],move:["Move or reorder a document","","USAGE"," coder wiki document move --id <doc> --after <anchor> (recommended)"," coder wiki document move --id <doc> --parent <parent> [--index <n>]"," coder wiki document move --id <doc> --collection <col> [--parent <p>] [--index <n>]"," coder wiki document move --id <doc> --index <n> (root-level only)","","FLAGS"," --id <val> Document UUID, urlId, or browser URL (required)"," --after <doc> Insert after this sibling (auto-inherits its parent)"," --parent <doc> Move into this parent document"," --collection <col> Move to a different collection"," --index <n> Position index within sibling list (0 = first)"],archive:["Archive a document","","USAGE"," coder wiki document archive --id <doc>"],restore:["Restore an archived document","","USAGE"," coder wiki document restore --id <doc> [flags]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --revision <revId> Restore to a specific revision UUID"," --collection <col> Restore into this collection"],archived:["List archived documents","","USAGE"," coder wiki document archived [flags]","","FLAGS"," --collection <col> Filter by collection"," --sort <field> Sort field"," --direction <dir> Sort direction (ASC|DESC)"],deleted:["List deleted documents","","USAGE"," coder wiki document deleted [flags]","","FLAGS"," --sort <field> Sort field"," --direction <dir> Sort direction (ASC|DESC)"],search:["Full-text search across documents","","USAGE"," coder wiki document search --query <keyword>","","FLAGS"," --query <string> Search keyword (required)"],"search-titles":["Search document titles only","","USAGE"," coder wiki document search-titles --query <keyword>","","FLAGS"," --query <string> Search keyword (required)"],insights:["View access analytics for a document","","USAGE"," coder wiki document insights --id <doc> [flags]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --start-date <date> Start date (ISO 8601)"," --end-date <date> End date (ISO 8601)"],export:["Export document content","","USAGE"," coder wiki document export --id <doc> [--include-children]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --include-children Include child documents"],duplicate:["Duplicate a document","","USAGE"," coder wiki document duplicate --id <doc> [flags]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --title <string> Title for the duplicate"," --collection <col> Target collection"," --parent <doc> Target parent document"," --recursive Duplicate child documents too"," --publish Publish the duplicate"],unpublish:["Unpublish a document","","USAGE"," coder wiki document unpublish --id <doc>"],templatize:["Convert a document to a template","","USAGE"," coder wiki document templatize --id <doc> [--collection <col>]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --collection <col> Target collection for the template"],members:["List document members (users)","","USAGE"," coder wiki document members --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],"add-user":["Add a user to a document","","USAGE"," coder wiki document add-user --id <doc> --user <userId> [--permission <p>]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --user <userId> User UUID (required)"," --permission <string> Permission to grant"],"remove-user":["Remove a user from a document","","USAGE"," coder wiki document remove-user --id <doc> --user <userId>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --user <userId> User UUID (required)"],"add-group":["Add a group to a document","","USAGE"," coder wiki document add-group --id <doc> --group <groupId> [--permission <p>]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --group <groupId> Group UUID (required)"," --permission <string> Permission to grant"],"remove-group":["Remove a group from a document","","USAGE"," coder wiki document remove-group --id <doc> --group <groupId>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --group <groupId> Group UUID (required)"],"group-members":["List groups on a document","","USAGE"," coder wiki document group-members --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],"sub-docs":["List child documents","","USAGE"," coder wiki document sub-docs --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],"empty-trash":["Empty the document trash","","USAGE"," coder wiki document empty-trash"],drafts:["List your draft documents","","USAGE"," coder wiki document drafts"],recent:["List recently viewed documents","","USAGE"," coder wiki document recent"]},revision:{list:["List revision history for a document","","USAGE"," coder wiki revision list --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],get:["View a specific revision","","USAGE"," coder wiki revision get --id <revId>","","FLAGS"," --id <revId> Revision UUID (from `coder wiki revision list`)"]},template:{list:["List templates","","USAGE"," coder wiki template list [--collection <col>]","","FLAGS"," --collection <col> Filter by collection"],info:["Get template details","","USAGE"," coder wiki template info --id <tplId>","","FLAGS"," --id <tplId> Template UUID"],create:["Create a template","","USAGE"," coder wiki template create --id <collection> --title <title> [--text <body>]","","FLAGS"," --id <val> Collection UUID, urlId, or browser URL (required)"," --title <string> Template title (required)"," --text <body> Template body text"],update:["Update a template","","USAGE"," coder wiki template update --id <tplId> [--title <t>] [--text <body>]","","FLAGS"," --id <tplId> Template UUID"," --title <string> New title"," --text <body> New body text"],delete:["Delete a template","","USAGE"," coder wiki template delete --id <tplId>","","FLAGS"," --id <tplId> Template UUID"],duplicate:["Duplicate a template","","USAGE"," coder wiki template duplicate --id <tplId> [--title <t>]","","FLAGS"," --id <tplId> Template UUID"," --title <string> Title for the duplicate"]},star:{list:["List starred documents/collections","","USAGE"," coder wiki star list"],add:["Star a document or collection","","USAGE"," coder wiki star add --id <doc>"," coder wiki star add --collection <col>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --collection <col> Collection UUID, urlId, or browser URL (instead of --id)"],remove:["Remove a star","","USAGE"," coder wiki star remove --id <starId>","","FLAGS"," --id <starId> Star UUID (from `coder wiki star list`)"]},pin:{list:["List pinned documents","","USAGE"," coder wiki pin list [--collection <col>]","","FLAGS"," --collection <col> Filter by collection"],add:["Pin a document","","USAGE"," coder wiki pin add --id <doc> [--collection <col>]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --collection <col> Pin within this collection (omit = home)"],remove:["Remove a pin","","USAGE"," coder wiki pin remove --id <pinId>","","FLAGS"," --id <pinId> Pin UUID (from `coder wiki pin list`)"]},comment:{list:["List comments on a document","","USAGE"," coder wiki comment list --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],add:["Add a comment to a document","","USAGE"," coder wiki comment add --id <doc> --text <content>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --text <string> Comment content (required)"]},reaction:{list:["List reactions on a comment","","USAGE"," coder wiki reaction list --id <commentId>","","FLAGS"," --id <commentId> Comment UUID"]},subscription:{list:["List subscriptions","","USAGE"," coder wiki subscription list --id <doc>"," coder wiki subscription list --collection <col>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --collection <col> Collection id (instead of --id)"],add:["Subscribe to a document","","USAGE"," coder wiki subscription add --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],remove:["Remove a subscription","","USAGE"," coder wiki subscription remove --id <subId>","","FLAGS"," --id <subId> Subscription UUID"]},share:{list:["List shares","","USAGE"," coder wiki share list [--document <doc>]","","FLAGS"," --document <doc> Filter by document"],info:["Get share details","","USAGE"," coder wiki share info --id <shareId>","","FLAGS"," --id <shareId> Share UUID"],create:["Create a share link for a document","","USAGE"," coder wiki share create --id <doc> [flags]","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"," --published Make the share publicly visible"," --include-children Include child documents in the share"],update:["Update a share","","USAGE"," coder wiki share update --id <shareId> [flags]","","FLAGS"," --id <shareId> Share UUID"," --published Set published = true"," --no-published Set published = false"," --include-children Include child documents"],revoke:["Revoke a share","","USAGE"," coder wiki share revoke --id <shareId>","","FLAGS"," --id <shareId> Share UUID"]},view:{list:["List views for a document","","USAGE"," coder wiki view list --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"],record:["Record a document view","","USAGE"," coder wiki view record --id <doc>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL"]},user:{list:["List wiki users","","USAGE"," coder wiki user list [flags]","","FLAGS"," --query <string> Search query"," --filter <string> Filter (all|admins|members|suspended|viewers)"],info:["Get user details","","USAGE"," coder wiki user info --id <userId>","","FLAGS"," --id <userId> User UUID"],invite:["Invite a user","","USAGE"," coder wiki user invite --email <email> [--name <n>] [--role <r>]","","FLAGS"," --email <string> Email address (required)"," --name <string> Display name"," --role <string> admin | member | viewer"],"update-role":["Change a user's role","","USAGE"," coder wiki user update-role --id <userId> --role <role>","","FLAGS"," --id <userId> User UUID"," --role <string> admin | member | viewer (required)"],suspend:["Suspend a user","","USAGE"," coder wiki user suspend --id <userId>","","FLAGS"," --id <userId> User UUID"],activate:["Activate a suspended user","","USAGE"," coder wiki user activate --id <userId>","","FLAGS"," --id <userId> User UUID"]},group:{list:["List groups","","USAGE"," coder wiki group list [--query <string>]","","FLAGS"," --query <string> Search query"],info:["Get group details","","USAGE"," coder wiki group info --id <groupId>","","FLAGS"," --id <groupId> Group UUID"],create:["Create a group","","USAGE"," coder wiki group create --name <name>","","FLAGS"," --name <string> Group name (required)"],update:["Update a group","","USAGE"," coder wiki group update --id <groupId> --name <name>","","FLAGS"," --id <groupId> Group UUID"," --name <string> New name (required)"],delete:["Delete a group","","USAGE"," coder wiki group delete --id <groupId>","","FLAGS"," --id <groupId> Group UUID"],members:["List group members","","USAGE"," coder wiki group members --id <groupId>","","FLAGS"," --id <groupId> Group UUID"],"add-user":["Add a user to a group","","USAGE"," coder wiki group add-user --id <groupId> --user <userId>","","FLAGS"," --id <groupId> Group UUID"," --user <userId> User UUID (required)"],"remove-user":["Remove a user from a group","","USAGE"," coder wiki group remove-user --id <groupId> --user <userId>","","FLAGS"," --id <groupId> Group UUID"," --user <userId> User UUID (required)"]},event:{list:["List audit events","","USAGE"," coder wiki event list [flags]","","FLAGS"," --actor <userId> Filter by actor UUID"," --document <doc> Filter by document"," --collection <col> Filter by collection"," --type <eventName> Filter by event type"]},"file-op":{list:["List file operations","","USAGE"," coder wiki file-op list [--type <type>]","","FLAGS"," --type <string> Filter by type (import|export)"],info:["Get file operation details","","USAGE"," coder wiki file-op info --id <fileOpId>","","FLAGS"," --id <fileOpId> File operation UUID"],delete:["Delete a file operation record","","USAGE"," coder wiki file-op delete --id <fileOpId>","","FLAGS"," --id <fileOpId> File operation UUID"]},attachment:{list:["List attachments","","USAGE"," coder wiki attachment list [--id <doc>]","","FLAGS"," --id <val> Filter by document (UUID, urlId, or URL)"],upload:["Upload a local file as an attachment","","USAGE"," coder wiki attachment upload --id <doc> --file <path>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL (required)"," --file <path> Local file path (required)"],"upload-url":["Upload from a URL as an attachment","","USAGE"," coder wiki attachment upload-url --id <doc> --url <url>","","FLAGS"," --id <val> Document UUID, urlId, or browser URL (required)"," --url <url> Source URL (required)"],delete:["Delete an attachment","","USAGE"," coder wiki attachment delete --id <attId>","","FLAGS"," --id <attId> Attachment UUID"]},icon:{list:["List available icon names","","USAGE"," coder wiki icon list [--query <keyword>]","","FLAGS"," --query <string> Filter icons by name or keyword"]}};function cy(t,e,s){let r=ay[e]||{},i=s&&r[s];i?t.emit(i.join(`
308
+ `)):Hc(t,e)}Yc.exports={showHelp:Jc,showResourceHelp:Hc,showVerbHelp:cy}});var rl=I((Zx,$r)=>{var{WikiHttp:ly,docUrl:dy,colUrl:uy}=pr(),{IdResolver:py}=zc(),{WIKI_METHODS:el}=hr(),{showHelp:my,showResourceHelp:fy,showVerbHelp:hy}=Xc(),Qc=new Set(["--format","--apikey"]);function tl(t){let e=[];for(let s=0;s<t.length;s++){let r=t[s];if(Qc.has(r)){s++;continue}typeof r=="string"&&[...Qc].some(i=>r.startsWith(`${i}=`))||e.push(r)}return e}function sl(t){for(let e=0;e<t.length;e++){if(t[e]!=="--help"&&t[e]!=="-h")continue;let s=t[e-1];if(!(s&&s.startsWith("--")&&!s.includes("=")))return!0}return!1}var gy=new Set(Object.keys(el)),Ur=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({wikiSubcommand:e,wikiRemainingArgs:s,apikey:r}){let i=this.ctx;if(!e||e==="--help"||e==="-h")return my(i),0;let o=r;if(!o)return i.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <apiKey>"),2;let n=e;if(!gy.has(n))return i.fail(`\u672A\u77E5\u547D\u4EE4: coder wiki ${n}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder wiki --help"),3;let a=tl(s||[]);if(a[0]==="--help"||a[0]==="-h")return fy(i,n),0;if(sl(a))return hy(i,n,a[0]),0;let{teamId:c,remaining:l}=this._extractTeamFlag(a),d=await this._resolveTeam(c,o),u=this._resolve(n,l);if(u.error)return i.fail(u.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder wiki --help"),3;let p=new ly(o,d),m=new py(p),{fn:y,args:_}=u,w={ctx:i,http:p,resolver:m,args:_,arg:_[0],teamId:d,docUrl:dy,colUrl:uy};try{return await y(w)||0}catch(b){return b&&b.handled?b.code||1:(i.fail(b.message||String(b),b.hint),1)}}_resolve(e,s){let r=el[e];if(!r)return{error:`\u8D44\u6E90 ${e} \u6682\u672A\u5B9E\u73B0`};let i=s[0];if(!i||i.startsWith("-")){let n=r.list||r.get;return n?{fn:n,args:s}:{error:`${e} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let o=r[i];if(!o){let n=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${i}\uFF08\u53EF\u7528: ${n}\uFF09`}}return{fn:o,args:s.slice(1)}}_extractTeamFlag(e){let s="--team=";for(let r=0;r<e.length;r++){let i=e[r];if(i==="--team"){let o=e[r+1]&&!e[r+1].startsWith("-")?e[r+1]:null,n=o?2:1;return{teamId:o,remaining:[...e.slice(0,r),...e.slice(r+n)]}}if(i.startsWith(s))return{teamId:i.slice(s.length)||null,remaining:[...e.slice(0,r),...e.slice(r+1)]}}return{teamId:null,remaining:e}}async _resolveTeam(e,s){if(e)return e;let r=this.ctx,i=r.getTeam?r.getTeam():null;if(i&&i.id)return i.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),n=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(n.status===200){let c=this.teamService.parseJson(n.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};$r.exports=Ur;$r.exports.WikiService=Ur;$r.exports._internal={stripGlobalFlags:tl,isHelpRequest:sl}});var ol=I((Vx,il)=>{function yy(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(`
309
+ `))}il.exports={showHelp:yy}});var Tr=I((Kx,cl)=>{var{TeamHttp:nl,parseJson:_y}=nr(),al=Si(),{showHelp:wy}=ol(),by=new Set(["--format","--apikey"]);function ky(t){let e=[];for(let s=0;s<t.length;s++){if(by.has(t[s])){s++;continue}e.push(t[s])}return e}var Sy=new Set(["list","current","use","info"]),xy=new Set(["members","groups"]),eo=class{constructor(e){this.ctx=e||null}request(e,s,r,i,o){return new nl(r).request(e,s,i,o)}parseJson(e){return _y(e)}async handle({teamSubcommand:e,teamRemainingArgs:s,apikey:r}){let i=this.ctx;if(!e||e==="--help"||e==="-h")return wy(i),0;let o=r;if(!o)return i.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <apiKey>"),2;let n=ky(s||[]),a=e==="ls"?"list":e,c=this._resolve(a,n);if(!c)return i.fail(`\u672A\u77E5\u547D\u4EE4: coder team ${e}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;if(c.error)return i.fail(c.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder team --help"),3;let{fn:l,args:d}=c,u=new nl(o),p={ctx:i,http:u,args:d,arg:d[0]};try{return await l(p)||0}catch(m){return m&&m.handled?m.code||1:(i.fail(m.message||String(m),m.hint),1)}}_resolve(e,s){if(Sy.has(e))return{fn:al[e],args:s};if(xy.has(e)){let r=al[e],i=s[0];if(!i||i.startsWith("-"))return{fn:r.list,args:s};let o=r[i];if(!o){let n=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${i}\uFF08\u53EF\u7528: ${n}\uFF09`}}return{fn:o,args:s.slice(1)}}return null}};cl.exports=eo});var dl=I((zx,ll)=>{var Iy=rl(),Ey=Tr();function Ay(t,e){let s=new Iy(e);return s.teamService=new Ey(e),t.command("wiki [args...]").description("\u7BA1\u7406 MakeCoder \u77E5\u8BC6\u5E93").allowUnknownOption().helpOption(!1).action(async r=>{let i=r||[],o=await s.handle({wikiSubcommand:i[0],wikiRemainingArgs:i.slice(1),apikey:e.getApiKey()});process.exitCode=o||0}),s}ll.exports={register:Ay}});var so=I((Jx,pl)=>{var Cy=require("https"),Uy=require("http"),{URL:$y}=require("url"),ul="https://flow.makecoder.com",Ty="coder";function vy(t){return t==="darwin"?"macos":t==="win32"?"windows":"linux"}var to=class{constructor(e,s,r){this.token=e,this.baseUrl=(s||ul).replace(/\/+$/,""),this.workspaceId=r||null,this.version=process.env.CODER_VERSION||"dev",this.os=vy(process.platform)}request(e,s,r){return new Promise((i,o)=>{let n=new $y(`${this.baseUrl}${s}`),a=n.protocol==="http:"?Uy:Cy,c={"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,"X-Client-Platform":Ty,"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 d=a.request({hostname:n.hostname,port:n.port||(n.protocol==="http:"?80:443),path:n.pathname+n.search,method:e,headers:c},u=>{let p="";u.on("data",m=>p+=m),u.on("end",()=>i({status:u.statusCode,body:p}))});d.on("error",o),l&&d.write(l),d.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=js(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 i=js(s.value.body),o=Array.isArray(i)?i:i?.data??i?.agents??[];for(let n of o){if(!n.id)continue;let a=e?`${this.baseUrl}/${e}/agents/${n.id}`:null;this._actorLookup.set(n.id,{name:n.name||n.id,type:"agent",url:a})}}if(r.status==="fulfilled"){let i=js(r.value.body),o=Array.isArray(i)?i:i?.data??i?.members??[];for(let n of o){let a=n.user_id||n.id;if(!a)continue;let c=e?`${this.baseUrl}/${e}/members/${a}`:null;this._actorLookup.set(a,{name:n.name||n.username||a,type:"member",url:c})}}return this._actorLookup}};function js(t){try{return JSON.parse(t)}catch{return null}}function Dy(t){return t===401?2:t===403?5:t===404?4:t===409?6:1}function Oy(t){let e=js(t);return e?.message?e.message:e?.error?e.error:(t||"").slice(0,200)||"\u8BF7\u6C42\u5931\u8D25"}pl.exports={MulticaHttp:to,parseJson:js,exitCodeForStatus:Dy,errorMessage:Oy,DEFAULT_BASE_URL:ul}});var yl=I((Hx,gl)=>{var ro=t=>String(t??"").replace(/\|/g,"\\|").replace(/\n/g," ");function ml(t,e){return`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`}function Ly(t,e){return`[${t}](${e})`}function io(t){return!t.isJson}function vr(t,e){return process.stdout.isTTY?ml(t,e):Ly(t,e)}function fl(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 us(t){let e=0;for(let s of String(t))e+=fl(s.codePointAt(0));return e}function Ry(t,e){if(us(t)<=e)return t;let s=0,r="";for(let i of t){let o=fl(i.codePointAt(0));if(s+o>e-1)break;r+=i,s+=o}return r+"\u2026"}function hl(t,e){return t+" ".repeat(Math.max(0,e-us(t)))}function Py(t,e,s={}){let{labels:r={},empty:i="\uFF08\u7A7A\uFF09",values:o={},linkCol:n=null,rowLinks:a=null,colLinks:c=null}=s;if(!e||!e.length){t.emit(i);return}if(t.isJson){t.emit(e);return}let l=Object.keys(e[0]),d=l.map(D=>ro(r[D]||D)),u=(D,L)=>{let B=o[D];return B&&B[L]!==void 0?B[L]:L},p=e.map(D=>l.map(L=>Ry(ro(u(L,D[L])),48))),m=l.map((D,L)=>{let B=us(d[L]);for(let W of p)B=Math.max(B,us(W[L]));return Math.max(3,B)}),y=n?l.indexOf(n):-1,_=y!==-1&&a&&io(t),w=c?l.indexOf(c.col):-1,b=w!==-1&&c?.links&&io(t),v=(D,L)=>`| ${D.map((B,W)=>{let X=hl(B,m[W]);return _&&W===y&&L>=0&&a[L]?vr(B,a[L])+X.slice(B.length):b&&W===w&&L>=0&&c.links[L]?vr(B,c.links[L])+X.slice(B.length):X}).join(" | ")} |`,G=[v(d,-1),`| ${m.map(D=>"-".repeat(D)).join(" | ")} |`,...p.map((D,L)=>v(D,L))];t.emit(G.join(`
310
+ `))}function Ny(t,e,s=null,r={}){if(t.isJson){let m={};for(let[y,_]of e)m[y]=_;s&&typeof s=="object"&&Object.assign(m,s),t.emit(m);return}let{labels:i={},values:o={},link:n=null,fieldLinks:a=null}=r,c=(m,y)=>String(y||i[m]||m),l=e.map(([m,,y])=>c(m,y)),d=Math.max(0,...l.map(m=>us(m))),u=io(t),p=(m,y)=>{let _=o[m],w=_&&_[y]!==void 0?_[y]:y??"";return u&&n&&m===n.key&&n.url?w=vr(String(w),n.url):u&&a&&a[m]&&(w=vr(String(w),a[m])),w};t.emit(e.map(([m,y,_])=>`${hl(c(m,_),d)} ${p(m,y)}`).join(`
311
+ `))}gl.exports={emitTable:Py,emitDetails:Ny,escCell:ro,displayWidth:us,hyperlink:ml}});var bl=I((Yx,wl)=>{var{parseJson:jy,exitCodeForStatus:Gy,errorMessage:qy}=so();function Dr(t,e,s,r=1){t.fail(e,s);let i=new Error("__handled__");throw i.handled=!0,i.code=r,i}function My(t){if(t===401)return"\u786E\u8BA4\u51ED\u8BC1: coder auth login --apikey <apiKey>";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 _l(t,e){Dr(t,qy(e.body),My(e.status),Gy(e.status))}async function Fy(t,e,s,r){try{return await t.http.request(e,s,r)}catch(i){Dr(t.ctx,`\u7F51\u7EDC\u9519\u8BEF ${i.message}`,void 0,1)}}function By(t,e){return(e.status<200||e.status>=300)&&_l(t.ctx,e),jy(e.body)}var Wy=(t,e)=>{let s=t.indexOf(e);return s!==-1?t[s+1]:void 0},Zy=(t,...e)=>t.some(s=>e.includes(s));function Vy(t,{boolFlags:e=[],valueFlags:s=[]}={}){let r=[];for(let i=0;i<t.length;i++){let o=t[i];if(!e.includes(o)){if(s.includes(o)){i++;continue}o&&o.startsWith("--")||r.push(o)}}return r}function Ky(t){let e=t.http&&t.http.workspaceId;return e||Dr(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}wl.exports={abort:Dr,abortOnHttp:_l,send:Fy,ensureOk:By,flag:Wy,hasFlag:Zy,positionals:Vy,requireWorkspaceId:Ky}});var Gs=I((Xx,kl)=>{var no=require("http"),Or=19514,oo=class{constructor(e=Or){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=no.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 zy(t=Or,e=2e3){return new Promise(s=>{let r=no.get(`http://127.0.0.1:${t}/health`,{timeout:e},i=>{let o="";i.on("data",n=>o+=n),i.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 Jy(t=Or){return new Promise((e,s)=>{let r=no.request({host:"127.0.0.1",port:t,path:"/shutdown",method:"POST",timeout:2e3},i=>{i.resume(),i.on("end",e)});r.on("error",s),r.on("timeout",()=>{r.destroy(),s(new Error("timeout"))}),r.end()})}kl.exports={HealthServer:oo,checkHealth:zy,requestShutdown:Jy,DEFAULT_HEALTH_PORT:Or}});var ms=I((Qx,xl)=>{var qt=require("fs"),Lr=require("path"),Hy=require("os"),Yy=require("crypto");function ps(){return Lr.join(Hy.homedir(),".multica")}function Sl(){return Lr.join(ps(),"daemon.id")}function Rr(){return Lr.join(ps(),"daemon.pid")}function Xy(){return Lr.join(ps(),"daemon.log")}function Qy(t){if(t)return t;let e=Sl();try{let r=qt.readFileSync(e,"utf8").trim();if(r)return r}catch{}let s=Yy.randomUUID();try{qt.mkdirSync(ps(),{recursive:!0}),qt.writeFileSync(e,s,"utf8")}catch{}return s}function e_(t){try{qt.mkdirSync(ps(),{recursive:!0}),qt.writeFileSync(Rr(),String(t),"utf8")}catch{}}function t_(){try{let t=qt.readFileSync(Rr(),"utf8").trim();return parseInt(t,10)||null}catch{return null}}function s_(){try{qt.unlinkSync(Rr())}catch{}}xl.exports={daemonDir:ps,daemonIdPath:Sl,daemonPidPath:Rr,daemonLogPath:Xy,loadOrCreateDaemonId:Qy,writePid:e_,readPid:t_,removePid:s_}});var ao=I((eI,El)=>{var Il=require("os"),r_=require("path");function i_(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||Il.hostname(),runtimeName:t.runtimeName||process.env.MULTICA_AGENT_RUNTIME_NAME||"Local Agent",pollInterval:qs(e,3e4),heartbeatInterval:qs(s,15e3),maxConcurrentTasks:t.maxConcurrentTasks||parseInt(process.env.MULTICA_DAEMON_MAX_CONCURRENT_TASKS||"20",10),agentTimeout:t.agentTimeout!==void 0?t.agentTimeout:qs(process.env.MULTICA_AGENT_TIMEOUT||"0",0),workspacesRoot:process.env.MULTICA_WORKSPACES_ROOT||r_.join(Il.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),gcInterval:qs(process.env.MULTICA_GC_INTERVAL||"1h",36e5),gcOrphanTtl:parseInt(process.env.MULTICA_GC_ORPHAN_TTL||String(72*36e5),10),gcArtifactTtl:parseInt(process.env.MULTICA_GC_ARTIFACT_TTL||String(12*36e5),10),gcArtifactPatterns:(process.env.MULTICA_GC_ARTIFACT_PATTERNS||"node_modules,.next,.turbo").split(",").map(r=>r.trim()).filter(Boolean),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 Xt().version}catch{return"0.2.20"}})()}}function qs(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]),i=s[2]||"s";return i==="ms"?Math.round(r):i==="s"?Math.round(r*1e3):i==="m"?Math.round(r*6e4):i==="h"?Math.round(r*36e5):e}El.exports={loadConfig:i_,parseDuration:qs}});var Cl=I((tI,Al)=>{var o_=require("https"),n_=require("http"),{URL:a_}=require("url"),co=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((i,o)=>{let n=new a_(`${this.serverUrl}${s}`),a=n.protocol==="http:"?n_:o_,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 d=a.request({hostname:n.hostname,port:n.port||(n.protocol==="http:"?80:443),path:n.pathname+n.search,method:e,headers:c},u=>{let p="";u.on("data",m=>p+=m),u.on("end",()=>i({status:u.statusCode,body:p}))});d.on("error",o),l&&d.write(l),d.end()})}async _requestWithRetry(e,s,r,i=[1e3,2e3,4e3,8e3,16e3]){let o;for(let n=0;n<=i.length;n++){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}n<i.length&&await c_(i[n])}throw o}_json(e){try{return JSON.parse(e.body)}catch{return null}}async register({workspaceId:e,daemonId:s,deviceName:r,cliVersion:i,runtimes:o}){let n=await this._request("POST","/api/daemon/register",{workspace_id:e,daemon_id:s,device_name:r,cli_version:i||this.cliVersion,runtimes:o});return this._json(n)}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:i,branchName:o}={}){let n={};return s!==void 0&&(n.output=s),r&&(n.session_id=r),i&&(n.work_dir=i),o&&(n.branch_name=o),this._requestWithRetry("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/complete`,n)}async taskFail(e,{error:s,sessionId:r,workDir:i,failureReason:o}={}){let n={};return s!==void 0&&(n.error=s),r&&(n.session_id=r),i&&(n.work_dir=i),o&&(n.failure_reason=o),this._requestWithRetry("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/fail`,n)}async taskMessages(e,s){return this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/messages`,{messages:s})}async taskSession(e,{sessionId:s,workDir:r}={}){let i={};return s&&(i.session_id=s),r&&(i.work_dir=r),this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/session`,i)}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 reportTaskUsage(e,s){if(!s||!s.length)return;let r=await this._request("POST",`/api/daemon/tasks/${encodeURIComponent(e)}/usage`,{usage:s});if(r.status>=400)throw new Error(`reportTaskUsage ${r.status}: ${r.body.slice(0,200)}`);return this._json(r)}async reportLocalSkillListResult(e,s,r){let i=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/local-skills/${encodeURIComponent(s)}/result`,r);if(i.status>=400)throw new Error(`reportLocalSkillListResult ${i.status}: ${i.body.slice(0,200)}`);return this._json(i)}async reportLocalSkillImportResult(e,s,r){let i=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/local-skills/import/${encodeURIComponent(s)}/result`,r);if(i.status>=400)throw new Error(`reportLocalSkillImportResult ${i.status}: ${i.body.slice(0,200)}`);return this._json(i)}async reportModelListResult(e,s,r){let i=await this._request("POST",`/api/daemon/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(s)}/result`,r);if(i.status>=400)throw new Error(`reportModelListResult ${i.status}: ${i.body}`);return this._json(i)}async getIssueGcCheck(e){let s=await this._request("GET",`/api/daemon/issues/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getChatSessionGcCheck(e){let s=await this._request("GET",`/api/daemon/chat-sessions/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getAutopilotRunGcCheck(e){let s=await this._request("GET",`/api/daemon/autopilot-runs/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getTaskGcCheck(e){let s=await this._request("GET",`/api/daemon/tasks/${encodeURIComponent(e)}/gc-check`);if(s.status===404){let r=new Error("not found");throw r.isNotFound=!0,r}if(s.status>=400)throw new Error(`gc-check ${s.status}`);return this._json(s)}async getWorkspaces(){let e=await this._request("GET","/api/workspaces"),s=this._json(e);return s?Array.isArray(s)?s:s.workspaces||[]:[]}};function c_(t){return new Promise(e=>setTimeout(e,t))}Al.exports={DaemonClient:co}});var Dl=I((sI,vl)=>{var Mt=require("fs"),$l=require("path"),l_=require("os"),lo="<!-- BEGIN MULTICA-RUNTIME (auto-managed; do not edit) -->",uo="<!-- END MULTICA-RUNTIME -->",po=`
306
312
 
307
- `;function T_(t,e){let s=Al.join(t,"CLAUDE.md"),r=O_(e),n=`${fi}
313
+ `;function d_(t,e){let s=$l.join(t,"CLAUDE.md"),r=m_(e),i=`${lo}
308
314
  ${r.trimEnd()}
309
- ${mi}
310
- `,i;try{i=Gt.readFileSync(s,"utf8")}catch{i=null}if(i===null){Gt.writeFileSync(s,n,"utf8");return}let{start:o,end:a,found:c}=Tl(i);if(c){let l=i.slice(0,o)+n+i.slice(a);Gt.writeFileSync(s,l,"utf8")}else Gt.writeFileSync(s,i+hi+n,"utf8")}function v_(t){let e=Al.join(t,"CLAUDE.md"),s;try{s=Gt.readFileSync(e,"utf8")}catch{return}let{start:r,end:n,found:i}=Tl(s);if(!i)return;let o=s.slice(0,r),a=s.slice(n),c=o.endsWith(hi),l=(c?o.slice(0,o.length-hi.length):o)+a;if(!c&&l==="")try{Gt.unlinkSync(e)}catch{}else Gt.writeFileSync(e,l,"utf8")}function Tl(t){let e=t.indexOf(fi);if(e<0)return{start:0,end:0,found:!1};let s=e+fi.length,r=t.indexOf(mi,s);if(r<0)return{start:e,end:t.length,found:!0};let n=r+mi.length;return n<t.length&&t[n]===`
311
- `&&n++,{start:e,end:n,found:!0}}function $l(t){if(!t)return"";let e="",s=!1;for(let r of t){let n=r.codePointAt(0);r==="\r"||r===`
312
- `||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 U_(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 O_(t){let e=[];e.push(`# Multica Agent Runtime
313
- `),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
314
- `),s){let w=r?` (ID: \`${r}\`)`:"";e.push(`**You are: ${s}**${w}
315
- `)}n&&e.push(n+`
316
- `)}let i=(t.requesting_user_profile_description||"").trim();if(i){e.push(`## Requesting User
317
- `);let w=$l(t.requesting_user_name||"");w?e.push(`You are working on behalf of **${w}**. They describe themselves as:
315
+ ${uo}
316
+ `,o;try{o=Mt.readFileSync(s,"utf8")}catch{o=null}if(o===null){Mt.writeFileSync(s,i,"utf8");return}let{start:n,end:a,found:c}=Tl(o);if(c){let l=o.slice(0,n)+i+o.slice(a);Mt.writeFileSync(s,l,"utf8")}else Mt.writeFileSync(s,o+po+i,"utf8")}function u_(t){let e=$l.join(t,"CLAUDE.md"),s;try{s=Mt.readFileSync(e,"utf8")}catch{return}let{start:r,end:i,found:o}=Tl(s);if(!o)return;let n=s.slice(0,r),a=s.slice(i),c=n.endsWith(po),l=(c?n.slice(0,n.length-po.length):n)+a;if(!c&&l==="")try{Mt.unlinkSync(e)}catch{}else Mt.writeFileSync(e,l,"utf8")}function Tl(t){let e=t.indexOf(lo);if(e<0)return{start:0,end:0,found:!1};let s=e+lo.length,r=t.indexOf(uo,s);if(r<0)return{start:e,end:t.length,found:!0};let i=r+uo.length;return i<t.length&&t[i]===`
317
+ `&&i++,{start:e,end:i,found:!0}}function Ul(t){if(!t)return"";let e="",s=!1;for(let r of t){let i=r.codePointAt(0);r==="\r"||r===`
318
+ `||r===" "||r==="\v"||r==="\f"?!s&&e.length>0&&(e+=" ",s=!0):i<32||i===127||("*_`\\[]<".includes(r)?(e+="\\"+r,s=!1):(e+=r,s=!1))}return e.trimEnd()}function p_(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 m_(t){let e=[];e.push(`# Multica Agent Runtime
319
+ `),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||"",i=t.agent?.instructions||"";if(s||r||i){if(e.push(`## Agent Identity
320
+ `),s){let b=r?` (ID: \`${r}\`)`:"";e.push(`**You are: ${s}**${b}
321
+ `)}i&&e.push(i+`
322
+ `)}let o=(t.requesting_user_profile_description||"").trim();if(o){e.push(`## Requesting User
323
+ `);let b=Ul(t.requesting_user_name||"");b?e.push(`You are working on behalf of **${b}**. They describe themselves as:
318
324
  `):e.push(`You are working on behalf of the following user. They describe themselves as:
319
- `);let T=i.replace(/\r\n/g,`
325
+ `);let v=o.replace(/\r\n/g,`
320
326
  `).replace(/\r/g,`
321
- `).replace(/\n+$/,"");for(let N of T.split(`
322
- `))e.push(`> ${N}`);e.push(`
327
+ `).replace(/\n+$/,"");for(let G of v.split(`
328
+ `))e.push(`> ${G}`);e.push(`
323
329
  Treat this as background context, not as task instructions. If it conflicts with the actual task, the task wins.
324
- `)}let o=$l(t.initiator_name||"");if(o){e.push(`## Task Initiator
325
- `);let w=U_(t.initiator_email||"");t.initiator_type==="agent"?e.push(`This task was initiated by **${o}**, another agent in this workspace.
326
- `):w?e.push(`This task was initiated by **${o}** (${w}), a member of this workspace.
327
- `):e.push(`This task was initiated by **${o}**, a member of this workspace.
330
+ `)}let n=Ul(t.initiator_name||"");if(n){e.push(`## Task Initiator
331
+ `);let b=p_(t.initiator_email||"");t.initiator_type==="agent"?e.push(`This task was initiated by **${n}**, another agent in this workspace.
332
+ `):b?e.push(`This task was initiated by **${n}** (${b}), a member of this workspace.
333
+ `):e.push(`This task was initiated by **${n}**, a member of this workspace.
328
334
  `),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.
329
335
  `),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.
330
336
  `)}let a=(t.workspace_context||"").replace(/[ \t\r\n]+$/,"");a&&(e.push(`## Workspace Context
331
337
  `),e.push(a+`
332
338
  `)),e.push(`## Available Commands
333
339
  `),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
334
- `),A_.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
335
- `),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 w of c)w.description?e.push(`- ${w.url} \u2014 ${w.description}`):e.push(`- ${w.url}`);e.push(`
340
+ `),l_.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
341
+ `),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 b of c)b.description?e.push(`- ${b.url} \u2014 ${b.description}`):e.push(`- ${b.url}`);e.push(`
336
342
  The checkout command creates a git worktree with a dedicated branch.
337
- `)}let l=t.project_id||"",u=t.project_title||"",d=t.project_resources||[];if(l||d.length>0)if(e.push(`## Project Context
338
- `),u&&e.push(`This issue belongs to **${u}**.
339
- `),d.length>0){e.push("Project resources (also written to `.multica/project/resources.json`):\n");for(let w of d)e.push(`- ${D_(w)}`);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.
343
+ `)}let l=t.project_id||"",d=t.project_title||"",u=t.project_resources||[];if(l||u.length>0)if(e.push(`## Project Context
344
+ `),d&&e.push(`This issue belongs to **${d}**.
345
+ `),u.length>0){e.push("Project resources (also written to `.multica/project/resources.json`):\n");for(let b of u)e.push(`- ${f_(b)}`);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.
340
346
  `);!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&(e.push(`## Issue Metadata
341
347
  `),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
342
348
  `),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.
343
349
  `)),e.push(`### Workflow
344
- `);let g=t.issue_id||"",_=!!t.is_squad_leader;t.chat_session_id?(e.push(`**You are in chat mode.** A user is messaging you directly in a chat window.
350
+ `);let y=t.issue_id||"",_=!!t.is_squad_leader;t.chat_session_id?(e.push(`**You are in chat mode.** A user is messaging you directly in a chat window.
345
351
  `),e.push("- Respond conversationally and helpfully to the user's message"),e.push("- You have full access to the `coder flow` CLI to look up issues, workspace info, members, agents, etc."),e.push("- If asked about issues, use `coder flow issue list` or `coder flow issue get <id>`"),e.push("- If asked about the workspace, use `coder flow workspace get`"),e.push("- If asked to perform actions (create issues, update status, etc.), use the appropriate CLI commands"),e.push("- If the task requires code changes, use `coder flow repo checkout <url>` to get the code first"),e.push(`- Keep responses concise and direct
346
352
  `)):t.quick_create_prompt?(e.push(`**This task was triggered by quick-create.** There is NO existing Multica issue. Follow the field and output rules in the user message you just received; ignore the default assignment-task workflow.
347
353
  `),e.push("Hard guardrails (apply even if the user message is missing):"),e.push("- Run exactly one `coder flow issue create` invocation, then exit."),e.push("- Do NOT call `coder flow issue get`, `coder flow issue status`, or `coder flow issue comment add` for this task \u2014 there is no issue to query, transition, or comment on."),e.push(`- If the CLI returns an error, exit with that error as the only output. Do not retry.
@@ -354,13 +360,13 @@ ${t.autopilot_trigger_payload.trim()}
354
360
  Autopilot instructions:
355
361
  `),e.push(t.autopilot_description.trim()+`
356
362
  `)),t.autopilot_id&&e.push(`- Run \`coder flow autopilot get ${t.autopilot_id}\` if you need the full autopilot configuration`),e.push("- Complete the autopilot instructions directly"),e.push("- Do not run `coder flow issue get`, `coder flow issue comment add`, or `coder flow issue status` for this run unless the autopilot instructions explicitly tell you to create or update an issue\n")):t.trigger_comment_id?(e.push(`**This task was triggered by a NEW comment.** Your primary job is to respond to THIS specific comment, even if you have handled similar requests before in this session.
357
- `),g&&e.push(`1. Run \`coder flow issue get ${g}\` to understand the issue context`),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. Catch up on comments \u2014 read with \`coder flow issue comment list ${g}\`.`),t.trigger_comment_id&&e.push(`4. Find the triggering comment (ID: \`${t.trigger_comment_id}\`) and understand what is being asked \u2014 do NOT confuse it with previous comments`),_?(e.push("5. **Decide whether a reply is warranted.** If you produced actual work this turn, post the result. If the triggering comment was a pure acknowledgment / sign-off from another agent AND you produced no work, do NOT post a reply."),e.push(` - **Squad leader rule:** If your evaluation outcome is \`no_action\`, call \`coder flow squad activity ${g} no_action --reason "..."\` and then EXIT IMMEDIATELY. DO NOT post any comment whose only purpose is to announce that you are taking no action.`)):e.push("5. **Decide whether a reply is warranted.** If you produced actual work this turn, post the result. If the triggering comment was a pure acknowledgment / sign-off from another agent AND you produced no work, do NOT post a reply. Silence is a valid and preferred way to end agent-to-agent conversations."),e.push("6. If a reply IS warranted: do any requested work first, then **decide whether to include any `@mention` link.** The default is NO mention. Only mention when escalating to a human owner or explicitly delegating to another agent."),e.push("7. **If you reply, post it as a comment \u2014 this step is mandatory when you reply.** Text in your terminal or run logs is NOT delivered to the user. Use the platform-correct non-inline mode from ## Comment Formatting."),e.push("8. Before exiting: only if this run produced a fact that clears the high bar (important AND likely to be re-read by future runs), pin or clear it via `coder flow issue metadata set`/`delete`. Most runs write nothing here."),e.push(`9. Do NOT change the issue status unless the comment explicitly asks for it
363
+ `),y&&e.push(`1. Run \`coder flow issue get ${y}\` to understand the issue context`),y&&e.push(`2. Run \`coder flow issue metadata list ${y}\` to see what prior agents pinned \u2014 best-effort, empty and CLI failures are normal.`),y&&e.push(`3. Catch up on comments \u2014 read with \`coder flow issue comment list ${y}\`.`),t.trigger_comment_id&&e.push(`4. Find the triggering comment (ID: \`${t.trigger_comment_id}\`) and understand what is being asked \u2014 do NOT confuse it with previous comments`),_?(e.push("5. **Decide whether a reply is warranted.** If you produced actual work this turn, post the result. If the triggering comment was a pure acknowledgment / sign-off from another agent AND you produced no work, do NOT post a reply."),e.push(` - **Squad leader rule:** If your evaluation outcome is \`no_action\`, call \`coder flow squad activity ${y} no_action --reason "..."\` and then EXIT IMMEDIATELY. DO NOT post any comment whose only purpose is to announce that you are taking no action.`)):e.push("5. **Decide whether a reply is warranted.** If you produced actual work this turn, post the result. If the triggering comment was a pure acknowledgment / sign-off from another agent AND you produced no work, do NOT post a reply. Silence is a valid and preferred way to end agent-to-agent conversations."),e.push("6. If a reply IS warranted: do any requested work first, then **decide whether to include any `@mention` link.** The default is NO mention. Only mention when escalating to a human owner or explicitly delegating to another agent."),e.push("7. **If you reply, post it as a comment \u2014 this step is mandatory when you reply.** Text in your terminal or run logs is NOT delivered to the user. Use the platform-correct non-inline mode from ## Comment Formatting."),e.push("8. Before exiting: only if this run produced a fact that clears the high bar (important AND likely to be re-read by future runs), pin or clear it via `coder flow issue metadata set`/`delete`. Most runs write nothing here."),e.push(`9. Do NOT change the issue status unless the comment explicitly asks for it
358
364
  `)):(e.push(`You are responsible for managing the issue status throughout your work, unless your Agent Identity forbids issue status changes.
359
- `),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.
360
- `)),g&&!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&(e.push(`## Sub-issue Creation
361
- `),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 y=t.agent?.skills||[];if(y.length>0){e.push(`## Skills
365
+ `),y&&e.push(`1. Run \`coder flow issue get ${y}\` to understand your task`),y&&e.push(`2. Run \`coder flow issue metadata list ${y}\` to see what prior agents pinned \u2014 best-effort, empty and CLI failures are normal.`),y&&e.push(`3. Run \`coder flow issue comment list ${y}\` to read the full comment history \u2014 this is mandatory, not optional.`),y&&e.push(`4. Run \`coder flow issue status ${y} --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 ${y} no_action --reason "..."\` alone is sufficient; you MUST exit without posting any comment): post it with \`coder flow issue comment add ${y}\` 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 ${y}\` 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."),y&&e.push(`8. When done, run \`coder flow issue status ${y} --set in_review\` unless your Agent Identity forbids issue status changes.`),y&&e.push(`9. If blocked, run \`coder flow issue status ${y} --set blocked\` unless your Agent Identity forbids it. Post a comment explaining the blocker.
366
+ `)),y&&!t.chat_session_id&&!t.quick_create_prompt&&!t.autopilot_run_id&&(e.push(`## Sub-issue Creation
367
+ `),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
362
368
  `),e.push(`You have the following skills installed (discovered automatically):
363
- `);for(let w of y)w.description&&w.description.trim()?e.push(`- **${w.name}** \u2014 ${w.description.trim()}`):e.push(`- **${w.name}**`);e.push("")}return e.push(`## Mentions
369
+ `);for(let b of w)b.description&&b.description.trim()?e.push(`- **${b.name}** \u2014 ${b.description.trim()}`):e.push(`- **${b.name}**`);e.push("")}return e.push(`## Mentions
364
370
  `),e.push(`Mention links are **side-effecting actions**, not just formatting:
365
371
  `),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
366
372
  `),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.
@@ -370,25 +376,25 @@ Autopilot instructions:
370
376
  `),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
371
377
  `),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(`
372
378
  `)+`
373
- `}function D_(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}vl.exports={injectRuntimeConfig:T_,cleanupRuntimeConfig:v_}});var Nl=x((II,Pl)=>{var R_=require("os");function L_(t){return t.chat_session_id?j_(t):t.trigger_comment_id?N_(t):t.autopilot_run_id?q_(t):t.quick_create_prompt?M_(t):P_(t)}function P_(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
379
+ `}function f_(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}vl.exports={injectRuntimeConfig:d_,cleanupRuntimeConfig:u_}});var jl=I((rI,Nl)=>{var h_=require("os");function g_(t){return t.chat_session_id?w_(t):t.trigger_comment_id?__(t):t.autopilot_run_id?b_(t):t.quick_create_prompt?k_(t):y_(t)}function y_(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
374
380
  `),t.issue_id&&(e.push(`Your assigned issue ID is: ${t.issue_id}
375
381
  `),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.
376
382
  `),e.push(`When you finish, post your result as a comment on the issue using \`coder flow issue comment add ${t.issue_id} --content-stdin\` with a HEREDOC. Do NOT return the result as plain text output \u2014 use the comment tool instead.`)),e.join(`
377
- `)}function N_(t){let e=[];if(e.push(`You are running as a local coding agent for a Multica workspace.
383
+ `)}function __(t){let e=[];if(e.push(`You are running as a local coding agent for a Multica workspace.
378
384
  `),t.issue_id&&e.push(`Your assigned issue ID is: ${t.issue_id}
379
385
  `),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:
380
386
  `),e.push(`> ${t.trigger_comment_content}
381
387
  `),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).
382
388
  `),(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.
383
389
  `)}t.issue_id&&e.push(`Start by running \`coder flow issue get ${t.issue_id}\` to understand your task, then decide how to proceed.
384
- `);let s=Ol(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=Dl(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r&&e.push(r)}else{let r=Rl(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}\`.
385
- `)}return e.push(Ll(t.issue_id,t.trigger_comment_id)),e.join(`
386
- `)}function j_(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.
387
- `);let s=t.agent?.skills||[];if(s.length>0&&t.chat_message){let n=G_(t.chat_message);if(n.length>0){let i=new Map(s.map(c=>[c.id,c.name])),o=[],a=new Set;for(let c of n){let l=i.get(c.id);l&&!a.has(c.id)&&(o.push(l),a.add(c.id))}if(o.length>0){e.push("Explicitly selected skills:");for(let c of o)e.push(`- ${c}`);e.push("")}}}t.chat_message&&e.push(`User message:
390
+ `);let s=Ol(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=Ll(t.issue_id,t.trigger_comment_id,t.trigger_thread_id);r&&e.push(r)}else{let r=Rl(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}\`.
391
+ `)}return e.push(Pl(t.issue_id,t.trigger_comment_id)),e.join(`
392
+ `)}function w_(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.
393
+ `);let s=t.agent?.skills||[];if(s.length>0&&t.chat_message){let i=S_(t.chat_message);if(i.length>0){let o=new Map(s.map(c=>[c.id,c.name])),n=[],a=new Set;for(let c of i){let l=o.get(c.id);l&&!a.has(c.id)&&(n.push(l),a.add(c.id))}if(n.length>0){e.push("Explicitly selected skills:");for(let c of n)e.push(`- ${c}`);e.push("")}}}t.chat_message&&e.push(`User message:
388
394
  ${t.chat_message}`);let r=t.chat_message_attachments||[];if(r.length>0){e.push(`
389
- 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(`
395
+ Attachments on this message:`);for(let i of r)i.content_type?e.push(`- id=${i.id} filename=${JSON.stringify(i.filename)} content_type=${i.content_type}`):e.push(`- id=${i.id} filename=${JSON.stringify(i.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(`
390
396
  `)+`
391
- `}function q_(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
397
+ `}function b_(t){let e=[];return e.push(`You are running as a local coding agent for a Multica workspace.
392
398
  `),e.push(`This task was triggered by an Autopilot in run-only mode. There is no assigned Multica issue for this run.
393
399
  `),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:
394
400
  ${(t.autopilot_trigger_payload||"").trim()}`),e.push(`
@@ -397,7 +403,7 @@ Autopilot instructions:`),(t.autopilot_description||"").trim()?e.push(t.autopilo
397
403
  `):e.push(`No additional autopilot instructions were provided. Inspect the autopilot configuration before proceeding.
398
404
  `),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(`
399
405
  `)+`
400
- `}function M_(t){let e=[];e.push(`You are running as a quick-create assistant for a Multica workspace.
406
+ `}function k_(t){let e=[];e.push(`You are running as a quick-create assistant for a Multica workspace.
401
407
  `),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:
402
408
  > ${t.quick_create_prompt}
403
409
  `),e.push(`Field rules:
@@ -407,23 +413,23 @@ Autopilot instructions:`),(t.autopilot_description||"").trim()?e.push(t.autopilo
407
413
  `),e.push(` 2. **Context** \u2014 include ONLY when the input cited external resources AND you successfully fetched them AND they produced verifiable facts worth recording. If you have nothing factual to add, omit the section entirely.
408
414
  `),e.push(` Hard rules: never invent requirements; never reduce multi-sentence input to a single vague sentence; never echo the title.
409
415
  `),e.push('- **priority**: one of `urgent`, `high`, `medium`, `low`, or omit. Map P0/P1 \u2192 urgent/high; "asap" \u2192 urgent. If unspecified, omit.\n'),e.push("- **assignee**:"),e.push(" - When the user names someone, call `coder flow workspace member list`, `coder flow agent list`, and `coder flow squad list` and find the matching entity by display name. On a clean unambiguous match, pass `--agent <uuid>` (accepts UUID directly). On no match or ambiguous match, do NOT pass either flag \u2014 instead append a final line to the description: `Unrecognized assignee: X`."),e.push(` - Treat bare @-routing as an assignee directive even when the user did not write the English word "assign".
410
- `);let s=t.agent?.id||"",r=t.agent?.name||"",n=t.squad_id||"",i=t.squad_name||"";n?i?e.push(` - When the user did NOT name an assignee, default to the picker SQUAD ${JSON.stringify(i)}: pass \`--agent ${JSON.stringify(n)}\` (the squad's UUID). Never leave the issue unassigned, and do not assign it to your own agent UUID.
411
- `):e.push(` - When the user did NOT name an assignee, default to the picker SQUAD: pass \`--agent ${JSON.stringify(n)}\` (the squad's UUID). Never leave the issue unassigned.
416
+ `);let s=t.agent?.id||"",r=t.agent?.name||"",i=t.squad_id||"",o=t.squad_name||"";i?o?e.push(` - When the user did NOT name an assignee, default to the picker SQUAD ${JSON.stringify(o)}: pass \`--agent ${JSON.stringify(i)}\` (the squad's UUID). Never leave the issue unassigned, and do not assign it to your own agent UUID.
417
+ `):e.push(` - When the user did NOT name an assignee, default to the picker SQUAD: pass \`--agent ${JSON.stringify(i)}\` (the squad's UUID). Never leave the issue unassigned.
412
418
  `):s?e.push(` - When the user did NOT name an assignee, default to YOURSELF: pass \`--agent ${JSON.stringify(s)}\` (your agent UUID). Never leave the issue unassigned.
413
419
  `):r?e.push(` - When the user did NOT name an assignee, default to YOURSELF: pass \`--assignee ${JSON.stringify(r)}\`. Never leave the issue unassigned.
414
420
  `):e.push(` - When the user did NOT name an assignee, default to YOURSELF. Never leave the issue unassigned.
415
- `);let o=t.project_id||"",a=t.project_title||"";o?a?e.push(`- **project**: required for this run. Pass \`--project ${JSON.stringify(o)}\` so the new issue lands in project ${JSON.stringify(a)} (the user picked it in the quick-create modal). Do not infer a different project from the prompt text.
416
- `):e.push(`- **project**: required for this run. Pass \`--project ${JSON.stringify(o)}\`. Do not infer a different project from the prompt text.
421
+ `);let n=t.project_id||"",a=t.project_title||"";n?a?e.push(`- **project**: required for this run. Pass \`--project ${JSON.stringify(n)}\` so the new issue lands in project ${JSON.stringify(a)} (the user picked it in the quick-create modal). Do not infer a different project from the prompt text.
422
+ `):e.push(`- **project**: required for this run. Pass \`--project ${JSON.stringify(n)}\`. Do not infer a different project from the prompt text.
417
423
  `):e.push(`- **project**: omit. The platform will route the issue to the workspace default.
418
424
  `);let c=t.parent_issue_id||"",l=t.parent_issue_identifier||"";return c&&(l?e.push(`- **parent**: required for this run. Pass \`--parent ${JSON.stringify(c)}\` so the new issue is filed as a sub-issue of ${l}. Do not infer a different parent from the prompt text.
419
425
  `):e.push(`- **parent**: required for this run. Pass \`--parent ${JSON.stringify(c)}\`. Do not infer a different parent from the prompt text.
420
426
  `)),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(`
421
427
  `)+`
422
- `}function Ol(t,e,s,r,n){if(!n||n<=0||!r||!t)return"";let i=gi(s,e);return i?`${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 ${i} --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}\`.
423
- `:`${n} new comment(s) on this issue since your last run. Catch up: \`coder flow issue comment list ${t} --since ${r}\`.
424
- `}function Dl(t,e,s){let r=gi(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\`.
425
- `}function Rl(t,e,s){let r=gi(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\`.
426
- `}function gi(t,e){return t||e||""}function Ll(t,e){return e?R_.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.
428
+ `}function Ol(t,e,s,r,i){if(!i||i<=0||!r||!t)return"";let o=mo(s,e);return o?`${i} 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}\`.
429
+ `:`${i} new comment(s) on this issue since your last run. Catch up: \`coder flow issue comment list ${t} --since ${r}\`.
430
+ `}function Ll(t,e,s){let r=mo(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\`.
431
+ `}function Rl(t,e,s){let r=mo(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\`.
432
+ `}function mo(t,e){return t||e||""}function Pl(t,e){return e?h_.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.
427
433
 
428
434
  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.
429
435
 
@@ -447,22 +453,22 @@ Use this form, preserving the same issue ID and --parent value:
447
453
  COMMENT
448
454
 
449
455
  Do NOT write literal \`\\n\` escapes to simulate line breaks; the HEREDOC preserves real newlines.
450
- `:""}function G_(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}Pl.exports={buildPrompt:L_,buildNewCommentsHint:Ol,buildResumedCommentsHint:Dl,buildColdCommentsHint:Rl,buildCommentReplyInstructions:Ll}});var wi=x((CI,Ml)=>{var V=require("fs"),le=require("path");function F_(t,e){let s=(e.id||"unknown").slice(0,12),r=le.join(t.workspacesRoot,e.workspace_id||"default",s),n=le.join(r,"workdir");return{rootDir:r,workDir:n}}function B_(t){V.mkdirSync(le.join(t,".claude","skills"),{recursive:!0}),V.mkdirSync(le.join(t,".agent_context"),{recursive:!0})}function Z_(t,e){let s=e.agent?.skills||[];if(!s.length)return;let r=le.join(t,".claude","skills");V.mkdirSync(r,{recursive:!0});for(let n of s){let i=W_(n.name||"skill"),{slug:o,dir:a}=V_(r,i);V.mkdirSync(a,{recursive:!0});let c=K_(n.content||"",o,n.description||"");V.writeFileSync(le.join(a,"SKILL.md"),c,"utf8");for(let l of n.files||[]){if(X_(l.path))continue;let u=le.join(a,l.path);V.mkdirSync(le.dirname(u),{recursive:!0}),V.writeFileSync(u,l.content||"","utf8")}}}function W_(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"skill"}function V_(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=le.join(t,r);if(!V.existsSync(n))return{slug:r,dir:n};if(V.existsSync(le.join(n,"SKILL.md")))return{slug:r,dir:n}}return{slug:e,dir:le.join(t,e)}}function K_(t,e,s){let r=_i(t);if(r<0)return jl(t,e,s);if(z_(t.slice(r))){if(J_(t))return t;let n=H_(t);return jl(n,e,s)}return t.slice(0,r)+`name: ${e}
451
- `+t.slice(r)}function jl(t,e,s){let r=`---
456
+ `:""}function S_(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}Nl.exports={buildPrompt:g_,buildNewCommentsHint:Ol,buildResumedCommentsHint:Ll,buildColdCommentsHint:Rl,buildCommentReplyInstructions:Pl}});var go=I((iI,Ml)=>{var V=require("fs"),de=require("path");function x_(t,e){let s=(e.id||"unknown").slice(0,12),r=de.join(t.workspacesRoot,e.workspace_id||"default",s),i=de.join(r,"workdir");return{rootDir:r,workDir:i}}function I_(t){V.mkdirSync(de.join(t,".claude","skills"),{recursive:!0}),V.mkdirSync(de.join(t,".agent_context"),{recursive:!0})}function E_(t,e){let s=e.agent?.skills||[];if(!s.length)return;let r=de.join(t,".claude","skills");V.mkdirSync(r,{recursive:!0});for(let i of s){let o=A_(i.name||"skill"),{slug:n,dir:a}=C_(r,o);V.mkdirSync(a,{recursive:!0});let c=U_(i.content||"",n,i.description||"");V.writeFileSync(de.join(a,"SKILL.md"),c,"utf8");for(let l of i.files||[]){if(O_(l.path))continue;let d=de.join(a,l.path);V.mkdirSync(de.dirname(d),{recursive:!0}),V.writeFileSync(d,l.content||"","utf8")}}}function A_(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"skill"}function C_(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 i=de.join(t,r);if(!V.existsSync(i))return{slug:r,dir:i};if(V.existsSync(de.join(i,"SKILL.md")))return{slug:r,dir:i}}return{slug:e,dir:de.join(t,e)}}function U_(t,e,s){let r=ho(t);if(r<0)return Gl(t,e,s);if($_(t.slice(r))){if(T_(t))return t;let i=v_(t);return Gl(i,e,s)}return t.slice(0,r)+`name: ${e}
457
+ `+t.slice(r)}function Gl(t,e,s){let r=`---
452
458
  name: ${e}
453
- `,n=(s||"").trim();return n&&(r+=`description: ${Y_(n)}
459
+ `,i=(s||"").trim();return i&&(r+=`description: ${D_(i)}
454
460
  `),r+=`---
455
461
 
456
- `,r+t}function _i(t){return t.startsWith(`---
462
+ `,r+t}function ho(t){return t.startsWith(`---
457
463
  `)?4:t.startsWith(`---\r
458
- `)?5:-1}function z_(t){let e=t.indexOf(`
464
+ `)?5:-1}function $_(t){let e=t.indexOf(`
459
465
  ---`),s=e>=0?t.slice(0,e):t;for(let r of s.split(`
460
- `)){let n=r.trim();if(!n.startsWith("name:"))continue;if(n.slice(5).trim().replace(/^["']|["']$/g,""))return!0}return!1}function J_(t){let e=_i(t);if(e<0)return!1;let s=t.slice(e),r=s.indexOf(`
461
- ---`);if(r<0)return!1;let n=s.slice(0,r);if(!n.trim())return!1;for(let i of n.split(`
462
- `)){let o=i.trim();if(!(!o||o.startsWith("#"))&&!(o.includes(": ")||o.endsWith(":"))&&!(o.startsWith("- ")||o.startsWith('"')||o.startsWith("'"))&&!/^[a-zA-Z_][a-zA-Z0-9_]*:/.test(o))return!1}return!0}function H_(t){let e=_i(t);if(e<0)return t;let s=t.slice(e),r=s.indexOf(`
463
- ---`);if(r<0)return t;let n=s.slice(r+4);return n.startsWith(`\r
464
- `)?n=n.slice(2):n.startsWith(`
465
- `)&&(n=n.slice(1)),n}function Y_(t){return`"${t.replace(/\r\n/g," ").replace(/\n/g," ").replace(/\r/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function X_(t){return t?t.replace(/\\/g,"/").replace(/^\.\//,"")==="SKILL.md":!1}function Q_(t,e){let s=ew(e);try{let r=le.join(t,".agent_context","issue_context.md");V.existsSync(r)||V.writeFileSync(r,s,"utf8")}catch{}}function ew(t){if(t.autopilot_run_id)return sw(t);if(t.quick_create_prompt)return tw(t);let e=[`# Task Assignment
466
+ `)){let i=r.trim();if(!i.startsWith("name:"))continue;if(i.slice(5).trim().replace(/^["']|["']$/g,""))return!0}return!1}function T_(t){let e=ho(t);if(e<0)return!1;let s=t.slice(e),r=s.indexOf(`
467
+ ---`);if(r<0)return!1;let i=s.slice(0,r);if(!i.trim())return!1;for(let o of i.split(`
468
+ `)){let n=o.trim();if(!(!n||n.startsWith("#"))&&!(n.includes(": ")||n.endsWith(":"))&&!(n.startsWith("- ")||n.startsWith('"')||n.startsWith("'"))&&!/^[a-zA-Z_][a-zA-Z0-9_]*:/.test(n))return!1}return!0}function v_(t){let e=ho(t);if(e<0)return t;let s=t.slice(e),r=s.indexOf(`
469
+ ---`);if(r<0)return t;let i=s.slice(r+4);return i.startsWith(`\r
470
+ `)?i=i.slice(2):i.startsWith(`
471
+ `)&&(i=i.slice(1)),i}function D_(t){return`"${t.replace(/\r\n/g," ").replace(/\n/g," ").replace(/\r/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function O_(t){return t?t.replace(/\\/g,"/").replace(/^\.\//,"")==="SKILL.md":!1}function L_(t,e){let s=R_(e);try{let r=de.join(t,".agent_context","issue_context.md");V.existsSync(r)||V.writeFileSync(r,s,"utf8")}catch{}}function R_(t){if(t.autopilot_run_id)return N_(t);if(t.quick_create_prompt)return P_(t);let e=[`# Task Assignment
466
472
  `];t.issue_id&&e.push(`**Issue ID:** ${t.issue_id}
467
473
  `),t.trigger_comment_id?(e.push("**Trigger:** Comment Reply"),e.push(`**Triggering comment ID:** \`${t.trigger_comment_id}\`
468
474
  `)):e.push(`**Trigger:** New Assignment
@@ -472,14 +478,14 @@ name: ${e}
472
478
  `),e.push(`The following skills are available to you:
473
479
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
474
480
  `)+`
475
- `}function tw(t){let e=[`# Quick Create
481
+ `}function P_(t){let e=[`# Quick Create
476
482
  `,`**Trigger:** Quick-create modal
477
483
  `,`## User input
478
484
  `];e.push(`> ${t.quick_create_prompt}
479
485
  `);let s=t.agent?.skills||[];if(s.length>0){e.push(`## Agent Skills
480
486
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
481
487
  `)+`
482
- `}function sw(t){let e=[`# Autopilot Run
488
+ `}function N_(t){let e=[`# Autopilot Run
483
489
  `];t.autopilot_run_id&&e.push(`**Autopilot run ID:** ${t.autopilot_run_id}
484
490
  `),t.autopilot_id&&e.push(`**Autopilot ID:** ${t.autopilot_id}
485
491
  `),t.autopilot_title&&e.push(`**Title:** ${t.autopilot_title}
@@ -493,50 +499,50 @@ name: ${e}
493
499
  `),e.push(`The following skills are available to you:
494
500
  `);for(let r of s)e.push(`- **${r.name}**`);e.push("")}return e.join(`
495
501
  `)+`
496
- `}function rw(t,e){let s=e.project_id||"",r=e.project_resources||[];if(!s&&!r.length)return;let n=le.join(t,".multica","project");V.mkdirSync(n,{recursive:!0});let i={project_id:s,project_title:e.project_title||"",resources:r.length?r:[]},o=le.join(n,"resources.json");V.existsSync(o)||V.writeFileSync(o,JSON.stringify(i,null,2),"utf8")}async function nw(t,e,s){if(!t.gcEnabled)return;let r=t.workspacesRoot;if(!V.existsSync(r))return;let n=Date.now(),i;try{i=V.readdirSync(r)}catch{return}for(let o of i){if(o===".repos")continue;let a=le.join(r,o),c;try{c=V.readdirSync(a)}catch{continue}let l=0;for(let u of c){let d=le.join(a,u);if(!V.statSync(d,{throwIfNoEntry:!1})?.isDirectory()||e&&e.has(d))continue;let p=le.join(d,".gc_meta.json"),f=null;try{f=JSON.parse(V.readFileSync(p,"utf8"))}catch{}if(!f){let w=V.statSync(d,{throwIfNoEntry:!1});if(w&&n-w.mtimeMs>(t.gcOrphanTtl||72*36e5))try{V.rmSync(d,{recursive:!0,force:!0}),l++}catch{}continue}if(f.kind&&s){let w=await iw(t,s,d,f,n);if(w==="clean"){try{V.rmSync(d,{recursive:!0,force:!0}),l++}catch{}continue}if(w==="orphan"){try{V.rmSync(d,{recursive:!0,force:!0}),l++}catch{}continue}if(w==="artifacts"){let T=t.gcArtifactPatterns;T&&T.length>0&&yi(d,T)}continue}let g=f.completed_at||0;if(!g)continue;if(n-g>(t.gcTtl||864e5)){try{V.rmSync(d,{recursive:!0,force:!0}),l++}catch{}continue}let _=t.gcArtifactTtl||12*36e5,y=t.gcArtifactPatterns;_>0&&y&&y.length>0&&n-g>_&&yi(d,y)}if(l>0)try{V.readdirSync(a).length===0&&V.rmdirSync(a)}catch{}}}async function iw(t,e,s,r,n){let i=t.gcTtl||864e5,o=t.gcOrphanTtl||72*36e5,a=t.gcArtifactTtl||12*36e5,c=r.completed_at||0;switch(r.kind){case"issue":return ow(t,e,s,r,n,i,a,c,o);case"chat":return aw(t,e,s,r,n,i,a,c);case"autopilot_run":return lw(t,e,s,r,n,i,c,o);case"quick_create":return dw(e,s,r,o);default:return Ft(s,o,n)}}async function ow(t,e,s,r,n,i,o,a,c){if(!r.issue_id)return Ft(s,c,n);let l;try{l=await e.getIssueGcCheck(r.issue_id)}catch(d){return d.isNotFound?Ft(s,c,n):"skip"}let u=l.updated_at?new Date(l.updated_at).getTime():0;return(l.status==="done"||l.status==="cancelled")&&u&&n-u>i?"clean":o>0&&a&&n-a>o?"artifacts":"skip"}async function aw(t,e,s,r,n,i,o,a){if(!r.chat_session_id)return"skip";let c;try{c=await e.getChatSessionGcCheck(r.chat_session_id)}catch(l){return l.isNotFound?"clean":"skip"}if(c.status==="active")return"skip";if(c.status==="archived"){let l=c.updated_at?new Date(c.updated_at).getTime():0;if(l&&n-l>i)return"clean"}return o>0&&a&&n-a>o?"artifacts":"skip"}function cw(t){return t==="completed"||t==="failed"||t==="skipped"||t==="issue_created"}async function lw(t,e,s,r,n,i,o,a){if(!r.autopilot_run_id)return Ft(s,a,n);let c;try{c=await e.getAutopilotRunGcCheck(r.autopilot_run_id)}catch(l){return l.isNotFound?Ft(s,a,n):"skip"}if(cw(c.status)){let l=c.completed_at?new Date(c.completed_at).getTime():o;if(l&&n-l>i)return"clean"}return"skip"}function uw(t){return t==="completed"||t==="failed"||t==="cancelled"}async function dw(t,e,s,r){let n=s.task_id;if(!n)return Ft(e,r,Date.now());let i;try{i=await t.getTaskGcCheck(n)}catch(o){return o.isNotFound?Ft(e,r,Date.now()):"skip"}return uw(i.status)?"clean":"skip"}function Ft(t,e,s){let r=V.statSync(t,{throwIfNoEntry:!1});return r&&s-r.mtimeMs>e?"orphan":"skip"}function yi(t,e){if(!t||!e||!e.length)return;let s=new Set(e.map(n=>n.trim()).filter(n=>n&&!n.includes("/")&&!n.includes("\\")));if(!s.size)return;let r=le.resolve(t);ql(r,r,s)}function ql(t,e,s){let r;try{r=V.readdirSync(e,{withFileTypes:!0})}catch{return}for(let n of r){if(!n.isDirectory()||n.name===".git")continue;let i=le.join(e,n.name);try{if(V.lstatSync(i).isSymbolicLink())continue}catch{continue}let o=le.relative(t,i);if(!(!o||o.startsWith("..")))if(s.has(n.name))try{V.rmSync(i,{recursive:!0,force:!0})}catch{}else ql(t,i,s)}}function pw(t,{status:e,taskId:s,kind:r,issueId:n,chatSessionId:i,autopilotRunId:o}){try{let a={task_id:s,status:e,completed_at:Date.now()};r&&(a.kind=r),n&&(a.issue_id=n),i&&(a.chat_session_id=i),o&&(a.autopilot_run_id=o),V.writeFileSync(le.join(t,".gc_meta.json"),JSON.stringify(a),"utf8")}catch{}}function fw(t,e){if(!e.keepEnvAfterTask)try{V.rmSync(t,{recursive:!0,force:!0})}catch{}}Ml.exports={taskPaths:F_,prepareWorkdir:B_,writeSkillFiles:Z_,writeIssueContext:Q_,writeProjectResources:rw,runGc:nw,cleanTaskArtifacts:yi,writeGcMeta:pw,cleanupWorkdir:fw}});var ki=x((EI,Wl)=>{var{spawn:mw,execFileSync:hw}=require("child_process"),{injectRuntimeConfig:gw,cleanupRuntimeConfig:Gl}=Ul(),{buildPrompt:yw}=Nl(),{taskPaths:_w,prepareWorkdir:ww,writeSkillFiles:bw,writeIssueContext:kw,writeProjectResources:xw,writeGcMeta:Fl,cleanupWorkdir:Sw}=wi(),Iw=new Set(["HOME","PATH","USER","SHELL","TERM","CODEX_HOME","CURSOR_DATA_DIR","OPENCLAW_CONFIG_PATH","OPENCLAW_INCLUDE_ROOTS"]),Fs=new Set;function Cw(){return Fs}async function Ew(t,e,s,r,n=0){let{rootDir:i,workDir:o}=_w(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=${o}`),Fs.add(i);try{await e.taskStart(s.id),r(`[task ${a}] taskStart OK`)}catch(P){r(`[task ${a}] taskStart failed: ${P.message}`)}try{ww(o),bw(o,s),kw(o,s),xw(o,s),gw(o,s),r(`[task ${a}] workdir prepared`)}catch(P){r(`[task ${a}] workdir prep failed: ${P.message}`),Fs.delete(i),await bi(e,s.id,`workdir preparation failed: ${P.message}`);return}let d=yw(s);r(`[task ${a}] prompt length=${d.length} chars`);let p=s.auth_token||t.token||"",f=$w(t,s,p,n),{cmd:g,args:_}=Aw(t,s),y=s.agent?.provider||"claude";r(`[task ${a}] spawn provider=${y} cmd=${g} args=${_.join(" ")}`);let w=new AbortController,T=w.signal;Ow(e,s.id,a,T,r);let N=null,v=null,O=[],G={seq:0,pendingText:"",pendingThinking:"",callIdToTool:{},sessionId:null,finalOutput:"",usage:null};try{N=await Tw({cmd:g,args:_,cwd:o,env:f,prompt:d,taskId:s.id,cancelSignal:T},{onLine:(P,pe)=>{let Ee=vw(P,G,ge=>{if(ge.type==="tool_use"){let Is=JSON.stringify(ge.input||{}).slice(0,200);r(`[task ${a}] tool_use tool=${ge.tool} input=${Is}`)}else if(ge.type==="tool_result"){let Is=(ge.output||"").slice(0,120).replace(/\n/g,"\\n");r(`[task ${a}] tool_result tool=${ge.tool} output=${Is}`)}else if(ge.type==="result"){let Is=(ge.content||"").slice(0,200).replace(/\n/g,"\\n");r(`[task ${a}] result output=${Is}`)}});if(G.sessionId&&!v&&(v=G.sessionId,r(`[task ${a}] session pinned sessionId=${v}`),e.taskSession(s.id,{sessionId:v,workDir:o}).catch(()=>{})),!Ee)return;let yt=Array.isArray(Ee)?Ee:[Ee];if(O.push(...yt),O.length>=5){let ge=O.splice(0);e.taskMessages(s.id,ge).catch(()=>{})}},agentTimeout:t.agentTimeout,log:r}),r(`[task ${a}] agent exited exitCode=${N}`)}catch(P){r(`[task ${a}] agent error: ${P.message}`),w.abort(),Gl(o);let pe=Bl(s);Fl(i,{status:"failed",taskId:s.id,...pe}),Fs.delete(i),await bi(e,s.id,P.message,v,o);return}w.abort();let B=Dr(G);B.length&&O.push(...B),O.length>0&&(r(`[task ${a}] flushing ${O.length} remaining message(s)`),await e.taskMessages(s.id,O).catch(()=>{})),Gl(o);let H=Bl(s);if(Fl(i,{status:N===0?"completed":"failed",taskId:s.id,...H}),Fs.delete(i),Sw(i,t),G.usage){let P=s.agent?.provider||"claude",pe=s.agent?.model||"",Ee={provider:P,model:pe,...G.usage};e.reportTaskUsage(s.id,[Ee]).catch(yt=>{r(`[task ${a}] reportTaskUsage failed: ${yt.message}`)})}let K="";try{let P=hw("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:o,timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim();P&&P!=="HEAD"&&(K=P)}catch{}if(N===0){let P=s.issue_id?"":G.finalOutput;r(`[task ${a}] complete output_len=${G.finalOutput.length} send_output=${!!P} branch=${K||"(none)"}`),await e.taskComplete(s.id,{output:P,sessionId:v,workDir:o,branchName:K}).then(pe=>r(`[task ${a}] taskComplete reported status=${pe?.status??"ok"}`)).catch(pe=>r(`[task ${a}] taskComplete report failed: ${pe.message}`))}else{let P=`agent exited with code ${N}`;r(`[task ${a}] failed (exit ${N})`),await bi(e,s.id,P,v,o)}}function $w(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),e.autopilot_id&&(n.MULTICA_AUTOPILOT_ID=e.autopilot_id);let i=require("path").dirname(require("path").resolve(process.argv[1]));i&&!n.PATH.startsWith(i)&&(n.PATH=`${i}:${n.PATH}`);let o=e.agent?.custom_env||{};for(let[a,c]of Object.entries(o))a.startsWith("MULTICA_")||Iw.has(a)||(n[a]=c);if(e.agent?.model&&(n.ANTHROPIC_MODEL=e.agent.model),e.quick_create_prompt){n.MULTICA_QUICK_CREATE_TASK_ID=e.id||"";let a=e.quick_create_attachment_ids;Array.isArray(a)&&a.length>0&&(n.MULTICA_QUICK_CREATE_ATTACHMENT_IDS=JSON.stringify(a))}return n}function Aw(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 Tw({cmd:t,args:e,cwd:s,env:r,prompt:n,taskId:i,agentTimeout:o,cancelSignal:a},{onLine:c,log:l}){return new Promise((u,d)=>{let p=mw(t,e,{cwd:s,env:r,stdio:["pipe","pipe","pipe"]}),f=null;o>0&&(f=setTimeout(()=>{l(`[task ${i}] agent timeout after ${o}ms`),p.kill("SIGTERM"),setTimeout(()=>p.kill("SIGKILL"),5e3)},o));let g=()=>{l(`[task ${i}] 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",w=>{_+=w.toString();let T=_.split(`
497
- `);_=T.pop();for(let N of T)N.trim()&&c(N)}),p.stderr.on("data",w=>{let T=w.toString();if(!T.trim())return;let N=T.trimEnd().split(`
498
- `),v=N.slice(0,3).join(`
499
- `),O=N.length>3?` ... (${N.length-3} more lines)`:"";l(`[task ${i}] stderr: ${v}${O}`)}),p.on("error",w=>{f&&clearTimeout(f),a&&a.removeEventListener("abort",g),d(w)}),p.on("close",w=>{f&&clearTimeout(f),a&&a.removeEventListener("abort",g),_.trim()&&c(_),u(w||0)});let y=JSON.stringify({type:"user",message:{role:"user",content:[{type:"text",text:n}]}})+`
500
- `;p.stdin.write(y),p.stdin.end()})}function vw(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 i=r.message||{},o=Array.isArray(i.content)?i.content:[];for(let a of o)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=Dr(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 i=Dr(e),o=++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 i.push({seq:o,type:"tool_result",tool:l,output:a}),s&&s({type:"tool_result",tool:l,output:a}),i.length?i:null}if(n==="result"){let i=Dr(e),o=++e.seq,a=r.result||r.content||"";a&&(i.push({seq:o,type:"text",content:a}),e.finalOutput=a);let c=r.usage;return c&&typeof c=="object"&&(e.usage={input_tokens:c.input_tokens||0,output_tokens:c.output_tokens||0,cache_read_tokens:c.cache_read_input_tokens||0,cache_write_tokens:c.cache_creation_input_tokens||0}),s&&s({type:"result",content:a}),i.length?i:null}return null}function Dr(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 bi(t,e,s,r,n){try{await t.taskFail(e,{error:s,sessionId:r,workDir:n,failureReason:Zl(s)})}catch(i){}}var Uw=/(^|[^0-9])5[0-9][0-9]([^0-9]|$)/;function Zl(t){if(!t||!t.trim())return"agent_error.unknown";let e=t.toLowerCase(),s=(...r)=>r.some(n=>e.includes(n));return s("context length","context_length_exceeded","maximum context","prompt is too long","context size has been exceeded")||e.includes("token")&&e.includes("limit")?"agent_error.context_overflow":e.includes("missing environment variable")||e.includes("missing")&&e.includes("api_key")||e.includes("api key")&&e.includes("required")||e.includes("no llm provider configured")||e.includes("no provider configured")?"agent_error.missing_config":s("401","403","unauthorized","login required","not logged in","please login again","refresh token","invalid api key","access token","subscription access","does not have access","you may not have access")?"agent_error.provider_auth_or_access":s("402","insufficient_balance","balance is too low","monthly usage limit","usage limit","you've hit your limit","you\u2019ve hit your limit","credits","quota")?"agent_error.provider_quota_limit":s("429","rate limit","overloaded","529","no capacity available")?"agent_error.provider_capacity_or_rate_limit":s("server had an error","provider returned error","internal error","service unavailable","bad gateway")||Uw.test(e)?"agent_error.provider_server_error":s("stream disconnected","error sending request","unable to connect","dial tcp","connection refused","connectionrefused","dns","i/o timeout")?"agent_error.provider_network":e.includes("model")&&e.includes("not found")||s("unknown model","selected model","http 404","404 page not found")?"agent_error.model_not_found_or_unavailable":s("returned empty output","returned no parseable output")?"agent_error.empty_or_unparseable_output":e.includes("timed out after")?"agent_error.agent_timeout":e.includes("executable not found")?"agent_error.runtime_missing_executable":s("below the minimum supported version","requires a newer version")?"agent_error.runtime_version_unsupported":s("exit status","signal","panic","sigsegv","process exited","pipe has been ended","file already closed","initialize failed")?"agent_error.process_failure":"agent_error.unknown"}function Ow(t,e,s,r,n){let i=new Set(["completed","failed","cancelled"]),o=5e3,a=async()=>{if(!r.aborted){try{let l=(await t.taskStatus(e))?.status||"";if(i.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,o)}};setTimeout(a,o)}function Bl(t){return t.chat_session_id?{kind:"chat",chatSessionId:t.chat_session_id}:t.autopilot_run_id?{kind:"autopilot_run",autopilotRunId:t.autopilot_run_id}:t.issue_id?{kind:"issue",issueId:t.issue_id}:t.quick_create_prompt?{kind:"quick_create"}:{}}Wl.exports={runTask:Ew,getActiveWorkdirs:Cw,classifyFailureReason:Zl}});var Si=x(($I,Vl)=>{var{runTask:Dw}=ki(),xi=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):"?",i=s.issue_id||s.issueId||"";this.log(`[poller ${this.runtimeId.slice(0,8)}] claimed task=${n} issue=${i} 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=Rw(this.cfg.pollInterval||3e4),n=setTimeout(()=>{this._wakeupResolve=null,s()},r),i=()=>{clearTimeout(n),this._wakeupResolve=null,s()};e&&e.addEventListener("abort",i,{once:!0})})}async _runTask(e,s){try{await Dw(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 Rw(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}Vl.exports={Poller:xi}});var Ii=x((AI,Kl)=>{var Lw=require("https"),Pw=require("http"),{URL:Nw}=require("url"),jw={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 qw(t,e){let s=(t||"https://api.makecoder.com/v1").replace(/\/+$/,""),r=new Nw(`${s}/claudeproxy/v1/models`),n=r.protocol==="http:"?Pw:Lw;return new Promise(i=>{let o={"Content-Type":"application/json"};e&&(o.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:o,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,f)=>p.id.localeCompare(f.id)).map((p,f)=>({id:p.id,label:p.name??p.id,provider:p.provider||"anthropic",...f===0?{default:!0}:{}}));i(d)}else i(null)}catch{i(null)}})});a.on("error",()=>i(null)),a.on("timeout",()=>{a.destroy(),i(null)}),a.end()})}async function Mw(t,e,s,r,n,i){n(`[model-list] runtime=${e} request=${s} provider=${r}`);let o=null;if(r==="claude"&&(o=await qw(i||t.serverUrl,t.token),n(o?`[model-list] fetched ${o.length} models from API`:"[model-list] API unavailable, using fallback list")),o||(o=jw[r]||null),!o){await t.reportModelListResult(e,s,{status:"failed",error:`no model catalog for provider "${r}"`});return}try{await t.reportModelListResult(e,s,{status:"completed",models:o,supported:!0}),n(`[model-list] reported ${o.length} models for runtime=${e}`)}catch(a){n(`[model-list] report failed: ${a.message}`)}}Kl.exports={handleModelList:Mw}});var Ei=x((TI,iu)=>{var De=require("fs"),oe=require("path"),Hl=require("os"),Ci=1<<20,zl=8<<20,Jl=128,Gw=4;function Yl(t){let e=Hl.homedir();switch(t){case"claude":case"codebuddy":return{root:oe.join(e,".claude","skills"),supported:!0};case"codex":{let s=process.env.CODEX_HOME||oe.join(e,".codex");return{root:oe.join(s,"skills"),supported:!0}}case"copilot":return{root:oe.join(e,".copilot","skills"),supported:!0};case"opencode":return{root:oe.join(e,".config","opencode","skills"),supported:!0};case"openclaw":return{root:oe.join(e,".openclaw","skills"),supported:!0};case"pi":return{root:oe.join(e,".pi","agent","skills"),supported:!0};case"cursor":return{root:oe.join(e,".cursor","skills"),supported:!0};case"kiro":return{root:oe.join(e,".kiro","skills"),supported:!0};case"antigravity":return{root:oe.join(e,".gemini","antigravity-cli","skills"),supported:!0};default:return{root:"",supported:!1}}}function Xl(t){if(!t||t.startsWith("."))return!0;let e=t.toLowerCase();return e==="license"||e==="license.md"||e==="license.txt"}function Ql(t){let e=t.trim();if(!e)return null;let s=oe.normalize(oe.join("/",e)).slice(1);return!s||oe.isAbsolute(s)||s.startsWith("..")?null:s.replace(/\\/g,"/")}function eu(t){let e=Hl.homedir();if(t===e)return"~";let s=e+oe.sep;return t.startsWith(s)?"~/"+t.slice(s.length).replace(/\\/g,"/"):t.replace(/\\/g,"/")}function tu(t){let e=oe.join(t,"SKILL.md"),s=De.statSync(e,{throwIfNoEntry:!1});if(!s)throw new Error("SKILL.md not found");if(s.size>Ci)throw new Error(`SKILL.md exceeds ${Ci} bytes`);return De.readFileSync(e,"utf8")}function su(t){if(!t.startsWith(`---
502
+ `}function j_(t,e){let s=e.project_id||"",r=e.project_resources||[];if(!s&&!r.length)return;let i=de.join(t,".multica","project");V.mkdirSync(i,{recursive:!0});let o={project_id:s,project_title:e.project_title||"",resources:r.length?r:[]},n=de.join(i,"resources.json");V.existsSync(n)||V.writeFileSync(n,JSON.stringify(o,null,2),"utf8")}async function G_(t,e,s){if(!t.gcEnabled)return;let r=t.workspacesRoot;if(!V.existsSync(r))return;let i=Date.now(),o;try{o=V.readdirSync(r)}catch{return}for(let n of o){if(n===".repos")continue;let a=de.join(r,n),c;try{c=V.readdirSync(a)}catch{continue}let l=0;for(let d of c){let u=de.join(a,d);if(!V.statSync(u,{throwIfNoEntry:!1})?.isDirectory()||e&&e.has(u))continue;let p=de.join(u,".gc_meta.json"),m=null;try{m=JSON.parse(V.readFileSync(p,"utf8"))}catch{}if(!m){let b=V.statSync(u,{throwIfNoEntry:!1});if(b&&i-b.mtimeMs>(t.gcOrphanTtl||72*36e5))try{V.rmSync(u,{recursive:!0,force:!0}),l++}catch{}continue}if(m.kind&&s){let b=await q_(t,s,u,m,i);if(b==="clean"){try{V.rmSync(u,{recursive:!0,force:!0}),l++}catch{}continue}if(b==="orphan"){try{V.rmSync(u,{recursive:!0,force:!0}),l++}catch{}continue}if(b==="artifacts"){let v=t.gcArtifactPatterns;v&&v.length>0&&fo(u,v)}continue}let y=m.completed_at||0;if(!y)continue;if(i-y>(t.gcTtl||864e5)){try{V.rmSync(u,{recursive:!0,force:!0}),l++}catch{}continue}let _=t.gcArtifactTtl||12*36e5,w=t.gcArtifactPatterns;_>0&&w&&w.length>0&&i-y>_&&fo(u,w)}if(l>0)try{V.readdirSync(a).length===0&&V.rmdirSync(a)}catch{}}}async function q_(t,e,s,r,i){let o=t.gcTtl||864e5,n=t.gcOrphanTtl||72*36e5,a=t.gcArtifactTtl||12*36e5,c=r.completed_at||0;switch(r.kind){case"issue":return M_(t,e,s,r,i,o,a,c,n);case"chat":return F_(t,e,s,r,i,o,a,c);case"autopilot_run":return W_(t,e,s,r,i,o,c,n);case"quick_create":return V_(e,s,r,n);default:return Ft(s,n,i)}}async function M_(t,e,s,r,i,o,n,a,c){if(!r.issue_id)return Ft(s,c,i);let l;try{l=await e.getIssueGcCheck(r.issue_id)}catch(u){return u.isNotFound?Ft(s,c,i):"skip"}let d=l.updated_at?new Date(l.updated_at).getTime():0;return(l.status==="done"||l.status==="cancelled")&&d&&i-d>o?"clean":n>0&&a&&i-a>n?"artifacts":"skip"}async function F_(t,e,s,r,i,o,n,a){if(!r.chat_session_id)return"skip";let c;try{c=await e.getChatSessionGcCheck(r.chat_session_id)}catch(l){return l.isNotFound?"clean":"skip"}if(c.status==="active")return"skip";if(c.status==="archived"){let l=c.updated_at?new Date(c.updated_at).getTime():0;if(l&&i-l>o)return"clean"}return n>0&&a&&i-a>n?"artifacts":"skip"}function B_(t){return t==="completed"||t==="failed"||t==="skipped"||t==="issue_created"}async function W_(t,e,s,r,i,o,n,a){if(!r.autopilot_run_id)return Ft(s,a,i);let c;try{c=await e.getAutopilotRunGcCheck(r.autopilot_run_id)}catch(l){return l.isNotFound?Ft(s,a,i):"skip"}if(B_(c.status)){let l=c.completed_at?new Date(c.completed_at).getTime():n;if(l&&i-l>o)return"clean"}return"skip"}function Z_(t){return t==="completed"||t==="failed"||t==="cancelled"}async function V_(t,e,s,r){let i=s.task_id;if(!i)return Ft(e,r,Date.now());let o;try{o=await t.getTaskGcCheck(i)}catch(n){return n.isNotFound?Ft(e,r,Date.now()):"skip"}return Z_(o.status)?"clean":"skip"}function Ft(t,e,s){let r=V.statSync(t,{throwIfNoEntry:!1});return r&&s-r.mtimeMs>e?"orphan":"skip"}function fo(t,e){if(!t||!e||!e.length)return;let s=new Set(e.map(i=>i.trim()).filter(i=>i&&!i.includes("/")&&!i.includes("\\")));if(!s.size)return;let r=de.resolve(t);ql(r,r,s)}function ql(t,e,s){let r;try{r=V.readdirSync(e,{withFileTypes:!0})}catch{return}for(let i of r){if(!i.isDirectory()||i.name===".git")continue;let o=de.join(e,i.name);try{if(V.lstatSync(o).isSymbolicLink())continue}catch{continue}let n=de.relative(t,o);if(!(!n||n.startsWith("..")))if(s.has(i.name))try{V.rmSync(o,{recursive:!0,force:!0})}catch{}else ql(t,o,s)}}function K_(t,{status:e,taskId:s,kind:r,issueId:i,chatSessionId:o,autopilotRunId:n}){try{let a={task_id:s,status:e,completed_at:Date.now()};r&&(a.kind=r),i&&(a.issue_id=i),o&&(a.chat_session_id=o),n&&(a.autopilot_run_id=n),V.writeFileSync(de.join(t,".gc_meta.json"),JSON.stringify(a),"utf8")}catch{}}function z_(t,e){if(!e.keepEnvAfterTask)try{V.rmSync(t,{recursive:!0,force:!0})}catch{}}Ml.exports={taskPaths:x_,prepareWorkdir:I_,writeSkillFiles:E_,writeIssueContext:L_,writeProjectResources:j_,runGc:G_,cleanTaskArtifacts:fo,writeGcMeta:K_,cleanupWorkdir:z_}});var _o=I((oI,Vl)=>{var{spawn:J_,execFileSync:H_}=require("child_process"),{injectRuntimeConfig:Y_,cleanupRuntimeConfig:Fl}=Dl(),{buildPrompt:X_}=jl(),{taskPaths:Q_,prepareWorkdir:ew,writeSkillFiles:tw,writeIssueContext:sw,writeProjectResources:rw,writeGcMeta:Bl,cleanupWorkdir:iw}=go(),ow=new Set(["HOME","PATH","USER","SHELL","TERM","CODEX_HOME","CURSOR_DATA_DIR","OPENCLAW_CONFIG_PATH","OPENCLAW_INCLUDE_ROOTS"]),Ms=new Set;function nw(){return Ms}async function aw(t,e,s,r,i=0){let{rootDir:o,workDir:n}=Q_(t,s),a=s.id?s.id.slice(0,8):"?",c=s.issue_id||s.issueId||"",l=s.agent_id||s.agentId||"",d=s.agent?.name||"";r(`[task ${a}] start slot=${i} issue=${c} agent=${l}(${d})`),r(`[task ${a}] workDir=${n}`),Ms.add(o);try{await e.taskStart(s.id),r(`[task ${a}] taskStart OK`)}catch(j){r(`[task ${a}] taskStart failed: ${j.message}`)}try{ew(n),tw(n,s),sw(n,s),rw(n,s),Y_(n,s),r(`[task ${a}] workdir prepared`)}catch(j){r(`[task ${a}] workdir prep failed: ${j.message}`),Ms.delete(o),await yo(e,s.id,`workdir preparation failed: ${j.message}`);return}let u=X_(s);r(`[task ${a}] prompt length=${u.length} chars`);let p=s.auth_token||t.token||"",m=cw(t,s,p,i),{cmd:y,args:_}=lw(t,s),w=s.agent?.provider||"claude";r(`[task ${a}] spawn provider=${w} cmd=${y} args=${_.join(" ")}`);let b=new AbortController,v=b.signal;mw(e,s.id,a,v,r);let G=null,D=null,L=[],B={seq:0,pendingText:"",pendingThinking:"",callIdToTool:{},sessionId:null,finalOutput:"",usage:null};try{G=await dw({cmd:y,args:_,cwd:n,env:m,prompt:u,taskId:s.id,cancelSignal:v},{onLine:(j,me)=>{let Ae=uw(j,B,ye=>{if(ye.type==="tool_use"){let Is=JSON.stringify(ye.input||{}).slice(0,200);r(`[task ${a}] tool_use tool=${ye.tool} input=${Is}`)}else if(ye.type==="tool_result"){let Is=(ye.output||"").slice(0,120).replace(/\n/g,"\\n");r(`[task ${a}] tool_result tool=${ye.tool} output=${Is}`)}else if(ye.type==="result"){let Is=(ye.content||"").slice(0,200).replace(/\n/g,"\\n");r(`[task ${a}] result output=${Is}`)}});if(B.sessionId&&!D&&(D=B.sessionId,r(`[task ${a}] session pinned sessionId=${D}`),e.taskSession(s.id,{sessionId:D,workDir:n}).catch(()=>{})),!Ae)return;let _t=Array.isArray(Ae)?Ae:[Ae];if(L.push(..._t),L.length>=5){let ye=L.splice(0);e.taskMessages(s.id,ye).catch(()=>{})}},agentTimeout:t.agentTimeout,log:r}),r(`[task ${a}] agent exited exitCode=${G}`)}catch(j){r(`[task ${a}] agent error: ${j.message}`),b.abort(),Fl(n);let me=Wl(s);Bl(o,{status:"failed",taskId:s.id,...me}),Ms.delete(o),await yo(e,s.id,j.message,D,n);return}b.abort();let W=Pr(B);W.length&&L.push(...W),L.length>0&&(r(`[task ${a}] flushing ${L.length} remaining message(s)`),await e.taskMessages(s.id,L).catch(()=>{})),Fl(n);let X=Wl(s);if(Bl(o,{status:G===0?"completed":"failed",taskId:s.id,...X}),Ms.delete(o),iw(o,t),B.usage){let j=s.agent?.provider||"claude",me=s.agent?.model||"",Ae={provider:j,model:me,...B.usage};e.reportTaskUsage(s.id,[Ae]).catch(_t=>{r(`[task ${a}] reportTaskUsage failed: ${_t.message}`)})}let K="";try{let j=H_("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:n,timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim();j&&j!=="HEAD"&&(K=j)}catch{}if(G===0){let j=s.issue_id?"":B.finalOutput;r(`[task ${a}] complete output_len=${B.finalOutput.length} send_output=${!!j} branch=${K||"(none)"}`),await e.taskComplete(s.id,{output:j,sessionId:D,workDir:n,branchName:K}).then(me=>r(`[task ${a}] taskComplete reported status=${me?.status??"ok"}`)).catch(me=>r(`[task ${a}] taskComplete report failed: ${me.message}`))}else{let j=`agent exited with code ${G}`;r(`[task ${a}] failed (exit ${G})`),await yo(e,s.id,j,D,n)}}function cw(t,e,s,r){let i=Object.assign({},process.env);i.MULTICA_TOKEN=s,i.MULTICA_SERVER_URL=t.serverUrl,i.MULTICA_DAEMON_PORT=String(t.healthPort||19514),i.MULTICA_WORKSPACE_ID=e.workspace_id||"",i.MULTICA_AGENT_NAME=e.agent?.name||"",i.MULTICA_AGENT_ID=e.agent_id||e.agent?.id||"",i.MULTICA_TASK_ID=e.id,i.MULTICA_TASK_SLOT=String(r),e.autopilot_run_id&&(i.MULTICA_AUTOPILOT_RUN_ID=e.autopilot_run_id),e.autopilot_id&&(i.MULTICA_AUTOPILOT_ID=e.autopilot_id);let o=require("path").dirname(require("path").resolve(process.argv[1]));o&&!i.PATH.startsWith(o)&&(i.PATH=`${o}:${i.PATH}`);let n=e.agent?.custom_env||{};for(let[a,c]of Object.entries(n))a.startsWith("MULTICA_")||ow.has(a)||(i[a]=c);if(e.agent?.model&&(i.ANTHROPIC_MODEL=e.agent.model),e.quick_create_prompt){i.MULTICA_QUICK_CREATE_TASK_ID=e.id||"";let a=e.quick_create_attachment_ids;Array.isArray(a)&&a.length>0&&(i.MULTICA_QUICK_CREATE_ATTACHMENT_IDS=JSON.stringify(a))}return i}function lw(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 dw({cmd:t,args:e,cwd:s,env:r,prompt:i,taskId:o,agentTimeout:n,cancelSignal:a},{onLine:c,log:l}){return new Promise((d,u)=>{let p=J_(t,e,{cwd:s,env:r,stdio:["pipe","pipe","pipe"]}),m=null;n>0&&(m=setTimeout(()=>{l(`[task ${o}] agent timeout after ${n}ms`),p.kill("SIGTERM"),setTimeout(()=>p.kill("SIGKILL"),5e3)},n));let y=()=>{l(`[task ${o}] cancelled server-side, interrupting agent`),p.kill("SIGTERM"),setTimeout(()=>{try{p.kill("SIGKILL")}catch{}},5e3)};a&&a.addEventListener("abort",y,{once:!0});let _="";p.stdout.on("data",b=>{_+=b.toString();let v=_.split(`
503
+ `);_=v.pop();for(let G of v)G.trim()&&c(G)}),p.stderr.on("data",b=>{let v=b.toString();if(!v.trim())return;let G=v.trimEnd().split(`
504
+ `),D=G.slice(0,3).join(`
505
+ `),L=G.length>3?` ... (${G.length-3} more lines)`:"";l(`[task ${o}] stderr: ${D}${L}`)}),p.on("error",b=>{m&&clearTimeout(m),a&&a.removeEventListener("abort",y),u(b)}),p.on("close",b=>{m&&clearTimeout(m),a&&a.removeEventListener("abort",y),_.trim()&&c(_),d(b||0)});let w=JSON.stringify({type:"user",message:{role:"user",content:[{type:"text",text:i}]}})+`
506
+ `;p.stdin.write(w),p.stdin.end()})}function uw(t,e,s){let r;try{r=JSON.parse(t)}catch{return null}if(!r||typeof r!="object")return null;let i=r.type;if(i==="system"&&r.session_id&&!e.sessionId&&(e.sessionId=r.session_id),i==="assistant"){let o=r.message||{},n=Array.isArray(o.content)?o.content:[];for(let a of n)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(i==="tool_result"){let o=Pr(e),n=++e.seq,a="",c=r.content;typeof c=="string"?a=c:Array.isArray(c)&&(a=c.map(d=>d.text||d.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:n,type:"tool_result",tool:l,output:a}),s&&s({type:"tool_result",tool:l,output:a}),o.length?o:null}if(i==="result"){let o=Pr(e),n=++e.seq,a=r.result||r.content||"";a&&(o.push({seq:n,type:"text",content:a}),e.finalOutput=a);let c=r.usage;return c&&typeof c=="object"&&(e.usage={input_tokens:c.input_tokens||0,output_tokens:c.output_tokens||0,cache_read_tokens:c.cache_read_input_tokens||0,cache_write_tokens:c.cache_creation_input_tokens||0}),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 yo(t,e,s,r,i){try{await t.taskFail(e,{error:s,sessionId:r,workDir:i,failureReason:Zl(s)})}catch(o){}}var pw=/(^|[^0-9])5[0-9][0-9]([^0-9]|$)/;function Zl(t){if(!t||!t.trim())return"agent_error.unknown";let e=t.toLowerCase(),s=(...r)=>r.some(i=>e.includes(i));return s("context length","context_length_exceeded","maximum context","prompt is too long","context size has been exceeded")||e.includes("token")&&e.includes("limit")?"agent_error.context_overflow":e.includes("missing environment variable")||e.includes("missing")&&e.includes("api_key")||e.includes("api key")&&e.includes("required")||e.includes("no llm provider configured")||e.includes("no provider configured")?"agent_error.missing_config":s("401","403","unauthorized","login required","not logged in","please login again","refresh token","invalid api key","access token","subscription access","does not have access","you may not have access")?"agent_error.provider_auth_or_access":s("402","insufficient_balance","balance is too low","monthly usage limit","usage limit","you've hit your limit","you\u2019ve hit your limit","credits","quota")?"agent_error.provider_quota_limit":s("429","rate limit","overloaded","529","no capacity available")?"agent_error.provider_capacity_or_rate_limit":s("server had an error","provider returned error","internal error","service unavailable","bad gateway")||pw.test(e)?"agent_error.provider_server_error":s("stream disconnected","error sending request","unable to connect","dial tcp","connection refused","connectionrefused","dns","i/o timeout")?"agent_error.provider_network":e.includes("model")&&e.includes("not found")||s("unknown model","selected model","http 404","404 page not found")?"agent_error.model_not_found_or_unavailable":s("returned empty output","returned no parseable output")?"agent_error.empty_or_unparseable_output":e.includes("timed out after")?"agent_error.agent_timeout":e.includes("executable not found")?"agent_error.runtime_missing_executable":s("below the minimum supported version","requires a newer version")?"agent_error.runtime_version_unsupported":s("exit status","signal","panic","sigsegv","process exited","pipe has been ended","file already closed","initialize failed")?"agent_error.process_failure":"agent_error.unknown"}function mw(t,e,s,r,i){let o=new Set(["completed","failed","cancelled"]),n=5e3,a=async()=>{if(!r.aborted){try{let l=(await t.taskStatus(e))?.status||"";if(o.has(l)){i(`[task ${s}] server status=${l}, interrupting agent`),r.dispatchEvent(new Event("abort"));return}}catch(c){if(c.isTaskNotFound){i(`[task ${s}] task gone server-side, interrupting agent`),r.dispatchEvent(new Event("abort"));return}}r.aborted||setTimeout(a,n)}};setTimeout(a,n)}function Wl(t){return t.chat_session_id?{kind:"chat",chatSessionId:t.chat_session_id}:t.autopilot_run_id?{kind:"autopilot_run",autopilotRunId:t.autopilot_run_id}:t.issue_id?{kind:"issue",issueId:t.issue_id}:t.quick_create_prompt?{kind:"quick_create"}:{}}Vl.exports={runTask:aw,getActiveWorkdirs:nw,classifyFailureReason:Zl}});var bo=I((nI,Kl)=>{var{runTask:fw}=_o(),wo=class{constructor(e,s,r,i){this.cfg=e,this.client=s,this.runtimeId=r,this.log=i,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 i=s.id?s.id.slice(0,8):"?",o=s.issue_id||s.issueId||"";this.log(`[poller ${this.runtimeId.slice(0,8)}] claimed task=${i} issue=${o} slot=${r} (active=${this._taskCount})`),this._runTask(s,r).finally(()=>{this._taskCount--,this.log(`[poller ${this.runtimeId.slice(0,8)}] task=${i} 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=hw(this.cfg.pollInterval||3e4),i=setTimeout(()=>{this._wakeupResolve=null,s()},r),o=()=>{clearTimeout(i),this._wakeupResolve=null,s()};e&&e.addEventListener("abort",o,{once:!0})})}async _runTask(e,s){try{await fw(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 hw(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}Kl.exports={Poller:wo}});var ko=I((aI,zl)=>{var gw=require("https"),yw=require("http"),{URL:_w}=require("url"),ww={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 bw(t,e){let s=(t||"https://api.makecoder.com/v1").replace(/\/+$/,""),r=new _w(`${s}/claudeproxy/v1/models`),i=r.protocol==="http:"?yw:gw;return new Promise(o=>{let n={"Content-Type":"application/json"};e&&(n.Authorization=`Bearer ${e}`);let a=i.request({hostname:r.hostname,port:r.port||(r.protocol==="http:"?80:443),path:r.pathname+r.search,method:"GET",headers:n,timeout:5e3},c=>{let l="";c.on("data",d=>l+=d),c.on("end",()=>{try{let d=JSON.parse(l);if(d.code===0&&Array.isArray(d.data?.models)){let u=d.data.models.filter(p=>p.id).sort((p,m)=>p.id.localeCompare(m.id)).map((p,m)=>({id:p.id,label:p.name??p.id,provider:p.provider||"anthropic",...m===0?{default:!0}:{}}));o(u)}else o(null)}catch{o(null)}})});a.on("error",()=>o(null)),a.on("timeout",()=>{a.destroy(),o(null)}),a.end()})}async function kw(t,e,s,r,i,o){i(`[model-list] runtime=${e} request=${s} provider=${r}`);let n=null;if(r==="claude"&&(n=await bw(o||t.serverUrl,t.token),i(n?`[model-list] fetched ${n.length} models from API`:"[model-list] API unavailable, using fallback list")),n||(n=ww[r]||null),!n){await t.reportModelListResult(e,s,{status:"failed",error:`no model catalog for provider "${r}"`});return}try{await t.reportModelListResult(e,s,{status:"completed",models:n,supported:!0}),i(`[model-list] reported ${n.length} models for runtime=${e}`)}catch(a){i(`[model-list] report failed: ${a.message}`)}}zl.exports={handleModelList:kw}});var xo=I((cI,nd)=>{var Le=require("fs"),ae=require("path"),Yl=require("os"),So=1<<20,Jl=8<<20,Hl=128,Sw=4;function Xl(t){let e=Yl.homedir();switch(t){case"claude":case"codebuddy":return{root:ae.join(e,".claude","skills"),supported:!0};case"codex":{let s=process.env.CODEX_HOME||ae.join(e,".codex");return{root:ae.join(s,"skills"),supported:!0}}case"copilot":return{root:ae.join(e,".copilot","skills"),supported:!0};case"opencode":return{root:ae.join(e,".config","opencode","skills"),supported:!0};case"openclaw":return{root:ae.join(e,".openclaw","skills"),supported:!0};case"pi":return{root:ae.join(e,".pi","agent","skills"),supported:!0};case"cursor":return{root:ae.join(e,".cursor","skills"),supported:!0};case"kiro":return{root:ae.join(e,".kiro","skills"),supported:!0};case"antigravity":return{root:ae.join(e,".gemini","antigravity-cli","skills"),supported:!0};default:return{root:"",supported:!1}}}function Ql(t){if(!t||t.startsWith("."))return!0;let e=t.toLowerCase();return e==="license"||e==="license.md"||e==="license.txt"}function ed(t){let e=t.trim();if(!e)return null;let s=ae.normalize(ae.join("/",e)).slice(1);return!s||ae.isAbsolute(s)||s.startsWith("..")?null:s.replace(/\\/g,"/")}function td(t){let e=Yl.homedir();if(t===e)return"~";let s=e+ae.sep;return t.startsWith(s)?"~/"+t.slice(s.length).replace(/\\/g,"/"):t.replace(/\\/g,"/")}function sd(t){let e=ae.join(t,"SKILL.md"),s=Le.statSync(e,{throwIfNoEntry:!1});if(!s)throw new Error("SKILL.md not found");if(s.size>So)throw new Error(`SKILL.md exceeds ${So} bytes`);return Le.readFileSync(e,"utf8")}function rd(t){if(!t.startsWith(`---
501
507
  `)&&!t.startsWith(`---\r
502
508
  `))return{name:"",description:""};let e=t.indexOf(`
503
509
  `)+1,s=t.slice(e),r=s.indexOf(`
504
- ---`);if(r<0)return{name:"",description:""};let n=s.slice(0,r),i="",o="";for(let a of n.split(`
505
- `)){let c=a.trim();c.startsWith("name:")&&(i=c.slice(5).trim().replace(/^["']|["']$/g,"")),c.startsWith("description:")&&(o=c.slice(12).trim().replace(/^["']|["']$/g,""))}return{name:i,description:o}}function ru(t,e){let s=[],r=0,n=t;try{n=De.realpathSync(t)}catch{}let i=o=>{let a;try{a=De.readdirSync(o,{withFileTypes:!0})}catch{return}for(let c of a){if(Xl(c.name)){if(c.isDirectory())continue;continue}let l=oe.join(o,c.name),u;try{u=De.lstatSync(l)}catch{continue}if(u.isSymbolicLink())continue;if(c.isDirectory()){i(l);continue}if(c.name.toLowerCase()==="skill.md"||u.size>Ci)continue;if(s.length>=Jl)throw new Error(`local skill exceeds ${Jl} files`);if(r+=u.size,r>zl)throw new Error(`local skill exceeds ${zl} bytes in total`);let p={path:oe.relative(n,l).replace(/\\/g,"/")};if(e)try{p.content=De.readFileSync(l,"utf8")}catch{continue}s.push(p)}};return i(n),s.sort((o,a)=>o.path.localeCompare(a.path)),s}function nu(t,e,s,r,n,i){if(r>Gw)return;let o;try{o=De.realpathSync(s)}catch{return}if(n.has(o))return;n.add(o);let a;try{a=De.readdirSync(s,{withFileTypes:!0})}catch{return}for(let c of a){if(Xl(c.name))continue;let l=oe.join(s,c.name),u;try{u=De.statSync(l)}catch{continue}if(!u.isDirectory())continue;let d=oe.join(l,"SKILL.md");if(De.existsSync(d)){let p=oe.relative(e,l),f=Ql(p);if(!f)continue;let g;try{g=tu(l)}catch{continue}let{name:_,description:y}=su(g),w=1;try{let T=ru(l,!1);w+=T.length}catch{}i.push({key:f,name:_||c.name,description:y,source_path:eu(l),provider:t,file_count:w});continue}nu(t,e,l,r+1,n,i)}}function Fw(t){let{root:e,supported:s}=Yl(t);if(!s)return{skills:[],supported:!1};if(!De.existsSync(e))return{skills:[],supported:!0};let r=[];return nu(t,e,e,0,new Set,r),r.sort((i,o)=>i.key.localeCompare(o.key)),{skills:r,supported:!0}}function Bw(t,e){let{root:s,supported:r}=Yl(t);if(!r)return{bundle:null,supported:!1,error:`provider "${t}" does not expose runtime local skills`};let n=Ql(e);if(!n)return{bundle:null,supported:!0,error:"invalid skill key"};let i=oe.join(s,n.replace(/\//g,oe.sep)),o=De.statSync(i,{throwIfNoEntry:!1});if(!o)return{bundle:null,supported:!0,error:"local skill not found"};if(!o.isDirectory())return{bundle:null,supported:!0,error:"local skill is not a directory"};let a;try{a=tu(i)}catch(d){return{bundle:null,supported:!0,error:d.message}}let{name:c,description:l}=su(a),u;try{u=ru(i,!0)}catch(d){return{bundle:null,supported:!0,error:d.message}}return{bundle:{name:c||oe.basename(i),description:l,content:a,source_path:eu(i),provider:t,files:u},supported:!0,error:null}}async function Zw(t,e,s,r,n){n(`[local-skills] list runtime=${e.slice(0,8)} request=${s} provider=${r}`);let i;try{let{skills:o,supported:a}=Fw(r);i={status:"completed",skills:o,supported:a},n(`[local-skills] list found ${o.length} skills`)}catch(o){i={status:"failed",error:o.message},n(`[local-skills] list error: ${o.message}`)}try{await t.reportLocalSkillListResult(e,s,i)}catch(o){n(`[local-skills] report-list failed: ${o.message}`)}}async function Ww(t,e,s,r,n,i){i(`[local-skills] import runtime=${e.slice(0,8)} request=${s} key=${r} provider=${n}`);let o;try{let{bundle:a,supported:c,error:l}=Bw(n,r);c?l?o={status:"failed",error:l}:(o={status:"completed",skill:a},i(`[local-skills] import OK key=${r} files=${a.files.length+1}`)):o={status:"failed",error:`provider "${n}" does not expose runtime local skills`}}catch(a){o={status:"failed",error:a.message},i(`[local-skills] import error: ${a.message}`)}try{await t.reportLocalSkillImportResult(e,s,o)}catch(a){i(`[local-skills] report-import failed: ${a.message}`)}}iu.exports={handleLocalSkillList:Zw,handleLocalSkillImport:Ww}});var cu=x((vI,au)=>{var{handleModelList:Vw}=Ii(),{handleLocalSkillList:Kw,handleLocalSkillImport:zw}=Ei(),$i=class{constructor(e,s,r,n,i,o,a){this.cfg=e,this.client=s,this.getRuntimeIds=r,this.log=n,this.onRuntimeGone=i,this.getRuntimeProvider=o||(()=>"claude"),this.isWsRecentlyAcked=a||(()=>!1),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 i of n){if(this.isWsRecentlyAcked(i)){this._beatCount%10===0&&this.log(`[heartbeat] skip HTTP tick (WS recently acked) runtime=${i.slice(0,8)}`);continue}try{let o=await this.client.heartbeat(i);o&&o.runtime_gone?(this.log(`[heartbeat] runtime ${i} gone, re-registering`),this.onRuntimeGone&&this.onRuntimeGone(i)):this._beatCount%10===0&&this.log(`[heartbeat] ok runtime=${i.slice(0,8)} count=${this._beatCount}`),o&&this._handleHeartbeatActions(i,o)}catch(o){this.log(`[heartbeat] error for ${i}: ${o.message}`)}}(!e||!e.aborted)&&(this._timer=setTimeout(r,ou(s)))};this._timer=setTimeout(r,ou(s))}stop(){this._timer&&(clearTimeout(this._timer),this._timer=null)}_handleHeartbeatActions(e,s){let r=this.getRuntimeProvider(e);s.pending_model_list&&(this.log(`[heartbeat] pending_model_list runtime=${e.slice(0,8)} requestId=${s.pending_model_list.id}`),Vw(this.client,e,s.pending_model_list.id,r,this.log,this.cfg.coderBaseUrl).catch(i=>this.log(`[heartbeat] model-list error: ${i.message}`))),s.pending_local_skills&&(this.log(`[heartbeat] pending_local_skills runtime=${e.slice(0,8)} requestId=${s.pending_local_skills.id}`),Kw(this.client,e,s.pending_local_skills.id,r,this.log).catch(i=>this.log(`[heartbeat] local-skill-list error: ${i.message}`)));let n=s.pending_local_skill_imports||(s.pending_local_skill_import?[s.pending_local_skill_import]:[]);for(let i of n)this.log(`[heartbeat] pending_local_skill_import runtime=${e.slice(0,8)} requestId=${i.id} key=${i.skill_key}`),zw(this.client,e,i.id,i.skill_key,r,this.log).catch(o=>this.log(`[heartbeat] local-skill-import error: ${o.message}`))}};function ou(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}au.exports={Heartbeat:$i}});var st=x((UI,du)=>{"use strict";var lu=["nodebuffer","arraybuffer","fragments"],uu=typeof Blob<"u";uu&&lu.push("blob");du.exports={BINARY_TYPES:lu,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:uu,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Bs=x((OI,Rr)=>{"use strict";var{EMPTY_BUFFER:Jw}=st(),Ai=Buffer[Symbol.species];function Hw(t,e){if(t.length===0)return Jw;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let n=0;n<t.length;n++){let i=t[n];s.set(i,r),r+=i.length}return r<e?new Ai(s.buffer,s.byteOffset,r):s}function pu(t,e,s,r,n){for(let i=0;i<n;i++)s[r+i]=t[i]^e[i&3]}function fu(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function Yw(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Ti(t){if(Ti.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Ai(t):ArrayBuffer.isView(t)?e=new Ai(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Ti.readOnly=!1),e}Rr.exports={concat:Hw,mask:pu,toArrayBuffer:Yw,toBuffer:Ti,unmask:fu};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Rr.exports.mask=function(e,s,r,n,i){i<48?pu(e,s,r,n,i):t.mask(e,s,r,n,i)},Rr.exports.unmask=function(e,s){e.length<32?fu(e,s):t.unmask(e,s)}}catch{}});var gu=x((DI,hu)=>{"use strict";var mu=Symbol("kDone"),vi=Symbol("kRun"),Ui=class{constructor(e){this[mu]=()=>{this.pending--,this[vi]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[vi]()}[vi](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[mu])}}};hu.exports=Ui});var gs=x((RI,bu)=>{"use strict";var Zs=require("zlib"),yu=Bs(),Xw=gu(),{kStatusCode:_u}=st(),Qw=Buffer[Symbol.species],eb=Buffer.from([0,0,255,255]),Pr=Symbol("permessage-deflate"),rt=Symbol("total-length"),ms=Symbol("callback"),mt=Symbol("buffers"),hs=Symbol("error"),Lr,Oi=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 Xw(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[ms];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 i=+n;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else if(r==="server_max_window_bits"){let i=+n;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=i}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,(i,o)=>{n(),r(i,o)})})}compress(e,s,r){Lr.add(n=>{this._compress(e,s,(i,o)=>{n(),r(i,o)})})}_decompress(e,s,r){let n=this._isServer?"client":"server";if(!this._inflate){let i=`${n}_max_window_bits`,o=typeof this.params[i]!="number"?Zs.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Zs.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Pr]=this,this._inflate[rt]=0,this._inflate[mt]=[],this._inflate.on("error",sb),this._inflate.on("data",wu)}this._inflate[ms]=r,this._inflate.write(e),s&&this._inflate.write(eb),this._inflate.flush(()=>{let i=this._inflate[hs];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=yu.concat(this._inflate[mt],this._inflate[rt]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[rt]=0,this._inflate[mt]=[],s&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,o)})}_compress(e,s,r){let n=this._isServer?"server":"client";if(!this._deflate){let i=`${n}_max_window_bits`,o=typeof this.params[i]!="number"?Zs.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Zs.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[rt]=0,this._deflate[mt]=[],this._deflate.on("data",tb)}this._deflate[ms]=r,this._deflate.write(e),this._deflate.flush(Zs.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=yu.concat(this._deflate[mt],this._deflate[rt]);s&&(i=new Qw(i.buffer,i.byteOffset,i.length-4)),this._deflate[ms]=null,this._deflate[rt]=0,this._deflate[mt]=[],s&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};bu.exports=Oi;function tb(t){this[mt].push(t),this[rt]+=t.length}function wu(t){if(this[rt]+=t.length,this[Pr]._maxPayload<1||this[rt]<=this[Pr]._maxPayload){this[mt].push(t);return}this[hs]=new RangeError("Max payload size exceeded"),this[hs].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[hs][_u]=1009,this.removeListener("data",wu),this.reset()}function sb(t){if(this[Pr]._inflate=null,this[hs]){this[ms](this[hs]);return}t[_u]=1007,this[ms](t)}});var ys=x((LI,Nr)=>{"use strict";var{isUtf8:ku}=require("buffer"),{hasBlob:rb}=st(),nb=[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 ib(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Di(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 ob(t){return rb&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}Nr.exports={isBlob:ob,isValidStatusCode:ib,isValidUTF8:Di,tokenChars:nb};if(ku)Nr.exports.isValidUTF8=function(t){return t.length<24?Di(t):ku(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Nr.exports.isValidUTF8=function(e){return e.length<32?Di(e):t(e)}}catch{}});var ji=x((PI,Au)=>{"use strict";var{Writable:ab}=require("stream"),xu=gs(),{BINARY_TYPES:cb,EMPTY_BUFFER:Su,kStatusCode:lb,kWebSocket:ub}=st(),{concat:Ri,toArrayBuffer:db,unmask:pb}=Bs(),{isValidStatusCode:fb,isValidUTF8:Iu}=ys(),jr=Buffer[Symbol.species],Re=0,Cu=1,Eu=2,$u=3,Li=4,Pi=5,qr=6,Ni=class extends ab{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||cb[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[ub]=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=Re}_write(e,s,r){if(this._opcode===8&&this._state==Re)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 jr(r.buffer,r.byteOffset+e,r.length-e),new jr(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 jr(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 Re:this.getInfo(e);break;case Cu:this.getPayloadLength16(e);break;case Eu:this.getPayloadLength64(e);break;case $u:this.getMask();break;case Li:this.getData(e);break;case Pi:case qr: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[xu.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=Cu:this._payloadLength===127?this._state=Eu: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=$u:this._state=Li}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Li}getData(e){let s=Su;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&&pb(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=Pi,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[xu.extensionName].decompress(e,this._fin,(n,i)=>{if(n)return s(n);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(o);return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let o=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");s(o);return}this._fragments.push(i)}this.dataMessage(s),this._state===Re&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=Re;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=Ri(r,s):this._binaryType==="arraybuffer"?n=db(Ri(r,s)):this._binaryType==="blob"?n=new Blob(r):n=r,this._allowSynchronousEvents?(this.emit("message",n,!0),this._state=Re):(this._state=qr,setImmediate(()=>{this.emit("message",n,!0),this._state=Re,this.startLoop(e)}))}else{let n=Ri(r,s);if(!this._skipUTF8Validation&&!Iu(n)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Pi||this._allowSynchronousEvents?(this.emit("message",n,!1),this._state=Re):(this._state=qr,setImmediate(()=>{this.emit("message",n,!1),this._state=Re,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Su),this.end();else{let r=e.readUInt16BE(0);if(!fb(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(i);return}let n=new jr(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Iu(n)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");s(i);return}this._loop=!1,this.emit("conclude",r,n),this.end()}this._state=Re;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=Re):(this._state=qr,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=Re,this.startLoop(s)}))}createError(e,s,r,n,i){this._loop=!1,this._errored=!0;let o=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(o,this.createError),o.code=i,o[lb]=n,o}};Au.exports=Ni});var Gi=x((jI,Uu)=>{"use strict";var{Duplex:NI}=require("stream"),{randomFillSync:mb}=require("crypto"),{types:{isUint8Array:hb}}=require("util"),Tu=gs(),{EMPTY_BUFFER:gb,kWebSocket:yb,NOOP:_b}=st(),{isBlob:_s,isValidStatusCode:wb}=ys(),{mask:vu,toBuffer:Bt}=Bs(),Le=Symbol("kByteLength"),bb=Buffer.alloc(4),Mr=8*1024,Zt,ws=Mr,qe=0,kb=1,xb=2,qi=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=qe,this.onerror=_b,this[yb]=void 0}static frame(e,s){let r,n=!1,i=2,o=!1;s.mask&&(r=s.maskBuffer||bb,s.generateMask?s.generateMask(r):(ws===Mr&&(Zt===void 0&&(Zt=Buffer.alloc(Mr)),mb(Zt,0,Mr),ws=0),r[0]=Zt[ws++],r[1]=Zt[ws++],r[2]=Zt[ws++],r[3]=Zt[ws++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!s.mask||o)&&s[Le]!==void 0?a=s[Le]:(e=Buffer.from(e),a=e.length):(a=e.length,n=s.mask&&s.readOnly&&!o);let c=a;a>=65536?(i+=8,c=127):a>125&&(i+=2,c=126);let l=Buffer.allocUnsafe(n?a+i:i);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[i-4]=r[0],l[i-3]=r[1],l[i-2]=r[2],l[i-1]=r[3],o?[l,e]:n?(vu(e,r,l,i,a),[l]):(vu(e,r,e,0,a),[l,e])):[l,e]}close(e,s,r,n){let i;if(e===void 0)i=gb;else{if(typeof e!="number"||!wb(e))throw new TypeError("First argument must be a valid error code number");if(s===void 0||!s.length)i=Buffer.allocUnsafe(2),i.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(i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(e,0),typeof s=="string")i.write(s,2);else if(hb(s))i.set(s,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let o={[Le]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==qe?this.enqueue([this.dispatch,i,!1,o,n]):this.sendFrame(t.frame(i,o),n)}ping(e,s,r){let n,i;if(typeof e=="string"?(n=Buffer.byteLength(e),i=!1):_s(e)?(n=e.size,i=!1):(e=Bt(e),n=e.length,i=Bt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[Le]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};_s(e)?this._state!==qe?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==qe?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}pong(e,s,r){let n,i;if(typeof e=="string"?(n=Buffer.byteLength(e),i=!1):_s(e)?(n=e.size,i=!1):(e=Bt(e),n=e.length,i=Bt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[Le]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};_s(e)?this._state!==qe?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==qe?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,s,r){let n=this._extensions[Tu.extensionName],i=s.binary?2:1,o=s.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):_s(e)?(a=e.size,c=!1):(e=Bt(e),a=e.length,c=Bt.readOnly),this._firstFragment?(this._firstFragment=!1,o&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=a>=n._threshold),this._compress=o):(o=!1,i=0),s.fin&&(this._firstFragment=!0);let l={[Le]:a,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:o};_s(e)?this._state!==qe?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==qe?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,s,r,n){this._bufferedBytes+=r[Le],this._state=xb,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Mi,this,a,n);return}this._bufferedBytes-=r[Le];let o=Bt(i);s?this.dispatch(o,s,r,n):(this._state=qe,this.sendFrame(t.frame(o,r),n),this.dequeue())}).catch(i=>{process.nextTick(Sb,this,i,n)})}dispatch(e,s,r,n){if(!s){this.sendFrame(t.frame(e,r),n);return}let i=this._extensions[Tu.extensionName];this._bufferedBytes+=r[Le],this._state=kb,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Mi(this,c,n);return}this._bufferedBytes-=r[Le],this._state=qe,r.readOnly=!1,this.sendFrame(t.frame(a,r),n),this.dequeue()})}dequeue(){for(;this._state===qe&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][Le],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Le],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)}};Uu.exports=qi;function Mi(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let n=t._queue[r],i=n[n.length-1];typeof i=="function"&&i(e)}}function Sb(t,e,s){Mi(t,e,s),t.onerror(e)}});var Mu=x((qI,qu)=>{"use strict";var{kForOnEventAttribute:Ws,kListener:Fi}=st(),Ou=Symbol("kCode"),Du=Symbol("kData"),Ru=Symbol("kError"),Lu=Symbol("kMessage"),Pu=Symbol("kReason"),bs=Symbol("kTarget"),Nu=Symbol("kType"),ju=Symbol("kWasClean"),nt=class{constructor(e){this[bs]=null,this[Nu]=e}get target(){return this[bs]}get type(){return this[Nu]}};Object.defineProperty(nt.prototype,"target",{enumerable:!0});Object.defineProperty(nt.prototype,"type",{enumerable:!0});var Wt=class extends nt{constructor(e,s={}){super(e),this[Ou]=s.code===void 0?0:s.code,this[Pu]=s.reason===void 0?"":s.reason,this[ju]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[Ou]}get reason(){return this[Pu]}get wasClean(){return this[ju]}};Object.defineProperty(Wt.prototype,"code",{enumerable:!0});Object.defineProperty(Wt.prototype,"reason",{enumerable:!0});Object.defineProperty(Wt.prototype,"wasClean",{enumerable:!0});var ks=class extends nt{constructor(e,s={}){super(e),this[Ru]=s.error===void 0?null:s.error,this[Lu]=s.message===void 0?"":s.message}get error(){return this[Ru]}get message(){return this[Lu]}};Object.defineProperty(ks.prototype,"error",{enumerable:!0});Object.defineProperty(ks.prototype,"message",{enumerable:!0});var Vs=class extends nt{constructor(e,s={}){super(e),this[Du]=s.data===void 0?null:s.data}get data(){return this[Du]}};Object.defineProperty(Vs.prototype,"data",{enumerable:!0});var Ib={addEventListener(t,e,s={}){for(let n of this.listeners(t))if(!s[Ws]&&n[Fi]===e&&!n[Ws])return;let r;if(t==="message")r=function(i,o){let a=new Vs("message",{data:o?i:i.toString()});a[bs]=this,Gr(e,this,a)};else if(t==="close")r=function(i,o){let a=new Wt("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[bs]=this,Gr(e,this,a)};else if(t==="error")r=function(i){let o=new ks("error",{error:i,message:i.message});o[bs]=this,Gr(e,this,o)};else if(t==="open")r=function(){let i=new nt("open");i[bs]=this,Gr(e,this,i)};else return;r[Ws]=!!s[Ws],r[Fi]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[Fi]===e&&!s[Ws]){this.removeListener(t,s);break}}};qu.exports={CloseEvent:Wt,ErrorEvent:ks,Event:nt,EventTarget:Ib,MessageEvent:Vs};function Gr(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var Fr=x((MI,Gu)=>{"use strict";var{tokenChars:Ks}=ys();function ze(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function Cb(t){let e=Object.create(null),s=Object.create(null),r=!1,n=!1,i=!1,o,a,c=-1,l=-1,u=-1,d=0;for(;d<t.length;d++)if(l=t.charCodeAt(d),o===void 0)if(u===-1&&Ks[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 f=t.slice(c,u);l===44?(ze(e,f,s),s=Object.create(null)):o=f,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&Ks[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),ze(s,t.slice(c,u),!0),l===44&&(ze(e,o,s),s=Object.create(null),o=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(Ks[l]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:r||(r=!0),n=!1}else if(i)if(Ks[l]===1)c===-1&&(c=d);else if(l===34&&c!==-1)i=!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)i=!0;else if(u===-1&&Ks[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 f=t.slice(c,u);r&&(f=f.replace(/\\/g,""),r=!1),ze(s,a,f),l===44&&(ze(e,o,s),s=Object.create(null),o=void 0),a=void 0,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||i||l===32||l===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let p=t.slice(c,u);return o===void 0?ze(e,p,s):(a===void 0?ze(s,p,!0):r?ze(s,a,p.replace(/\\/g,"")):ze(s,a,p),ze(e,o,s)),e}function Eb(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 i=r[n];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?n:`${n}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Gu.exports={format:Eb,parse:Cb}});var Vr=x((BI,Qu)=>{"use strict";var $b=require("events"),Ab=require("https"),Tb=require("http"),Zu=require("net"),vb=require("tls"),{randomBytes:Ub,createHash:Ob}=require("crypto"),{Duplex:GI,Readable:FI}=require("stream"),{URL:Bi}=require("url"),ht=gs(),Db=ji(),Rb=Gi(),{isBlob:Lb}=ys(),{BINARY_TYPES:Fu,CLOSE_TIMEOUT:Pb,EMPTY_BUFFER:Br,GUID:Nb,kForOnEventAttribute:Zi,kListener:jb,kStatusCode:qb,kWebSocket:fe,NOOP:Wu}=st(),{EventTarget:{addEventListener:Mb,removeEventListener:Gb}}=Mu(),{format:Fb,parse:Bb}=Fr(),{toBuffer:Zb}=Bs(),Vu=Symbol("kAborted"),Wi=[8,13],it=["CONNECTING","OPEN","CLOSING","CLOSED"],Wb=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,re=class t extends $b{constructor(e,s,r){super(),this._binaryType=Fu[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Br,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]),Ku(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Fu.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 Db({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new Rb(e,this._extensions,r.generateMask);this._receiver=n,this._sender=i,this._socket=e,n[fe]=this,i[fe]=this,e[fe]=this,n.on("conclude",zb),n.on("drain",Jb),n.on("error",Hb),n.on("message",Yb),n.on("ping",Xb),n.on("pong",Qb),i.onerror=e0,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",Hu),e.on("data",Wr),e.on("end",Yu),e.on("error",Xu),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[ht.extensionName]&&this._extensions[ht.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){Ae(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())}),Ju(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){Vi(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||Br,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){Vi(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||Br,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){Vi(this,e,r);return}let n={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[ht.extensionName]||(n.compress=!1),this._sender.send(e||Br,n,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){Ae(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(re,"CONNECTING",{enumerable:!0,value:it.indexOf("CONNECTING")});Object.defineProperty(re.prototype,"CONNECTING",{enumerable:!0,value:it.indexOf("CONNECTING")});Object.defineProperty(re,"OPEN",{enumerable:!0,value:it.indexOf("OPEN")});Object.defineProperty(re.prototype,"OPEN",{enumerable:!0,value:it.indexOf("OPEN")});Object.defineProperty(re,"CLOSING",{enumerable:!0,value:it.indexOf("CLOSING")});Object.defineProperty(re.prototype,"CLOSING",{enumerable:!0,value:it.indexOf("CLOSING")});Object.defineProperty(re,"CLOSED",{enumerable:!0,value:it.indexOf("CLOSED")});Object.defineProperty(re.prototype,"CLOSED",{enumerable:!0,value:it.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(re.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(re.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Zi])return e[jb];return null},set(e){for(let s of this.listeners(t))if(s[Zi]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[Zi]:!0})}})});re.prototype.addEventListener=Mb;re.prototype.removeEventListener=Gb;Qu.exports=re;function Ku(t,e,s,r){let n={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Pb,protocolVersion:Wi[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,!Wi.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${Wi.join(", ")})`);let i;if(e instanceof Bi)i=e;else try{i=new Bi(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),t._url=i.href;let o=i.protocol==="wss:",a=i.protocol==="ws+unix:",c;if(i.protocol!=="ws:"&&!o&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?c="The URL's pathname is empty":i.hash&&(c="The URL contains a fragment identifier"),c){let _=new SyntaxError(c);if(t._redirects===0)throw _;Zr(t,_);return}let l=o?443:80,u=Ub(16).toString("base64"),d=o?Ab.request:Tb.request,p=new Set,f;if(n.createConnection=n.createConnection||(o?Kb:Vb),n.defaultPort=n.defaultPort||l,n.port=i.port||l,n.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},n.path=i.pathname+i.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(f=new ht({...n.perMessageDeflate,isServer:!1,maxPayload:n.maxPayload}),n.headers["Sec-WebSocket-Extensions"]=Fb({[ht.extensionName]:f.offer()})),s.length){for(let _ of s){if(typeof _!="string"||!Wb.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),(i.username||i.password)&&(n.auth=`${i.username}:${i.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=o,t._originalHostOrSocketPath=a?n.socketPath:i.host;let _=r&&r.headers;if(r={...r,headers:{}},_)for(let[y,w]of Object.entries(_))r.headers[y.toLowerCase()]=w}else if(t.listenerCount("redirect")===0){let _=a?t._originalIpc?n.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!_||t._originalSecure&&!o)&&(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",()=>{Ae(t,g,"Opening handshake has timed out")}),g.on("error",_=>{g===null||g[Vu]||(g=t._req=null,Zr(t,_))}),g.on("response",_=>{let y=_.headers.location,w=_.statusCode;if(y&&n.followRedirects&&w>=300&&w<400){if(++t._redirects>n.maxRedirects){Ae(t,g,"Maximum redirects exceeded");return}g.abort();let T;try{T=new Bi(y,e)}catch{let v=new SyntaxError(`Invalid URL: ${y}`);Zr(t,v);return}Ku(t,T,s,r)}else t.emit("unexpected-response",g,_)||Ae(t,g,`Unexpected server response: ${_.statusCode}`)}),g.on("upgrade",(_,y,w)=>{if(t.emit("upgrade",_),t.readyState!==re.CONNECTING)return;g=t._req=null;let T=_.headers.upgrade;if(T===void 0||T.toLowerCase()!=="websocket"){Ae(t,y,"Invalid Upgrade header");return}let N=Ob("sha1").update(u+Nb).digest("base64");if(_.headers["sec-websocket-accept"]!==N){Ae(t,y,"Invalid Sec-WebSocket-Accept header");return}let v=_.headers["sec-websocket-protocol"],O;if(v!==void 0?p.size?p.has(v)||(O="Server sent an invalid subprotocol"):O="Server sent a subprotocol but none was requested":p.size&&(O="Server sent no subprotocol"),O){Ae(t,y,O);return}v&&(t._protocol=v);let G=_.headers["sec-websocket-extensions"];if(G!==void 0){if(!f){Ae(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let B;try{B=Bb(G)}catch{Ae(t,y,"Invalid Sec-WebSocket-Extensions header");return}let H=Object.keys(B);if(H.length!==1||H[0]!==ht.extensionName){Ae(t,y,"Server indicated an extension that was not requested");return}try{f.accept(B[ht.extensionName])}catch{Ae(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[ht.extensionName]=f}t.setSocket(y,w,{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 Zr(t,e){t._readyState=re.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Vb(t){return t.path=t.socketPath,Zu.connect(t)}function Kb(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Zu.isIP(t.host)?"":t.host),vb.connect(t)}function Ae(t,e,s){t._readyState=re.CLOSING;let r=new Error(s);Error.captureStackTrace(r,Ae),e.setHeader?(e[Vu]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Zr,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Vi(t,e,s){if(e){let r=Lb(e)?e.size:Zb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${it[t.readyState]})`);process.nextTick(s,r)}}function zb(t,e){let s=this[fe];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[fe]!==void 0&&(s._socket.removeListener("data",Wr),process.nextTick(zu,s._socket),t===1005?s.close():s.close(t,e))}function Jb(){let t=this[fe];t.isPaused||t._socket.resume()}function Hb(t){let e=this[fe];e._socket[fe]!==void 0&&(e._socket.removeListener("data",Wr),process.nextTick(zu,e._socket),e.close(t[qb])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Bu(){this[fe].emitClose()}function Yb(t,e){this[fe].emit("message",t,e)}function Xb(t){let e=this[fe];e._autoPong&&e.pong(t,!this._isServer,Wu),e.emit("ping",t)}function Qb(t){this[fe].emit("pong",t)}function zu(t){t.resume()}function e0(t){let e=this[fe];e.readyState!==re.CLOSED&&(e.readyState===re.OPEN&&(e._readyState=re.CLOSING,Ju(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Ju(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Hu(){let t=this[fe];if(this.removeListener("close",Hu),this.removeListener("data",Wr),this.removeListener("end",Yu),t._readyState=re.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[fe]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Bu),t._receiver.on("finish",Bu))}function Wr(t){this[fe]._receiver.write(t)||this.pause()}function Yu(){let t=this[fe];t._readyState=re.CLOSING,t._receiver.end(),this.end()}function Xu(){let t=this[fe];this.removeListener("error",Xu),this.on("error",Wu),t&&(t._readyState=re.CLOSING,this.destroy())}});var rd=x((WI,sd)=>{"use strict";var ZI=Vr(),{Duplex:t0}=require("stream");function ed(t){t.emit("close")}function s0(){!this.destroyed&&this._writableState.finished&&this.destroy()}function td(t){this.removeListener("error",td),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function r0(t,e){let s=!0,r=new t0({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(i,o){let a=!o&&r._readableState.objectMode?i.toString():i;r.push(a)||t.pause()}),t.once("error",function(i){r.destroyed||(s=!1,r.destroy(i))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(n,i){if(t.readyState===t.CLOSED){i(n),process.nextTick(ed,r);return}let o=!1;t.once("error",function(c){o=!0,i(c)}),t.once("close",function(){o||i(n),process.nextTick(ed,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,i,o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(n,i,o)});return}t.send(n,o)},r.on("end",s0),r.on("error",td),r}sd.exports=r0});var Ki=x((VI,nd)=>{"use strict";var{tokenChars:n0}=ys();function i0(t){let e=new Set,s=-1,r=-1,n=0;for(n;n<t.length;n++){let o=t.charCodeAt(n);if(r===-1&&n0[o]===1)s===-1&&(s=n);else if(n!==0&&(o===32||o===9))r===-1&&s!==-1&&(r=n);else if(o===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 i=t.slice(s,n);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}nd.exports={parse:i0}});var dd=x((zI,ud)=>{"use strict";var o0=require("events"),Kr=require("http"),{Duplex:KI}=require("stream"),{createHash:a0}=require("crypto"),id=Fr(),Vt=gs(),c0=Ki(),l0=Vr(),{CLOSE_TIMEOUT:u0,GUID:d0,kWebSocket:p0}=st(),f0=/^[+/0-9A-Za-z]{22}==$/,od=0,ad=1,ld=2,zi=class extends o0{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:u0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:l0,...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 i=Kr.STATUS_CODES[426];n.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),n.end(i)}),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=m0(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(n,i,o)=>{this.handleUpgrade(n,i,o,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=od}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===ld){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(zs,this);return}if(e&&this.once("close",e),this._state!==ad)if(this._state=ad,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(zs,this):process.nextTick(zs,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{zs(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",cd);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Kt(this,e,s,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Kt(this,e,s,400,"Invalid Upgrade header");return}if(i===void 0||!f0.test(i)){Kt(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Kt(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Js(s,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=c0.parse(c)}catch{Kt(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 Vt({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let f=id.parse(u);f[Vt.extensionName]&&(p.accept(f[Vt.extensionName]),d[Vt.extensionName]=p)}catch{Kt(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,(f,g,_,y)=>{if(!f)return Js(s,g||401,_,y);this.completeUpgrade(d,i,l,e,s,r,n)});return}if(!this.options.verifyClient(p))return Js(s,401)}this.completeUpgrade(d,i,l,e,s,r,n)}completeUpgrade(e,s,r,n,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[p0])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>od)return Js(i,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${a0("sha1").update(s+d0).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[Vt.extensionName]){let d=e[Vt.extensionName].params,p=id.format({[Vt.extensionName]:[d]});l.push(`Sec-WebSocket-Extensions: ${p}`),u._extensions=e}this.emit("headers",l,n),i.write(l.concat(`\r
510
+ ---`);if(r<0)return{name:"",description:""};let i=s.slice(0,r),o="",n="";for(let a of i.split(`
511
+ `)){let c=a.trim();c.startsWith("name:")&&(o=c.slice(5).trim().replace(/^["']|["']$/g,"")),c.startsWith("description:")&&(n=c.slice(12).trim().replace(/^["']|["']$/g,""))}return{name:o,description:n}}function id(t,e){let s=[],r=0,i=t;try{i=Le.realpathSync(t)}catch{}let o=n=>{let a;try{a=Le.readdirSync(n,{withFileTypes:!0})}catch{return}for(let c of a){if(Ql(c.name)){if(c.isDirectory())continue;continue}let l=ae.join(n,c.name),d;try{d=Le.lstatSync(l)}catch{continue}if(d.isSymbolicLink())continue;if(c.isDirectory()){o(l);continue}if(c.name.toLowerCase()==="skill.md"||d.size>So)continue;if(s.length>=Hl)throw new Error(`local skill exceeds ${Hl} files`);if(r+=d.size,r>Jl)throw new Error(`local skill exceeds ${Jl} bytes in total`);let p={path:ae.relative(i,l).replace(/\\/g,"/")};if(e)try{p.content=Le.readFileSync(l,"utf8")}catch{continue}s.push(p)}};return o(i),s.sort((n,a)=>n.path.localeCompare(a.path)),s}function od(t,e,s,r,i,o){if(r>Sw)return;let n;try{n=Le.realpathSync(s)}catch{return}if(i.has(n))return;i.add(n);let a;try{a=Le.readdirSync(s,{withFileTypes:!0})}catch{return}for(let c of a){if(Ql(c.name))continue;let l=ae.join(s,c.name),d;try{d=Le.statSync(l)}catch{continue}if(!d.isDirectory())continue;let u=ae.join(l,"SKILL.md");if(Le.existsSync(u)){let p=ae.relative(e,l),m=ed(p);if(!m)continue;let y;try{y=sd(l)}catch{continue}let{name:_,description:w}=rd(y),b=1;try{let v=id(l,!1);b+=v.length}catch{}o.push({key:m,name:_||c.name,description:w,source_path:td(l),provider:t,file_count:b});continue}od(t,e,l,r+1,i,o)}}function xw(t){let{root:e,supported:s}=Xl(t);if(!s)return{skills:[],supported:!1};if(!Le.existsSync(e))return{skills:[],supported:!0};let r=[];return od(t,e,e,0,new Set,r),r.sort((o,n)=>o.key.localeCompare(n.key)),{skills:r,supported:!0}}function Iw(t,e){let{root:s,supported:r}=Xl(t);if(!r)return{bundle:null,supported:!1,error:`provider "${t}" does not expose runtime local skills`};let i=ed(e);if(!i)return{bundle:null,supported:!0,error:"invalid skill key"};let o=ae.join(s,i.replace(/\//g,ae.sep)),n=Le.statSync(o,{throwIfNoEntry:!1});if(!n)return{bundle:null,supported:!0,error:"local skill not found"};if(!n.isDirectory())return{bundle:null,supported:!0,error:"local skill is not a directory"};let a;try{a=sd(o)}catch(u){return{bundle:null,supported:!0,error:u.message}}let{name:c,description:l}=rd(a),d;try{d=id(o,!0)}catch(u){return{bundle:null,supported:!0,error:u.message}}return{bundle:{name:c||ae.basename(o),description:l,content:a,source_path:td(o),provider:t,files:d},supported:!0,error:null}}async function Ew(t,e,s,r,i){i(`[local-skills] list runtime=${e.slice(0,8)} request=${s} provider=${r}`);let o;try{let{skills:n,supported:a}=xw(r);o={status:"completed",skills:n,supported:a},i(`[local-skills] list found ${n.length} skills`)}catch(n){o={status:"failed",error:n.message},i(`[local-skills] list error: ${n.message}`)}try{await t.reportLocalSkillListResult(e,s,o)}catch(n){i(`[local-skills] report-list failed: ${n.message}`)}}async function Aw(t,e,s,r,i,o){o(`[local-skills] import runtime=${e.slice(0,8)} request=${s} key=${r} provider=${i}`);let n;try{let{bundle:a,supported:c,error:l}=Iw(i,r);c?l?n={status:"failed",error:l}:(n={status:"completed",skill:a},o(`[local-skills] import OK key=${r} files=${a.files.length+1}`)):n={status:"failed",error:`provider "${i}" does not expose runtime local skills`}}catch(a){n={status:"failed",error:a.message},o(`[local-skills] import error: ${a.message}`)}try{await t.reportLocalSkillImportResult(e,s,n)}catch(a){o(`[local-skills] report-import failed: ${a.message}`)}}nd.exports={handleLocalSkillList:Ew,handleLocalSkillImport:Aw}});var ld=I((lI,cd)=>{var{handleModelList:Cw}=ko(),{handleLocalSkillList:Uw,handleLocalSkillImport:$w}=xo(),Io=class{constructor(e,s,r,i,o,n,a){this.cfg=e,this.client=s,this.getRuntimeIds=r,this.log=i,this.onRuntimeGone=o,this.getRuntimeProvider=n||(()=>"claude"),this.isWsRecentlyAcked=a||(()=>!1),this._timer=null,this._beatCount=0}start(e){let s=this.cfg.heartbeatInterval||15e3,r=async()=>{if(e&&e.aborted)return;let i=this.getRuntimeIds();this._beatCount++;for(let o of i){if(this.isWsRecentlyAcked(o)){this._beatCount%10===0&&this.log(`[heartbeat] skip HTTP tick (WS recently acked) runtime=${o.slice(0,8)}`);continue}try{let n=await this.client.heartbeat(o);n&&n.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}`),n&&this._handleHeartbeatActions(o,n)}catch(n){this.log(`[heartbeat] error for ${o}: ${n.message}`)}}(!e||!e.aborted)&&(this._timer=setTimeout(r,ad(s)))};this._timer=setTimeout(r,ad(s))}stop(){this._timer&&(clearTimeout(this._timer),this._timer=null)}_handleHeartbeatActions(e,s){let r=this.getRuntimeProvider(e);s.pending_model_list&&(this.log(`[heartbeat] pending_model_list runtime=${e.slice(0,8)} requestId=${s.pending_model_list.id}`),Cw(this.client,e,s.pending_model_list.id,r,this.log,this.cfg.coderBaseUrl).catch(o=>this.log(`[heartbeat] model-list error: ${o.message}`))),s.pending_local_skills&&(this.log(`[heartbeat] pending_local_skills runtime=${e.slice(0,8)} requestId=${s.pending_local_skills.id}`),Uw(this.client,e,s.pending_local_skills.id,r,this.log).catch(o=>this.log(`[heartbeat] local-skill-list error: ${o.message}`)));let i=s.pending_local_skill_imports||(s.pending_local_skill_import?[s.pending_local_skill_import]:[]);for(let o of i)this.log(`[heartbeat] pending_local_skill_import runtime=${e.slice(0,8)} requestId=${o.id} key=${o.skill_key}`),$w(this.client,e,o.id,o.skill_key,r,this.log).catch(n=>this.log(`[heartbeat] local-skill-import error: ${n.message}`))}};function ad(t){return Math.max(1e3,t+(Math.random()-.5)*t*.2)}cd.exports={Heartbeat:Io}});var rt=I((dI,pd)=>{"use strict";var dd=["nodebuffer","arraybuffer","fragments"],ud=typeof Blob<"u";ud&&dd.push("blob");pd.exports={BINARY_TYPES:dd,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:ud,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Fs=I((uI,Nr)=>{"use strict";var{EMPTY_BUFFER:Tw}=rt(),Eo=Buffer[Symbol.species];function vw(t,e){if(t.length===0)return Tw;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let i=0;i<t.length;i++){let o=t[i];s.set(o,r),r+=o.length}return r<e?new Eo(s.buffer,s.byteOffset,r):s}function md(t,e,s,r,i){for(let o=0;o<i;o++)s[r+o]=t[o]^e[o&3]}function fd(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function Dw(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Ao(t){if(Ao.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Eo(t):ArrayBuffer.isView(t)?e=new Eo(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Ao.readOnly=!1),e}Nr.exports={concat:vw,mask:md,toArrayBuffer:Dw,toBuffer:Ao,unmask:fd};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Nr.exports.mask=function(e,s,r,i,o){o<48?md(e,s,r,i,o):t.mask(e,s,r,i,o)},Nr.exports.unmask=function(e,s){e.length<32?fd(e,s):t.unmask(e,s)}}catch{}});var yd=I((pI,gd)=>{"use strict";var hd=Symbol("kDone"),Co=Symbol("kRun"),Uo=class{constructor(e){this[hd]=()=>{this.pending--,this[Co]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Co]()}[Co](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[hd])}}};gd.exports=Uo});var gs=I((mI,kd)=>{"use strict";var Bs=require("zlib"),_d=Fs(),Ow=yd(),{kStatusCode:wd}=rt(),Lw=Buffer[Symbol.species],Rw=Buffer.from([0,0,255,255]),Gr=Symbol("permessage-deflate"),it=Symbol("total-length"),fs=Symbol("callback"),ht=Symbol("buffers"),hs=Symbol("error"),jr,$o=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,!jr){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;jr=new Ow(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[fs];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(i=>!(s.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(s.serverMaxWindowBits===!1||typeof s.serverMaxWindowBits=="number"&&s.serverMaxWindowBits>i.server_max_window_bits)||typeof s.clientMaxWindowBits=="number"&&!i.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 i=s[r];if(i.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(i=i[0],r==="client_max_window_bits"){if(i!==!0){let o=+i;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=o}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else if(r==="server_max_window_bits"){let o=+i;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=o}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else throw new Error(`Unknown parameter "${r}"`);s[r]=i})}),e}decompress(e,s,r){jr.add(i=>{this._decompress(e,s,(o,n)=>{i(),r(o,n)})})}compress(e,s,r){jr.add(i=>{this._compress(e,s,(o,n)=>{i(),r(o,n)})})}_decompress(e,s,r){let i=this._isServer?"client":"server";if(!this._inflate){let o=`${i}_max_window_bits`,n=typeof this.params[o]!="number"?Bs.Z_DEFAULT_WINDOWBITS:this.params[o];this._inflate=Bs.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[Gr]=this,this._inflate[it]=0,this._inflate[ht]=[],this._inflate.on("error",Nw),this._inflate.on("data",bd)}this._inflate[fs]=r,this._inflate.write(e),s&&this._inflate.write(Rw),this._inflate.flush(()=>{let o=this._inflate[hs];if(o){this._inflate.close(),this._inflate=null,r(o);return}let n=_d.concat(this._inflate[ht],this._inflate[it]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[it]=0,this._inflate[ht]=[],s&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),r(null,n)})}_compress(e,s,r){let i=this._isServer?"server":"client";if(!this._deflate){let o=`${i}_max_window_bits`,n=typeof this.params[o]!="number"?Bs.Z_DEFAULT_WINDOWBITS:this.params[o];this._deflate=Bs.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[it]=0,this._deflate[ht]=[],this._deflate.on("data",Pw)}this._deflate[fs]=r,this._deflate.write(e),this._deflate.flush(Bs.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let o=_d.concat(this._deflate[ht],this._deflate[it]);s&&(o=new Lw(o.buffer,o.byteOffset,o.length-4)),this._deflate[fs]=null,this._deflate[it]=0,this._deflate[ht]=[],s&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),r(null,o)})}};kd.exports=$o;function Pw(t){this[ht].push(t),this[it]+=t.length}function bd(t){if(this[it]+=t.length,this[Gr]._maxPayload<1||this[it]<=this[Gr]._maxPayload){this[ht].push(t);return}this[hs]=new RangeError("Max payload size exceeded"),this[hs].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[hs][wd]=1009,this.removeListener("data",bd),this.reset()}function Nw(t){if(this[Gr]._inflate=null,this[hs]){this[fs](this[hs]);return}t[wd]=1007,this[fs](t)}});var ys=I((fI,qr)=>{"use strict";var{isUtf8:Sd}=require("buffer"),{hasBlob:jw}=rt(),Gw=[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 qw(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 Mw(t){return jw&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}qr.exports={isBlob:Mw,isValidStatusCode:qw,isValidUTF8:To,tokenChars:Gw};if(Sd)qr.exports.isValidUTF8=function(t){return t.length<24?To(t):Sd(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");qr.exports.isValidUTF8=function(e){return e.length<32?To(e):t(e)}}catch{}});var Ro=I((hI,$d)=>{"use strict";var{Writable:Fw}=require("stream"),xd=gs(),{BINARY_TYPES:Bw,EMPTY_BUFFER:Id,kStatusCode:Ww,kWebSocket:Zw}=rt(),{concat:vo,toArrayBuffer:Vw,unmask:Kw}=Fs(),{isValidStatusCode:zw,isValidUTF8:Ed}=ys(),Mr=Buffer[Symbol.species],Re=0,Ad=1,Cd=2,Ud=3,Do=4,Oo=5,Fr=6,Lo=class extends Fw{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Bw[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[Zw]=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=Re}_write(e,s,r){if(this._opcode===8&&this._state==Re)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 Mr(r.buffer,r.byteOffset+e,r.length-e),new Mr(r.buffer,r.byteOffset,e)}let s=Buffer.allocUnsafe(e);do{let r=this._buffers[0],i=s.length-e;e>=r.length?s.set(this._buffers.shift(),i):(s.set(new Uint8Array(r.buffer,r.byteOffset,e),i),this._buffers[0]=new Mr(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 Re:this.getInfo(e);break;case Ad:this.getPayloadLength16(e);break;case Cd:this.getPayloadLength64(e);break;case Ud:this.getMask();break;case Do:this.getData(e);break;case Oo:case Fr: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 i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let r=(s[0]&64)===64;if(r&&!this._extensions[xd.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(s[0]&128)===128,this._opcode=s[0]&15,this._payloadLength=s[1]&127,this._opcode===0){if(r){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(r){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(s[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=Ad:this._payloadLength===127?this._state=Cd: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 i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);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=Ud:this._state=Do}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Do}getData(e){let s=Id;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&&Kw(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=Oo,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[xd.extensionName].decompress(e,this._fin,(i,o)=>{if(i)return s(i);if(o.length){if(this._messageLength+=o.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let n=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(n);return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let n=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");s(n);return}this._fragments.push(o)}this.dataMessage(s),this._state===Re&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=Re;return}let s=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let i;this._binaryType==="nodebuffer"?i=vo(r,s):this._binaryType==="arraybuffer"?i=Vw(vo(r,s)):this._binaryType==="blob"?i=new Blob(r):i=r,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=Re):(this._state=Fr,setImmediate(()=>{this.emit("message",i,!0),this._state=Re,this.startLoop(e)}))}else{let i=vo(r,s);if(!this._skipUTF8Validation&&!Ed(i)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(o);return}this._state===Oo||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=Re):(this._state=Fr,setImmediate(()=>{this.emit("message",i,!1),this._state=Re,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Id),this.end();else{let r=e.readUInt16BE(0);if(!zw(r)){let o=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(o);return}let i=new Mr(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Ed(i)){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,i),this.end()}this._state=Re;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=Re):(this._state=Fr,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=Re,this.startLoop(s)}))}createError(e,s,r,i,o){this._loop=!1,this._errored=!0;let n=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(n,this.createError),n.code=o,n[Ww]=i,n}};$d.exports=Lo});var jo=I((yI,Dd)=>{"use strict";var{Duplex:gI}=require("stream"),{randomFillSync:Jw}=require("crypto"),{types:{isUint8Array:Hw}}=require("util"),Td=gs(),{EMPTY_BUFFER:Yw,kWebSocket:Xw,NOOP:Qw}=rt(),{isBlob:_s,isValidStatusCode:eb}=ys(),{mask:vd,toBuffer:Bt}=Fs(),Pe=Symbol("kByteLength"),tb=Buffer.alloc(4),Br=8*1024,Wt,ws=Br,Me=0,sb=1,rb=2,Po=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=Me,this.onerror=Qw,this[Xw]=void 0}static frame(e,s){let r,i=!1,o=2,n=!1;s.mask&&(r=s.maskBuffer||tb,s.generateMask?s.generateMask(r):(ws===Br&&(Wt===void 0&&(Wt=Buffer.alloc(Br)),Jw(Wt,0,Br),ws=0),r[0]=Wt[ws++],r[1]=Wt[ws++],r[2]=Wt[ws++],r[3]=Wt[ws++]),n=(r[0]|r[1]|r[2]|r[3])===0,o=6);let a;typeof e=="string"?(!s.mask||n)&&s[Pe]!==void 0?a=s[Pe]:(e=Buffer.from(e),a=e.length):(a=e.length,i=s.mask&&s.readOnly&&!n);let c=a;a>=65536?(o+=8,c=127):a>125&&(o+=2,c=126);let l=Buffer.allocUnsafe(i?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],n?[l,e]:i?(vd(e,r,l,o,a),[l]):(vd(e,r,e,0,a),[l,e])):[l,e]}close(e,s,r,i){let o;if(e===void 0)o=Yw;else{if(typeof e!="number"||!eb(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(Hw(s))o.set(s,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let n={[Pe]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==Me?this.enqueue([this.dispatch,o,!1,n,i]):this.sendFrame(t.frame(o,n),i)}ping(e,s,r){let i,o;if(typeof e=="string"?(i=Buffer.byteLength(e),o=!1):_s(e)?(i=e.size,o=!1):(e=Bt(e),i=e.length,o=Bt.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Pe]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};_s(e)?this._state!==Me?this.enqueue([this.getBlobData,e,!1,n,r]):this.getBlobData(e,!1,n,r):this._state!==Me?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(t.frame(e,n),r)}pong(e,s,r){let i,o;if(typeof e=="string"?(i=Buffer.byteLength(e),o=!1):_s(e)?(i=e.size,o=!1):(e=Bt(e),i=e.length,o=Bt.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Pe]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};_s(e)?this._state!==Me?this.enqueue([this.getBlobData,e,!1,n,r]):this.getBlobData(e,!1,n,r):this._state!==Me?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(t.frame(e,n),r)}send(e,s,r){let i=this._extensions[Td.extensionName],o=s.binary?2:1,n=s.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):_s(e)?(a=e.size,c=!1):(e=Bt(e),a=e.length,c=Bt.readOnly),this._firstFragment?(this._firstFragment=!1,n&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(n=a>=i._threshold),this._compress=n):(n=!1,o=0),s.fin&&(this._firstFragment=!0);let l={[Pe]:a,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:c,rsv1:n};_s(e)?this._state!==Me?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==Me?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,s,r,i){this._bufferedBytes+=r[Pe],this._state=rb,e.arrayBuffer().then(o=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(No,this,a,i);return}this._bufferedBytes-=r[Pe];let n=Bt(o);s?this.dispatch(n,s,r,i):(this._state=Me,this.sendFrame(t.frame(n,r),i),this.dequeue())}).catch(o=>{process.nextTick(ib,this,o,i)})}dispatch(e,s,r,i){if(!s){this.sendFrame(t.frame(e,r),i);return}let o=this._extensions[Td.extensionName];this._bufferedBytes+=r[Pe],this._state=sb,o.compress(e,r.fin,(n,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");No(this,c,i);return}this._bufferedBytes-=r[Pe],this._state=Me,r.readOnly=!1,this.sendFrame(t.frame(a,r),i),this.dequeue()})}dequeue(){for(;this._state===Me&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][Pe],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Pe],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)}};Dd.exports=Po;function No(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let i=t._queue[r],o=i[i.length-1];typeof o=="function"&&o(e)}}function ib(t,e,s){No(t,e,s),t.onerror(e)}});var Md=I((_I,qd)=>{"use strict";var{kForOnEventAttribute:Ws,kListener:Go}=rt(),Od=Symbol("kCode"),Ld=Symbol("kData"),Rd=Symbol("kError"),Pd=Symbol("kMessage"),Nd=Symbol("kReason"),bs=Symbol("kTarget"),jd=Symbol("kType"),Gd=Symbol("kWasClean"),ot=class{constructor(e){this[bs]=null,this[jd]=e}get target(){return this[bs]}get type(){return this[jd]}};Object.defineProperty(ot.prototype,"target",{enumerable:!0});Object.defineProperty(ot.prototype,"type",{enumerable:!0});var Zt=class extends ot{constructor(e,s={}){super(e),this[Od]=s.code===void 0?0:s.code,this[Nd]=s.reason===void 0?"":s.reason,this[Gd]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[Od]}get reason(){return this[Nd]}get wasClean(){return this[Gd]}};Object.defineProperty(Zt.prototype,"code",{enumerable:!0});Object.defineProperty(Zt.prototype,"reason",{enumerable:!0});Object.defineProperty(Zt.prototype,"wasClean",{enumerable:!0});var ks=class extends ot{constructor(e,s={}){super(e),this[Rd]=s.error===void 0?null:s.error,this[Pd]=s.message===void 0?"":s.message}get error(){return this[Rd]}get message(){return this[Pd]}};Object.defineProperty(ks.prototype,"error",{enumerable:!0});Object.defineProperty(ks.prototype,"message",{enumerable:!0});var Zs=class extends ot{constructor(e,s={}){super(e),this[Ld]=s.data===void 0?null:s.data}get data(){return this[Ld]}};Object.defineProperty(Zs.prototype,"data",{enumerable:!0});var ob={addEventListener(t,e,s={}){for(let i of this.listeners(t))if(!s[Ws]&&i[Go]===e&&!i[Ws])return;let r;if(t==="message")r=function(o,n){let a=new Zs("message",{data:n?o:o.toString()});a[bs]=this,Wr(e,this,a)};else if(t==="close")r=function(o,n){let a=new Zt("close",{code:o,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[bs]=this,Wr(e,this,a)};else if(t==="error")r=function(o){let n=new ks("error",{error:o,message:o.message});n[bs]=this,Wr(e,this,n)};else if(t==="open")r=function(){let o=new ot("open");o[bs]=this,Wr(e,this,o)};else return;r[Ws]=!!s[Ws],r[Go]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[Go]===e&&!s[Ws]){this.removeListener(t,s);break}}};qd.exports={CloseEvent:Zt,ErrorEvent:ks,Event:ot,EventTarget:ob,MessageEvent:Zs};function Wr(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var Zr=I((wI,Fd)=>{"use strict";var{tokenChars:Vs}=ys();function Je(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function nb(t){let e=Object.create(null),s=Object.create(null),r=!1,i=!1,o=!1,n,a,c=-1,l=-1,d=-1,u=0;for(;u<t.length;u++)if(l=t.charCodeAt(u),n===void 0)if(d===-1&&Vs[l]===1)c===-1&&(c=u);else if(u!==0&&(l===32||l===9))d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let m=t.slice(c,d);l===44?(Je(e,m,s),s=Object.create(null)):n=m,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);else if(a===void 0)if(d===-1&&Vs[l]===1)c===-1&&(c=u);else if(l===32||l===9)d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),Je(s,t.slice(c,d),!0),l===44&&(Je(e,n,s),s=Object.create(null),n=void 0),c=d=-1}else if(l===61&&c!==-1&&d===-1)a=t.slice(c,u),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(i){if(Vs[l]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);c===-1?c=u:r||(r=!0),i=!1}else if(o)if(Vs[l]===1)c===-1&&(c=u);else if(l===34&&c!==-1)o=!1,d=u;else if(l===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(l===34&&t.charCodeAt(u-1)===61)o=!0;else if(d===-1&&Vs[l]===1)c===-1&&(c=u);else if(c!==-1&&(l===32||l===9))d===-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let m=t.slice(c,d);r&&(m=m.replace(/\\/g,""),r=!1),Je(s,a,m),l===44&&(Je(e,n,s),s=Object.create(null),n=void 0),a=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(c===-1||o||l===32||l===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=u);let p=t.slice(c,d);return n===void 0?Je(e,p,s):(a===void 0?Je(s,p,!0):r?Je(s,a,p.replace(/\\/g,"")):Je(s,a,p),Je(e,n,s)),e}function ab(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(i=>{let o=r[i];return Array.isArray(o)||(o=[o]),o.map(n=>n===!0?i:`${i}=${n}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Fd.exports={format:ab,parse:nb}});var Jr=I((SI,eu)=>{"use strict";var cb=require("events"),lb=require("https"),db=require("http"),Zd=require("net"),ub=require("tls"),{randomBytes:pb,createHash:mb}=require("crypto"),{Duplex:bI,Readable:kI}=require("stream"),{URL:qo}=require("url"),gt=gs(),fb=Ro(),hb=jo(),{isBlob:gb}=ys(),{BINARY_TYPES:Bd,CLOSE_TIMEOUT:yb,EMPTY_BUFFER:Vr,GUID:_b,kForOnEventAttribute:Mo,kListener:wb,kStatusCode:bb,kWebSocket:fe,NOOP:Vd}=rt(),{EventTarget:{addEventListener:kb,removeEventListener:Sb}}=Md(),{format:xb,parse:Ib}=Zr(),{toBuffer:Eb}=Fs(),Kd=Symbol("kAborted"),Fo=[8,13],nt=["CONNECTING","OPEN","CLOSING","CLOSED"],Ab=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,oe=class t extends cb{constructor(e,s,r){super(),this._binaryType=Bd[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Vr,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]),zd(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Bd.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 i=new fb({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 hb(e,this._extensions,r.generateMask);this._receiver=i,this._sender=o,this._socket=e,i[fe]=this,o[fe]=this,e[fe]=this,i.on("conclude",$b),i.on("drain",Tb),i.on("error",vb),i.on("message",Db),i.on("ping",Ob),i.on("pong",Lb),o.onerror=Rb,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",Yd),e.on("data",zr),e.on("end",Xd),e.on("error",Qd),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[gt.extensionName]&&this._extensions[gt.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())}),Hd(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){Bo(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||Vr,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){Bo(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||Vr,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){Bo(this,e,r);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[gt.extensionName]||(i.compress=!1),this._sender.send(e||Vr,i,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(oe,"CONNECTING",{enumerable:!0,value:nt.indexOf("CONNECTING")});Object.defineProperty(oe.prototype,"CONNECTING",{enumerable:!0,value:nt.indexOf("CONNECTING")});Object.defineProperty(oe,"OPEN",{enumerable:!0,value:nt.indexOf("OPEN")});Object.defineProperty(oe.prototype,"OPEN",{enumerable:!0,value:nt.indexOf("OPEN")});Object.defineProperty(oe,"CLOSING",{enumerable:!0,value:nt.indexOf("CLOSING")});Object.defineProperty(oe.prototype,"CLOSING",{enumerable:!0,value:nt.indexOf("CLOSING")});Object.defineProperty(oe,"CLOSED",{enumerable:!0,value:nt.indexOf("CLOSED")});Object.defineProperty(oe.prototype,"CLOSED",{enumerable:!0,value:nt.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(oe.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(oe.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Mo])return e[wb];return null},set(e){for(let s of this.listeners(t))if(s[Mo]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[Mo]:!0})}})});oe.prototype.addEventListener=kb;oe.prototype.removeEventListener=Sb;eu.exports=oe;function zd(t,e,s,r){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:yb,protocolVersion:Fo[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=i.autoPong,t._closeTimeout=i.closeTimeout,!Fo.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Fo.join(", ")})`);let o;if(e instanceof qo)o=e;else try{o=new qo(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 n=o.protocol==="wss:",a=o.protocol==="ws+unix:",c;if(o.protocol!=="ws:"&&!n&&!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 _;Kr(t,_);return}let l=n?443:80,d=pb(16).toString("base64"),u=n?lb.request:db.request,p=new Set,m;if(i.createConnection=i.createConnection||(n?Ub:Cb),i.defaultPort=i.defaultPort||l,i.port=o.port||l,i.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},i.path=o.pathname+o.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(m=new gt({...i.perMessageDeflate,isServer:!1,maxPayload:i.maxPayload}),i.headers["Sec-WebSocket-Extensions"]=xb({[gt.extensionName]:m.offer()})),s.length){for(let _ of s){if(typeof _!="string"||!Ab.test(_)||p.has(_))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(_)}i.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(o.username||o.password)&&(i.auth=`${o.username}:${o.password}`),a){let _=i.path.split(":");i.socketPath=_[0],i.path=_[1]}let y;if(i.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=n,t._originalHostOrSocketPath=a?i.socketPath:o.host;let _=r&&r.headers;if(r={...r,headers:{}},_)for(let[w,b]of Object.entries(_))r.headers[w.toLowerCase()]=b}else if(t.listenerCount("redirect")===0){let _=a?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:o.host===t._originalHostOrSocketPath;(!_||t._originalSecure&&!n)&&(delete i.headers.authorization,delete i.headers.cookie,_||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),y=t._req=u(i),t._redirects&&t.emit("redirect",t.url,y)}else y=t._req=u(i);i.timeout&&y.on("timeout",()=>{$e(t,y,"Opening handshake has timed out")}),y.on("error",_=>{y===null||y[Kd]||(y=t._req=null,Kr(t,_))}),y.on("response",_=>{let w=_.headers.location,b=_.statusCode;if(w&&i.followRedirects&&b>=300&&b<400){if(++t._redirects>i.maxRedirects){$e(t,y,"Maximum redirects exceeded");return}y.abort();let v;try{v=new qo(w,e)}catch{let D=new SyntaxError(`Invalid URL: ${w}`);Kr(t,D);return}zd(t,v,s,r)}else t.emit("unexpected-response",y,_)||$e(t,y,`Unexpected server response: ${_.statusCode}`)}),y.on("upgrade",(_,w,b)=>{if(t.emit("upgrade",_),t.readyState!==oe.CONNECTING)return;y=t._req=null;let v=_.headers.upgrade;if(v===void 0||v.toLowerCase()!=="websocket"){$e(t,w,"Invalid Upgrade header");return}let G=mb("sha1").update(d+_b).digest("base64");if(_.headers["sec-websocket-accept"]!==G){$e(t,w,"Invalid Sec-WebSocket-Accept header");return}let D=_.headers["sec-websocket-protocol"],L;if(D!==void 0?p.size?p.has(D)||(L="Server sent an invalid subprotocol"):L="Server sent a subprotocol but none was requested":p.size&&(L="Server sent no subprotocol"),L){$e(t,w,L);return}D&&(t._protocol=D);let B=_.headers["sec-websocket-extensions"];if(B!==void 0){if(!m){$e(t,w,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let W;try{W=Ib(B)}catch{$e(t,w,"Invalid Sec-WebSocket-Extensions header");return}let X=Object.keys(W);if(X.length!==1||X[0]!==gt.extensionName){$e(t,w,"Server indicated an extension that was not requested");return}try{m.accept(W[gt.extensionName])}catch{$e(t,w,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[gt.extensionName]=m}t.setSocket(w,b,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxBufferedChunks:i.maxBufferedChunks,maxFragments:i.maxFragments,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(y,t):y.end()}function Kr(t,e){t._readyState=oe.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Cb(t){return t.path=t.socketPath,Zd.connect(t)}function Ub(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Zd.isIP(t.host)?"":t.host),ub.connect(t)}function $e(t,e,s){t._readyState=oe.CLOSING;let r=new Error(s);Error.captureStackTrace(r,$e),e.setHeader?(e[Kd]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Kr,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Bo(t,e,s){if(e){let r=gb(e)?e.size:Eb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${nt[t.readyState]})`);process.nextTick(s,r)}}function $b(t,e){let s=this[fe];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[fe]!==void 0&&(s._socket.removeListener("data",zr),process.nextTick(Jd,s._socket),t===1005?s.close():s.close(t,e))}function Tb(){let t=this[fe];t.isPaused||t._socket.resume()}function vb(t){let e=this[fe];e._socket[fe]!==void 0&&(e._socket.removeListener("data",zr),process.nextTick(Jd,e._socket),e.close(t[bb])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Wd(){this[fe].emitClose()}function Db(t,e){this[fe].emit("message",t,e)}function Ob(t){let e=this[fe];e._autoPong&&e.pong(t,!this._isServer,Vd),e.emit("ping",t)}function Lb(t){this[fe].emit("pong",t)}function Jd(t){t.resume()}function Rb(t){let e=this[fe];e.readyState!==oe.CLOSED&&(e.readyState===oe.OPEN&&(e._readyState=oe.CLOSING,Hd(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Hd(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Yd(){let t=this[fe];if(this.removeListener("close",Yd),this.removeListener("data",zr),this.removeListener("end",Xd),t._readyState=oe.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[fe]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Wd),t._receiver.on("finish",Wd))}function zr(t){this[fe]._receiver.write(t)||this.pause()}function Xd(){let t=this[fe];t._readyState=oe.CLOSING,t._receiver.end(),this.end()}function Qd(){let t=this[fe];this.removeListener("error",Qd),this.on("error",Vd),t&&(t._readyState=oe.CLOSING,this.destroy())}});var iu=I((II,ru)=>{"use strict";var xI=Jr(),{Duplex:Pb}=require("stream");function tu(t){t.emit("close")}function Nb(){!this.destroyed&&this._writableState.finished&&this.destroy()}function su(t){this.removeListener("error",su),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function jb(t,e){let s=!0,r=new Pb({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o,n){let a=!n&&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(i,o){if(t.readyState===t.CLOSED){o(i),process.nextTick(tu,r);return}let n=!1;t.once("error",function(c){n=!0,o(c)}),t.once("close",function(){n||o(i),process.nextTick(tu,r)}),s&&t.terminate()},r._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(i,o,n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(i,o,n)});return}t.send(i,n)},r.on("end",Nb),r.on("error",su),r}ru.exports=jb});var Wo=I((EI,ou)=>{"use strict";var{tokenChars:Gb}=ys();function qb(t){let e=new Set,s=-1,r=-1,i=0;for(i;i<t.length;i++){let n=t.charCodeAt(i);if(r===-1&&Gb[n]===1)s===-1&&(s=i);else if(i!==0&&(n===32||n===9))r===-1&&s!==-1&&(r=i);else if(n===44){if(s===-1)throw new SyntaxError(`Unexpected character at index ${i}`);r===-1&&(r=i);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 ${i}`)}if(s===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let o=t.slice(s,i);if(e.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return e.add(o),e}ou.exports={parse:qb}});var pu=I((CI,uu)=>{"use strict";var Mb=require("events"),Hr=require("http"),{Duplex:AI}=require("stream"),{createHash:Fb}=require("crypto"),nu=Zr(),Vt=gs(),Bb=Wo(),Wb=Jr(),{CLOSE_TIMEOUT:Zb,GUID:Vb,kWebSocket:Kb}=rt(),zb=/^[+/0-9A-Za-z]{22}==$/,au=0,cu=1,du=2,Zo=class extends Mb{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:Zb,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Wb,...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=Hr.createServer((r,i)=>{let o=Hr.STATUS_CODES[426];i.writeHead(426,{"Content-Length":o.length,"Content-Type":"text/plain"}),i.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=Jb(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,o,n)=>{this.handleUpgrade(i,o,n,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=au}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===du){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Ks,this);return}if(e&&this.once("close",e),this._state!==cu)if(this._state=cu,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(Ks,this):process.nextTick(Ks,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{Ks(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,i){s.on("error",lu);let o=e.headers["sec-websocket-key"],n=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Kt(this,e,s,405,"Invalid HTTP method");return}if(n===void 0||n.toLowerCase()!=="websocket"){Kt(this,e,s,400,"Invalid Upgrade header");return}if(o===void 0||!zb.test(o)){Kt(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Kt(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){zs(s,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=Bb.parse(c)}catch{Kt(this,e,s,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&d!==void 0){let p=new Vt({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let m=nu.parse(d);m[Vt.extensionName]&&(p.accept(m[Vt.extensionName]),u[Vt.extensionName]=p)}catch{Kt(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,(m,y,_,w)=>{if(!m)return zs(s,y||401,_,w);this.completeUpgrade(u,o,l,e,s,r,i)});return}if(!this.options.verifyClient(p))return zs(s,401)}this.completeUpgrade(u,o,l,e,s,r,i)}completeUpgrade(e,s,r,i,o,n,a){if(!o.readable||!o.writable)return o.destroy();if(o[Kb])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>au)return zs(o,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Fb("sha1").update(s+Vb).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(r.size){let u=this.options.handleProtocols?this.options.handleProtocols(r,i):r.values().next().value;u&&(l.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[Vt.extensionName]){let u=e[Vt.extensionName].params,p=nu.format({[Vt.extensionName]:[u]});l.push(`Sec-WebSocket-Extensions: ${p}`),d._extensions=e}this.emit("headers",l,i),o.write(l.concat(`\r
506
512
  `).join(`\r
507
- `)),i.removeListener("error",cd),u.setSocket(i,o,{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(zs,this)})),a(u,n)}};ud.exports=zi;function m0(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 zs(t){t._state=ld,t.emit("close")}function cd(){this.destroy()}function Js(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
508
- `+Object.keys(r).map(n=>`${n}: ${r[n]}`).join(`\r
513
+ `)),o.removeListener("error",lu),d.setSocket(o,n,{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(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Ks,this)})),a(d,i)}};uu.exports=Zo;function Jb(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 Ks(t){t._state=du,t.emit("close")}function lu(){this.destroy()}function zs(t,e,s,r){s=s||Hr.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} ${Hr.STATUS_CODES[e]}\r
514
+ `+Object.keys(r).map(i=>`${i}: ${r[i]}`).join(`\r
509
515
  `)+`\r
510
516
  \r
511
- `+s)}function Kt(t,e,s,r,n,i){if(t.listenerCount("wsClientError")){let o=new Error(n);Error.captureStackTrace(o,Kt),t.emit("wsClientError",o,s,e)}else Js(s,r,n,i)}});var md=x((JI,fd)=>{"use strict";var h0=rd(),g0=Fr(),y0=gs(),_0=ji(),w0=Gi(),b0=Ki(),Me=Vr(),pd=dd();Me.createWebSocketStream=h0;Me.extension=g0;Me.PerMessageDeflate=y0;Me.Receiver=_0;Me.Sender=w0;Me.Server=pd;Me.subprotocol=b0;Me.WebSocket=Me;Me.WebSocketServer=pd;fd.exports=Me});var yd=x((XI,gd)=>{var HI=require("https"),YI=require("http"),Ji=class{constructor(e,s,r,n,i,o,a){this.cfg=e,this.token=s,this.cliVersion=r||"dev",this.onWakeup=n,this.onHeartbeatAck=i,this.onDisconnect=o,this.log=a,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 hd(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 hd(k0(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?:\/\//,i=>i==="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=md()}catch{throw new Error("ws module not available \u2014 install with: npm install ws")}return new Promise((n,i)=>{let o={Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion},a=new r(s,{headers:o,handshakeTimeout:1e4});this._ws=a;let c=()=>{try{a.close()}catch{}};this._abortSignal&&this._abortSignal.addEventListener("abort",c,{once:!0});let l=null,u=()=>{let p=this._getRuntimeIds?this._getRuntimeIds():[];for(let f of p)try{a.send(JSON.stringify({type:"daemon:heartbeat",payload:{runtime_id:f,supports_batch_import:!0}}))}catch{}},d=()=>{l&&(clearInterval(l),l=null)};a.on("open",()=>{this.log(`[wakeup] websocket connected (${e.length} runtimes)`),this._backoff=1e3,u();let p=this.cfg.heartbeatInterval||15e3;l=setInterval(u,p),this.onWakeup("")}),a.on("message",p=>{try{let f=JSON.parse(p.toString());this._handleMessage(f)}catch(f){this.log(`[wakeup] invalid message: ${f.message}`)}}),a.on("error",p=>{d(),this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this.onDisconnect&&this.onDisconnect(),i(p)}),a.on("close",(p,f)=>{d(),this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this.onDisconnect&&this.onDisconnect(),this._running&&this.log(`[wakeup] websocket closed (${p})`),n()})})}_handleMessage(e){let s=e.type;if(s==="daemon:task_available"){let r=e.payload||{},n=r.runtime_id||"",i=r.task_id||"";this.log(`[wakeup] task_available runtimeId=${n} taskId=${i}`),this.onWakeup(n)}else s==="daemon:heartbeat_ack"&&this.onHeartbeatAck&&this.onHeartbeatAck(e.payload||{})}};function hd(t){return new Promise(e=>setTimeout(e,t))}function k0(t){return Math.max(500,t+(Math.random()-.5)*t*.2)}gd.exports={TaskWakeupLoop:Ji}});var Sd=x((QI,xd)=>{var Hi=require("os"),{HealthServer:x0}=Ms(),{DaemonClient:S0}=El(),{Poller:_d}=Si(),{Heartbeat:I0}=cu(),{TaskWakeupLoop:C0}=yd(),{loadOrCreateDaemonId:E0}=fs(),{runGc:wd}=wi(),{getActiveWorkdirs:bd}=ki(),{handleModelList:$0}=Ii(),{handleLocalSkillList:A0,handleLocalSkillImport:T0}=Ei(),kd=4320*60*1e3,Yi=class{constructor(e,s){this.cfg=e,this.log=s||console.error,this._runtimeIds=[],this._runtimeProviders={},this._workspaceForRuntime={},this._pollers={},this._heartbeat=null,this._wakeupLoop=null,this._health=null,this._client=null,this._daemonId=null,this._wsLastAck={}}_wsHeartbeatFreshness(){return 2*(this.cfg.heartbeatInterval||15e3)}_recordWsAck(e){e&&(this._wsLastAck[e]=Date.now())}_wsRecentlyAcked(e){let s=this._wsLastAck[e];return s?Date.now()-s<this._wsHeartbeatFreshness():!1}_clearWsAcks(){this._wsLastAck={}}async run(e){let s=this.cfg,r=e&&typeof e.abort=="function"?e:null,n=r?r.signal:e;this._health=new x0(s.healthPort||19514),this._health.setShutdown(()=>{r?r.abort():process.emit("SIGTERM")}),this._health.start(),this._daemonId=E0(s.daemonId),this._health.daemonId=this._daemonId,this._client=new S0(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 o=await this._client.renewToken();o?.renewed&&this.log(`[daemon] token renewed expires_at=${o.expires_at}`)}catch(o){this.log(`[daemon] token renewal preflight skipped: ${o.message}`)}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(o=>o.id||o.name).join(", ")||"(none)"}`)}catch(o){this.log(`[daemon] getWorkspaces error: ${o.message}`)}this._health.workspaces=i.map(o=>o.id||o.name||"");for(let o of i)await this._registerWorkspace(o);this._runtimeIds.length===0&&this.log("[daemon] WARNING: no runtimes registered \u2014 tasks cannot be claimed"),this._health.agents=this._runtimeIds.map(o=>`claude:${o}`),this._health.status="running",this._startGcLoop(s,n);for(let o of this._runtimeIds){let a=new _d(s,this._client,o,this.log);this._pollers[o]=a,a.start(n)}this.log(`[daemon] started ${Object.keys(this._pollers).length} poller(s)`),this._wakeupLoop=new C0(s,s.token,s.cliVersion||"dev",o=>{if(o){let a=this._pollers[o];if(a)this.log(`[daemon] wakeup signal for runtime=${o.slice(0,8)}`),a.wakeup();else{this.log(`[daemon] wakeup signal for unknown runtime=${o.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()},o=>{if(o&&o.runtime_gone&&o.runtime_id){this.log(`[daemon] heartbeat_ack: runtime ${o.runtime_id} gone`),this._handleRuntimeGone(o.runtime_id);return}o&&o.runtime_id&&this._recordWsAck(o.runtime_id),o&&this._handleHeartbeatActions(o.runtime_id,o)},()=>this._clearWsAcks(),this.log),this._wakeupLoop.start(n,()=>this._runtimeIds),this._heartbeat=new I0(s,this._client,()=>this._runtimeIds,this.log,o=>this._handleRuntimeGone(o),o=>this._runtimeProviders[o]||"claude",o=>this._wsRecentlyAcked(o)),this._heartbeat.start(n),this._startWorkspaceSyncLoop(n),this._startTokenRenewalLoop(n),this.log("[daemon] running \u2014 waiting for tasks"),await v0(n),this.log("[daemon] shutting down"),this._heartbeat.stop(),this._wakeupLoop.stop();for(let o of Object.values(this._pollers))o.stop();if(this._runtimeIds.length)try{await this._client.deregister(this._runtimeIds),this.log(`[daemon] deregistered ${this._runtimeIds.length} runtime(s)`)}catch(o){this.log(`[daemon] deregister error: ${o.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||Hi.hostname()}`);let r=((await this._client.register({workspaceId:e.id,daemonId:this._daemonId,deviceName:this.cfg.deviceName||Hi.hostname(),cliVersion:this.cfg.cliVersion||"dev",runtimes:[{name:this.cfg.runtimeName||`Claude (${Hi.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._workspaceForRuntime[n]=e.id||"";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(i){this.log(`[daemon] recover-orphans failed runtime=${n.slice(0,8)}: ${i.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 i=await this._client.getWorkspaces();for(let o of i){let a=this._runtimeIds.length;await this._registerWorkspace(o);let c=this._runtimeIds.slice(a);for(let l of c){let u=new _d(this.cfg,this._client,l,this.log);this._pollers[l]=u,u.start()}}}catch(i){this.log(`[daemon] re-register after runtime_gone failed: ${i.message}`)}}_startWorkspaceSyncLoop(e){let r=async()=>{if(!(e&&e.aborted)){try{let n=await this._client.getWorkspaces();for(let i of n){let o=i.id||i.name||"";if(!this._runtimeIds.some(c=>this._workspaceForRuntime&&this._workspaceForRuntime[c]===o)){let c=this._runtimeIds.length;await this._registerWorkspace(i);let l=this._runtimeIds.slice(c);for(let u of l)if(!this._pollers[u]){let{Poller:d}=Si(),p=new d(this.cfg,this._client,u,this.log);this._pollers[u]=p,p.start(e),this.log(`[daemon] workspace-sync: started poller for new runtime=${u.slice(0,8)}`)}}}}catch(n){this.log(`[daemon] workspace-sync error: ${n.message}`)}(!e||!e.aborted)&&setTimeout(r,3e4)}};setTimeout(r,3e4)}_startGcLoop(e,s){if(!e.gcEnabled)return;let r=e.gcInterval||36e5,n=this._client,i=setTimeout(()=>{if(s&&s.aborted)return;wd(e,bd(),n).catch(()=>{});let o=setInterval(()=>{if(s&&s.aborted){clearInterval(o);return}wd(e,bd(),n).catch(()=>{})},r);s&&s.addEventListener("abort",()=>clearInterval(o),{once:!0})},3e4);s&&s.addEventListener("abort",()=>clearTimeout(i),{once:!0})}_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,kd)}};setTimeout(s,kd)}_handleHeartbeatActions(e,s){if(!s||!e)return;if(s.pending_model_list){let n=this._runtimeProviders[e]||"claude";this.log(`[daemon] heartbeat_ack: pending_model_list runtime=${e.slice(0,8)} requestId=${s.pending_model_list.id}`),$0(this._client,e,s.pending_model_list.id,n,this.log,this.cfg.coderBaseUrl).catch(i=>this.log(`[daemon] model-list error: ${i.message}`))}if(s.pending_local_skills){let n=this._runtimeProviders[e]||"claude";this.log(`[daemon] heartbeat_ack: pending_local_skills runtime=${e.slice(0,8)} requestId=${s.pending_local_skills.id}`),A0(this._client,e,s.pending_local_skills.id,n,this.log).catch(i=>this.log(`[daemon] local-skill-list error: ${i.message}`))}let r=s.pending_local_skill_imports||(s.pending_local_skill_import?[s.pending_local_skill_import]:[]);if(r.length>0){let n=this._runtimeProviders[e]||"claude";for(let i of r)this.log(`[daemon] heartbeat_ack: pending_local_skill_import runtime=${e.slice(0,8)} requestId=${i.id} key=${i.skill_key}`),T0(this._client,e,i.id,i.skill_key,n,this.log).catch(o=>this.log(`[daemon] local-skill-import error: ${o.message}`))}}};function v0(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})})}xd.exports={DaemonProcess:Yi}});var Nd=x((eC,Pd)=>{var{emitTable:ee,emitDetails:J}=gl(),{abort:b,send:I,ensureOk:C,flag:k,positionals:Pe,requireWorkspaceId:$}=wl();function Od(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 i=r.indexOf(":"),o=i!==-1?r.slice(i+1):r,a=s.get(o);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 Qi(t,e,s={member:!0,agent:!0,squad:!1}){let r=String(e).toLowerCase(),n=t.http.workspaceId,i=[];if(s.member&&n){let c=await I(t,"GET",`/api/workspaces/${encodeURIComponent(n)}/members`),l=C(t,c)||{},u=Array.isArray(l)?l:l.members||[];for(let d of u){let p=(d.name||d.username||d.display_name||"").toLowerCase(),f=d.user_id||d.id||"";(f===e||p===r||p.includes(r))&&i.push({assignee_type:"member",assignee_id:f,name:d.name||d.username||f,exact:p===r||f===e})}}if(s.agent){let c=await I(t,"GET","/api/agents"),l=C(t,c)||{},u=Array.isArray(l)?l:l.agents||[];for(let d of u){let p=(d.name||d.slug||"").toLowerCase();(d.id===e||(d.slug||"").toLowerCase()===r||p===r||p.includes(r))&&i.push({assignee_type:"agent",assignee_id:d.id,name:d.name||d.slug||d.id,exact:d.id===e||p===r})}}i.length===0&&b(t.ctx,`\u672A\u627E\u5230 '${e}'`,"\u53EF\u7528: coder flow agent list / coder flow workspace members",4);let o=i.filter(c=>c.exact);if(o.length===1)return o[0];if(i.length===1)return i[0];let a=i.map(c=>`${c.assignee_type}:${c.name}`).join(", ");b(t.ctx,`'${e}' \u5339\u914D\u591A\u4E2A\u5019\u9009: ${a}`,"\u8BF7\u4F7F\u7528\u66F4\u7CBE\u786E\u7684\u540D\u79F0\u6216 --assignee-id",4)}async function eo(t,e,s={member:!0,agent:!0,squad:!1}){let r=t.http.workspaceId;if(s.member&&r){let n=await I(t,"GET",`/api/workspaces/${encodeURIComponent(r)}/members`),i=C(t,n)||{};if((Array.isArray(i)?i:i.members||[]).find(c=>(c.user_id||c.id)===e))return{assignee_type:"member",assignee_id:e}}if(s.agent){let n=await I(t,"GET","/api/agents"),i=C(t,n)||{};if((Array.isArray(i)?i:i.agents||[]).find(c=>c.id===e))return{assignee_type:"agent",assignee_id:e}}return{assignee_type:"agent",assignee_id:e}}var D={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"},Te={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 to(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 U0(t){$(t);let e=new URLSearchParams;e.set("workspace_id",t.http.workspaceId);let s=k(t.args,"--status"),r=k(t.args,"--priority"),n=k(t.args,"--limit"),i=k(t.args,"--offset");s&&e.set("status",s),r&&e.set("priority",r),n&&e.set("limit",n),i&&e.set("offset",i);let o=t.args.includes("--full-id"),[a,c]=await Promise.all([I(t,"GET",`/api/issues?${e.toString()}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),l=C(t,a)||{},u=Array.isArray(l)?l:l.issues||[],d=await so(t,"issues",u),p=c?u.map(f=>{let g=f.assignee||(f.assignee_id?`${f.assignee_type||""}:${f.assignee_id}`:"");if(!g)return null;let _=g.indexOf(":"),y=_!==-1?g.slice(_+1):g;return c.get(y)?.url||null}):null;return ee(t.ctx,u.map(f=>Od(f,{full:o,actors:c})),{labels:D,values:Te,linkCol:"key",rowLinks:d,colLinks:p?{col:"assignee",links:p}:void 0,empty:"\u65E0 issue"}),0}async function Id(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue get <id|KEY>",3),$(t);let[s,r]=await Promise.all([I(t,"GET",`/api/issues/${encodeURIComponent(e)}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),n=C(t,s)||{},i=await to(t,"issues",n.id),o=n.assignee||(n.assignee_id?`${n.assignee_type||""}:${n.assignee_id}`:""),a=o,c=null;if(r&&o){let l=o.indexOf(":"),u=l!==-1?o.slice(l+1):o,d=r.get(u);d&&(a=d.name,c=d.url)}return J(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:D,values:Te,link:i?{key:"key",url:i}:null,fieldLinks:c?{assignee:c}:null}),0}async function O0(t){let e=$(t),s=k(t.args,"--title");s||b(t.ctx,"\u7F3A\u5C11 --title","\u7528\u6CD5: coder flow issue create --title <t>",3);let r={workspace_id:e,title:s},n=k(t.args,"--description"),i=k(t.args,"--priority"),o=k(t.args,"--status"),a=k(t.args,"--project"),c=k(t.args,"--parent"),l=k(t.args,"--agent")||k(t.args,"--assignee"),u=k(t.args,"--assignee-id"),d=k(t.args,"--assignee-type");if(n!==void 0&&(r.description=n),i!==void 0&&(r.priority=i),o!==void 0&&(r.status=o),a!==void 0&&(r.project_id=a),c!==void 0&&(r.parent_id=c),u!==void 0)if(d)r.assignee_type=d,r.assignee_id=u;else{let _=await eo(t,u);r.assignee_type=_.assignee_type,r.assignee_id=_.assignee_id}else if(l!==void 0){let _=await Qi(t,l);r.assignee_type=_.assignee_type,r.assignee_id=_.assignee_id}let p=process.env.MULTICA_QUICK_CREATE_TASK_ID;p&&(r.origin_type="quick_create",r.origin_id=p);let f=await I(t,"POST","/api/issues",r),g=C(t,f)||{};return J(t.ctx,[["key",g.key||g.identifier||""],["id",g.id||""],["title",g.title||s],["status",g.status||""]],null,{labels:D,values:Te}),0}async function ro(t,e,s,r){let n=await I(t,"PUT",`/api/issues/${encodeURIComponent(e)}`,s),i=C(t,n)||{},o=await to(t,"issues",i.id);return J(t.ctx,r(i),null,{labels:D,values:Te,link:o?{key:"key",url:o}:null}),0}async function D0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue update <id|KEY> ...",3),$(t);let s={},r=k(t.args,"--title"),n=k(t.args,"--description"),i=k(t.args,"--priority"),o=k(t.args,"--status"),a=k(t.args,"--assignee")||k(t.args,"--agent"),c=k(t.args,"--assignee-id"),l=k(t.args,"--assignee-type");if(r!==void 0&&(s.title=r),n!==void 0&&(s.description=n),i!==void 0&&(s.priority=i),o!==void 0&&(s.status=o),c!==void 0)if(l)s.assignee_type=l,s.assignee_id=c;else{let u=await eo(t,c);s.assignee_type=u.assignee_type,s.assignee_id=u.assignee_id}else if(a!==void 0){let u=await Qi(t,a);s.assignee_type=u.assignee_type,s.assignee_id=u.assignee_id}return Object.keys(s).length||b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u66F4\u65B0\u5B57\u6BB5","\u81F3\u5C11\u7ED9\u4E00\u4E2A --title/--description/--priority/--status/--assignee",3),ro(t,e,s,u=>[["key",u.key||u.identifier||e],["title",u.title||""],["status",u.status||""],["priority",u.priority||""]])}async function R0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3);let s=k(t.args,"--set")||k(t.args,"--status");return s||b(t.ctx,"\u7F3A\u5C11 --set <status>","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3),$(t),ro(t,e,{status:s},r=>[["key",r.key||r.identifier||e],["status",r.status||s]])}async function L0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue assign <id|KEY> --to <name>",3),$(t);let s=k(t.args,"--to")||k(t.args,"--agent"),r=k(t.args,"--to-id")||k(t.args,"--assignee-id"),n=k(t.args,"--assignee-type"),i=t.args.includes("--unassign"),o;if(i)o={assignee_type:null,assignee_id:null};else if(!s&&!r&&b(t.ctx,"\u7F3A\u5C11 --to <name> \u6216 --to-id <uuid>","\u6216\u7528 --unassign \u53D6\u6D88\u6307\u6D3E",3),r)if(n)o={assignee_type:n,assignee_id:r};else{let a=await eo(t,r);o={assignee_type:a.assignee_type,assignee_id:a.assignee_id}}else{let a=await Qi(t,s);o={assignee_type:a.assignee_type,assignee_id:a.assignee_id}}return ro(t,e,o,a=>[["key",a.key||a.identifier||e],["status",a.status||""],["assignee",a.assignee_id?`${a.assignee_type||""}:${a.assignee_id}`:""]])}async function P0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u5173\u952E\u8BCD","\u7528\u6CD5: coder flow issue search <query>",3),$(t);let s=new URLSearchParams;s.set("q",e),s.set("workspace_id",t.http.workspaceId);let r=k(t.args,"--limit");r&&s.set("limit",r),t.args.includes("--include-closed")&&s.set("include_closed","true");let n=await I(t,"GET",`/api/issues/search?${s.toString()}`),i=C(t,n)||{},o=Array.isArray(i)?i:i.issues||[],a=await so(t,"issues",o);return ee(t.ctx,o.map(c=>Od(c)),{labels:D,values:Te,linkCol:"key",rowLinks:a,empty:"\u65E0\u5339\u914D issue"}),0}async function N0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment list <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/comments`),r=C(t,s)||{},n=Array.isArray(r)?r:r.comments||[];return ee(t.ctx,n.map(i=>({id:i.id||"",author:i.author_id||i.user_id||"",created_at:i.created_at||"",content:i.content||""})),{labels:D,empty:"\u65E0\u8BC4\u8BBA"}),0}async function j0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment add <id|KEY> --content <text>",3),$(t);let s=k(t.args,"--content")||k(t.args,"--body");s||b(t.ctx,"\u7F3A\u5C11 --content",null,3);let r={content:s},n=k(t.args,"--parent");n&&(r.parent_id=n);let i=await I(t,"POST",`/api/issues/${encodeURIComponent(e)}/comments`,r),o=C(t,i)||{};return J(t.ctx,[["id",o.id||""],["content",o.content||s]],null,{labels:D}),0}async function q0(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue comment delete <issue-id> <comment-id>",3),$(t);let n=await I(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/comments/${encodeURIComponent(r)}`);return C(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`\u8BC4\u8BBA ${r} \u5DF2\u5220\u9664`),0}async function M0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber list <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/subscribers`),r=C(t,s)||{},n=Array.isArray(r)?r:r.subscribers||[];return ee(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",type:i.type||""})),{labels:D,empty:"\u65E0\u8BA2\u9605\u8005"}),0}async function G0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber add <id|KEY> [--user <name>]",3),$(t);let s={},r=k(t.args,"--user-id"),n=k(t.args,"--user");r?s.user_id=r:n&&(s.user=n);let i=await I(t,"POST",`/api/issues/${encodeURIComponent(e)}/subscribers`,s),o=C(t,i)||{};return t.ctx.emit(t.ctx.isJson?o:`\u5DF2\u8BA2\u9605 issue ${e}`),0}async function F0(t){let s=Pe(t.args,{valueFlags:["--user-id","--user"]})[0];s||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber remove <id|KEY>",3),$(t);let r={},n=k(t.args,"--user-id"),i=k(t.args,"--user");n?r.user_id=n:i&&(r.user=i);let o=await I(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/subscribers`,r);return C(t,o),t.ctx.emit(t.ctx.isJson?{unsubscribed:!0}:`\u5DF2\u53D6\u6D88\u8BA2\u9605 issue ${s}`),0}async function B0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue pull-requests <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/pull-requests`),r=C(t,s)||{},n=Array.isArray(r)?r:r.pull_requests||[];return ee(t.ctx,n.map(i=>({id:i.id||"",title:i.title||"",url:i.url||"",status:i.status||""})),{labels:D,empty:"\u65E0\u5173\u8054 PR"}),0}async function Z0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue run-messages <task-id> [--since <seq>]",3),$(t);let s=new URLSearchParams,r=k(t.args,"--issue"),n=k(t.args,"--since");r&&s.set("issue_id",r),n&&s.set("since",n);let i=s.toString(),o=await I(t,"GET",`/api/tasks/${encodeURIComponent(e)}/messages${i?"?"+i:""}`),a=C(t,o)||{},c=Array.isArray(a)?a:a.messages||[];return t.ctx.isJson?(t.ctx.emit(c),0):(ee(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 W0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue cancel-task <task-id>",3),$(t);let s={},r=k(t.args,"--issue");r&&(s.issue_id=r);let n=await I(t,"POST",`/api/tasks/${encodeURIComponent(e)}/cancel`,s),i=C(t,n)||{};return J(t.ctx,[["id",i.id||e],["status",i.status||""]],null,{labels:D}),0}async function V0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue runs <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/task-runs`),r=C(t,s)||{},n=Array.isArray(r)?r:r.runs||r.tasks||[];return ee(t.ctx,n.map(i=>({id:i.id||"",status:i.status||"",agent:i.agent_id||i.assignee_id||"",created_at:i.created_at||""})),{labels:D,values:Te,empty:"\u65E0\u4EFB\u52A1\u5386\u53F2"}),0}async function K0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue rerun <id|KEY>",3),$(t);let s=await I(t,"POST",`/api/issues/${encodeURIComponent(e)}/rerun`,{}),r=C(t,s)||{};return J(t.ctx,[["id",r.id||""],["status",r.status||""]],null,{labels:D,values:Te}),0}function Hs(t,e){return e.map(s=>[s,t[s]??""])}function xs(t,e,s,{webPath:r=null,linkCol:n=null}={}){return async i=>{$(i);let o=new URLSearchParams;o.set("workspace_id",i.http.workspaceId);let a=await I(i,"GET",`/api/${t}?${o.toString()}`),c=C(i,a)||{},l=Array.isArray(c)?c:c[e]||[],u=r?await so(i,r,l):null;return ee(i.ctx,l.map(d=>{let p={};for(let f of s)p[f]=d[f]??"";return p}),{labels:D,values:Te,linkCol:n,rowLinks:u,empty:`\u65E0 ${t}`}),0}}function Je(t,e,{webPath:s=null,linkCol:r=null}={}){return async n=>{let i=n.arg;i||b(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... get <id>",3),$(n);let o=await I(n,"GET",`/api/${t}/${encodeURIComponent(i)}`),a=C(n,o)||{},c=s?await to(n,s,a.id):null;return J(n.ctx,Hs(a,e),null,{labels:D,values:Te,link:c&&r?{key:r,url:c}:null}),0}}function zr(t){return async e=>{let s=e.arg;if(s||b(e.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... delete <id>",3),$(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 I(e,"DELETE",`/api/${t}/${encodeURIComponent(s)}`);return C(e,r),e.ctx.emit(e.ctx.isJson?{deleted:s}:`\u5DF2\u5220\u9664 ${s}`),0}}function ot(t,e,s,r,{withWorkspace:n=!1,idArg:i=!1}={}){return async o=>{let a=$(o),c=`/api/${t}`;if(i){let f=o.arg;f||b(o.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id> ...",3),c+=`/${encodeURIComponent(f)}`}let l={};n&&(l.workspace_id=a);for(let[f,g]of s){let _=k(o.args,`--${f}`);_!==void 0&&(l[g]=_)}Object.keys(l).filter(f=>f!=="workspace_id").length||b(o.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5",`\u7ED9\u51FA ${s.map(f=>"--"+f[0]).join(" / ")}`,3);let d=await I(o,e,c,l),p=C(o,d)||{};return J(o.ctx,Hs(p,r),null,{labels:D,values:Te}),0}}function Xi(t,e,s){return async r=>{let n=r.arg;n||b(r.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,`\u7528\u6CD5: coder flow ... ${e} <id>`,3),$(r);let i=await I(r,"POST",`/api/${t}/${encodeURIComponent(n)}/${e}`,{}),o=C(r,i)||{};return J(r.ctx,Hs(o,s),null,{labels:D,values:Te}),0}}function Cd(t,e,s,r){return async n=>{let i=n.arg;i||b(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id>",3),$(n);let o=await I(n,"GET",`/api/${t}/${encodeURIComponent(i)}/${e}`),a=C(n,o)||{},c=Array.isArray(a)?a:a[s]||[];return ee(n.ctx,c.map(l=>{let u={};for(let d of r)u[d]=l[d]??"";return u}),{labels:D,values:Te,empty:"\uFF08\u7A7A\uFF09"}),0}}async function z0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue label list <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/labels`),r=C(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return ee(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",color:i.color||""})),{labels:D,empty:"\u65E0\u6807\u7B7E"}),0}async function J0(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label add <issue-id> <label-id>",3),$(t);let n=await I(t,"POST",`/api/issues/${encodeURIComponent(s)}/labels`,{label_id:r}),i=C(t,n)||{},o=Array.isArray(i)?i:i.labels||[];return ee(t.ctx,o.map(a=>({id:a.id||"",name:a.name||"",color:a.color||""})),{labels:D,empty:"\u65E0\u6807\u7B7E"}),0}async function H0(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label remove <issue-id> <label-id>",3),$(t);let n=await I(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/labels/${encodeURIComponent(r)}`);return C(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`\u6807\u7B7E ${r} \u5DF2\u4ECE issue ${s} \u79FB\u9664`),0}async function Y0(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata list <id|KEY>",3),$(t);let s=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),r=C(t,s)||{},n=r.metadata||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let i=Object.entries(n).map(([o,a])=>({key:o,value:String(a),type:typeof a}));return ee(t.ctx,i,{labels:D,empty:"\u65E0 metadata"}),0}async function X0(t){let e=t.arg,s=k(t.args,"--key");e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),s||b(t.ctx,"\u7F3A\u5C11 --key","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),$(t);let r=await I(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),n=C(t,r)||{},i=n.metadata||n||{};s in i||b(t.ctx,`metadata key '${s}' \u4E0D\u5B58\u5728`,null,4);let o=i[s];return t.ctx.isJson?(t.ctx.emit(o),0):(J(t.ctx,[["key",s],["value",String(o)],["type",typeof o]],null,{labels:D}),0)}async function Q0(t){let e=t.arg,s=k(t.args,"--key"),r=k(t.args,"--value"),n=k(t.args,"--type");e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata set <id|KEY> --key <k> --value <v>",3),s||b(t.ctx,"\u7F3A\u5C11 --key",null,3),r===void 0&&b(t.ctx,"\u7F3A\u5C11 --value",null,3),$(t);let i=r;if(!n||n==="auto")try{i=JSON.parse(r)}catch{i=r}else n==="string"?i=r:n==="number"?(i=Number(r),Number.isNaN(i)&&b(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u6570\u5B57`,null,3)):n==="bool"&&(r!=="true"&&r!=="false"&&b(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u5E03\u5C14\uFF08true/false\uFF09`,null,3),i=r==="true");let o=await I(t,"PUT",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`,{value:i}),a=C(t,o)||{},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 ee(t.ctx,l,{labels:D,empty:"\uFF08\u7A7A\uFF09"}),0}async function ek(t){let e=t.arg,s=k(t.args,"--key");e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata delete <id|KEY> --key <k>",3),s||b(t.ctx,"\u7F3A\u5C11 --key",null,3),$(t);let r=await I(t,"DELETE",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`);return C(t,r),t.ctx.emit(t.ctx.isJson?{deleted:s}:`metadata key '${s}' \u5DF2\u5220\u9664`),0}async function tk(t){let e=t.arg;if(e||b(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue delete <id|KEY> [--yes]",3),$(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 I(t,"DELETE",`/api/issues/${encodeURIComponent(e)}`);return C(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`issue ${e} \u5DF2\u5220\u9664`),0}async function sk(t){$(t);let e=new URLSearchParams({workspace_id:t.http.workspaceId}),s=await I(t,"GET",`/api/labels?${e.toString()}`),r=C(t,s)||{},n=Array.isArray(r)?r:r.labels||[];return ee(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",color:i.color||"",created_at:i.created_at||""})),{labels:D,empty:"\u65E0 label"}),0}async function Ed(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label get <id>",3),$(t);let s=await I(t,"GET",`/api/labels/${encodeURIComponent(e)}`),r=C(t,s)||{};return J(t.ctx,[["id",r.id||""],["name",r.name||""],["color",r.color||""],["created_at",r.created_at||""]],null,{labels:D}),0}async function rk(t){let e=k(t.args,"--name"),s=k(t.args,"--color");e||b(t.ctx,"\u7F3A\u5C11 --name","\u7528\u6CD5: coder flow label create --name <n> --color <#hex>",3),s||b(t.ctx,"\u7F3A\u5C11 --color\uFF08\u683C\u5F0F: #3b82f6\uFF09",null,3),$(t);let r=await I(t,"POST","/api/labels",{name:e,color:s}),n=C(t,r)||{};return J(t.ctx,[["id",n.id||""],["name",n.name||""],["color",n.color||""]],null,{labels:D}),0}async function nk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label update <id> [--name <n>] [--color <#>]",3),$(t);let s={},r=k(t.args,"--name"),n=k(t.args,"--color");r!==void 0&&(s.name=r),n!==void 0&&(s.color=n),Object.keys(s).length||b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --color",3);let i=await I(t,"PUT",`/api/labels/${encodeURIComponent(e)}`,s),o=C(t,i)||{};return J(t.ctx,[["id",o.id||""],["name",o.name||""],["color",o.color||""]],null,{labels:D}),0}async function ik(t){let e=t.arg;if(e||b(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label delete <id> [--yes]",3),$(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 I(t,"DELETE",`/api/labels/${encodeURIComponent(e)}`);return C(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`label ${e} \u5DF2\u5220\u9664`),0}async function ok(t){let e=$(t),s=k(t.args,"--name");s||b(t.ctx,"--name \u662F\u5FC5\u586B\u9879",null,3);let r=k(t.args,"--runtime-id");r||b(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=k(t.args,`--${c}`);u!==void 0&&(n[l]=u)}let i=await I(t,"POST","/api/agents",n),o=C(t,i)||{},a=k(t.args,"--skill-ids");if(a&&o.id){let c=a.split(",").map(l=>l.trim()).filter(Boolean);if(c.length){let l=await I(t,"PUT",`/api/agents/${encodeURIComponent(o.id)}/skills`,{skill_ids:c});C(t,l)}}return J(t.ctx,Hs(o,["id","name","model","runtime_id"]),null,{labels:D,values:Te}),0}async function ak(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills list <id>",3),$(t);let s=await I(t,"GET",`/api/agents/${encodeURIComponent(e)}/skills`),r=C(t,s)||{},n=Array.isArray(r)?r:r.skills||[];return ee(t.ctx,n.map(i=>({id:i.id||"",name:i.name||"",description:i.description||""})),{labels:D,empty:"\u65E0 skill"}),0}async function ck(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills add <agent-id> --skill-ids <id1,id2>",3),$(t);let s=(k(t.args,"--skill-ids")||"").split(",").map(i=>i.trim()).filter(Boolean);s.length||b(t.ctx,"\u7F3A\u5C11 --skill-ids",null,3);let r=await I(t,"POST",`/api/agents/${encodeURIComponent(e)}/skills/add`,{skill_ids:s}),n=C(t,r)||{};return t.ctx.emit(t.ctx.isJson?n:`skill \u5DF2\u6DFB\u52A0\u5230 agent ${e}`),0}async function lk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills set <agent-id> --skill-ids <id1,id2>",3),$(t);let s=k(t.args,"--skill-ids")||"",r=s?s.split(",").map(o=>o.trim()).filter(Boolean):[],n=await I(t,"PUT",`/api/agents/${encodeURIComponent(e)}/skills`,{skill_ids:r}),i=C(t,n)||{};return t.ctx.emit(t.ctx.isJson?i:`agent ${e} \u7684 skill \u5DF2\u66F4\u65B0`),0}async function uk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent env get <id>",3),$(t);let s=await I(t,"GET",`/api/agents/${encodeURIComponent(e)}/env`),r=C(t,s)||{},n=r.env||r||{};if(t.ctx.isJson)return t.ctx.emit(n),0;let i=Object.entries(n).map(([o,a])=>({key:o,value:String(a)}));return ee(t.ctx,i,{labels:D,empty:"\u65E0\u73AF\u5883\u53D8\u91CF"}),0}async function dk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6",`\u7528\u6CD5: coder flow agent env set <id> --custom-env '{"KEY":"val"}'`,3),$(t);let s=k(t.args,"--custom-env");s||b(t.ctx,"\u7F3A\u5C11 --custom-env\uFF08JSON \u5BF9\u8C61\uFF09",null,3);let r;try{r=JSON.parse(s)}catch{b(t.ctx,"--custom-env \u4E0D\u662F\u6709\u6548 JSON",null,3)}let n=await I(t,"PUT",`/api/agents/${encodeURIComponent(e)}/env`,{env:r}),i=C(t,n)||{};return t.ctx.emit(t.ctx.isJson?i:`agent ${e} \u7684\u73AF\u5883\u53D8\u91CF\u5DF2\u66F4\u65B0`),0}async function pk(t){let e=t.arg,s=k(t.args,"--set")||k(t.args,"--status");e||b(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project status <id> --set <status>",3),s||b(t.ctx,"\u7F3A\u5C11 --set <status>",null,3),$(t);let r=await I(t,"PUT",`/api/projects/${encodeURIComponent(e)}`,{status:s}),n=C(t,r)||{};return J(t.ctx,[["id",n.id||""],["title",n.title||""],["status",n.status||""]],null,{labels:D}),0}async function fk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource list <project-id>",3),$(t);let s=await I(t,"GET",`/api/projects/${encodeURIComponent(e)}/resources`),r=C(t,s)||{},n=Array.isArray(r)?r:r.resources||[];return ee(t.ctx,n.map(i=>({id:i.id||"",resource_type:i.resource_type||"",label:i.label||""})),{labels:D,empty:"\u65E0\u8D44\u6E90"}),0}async function mk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource add <project-id> --type <t> --url <u>",3),$(t);let s=k(t.args,"--type")||"github_repo",r=k(t.args,"--url"),n=k(t.args,"--local-path"),i=k(t.args,"--daemon-id"),o=k(t.args,"--label"),a;if(s==="github_repo"){r||b(t.ctx,"github_repo \u9700\u8981 --url",null,3),a={url:r};let d=k(t.args,"--default-branch-hint");d&&(a.default_branch_hint=d)}else s==="local_directory"?((!n||!i)&&b(t.ctx,"local_directory \u9700\u8981 --local-path \u548C --daemon-id",null,3),a={local_path:n,daemon_id:i}):b(t.ctx,`\u672A\u77E5 resource type '${s}'\uFF1B\u652F\u6301: github_repo, local_directory`,null,3);let c={resource_type:s,resource_ref:a};o&&(c.label=o);let l=await I(t,"POST",`/api/projects/${encodeURIComponent(e)}/resources`,c),u=C(t,l)||{};return J(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""]],null,{labels:D}),0}async function hk(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource remove <project-id> <resource-id>",3),$(t);let n=await I(t,"DELETE",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`);return C(t,n),t.ctx.emit(t.ctx.isJson?{removed:r}:`resource ${r} \u5DF2\u4ECE project ${s} \u79FB\u9664`),0}async function gk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member list <squad-id>",3),$(t);let s=await I(t,"GET",`/api/squads/${encodeURIComponent(e)}/members`),r=C(t,s)||{},n=Array.isArray(r)?r:r.members||[];return ee(t.ctx,n.map(i=>({member_id:i.member_id||"",member_type:i.member_type||"",role:i.role||""})),{labels:D,empty:"\u65E0\u6210\u5458"}),0}async function yk(t){let e=t.arg,s=k(t.args,"--member-id"),r=k(t.args,"--type")||"agent",n=k(t.args,"--role")||"member";e||b(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||b(t.ctx,"\u7F3A\u5C11 --member-id",null,3),$(t);let i={member_type:r,member_id:s,role:n},o=await I(t,"POST",`/api/squads/${encodeURIComponent(e)}/members`,i),a=C(t,o)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u5DF2\u52A0\u5165 squad ${e}`),0}async function _k(t){let e=t.arg,s=k(t.args,"--member-id"),r=k(t.args,"--member-type")||"agent",n=k(t.args,"--role");e||b(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member set-role <squad-id> --member-id <id> --role <r>",3),s||b(t.ctx,"\u7F3A\u5C11 --member-id",null,3),n||b(t.ctx,"\u7F3A\u5C11 --role",null,3),$(t);let i={member_type:r,member_id:s,role:n},o=await I(t,"PATCH",`/api/squads/${encodeURIComponent(e)}/members/role`,i),a=C(t,o)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u7684\u89D2\u8272\u5DF2\u66F4\u65B0\u4E3A ${n}`),0}async function wk(t){let e=t.arg,s=k(t.args,"--member-id"),r=k(t.args,"--type")||"agent";e||b(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member remove <squad-id> --member-id <id>",3),s||b(t.ctx,"\u7F3A\u5C11 --member-id",null,3),$(t);let n={member_type:r,member_id:s},i=await I(t,"DELETE",`/api/squads/${encodeURIComponent(e)}/members`,n);return C(t,i),t.ctx.emit(t.ctx.isJson?{removed:s}:`\u6210\u5458 ${s} \u5DF2\u4ECE squad ${e} \u79FB\u9664`),0}async function bk(t){let e=t.arg,s=t.args.find(o=>!o.startsWith("-")&&o!==e)||k(t.args,"--outcome");e||b(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))&&b(t.ctx,"outcome \u5FC5\u987B\u662F action / no_action / failed",null,3),$(t);let r=k(t.args,"--reason")||"",n=await I(t,"POST",`/api/issues/${encodeURIComponent(e)}/squad-evaluated`,{outcome:s,reason:r}),i=C(t,n)||{};return t.ctx.emit(t.ctx.isJson?i:`squad \u8BC4\u4F30\u5DF2\u8BB0\u5F55: ${s}\uFF08issue ${e}\uFF09`),0}async function kk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 autopilot \u6807\u8BC6","\u7528\u6CD5: coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'",3),$(t);let s=k(t.args,"--kind")||"schedule";s!=="schedule"&&s!=="webhook"&&b(t.ctx,"--kind \u987B\u4E3A schedule \u6216 webhook",null,3);let r={kind:s};if(s==="schedule"){let a=k(t.args,"--cron");a||b(t.ctx,"schedule trigger \u9700\u8981 --cron",null,3),r.cron_expression=a;let c=k(t.args,"--timezone");c&&(r.timezone=c)}let n=k(t.args,"--label");n&&(r.label=n);let i=await I(t,"POST",`/api/autopilots/${encodeURIComponent(e)}/triggers`,r),o=C(t,i)||{};return J(t.ctx,[["id",o.id||""],["kind",o.kind||""],["label",o.label||""]],null,{labels:D}),0}async function xk(t){let e=Pe(t.args,{valueFlags:["--cron","--timezone","--label"]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-update <autopilot-id> <trigger-id> [--cron ...] [--enabled true|false]",3),$(t);let n={},i=k(t.args,"--cron"),o=k(t.args,"--timezone"),a=k(t.args,"--label"),c=k(t.args,"--enabled");i!==void 0&&(n.cron_expression=i),o!==void 0&&(n.timezone=o),a!==void 0&&(n.label=a),c!==void 0&&(n.enabled=c==="true"),Object.keys(n).length||b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--cron / --timezone / --label / --enabled",3);let l=await I(t,"PATCH",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`,n),u=C(t,l)||{};return J(t.ctx,[["id",u.id||""],["kind",u.kind||""]],null,{labels:D}),0}async function Sk(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-delete <autopilot-id> <trigger-id>",3),$(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 I(t,"DELETE",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`);return C(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`trigger ${r} \u5DF2\u5220\u9664`),0}async function Ik(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]",3),$(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 I(t,"POST",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}/rotate-webhook-token`,{}),i=C(t,n)||{};return J(t.ctx,[["id",i.id||""],["webhook_url",i.webhook_url||""]],null,{labels:D}),0}async function Ck(t){$(t);let e=k(t.args,"--url");e||b(t.ctx,"\u7F3A\u5C11 --url","\u7528\u6CD5: coder flow skill import --url <url> [--on-conflict fail|overwrite|rename|skip]",3);let s=k(t.args,"--on-conflict")||"fail";["fail","overwrite","rename","skip"].includes(s)||b(t.ctx,"--on-conflict \u987B\u4E3A fail / overwrite / rename / skip",null,3);let r=await I(t,"POST","/api/skills/import",{url:e,on_conflict:s}),n=C(t,r)||{};return J(t.ctx,[["id",n.id||n.skill?.id||""],["name",n.name||n.skill?.name||""],["status",n.status||"created"]],null,{labels:D}),0}async function Ek(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u8BCD","\u7528\u6CD5: coder flow skill search <query>",3),$(t);let s=await I(t,"GET",`/api/skills/search?q=${encodeURIComponent(e)}`),r=C(t,s)||{},n=Array.isArray(r)?r:r.results||[];return ee(t.ctx,n.map(i=>({name:i.name||"",url:i.url||"",source:i.source||"",description:i.description||""})),{labels:D,empty:"\u65E0\u5339\u914D skill"}),0}async function $k(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files list <skill-id>",3),$(t);let s=await I(t,"GET",`/api/skills/${encodeURIComponent(e)}/files`),r=C(t,s)||{},n=Array.isArray(r)?r:r.files||[];return ee(t.ctx,n.map(i=>({id:i.id||"",path:i.path||"",updated_at:i.updated_at||""})),{labels:D,empty:"\u65E0\u6587\u4EF6"}),0}async function Ak(t){let e=t.arg,s=k(t.args,"--path"),r=k(t.args,"--content");e||b(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files upsert <skill-id> --path <p> --content <c>",3),s||b(t.ctx,"\u7F3A\u5C11 --path",null,3),r||b(t.ctx,"\u7F3A\u5C11 --content",null,3),$(t);let n=await I(t,"PUT",`/api/skills/${encodeURIComponent(e)}/files`,{path:s,content:r}),i=C(t,n)||{};return J(t.ctx,[["id",i.id||""],["path",i.path||s]],null,{labels:D}),0}async function Tk(t){let e=Pe(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow skill files delete <skill-id> <file-id>",3),$(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 I(t,"DELETE",`/api/skills/${encodeURIComponent(s)}/files/${encodeURIComponent(r)}`);return C(t,n),t.ctx.emit(t.ctx.isJson?{deleted:r}:`skill file ${r} \u5DF2\u5220\u9664`),0}async function $d(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime get <id>",3),$(t);let s=new URLSearchParams;s.set("workspace_id",t.http.workspaceId);let r=await I(t,"GET",`/api/runtimes?${s.toString()}`),n=C(t,r)||{},o=(Array.isArray(n)?n:n.runtimes||[]).find(c=>c.id===e||c.name===e);o||b(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 J(t.ctx,Hs(o,a),null,{labels:D}),0}async function vk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime usage <id> [--days <n>]",3),$(t);let s=k(t.args,"--days")||"90",r=await I(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/usage?days=${s}`),n=C(t,r)||{},i=Array.isArray(n)?n:n.usage||[];return ee(t.ctx,i.map(o=>({date:o.date||"",provider:o.provider||"",model:o.model||"",input_tokens:String(o.input_tokens??""),output_tokens:String(o.output_tokens??"")})),{labels:D,empty:"\u65E0\u7528\u91CF\u6570\u636E"}),0}async function Uk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime activity <id>",3),$(t);let s=await I(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/activity`),r=C(t,s)||{},n=Array.isArray(r)?r:r.activity||[];return ee(t.ctx,n.map(i=>({hour:i.hour||"",count:String(i.count??"")})),{labels:D,empty:"\u65E0\u6D3B\u52A8\u6570\u636E"}),0}async function Ok(t){let e=t.arg,s=k(t.args,"--target-version");e||b(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime initiate-update <id> --target-version <v>",3),s||b(t.ctx,"\u7F3A\u5C11 --target-version",null,3),$(t);let r=await I(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/update`,{target_version:s}),n=C(t,r)||{};return J(t.ctx,[["id",n.id||""],["status",n.status||""]],null,{labels:D}),0}async function Dk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime models <id>",3),$(t);let s=await I(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/models`,{}),n=(C(t,s)||{}).id;n||b(t.ctx,"\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE request id",null,1);let i=9e4,o=2e3,a=Date.now()+i,c;for(;Date.now()<a;){await new Promise(f=>setTimeout(f,o));let u=await I(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(n)}`),d=C(t,u)||{},p=d.status;if(p==="completed"){c=d;break}(p==="failed"||p==="timeout")&&b(t.ctx,`\u83B7\u53D6\u6A21\u578B\u5217\u8868\u5931\u8D25: ${d.error||p}`,null,1)}if(c||b(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):(ee(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 Rk(t){$(t);let e=await I(t,"GET","/api/workspaces"),s=C(t,e)||{},r=Array.isArray(s)?s:s.workspaces||[];return ee(t.ctx,r.map(n=>({id:n.id||"",name:n.name||"",slug:n.slug||""})),{labels:D,empty:"\u65E0 workspace"}),0}async function Ad(t){$(t);let e=t.arg||t.http.workspaceId,s=await I(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=C(t,s)||{};return J(t.ctx,[["id",r.id||""],["name",r.name||""],["slug",r.slug||""],["description",r.description||""]],null,{labels:D}),0}async function Lk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 workspace id/slug","\u7528\u6CD5: coder flow workspace switch <id|slug>",3),$(t);let s=await I(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=C(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 Pk(t){let e=t.arg||t.http.workspaceId;$(t);let s={},r=k(t.args,"--name"),n=k(t.args,"--description"),i=k(t.args,"--context"),o=k(t.args,"--issue-prefix");r!==void 0&&(s.name=r),n!==void 0&&(s.description=n),i!==void 0&&(s.context=i),o!==void 0&&(s.issue_prefix=o),Object.keys(s).length||b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --description / --context / --issue-prefix",3);let a=await I(t,"PATCH",`/api/workspaces/${encodeURIComponent(e)}`,s),c=C(t,a)||{};return J(t.ctx,[["id",c.id||""],["name",c.name||""],["slug",c.slug||""]],null,{labels:D}),0}async function Nk(t){let e=t.arg||t.http.workspaceId;$(t);let s=await I(t,"GET",`/api/workspaces/${encodeURIComponent(e)}/members`),r=C(t,s)||{},n=Array.isArray(r)?r:r.members||[];return ee(t.ctx,n.map(i=>({id:i.id||"",name:i.name||i.username||"",role:i.role||""})),{labels:D,empty:"\u65E0\u6210\u5458"}),0}async function jk(t){$(t);let e=await I(t,"GET",`/api/workspaces/${t.http.workspaceId}/repos`),s=C(t,e)||{},r=Array.isArray(s)?s:s.repos||s.repositories||[];return ee(t.ctx,r.map(n=>({url:n.url||"",description:n.description||""})),{labels:D,empty:"\u65E0 repo"}),0}async function qk(t){$(t);let e=Pe(t.args,{valueFlags:["--description"]}),s=k(t.args,"--description");e.length||b(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo add <url> [<url>...]",3);let r=e.map(o=>s&&e.length===1?{url:o,description:s}:{url:o}),n=await I(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos`,{repos:r}),i=C(t,n)||{};return t.ctx.emit(t.ctx.isJson?i:`${e.length} \u4E2A repo \u5DF2\u6DFB\u52A0`),0}async function Td(t){$(t);let e=Pe(t.args,{valueFlags:[]});e.length||b(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo remove <url> [<url>...]",3);let s=await I(t,"DELETE",`/api/workspaces/${t.http.workspaceId}/repos`,{urls:e}),r=C(t,s)||{};return t.ctx.emit(t.ctx.isJson?r:`${e.length} \u4E2A repo \u5DF2\u79FB\u9664`),0}async function Mk(t){let e=t.arg;e||b(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo checkout <url> [--ref <branch>]",3),$(t);let s={url:e},r=k(t.args,"--ref");r&&(s.ref=r);let n=await I(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos/checkout`,s),i=C(t,n)||{};return J(t.ctx,[["path",i.path||""],["url",e]],null,{labels:D}),0}async function Gk(t){$(t);let e=await I(t,"GET","/api/me"),s=C(t,e)||{};return J(t.ctx,[["id",s.id||""],["name",s.name||s.display_name||""],["email",s.email||""],["description",s.description||s.profile_description||""]],null,{labels:D}),0}async function Fk(t){$(t);let e={},s=k(t.args,"--description");t.args.includes("--clear")?e.profile_description="":s!==void 0?e.profile_description=s:b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--description <text> \u6216 --clear",3);let n=await I(t,"PATCH","/api/me",e),i=C(t,n)||{};return J(t.ctx,[["id",i.id||""],["description",i.description||i.profile_description||""]],null,{labels:D}),0}async function Bk(t){let e=Pe(t.args,{valueFlags:["--url","--ref","--label","--position","--default-branch-hint","--local-path","--daemon-id","--ref-label"]}),s=e[0],r=e[1];(!s||!r)&&b(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource update <project-id> <resource-id> [--url <u>] [--label <l>]",3),$(t);let n={},i=k(t.args,"--url"),o=k(t.args,"--ref"),a=k(t.args,"--label"),c=k(t.args,"--position");if(o)try{n.resource_ref=JSON.parse(o)}catch{b(t.ctx,"--ref \u4E0D\u662F\u6709\u6548 JSON",null,3)}else if(i){n.resource_ref={url:i};let d=k(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||b(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--url / --ref / --label / --position",3);let l=await I(t,"PUT",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`,n),u=C(t,l)||{};return J(t.ctx,[["id",u.id||""],["resource_type",u.resource_type||""],["label",u.label||""]],null,{labels:D}),0}async function Dd(t){let{spawn:e}=require("child_process"),{checkHealth:s}=Ms(),{daemonLogPath:r,writePid:n}=fs(),{loadConfig:i}=di(),o=require("fs"),a=require("path"),c=t.args.includes("--foreground"),l=r(),u=10*1024*1024,d=5;function p(){try{if(!o.existsSync(l)||o.statSync(l).size<u)return;let B=`${l}.${d}`;o.existsSync(B)&&o.unlinkSync(B);for(let H=d-1;H>=1;H--){let K=`${l}.${H}`;o.existsSync(K)&&o.renameSync(K,`${l}.${H+1}`)}o.renameSync(l,`${l}.1`)}catch{}}function f(B=new Date){let H=(yt,ge=2)=>String(yt).padStart(ge,"0"),K=-B.getTimezoneOffset(),P=K>=0?"+":"-",pe=H(Math.floor(Math.abs(K)/60)),Ee=H(Math.abs(K)%60);return`${B.getFullYear()}-${H(B.getMonth()+1)}-${H(B.getDate())} ${H(B.getHours())}:${H(B.getMinutes())}:${H(B.getSeconds())}.${H(B.getMilliseconds(),3)} ${P}${pe}:${Ee}`}if(c){let{DaemonProcess:B}=Sd(),H=Kk(t),K=i(H);K.token=t.ctx.getApiKey?t.ctx.getApiKey():null,K.coderBaseUrl=t.ctx.baseUrl||K.coderBaseUrl,o.mkdirSync(a.dirname(l),{recursive:!0}),p();let P=yt=>{p();let ge=`[${f()}] ${yt}
512
- `;try{o.appendFileSync(l,ge)}catch{}process.stderr.isTTY&&process.stderr.write(ge)};P(`[daemon] pid=${process.pid} node=${process.version} platform=${process.platform}`),P(`[daemon] log=${l} maxSize=${u/1024/1024}MB keep=${d}`),n(process.pid);let pe=new AbortController;return process.once("SIGINT",()=>pe.abort()),process.once("SIGTERM",()=>pe.abort()),await new B(K,P).run(pe),0}let g=19514,_=await s(g);(_.status==="running"||_.status==="starting")&&b(t.ctx,`daemon \u5DF2\u5728\u8FD0\u884C (pid ${_.pid})`,"\u7528 coder flow daemon restart \u91CD\u542F",1);let y=process.argv[0],w=process.argv[1],T=["flow","daemon","start","--foreground",...t.args.filter(B=>B!=="--foreground")];o.mkdirSync(a.dirname(l),{recursive:!0}),p();let N=o.openSync(l,"a"),v=e(y,[w,...T],{detached:!0,stdio:["ignore",N,"ignore"],env:Object.assign({},process.env,{CODER_APIKEY:t.ctx.getApiKey?t.ctx.getApiKey():process.env.CODER_APIKEY||""})});o.closeSync(N),v.unref(),n(v.pid);let O=Date.now()+45e3,G=!1;for(;Date.now()<O;)if(await no(500),(await s(g)).status==="running"){G=!0;break}return G?t.ctx.emit(`Daemon \u5DF2\u542F\u52A8 (pid ${v.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 Rd(t){let{checkHealth:e,requestShutdown:s}=Ms(),{removePid:r}=fs(),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 i=Date.now()+15e3;for(;Date.now()<i;){await no(500);let o=await e();if(o.status!=="running"&&o.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 Zk(t){return await Rd(t),await no(1e3),Dd(t)}async function vd(t){let{checkHealth:e}=Ms(),{daemonLogPath:s}=fs(),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 Wk(t){let e=require("fs"),{daemonLogPath:s}=fs(),r=s();e.existsSync(r)||b(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"),i=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",o=parseInt(i,10)||50,c=e.readFileSync(r,"utf8").split(`
513
- `).filter(l=>l).slice(-o);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),f=e.openSync(r,"r");e.readSync(f,p,0,p.length,l),e.closeSync(f),l=d.size,p.toString().split(`
514
- `).forEach(g=>{g&&t.ctx.emit(g)})}},500);process.once("SIGINT",()=>clearInterval(u)),await new Promise(()=>{})}return 0}async function Vk(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 i=[],o=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 f=s.join(d,p);if(!e.statSync(f).isDirectory())continue;let g=Ld(f);o+=g,i.push({path:`${u}/${p}`,size:g})}}i.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?i.slice(0,c):i;if(t.ctx.isJson)return t.ctx.emit({workspaces_root:n,total_bytes:o,tasks:i}),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)} ${Ud(u.size)}`);return t.ctx.emit(`
515
- Total: ${Ud(o)} across ${i.length} task(s)`),0}function Ld(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 i=s.join(t,n.name);if(n.isDirectory())r+=Ld(i);else if(n.isFile())try{r+=e.statSync(i).size}catch{}}}catch{}return r}function Ud(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 Kk(t){let{parseDuration:e}=di(),s={},r=n=>{let i=t.args.indexOf(n);return i!==-1?t.args[i+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 no(t){return new Promise(e=>setTimeout(e,t))}async function zk(t){let e=require("fs"),s=require("path"),r=t.arg;r||b(t.ctx,"\u7F3A\u5C11 attachment id","\u7528\u6CD5: coder flow attachment download <id> [-o <dir>]",3),$(t);let n=await I(t,"GET",`/api/attachments/${encodeURIComponent(r)}`),i=C(t,n)||{},o=i.download_url;o||b(t.ctx,"attachment \u65E0 download_url",null,4);let a=s.basename(i.filename||r),c=k(t.args,"-o")||k(t.args,"--output-dir")||".",l=s.join(c,a),u=await new Promise((p,f)=>{(o.startsWith("https")?require("https"):require("http")).get(o,_=>{let y=[];_.on("data",w=>y.push(w)),_.on("end",()=>p(Buffer.concat(y))),_.on("error",f)}).on("error",f)});e.mkdirSync(c,{recursive:!0}),e.writeFileSync(l,u);let d=s.resolve(l);return t.ctx.emit(t.ctx.isJson?{id:i.id||r,filename:a,path:d}:`\u5DF2\u4E0B\u8F7D: ${d}`),0}Pd.exports={LABELS:D,issue:{list:U0,get:Id,info:Id,create:O0,update:D0,delete:tk,status:R0,assign:L0,search:P0,runs:V0,rerun:K0,"pull-requests":B0,"run-messages":Z0,"cancel-task":W0,comment:{list:N0,add:j0,delete:q0},label:{list:z0,add:J0,remove:H0},metadata:{list:Y0,get:X0,set:Q0,delete:ek},subscriber:{list:M0,add:G0,remove:F0}},label:{list:sk,get:Ed,info:Ed,create:rk,update:nk,delete:ik},agent:{list:xs("agents","agents",["id","name","status"],{webPath:"agents",linkCol:"name"}),get:Je("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),info:Je("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),create:ok,update:ot("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:Xi("agents","archive",["id","name","status"]),restore:Xi("agents","restore",["id","name","status"]),tasks:Cd("agents","tasks","tasks",["id","status","created_at"]),skills:{list:ak,add:ck,set:lk},env:{get:uk,set:dk}},project:{list:xs("projects","projects",["id","title","status"],{webPath:"projects",linkCol:"title"}),get:Je("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),info:Je("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),create:ot("projects","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:ot("projects","PUT",[["name","title"],["title","title"],["description","description"],["status","status"]],["id","title"],{idArg:!0}),delete:zr("projects"),status:pk,resource:{list:fk,add:mk,update:Bk,remove:hk}},squad:{list:xs("squads","squads",["id","name"],{webPath:"squads",linkCol:"name"}),get:Je("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),info:Je("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),create:ot("squads","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:ot("squads","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:zr("squads"),activity:bk,member:{list:gk,add:yk,remove:wk,"set-role":_k}},autopilot:{list:xs("autopilots","autopilots",["id","title","status"],{webPath:"autopilots",linkCol:"title"}),get:Je("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),info:Je("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),create:ot("autopilots","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:ot("autopilots","PUT",[["name","title"],["title","title"],["description","description"]],["id","title"],{idArg:!0}),delete:zr("autopilots"),runs:Cd("autopilots","runs","runs",["id","status","created_at"]),trigger:Xi("autopilots","trigger",["id","status"]),"trigger-add":kk,"trigger-update":xk,"trigger-delete":Sk,"trigger-rotate-url":Ik},skill:{list:xs("skills","skills",["id","name"],{webPath:"skills",linkCol:"name"}),get:Je("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),info:Je("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),create:ot("skills","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:ot("skills","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:zr("skills"),import:Ck,search:Ek,files:{list:$k,upsert:Ak,delete:Tk}},runtime:{list:xs("runtimes","runtimes",["id","name","status"]),get:$d,info:$d,models:Dk,usage:vk,activity:Uk,update:Ok},workspace:{list:Rk,get:Ad,info:Ad,switch:Lk,update:Pk,member:{list:Nk}},repo:{list:jk,add:qk,remove:Td,rm:Td,checkout:Mk},user:{profile:{get:Gk,update:Fk}},attachment:{download:zk},daemon:{list:vd,start:Dd,stop:Rd,restart:Zk,status:vd,logs:Wk,"disk-usage":Vk}}});var Gd=x((tC,Md)=>{function jd(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(`
516
- `))}function qd(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(`
517
- `)):jd(t)}var Jk={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"," --assignee <name> Assign to member or agent by name (fuzzy match); alias: --agent"," --assignee-id <uuid> Assign directly by UUID (auto-detects member or agent)"," --assignee-type <type> Force assignee type: member | agent (use with --assignee-id)"],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"," --assignee <name> New assignee by name (member or agent, fuzzy match); alias: --agent"," --assignee-id <uuid> New assignee by UUID (auto-detects member or agent)"," --assignee-type <type> Force assignee type: member | agent (use with --assignee-id)"],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> --to <name>"," coder flow issue assign <id|KEY> --to-id <uuid>"," coder flow issue assign <id|KEY> --unassign","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --to <name> Assign to member or agent by name (fuzzy match); alias: --agent"," --to-id <uuid> Assign directly by UUID (auto-detects member or agent); alias: --assignee-id"," --assignee-type <type> Force assignee type: member | agent | squad (use with --to-id to skip lookup)"," --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 Hk(t,e,s,r){let n=Jk[e]||{},i=r&&n[`${s} ${r}`]||n[s];i?t.emit(i.join(`
518
- `)):qd(t,e)}Md.exports={showHelp:jd,showResourceHelp:qd,showVerbHelp:Hk}});var Bd=x((rC,Fd)=>{var{MulticaHttp:Yk,parseJson:sC}=oi(),Xk=Nd(),{showHelp:Qk,showResourceHelp:ex,showVerbHelp:tx}=Gd(),sx=new Set(["--format","--apikey"]);function rx(t){let e=[];for(let s=0;s<t.length;s++){if(sx.has(t[s])){s++;continue}e.push(t[s])}return e}var nx=new Set(["issue","agent","project","label","skill","squad","autopilot","runtime","workspace","repo","user","attachment","daemon"]),ix=new Set(["daemon"]),io=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 Qk(n),0;let i=r;if(!i)return n.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <ak>.<sk>"),2;let o=e;if(!nx.has(o))return n.fail(`\u672A\u77E5\u547D\u4EE4: coder flow ${o}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let a=rx(s||[]);if(a.length===0||a[0]==="--help"||a[0]==="-h")return ex(n,o),0;if(a.includes("--help")||a.includes("-h")){let w=a[0],T=a[1]&&!a[1].startsWith("-")?a[1]:null;return tx(n,o,w,T),0}let{teamId:c,remaining:l}=this._extractWorkspaceFlag(a),u=ix.has(o)?null:await this._resolveWorkspace(c,i),d=this._resolve(o,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,f=new Yk(i,p,u),{fn:g,args:_}=d,y={ctx:n,http:f,args:_,arg:_[0]};try{return await g(y)||0}catch(w){return w&&w.handled?w.code||1:(n.fail(w.message||String(w),w.hint),1)}}_resolve(e,s){let r=Xk[e];if(!r)return{error:`\u8D44\u6E90 ${e} \u6682\u672A\u5B9E\u73B0`};let n=s[0];if(!n||n.startsWith("-")){let o=r.list||r.get;return o?{fn:o,args:s}:{error:`${e} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let i=r[n];if(!i){let o=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${n}\uFF08\u53EF\u7528: ${o}\uFF09`}}if(typeof i=="object"&&i!==null&&typeof i!="function"){let o=s[1];if(!o||o.startsWith("-")){let c=i.list||i.get;return c?{fn:c,args:s.slice(1)}:{error:`${e} ${n} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let a=i[o];if(!a){let c=Object.keys(i).join(" | ");return{error:`\u672A\u77E5 ${e} ${n} \u52A8\u8BCD: ${o}\uFF08\u53EF\u7528: ${c}\uFF09`}}return{fn:a,args:s.slice(2)}}return{fn:i,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 i=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),o=await this.teamService.request("GET",`/team?constraints=${i}&page=1&size=200`,s);if(o.status===200){let c=this.teamService.parseJson(o.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};Fd.exports=io});var Wd=x((nC,Zd)=>{var ox=Bd(),ax=$r();function cx(t,e){let s=new ox(e);return s.teamService=new ax(e),t.command("flow [args...]").description("\u64CD\u4F5C Coder Flow\uFF08issue/agent \u7B49\uFF09").allowUnknownOption().helpOption(!1).action(async r=>{let n=r||[],i=await s.handle({multicaSubcommand:n[0],multicaRemainingArgs:n.slice(1),apikey:process.env.MULTICA_TOKEN||e.getApiKey()});process.exitCode=i||0}),s}Zd.exports={register:cx}});var Jd=x((iC,zd)=>{var lx=dr(),ux=$r();function Kd(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 Vd(t,e,s){t.command(`${s.name} [args...]`).description(s.describe).allowUnknownOption().helpOption(!1).action(async r=>{let n=await s.service.handle(Kd(s.prefix,r||[],e));process.exitCode=n||0})}function dx(t,e){let s=new ux(e),r=new lx(e);return r.teamService=s,Vd(t,e,{name:"team",describe:"\u7BA1\u7406\u56E2\u961F\u4E0E\u6210\u5458\uFF08\u9762\u5411 AI\uFF09",prefix:"team",service:s}),Vd(t,e,{name:"skills",describe:"\u7BA1\u7406 Claude Code skills",prefix:"skills",service:r}),{teamService:s,skillsService:r}}zd.exports={register:dx,buildHandleArgs:Kd}});var Yd=x((oC,Hd)=>{"use strict";var{EventEmitter:px}=require("events"),fx=require("crypto"),Jr=class{constructor(e,s){this.streamId=e,this.sessionId=s,this._emitter=new px,this._emitter.setMaxListeners(20),this._events=[],this._counter=0,this._done=!1,this.aborted=!1}publish(e,s){this._counter+=1;let r={id:this._counter,event:e,data:s};this._events.push(r),this._events.length>5e3&&this._events.shift(),this._emitter.emit("event",r),(e==="done"||e==="agent-error")&&(this._done=!0,this._emitter.emit("end"))}abort(){this.aborted=!0,this._emitter.emit("abort")}subscribe(e=0){let s=this;return{[Symbol.asyncIterator](){let r=[],n=null,i=!1;for(let c of s._events)c.id>e&&r.push(c);s._done&&(i=!0);function o(c){if(n){let l=n;n=null,l({value:c,done:!1})}else r.push(c)}function a(){if(i=!0,n){let c=n;n=null,c({value:void 0,done:!0})}}return s._emitter.on("event",o),s._emitter.on("end",a),{next(){return r.length>0?Promise.resolve({value:r.shift(),done:!1}):i?Promise.resolve({value:void 0,done:!0}):new Promise(c=>{n=c})},return(){return s._emitter.off("event",o),s._emitter.off("end",a),Promise.resolve({value:void 0,done:!0})}}}}}},oo=class{constructor(){this._streams=new Map}create(e){let s=fx.randomUUID(),r=new Jr(s,e);return this._streams.set(s,r),setTimeout(()=>this._streams.delete(s),1800*1e3),r}get(e){return this._streams.get(e)||null}delete(e){this._streams.delete(e)}};Hd.exports={StreamManager:oo,StreamHandle:Jr}});var Yr=x((aC,Qd)=>{"use strict";var ao=process.env.CODER_DEBUG==="true"||process.env.CODER_DEBUG==="True"||process.env.CODER_DEBUG==="1",Ge="\x1B[0m",gt="\x1B[90m",mx="\x1B[36m",hx="\x1B[33m",gx="\x1B[31m",yx="\x1B[32m",Xd="\x1B[1m",_x={DEBUG:gt,INFO:mx,WARN:hx,ERROR:gx};function wx(){return new Date().toISOString().slice(11,23)}function Hr(t,e,s,r){let n=_x[t]||Ge,i=e?`${gt}[${e}]${Ge} `:"",o=`${gt}[coder-server]${Ge} ${n}${t.padEnd(5)}${Ge} ${wx()} ${i}${s}`;if(r!==void 0){let a=typeof r=="string"?r:JSON.stringify(r,null,0);o+=` ${gt}${a}${Ge}`}return o}var bx={debug(t,e,s){ao&&process.stderr.write(Hr("DEBUG",t,e,s)+`
519
- `)},info(t,e,s){process.stderr.write(Hr("INFO ",t,e,s)+`
520
- `)},warn(t,e,s){process.stderr.write(Hr("WARN ",t,e,s)+`
521
- `)},error(t,e,s){process.stderr.write(Hr("ERROR",t,e,s)+`
517
+ `+s)}function Kt(t,e,s,r,i,o){if(t.listenerCount("wsClientError")){let n=new Error(i);Error.captureStackTrace(n,Kt),t.emit("wsClientError",n,s,e)}else zs(s,r,i,o)}});var hu=I((UI,fu)=>{"use strict";var Hb=iu(),Yb=Zr(),Xb=gs(),Qb=Ro(),ek=jo(),tk=Wo(),Fe=Jr(),mu=pu();Fe.createWebSocketStream=Hb;Fe.extension=Yb;Fe.PerMessageDeflate=Xb;Fe.Receiver=Qb;Fe.Sender=ek;Fe.Server=mu;Fe.subprotocol=tk;Fe.WebSocket=Fe;Fe.WebSocketServer=mu;fu.exports=Fe});var _u=I((vI,yu)=>{var $I=require("https"),TI=require("http"),Vo=class{constructor(e,s,r,i,o,n,a){this.cfg=e,this.token=s,this.cliVersion=r||"dev",this.onWakeup=i,this.onHeartbeatAck=o,this.onDisconnect=n,this.log=a,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 gu(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 gu(sk(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://"),i=[...e].sort().join(",");return`${r}/api/daemon/ws?runtime_ids=${encodeURIComponent(i)}`}async _connect(e){let s=this._buildWsUrl(e),r;try{r=hu()}catch{throw new Error("ws module not available \u2014 install with: npm install ws")}return new Promise((i,o)=>{let n={Authorization:`Bearer ${this.token}`,"X-Client-Platform":"daemon","X-Client-Version":this.cliVersion},a=new r(s,{headers:n,handshakeTimeout:1e4});this._ws=a;let c=()=>{try{a.close()}catch{}};this._abortSignal&&this._abortSignal.addEventListener("abort",c,{once:!0});let l=null,d=()=>{let p=this._getRuntimeIds?this._getRuntimeIds():[];for(let m of p)try{a.send(JSON.stringify({type:"daemon:heartbeat",payload:{runtime_id:m,supports_batch_import:!0}}))}catch{}},u=()=>{l&&(clearInterval(l),l=null)};a.on("open",()=>{this.log(`[wakeup] websocket connected (${e.length} runtimes)`),this._backoff=1e3,d();let p=this.cfg.heartbeatInterval||15e3;l=setInterval(d,p),this.onWakeup("")}),a.on("message",p=>{try{let m=JSON.parse(p.toString());this._handleMessage(m)}catch(m){this.log(`[wakeup] invalid message: ${m.message}`)}}),a.on("error",p=>{u(),this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this.onDisconnect&&this.onDisconnect(),o(p)}),a.on("close",(p,m)=>{u(),this._abortSignal&&this._abortSignal.removeEventListener("abort",c),this._ws=null,this.onDisconnect&&this.onDisconnect(),this._running&&this.log(`[wakeup] websocket closed (${p})`),i()})})}_handleMessage(e){let s=e.type;if(s==="daemon:task_available"){let r=e.payload||{},i=r.runtime_id||"",o=r.task_id||"";this.log(`[wakeup] task_available runtimeId=${i} taskId=${o}`),this.onWakeup(i)}else s==="daemon:heartbeat_ack"&&this.onHeartbeatAck&&this.onHeartbeatAck(e.payload||{})}};function gu(t){return new Promise(e=>setTimeout(e,t))}function sk(t){return Math.max(500,t+(Math.random()-.5)*t*.2)}yu.exports={TaskWakeupLoop:Vo}});var Iu=I((DI,xu)=>{var Ko=require("os"),{HealthServer:rk}=Gs(),{DaemonClient:ik}=Cl(),{Poller:wu}=bo(),{Heartbeat:ok}=ld(),{TaskWakeupLoop:nk}=_u(),{loadOrCreateDaemonId:ak}=ms(),{runGc:bu}=go(),{getActiveWorkdirs:ku}=_o(),{handleModelList:ck}=ko(),{handleLocalSkillList:lk,handleLocalSkillImport:dk}=xo(),Su=4320*60*1e3,zo=class{constructor(e,s){this.cfg=e,this.log=s||console.error,this._runtimeIds=[],this._runtimeProviders={},this._workspaceForRuntime={},this._pollers={},this._heartbeat=null,this._wakeupLoop=null,this._health=null,this._client=null,this._daemonId=null,this._wsLastAck={}}_wsHeartbeatFreshness(){return 2*(this.cfg.heartbeatInterval||15e3)}_recordWsAck(e){e&&(this._wsLastAck[e]=Date.now())}_wsRecentlyAcked(e){let s=this._wsLastAck[e];return s?Date.now()-s<this._wsHeartbeatFreshness():!1}_clearWsAcks(){this._wsLastAck={}}async run(e){let s=this.cfg,r=e&&typeof e.abort=="function"?e:null,i=r?r.signal:e;this._health=new rk(s.healthPort||19514),this._health.setShutdown(()=>{r?r.abort():process.emit("SIGTERM")}),this._health.start(),this._daemonId=ak(s.daemonId),this._health.daemonId=this._daemonId,this._client=new ik(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 n=await this._client.renewToken();n?.renewed&&this.log(`[daemon] token renewed expires_at=${n.expires_at}`)}catch(n){this.log(`[daemon] token renewal preflight skipped: ${n.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(n=>n.id||n.name).join(", ")||"(none)"}`)}catch(n){this.log(`[daemon] getWorkspaces error: ${n.message}`)}this._health.workspaces=o.map(n=>n.id||n.name||"");for(let n of o)await this._registerWorkspace(n);this._runtimeIds.length===0&&this.log("[daemon] WARNING: no runtimes registered \u2014 tasks cannot be claimed"),this._health.agents=this._runtimeIds.map(n=>`claude:${n}`),this._health.status="running",this._startGcLoop(s,i);for(let n of this._runtimeIds){let a=new wu(s,this._client,n,this.log);this._pollers[n]=a,a.start(i)}this.log(`[daemon] started ${Object.keys(this._pollers).length} poller(s)`),this._wakeupLoop=new nk(s,s.token,s.cliVersion||"dev",n=>{if(n){let a=this._pollers[n];if(a)this.log(`[daemon] wakeup signal for runtime=${n.slice(0,8)}`),a.wakeup();else{this.log(`[daemon] wakeup signal for unknown runtime=${n.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()},n=>{if(n&&n.runtime_gone&&n.runtime_id){this.log(`[daemon] heartbeat_ack: runtime ${n.runtime_id} gone`),this._handleRuntimeGone(n.runtime_id);return}n&&n.runtime_id&&this._recordWsAck(n.runtime_id),n&&this._handleHeartbeatActions(n.runtime_id,n)},()=>this._clearWsAcks(),this.log),this._wakeupLoop.start(i,()=>this._runtimeIds),this._heartbeat=new ok(s,this._client,()=>this._runtimeIds,this.log,n=>this._handleRuntimeGone(n),n=>this._runtimeProviders[n]||"claude",n=>this._wsRecentlyAcked(n)),this._heartbeat.start(i),this._startWorkspaceSyncLoop(i),this._startTokenRenewalLoop(i),this.log("[daemon] running \u2014 waiting for tasks"),await uk(i),this.log("[daemon] shutting down"),this._heartbeat.stop(),this._wakeupLoop.stop();for(let n of Object.values(this._pollers))n.stop();if(this._runtimeIds.length)try{await this._client.deregister(this._runtimeIds),this.log(`[daemon] deregistered ${this._runtimeIds.length} runtime(s)`)}catch(n){this.log(`[daemon] deregister error: ${n.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||Ko.hostname()}`);let r=((await this._client.register({workspaceId:e.id,daemonId:this._daemonId,deviceName:this.cfg.deviceName||Ko.hostname(),cliVersion:this.cfg.cliVersion||"dev",runtimes:[{name:this.cfg.runtimeName||`Claude (${Ko.hostname()})`,type:"claude",version:this.cfg.cliVersion||"dev",status:"online"}]}))?.runtimes||[]).map(i=>i.id).filter(Boolean);for(let i of r)this._runtimeProviders[i]="claude",this._workspaceForRuntime[i]=e.id||"";this._runtimeIds.push(...r),this.log(`[daemon] registered workspace=${e.id} runtimeIds=[${r.join(", ")}]`);for(let i of r)try{await this._client.recoverOrphans(i),this.log(`[daemon] recover-orphans OK runtime=${i.slice(0,8)}`)}catch(o){this.log(`[daemon] recover-orphans failed runtime=${i.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 i=this._pollers[e];i&&(i.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 n of o){let a=this._runtimeIds.length;await this._registerWorkspace(n);let c=this._runtimeIds.slice(a);for(let l of c){let d=new wu(this.cfg,this._client,l,this.log);this._pollers[l]=d,d.start()}}}catch(o){this.log(`[daemon] re-register after runtime_gone failed: ${o.message}`)}}_startWorkspaceSyncLoop(e){let r=async()=>{if(!(e&&e.aborted)){try{let i=await this._client.getWorkspaces();for(let o of i){let n=o.id||o.name||"";if(!this._runtimeIds.some(c=>this._workspaceForRuntime&&this._workspaceForRuntime[c]===n)){let c=this._runtimeIds.length;await this._registerWorkspace(o);let l=this._runtimeIds.slice(c);for(let d of l)if(!this._pollers[d]){let{Poller:u}=bo(),p=new u(this.cfg,this._client,d,this.log);this._pollers[d]=p,p.start(e),this.log(`[daemon] workspace-sync: started poller for new runtime=${d.slice(0,8)}`)}}}}catch(i){this.log(`[daemon] workspace-sync error: ${i.message}`)}(!e||!e.aborted)&&setTimeout(r,3e4)}};setTimeout(r,3e4)}_startGcLoop(e,s){if(!e.gcEnabled)return;let r=e.gcInterval||36e5,i=this._client,o=setTimeout(()=>{if(s&&s.aborted)return;bu(e,ku(),i).catch(()=>{});let n=setInterval(()=>{if(s&&s.aborted){clearInterval(n);return}bu(e,ku(),i).catch(()=>{})},r);s&&s.addEventListener("abort",()=>clearInterval(n),{once:!0})},3e4);s&&s.addEventListener("abort",()=>clearTimeout(o),{once:!0})}_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,Su)}};setTimeout(s,Su)}_handleHeartbeatActions(e,s){if(!s||!e)return;if(s.pending_model_list){let i=this._runtimeProviders[e]||"claude";this.log(`[daemon] heartbeat_ack: pending_model_list runtime=${e.slice(0,8)} requestId=${s.pending_model_list.id}`),ck(this._client,e,s.pending_model_list.id,i,this.log,this.cfg.coderBaseUrl).catch(o=>this.log(`[daemon] model-list error: ${o.message}`))}if(s.pending_local_skills){let i=this._runtimeProviders[e]||"claude";this.log(`[daemon] heartbeat_ack: pending_local_skills runtime=${e.slice(0,8)} requestId=${s.pending_local_skills.id}`),lk(this._client,e,s.pending_local_skills.id,i,this.log).catch(o=>this.log(`[daemon] local-skill-list error: ${o.message}`))}let r=s.pending_local_skill_imports||(s.pending_local_skill_import?[s.pending_local_skill_import]:[]);if(r.length>0){let i=this._runtimeProviders[e]||"claude";for(let o of r)this.log(`[daemon] heartbeat_ack: pending_local_skill_import runtime=${e.slice(0,8)} requestId=${o.id} key=${o.skill_key}`),dk(this._client,e,o.id,o.skill_key,i,this.log).catch(n=>this.log(`[daemon] local-skill-import error: ${n.message}`))}}};function uk(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})})}xu.exports={DaemonProcess:zo}});var ju=I((OI,Nu)=>{var{emitTable:se,emitDetails:Y}=yl(),{abort:k,send:C,ensureOk:U,flag:x,positionals:Ne,requireWorkspaceId:T}=bl();function Ou(t,{full:e=!1,actors:s=null}={}){let r=t.assignee||(t.assignee_id?`${t.assignee_type||""}:${t.assignee_id}`:""),i=r;if(s&&r){let o=r.indexOf(":"),n=o!==-1?r.slice(o+1):r,a=s.get(n);a&&(i=a.name)}return{key:t.key||t.identifier||"",...e?{id:t.id||""}:{},title:t.title||"",status:t.status||"",priority:t.priority||"",assignee:i}}async function Ho(t,e,s={member:!0,agent:!0,squad:!1}){let r=String(e).toLowerCase(),i=t.http.workspaceId,o=[];if(s.member&&i){let c=await C(t,"GET",`/api/workspaces/${encodeURIComponent(i)}/members`),l=U(t,c)||{},d=Array.isArray(l)?l:l.members||[];for(let u of d){let p=(u.name||u.username||u.display_name||"").toLowerCase(),m=u.user_id||u.id||"";(m===e||p===r||p.includes(r))&&o.push({assignee_type:"member",assignee_id:m,name:u.name||u.username||m,exact:p===r||m===e})}}if(s.agent){let c=await C(t,"GET","/api/agents"),l=U(t,c)||{},d=Array.isArray(l)?l:l.agents||[];for(let u of d){let p=(u.name||u.slug||"").toLowerCase();(u.id===e||(u.slug||"").toLowerCase()===r||p===r||p.includes(r))&&o.push({assignee_type:"agent",assignee_id:u.id,name:u.name||u.slug||u.id,exact:u.id===e||p===r})}}o.length===0&&k(t.ctx,`\u672A\u627E\u5230 '${e}'`,"\u53EF\u7528: coder flow agent list / coder flow workspace members",4);let n=o.filter(c=>c.exact);if(n.length===1)return n[0];if(o.length===1)return o[0];let a=o.map(c=>`${c.assignee_type}:${c.name}`).join(", ");k(t.ctx,`'${e}' \u5339\u914D\u591A\u4E2A\u5019\u9009: ${a}`,"\u8BF7\u4F7F\u7528\u66F4\u7CBE\u786E\u7684\u540D\u79F0\u6216 --assignee-id",4)}async function Yo(t,e,s={member:!0,agent:!0,squad:!1}){let r=t.http.workspaceId;if(s.member&&r){let i=await C(t,"GET",`/api/workspaces/${encodeURIComponent(r)}/members`),o=U(t,i)||{};if((Array.isArray(o)?o:o.members||[]).find(c=>(c.user_id||c.id)===e))return{assignee_type:"member",assignee_id:e}}if(s.agent){let i=await C(t,"GET","/api/agents"),o=U(t,i)||{};if((Array.isArray(o)?o:o.agents||[]).find(c=>c.id===e))return{assignee_type:"agent",assignee_id:e}}return{assignee_type:"agent",assignee_id:e}}var R={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"},Te={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 Qo(t,e,s){if(t.ctx.isJson)return null;let r=await t.http.getWorkspaceSlug();return r?s.map(i=>i&&i.id?`${t.http.baseUrl}/${r}/${e}/${i.id}`:null):null}async function pk(t){T(t);let e=new URLSearchParams;e.set("workspace_id",t.http.workspaceId);let s=x(t.args,"--status"),r=x(t.args,"--priority"),i=x(t.args,"--limit"),o=x(t.args,"--offset");s&&e.set("status",s),r&&e.set("priority",r),i&&e.set("limit",i),o&&e.set("offset",o);let n=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=U(t,a)||{},d=Array.isArray(l)?l:l.issues||[],u=await Qo(t,"issues",d),p=c?d.map(m=>{let y=m.assignee||(m.assignee_id?`${m.assignee_type||""}:${m.assignee_id}`:"");if(!y)return null;let _=y.indexOf(":"),w=_!==-1?y.slice(_+1):y;return c.get(w)?.url||null}):null;return se(t.ctx,d.map(m=>Ou(m,{full:n,actors:c})),{labels:R,values:Te,linkCol:"key",rowLinks:u,colLinks:p?{col:"assignee",links:p}:void 0,empty:"\u65E0 issue"}),0}async function Eu(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue get <id|KEY>",3),T(t);let[s,r]=await Promise.all([C(t,"GET",`/api/issues/${encodeURIComponent(e)}`),t.ctx.isJson?Promise.resolve(null):t.http.getActorLookup()]),i=U(t,s)||{},o=await Xo(t,"issues",i.id),n=i.assignee||(i.assignee_id?`${i.assignee_type||""}:${i.assignee_id}`:""),a=n,c=null;if(r&&n){let l=n.indexOf(":"),d=l!==-1?n.slice(l+1):n,u=r.get(d);u&&(a=u.name,c=u.url)}return Y(t.ctx,[["key",i.key||i.identifier||""],["id",i.id||""],["title",i.title||""],["status",i.status||""],["priority",i.priority||""],["assignee",a],["start_date",i.start_date||""],["due_date",i.due_date||""],["description",i.description||""]],null,{labels:R,values:Te,link:o?{key:"key",url:o}:null,fieldLinks:c?{assignee:c}:null}),0}async function mk(t){let e=T(t),s=x(t.args,"--title");s||k(t.ctx,"\u7F3A\u5C11 --title","\u7528\u6CD5: coder flow issue create --title <t>",3);let r={workspace_id:e,title:s},i=x(t.args,"--description"),o=x(t.args,"--priority"),n=x(t.args,"--status"),a=x(t.args,"--project"),c=x(t.args,"--parent"),l=x(t.args,"--agent")||x(t.args,"--assignee"),d=x(t.args,"--assignee-id"),u=x(t.args,"--assignee-type");if(i!==void 0&&(r.description=i),o!==void 0&&(r.priority=o),n!==void 0&&(r.status=n),a!==void 0&&(r.project_id=a),c!==void 0&&(r.parent_id=c),d!==void 0)if(u)r.assignee_type=u,r.assignee_id=d;else{let _=await Yo(t,d);r.assignee_type=_.assignee_type,r.assignee_id=_.assignee_id}else if(l!==void 0){let _=await Ho(t,l);r.assignee_type=_.assignee_type,r.assignee_id=_.assignee_id}let p=process.env.MULTICA_QUICK_CREATE_TASK_ID;p&&(r.origin_type="quick_create",r.origin_id=p);let m=await C(t,"POST","/api/issues",r),y=U(t,m)||{};return Y(t.ctx,[["key",y.key||y.identifier||""],["id",y.id||""],["title",y.title||s],["status",y.status||""]],null,{labels:R,values:Te}),0}async function en(t,e,s,r){let i=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}`,s),o=U(t,i)||{},n=await Xo(t,"issues",o.id);return Y(t.ctx,r(o),null,{labels:R,values:Te,link:n?{key:"key",url:n}:null}),0}async function fk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue update <id|KEY> ...",3),T(t);let s={},r=x(t.args,"--title"),i=x(t.args,"--description"),o=x(t.args,"--priority"),n=x(t.args,"--status"),a=x(t.args,"--assignee")||x(t.args,"--agent"),c=x(t.args,"--assignee-id"),l=x(t.args,"--assignee-type");if(r!==void 0&&(s.title=r),i!==void 0&&(s.description=i),o!==void 0&&(s.priority=o),n!==void 0&&(s.status=n),c!==void 0)if(l)s.assignee_type=l,s.assignee_id=c;else{let d=await Yo(t,c);s.assignee_type=d.assignee_type,s.assignee_id=d.assignee_id}else if(a!==void 0){let d=await Ho(t,a);s.assignee_type=d.assignee_type,s.assignee_id=d.assignee_id}return Object.keys(s).length||k(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u66F4\u65B0\u5B57\u6BB5","\u81F3\u5C11\u7ED9\u4E00\u4E2A --title/--description/--priority/--status/--assignee",3),en(t,e,s,d=>[["key",d.key||d.identifier||e],["title",d.title||""],["status",d.status||""],["priority",d.priority||""]])}async function hk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3);let s=x(t.args,"--set")||x(t.args,"--status");return s||k(t.ctx,"\u7F3A\u5C11 --set <status>","\u7528\u6CD5: coder flow issue status <id|KEY> --set <status>",3),T(t),en(t,e,{status:s},r=>[["key",r.key||r.identifier||e],["status",r.status||s]])}async function gk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue assign <id|KEY> --to <name>",3),T(t);let s=x(t.args,"--to")||x(t.args,"--agent"),r=x(t.args,"--to-id")||x(t.args,"--assignee-id"),i=x(t.args,"--assignee-type"),o=t.args.includes("--unassign"),n;if(o)n={assignee_type:null,assignee_id:null};else if(!s&&!r&&k(t.ctx,"\u7F3A\u5C11 --to <name> \u6216 --to-id <uuid>","\u6216\u7528 --unassign \u53D6\u6D88\u6307\u6D3E",3),r)if(i)n={assignee_type:i,assignee_id:r};else{let a=await Yo(t,r);n={assignee_type:a.assignee_type,assignee_id:a.assignee_id}}else{let a=await Ho(t,s);n={assignee_type:a.assignee_type,assignee_id:a.assignee_id}}return en(t,e,n,a=>[["key",a.key||a.identifier||e],["status",a.status||""],["assignee",a.assignee_id?`${a.assignee_type||""}:${a.assignee_id}`:""]])}async function yk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u5173\u952E\u8BCD","\u7528\u6CD5: coder flow issue search <query>",3),T(t);let s=new URLSearchParams;s.set("q",e),s.set("workspace_id",t.http.workspaceId);let r=x(t.args,"--limit");r&&s.set("limit",r),t.args.includes("--include-closed")&&s.set("include_closed","true");let i=await C(t,"GET",`/api/issues/search?${s.toString()}`),o=U(t,i)||{},n=Array.isArray(o)?o:o.issues||[],a=await Qo(t,"issues",n);return se(t.ctx,n.map(c=>Ou(c)),{labels:R,values:Te,linkCol:"key",rowLinks:a,empty:"\u65E0\u5339\u914D issue"}),0}async function _k(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment list <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/comments`),r=U(t,s)||{},i=Array.isArray(r)?r:r.comments||[];return se(t.ctx,i.map(o=>({id:o.id||"",author:o.author_id||o.user_id||"",created_at:o.created_at||"",content:o.content||""})),{labels:R,empty:"\u65E0\u8BC4\u8BBA"}),0}async function wk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue comment add <id|KEY> --content <text>",3),T(t);let s=x(t.args,"--content")||x(t.args,"--body");s||k(t.ctx,"\u7F3A\u5C11 --content",null,3);let r={content:s},i=x(t.args,"--parent");i&&(r.parent_id=i);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/comments`,r),n=U(t,o)||{};return Y(t.ctx,[["id",n.id||""],["content",n.content||s]],null,{labels:R}),0}async function bk(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue comment delete <issue-id> <comment-id>",3),T(t);let i=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/comments/${encodeURIComponent(r)}`);return U(t,i),t.ctx.emit(t.ctx.isJson?{deleted:r}:`\u8BC4\u8BBA ${r} \u5DF2\u5220\u9664`),0}async function kk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber list <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/subscribers`),r=U(t,s)||{},i=Array.isArray(r)?r:r.subscribers||[];return se(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",type:o.type||""})),{labels:R,empty:"\u65E0\u8BA2\u9605\u8005"}),0}async function Sk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber add <id|KEY> [--user <name>]",3),T(t);let s={},r=x(t.args,"--user-id"),i=x(t.args,"--user");r?s.user_id=r:i&&(s.user=i);let o=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/subscribers`,s),n=U(t,o)||{};return t.ctx.emit(t.ctx.isJson?n:`\u5DF2\u8BA2\u9605 issue ${e}`),0}async function xk(t){let s=Ne(t.args,{valueFlags:["--user-id","--user"]})[0];s||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue subscriber remove <id|KEY>",3),T(t);let r={},i=x(t.args,"--user-id"),o=x(t.args,"--user");i?r.user_id=i:o&&(r.user=o);let n=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/subscribers`,r);return U(t,n),t.ctx.emit(t.ctx.isJson?{unsubscribed:!0}:`\u5DF2\u53D6\u6D88\u8BA2\u9605 issue ${s}`),0}async function Ik(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue pull-requests <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/pull-requests`),r=U(t,s)||{},i=Array.isArray(r)?r:r.pull_requests||[];return se(t.ctx,i.map(o=>({id:o.id||"",title:o.title||"",url:o.url||"",status:o.status||""})),{labels:R,empty:"\u65E0\u5173\u8054 PR"}),0}async function Ek(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue run-messages <task-id> [--since <seq>]",3),T(t);let s=new URLSearchParams,r=x(t.args,"--issue"),i=x(t.args,"--since");r&&s.set("issue_id",r),i&&s.set("since",i);let o=s.toString(),n=await C(t,"GET",`/api/tasks/${encodeURIComponent(e)}/messages${o?"?"+o:""}`),a=U(t,n)||{},c=Array.isArray(a)?a:a.messages||[];return t.ctx.isJson?(t.ctx.emit(c),0):(se(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 Ak(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 task-id","\u7528\u6CD5: coder flow issue cancel-task <task-id>",3),T(t);let s={},r=x(t.args,"--issue");r&&(s.issue_id=r);let i=await C(t,"POST",`/api/tasks/${encodeURIComponent(e)}/cancel`,s),o=U(t,i)||{};return Y(t.ctx,[["id",o.id||e],["status",o.status||""]],null,{labels:R}),0}async function Ck(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue runs <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/task-runs`),r=U(t,s)||{},i=Array.isArray(r)?r:r.runs||r.tasks||[];return se(t.ctx,i.map(o=>({id:o.id||"",status:o.status||"",agent:o.agent_id||o.assignee_id||"",created_at:o.created_at||""})),{labels:R,values:Te,empty:"\u65E0\u4EFB\u52A1\u5386\u53F2"}),0}async function Uk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue rerun <id|KEY>",3),T(t);let s=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/rerun`,{}),r=U(t,s)||{};return Y(t.ctx,[["id",r.id||""],["status",r.status||""]],null,{labels:R,values:Te}),0}function Js(t,e){return e.map(s=>[s,t[s]??""])}function Ss(t,e,s,{webPath:r=null,linkCol:i=null}={}){return async o=>{T(o);let n=new URLSearchParams;n.set("workspace_id",o.http.workspaceId);let a=await C(o,"GET",`/api/${t}?${n.toString()}`),c=U(o,a)||{},l=Array.isArray(c)?c:c[e]||[],d=r?await Qo(o,r,l):null;return se(o.ctx,l.map(u=>{let p={};for(let m of s)p[m]=u[m]??"";return p}),{labels:R,values:Te,linkCol:i,rowLinks:d,empty:`\u65E0 ${t}`}),0}}function He(t,e,{webPath:s=null,linkCol:r=null}={}){return async i=>{let o=i.arg;o||k(i.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... get <id>",3),T(i);let n=await C(i,"GET",`/api/${t}/${encodeURIComponent(o)}`),a=U(i,n)||{},c=s?await Xo(i,s,a.id):null;return Y(i.ctx,Js(a,e),null,{labels:R,values:Te,link:c&&r?{key:r,url:c}:null}),0}}function Yr(t){return async e=>{let s=e.arg;if(s||k(e.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... delete <id>",3),T(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 U(e,r),e.ctx.emit(e.ctx.isJson?{deleted:s}:`\u5DF2\u5220\u9664 ${s}`),0}}function at(t,e,s,r,{withWorkspace:i=!1,idArg:o=!1}={}){return async n=>{let a=T(n),c=`/api/${t}`;if(o){let m=n.arg;m||k(n.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id> ...",3),c+=`/${encodeURIComponent(m)}`}let l={};i&&(l.workspace_id=a);for(let[m,y]of s){let _=x(n.args,`--${m}`);_!==void 0&&(l[y]=_)}Object.keys(l).filter(m=>m!=="workspace_id").length||k(n.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5",`\u7ED9\u51FA ${s.map(m=>"--"+m[0]).join(" / ")}`,3);let u=await C(n,e,c,l),p=U(n,u)||{};return Y(n.ctx,Js(p,r),null,{labels:R,values:Te}),0}}function Jo(t,e,s){return async r=>{let i=r.arg;i||k(r.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,`\u7528\u6CD5: coder flow ... ${e} <id>`,3),T(r);let o=await C(r,"POST",`/api/${t}/${encodeURIComponent(i)}/${e}`,{}),n=U(r,o)||{};return Y(r.ctx,Js(n,s),null,{labels:R,values:Te}),0}}function Au(t,e,s,r){return async i=>{let o=i.arg;o||k(i.ctx,`\u7F3A\u5C11 ${t} \u6807\u8BC6`,"\u7528\u6CD5: coder flow ... <verb> <id>",3),T(i);let n=await C(i,"GET",`/api/${t}/${encodeURIComponent(o)}/${e}`),a=U(i,n)||{},c=Array.isArray(a)?a:a[s]||[];return se(i.ctx,c.map(l=>{let d={};for(let u of r)d[u]=l[u]??"";return d}),{labels:R,values:Te,empty:"\uFF08\u7A7A\uFF09"}),0}}async function $k(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue label list <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/labels`),r=U(t,s)||{},i=Array.isArray(r)?r:r.labels||[];return se(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",color:o.color||""})),{labels:R,empty:"\u65E0\u6807\u7B7E"}),0}async function Tk(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label add <issue-id> <label-id>",3),T(t);let i=await C(t,"POST",`/api/issues/${encodeURIComponent(s)}/labels`,{label_id:r}),o=U(t,i)||{},n=Array.isArray(o)?o:o.labels||[];return se(t.ctx,n.map(a=>({id:a.id||"",name:a.name||"",color:a.color||""})),{labels:R,empty:"\u65E0\u6807\u7B7E"}),0}async function vk(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow issue label remove <issue-id> <label-id>",3),T(t);let i=await C(t,"DELETE",`/api/issues/${encodeURIComponent(s)}/labels/${encodeURIComponent(r)}`);return U(t,i),t.ctx.emit(t.ctx.isJson?{removed:r}:`\u6807\u7B7E ${r} \u5DF2\u4ECE issue ${s} \u79FB\u9664`),0}async function Dk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata list <id|KEY>",3),T(t);let s=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),r=U(t,s)||{},i=r.metadata||r||{};if(t.ctx.isJson)return t.ctx.emit(i),0;let o=Object.entries(i).map(([n,a])=>({key:n,value:String(a),type:typeof a}));return se(t.ctx,o,{labels:R,empty:"\u65E0 metadata"}),0}async function Ok(t){let e=t.arg,s=x(t.args,"--key");e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),s||k(t.ctx,"\u7F3A\u5C11 --key","\u7528\u6CD5: coder flow issue metadata get <id|KEY> --key <key>",3),T(t);let r=await C(t,"GET",`/api/issues/${encodeURIComponent(e)}/metadata`),i=U(t,r)||{},o=i.metadata||i||{};s in o||k(t.ctx,`metadata key '${s}' \u4E0D\u5B58\u5728`,null,4);let n=o[s];return t.ctx.isJson?(t.ctx.emit(n),0):(Y(t.ctx,[["key",s],["value",String(n)],["type",typeof n]],null,{labels:R}),0)}async function Lk(t){let e=t.arg,s=x(t.args,"--key"),r=x(t.args,"--value"),i=x(t.args,"--type");e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata set <id|KEY> --key <k> --value <v>",3),s||k(t.ctx,"\u7F3A\u5C11 --key",null,3),r===void 0&&k(t.ctx,"\u7F3A\u5C11 --value",null,3),T(t);let o=r;if(!i||i==="auto")try{o=JSON.parse(r)}catch{o=r}else i==="string"?o=r:i==="number"?(o=Number(r),Number.isNaN(o)&&k(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u6570\u5B57`,null,3)):i==="bool"&&(r!=="true"&&r!=="false"&&k(t.ctx,`'${r}' \u4E0D\u662F\u6709\u6548\u5E03\u5C14\uFF08true/false\uFF09`,null,3),o=r==="true");let n=await C(t,"PUT",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`,{value:o}),a=U(t,n)||{},c=a.metadata||a||{};if(t.ctx.isJson)return t.ctx.emit(c),0;let l=Object.entries(c).map(([d,u])=>({key:d,value:String(u),type:typeof u}));return se(t.ctx,l,{labels:R,empty:"\uFF08\u7A7A\uFF09"}),0}async function Rk(t){let e=t.arg,s=x(t.args,"--key");e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue metadata delete <id|KEY> --key <k>",3),s||k(t.ctx,"\u7F3A\u5C11 --key",null,3),T(t);let r=await C(t,"DELETE",`/api/issues/${encodeURIComponent(e)}/metadata/${encodeURIComponent(s)}`);return U(t,r),t.ctx.emit(t.ctx.isJson?{deleted:s}:`metadata key '${s}' \u5DF2\u5220\u9664`),0}async function Pk(t){let e=t.arg;if(e||k(t.ctx,"\u7F3A\u5C11 issue \u6807\u8BC6","\u7528\u6CD5: coder flow issue delete <id|KEY> [--yes]",3),T(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 U(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`issue ${e} \u5DF2\u5220\u9664`),0}async function Nk(t){T(t);let e=new URLSearchParams({workspace_id:t.http.workspaceId}),s=await C(t,"GET",`/api/labels?${e.toString()}`),r=U(t,s)||{},i=Array.isArray(r)?r:r.labels||[];return se(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",color:o.color||"",created_at:o.created_at||""})),{labels:R,empty:"\u65E0 label"}),0}async function Cu(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label get <id>",3),T(t);let s=await C(t,"GET",`/api/labels/${encodeURIComponent(e)}`),r=U(t,s)||{};return Y(t.ctx,[["id",r.id||""],["name",r.name||""],["color",r.color||""],["created_at",r.created_at||""]],null,{labels:R}),0}async function jk(t){let e=x(t.args,"--name"),s=x(t.args,"--color");e||k(t.ctx,"\u7F3A\u5C11 --name","\u7528\u6CD5: coder flow label create --name <n> --color <#hex>",3),s||k(t.ctx,"\u7F3A\u5C11 --color\uFF08\u683C\u5F0F: #3b82f6\uFF09",null,3),T(t);let r=await C(t,"POST","/api/labels",{name:e,color:s}),i=U(t,r)||{};return Y(t.ctx,[["id",i.id||""],["name",i.name||""],["color",i.color||""]],null,{labels:R}),0}async function Gk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label update <id> [--name <n>] [--color <#>]",3),T(t);let s={},r=x(t.args,"--name"),i=x(t.args,"--color");r!==void 0&&(s.name=r),i!==void 0&&(s.color=i),Object.keys(s).length||k(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--name / --color",3);let o=await C(t,"PUT",`/api/labels/${encodeURIComponent(e)}`,s),n=U(t,o)||{};return Y(t.ctx,[["id",n.id||""],["name",n.name||""],["color",n.color||""]],null,{labels:R}),0}async function qk(t){let e=t.arg;if(e||k(t.ctx,"\u7F3A\u5C11 label id","\u7528\u6CD5: coder flow label delete <id> [--yes]",3),T(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 U(t,s),t.ctx.emit(t.ctx.isJson?{deleted:e}:`label ${e} \u5DF2\u5220\u9664`),0}async function Mk(t){let e=T(t),s=x(t.args,"--name");s||k(t.ctx,"--name \u662F\u5FC5\u586B\u9879",null,3);let r=x(t.args,"--runtime-id");r||k(t.ctx,"--runtime-id \u662F\u5FC5\u586B\u9879",null,3);let i={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 d=x(t.args,`--${c}`);d!==void 0&&(i[l]=d)}let o=await C(t,"POST","/api/agents",i),n=U(t,o)||{},a=x(t.args,"--skill-ids");if(a&&n.id){let c=a.split(",").map(l=>l.trim()).filter(Boolean);if(c.length){let l=await C(t,"PUT",`/api/agents/${encodeURIComponent(n.id)}/skills`,{skill_ids:c});U(t,l)}}return Y(t.ctx,Js(n,["id","name","model","runtime_id"]),null,{labels:R,values:Te}),0}async function Fk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills list <id>",3),T(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/skills`),r=U(t,s)||{},i=Array.isArray(r)?r:r.skills||[];return se(t.ctx,i.map(o=>({id:o.id||"",name:o.name||"",description:o.description||""})),{labels:R,empty:"\u65E0 skill"}),0}async function Bk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills add <agent-id> --skill-ids <id1,id2>",3),T(t);let s=(x(t.args,"--skill-ids")||"").split(",").map(o=>o.trim()).filter(Boolean);s.length||k(t.ctx,"\u7F3A\u5C11 --skill-ids",null,3);let r=await C(t,"POST",`/api/agents/${encodeURIComponent(e)}/skills/add`,{skill_ids:s}),i=U(t,r)||{};return t.ctx.emit(t.ctx.isJson?i:`skill \u5DF2\u6DFB\u52A0\u5230 agent ${e}`),0}async function Wk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent skills set <agent-id> --skill-ids <id1,id2>",3),T(t);let s=x(t.args,"--skill-ids")||"",r=s?s.split(",").map(n=>n.trim()).filter(Boolean):[],i=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/skills`,{skill_ids:r}),o=U(t,i)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684 skill \u5DF2\u66F4\u65B0`),0}async function Zk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6","\u7528\u6CD5: coder flow agent env get <id>",3),T(t);let s=await C(t,"GET",`/api/agents/${encodeURIComponent(e)}/env`),r=U(t,s)||{},i=r.env||r||{};if(t.ctx.isJson)return t.ctx.emit(i),0;let o=Object.entries(i).map(([n,a])=>({key:n,value:String(a)}));return se(t.ctx,o,{labels:R,empty:"\u65E0\u73AF\u5883\u53D8\u91CF"}),0}async function Vk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 agent \u6807\u8BC6",`\u7528\u6CD5: coder flow agent env set <id> --custom-env '{"KEY":"val"}'`,3),T(t);let s=x(t.args,"--custom-env");s||k(t.ctx,"\u7F3A\u5C11 --custom-env\uFF08JSON \u5BF9\u8C61\uFF09",null,3);let r;try{r=JSON.parse(s)}catch{k(t.ctx,"--custom-env \u4E0D\u662F\u6709\u6548 JSON",null,3)}let i=await C(t,"PUT",`/api/agents/${encodeURIComponent(e)}/env`,{env:r}),o=U(t,i)||{};return t.ctx.emit(t.ctx.isJson?o:`agent ${e} \u7684\u73AF\u5883\u53D8\u91CF\u5DF2\u66F4\u65B0`),0}async function Kk(t){let e=t.arg,s=x(t.args,"--set")||x(t.args,"--status");e||k(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project status <id> --set <status>",3),s||k(t.ctx,"\u7F3A\u5C11 --set <status>",null,3),T(t);let r=await C(t,"PUT",`/api/projects/${encodeURIComponent(e)}`,{status:s}),i=U(t,r)||{};return Y(t.ctx,[["id",i.id||""],["title",i.title||""],["status",i.status||""]],null,{labels:R}),0}async function zk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource list <project-id>",3),T(t);let s=await C(t,"GET",`/api/projects/${encodeURIComponent(e)}/resources`),r=U(t,s)||{},i=Array.isArray(r)?r:r.resources||[];return se(t.ctx,i.map(o=>({id:o.id||"",resource_type:o.resource_type||"",label:o.label||""})),{labels:R,empty:"\u65E0\u8D44\u6E90"}),0}async function Jk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 project \u6807\u8BC6","\u7528\u6CD5: coder flow project resource add <project-id> --type <t> --url <u>",3),T(t);let s=x(t.args,"--type")||"github_repo",r=x(t.args,"--url"),i=x(t.args,"--local-path"),o=x(t.args,"--daemon-id"),n=x(t.args,"--label"),a;if(s==="github_repo"){r||k(t.ctx,"github_repo \u9700\u8981 --url",null,3),a={url:r};let u=x(t.args,"--default-branch-hint");u&&(a.default_branch_hint=u)}else s==="local_directory"?((!i||!o)&&k(t.ctx,"local_directory \u9700\u8981 --local-path \u548C --daemon-id",null,3),a={local_path:i,daemon_id:o}):k(t.ctx,`\u672A\u77E5 resource type '${s}'\uFF1B\u652F\u6301: github_repo, local_directory`,null,3);let c={resource_type:s,resource_ref:a};n&&(c.label=n);let l=await C(t,"POST",`/api/projects/${encodeURIComponent(e)}/resources`,c),d=U(t,l)||{};return Y(t.ctx,[["id",d.id||""],["resource_type",d.resource_type||""]],null,{labels:R}),0}async function Hk(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource remove <project-id> <resource-id>",3),T(t);let i=await C(t,"DELETE",`/api/projects/${encodeURIComponent(s)}/resources/${encodeURIComponent(r)}`);return U(t,i),t.ctx.emit(t.ctx.isJson?{removed:r}:`resource ${r} \u5DF2\u4ECE project ${s} \u79FB\u9664`),0}async function Yk(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member list <squad-id>",3),T(t);let s=await C(t,"GET",`/api/squads/${encodeURIComponent(e)}/members`),r=U(t,s)||{},i=Array.isArray(r)?r:r.members||[];return se(t.ctx,i.map(o=>({member_id:o.member_id||"",member_type:o.member_type||"",role:o.role||""})),{labels:R,empty:"\u65E0\u6210\u5458"}),0}async function Xk(t){let e=t.arg,s=x(t.args,"--member-id"),r=x(t.args,"--type")||"agent",i=x(t.args,"--role")||"member";e||k(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||k(t.ctx,"\u7F3A\u5C11 --member-id",null,3),T(t);let o={member_type:r,member_id:s,role:i},n=await C(t,"POST",`/api/squads/${encodeURIComponent(e)}/members`,o),a=U(t,n)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u5DF2\u52A0\u5165 squad ${e}`),0}async function Qk(t){let e=t.arg,s=x(t.args,"--member-id"),r=x(t.args,"--member-type")||"agent",i=x(t.args,"--role");e||k(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member set-role <squad-id> --member-id <id> --role <r>",3),s||k(t.ctx,"\u7F3A\u5C11 --member-id",null,3),i||k(t.ctx,"\u7F3A\u5C11 --role",null,3),T(t);let o={member_type:r,member_id:s,role:i},n=await C(t,"PATCH",`/api/squads/${encodeURIComponent(e)}/members/role`,o),a=U(t,n)||{};return t.ctx.emit(t.ctx.isJson?a:`\u6210\u5458 ${s} \u7684\u89D2\u8272\u5DF2\u66F4\u65B0\u4E3A ${i}`),0}async function e0(t){let e=t.arg,s=x(t.args,"--member-id"),r=x(t.args,"--type")||"agent";e||k(t.ctx,"\u7F3A\u5C11 squad \u6807\u8BC6","\u7528\u6CD5: coder flow squad member remove <squad-id> --member-id <id>",3),s||k(t.ctx,"\u7F3A\u5C11 --member-id",null,3),T(t);let i={member_type:r,member_id:s},o=await C(t,"DELETE",`/api/squads/${encodeURIComponent(e)}/members`,i);return U(t,o),t.ctx.emit(t.ctx.isJson?{removed:s}:`\u6210\u5458 ${s} \u5DF2\u4ECE squad ${e} \u79FB\u9664`),0}async function t0(t){let e=t.arg,s=t.args.find(n=>!n.startsWith("-")&&n!==e)||x(t.args,"--outcome");e||k(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))&&k(t.ctx,"outcome \u5FC5\u987B\u662F action / no_action / failed",null,3),T(t);let r=x(t.args,"--reason")||"",i=await C(t,"POST",`/api/issues/${encodeURIComponent(e)}/squad-evaluated`,{outcome:s,reason:r}),o=U(t,i)||{};return t.ctx.emit(t.ctx.isJson?o:`squad \u8BC4\u4F30\u5DF2\u8BB0\u5F55: ${s}\uFF08issue ${e}\uFF09`),0}async function s0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 autopilot \u6807\u8BC6","\u7528\u6CD5: coder flow autopilot trigger-add <id> --kind schedule --cron '0 9 * * *'",3),T(t);let s=x(t.args,"--kind")||"schedule";s!=="schedule"&&s!=="webhook"&&k(t.ctx,"--kind \u987B\u4E3A schedule \u6216 webhook",null,3);let r={kind:s};if(s==="schedule"){let a=x(t.args,"--cron");a||k(t.ctx,"schedule trigger \u9700\u8981 --cron",null,3),r.cron_expression=a;let c=x(t.args,"--timezone");c&&(r.timezone=c)}let i=x(t.args,"--label");i&&(r.label=i);let o=await C(t,"POST",`/api/autopilots/${encodeURIComponent(e)}/triggers`,r),n=U(t,o)||{};return Y(t.ctx,[["id",n.id||""],["kind",n.kind||""],["label",n.label||""]],null,{labels:R}),0}async function r0(t){let e=Ne(t.args,{valueFlags:["--cron","--timezone","--label"]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-update <autopilot-id> <trigger-id> [--cron ...] [--enabled true|false]",3),T(t);let i={},o=x(t.args,"--cron"),n=x(t.args,"--timezone"),a=x(t.args,"--label"),c=x(t.args,"--enabled");o!==void 0&&(i.cron_expression=o),n!==void 0&&(i.timezone=n),a!==void 0&&(i.label=a),c!==void 0&&(i.enabled=c==="true"),Object.keys(i).length||k(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)}`,i),d=U(t,l)||{};return Y(t.ctx,[["id",d.id||""],["kind",d.kind||""]],null,{labels:R}),0}async function i0(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-delete <autopilot-id> <trigger-id>",3),T(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 i=await C(t,"DELETE",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}`);return U(t,i),t.ctx.emit(t.ctx.isJson?{deleted:r}:`trigger ${r} \u5DF2\u5220\u9664`),0}async function o0(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow autopilot trigger-rotate-url <autopilot-id> <trigger-id> [--yes]",3),T(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 i=await C(t,"POST",`/api/autopilots/${encodeURIComponent(s)}/triggers/${encodeURIComponent(r)}/rotate-webhook-token`,{}),o=U(t,i)||{};return Y(t.ctx,[["id",o.id||""],["webhook_url",o.webhook_url||""]],null,{labels:R}),0}async function n0(t){T(t);let e=x(t.args,"--url");e||k(t.ctx,"\u7F3A\u5C11 --url","\u7528\u6CD5: coder flow skill import --url <url> [--on-conflict fail|overwrite|rename|skip]",3);let s=x(t.args,"--on-conflict")||"fail";["fail","overwrite","rename","skip"].includes(s)||k(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}),i=U(t,r)||{};return Y(t.ctx,[["id",i.id||i.skill?.id||""],["name",i.name||i.skill?.name||""],["status",i.status||"created"]],null,{labels:R}),0}async function a0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11\u641C\u7D22\u8BCD","\u7528\u6CD5: coder flow skill search <query>",3),T(t);let s=await C(t,"GET",`/api/skills/search?q=${encodeURIComponent(e)}`),r=U(t,s)||{},i=Array.isArray(r)?r:r.results||[];return se(t.ctx,i.map(o=>({name:o.name||"",url:o.url||"",source:o.source||"",description:o.description||""})),{labels:R,empty:"\u65E0\u5339\u914D skill"}),0}async function c0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files list <skill-id>",3),T(t);let s=await C(t,"GET",`/api/skills/${encodeURIComponent(e)}/files`),r=U(t,s)||{},i=Array.isArray(r)?r:r.files||[];return se(t.ctx,i.map(o=>({id:o.id||"",path:o.path||"",updated_at:o.updated_at||""})),{labels:R,empty:"\u65E0\u6587\u4EF6"}),0}async function l0(t){let e=t.arg,s=x(t.args,"--path"),r=x(t.args,"--content");e||k(t.ctx,"\u7F3A\u5C11 skill \u6807\u8BC6","\u7528\u6CD5: coder flow skill files upsert <skill-id> --path <p> --content <c>",3),s||k(t.ctx,"\u7F3A\u5C11 --path",null,3),r||k(t.ctx,"\u7F3A\u5C11 --content",null,3),T(t);let i=await C(t,"PUT",`/api/skills/${encodeURIComponent(e)}/files`,{path:s,content:r}),o=U(t,i)||{};return Y(t.ctx,[["id",o.id||""],["path",o.path||s]],null,{labels:R}),0}async function d0(t){let e=Ne(t.args,{valueFlags:[]}),s=e[0],r=e[1];if((!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow skill files delete <skill-id> <file-id>",3),T(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 i=await C(t,"DELETE",`/api/skills/${encodeURIComponent(s)}/files/${encodeURIComponent(r)}`);return U(t,i),t.ctx.emit(t.ctx.isJson?{deleted:r}:`skill file ${r} \u5DF2\u5220\u9664`),0}async function Uu(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime get <id>",3),T(t);let s=new URLSearchParams;s.set("workspace_id",t.http.workspaceId);let r=await C(t,"GET",`/api/runtimes?${s.toString()}`),i=U(t,r)||{},n=(Array.isArray(i)?i:i.runtimes||[]).find(c=>c.id===e||c.name===e);n||k(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 Y(t.ctx,Js(n,a),null,{labels:R}),0}async function u0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime usage <id> [--days <n>]",3),T(t);let s=x(t.args,"--days")||"90",r=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/usage?days=${s}`),i=U(t,r)||{},o=Array.isArray(i)?i:i.usage||[];return se(t.ctx,o.map(n=>({date:n.date||"",provider:n.provider||"",model:n.model||"",input_tokens:String(n.input_tokens??""),output_tokens:String(n.output_tokens??"")})),{labels:R,empty:"\u65E0\u7528\u91CF\u6570\u636E"}),0}async function p0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime activity <id>",3),T(t);let s=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/activity`),r=U(t,s)||{},i=Array.isArray(r)?r:r.activity||[];return se(t.ctx,i.map(o=>({hour:o.hour||"",count:String(o.count??"")})),{labels:R,empty:"\u65E0\u6D3B\u52A8\u6570\u636E"}),0}async function m0(t){let e=t.arg,s=x(t.args,"--target-version");e||k(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime initiate-update <id> --target-version <v>",3),s||k(t.ctx,"\u7F3A\u5C11 --target-version",null,3),T(t);let r=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/update`,{target_version:s}),i=U(t,r)||{};return Y(t.ctx,[["id",i.id||""],["status",i.status||""]],null,{labels:R}),0}async function f0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 runtime \u6807\u8BC6","\u7528\u6CD5: coder flow runtime models <id>",3),T(t);let s=await C(t,"POST",`/api/runtimes/${encodeURIComponent(e)}/models`,{}),i=(U(t,s)||{}).id;i||k(t.ctx,"\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE request id",null,1);let o=9e4,n=2e3,a=Date.now()+o,c;for(;Date.now()<a;){await new Promise(m=>setTimeout(m,n));let d=await C(t,"GET",`/api/runtimes/${encodeURIComponent(e)}/models/${encodeURIComponent(i)}`),u=U(t,d)||{},p=u.status;if(p==="completed"){c=u;break}(p==="failed"||p==="timeout")&&k(t.ctx,`\u83B7\u53D6\u6A21\u578B\u5217\u8868\u5931\u8D25: ${u.error||p}`,null,1)}if(c||k(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):(se(t.ctx,l.map(d=>({id:d.id||"",label:d.label||"",provider:d.provider||"",default:d.default?"\u2713":"",thinking:d.thinking?(d.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 h0(t){let e=await C(t,"GET","/api/workspaces"),s=U(t,e)||{},r=Array.isArray(s)?s:s.workspaces||[];return se(t.ctx,r.map(i=>({id:i.id||"",name:i.name||"",slug:i.slug||""})),{labels:R,empty:"\u65E0 workspace"}),0}async function $u(t){let e=t.arg||t.http&&t.http.workspaceId;e||k(t.ctx,"\u7F3A\u5C11 workspace id/slug","\u7528\u6CD5: coder flow workspace get <id|slug>\uFF08\u6216\u5148\u5207\u56E2\u961F: coder team use <id>\uFF09",3);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=U(t,s)||{};return Y(t.ctx,[["id",r.id||""],["name",r.name||""],["slug",r.slug||""],["description",r.description||""]],null,{labels:R}),0}async function g0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 workspace id/slug","\u7528\u6CD5: coder flow workspace switch <id|slug>",3);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}`),r=U(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 y0(t){let e=t.arg||t.http.workspaceId;T(t);let s={},r=x(t.args,"--name"),i=x(t.args,"--description"),o=x(t.args,"--context"),n=x(t.args,"--issue-prefix");r!==void 0&&(s.name=r),i!==void 0&&(s.description=i),o!==void 0&&(s.context=o),n!==void 0&&(s.issue_prefix=n),Object.keys(s).length||k(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=U(t,a)||{};return Y(t.ctx,[["id",c.id||""],["name",c.name||""],["slug",c.slug||""]],null,{labels:R}),0}async function _0(t){let e=t.arg||t.http&&t.http.workspaceId;e||k(t.ctx,"\u7F3A\u5C11 workspace id","\u7528\u6CD5: coder flow workspace member list <id>\uFF08\u6216\u5148\u5207\u56E2\u961F: coder team use <id>\uFF09",3);let s=await C(t,"GET",`/api/workspaces/${encodeURIComponent(e)}/members`),r=U(t,s)||{},i=Array.isArray(r)?r:r.members||[];return se(t.ctx,i.map(o=>({id:o.id||"",name:o.name||o.username||"",role:o.role||""})),{labels:R,empty:"\u65E0\u6210\u5458"}),0}async function w0(t){T(t);let e=await C(t,"GET",`/api/workspaces/${t.http.workspaceId}/repos`),s=U(t,e)||{},r=Array.isArray(s)?s:s.repos||s.repositories||[];return se(t.ctx,r.map(i=>({url:i.url||"",description:i.description||""})),{labels:R,empty:"\u65E0 repo"}),0}async function b0(t){T(t);let e=Ne(t.args,{valueFlags:["--description"]}),s=x(t.args,"--description");e.length||k(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo add <url> [<url>...]",3);let r=e.map(n=>s&&e.length===1?{url:n,description:s}:{url:n}),i=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos`,{repos:r}),o=U(t,i)||{};return t.ctx.emit(t.ctx.isJson?o:`${e.length} \u4E2A repo \u5DF2\u6DFB\u52A0`),0}async function Tu(t){T(t);let e=Ne(t.args,{valueFlags:[]});e.length||k(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=U(t,s)||{};return t.ctx.emit(t.ctx.isJson?r:`${e.length} \u4E2A repo \u5DF2\u79FB\u9664`),0}async function k0(t){let e=t.arg;e||k(t.ctx,"\u7F3A\u5C11 repo URL","\u7528\u6CD5: coder flow repo checkout <url> [--ref <branch>]",3),T(t);let s={url:e},r=x(t.args,"--ref");r&&(s.ref=r);let i=await C(t,"POST",`/api/workspaces/${t.http.workspaceId}/repos/checkout`,s),o=U(t,i)||{};return Y(t.ctx,[["path",o.path||""],["url",e]],null,{labels:R}),0}async function S0(t){T(t);let e=await C(t,"GET","/api/me"),s=U(t,e)||{};return Y(t.ctx,[["id",s.id||""],["name",s.name||s.display_name||""],["email",s.email||""],["description",s.description||s.profile_description||""]],null,{labels:R}),0}async function x0(t){T(t);let e={},s=x(t.args,"--description");t.args.includes("--clear")?e.profile_description="":s!==void 0?e.profile_description=s:k(t.ctx,"\u672A\u63D0\u4F9B\u4EFB\u4F55\u5B57\u6BB5","--description <text> \u6216 --clear",3);let i=await C(t,"PATCH","/api/me",e),o=U(t,i)||{};return Y(t.ctx,[["id",o.id||""],["description",o.description||o.profile_description||""]],null,{labels:R}),0}async function I0(t){let e=Ne(t.args,{valueFlags:["--url","--ref","--label","--position","--default-branch-hint","--local-path","--daemon-id","--ref-label"]}),s=e[0],r=e[1];(!s||!r)&&k(t.ctx,"\u7F3A\u5C11\u53C2\u6570","\u7528\u6CD5: coder flow project resource update <project-id> <resource-id> [--url <u>] [--label <l>]",3),T(t);let i={},o=x(t.args,"--url"),n=x(t.args,"--ref"),a=x(t.args,"--label"),c=x(t.args,"--position");if(n)try{i.resource_ref=JSON.parse(n)}catch{k(t.ctx,"--ref \u4E0D\u662F\u6709\u6548 JSON",null,3)}else if(o){i.resource_ref={url:o};let u=x(t.args,"--default-branch-hint");u&&(i.resource_ref.default_branch_hint=u)}a!==void 0&&(i.label=a),c!==void 0&&(i.position=Number(c)),Object.keys(i).length||k(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)}`,i),d=U(t,l)||{};return Y(t.ctx,[["id",d.id||""],["resource_type",d.resource_type||""],["label",d.label||""]],null,{labels:R}),0}async function Lu(t){let{spawn:e}=require("child_process"),{checkHealth:s}=Gs(),{daemonLogPath:r,writePid:i}=ms(),{loadConfig:o}=ao(),n=require("fs"),a=require("path"),c=t.args.includes("--foreground"),l=r(),d=10*1024*1024,u=5;function p(){try{if(!n.existsSync(l)||n.statSync(l).size<d)return;let W=`${l}.${u}`;n.existsSync(W)&&n.unlinkSync(W);for(let X=u-1;X>=1;X--){let K=`${l}.${X}`;n.existsSync(K)&&n.renameSync(K,`${l}.${X+1}`)}n.renameSync(l,`${l}.1`)}catch{}}function m(W=new Date){let X=(_t,ye=2)=>String(_t).padStart(ye,"0"),K=-W.getTimezoneOffset(),j=K>=0?"+":"-",me=X(Math.floor(Math.abs(K)/60)),Ae=X(Math.abs(K)%60);return`${W.getFullYear()}-${X(W.getMonth()+1)}-${X(W.getDate())} ${X(W.getHours())}:${X(W.getMinutes())}:${X(W.getSeconds())}.${X(W.getMilliseconds(),3)} ${j}${me}:${Ae}`}if(c){let{DaemonProcess:W}=Iu(),X=U0(t),K=o(X);K.token=t.ctx.getApiKey?t.ctx.getApiKey():null,K.coderBaseUrl=t.ctx.baseUrl||K.coderBaseUrl,n.mkdirSync(a.dirname(l),{recursive:!0}),p();let j=_t=>{p();let ye=`[${m()}] ${_t}
518
+ `;try{n.appendFileSync(l,ye)}catch{}process.stderr.isTTY&&process.stderr.write(ye)};j(`[daemon] pid=${process.pid} node=${process.version} platform=${process.platform}`),j(`[daemon] log=${l} maxSize=${d/1024/1024}MB keep=${u}`),i(process.pid);let me=new AbortController;return process.once("SIGINT",()=>me.abort()),process.once("SIGTERM",()=>me.abort()),await new W(K,j).run(me),0}let y=19514,_=await s(y);(_.status==="running"||_.status==="starting")&&k(t.ctx,`daemon \u5DF2\u5728\u8FD0\u884C (pid ${_.pid})`,"\u7528 coder flow daemon restart \u91CD\u542F",1);let w=process.argv[0],b=process.argv[1],v=["flow","daemon","start","--foreground",...t.args.filter(W=>W!=="--foreground")];n.mkdirSync(a.dirname(l),{recursive:!0}),p();let G=n.openSync(l,"a"),D=e(w,[b,...v],{detached:!0,stdio:["ignore",G,"ignore"],env:Object.assign({},process.env,{CODER_APIKEY:t.ctx.getApiKey?t.ctx.getApiKey():process.env.CODER_APIKEY||""})});n.closeSync(G),D.unref(),i(D.pid);let L=Date.now()+45e3,B=!1;for(;Date.now()<L;)if(await tn(500),(await s(y)).status==="running"){B=!0;break}return B?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 Ru(t){let{checkHealth:e,requestShutdown:s}=Gs(),{removePid:r}=ms(),i=await e();if(i.status!=="running"&&i.status!=="starting")return t.ctx.emit("Daemon \u672A\u8FD0\u884C"),0;try{await s()}catch{if(i.pid)try{process.kill(i.pid,"SIGTERM")}catch{}}let o=Date.now()+15e3;for(;Date.now()<o;){await tn(500);let n=await e();if(n.status!=="running"&&n.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 E0(t){return await Ru(t),await tn(1e3),Lu(t)}async function vu(t){let{checkHealth:e}=Gs(),{daemonLogPath:s}=ms(),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 A0(t){let e=require("fs"),{daemonLogPath:s}=ms(),r=s();e.existsSync(r)||k(t.ctx,`\u65E5\u5FD7\u6587\u4EF6\u4E0D\u5B58\u5728: ${r}`,"\u5148\u542F\u52A8 daemon: coder flow daemon start",4);let i=t.args.includes("-f")||t.args.includes("--follow"),o=t.args.find((l,d)=>(l==="-n"||l==="--lines")&&t.args[d+1])&&t.args[t.args.findIndex(l=>l==="-n"||l==="--lines")+1]||"50",n=parseInt(o,10)||50,c=e.readFileSync(r,"utf8").split(`
519
+ `).filter(l=>l).slice(-n);for(let l of c)t.ctx.emit(l);if(i){let l=e.statSync(r).size,d=setInterval(()=>{let u=e.statSync(r);if(u.size>l){let p=Buffer.alloc(u.size-l),m=e.openSync(r,"r");e.readSync(m,p,0,p.length,l),e.closeSync(m),l=u.size,p.toString().split(`
520
+ `).forEach(y=>{y&&t.ctx.emit(y)})}},500);process.once("SIGINT",()=>clearInterval(d)),await new Promise(()=>{})}return 0}async function C0(t){let e=require("fs"),s=require("path"),r=require("os"),i=t.args.find((d,u)=>d==="--workspaces-root"&&t.args[u+1])&&t.args[t.args.findIndex(d=>d==="--workspaces-root")+1]||process.env.MULTICA_WORKSPACES_ROOT||s.join(r.homedir(),"multica_workspaces");if(!e.existsSync(i))return t.ctx.isJson?(t.ctx.emit({workspaces_root:i,total_bytes:0,tasks:[]}),0):(t.ctx.emit(`Workspaces root: ${i}`),t.ctx.emit("(no task directories)"),0);let o=[],n=0;for(let d of e.readdirSync(i)){if(d===".repos")continue;let u=s.join(i,d);if(e.statSync(u).isDirectory())for(let p of e.readdirSync(u)){let m=s.join(u,p);if(!e.statSync(m).isDirectory())continue;let y=Pu(m);n+=y,o.push({path:`${d}/${p}`,size:y})}}o.sort((d,u)=>u.size-d.size);let a=t.args[t.args.findIndex(d=>d==="--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:i,total_bytes:n,tasks:o}),0;if(t.ctx.emit(`Workspaces root: ${i}`),!l.length)return t.ctx.emit("(no task directories)"),0;for(let d of l)t.ctx.emit(` ${d.path.padEnd(40)} ${Du(d.size)}`);return t.ctx.emit(`
521
+ Total: ${Du(n)} across ${o.length} task(s)`),0}function Pu(t){let e=require("fs"),s=require("path"),r=0;try{for(let i of e.readdirSync(t,{withFileTypes:!0})){if(i.name===".git")continue;let o=s.join(t,i.name);if(i.isDirectory())r+=Pu(o);else if(i.isFile())try{r+=e.statSync(o).size}catch{}}}catch{}return r}function Du(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 U0(t){let{parseDuration:e}=ao(),s={},r=i=>{let o=t.args.indexOf(i);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 tn(t){return new Promise(e=>setTimeout(e,t))}async function $0(t){let e=require("fs"),s=require("path"),r=t.arg;r||k(t.ctx,"\u7F3A\u5C11 attachment id","\u7528\u6CD5: coder flow attachment download <id> [-o <dir>]",3),T(t);let i=await C(t,"GET",`/api/attachments/${encodeURIComponent(r)}`),o=U(t,i)||{},n=o.download_url;n||k(t.ctx,"attachment \u65E0 download_url",null,4);let a=s.basename(o.filename||r),c=x(t.args,"-o")||x(t.args,"--output-dir")||".",l=s.join(c,a),d=await new Promise((p,m)=>{(n.startsWith("https")?require("https"):require("http")).get(n,_=>{let w=[];_.on("data",b=>w.push(b)),_.on("end",()=>p(Buffer.concat(w))),_.on("error",m)}).on("error",m)});e.mkdirSync(c,{recursive:!0}),e.writeFileSync(l,d);let u=s.resolve(l);return t.ctx.emit(t.ctx.isJson?{id:o.id||r,filename:a,path:u}:`\u5DF2\u4E0B\u8F7D: ${u}`),0}Nu.exports={LABELS:R,issue:{list:pk,get:Eu,info:Eu,create:mk,update:fk,delete:Pk,status:hk,assign:gk,search:yk,runs:Ck,rerun:Uk,"pull-requests":Ik,"run-messages":Ek,"cancel-task":Ak,comment:{list:_k,add:wk,delete:bk},label:{list:$k,add:Tk,remove:vk},metadata:{list:Dk,get:Ok,set:Lk,delete:Rk},subscriber:{list:kk,add:Sk,remove:xk}},label:{list:Nk,get:Cu,info:Cu,create:jk,update:Gk,delete:qk},agent:{list:Ss("agents","agents",["id","name","status"],{webPath:"agents",linkCol:"name"}),get:He("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),info:He("agents",["id","name","status","description"],{webPath:"agents",linkCol:"name"}),create:Mk,update:at("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:Jo("agents","archive",["id","name","status"]),restore:Jo("agents","restore",["id","name","status"]),tasks:Au("agents","tasks","tasks",["id","status","created_at"]),skills:{list:Fk,add:Bk,set:Wk},env:{get:Zk,set:Vk}},project:{list:Ss("projects","projects",["id","title","status"],{webPath:"projects",linkCol:"title"}),get:He("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),info:He("projects",["id","title","status","description"],{webPath:"projects",linkCol:"title"}),create:at("projects","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:at("projects","PUT",[["name","title"],["title","title"],["description","description"],["status","status"]],["id","title"],{idArg:!0}),delete:Yr("projects"),status:Kk,resource:{list:zk,add:Jk,update:I0,remove:Hk}},squad:{list:Ss("squads","squads",["id","name"],{webPath:"squads",linkCol:"name"}),get:He("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),info:He("squads",["id","name","description"],{webPath:"squads",linkCol:"name"}),create:at("squads","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:at("squads","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:Yr("squads"),activity:t0,member:{list:Yk,add:Xk,remove:e0,"set-role":Qk}},autopilot:{list:Ss("autopilots","autopilots",["id","title","status"],{webPath:"autopilots",linkCol:"title"}),get:He("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),info:He("autopilots",["id","title","status","description"],{webPath:"autopilots",linkCol:"title"}),create:at("autopilots","POST",[["name","title"],["title","title"],["description","description"]],["id","title"],{withWorkspace:!0}),update:at("autopilots","PUT",[["name","title"],["title","title"],["description","description"]],["id","title"],{idArg:!0}),delete:Yr("autopilots"),runs:Au("autopilots","runs","runs",["id","status","created_at"]),trigger:Jo("autopilots","trigger",["id","status"]),"trigger-add":s0,"trigger-update":r0,"trigger-delete":i0,"trigger-rotate-url":o0},skill:{list:Ss("skills","skills",["id","name"],{webPath:"skills",linkCol:"name"}),get:He("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),info:He("skills",["id","name","description"],{webPath:"skills",linkCol:"name"}),create:at("skills","POST",[["name","name"],["description","description"]],["id","name"],{withWorkspace:!0}),update:at("skills","PUT",[["name","name"],["description","description"]],["id","name"],{idArg:!0}),delete:Yr("skills"),import:n0,search:a0,files:{list:c0,upsert:l0,delete:d0}},runtime:{list:Ss("runtimes","runtimes",["id","name","status"]),get:Uu,info:Uu,models:f0,usage:u0,activity:p0,update:m0},workspace:{list:h0,get:$u,info:$u,switch:g0,update:y0,member:{list:_0}},repo:{list:w0,add:b0,remove:Tu,rm:Tu,checkout:k0},user:{profile:{get:S0,update:x0}},attachment:{download:$0},daemon:{list:vu,start:Lu,stop:Ru,restart:E0,status:vu,logs:A0,"disk-usage":C0}}});var Fu=I((LI,Mu)=>{function Gu(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(`
522
+ `))}function qu(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(`
523
+ `)):Gu(t)}var T0={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"," --assignee <name> Assign to member or agent by name (fuzzy match); alias: --agent"," --assignee-id <uuid> Assign directly by UUID (auto-detects member or agent)"," --assignee-type <type> Force assignee type: member | agent (use with --assignee-id)"],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"," --assignee <name> New assignee by name (member or agent, fuzzy match); alias: --agent"," --assignee-id <uuid> New assignee by UUID (auto-detects member or agent)"," --assignee-type <type> Force assignee type: member | agent (use with --assignee-id)"],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> --to <name>"," coder flow issue assign <id|KEY> --to-id <uuid>"," coder flow issue assign <id|KEY> --unassign","","ARGS"," <id|KEY> Issue UUID or short key","","FLAGS"," --to <name> Assign to member or agent by name (fuzzy match); alias: --agent"," --to-id <uuid> Assign directly by UUID (auto-detects member or agent); alias: --assignee-id"," --assignee-type <type> Force assignee type: member | agent | squad (use with --to-id to skip lookup)"," --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 v0(t,e,s,r){let i=T0[e]||{},o=r&&i[`${s} ${r}`]||i[s];o?t.emit(o.join(`
524
+ `)):qu(t,e)}Mu.exports={showHelp:Gu,showResourceHelp:qu,showVerbHelp:v0}});var Wu=I((PI,Bu)=>{var{MulticaHttp:D0,parseJson:RI}=so(),O0=ju(),{showHelp:L0,showResourceHelp:R0,showVerbHelp:P0}=Fu(),N0=new Set(["--format","--apikey"]);function j0(t){let e=[];for(let s=0;s<t.length;s++){if(N0.has(t[s])){s++;continue}e.push(t[s])}return e}var G0=new Set(["issue","agent","project","label","skill","squad","autopilot","runtime","workspace","repo","user","attachment","daemon"]),q0=new Set(["daemon"]),sn=class{constructor(e){this.ctx=e||null,this.teamService=null}async handle({multicaSubcommand:e,multicaRemainingArgs:s,apikey:r}){let i=this.ctx;if(!e||e==="--help"||e==="-h")return L0(i),0;let o=r;if(!o)return i.fail("\u7F3A\u5C11 API Key","\u5148\u767B\u5F55: coder auth login --apikey <apiKey>"),2;let n=e;if(!G0.has(n))return i.fail(`\u672A\u77E5\u547D\u4EE4: coder flow ${n}`,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let a=j0(s||[]);if(a.length===0||a[0]==="--help"||a[0]==="-h")return R0(i,n),0;if(a.includes("--help")||a.includes("-h")){let b=a[0],v=a[1]&&!a[1].startsWith("-")?a[1]:null;return P0(i,n,b,v),0}let{teamId:c,remaining:l}=this._extractWorkspaceFlag(a),d=q0.has(n)?null:await this._resolveWorkspace(c,o),u=this._resolve(n,l);if(u.error)return i.fail(u.error,"\u67E5\u770B\u5168\u90E8\u547D\u4EE4: coder flow --help"),3;let p=i.getMulticaBaseUrl?i.getMulticaBaseUrl():null,m=new D0(o,p,d),{fn:y,args:_}=u,w={ctx:i,http:m,args:_,arg:_[0]};try{return await y(w)||0}catch(b){return b&&b.handled?b.code||1:(i.fail(b.message||String(b),b.hint),1)}}_resolve(e,s){let r=O0[e];if(!r)return{error:`\u8D44\u6E90 ${e} \u6682\u672A\u5B9E\u73B0`};let i=s[0];if(!i||i.startsWith("-")){let n=r.list||r.get;return n?{fn:n,args:s}:{error:`${e} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let o=r[i];if(!o){let n=Object.keys(r).join(" | ");return{error:`\u672A\u77E5 ${e} \u52A8\u8BCD: ${i}\uFF08\u53EF\u7528: ${n}\uFF09`}}if(typeof o=="object"&&o!==null&&typeof o!="function"){let n=s[1];if(!n||n.startsWith("-")){let c=o.list||o.get;return c?{fn:c,args:s.slice(1)}:{error:`${e} ${i} \u7F3A\u5C11\u9ED8\u8BA4\u52A8\u8BCD`}}let a=o[n];if(!a){let c=Object.keys(o).join(" | ");return{error:`\u672A\u77E5 ${e} ${i} \u52A8\u8BCD: ${n}\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,i=r.getTeam?r.getTeam():null;if(i&&i.id)return i.id;if(this.teamService&&r.getTeamManual&&!r.getTeamManual())try{let o=encodeURIComponent(JSON.stringify({filter_is_joined:!0})),n=await this.teamService.request("GET",`/team?constraints=${o}&page=1&size=200`,s);if(n.status===200){let c=this.teamService.parseJson(n.body)?.data?.items||[];if(c.length)return r.setTeam(c[0].id,c[0].name||""),c[0].id}}catch{}return null}};Bu.exports=sn});var Vu=I((NI,Zu)=>{var M0=Wu(),F0=Tr();function B0(t,e){let s=new M0(e);return s.teamService=new F0(e),t.command("flow [args...]").description("\u64CD\u4F5C Coder Flow\uFF08issue/agent \u7B49\uFF09").allowUnknownOption().helpOption(!1).action(async r=>{let i=r||[],o=await s.handle({multicaSubcommand:i[0],multicaRemainingArgs:i.slice(1),apikey:process.env.MULTICA_TOKEN||e.getApiKey()});process.exitCode=o||0}),s}Zu.exports={register:B0}});var Hu=I((jI,Ju)=>{var W0=dr(),Z0=Tr();function zu(t,e,s){let[r,i]=e;return{[`${t}Subcommand`]:r,[`${t}Arg`]:i,[`${t}RemainingArgs`]:e.slice(1),apikey:s.getApiKey(),coderBaseUrl:s.getCoderBaseUrl()}}function Ku(t,e,s){t.command(`${s.name} [args...]`).description(s.describe).allowUnknownOption().helpOption(!1).action(async r=>{let i=await s.service.handle(zu(s.prefix,r||[],e));process.exitCode=i||0})}function V0(t,e){let s=new Z0(e),r=new W0(e);return r.teamService=s,Ku(t,e,{name:"team",describe:"\u7BA1\u7406\u56E2\u961F\u4E0E\u6210\u5458\uFF08\u9762\u5411 AI\uFF09",prefix:"team",service:s}),Ku(t,e,{name:"skills",describe:"\u7BA1\u7406 Claude Code skills",prefix:"skills",service:r}),{teamService:s,skillsService:r}}Ju.exports={register:V0,buildHandleArgs:zu}});var Xu=I((GI,Yu)=>{"use strict";var{EventEmitter:K0}=require("events"),z0=require("crypto"),Xr=class{constructor(e,s){this.streamId=e,this.sessionId=s,this._emitter=new K0,this._emitter.setMaxListeners(20),this._events=[],this._counter=0,this._done=!1,this.aborted=!1}publish(e,s){this._counter+=1;let r={id:this._counter,event:e,data:s};this._events.push(r),this._events.length>5e3&&this._events.shift(),this._emitter.emit("event",r),(e==="done"||e==="agent-error")&&(this._done=!0,this._emitter.emit("end"))}abort(){this.aborted=!0,this._emitter.emit("abort")}subscribe(e=0){let s=this;return{[Symbol.asyncIterator](){let r=[],i=null,o=!1;for(let c of s._events)c.id>e&&r.push(c);s._done&&(o=!0);function n(c){if(i){let l=i;i=null,l({value:c,done:!1})}else r.push(c)}function a(){if(o=!0,i){let c=i;i=null,c({value:void 0,done:!0})}}return s._emitter.on("event",n),s._emitter.on("end",a),{next(){return r.length>0?Promise.resolve({value:r.shift(),done:!1}):o?Promise.resolve({value:void 0,done:!0}):new Promise(c=>{i=c})},return(){return s._emitter.off("event",n),s._emitter.off("end",a),Promise.resolve({value:void 0,done:!0})}}}}}},rn=class{constructor(){this._streams=new Map}create(e){let s=z0.randomUUID(),r=new Xr(s,e);return this._streams.set(s,r),setTimeout(()=>this._streams.delete(s),1800*1e3),r}get(e){return this._streams.get(e)||null}delete(e){this._streams.delete(e)}};Yu.exports={StreamManager:rn,StreamHandle:Xr}});var ei=I((qI,ep)=>{"use strict";var on=process.env.CODER_DEBUG==="true"||process.env.CODER_DEBUG==="True"||process.env.CODER_DEBUG==="1",Be="\x1B[0m",yt="\x1B[90m",J0="\x1B[36m",H0="\x1B[33m",Y0="\x1B[31m",X0="\x1B[32m",Qu="\x1B[1m",Q0={DEBUG:yt,INFO:J0,WARN:H0,ERROR:Y0};function eS(){return new Date().toISOString().slice(11,23)}function Qr(t,e,s,r){let i=Q0[t]||Be,o=e?`${yt}[${e}]${Be} `:"",n=`${yt}[coder-server]${Be} ${i}${t.padEnd(5)}${Be} ${eS()} ${o}${s}`;if(r!==void 0){let a=typeof r=="string"?r:JSON.stringify(r,null,0);n+=` ${yt}${a}${Be}`}return n}var tS={debug(t,e,s){on&&process.stderr.write(Qr("DEBUG",t,e,s)+`
525
+ `)},info(t,e,s){process.stderr.write(Qr("INFO ",t,e,s)+`
526
+ `)},warn(t,e,s){process.stderr.write(Qr("WARN ",t,e,s)+`
527
+ `)},error(t,e,s){process.stderr.write(Qr("ERROR",t,e,s)+`
522
528
  `)},banner(t){process.stderr.write(`
523
- ${Xd}${yx}[coder-server]${Ge} ${Xd}\u542F\u52A8${Ge} http://127.0.0.1:${t}
524
- ${gt} POST /rpc JSON-RPC 2.0${Ge}
525
- ${gt} GET /rpc/stream/:id SSE \u6D41${Ge}
526
- ${gt} GET /health \u5065\u5EB7\u68C0\u67E5${Ge}
527
- ${gt} CODER_DEBUG=${ao?"true (\u8BE6\u7EC6\u65E5\u5FD7\u5F00\u542F)":"false (\u8BBE\u4E3A true \u5F00\u542F\u8BE6\u7EC6\u65E5\u5FD7)"}${Ge}
529
+ ${Qu}${X0}[coder-server]${Be} ${Qu}\u542F\u52A8${Be} http://127.0.0.1:${t}
530
+ ${yt} POST /rpc JSON-RPC 2.0${Be}
531
+ ${yt} GET /rpc/stream/:id SSE \u6D41${Be}
532
+ ${yt} GET /health \u5065\u5EB7\u68C0\u67E5${Be}
533
+ ${yt} CODER_DEBUG=${on?"true (\u8BE6\u7EC6\u65E5\u5FD7\u5F00\u542F)":"false (\u8BBE\u4E3A true \u5F00\u542F\u8BE6\u7EC6\u65E5\u5FD7)"}${Be}
528
534
 
529
- `)}};Qd.exports={log:bx,DEBUG:ao}});var ip=x((cC,np)=>{"use strict";var{spawn:kx}=require("child_process"),ep=require("path"),tp=require("fs"),{log:ae,DEBUG:Ys}=Yr(),ce="bridge";function rp(t,e,s,r){let n=t||xx();if(!n)return null;let i=["claude","-p","--input-format","stream-json","--output-format","stream-json","--verbose","--include-partial-messages","--permission-mode",s||"acceptEdits"];return r&&i.push("--resume",r),e&&i.push("--model",e),{cmd:n,args:i}}function xx(){let t=ep.resolve(__dirname,"../../../dist/coder.js");if(tp.existsSync(t))return t;let e=ep.resolve(__dirname,"../../coder.js");if(tp.existsSync(e))return e;try{let{execFileSync:s}=require("child_process"),r=s("which",["coder"],{encoding:"utf8"}).trim();if(r)return r}catch{}return null}async function Sx({handle:t,text:e,model:s,workspace:r,permissionMode:n,coderPath:i,env:o={},resumeCliSessionId:a,onCliSessionId:c}){let l=rp(i,s,n,a);if(!l){ae.error(ce,"\u627E\u4E0D\u5230 coder \u53EF\u6267\u884C\u6587\u4EF6",{coderPath:i}),t.publish("agent-error",{error_message:"\u627E\u4E0D\u5230 coder \u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4 coder \u5DF2\u5B89\u88C5\u6216\u4F20\u5165 coderPath\u3002"});return}let{cmd:u,args:d}=l,p=r||process.cwd(),f=u,g=d;u.endsWith(".js")&&(f=process.execPath,g=[u,...d]);let _={...process.env,...o};ae.info(ce,`spawn [${t.streamId.slice(0,8)}]`,`${f} ${g.slice(0,4).join(" ")} \u2026 model=${s||"default"} cwd=${p}`),Ys&&ae.debug(ce,"spawn env overrides",Object.fromEntries(Object.entries(o).map(([K,P])=>[K,K.toLowerCase().includes("key")?P.slice(0,6)+"\u2026":P])));let y=kx(f,g,{cwd:p,env:_,stdio:["pipe","pipe","pipe"]});ae.info(ce,`pid=${y.pid} [${t.streamId.slice(0,8)}]`,"\u5B50\u8FDB\u7A0B\u5DF2\u542F\u52A8"),t.publish("step-start",{step:1,session_id:t.sessionId});let w=JSON.stringify({type:"user",message:{role:"user",content:e}});ae.debug(ce,`stdin [${t.streamId.slice(0,8)}]`,w.slice(0,120)),y.stdin.write(w+`
530
- `),y.stdin.end();let T=0,N=!1,v=0,O="",G={};y.stderr.on("data",K=>{if(O+=K.toString(),Ys){let P=O.split(`
531
- `);O=P.pop();for(let pe of P)pe.trim()&&ae.debug(ce,`stderr [${t.streamId.slice(0,8)}]`,pe)}});let B="",H={toolParts:G,accText:{v:""},accReasoning:{v:""},stepEmitted:{v:!1},onCliSessionId:c};y.stdout.on("data",K=>{B+=K.toString();let P=B.split(`
532
- `);B=P.pop();for(let pe of P){let Ee=pe.trim();Ee&&(v++,Ys&&ae.debug(ce,`frame [${t.streamId.slice(0,8)}] #${v}`,Ee.slice(0,200)),sp(Ee,t,H,t.streamId))}}),await new Promise(K=>{t._emitter.once("abort",()=>{ae.info(ce,`abort [${t.streamId.slice(0,8)}]`,"\u6536\u5230 abort \u4FE1\u53F7\uFF0Ckill \u5B50\u8FDB\u7A0B"),y.kill("SIGTERM")}),y.on("close",P=>{B.trim()&&sp(B.trim(),t,H,t.streamId),O.trim()&&Ys&&ae.debug(ce,`stderr [${t.streamId.slice(0,8)}]`,O.trim()),ae.info(ce,`exit [${t.streamId.slice(0,8)}]`,`exit_code=${P} frames=${v} text_chars=${H.accText.v.length}`),P!==0&&O&&ae.warn(ce,`stderr [${t.streamId.slice(0,8)}]`,O.slice(0,500)),K()}),y.on("error",P=>{ae.error(ce,`spawn error [${t.streamId.slice(0,8)}]`,P.message),t.publish("agent-error",{error_message:`\u542F\u52A8 coder claude \u5931\u8D25: ${P.message}`}),K()})}),t._done||(ae.warn(ce,`[${t.streamId.slice(0,8)}]`,"stdout \u5173\u95ED\u4F46\u672A\u6536\u5230 result \u5E27\uFF0C\u8865\u53D1 done"),t.publish("step-finish",{reason:"stop",tokens:{},cost:0}),t.publish("done",{session_id:t.sessionId,finish_reason:"stop"}))}function sp(t,e,s,r){let n;try{n=JSON.parse(t)}catch{ae.debug(ce,`non-json [${r.slice(0,8)}]`,t.slice(0,100));return}let i=n.type,o=r.slice(0,8);if(i==="system"){n.subtype==="init"&&n.session_id&&(ae.info(ce,`system [${o}]`,`cli_session_id=${n.session_id}`),typeof s.onCliSessionId=="function"&&(s.onCliSessionId(n.session_id),s.onCliSessionId=null));return}if(i==="stream_event"){let a=n.event||{};if(a.type==="content_block_delta"){let c=a.delta||{};c.type==="text_delta"&&c.text?(s.accText.v+=c.text,ae.debug(ce,`text [${o}]`,`+${c.text.length}chars total=${s.accText.v.length}`),e.publish("text-delta",{session_id:e.sessionId,text:c.text})):c.type==="thinking_delta"&&c.thinking&&(s.accReasoning.v+=c.thinking,ae.debug(ce,`think [${o}]`,`+${c.thinking.length}chars`),e.publish("reasoning-delta",{text:c.thinking}))}return}if(i==="assistant"){let a=(n.message||{}).content||[];for(let c of a)if(c&&c.type==="tool_use"){let l=(c.name||"tool").toLowerCase();s.toolParts[c.id]={name:l,input:c.input||{}},ae.info(ce,`tool\u25B6 [${o}]`,`${l} call_id=${c.id}`),Ys&&ae.debug(ce,`tool\u25B6in [${o}]`,JSON.stringify(c.input||{}).slice(0,200)),e.publish("tool-call",{tool:l,call_id:c.id,arguments:c.input||{},session_id:e.sessionId})}return}if(i==="user"){let a=(n.message||{}).content||[];if(Array.isArray(a)){for(let c of a)if(c&&c.type==="tool_result"){let l=c.content,u=typeof l=="string"?l:JSON.stringify(l),d=s.toolParts[c.tool_use_id]||{},p=!!c.is_error;ae.info(ce,`tool\u25C0 [${o}]`,`${d.name||"tool"} is_error=${p} out=${u.slice(0,80)}`),p?e.publish("tool-error",{call_id:c.tool_use_id,tool:d.name||"tool",error:u}):e.publish("tool-result",{call_id:c.tool_use_id,tool:d.name||"tool",output:u.slice(0,500)})}}return}if(i==="result"){if(s.stepEmitted.v)return;s.stepEmitted.v=!0;let a=n.usage||{},c={input:a.input_tokens||0,output:a.output_tokens||0,cache_read:a.cache_read_input_tokens||0,cache_write:a.cache_creation_input_tokens||0},l=n.total_cost_usd||0;ae.info(ce,`result [${o}]`,`tokens=${JSON.stringify(c)} cost=$${l.toFixed(6)}`),e.publish("step-finish",{reason:"stop",tokens:c,cost:l}),e.publish("done",{session_id:e.sessionId,finish_reason:"stop"});return}ae.debug(ce,`unknown [${o}]`,`type=${i}`)}np.exports={runClaude:Sx,buildArgv:rp}});var dp=x((lC,up)=>{"use strict";var xe=require("fs"),at=require("path"),Ix=require("os"),{log:zt}=Yr(),Jt="storage",op=Ix.homedir(),Cx=at.join(op,".claude.json"),Xs=at.join(op,".claude","projects");function ap(t){return t.replace(/\//g,"-")}function cp(t){return t.replace(/-/g,"/")}function Ex(){try{return JSON.parse(xe.readFileSync(Cx,"utf8"))}catch(t){return zt.debug(Jt,"readClaudeJson",`\u4E0D\u5B58\u5728\u6216\u89E3\u6790\u5931\u8D25: ${t.message}`),{}}}function lp(){let t=Ex();return Object.keys(t.projects||{})}function Ht(t){return at.join(Xs,ap(t))}function $x(t,e){let s;try{s=xe.readFileSync(t,"utf8")}catch{return null}let r=s.split(`
533
- `).filter(Boolean);if(r.length===0)return null;let n=r.slice(0,20),i=r.slice(-30),o=null,a=null,c=null,l=null;for(let u of n)try{let d=JSON.parse(u);if(!a&&d.timestamp&&(a=d.timestamp),!o&&d.cwd&&(o=d.cwd),o&&a)break}catch{}for(let u of[...i].reverse())try{let d=JSON.parse(u);!c&&d.timestamp&&(c=d.timestamp),!l&&d.type==="last-prompt"&&d.lastPrompt&&(l=d.lastPrompt)}catch{}if(!l)for(let u of r)try{let d=JSON.parse(u);if(d.type==="user"&&d.message){let p=d.message.content;if(typeof p=="string"&&p.trim()){l=p.trim().slice(0,100);break}if(Array.isArray(p)){let f=p.find(g=>g.type==="text");if(f?.text){l=f.text.trim().slice(0,100);break}}}}catch{}return{id:e,project_id:null,parent_id:null,slug:null,directory:o||null,title:l||null,version:0,summary_additions:0,summary_deletions:0,summary_files:0,summary_diffs:[],is_pinned:!1,permission:{},model_id:null,provider_id:null,time_created:a||new Date(0).toISOString(),time_updated:c||a||new Date(0).toISOString(),time_compacting:null,time_archived:null}}function Ax(t,{limit:e=50,offset:s=0}={}){let r=Ht(t);if(!xe.existsSync(r))return zt.debug(Jt,"listSessions",`\u76EE\u5F55\u4E0D\u5B58\u5728: ${r}`),[];let i=xe.readdirSync(r).filter(o=>o.endsWith(".jsonl")).map(o=>({sessionId:o.replace(/\.jsonl$/,""),filePath:at.join(r,o)})).map(({sessionId:o,filePath:a})=>$x(a,o)).filter(Boolean);return i.sort((o,a)=>a.time_updated>o.time_updated?1:-1),zt.debug(Jt,"listSessions",`${t}: ${i.length} sessions`),i.slice(s,s+e)}function Tx(){return lp().map(e=>{let s=Ht(e),r=0;try{r=xe.readdirSync(s).filter(n=>n.endsWith(".jsonl")).length}catch{}return{path:e,name:at.basename(e),session_count:r}}).filter(e=>e.session_count>0||xe.existsSync(Ht(e.path)))}function vx(t){let e;try{e=xe.readFileSync(t,"utf8")}catch{return[]}let s=e.split(`
534
- `).filter(Boolean),r=[];for(let c of s)try{r.push(JSON.parse(c))}catch{}let n=new Set,i=r.filter(c=>c.uuid?n.has(c.uuid)?!1:(n.add(c.uuid),!0):!0),o=[],a=0;for(let c of i){if(c.type!=="user"&&c.type!=="assistant")continue;let l=c.type,u=c.uuid||`msg-${a++}`,d=c.sessionId||"",p=c.timestamp||new Date(0).toISOString(),f=[],g=c.message?.content;if(typeof g=="string")g.trim()&&f.push({id:`${u}-p0`,message_id:u,session_id:d,time_created:p,data:{type:"text",text:g}});else if(Array.isArray(g)){let y=0;for(let w of g){if(!w||typeof w!="object")continue;let T=null;if(w.type==="text"&&w.text)T={type:"text",text:w.text};else if(w.type==="thinking"&&w.thinking)T={type:"reasoning",text:w.thinking};else if(w.type==="tool_use")T={type:"tool",tool:w.name||"tool",call_id:w.id||`call-${y}`,state:{status:"completed",input:w.input||{},output:null,metadata:null,title:null,time_start:null,time_end:null,time_compacted:null}};else if(w.type==="tool_result"){let N=w.content,v=typeof N=="string"?N:JSON.stringify(N),O=[...o].reverse().flatMap(G=>G.parts).find(G=>G.data.type==="tool"&&G.data.call_id===w.tool_use_id);O&&(O.data.state.output=v,O.data.state.status=w.is_error?"error":"completed");continue}T&&f.push({id:`${u}-p${y++}`,message_id:u,session_id:d,time_created:p,data:T})}}if(f.length===0&&l==="user")continue;let _=l==="user"?{role:"user"}:{role:"assistant",model_id:null,provider_id:"cli-claude"};if(l==="assistant"&&f.length>0&&!f.some(w=>w.data.type==="step-finish")){let w=f.some(T=>T.data.type==="tool");f.push({id:`${u}-sf`,message_id:u,session_id:d,time_created:p,data:{type:"step-finish",reason:w?"tool_use":"stop",tokens:{},cost:0}})}o.push({id:u,session_id:d,time_created:p,data:_,parts:f})}return o}function Ux(t,e,{limit:s=50,offset:r=-1}={}){let n=Ht(e),i=at.join(n,`${t}.jsonl`);if(!xe.existsSync(i))return zt.warn(Jt,"readSession",`\u6587\u4EF6\u4E0D\u5B58\u5728: ${i}`),{total:0,offset:0,messages:[]};let o=vx(i),a=o.length,c;if(r===-1){let l=Math.max(0,a-s);return c=o.slice(l),{total:a,offset:l,messages:c}}return c=o.slice(r,r===-1?void 0:r+s),{total:a,offset:Math.max(0,r),messages:c}}function Ox(t,e){let s=at.join(Ht(e),`${t}.jsonl`);return xe.existsSync(s)?(xe.unlinkSync(s),zt.info(Jt,"deleteSession",`\u5DF2\u5220\u9664 ${s}`),!0):(zt.warn(Jt,"deleteSession",`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`),!1)}function Dx(t,e,s){let r=at.join(Ht(s),`${t}.jsonl`);if(!xe.existsSync(r))return!1;let n=JSON.stringify({type:"last-prompt",lastPrompt:e,leafUuid:null,sessionId:t});return xe.appendFileSync(r,n+`
535
- `,"utf8"),zt.info(Jt,"renameSession",`${t} \u2192 "${e}"`),!0}function Rx(t){if(!xe.existsSync(Xs))return null;for(let e of xe.readdirSync(Xs)){let s=at.join(Xs,e,`${t}.jsonl`);if(xe.existsSync(s))return cp(e)}return null}up.exports={pathToSlug:ap,slugToPath:cp,listProjectPaths:lp,listProjects:Tx,listSessions:Ax,readSession:Ux,deleteSession:Ox,renameSession:Dx,findProjectBySession:Rx,PROJECTS_DIR:Xs,projectDir:Ht}});var gp=x((uC,hp)=>{"use strict";var Lx=require("http"),{StreamManager:Px}=Yd(),{runClaude:Nx}=ip(),{log:Y}=Yr(),Fe=dp(),te="http",fp=8100,pp=-32700,jx=-32600,qx=-32601,co=-32602,Mx=-32603,Xr=[{id:"claude-opus-4-8",name:"Claude Opus 4.8 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!0,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!0,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!1,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}}];function Ss(t,e,s,r){let n={code:e,message:s};return r!==void 0&&(n.data=r),JSON.stringify({jsonrpc:"2.0",id:t??null,error:n})}function Gx(t,e){return JSON.stringify({jsonrpc:"2.0",id:t,result:e})}function lo(t){return new Promise((e,s)=>{let r="";t.on("data",n=>{r+=n}),t.on("end",()=>e(r)),t.on("error",s)})}function Fx(t){return`id: ${t.id}
535
+ `)}};ep.exports={log:tS,DEBUG:on}});var np=I((MI,op)=>{"use strict";var{spawn:sS}=require("child_process"),tp=require("path"),sp=require("fs"),{log:ce,DEBUG:Hs}=ei(),le="bridge";function ip(t,e,s,r){let i=t||rS();if(!i)return null;let o=["claude","-p","--input-format","stream-json","--output-format","stream-json","--verbose","--include-partial-messages","--permission-mode",s||"acceptEdits"];return r&&o.push("--resume",r),e&&o.push("--model",e),{cmd:i,args:o}}function rS(){let t=tp.resolve(__dirname,"../../../dist/coder.js");if(sp.existsSync(t))return t;let e=tp.resolve(__dirname,"../../coder.js");if(sp.existsSync(e))return e;try{let{execFileSync:s}=require("child_process"),r=s("which",["coder"],{encoding:"utf8"}).trim();if(r)return r}catch{}return null}async function iS({handle:t,text:e,model:s,workspace:r,permissionMode:i,coderPath:o,env:n={},resumeCliSessionId:a,onCliSessionId:c}){let l=ip(o,s,i,a);if(!l){ce.error(le,"\u627E\u4E0D\u5230 coder \u53EF\u6267\u884C\u6587\u4EF6",{coderPath:o}),t.publish("agent-error",{error_message:"\u627E\u4E0D\u5230 coder \u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4 coder \u5DF2\u5B89\u88C5\u6216\u4F20\u5165 coderPath\u3002"});return}let{cmd:d,args:u}=l,p=r||process.cwd(),m=d,y=u;d.endsWith(".js")&&(m=process.execPath,y=[d,...u]);let _={...process.env,...n};ce.info(le,`spawn [${t.streamId.slice(0,8)}]`,`${m} ${y.slice(0,4).join(" ")} \u2026 model=${s||"default"} cwd=${p}`),Hs&&ce.debug(le,"spawn env overrides",Object.fromEntries(Object.entries(n).map(([K,j])=>[K,K.toLowerCase().includes("key")?j.slice(0,6)+"\u2026":j])));let w=sS(m,y,{cwd:p,env:_,stdio:["pipe","pipe","pipe"]});ce.info(le,`pid=${w.pid} [${t.streamId.slice(0,8)}]`,"\u5B50\u8FDB\u7A0B\u5DF2\u542F\u52A8"),t.publish("step-start",{step:1,session_id:t.sessionId});let b=JSON.stringify({type:"user",message:{role:"user",content:e}});ce.debug(le,`stdin [${t.streamId.slice(0,8)}]`,b.slice(0,120)),w.stdin.write(b+`
536
+ `),w.stdin.end();let v=0,G=!1,D=0,L="",B={};w.stderr.on("data",K=>{if(L+=K.toString(),Hs){let j=L.split(`
537
+ `);L=j.pop();for(let me of j)me.trim()&&ce.debug(le,`stderr [${t.streamId.slice(0,8)}]`,me)}});let W="",X={toolParts:B,accText:{v:""},accReasoning:{v:""},stepEmitted:{v:!1},onCliSessionId:c};w.stdout.on("data",K=>{W+=K.toString();let j=W.split(`
538
+ `);W=j.pop();for(let me of j){let Ae=me.trim();Ae&&(D++,Hs&&ce.debug(le,`frame [${t.streamId.slice(0,8)}] #${D}`,Ae.slice(0,200)),rp(Ae,t,X,t.streamId))}}),await new Promise(K=>{t._emitter.once("abort",()=>{ce.info(le,`abort [${t.streamId.slice(0,8)}]`,"\u6536\u5230 abort \u4FE1\u53F7\uFF0Ckill \u5B50\u8FDB\u7A0B"),w.kill("SIGTERM")}),w.on("close",j=>{W.trim()&&rp(W.trim(),t,X,t.streamId),L.trim()&&Hs&&ce.debug(le,`stderr [${t.streamId.slice(0,8)}]`,L.trim()),ce.info(le,`exit [${t.streamId.slice(0,8)}]`,`exit_code=${j} frames=${D} text_chars=${X.accText.v.length}`),j!==0&&L&&ce.warn(le,`stderr [${t.streamId.slice(0,8)}]`,L.slice(0,500)),K()}),w.on("error",j=>{ce.error(le,`spawn error [${t.streamId.slice(0,8)}]`,j.message),t.publish("agent-error",{error_message:`\u542F\u52A8 coder claude \u5931\u8D25: ${j.message}`}),K()})}),t._done||(ce.warn(le,`[${t.streamId.slice(0,8)}]`,"stdout \u5173\u95ED\u4F46\u672A\u6536\u5230 result \u5E27\uFF0C\u8865\u53D1 done"),t.publish("step-finish",{reason:"stop",tokens:{},cost:0}),t.publish("done",{session_id:t.sessionId,finish_reason:"stop"}))}function rp(t,e,s,r){let i;try{i=JSON.parse(t)}catch{ce.debug(le,`non-json [${r.slice(0,8)}]`,t.slice(0,100));return}let o=i.type,n=r.slice(0,8);if(o==="system"){i.subtype==="init"&&i.session_id&&(ce.info(le,`system [${n}]`,`cli_session_id=${i.session_id}`),typeof s.onCliSessionId=="function"&&(s.onCliSessionId(i.session_id),s.onCliSessionId=null));return}if(o==="stream_event"){let a=i.event||{};if(a.type==="content_block_delta"){let c=a.delta||{};c.type==="text_delta"&&c.text?(s.accText.v+=c.text,ce.debug(le,`text [${n}]`,`+${c.text.length}chars total=${s.accText.v.length}`),e.publish("text-delta",{session_id:e.sessionId,text:c.text})):c.type==="thinking_delta"&&c.thinking&&(s.accReasoning.v+=c.thinking,ce.debug(le,`think [${n}]`,`+${c.thinking.length}chars`),e.publish("reasoning-delta",{text:c.thinking}))}return}if(o==="assistant"){let a=(i.message||{}).content||[];for(let c of a)if(c&&c.type==="tool_use"){let l=(c.name||"tool").toLowerCase();s.toolParts[c.id]={name:l,input:c.input||{}},ce.info(le,`tool\u25B6 [${n}]`,`${l} call_id=${c.id}`),Hs&&ce.debug(le,`tool\u25B6in [${n}]`,JSON.stringify(c.input||{}).slice(0,200)),e.publish("tool-call",{tool:l,call_id:c.id,arguments:c.input||{},session_id:e.sessionId})}return}if(o==="user"){let a=(i.message||{}).content||[];if(Array.isArray(a)){for(let c of a)if(c&&c.type==="tool_result"){let l=c.content,d=typeof l=="string"?l:JSON.stringify(l),u=s.toolParts[c.tool_use_id]||{},p=!!c.is_error;ce.info(le,`tool\u25C0 [${n}]`,`${u.name||"tool"} is_error=${p} out=${d.slice(0,80)}`),p?e.publish("tool-error",{call_id:c.tool_use_id,tool:u.name||"tool",error:d}):e.publish("tool-result",{call_id:c.tool_use_id,tool:u.name||"tool",output:d.slice(0,500)})}}return}if(o==="result"){if(s.stepEmitted.v)return;s.stepEmitted.v=!0;let a=i.usage||{},c={input:a.input_tokens||0,output:a.output_tokens||0,cache_read:a.cache_read_input_tokens||0,cache_write:a.cache_creation_input_tokens||0},l=i.total_cost_usd||0;ce.info(le,`result [${n}]`,`tokens=${JSON.stringify(c)} cost=$${l.toFixed(6)}`),e.publish("step-finish",{reason:"stop",tokens:c,cost:l}),e.publish("done",{session_id:e.sessionId,finish_reason:"stop"});return}ce.debug(le,`unknown [${n}]`,`type=${o}`)}op.exports={runClaude:iS,buildArgv:ip}});var pp=I((FI,up)=>{"use strict";var Se=require("fs"),ct=require("path"),oS=require("os"),{log:zt}=ei(),Jt="storage",ap=oS.homedir(),nS=ct.join(ap,".claude.json"),Ys=ct.join(ap,".claude","projects");function cp(t){return t.replace(/\//g,"-")}function lp(t){return t.replace(/-/g,"/")}function aS(){try{return JSON.parse(Se.readFileSync(nS,"utf8"))}catch(t){return zt.debug(Jt,"readClaudeJson",`\u4E0D\u5B58\u5728\u6216\u89E3\u6790\u5931\u8D25: ${t.message}`),{}}}function dp(){let t=aS();return Object.keys(t.projects||{})}function Ht(t){return ct.join(Ys,cp(t))}function cS(t,e){let s;try{s=Se.readFileSync(t,"utf8")}catch{return null}let r=s.split(`
539
+ `).filter(Boolean);if(r.length===0)return null;let i=r.slice(0,20),o=r.slice(-30),n=null,a=null,c=null,l=null;for(let d of i)try{let u=JSON.parse(d);if(!a&&u.timestamp&&(a=u.timestamp),!n&&u.cwd&&(n=u.cwd),n&&a)break}catch{}for(let d of[...o].reverse())try{let u=JSON.parse(d);!c&&u.timestamp&&(c=u.timestamp),!l&&u.type==="last-prompt"&&u.lastPrompt&&(l=u.lastPrompt)}catch{}if(!l)for(let d of r)try{let u=JSON.parse(d);if(u.type==="user"&&u.message){let p=u.message.content;if(typeof p=="string"&&p.trim()){l=p.trim().slice(0,100);break}if(Array.isArray(p)){let m=p.find(y=>y.type==="text");if(m?.text){l=m.text.trim().slice(0,100);break}}}}catch{}return{id:e,project_id:null,parent_id:null,slug:null,directory:n||null,title:l||null,version:0,summary_additions:0,summary_deletions:0,summary_files:0,summary_diffs:[],is_pinned:!1,permission:{},model_id:null,provider_id:null,time_created:a||new Date(0).toISOString(),time_updated:c||a||new Date(0).toISOString(),time_compacting:null,time_archived:null}}function lS(t,{limit:e=50,offset:s=0}={}){let r=Ht(t);if(!Se.existsSync(r))return zt.debug(Jt,"listSessions",`\u76EE\u5F55\u4E0D\u5B58\u5728: ${r}`),[];let o=Se.readdirSync(r).filter(n=>n.endsWith(".jsonl")).map(n=>({sessionId:n.replace(/\.jsonl$/,""),filePath:ct.join(r,n)})).map(({sessionId:n,filePath:a})=>cS(a,n)).filter(Boolean);return o.sort((n,a)=>a.time_updated>n.time_updated?1:-1),zt.debug(Jt,"listSessions",`${t}: ${o.length} sessions`),o.slice(s,s+e)}function dS(){return dp().map(e=>{let s=Ht(e),r=0;try{r=Se.readdirSync(s).filter(i=>i.endsWith(".jsonl")).length}catch{}return{path:e,name:ct.basename(e),session_count:r}}).filter(e=>e.session_count>0||Se.existsSync(Ht(e.path)))}function uS(t){let e;try{e=Se.readFileSync(t,"utf8")}catch{return[]}let s=e.split(`
540
+ `).filter(Boolean),r=[];for(let c of s)try{r.push(JSON.parse(c))}catch{}let i=new Set,o=r.filter(c=>c.uuid?i.has(c.uuid)?!1:(i.add(c.uuid),!0):!0),n=[],a=0;for(let c of o){if(c.type!=="user"&&c.type!=="assistant")continue;let l=c.type,d=c.uuid||`msg-${a++}`,u=c.sessionId||"",p=c.timestamp||new Date(0).toISOString(),m=[],y=c.message?.content;if(typeof y=="string")y.trim()&&m.push({id:`${d}-p0`,message_id:d,session_id:u,time_created:p,data:{type:"text",text:y}});else if(Array.isArray(y)){let w=0;for(let b of y){if(!b||typeof b!="object")continue;let v=null;if(b.type==="text"&&b.text)v={type:"text",text:b.text};else if(b.type==="thinking"&&b.thinking)v={type:"reasoning",text:b.thinking};else if(b.type==="tool_use")v={type:"tool",tool:b.name||"tool",call_id:b.id||`call-${w}`,state:{status:"completed",input:b.input||{},output:null,metadata:null,title:null,time_start:null,time_end:null,time_compacted:null}};else if(b.type==="tool_result"){let G=b.content,D=typeof G=="string"?G:JSON.stringify(G),L=[...n].reverse().flatMap(B=>B.parts).find(B=>B.data.type==="tool"&&B.data.call_id===b.tool_use_id);L&&(L.data.state.output=D,L.data.state.status=b.is_error?"error":"completed");continue}v&&m.push({id:`${d}-p${w++}`,message_id:d,session_id:u,time_created:p,data:v})}}if(m.length===0&&l==="user")continue;let _=l==="user"?{role:"user"}:{role:"assistant",model_id:null,provider_id:"cli-claude"};if(l==="assistant"&&m.length>0&&!m.some(b=>b.data.type==="step-finish")){let b=m.some(v=>v.data.type==="tool");m.push({id:`${d}-sf`,message_id:d,session_id:u,time_created:p,data:{type:"step-finish",reason:b?"tool_use":"stop",tokens:{},cost:0}})}n.push({id:d,session_id:u,time_created:p,data:_,parts:m})}return n}function pS(t,e,{limit:s=50,offset:r=-1}={}){let i=Ht(e),o=ct.join(i,`${t}.jsonl`);if(!Se.existsSync(o))return zt.warn(Jt,"readSession",`\u6587\u4EF6\u4E0D\u5B58\u5728: ${o}`),{total:0,offset:0,messages:[]};let n=uS(o),a=n.length,c;if(r===-1){let l=Math.max(0,a-s);return c=n.slice(l),{total:a,offset:l,messages:c}}return c=n.slice(r,r===-1?void 0:r+s),{total:a,offset:Math.max(0,r),messages:c}}function mS(t,e){let s=ct.join(Ht(e),`${t}.jsonl`);return Se.existsSync(s)?(Se.unlinkSync(s),zt.info(Jt,"deleteSession",`\u5DF2\u5220\u9664 ${s}`),!0):(zt.warn(Jt,"deleteSession",`\u6587\u4EF6\u4E0D\u5B58\u5728: ${s}`),!1)}function fS(t,e,s){let r=ct.join(Ht(s),`${t}.jsonl`);if(!Se.existsSync(r))return!1;let i=JSON.stringify({type:"last-prompt",lastPrompt:e,leafUuid:null,sessionId:t});return Se.appendFileSync(r,i+`
541
+ `,"utf8"),zt.info(Jt,"renameSession",`${t} \u2192 "${e}"`),!0}function hS(t){if(!Se.existsSync(Ys))return null;for(let e of Se.readdirSync(Ys)){let s=ct.join(Ys,e,`${t}.jsonl`);if(Se.existsSync(s))return lp(e)}return null}up.exports={pathToSlug:cp,slugToPath:lp,listProjectPaths:dp,listProjects:dS,listSessions:lS,readSession:pS,deleteSession:mS,renameSession:fS,findProjectBySession:hS,PROJECTS_DIR:Ys,projectDir:Ht}});var yp=I((BI,gp)=>{"use strict";var gS=require("http"),{StreamManager:yS}=Xu(),{runClaude:_S}=np(),{log:Q}=ei(),We=pp(),re="http",fp=8100,mp=-32700,wS=-32600,bS=-32601,nn=-32602,kS=-32603,ti=[{id:"claude-opus-4-8",name:"Claude Opus 4.8 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!0,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!0,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5 (Coder)",provider_id:"cli-claude",capabilities:{function_calling:!0,vision:!0,reasoning:!1,max_context:2e5,max_output:null,prompt_caching:!0},pricing:{input:0,output:0,cache_read:0,cache_write:0},metadata:{cli_agent:!0}}];function xs(t,e,s,r){let i={code:e,message:s};return r!==void 0&&(i.data=r),JSON.stringify({jsonrpc:"2.0",id:t??null,error:i})}function SS(t,e){return JSON.stringify({jsonrpc:"2.0",id:t,result:e})}function an(t){return new Promise((e,s)=>{let r="";t.on("data",i=>{r+=i}),t.on("end",()=>e(r)),t.on("error",s)})}function xS(t){return`id: ${t.id}
536
542
  event: ${t.event}
537
543
  data: ${JSON.stringify(t.data)}
538
544
 
539
- `}function mp(t={}){let e=new Px,s=new Map;async function r(c,l){let{session_id:u,text:d,model:p,workspace:f,permission_mode:g}=c||{};if(!d)return{error:[co,"params.text is required"]};let _=u||`s-${Date.now()}`,y=e.create(_),w={};if(l){let v=l.getApiKey?l.getApiKey():null,O=l.getBaseUrl?l.getBaseUrl():null;v&&(w.CODER_APIKEY=v),O&&(w.CODER_BASE_URL=O)}let T=p?p.replace(/^cli-claude\//,""):void 0,N=s.get(_);return N?Y.info(te,`generate [${y.streamId.slice(0,8)}]`,`session=${_} resume=true cli_session=${N.slice(0,8)} model=${T||"default"} text="${d.slice(0,60)}${d.length>60?"\u2026":""}"`):Y.info(te,`generate [${y.streamId.slice(0,8)}]`,`session=${_} resume=false(new) model=${T||"default"} workspace=${f||"(none)"} text="${d.slice(0,60)}${d.length>60?"\u2026":""}"`),setImmediate(()=>{Nx({handle:y,text:d,model:T,workspace:f,permissionMode:g||"acceptEdits",env:w,resumeCliSessionId:N,onCliSessionId:v=>{s.set(_,v),Y.debug(te,`session [${y.streamId.slice(0,8)}]`,`mapped openyak_session=${_} \u2192 cli_session=${v.slice(0,8)}`)}}).catch(v=>{Y.error(te,`generate error [${y.streamId.slice(0,8)}]`,v.message),y._done||y.publish("agent-error",{error_message:String(v.message||v)})})}),{result:{stream_id:y.streamId,session_id:_}}}function n(c){let{stream_id:l}=c||{};if(!l)return{error:[co,"params.stream_id is required"]};let u=e.get(l);return u?(Y.info(te,`abort [${l.slice(0,8)}]`,"\u6536\u5230 abort \u8BF7\u6C42"),u.abort(),{result:{aborted:!0}}):{error:[co,`stream_id not found: ${l}`]}}function i(){return Y.debug(te,"models.list",`\u8FD4\u56DE ${Xr.length} \u4E2A\u6A21\u578B`),{result:Xr}}let o={"agent.generate":r,"agent.abort":n,"models.list":i},a=Lx.createServer(async(c,l)=>{let u=new URL(c.url,"http://localhost");if(l.setHeader("Access-Control-Allow-Origin","*"),l.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS"),l.setHeader("Access-Control-Allow-Headers","Content-Type, Last-Event-ID"),c.method==="OPTIONS"){l.writeHead(204),l.end();return}let d=u.pathname.match(/^\/rpc\/stream\/([^/]+)$/);if(c.method==="GET"&&d){let p=d[1],f=e.get(p);if(!f){Y.warn(te,"sse",`stream not found: ${p.slice(0,8)}`),l.writeHead(404,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:"stream not found"}));return}let g=parseInt(c.headers["last-event-id"]||"0",10)||0;Y.info(te,`sse \u25B6 [${p.slice(0,8)}]`,`client connected last_event_id=${g} ip=${c.socket.remoteAddress}`),l.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"});let _=setInterval(()=>{l.destroyed||l.write(`: heartbeat
545
+ `}function hp(t={}){let e=new yS,s=new Map;async function r(c,l){let{session_id:d,text:u,model:p,workspace:m,permission_mode:y}=c||{};if(!u)return{error:[nn,"params.text is required"]};let _=d||`s-${Date.now()}`,w=e.create(_),b={};if(l){let D=l.getApiKey?l.getApiKey():null,L=l.getBaseUrl?l.getBaseUrl():null;D&&(b.CODER_APIKEY=D),L&&(b.CODER_BASE_URL=L)}let v=p?p.replace(/^cli-claude\//,""):void 0,G=s.get(_);return G?Q.info(re,`generate [${w.streamId.slice(0,8)}]`,`session=${_} resume=true cli_session=${G.slice(0,8)} model=${v||"default"} text="${u.slice(0,60)}${u.length>60?"\u2026":""}"`):Q.info(re,`generate [${w.streamId.slice(0,8)}]`,`session=${_} resume=false(new) model=${v||"default"} workspace=${m||"(none)"} text="${u.slice(0,60)}${u.length>60?"\u2026":""}"`),setImmediate(()=>{_S({handle:w,text:u,model:v,workspace:m,permissionMode:y||"acceptEdits",env:b,resumeCliSessionId:G,onCliSessionId:D=>{s.set(_,D),Q.debug(re,`session [${w.streamId.slice(0,8)}]`,`mapped openyak_session=${_} \u2192 cli_session=${D.slice(0,8)}`)}}).catch(D=>{Q.error(re,`generate error [${w.streamId.slice(0,8)}]`,D.message),w._done||w.publish("agent-error",{error_message:String(D.message||D)})})}),{result:{stream_id:w.streamId,session_id:_}}}function i(c){let{stream_id:l}=c||{};if(!l)return{error:[nn,"params.stream_id is required"]};let d=e.get(l);return d?(Q.info(re,`abort [${l.slice(0,8)}]`,"\u6536\u5230 abort \u8BF7\u6C42"),d.abort(),{result:{aborted:!0}}):{error:[nn,`stream_id not found: ${l}`]}}function o(){return Q.debug(re,"models.list",`\u8FD4\u56DE ${ti.length} \u4E2A\u6A21\u578B`),{result:ti}}let n={"agent.generate":r,"agent.abort":i,"models.list":o},a=gS.createServer(async(c,l)=>{let d=new URL(c.url,"http://localhost");if(l.setHeader("Access-Control-Allow-Origin","*"),l.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS"),l.setHeader("Access-Control-Allow-Headers","Content-Type, Last-Event-ID"),c.method==="OPTIONS"){l.writeHead(204),l.end();return}let u=d.pathname.match(/^\/rpc\/stream\/([^/]+)$/);if(c.method==="GET"&&u){let p=u[1],m=e.get(p);if(!m){Q.warn(re,"sse",`stream not found: ${p.slice(0,8)}`),l.writeHead(404,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:"stream not found"}));return}let y=parseInt(c.headers["last-event-id"]||"0",10)||0;Q.info(re,`sse \u25B6 [${p.slice(0,8)}]`,`client connected last_event_id=${y} ip=${c.socket.remoteAddress}`),l.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"});let _=setInterval(()=>{l.destroyed||l.write(`: heartbeat
540
546
 
541
- `)},15e3),y=0,w=f.subscribe(g);try{for await(let T of w)if(l.destroyed||(l.write(Fx(T)),y++,Y.debug(te,`sse evt [${p.slice(0,8)}]`,`#${T.id} ${T.event} sent=${y}`),T.event==="done"||T.event==="agent-error"))break}finally{clearInterval(_),l.end(),Y.info(te,`sse \u25C0 [${p.slice(0,8)}]`,`client disconnected events_sent=${y}`)}return}if(c.method==="GET"&&u.pathname==="/health"){l.writeHead(200,{"Content-Type":"application/json"}),l.end(JSON.stringify({status:"ok",service:"coder-server"}));return}if(c.method==="POST"&&u.pathname==="/rpc"){let p;try{p=await lo(c)}catch{Y.warn(te,"rpc","\u8BFB\u53D6\u8BF7\u6C42\u4F53\u5931\u8D25"),l.writeHead(400),l.end(Ss(null,pp,"Failed to read request body"));return}let f;try{f=JSON.parse(p)}catch{Y.warn(te,"rpc",`JSON \u89E3\u6790\u5931\u8D25: ${p.slice(0,100)}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(Ss(null,pp,"Parse error"));return}let{jsonrpc:g,id:_,method:y,params:w}=f;if(g!=="2.0"||!y){Y.warn(te,"rpc",`\u65E0\u6548\u8BF7\u6C42: jsonrpc=${g} method=${y}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(Ss(_,jx,"Invalid Request"));return}Y.debug(te,"rpc",`\u2192 ${y} id=${_}`);let T=o[y];if(!T){Y.warn(te,"rpc",`\u672A\u77E5\u65B9\u6CD5: ${y}`),l.writeHead(404,{"Content-Type":"application/json"}),l.end(Ss(_,qx,`Method not found: ${y}`));return}let N;try{N=await T(w,t.ctx)}catch(v){Y.error(te,"rpc",`handler \u5F02\u5E38 method=${y}: ${v.message}`),l.writeHead(500,{"Content-Type":"application/json"}),l.end(Ss(_,Mx,"Internal error",v.message));return}if(N.error){let[v,O]=N.error;Y.warn(te,"rpc",`\u2190 error method=${y} code=${v} msg=${O}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(Ss(_,v,O));return}Y.debug(te,"rpc",`\u2190 ok method=${y}`),l.writeHead(200,{"Content-Type":"application/json"}),l.end(Gx(_,N.result));return}if(u.pathname.startsWith("/api/"))try{if(await Bx(c,l,u,e))return}catch(p){Y.error(te,"rest",`\u672A\u5904\u7406\u5F02\u5E38: ${p.message}`),l.headersSent||(l.writeHead(500,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:p.message})));return}l.writeHead(404,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:"not found"}))});return a._manager=e,a._cliSessionMap=s,a}function M(t,e,s){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(s))}async function Bx(t,e,s,r){let n=t.method.toUpperCase(),i=s.pathname;if(n==="GET"&&i==="/api/projects"){let d=Fe.listProjects();return Y.debug(te,"rest",`GET /api/projects \u2192 ${d.length} \u9879\u76EE`),M(e,200,{projects:d}),!0}if(n==="GET"&&i==="/api/models")return M(e,200,Xr),!0;if(n==="GET"&&i==="/api/chat/active"){let d=[];for(let[,p]of r._streams||new Map)!p._done&&!p.aborted&&d.push({stream_id:p.streamId,session_id:p.sessionId});return Y.debug(te,"rest",`GET /api/chat/active \u2192 ${d.length} \u6D3B\u8DC3`),M(e,200,d),!0}if(n==="GET"&&i==="/api/sessions"){let d=s.searchParams.get("workspace")||s.searchParams.get("project")||process.cwd(),p=parseInt(s.searchParams.get("limit")||"50",10),f=parseInt(s.searchParams.get("offset")||"0",10);Y.debug(te,"rest",`GET /api/sessions workspace=${d} limit=${p} offset=${f}`);let g=Fe.listSessions(d,{limit:p,offset:f});return M(e,200,g),!0}let o=i.match(/^\/api\/sessions\/([^/]+)$/);if(o){let d=o[1];if(n==="GET"){let p=s.searchParams.get("workspace")||s.searchParams.get("project");if(p||(p=Fe.findProjectBySession(d)),!p)return M(e,404,{error:"session not found"}),!0;let f=parseInt(s.searchParams.get("limit")||"50",10),g=parseInt(s.searchParams.get("offset")||"-1",10);Y.debug(te,"rest",`GET /api/sessions/${d.slice(0,8)} workspace=${p}`);let _=Fe.readSession(d,p,{limit:f,offset:g});return M(e,200,_),!0}if(n==="DELETE"){let p=s.searchParams.get("workspace");if(p||(p=Fe.findProjectBySession(d)),!p)return M(e,404,{error:"session not found"}),!0;let f=Fe.deleteSession(d,p);return Y.info(te,"rest",`DELETE /api/sessions/${d.slice(0,8)} ok=${f}`),M(e,f?200:404,{ok:f}),!0}if(n==="PATCH"){let p=await lo(t),f;try{f=JSON.parse(p)}catch{return M(e,400,{error:"invalid json"}),!0}let g=s.searchParams.get("workspace");if(g||(g=Fe.findProjectBySession(d)),!g)return M(e,404,{error:"session not found"}),!0;f.title!==void 0&&(Fe.renameSession(d,f.title,g),Y.info(te,"rest",`PATCH /api/sessions/${d.slice(0,8)} title="${f.title}"`));let y=Fe.listSessions(g,{limit:200}).find(w=>w.id===d)||{id:d};return M(e,200,y),!0}}let a=i.match(/^\/api\/messages\/([^/]+)$/);if(n==="GET"&&a){let d=a[1],p=s.searchParams.get("workspace");if(p||(p=Fe.findProjectBySession(d)),!p)return M(e,404,{error:"session not found"}),!0;let f=parseInt(s.searchParams.get("limit")||"50",10),g=parseInt(s.searchParams.get("offset")||"-1",10);Y.debug(te,"rest",`GET /api/messages/${d.slice(0,8)} workspace=${p}`);let _=Fe.readSession(d,p,{limit:f,offset:g});return M(e,200,_),!0}if(n==="GET"&&i==="/api/config/providers")return M(e,200,[{id:"cli-claude",name:"Coder (Claude CLI)",is_configured:!0,enabled:!0,masked_key:null,model_count:Xr.length,status:"connected"}]),!0;if(n==="GET"&&i==="/api/config/api-key")return M(e,200,{is_configured:!0,masked_key:"coder-managed",is_valid:!0}),!0;if(n==="GET"&&i==="/api/agents")return M(e,200,[{name:"build",description:"Default coding agent",mode:"primary",tools:[],permissions:{},metadata:{}},{name:"plan",description:"Planning agent (read-only)",mode:"primary",tools:[],permissions:{},metadata:{}}]),!0;if(n==="GET"&&i==="/api/tools")return M(e,200,[]),!0;if(n==="GET"&&i==="/api/usage")return M(e,200,{total_cost:0,total_tokens:{input:0,output:0,reasoning:0,cache_read:0,cache_write:0},total_sessions:0,total_messages:0,avg_tokens_per_session:0,avg_response_time:0,by_model:[],by_session:[],daily:[],response_time:{avg:0,median:0,p95:0,min:0,max:0,count:0}}),!0;if(n==="POST"&&i==="/api/chat/abort"){let d=await lo(t);try{let{stream_id:p}=JSON.parse(d),f=r.get(p);f&&f.abort(),M(e,200,{ok:!0})}catch{M(e,400,{error:"invalid body"})}return!0}let c=i.match(/^\/api\/sessions\/([^/]+)\/compact$/);if(n==="POST"&&c)return M(e,200,{ok:!0}),!0;if(n==="GET"&&i==="/api/config/local")return M(e,200,{base_url:"",is_configured:!1,is_connected:!1,status:"unconfigured"}),!0;if(n==="GET"&&i==="/api/config/openai-subscription")return M(e,200,{is_connected:!1,email:null,needs_reauth:!1}),!0;if(n==="GET"&&i==="/api/ollama/status")return M(e,200,{binary_installed:!1,running:!1}),!0;if(n==="GET"&&i==="/api/rapid-mlx/status")return M(e,200,{running:!1}),!0;if(n==="GET"&&i==="/api/mcp/status")return M(e,200,[]),!0;if(n==="GET"&&i==="/api/connectors")return M(e,200,[]),!0;if(n==="GET"&&i==="/api/channels")return M(e,200,[]),!0;if(n==="GET"&&i==="/api/channels/status")return M(e,200,{channels:[]}),!0;if(n==="GET"&&i==="/api/skills")return M(e,200,[]),!0;if(n==="GET"&&i.startsWith("/api/workspace-memory"))return M(e,200,{items:[],total:0}),!0;let l=i.match(/^\/api\/sessions\/([^/]+)\/todos$/);if(n==="GET"&&l)return M(e,200,{todos:[]}),!0;let u=i.match(/^\/api\/sessions\/([^/]+)\/files$/);return n==="GET"&&u?(M(e,200,{files:[]}),!0):n==="GET"&&i==="/api/sessions/search"?(M(e,200,[]),!0):n==="GET"&&i==="/api/plugins/status"?(M(e,200,[]),!0):n==="GET"&&i.startsWith("/api/automations")?i==="/api/automations/templates"?(M(e,200,[]),!0):(M(e,200,[]),!0):n==="GET"&&i==="/api/remote/status"?(M(e,200,{enabled:!1}),!0):!1}async function Zx({ctx:t,port:e}={}){let s=e||parseInt(process.env.CODER_SERVER_PORT||"",10)||fp,r=mp({ctx:t});return await new Promise((n,i)=>{r.listen(s,"127.0.0.1",()=>n()),r.on("error",i)}),Y.banner(s),{server:r,port:s}}hp.exports={createServer:mp,startServer:Zx,DEFAULT_PORT:fp}});var _p=x((dC,yp)=>{"use strict";var{startServer:Wx,DEFAULT_PORT:uo}=gp();function Vx(t,e){t.command("server").description("\u542F\u52A8 coder JSON-RPC agent \u670D\u52A1\u5668").option("-p, --port <port>",`\u76D1\u542C\u7AEF\u53E3 (\u9ED8\u8BA4 ${uo})`,String(uo)).action(async s=>{let r=parseInt(s.port,10)||uo,n;try{({server:n}=await Wx({ctx:e,port:r}))}catch(i){e.fail(`coder server \u542F\u52A8\u5931\u8D25: ${i.message}`,`\u7AEF\u53E3 ${r} \u53EF\u80FD\u5DF2\u88AB\u5360\u7528\uFF0C\u5C1D\u8BD5 --port \u6307\u5B9A\u5176\u4ED6\u7AEF\u53E3`),process.exitCode=1;return}await new Promise(i=>{process.on("SIGINT",()=>{n.close(i)}),process.on("SIGTERM",()=>{n.close(i)}),n.on("close",i)})})}yp.exports={register:Vx}});var bp=x((pC,wp)=>{var Kx=Xa(),zx=Lc(),Jx=Mc(),Hx=Jc(),Yx=ll(),Xx=Wd(),Qx=Jd(),eS=_p();function tS(t,e){return Kx.register(t,e),zx.register(t,e),Jx.register(t,e),Hx.register(t,e),Yx.register(t,e),Xx.register(t,e),eS.register(t,e),{domains:Qx.register(t,e)}}wp.exports={registerAll:tS}});var Sp=x((fC,xp)=>{var{CoderContext:kp}=yo(),{SHORTCUTS:sS,isAgentName:rS,launchAgent:nS}=or(),iS=Zo(),{version:oS}=Xt(),po=class{constructor(){this.vscodeExtensionService=new iS}_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:o}=Fa();return o(e.slice(1))}let s=this._leadingCompletionFlag(e);if(s){let o=this._readGlobalOptions(e),a=new kp(o),{installCompletion:c,showCompletion:l}=Ja(),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(o){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",o)}let r=this._readGlobalOptions(e),n=new kp(r),i=e[0];return i?sS.has(i)&&rS(i)?await this._launchShortcut(i,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 nS(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=dr();new s(null).notifyAndRefreshUpdates(e)}catch{}}async _runCommander(e,s){let{Command:r}=require("commander"),{registerAll:n}=bp(),i=new r;return i.name("coder").description("Coder \u2014 AI Agent Runtime OS\uFF08AI\u667A\u80FD\u4F53\u64CD\u4F5C\u7CFB\u7EDF\uFF09").version(oS,"-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(`
542
- `)),i.option("--format <fmt>","\u8F93\u51FA\u683C\u5F0F\uFF1Atext\uFF08\u9ED8\u8BA4\uFF09| json"),i.option("--apikey <key>","\u4E34\u65F6\u63D0\u4F9B API Key\uFF08\u683C\u5F0F: <ak>.<sk>\uFF09"),i.option("--install-completion","\u4E3A\u5F53\u524D shell \u5B89\u88C5\u81EA\u52A8\u8865\u5168"),i.option("--show-completion","\u6253\u5370\u5F53\u524D shell \u7684\u8865\u5168\u811A\u672C\uFF08\u4F9B\u590D\u5236/\u81EA\u5B9A\u4E49\u5B89\u88C5\uFF09"),n(i,s),await i.parseAsync(e,{from:"user"}),process.exitCode||0}};xp.exports=po});var aS=Sp(),{shouldSuppressUpdateNotice:cS}=kn();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 lS(t,e){let s=i=>i.replace(/^v/,"").split(".").map(Number),[r,n]=[s(t),s(e)];for(let i=0;i<3;i++){if((r[i]||0)>(n[i]||0))return!0;if((r[i]||0)<(n[i]||0))return!1}return!1}function uS(){if(cS())return;let t=require("https"),{version:e}=Xt(),r=t.get("https://registry.npmmirror.com/makecoder/latest",{timeout:5e3},n=>{let i="";n.on("data",o=>{i+=o}),n.on("end",()=>{try{let o=JSON.parse(i).version;o&&lS(o,e)&&console.error(`\x1B[33m\u26A1 \u68C0\u6D4B\u5230\u65B0\u7248\u672C ${o}\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 dS(){let t=new Set(["pub","auth","update","skills","wiki","team"]),e=process.argv[2];e!=="__complete"&&(!e||!t.has(e))&&uS(),process.env.CODER_NESTED="1";let s=new aS;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)}}dS().catch(t=>{console.error(`Startup error: ${t.message}`),process.exit(1)});
547
+ `)},15e3),w=0,b=m.subscribe(y);try{for await(let v of b)if(l.destroyed||(l.write(xS(v)),w++,Q.debug(re,`sse evt [${p.slice(0,8)}]`,`#${v.id} ${v.event} sent=${w}`),v.event==="done"||v.event==="agent-error"))break}finally{clearInterval(_),l.end(),Q.info(re,`sse \u25C0 [${p.slice(0,8)}]`,`client disconnected events_sent=${w}`)}return}if(c.method==="GET"&&d.pathname==="/health"){l.writeHead(200,{"Content-Type":"application/json"}),l.end(JSON.stringify({status:"ok",service:"coder-server"}));return}if(c.method==="POST"&&d.pathname==="/rpc"){let p;try{p=await an(c)}catch{Q.warn(re,"rpc","\u8BFB\u53D6\u8BF7\u6C42\u4F53\u5931\u8D25"),l.writeHead(400),l.end(xs(null,mp,"Failed to read request body"));return}let m;try{m=JSON.parse(p)}catch{Q.warn(re,"rpc",`JSON \u89E3\u6790\u5931\u8D25: ${p.slice(0,100)}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(xs(null,mp,"Parse error"));return}let{jsonrpc:y,id:_,method:w,params:b}=m;if(y!=="2.0"||!w){Q.warn(re,"rpc",`\u65E0\u6548\u8BF7\u6C42: jsonrpc=${y} method=${w}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(xs(_,wS,"Invalid Request"));return}Q.debug(re,"rpc",`\u2192 ${w} id=${_}`);let v=n[w];if(!v){Q.warn(re,"rpc",`\u672A\u77E5\u65B9\u6CD5: ${w}`),l.writeHead(404,{"Content-Type":"application/json"}),l.end(xs(_,bS,`Method not found: ${w}`));return}let G;try{G=await v(b,t.ctx)}catch(D){Q.error(re,"rpc",`handler \u5F02\u5E38 method=${w}: ${D.message}`),l.writeHead(500,{"Content-Type":"application/json"}),l.end(xs(_,kS,"Internal error",D.message));return}if(G.error){let[D,L]=G.error;Q.warn(re,"rpc",`\u2190 error method=${w} code=${D} msg=${L}`),l.writeHead(400,{"Content-Type":"application/json"}),l.end(xs(_,D,L));return}Q.debug(re,"rpc",`\u2190 ok method=${w}`),l.writeHead(200,{"Content-Type":"application/json"}),l.end(SS(_,G.result));return}if(d.pathname.startsWith("/api/"))try{if(await IS(c,l,d,e))return}catch(p){Q.error(re,"rest",`\u672A\u5904\u7406\u5F02\u5E38: ${p.message}`),l.headersSent||(l.writeHead(500,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:p.message})));return}l.writeHead(404,{"Content-Type":"application/json"}),l.end(JSON.stringify({error:"not found"}))});return a._manager=e,a._cliSessionMap=s,a}function F(t,e,s){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(s))}async function IS(t,e,s,r){let i=t.method.toUpperCase(),o=s.pathname;if(i==="GET"&&o==="/api/projects"){let u=We.listProjects();return Q.debug(re,"rest",`GET /api/projects \u2192 ${u.length} \u9879\u76EE`),F(e,200,{projects:u}),!0}if(i==="GET"&&o==="/api/models")return F(e,200,ti),!0;if(i==="GET"&&o==="/api/chat/active"){let u=[];for(let[,p]of r._streams||new Map)!p._done&&!p.aborted&&u.push({stream_id:p.streamId,session_id:p.sessionId});return Q.debug(re,"rest",`GET /api/chat/active \u2192 ${u.length} \u6D3B\u8DC3`),F(e,200,u),!0}if(i==="GET"&&o==="/api/sessions"){let u=s.searchParams.get("workspace")||s.searchParams.get("project")||process.cwd(),p=parseInt(s.searchParams.get("limit")||"50",10),m=parseInt(s.searchParams.get("offset")||"0",10);Q.debug(re,"rest",`GET /api/sessions workspace=${u} limit=${p} offset=${m}`);let y=We.listSessions(u,{limit:p,offset:m});return F(e,200,y),!0}let n=o.match(/^\/api\/sessions\/([^/]+)$/);if(n){let u=n[1];if(i==="GET"){let p=s.searchParams.get("workspace")||s.searchParams.get("project");if(p||(p=We.findProjectBySession(u)),!p)return F(e,404,{error:"session not found"}),!0;let m=parseInt(s.searchParams.get("limit")||"50",10),y=parseInt(s.searchParams.get("offset")||"-1",10);Q.debug(re,"rest",`GET /api/sessions/${u.slice(0,8)} workspace=${p}`);let _=We.readSession(u,p,{limit:m,offset:y});return F(e,200,_),!0}if(i==="DELETE"){let p=s.searchParams.get("workspace");if(p||(p=We.findProjectBySession(u)),!p)return F(e,404,{error:"session not found"}),!0;let m=We.deleteSession(u,p);return Q.info(re,"rest",`DELETE /api/sessions/${u.slice(0,8)} ok=${m}`),F(e,m?200:404,{ok:m}),!0}if(i==="PATCH"){let p=await an(t),m;try{m=JSON.parse(p)}catch{return F(e,400,{error:"invalid json"}),!0}let y=s.searchParams.get("workspace");if(y||(y=We.findProjectBySession(u)),!y)return F(e,404,{error:"session not found"}),!0;m.title!==void 0&&(We.renameSession(u,m.title,y),Q.info(re,"rest",`PATCH /api/sessions/${u.slice(0,8)} title="${m.title}"`));let w=We.listSessions(y,{limit:200}).find(b=>b.id===u)||{id:u};return F(e,200,w),!0}}let a=o.match(/^\/api\/messages\/([^/]+)$/);if(i==="GET"&&a){let u=a[1],p=s.searchParams.get("workspace");if(p||(p=We.findProjectBySession(u)),!p)return F(e,404,{error:"session not found"}),!0;let m=parseInt(s.searchParams.get("limit")||"50",10),y=parseInt(s.searchParams.get("offset")||"-1",10);Q.debug(re,"rest",`GET /api/messages/${u.slice(0,8)} workspace=${p}`);let _=We.readSession(u,p,{limit:m,offset:y});return F(e,200,_),!0}if(i==="GET"&&o==="/api/config/providers")return F(e,200,[{id:"cli-claude",name:"Coder (Claude CLI)",is_configured:!0,enabled:!0,masked_key:null,model_count:ti.length,status:"connected"}]),!0;if(i==="GET"&&o==="/api/config/api-key")return F(e,200,{is_configured:!0,masked_key:"coder-managed",is_valid:!0}),!0;if(i==="GET"&&o==="/api/agents")return F(e,200,[{name:"build",description:"Default coding agent",mode:"primary",tools:[],permissions:{},metadata:{}},{name:"plan",description:"Planning agent (read-only)",mode:"primary",tools:[],permissions:{},metadata:{}}]),!0;if(i==="GET"&&o==="/api/tools")return F(e,200,[]),!0;if(i==="GET"&&o==="/api/usage")return F(e,200,{total_cost:0,total_tokens:{input:0,output:0,reasoning:0,cache_read:0,cache_write:0},total_sessions:0,total_messages:0,avg_tokens_per_session:0,avg_response_time:0,by_model:[],by_session:[],daily:[],response_time:{avg:0,median:0,p95:0,min:0,max:0,count:0}}),!0;if(i==="POST"&&o==="/api/chat/abort"){let u=await an(t);try{let{stream_id:p}=JSON.parse(u),m=r.get(p);m&&m.abort(),F(e,200,{ok:!0})}catch{F(e,400,{error:"invalid body"})}return!0}let c=o.match(/^\/api\/sessions\/([^/]+)\/compact$/);if(i==="POST"&&c)return F(e,200,{ok:!0}),!0;if(i==="GET"&&o==="/api/config/local")return F(e,200,{base_url:"",is_configured:!1,is_connected:!1,status:"unconfigured"}),!0;if(i==="GET"&&o==="/api/config/openai-subscription")return F(e,200,{is_connected:!1,email:null,needs_reauth:!1}),!0;if(i==="GET"&&o==="/api/ollama/status")return F(e,200,{binary_installed:!1,running:!1}),!0;if(i==="GET"&&o==="/api/rapid-mlx/status")return F(e,200,{running:!1}),!0;if(i==="GET"&&o==="/api/mcp/status")return F(e,200,[]),!0;if(i==="GET"&&o==="/api/connectors")return F(e,200,[]),!0;if(i==="GET"&&o==="/api/channels")return F(e,200,[]),!0;if(i==="GET"&&o==="/api/channels/status")return F(e,200,{channels:[]}),!0;if(i==="GET"&&o==="/api/skills")return F(e,200,[]),!0;if(i==="GET"&&o.startsWith("/api/workspace-memory"))return F(e,200,{items:[],total:0}),!0;let l=o.match(/^\/api\/sessions\/([^/]+)\/todos$/);if(i==="GET"&&l)return F(e,200,{todos:[]}),!0;let d=o.match(/^\/api\/sessions\/([^/]+)\/files$/);return i==="GET"&&d?(F(e,200,{files:[]}),!0):i==="GET"&&o==="/api/sessions/search"?(F(e,200,[]),!0):i==="GET"&&o==="/api/plugins/status"?(F(e,200,[]),!0):i==="GET"&&o.startsWith("/api/automations")?o==="/api/automations/templates"?(F(e,200,[]),!0):(F(e,200,[]),!0):i==="GET"&&o==="/api/remote/status"?(F(e,200,{enabled:!1}),!0):!1}async function ES({ctx:t,port:e}={}){let s=e||parseInt(process.env.CODER_SERVER_PORT||"",10)||fp,r=hp({ctx:t});return await new Promise((i,o)=>{r.listen(s,"127.0.0.1",()=>i()),r.on("error",o)}),Q.banner(s),{server:r,port:s}}gp.exports={createServer:hp,startServer:ES,DEFAULT_PORT:fp}});var wp=I((WI,_p)=>{"use strict";var{startServer:AS,DEFAULT_PORT:cn}=yp();function CS(t,e){t.command("server").description("\u542F\u52A8 coder JSON-RPC agent \u670D\u52A1\u5668").option("-p, --port <port>",`\u76D1\u542C\u7AEF\u53E3 (\u9ED8\u8BA4 ${cn})`,String(cn)).action(async s=>{let r=parseInt(s.port,10)||cn,i;try{({server:i}=await AS({ctx:e,port:r}))}catch(o){e.fail(`coder server \u542F\u52A8\u5931\u8D25: ${o.message}`,`\u7AEF\u53E3 ${r} \u53EF\u80FD\u5DF2\u88AB\u5360\u7528\uFF0C\u5C1D\u8BD5 --port \u6307\u5B9A\u5176\u4ED6\u7AEF\u53E3`),process.exitCode=1;return}await new Promise(o=>{process.on("SIGINT",()=>{i.close(o)}),process.on("SIGTERM",()=>{i.close(o)}),i.on("close",o)})})}_p.exports={register:CS}});var kp=I((ZI,bp)=>{var US=sc(),$S=Dc(),TS=Nc(),vS=Vc(),DS=dl(),OS=Vu(),LS=Hu(),RS=wp();function PS(t,e){return US.register(t,e),$S.register(t,e),TS.register(t,e),vS.register(t,e),DS.register(t,e),OS.register(t,e),RS.register(t,e),{domains:LS.register(t,e)}}bp.exports={registerAll:PS}});var Ip=I((VI,xp)=>{var{CoderContext:Sp}=fn(),{SHORTCUTS:NS,isAgentName:jS,launchAgent:GS}=or(),qS=Mn(),{version:MS}=Xt(),ln=class{constructor(){this.vscodeExtensionService=new qS}_readGlobalOptions(e){let s=null,r=null;for(let i=0;i<e.length;i++){let o=e[i];o==="--format"&&e[i+1]?s=e[i+1]:o.startsWith("--format=")?s=o.slice(9):o==="--apikey"&&e[i+1]?r=e[i+1]:o.startsWith("--apikey=")&&(r=o.slice(9))}return{format:s,apikey:r}}_leadingCompletionFlag(e){let s=new Set(["--format","--apikey"]);for(let r=0;r<e.length;r++){let i=e[r];if(i==="--install-completion"||i==="--show-completion")return i;if(s.has(i)){r++;continue}if(!i.startsWith("-"))return null}return null}async run(e=process.argv.slice(2)){if(e[0]==="__complete"){let{complete:n}=Ga();return n(e.slice(1))}let s=this._leadingCompletionFlag(e);if(s){let n=this._readGlobalOptions(e),a=new Sp(n),{installCompletion:c,showCompletion:l}=Va(),d=e.indexOf(s),u=e[d+1]&&!e[d+1].startsWith("-")?e[d+1]:null;return s==="--install-completion"?c(a,u):l(a,u)}try{await this.vscodeExtensionService.ensureExtensionInstalled()}catch(n){process.env.CODER_DEBUG&&console.error("VSCode Extension Service Error:",n)}let r=this._readGlobalOptions(e),i=new Sp(r),o=e[0];return o?NS.has(o)&&jS(o)?await this._launchShortcut(o,e.slice(1),i):await this._runCommander(e,i):await this._launchShortcut("claude",[],i)}async _launchShortcut(e,s,r){let i=r.getApiKey();if(!i){let o=Gi(),a=await new o(r).browserLogin(r.getCoderBaseUrl());if(a!==0)return a;if(i=r.getApiKey(),!i)return 1}return this._notifySkillUpdates(i),await GS(e,s,r)||0}_notifySkillUpdates(e){try{let s=dr();new s(null).notifyAndRefreshUpdates(e)}catch{}}async _runCommander(e,s){let{Command:r}=require("commander"),{registerAll:i}=kp(),o=new r;return o.name("coder").description("Coder \u2014 AI Agent Runtime OS\uFF08AI\u667A\u80FD\u4F53\u64CD\u4F5C\u7CFB\u7EDF\uFF09").version(MS,"-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(`
548
+ `)),o.option("--format <fmt>","\u8F93\u51FA\u683C\u5F0F\uFF1Atext\uFF08\u9ED8\u8BA4\uFF09| json"),o.option("--apikey <key>","\u4E34\u65F6\u63D0\u4F9B API Key"),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"),i(o,s),await o.parseAsync(e,{from:"user"}),process.exitCode||0}};xp.exports=ln});var FS=Ip(),{shouldSuppressUpdateNotice:BS}=xi();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 WS(t,e){let s=o=>o.replace(/^v/,"").split(".").map(Number),[r,i]=[s(t),s(e)];for(let o=0;o<3;o++){if((r[o]||0)>(i[o]||0))return!0;if((r[o]||0)<(i[o]||0))return!1}return!1}function ZS(){if(BS())return;let t=require("https"),{version:e}=Xt(),r=t.get("https://registry.npmmirror.com/makecoder/latest",{timeout:5e3},i=>{let o="";i.on("data",n=>{o+=n}),i.on("end",()=>{try{let n=JSON.parse(o).version;n&&WS(n,e)&&console.error(`\x1B[33m\u26A1 \u68C0\u6D4B\u5230\u65B0\u7248\u672C ${n}\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 VS(){let t=new Set(["pub","auth","update","skills","wiki","team"]),e=process.argv[2];e!=="__complete"&&(!e||!t.has(e))&&ZS(),process.env.CODER_NESTED="1";let s=new FS;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)}}VS().catch(t=>{console.error(`Startup error: ${t.message}`),process.exit(1)});