tako-cli 0.1.49 → 0.1.50

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.
Files changed (3) hide show
  1. package/dist/index.js +51 -51
  2. package/install.sh +77 -12
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var a0=Object.create;var{getPrototypeOf:s0,defineProperty:z$,getOwnPropertyNames:U1,getOwnPropertyDescriptor:o0}=Object,k1=Object.prototype.hasOwnProperty;var j=($,b,x)=>{x=$!=null?a0(s0($)):{};let q=b||!$||!$.__esModule?z$(x,"default",{value:$,enumerable:!0}):x;for(let Z of U1($))if(!k1.call(q,Z))z$(q,Z,{get:()=>$[Z],enumerable:!0});return q},L1=new WeakMap,i0=($)=>{var b=L1.get($),x;if(b)return b;if(b=z$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")U1($).map((q)=>!k1.call(b,q)&&z$(b,q,{get:()=>$[q],enumerable:!(x=o0($,q))||x.enumerable}));return L1.set($,b),b},j1=($,b)=>()=>(b||$((b={exports:{}}).exports,b),b.exports);var E1=($,b)=>{for(var x in b)z$($,x,{get:b[x],enumerable:!0,configurable:!0,set:(q)=>b[x]=()=>q})};var U=($,b)=>()=>($&&(b=$($=0)),b);var N=import.meta.require;import{homedir as D0}from"os";import{join as v$}from"path";async function r1(){let $=await import("fs/promises");try{await $.mkdir(I,{recursive:!0}),await $.mkdir(g$,{recursive:!0})}catch{}}async function m(){await r1();try{let $=Bun.file(T1);if(await $.exists()){let b=await $.json();return{...O1,...b}}}catch{}return{...O1}}async function F$($){await r1(),await Bun.write(T1,JSON.stringify($,null,2))}async function o($){let x={...await m(),...$};return await F$(x),x}async function f1(){return!!(await m()).apiKey}async function y$(){return(await m()).apiKey}async function R1(){return(await m()).apiId}var I,T1,g$,_,s,E,n0,g,D2,O1;var O=U(()=>{I=v$(D0(),".tako"),T1=v$(I,"config.json"),g$=v$(I,"tools"),_=v$(I,"cli"),s=v$(I,"bun"),E=v$(s,"bin",process.platform==="win32"?"bun.exe":"bun"),n0=process.env.TAKO_SERVER||"https://claude-proxy.shiroha.tech",g=process.env.PROXY_BASE_URL||"https://claude-proxy.shiroha.tech",D2=process.env.TAKO_DEV==="true"||n0.includes("localhost"),O1={apiKey:"",apiId:"",installedClients:{}}});var o$=j1((yv,_1)=>{var s$={to($,b){if(!b)return`\x1B[${$+1}G`;return`\x1B[${b+1};${$+1}H`},move($,b){let x="";if($<0)x+=`\x1B[${-$}D`;else if($>0)x+=`\x1B[${$}C`;if(b<0)x+=`\x1B[${-b}A`;else if(b>0)x+=`\x1B[${b}B`;return x},up:($=1)=>`\x1B[${$}A`,down:($=1)=>`\x1B[${$}B`,forward:($=1)=>`\x1B[${$}C`,backward:($=1)=>`\x1B[${$}D`,nextLine:($=1)=>"\x1B[E".repeat($),prevLine:($=1)=>"\x1B[F".repeat($),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},zb={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},Gb={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let b="";for(let x=0;x<$;x++)b+=this.line+(x<$-1?s$.up():"");if($)b+=s$.left;return b}};_1.exports={cursor:s$,scroll:zb,erase:Gb,beep:"\x07"}});var D$=j1((Sv,i$)=>{var h$=process||{},P1=h$.argv||[],V$=h$.env||{},Qb=!(!!V$.NO_COLOR||P1.includes("--no-color"))&&(!!V$.FORCE_COLOR||P1.includes("--color")||h$.platform==="win32"||(h$.stdout||{}).isTTY&&V$.TERM!=="dumb"||!!V$.CI),Hb=($,b,x=$)=>(q)=>{let Z=""+q,z=Z.indexOf(b,$.length);return~z?$+Jb(Z,b,x,z)+b:$+Z+b},Jb=($,b,x,q)=>{let Z="",z=0;do Z+=$.substring(z,q)+x,z=q+b.length,q=$.indexOf(b,z);while(~q);return Z+$.substring(z)},C1=($=Qb)=>{let b=$?Hb:()=>String;return{isColorSupported:$,reset:b("\x1B[0m","\x1B[0m"),bold:b("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:b("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:b("\x1B[3m","\x1B[23m"),underline:b("\x1B[4m","\x1B[24m"),inverse:b("\x1B[7m","\x1B[27m"),hidden:b("\x1B[8m","\x1B[28m"),strikethrough:b("\x1B[9m","\x1B[29m"),black:b("\x1B[30m","\x1B[39m"),red:b("\x1B[31m","\x1B[39m"),green:b("\x1B[32m","\x1B[39m"),yellow:b("\x1B[33m","\x1B[39m"),blue:b("\x1B[34m","\x1B[39m"),magenta:b("\x1B[35m","\x1B[39m"),cyan:b("\x1B[36m","\x1B[39m"),white:b("\x1B[37m","\x1B[39m"),gray:b("\x1B[90m","\x1B[39m"),bgBlack:b("\x1B[40m","\x1B[49m"),bgRed:b("\x1B[41m","\x1B[49m"),bgGreen:b("\x1B[42m","\x1B[49m"),bgYellow:b("\x1B[43m","\x1B[49m"),bgBlue:b("\x1B[44m","\x1B[49m"),bgMagenta:b("\x1B[45m","\x1B[49m"),bgCyan:b("\x1B[46m","\x1B[49m"),bgWhite:b("\x1B[47m","\x1B[49m"),blackBright:b("\x1B[90m","\x1B[39m"),redBright:b("\x1B[91m","\x1B[39m"),greenBright:b("\x1B[92m","\x1B[39m"),yellowBright:b("\x1B[93m","\x1B[39m"),blueBright:b("\x1B[94m","\x1B[39m"),magentaBright:b("\x1B[95m","\x1B[39m"),cyanBright:b("\x1B[96m","\x1B[39m"),whiteBright:b("\x1B[97m","\x1B[39m"),bgBlackBright:b("\x1B[100m","\x1B[49m"),bgRedBright:b("\x1B[101m","\x1B[49m"),bgGreenBright:b("\x1B[102m","\x1B[49m"),bgYellowBright:b("\x1B[103m","\x1B[49m"),bgBlueBright:b("\x1B[104m","\x1B[49m"),bgMagentaBright:b("\x1B[105m","\x1B[49m"),bgCyanBright:b("\x1B[106m","\x1B[49m"),bgWhiteBright:b("\x1B[107m","\x1B[49m")}};i$.exports=C1();i$.exports.createColors=C1});var Q0={};E1(Q0,{t:()=>Q,setLocale:()=>z1,getLocale:()=>G1,detectLocale:()=>i,clearLocaleOverride:()=>lb});function i(){if(j$)return j$;let $=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if($.toLowerCase().includes("zh")||$.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function z1($){j$=$}function lb(){j$=null}function Q($,b){let x=i(),q=$.split("."),Z=ab;for(let v of q)if(Z=Z?.[v],!Z)return $;let z=Z[x]||Z.en||$;if(b)for(let[v,G]of Object.entries(b))z=z.replace(`{${v}}`,String(G));return z}function G1(){return i()}var j$=null,ab;var T=U(()=>{ab={launcher:{starting:{en:"Starting {client}...",zh:"\u6B63\u5728\u542F\u52A8 {client}..."},directoryNotFound:{en:"Directory not found: {path}",zh:"\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}"},apiKeyNotConfigured:{en:"API Key not configured",zh:"API Key \u672A\u914D\u7F6E"},error:{en:"Error: {message}",zh:"\u9519\u8BEF\uFF1A{message}"}},menu:{selectAction:{en:"Select an action:",zh:"\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A"},launchClient:{en:"Launch {client}",zh:"\u542F\u52A8 {client}"},advanced:{en:"Advanced",zh:"\u9AD8\u7EA7"},advancedHint:{en:"Usage stats, configuration, etc.",zh:"\u7528\u91CF\u7EDF\u8BA1\u3001\u914D\u7F6E\u7B49"},exit:{en:"Exit",zh:"\u9000\u51FA"},advancedOptions:{en:"Advanced Options:",zh:"\u9AD8\u7EA7\u9009\u9879\uFF1A"},viewStats:{en:"View Usage Statistics",zh:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},configApiKey:{en:"Configure API Key",zh:"\u914D\u7F6E API Key"},back:{en:"Back",zh:"\u8FD4\u56DE"},changeLanguage:{en:"Change Language",zh:"\u5207\u6362\u8BED\u8A00"},currentLanguage:{en:"Current Language: {lang}",zh:"\u5F53\u524D\u8BED\u8A00\uFF1A{lang}"},languageChanged:{en:"Language changed to {lang}",zh:"\u8BED\u8A00\u5DF2\u5207\u6362\u4E3A {lang}"},enableStatusLine:{en:"Enable Statusline",zh:"\u542F\u7528\u72B6\u6001\u680F"},disableStatusLine:{en:"Disable Statusline",zh:"\u7981\u7528\u72B6\u6001\u680F"}},language:{en:{en:"English",zh:"\u82F1\u8BED"},zh:{en:"Chinese",zh:"\u4E2D\u6587"}},banner:{welcome:{en:"Welcome!",zh:"\u6B22\u8FCE\u4F7F\u7528\uFF01"}},stats:{title:{en:"\uD83D\uDCCA Usage Statistics",zh:"\uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"},totalRequests:{en:"Total Requests: {count} times",zh:"\u603B\u8C03\u7528\u6B21\u6570\uFF1A{count} \u6B21"},totalCost:{en:"Total Cost: {cost}",zh:"\u603B\u6D88\u8D39\uFF1A{cost}"},todayCost:{en:"Today's Cost: {cost}",zh:"\u4ECA\u65E5\u6D88\u8D39\uFF1A{cost}"},modelDistribution:{en:"Model Usage Distribution (Today):",zh:"\u6A21\u578B\u4F7F\u7528\u5206\u5E03\uFF08\u4ECA\u65E5\uFF09\uFF1A"},times:{en:"times",zh:"\u6B21"},refreshHint:{en:"{countdown}s until refresh | Press any key to return",zh:"{countdown}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE"},fetching:{en:"Fetching usage statistics...",zh:"\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1..."},fetchFailed:{en:"Failed to fetch: {error}",zh:"\u83B7\u53D6\u5931\u8D25\uFF1A{error}"}},prompts:{enterApiKey:{en:"Please enter your API Key:",zh:"\u8BF7\u8F93\u5165\u60A8\u7684 API Key\uFF1A"},apiKeyPlaceholder:{en:"cr_xxxxxxxx",zh:"cr_xxxxxxxx"},validating:{en:"Validating API Key...",zh:"\u6B63\u5728\u9A8C\u8BC1 API Key..."},keyInvalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},keyValidationFailed:{en:"Validation failed: {error}",zh:"\u9A8C\u8BC1\u5931\u8D25\uFF1A{error}"},keyConfigured:{en:"API Key configured successfully!",zh:"API Key \u914D\u7F6E\u6210\u529F\uFF01"}},cli:{version:{en:"Tako CLI v{version}",zh:"Tako CLI v{version}"},usage:{en:"Usage: tako [options] [command]",zh:"\u7528\u6CD5\uFF1Atako [\u9009\u9879] [\u547D\u4EE4]"},options:{en:"Options:",zh:"\u9009\u9879\uFF1A"},optionVersion:{en:" -v, --version Display version number",zh:" -v, --version \u663E\u793A\u7248\u672C\u53F7"},optionHelp:{en:" -h, --help Display help information",zh:" -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"},shortcuts:{en:"Shortcuts:",zh:"\u5FEB\u6377\u547D\u4EE4\uFF1A"},shortcutClaude:{en:" --claude Launch Claude Code directly",zh:" --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},shortcutCodex:{en:" --codex Launch Codex directly",zh:" --codex \u76F4\u63A5\u542F\u52A8 Codex"},examples:{en:"Examples:",zh:"\u793A\u4F8B\uFF1A"},exampleInteractive:{en:" tako Interactive tool selection",zh:" tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177"},exampleClaude:{en:" tako --claude Launch Claude Code directly",zh:" tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},exampleCodex:{en:" tako --codex Launch Codex directly",zh:" tako --codex \u76F4\u63A5\u542F\u52A8 Codex"},clientNotFound:{en:"{client} client not found",zh:"{client} \u5BA2\u6237\u7AEF\u672A\u627E\u5230"},cliError:{en:"Tako CLI encountered an error:",zh:"Tako CLI \u53D1\u751F\u9519\u8BEF\uFF1A"},launchFailed:{en:"Launch failed",zh:"\u542F\u52A8\u5931\u8D25"}},auth:{invalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},validationFailed:{en:"Validation failed",zh:"\u9A8C\u8BC1\u5931\u8D25"},networkError:{en:"Network request failed",zh:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}},updater:{migrating:{en:"Detected old installation, migrating...",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB..."},installingLocally:{en:"Installing to local directory...",zh:"\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."},migrationFailed:{en:"Local installation failed, skipping migration",zh:"\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"},installComplete:{en:"Local installation complete",zh:"\u672C\u5730\u5B89\u88C5\u5B8C\u6210"},migrationComplete:{en:"Detected old installation, migration complete. Please restart Tako CLI",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"},newVersionAvailable:{en:"New version v{version} available (current v{current})",zh:"\u53D1\u73B0\u65B0\u7248\u672C v{version}\uFF08\u5F53\u524D v{current}\uFF09"},pleaseRestart:{en:"Please restart Tako CLI to use the new version",zh:"\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"}},region:{usingChinaMirror:{en:"Detected China mainland network, using domestic mirror",zh:"\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"},usingGlobalMirror:{en:"Using global mirror",zh:"\u4F7F\u7528\u56FD\u9645\u6E90"}},telemetry:{toggle:{en:"Toggle Telemetry",zh:"\u5207\u6362\u9065\u6D4B"},enabled:{en:"Telemetry is enabled",zh:"\u9065\u6D4B\u5DF2\u5F00\u542F"},disabled:{en:"Telemetry is disabled",zh:"\u9065\u6D4B\u5DF2\u5173\u95ED"},description:{en:"Anonymous usage data helps us improve Tako CLI",zh:"\u533F\u540D\u4F7F\u7528\u6570\u636E\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Tako CLI"}},time:{justNow:{en:"just now",zh:"\u521A\u521A"},minutesAgo:{en:"{n}m ago",zh:"{n}\u5206\u949F\u524D"},hoursAgo:{en:"{n}h ago",zh:"{n}\u5C0F\u65F6\u524D"},yesterday:{en:"yesterday",zh:"\u6628\u5929"},daysAgo:{en:"{n}d ago",zh:"{n}\u5929\u524D"},weeksAgo:{en:"{n}w ago",zh:"{n}\u5468\u524D"},monthsAgo:{en:"{n}mo ago",zh:"{n}\u6708\u524D"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},statusline:{enabled:{en:"Statusline enabled. Restart Claude Code to apply.",zh:"\u72B6\u6001\u680F\u5DF2\u542F\u7528\u3002\u91CD\u542F Claude Code \u751F\u6548\u3002"},disabled:{en:"Statusline disabled. Restart Claude Code to apply.",zh:"\u72B6\u6001\u680F\u5DF2\u7981\u7528\u3002\u91CD\u542F Claude Code \u751F\u6548\u3002"}}}});function X2(){return process.env.NERD_FONT==="1"}function r($){let b=d[$];if(typeof b==="string")return b;return X2()?b.nerd:b.plain}var V,y,W,d;var u=U(()=>{V={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"},y={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"},W={directory:{icon:V.brightYellow,text:V.brightGreen},git:{icon:V.brightBlue,text:V.brightBlue,clean:V.brightGreen,dirty:V.brightYellow,conflict:V.brightRed},model:{icon:V.brightCyan,text:V.brightCyan},version:{icon:V.brightWhite,text:V.brightBlack},outputStyle:{icon:V.brightMagenta,text:V.brightMagenta},context:{icon:V.brightMagenta,low:V.brightGreen,medium:V.brightYellow,high:V.brightRed},todayUsage:{icon:V.brightGreen,text:V.brightGreen},separator:V.brightBlack},d={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"}});import{homedir as W2}from"os";class f${id="directory";render($){let b=this.formatPath($.workspace.current_dir),x=r("directory");return`${W.directory.icon}${x}${y.reset} ${W.directory.text}${b}${y.reset}`}formatPath($){let b=W2();if($===b)return"~";if($.startsWith(b+"/"))return"~"+$.slice(b.length);return $}}var E0=U(()=>{u()});class R${id="git";async render($){let b=$.workspace.current_dir;if(!await this.isGitRepository(b))return null;let q=await this.getBranch(b);if(!q)return null;let{status:Z,statusColor:z}=await this.getStatus(b),{ahead:v,behind:G}=await this.getAheadBehind(b),Y=r("git"),H=`${W.git.icon}${Y}${y.reset} ${W.git.text}${q}${y.reset}`;if(H+=` ${z}${Z}${y.reset}`,v>0)H+=` ${W.git.clean}${d.gitAhead}${v}${y.reset}`;if(G>0)H+=` ${W.git.dirty}${d.gitBehind}${G}${y.reset}`;return H}async isGitRepository($){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:$,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch($){try{let b=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text();if(await b.exited===0&&x.trim())return x.trim();let Z=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),z=await new Response(Z.stdout).text();if(await Z.exited===0&&z.trim())return`detached:${z.trim()}`;return null}catch{return null}}async getStatus($){try{let b=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text();if(await b.exited!==0)return{status:d.gitClean,statusColor:W.git.clean};let Z=x.trim();if(!Z)return{status:d.gitClean,statusColor:W.git.clean};if(Z.includes("UU")||Z.includes("AA")||Z.includes("DD"))return{status:d.gitConflict,statusColor:W.git.conflict};return{status:d.gitDirty,statusColor:W.git.dirty}}catch{return{status:d.gitClean,statusColor:W.git.clean}}}async getAheadBehind($){try{let b=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text(),Z=await b.exited===0?parseInt(x.trim(),10)||0:0,z=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),v=await new Response(z.stdout).text(),Y=await z.exited===0?parseInt(v.trim(),10)||0:0;return{ahead:Z,behind:Y}}catch{return{ahead:0,behind:0}}}}var O0=U(()=>{u()});class A${id="model";render($){let b=$.model.id,x=y2[b]||this.simplifyModelName($.model.display_name),q=r("model");return`${W.model.icon}${q}${y.reset} ${W.model.text}${x}${y.reset}`}simplifyModelName($){let b=$.replace(/^Claude\s+/i,"");return b=b.replace(/-\d{8}$/,""),b}}var y2;var T0=U(()=>{u();y2={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"}});var r0=U(()=>{u()});import{homedir as S2}from"os";import{join as A}from"path";var{Glob:m2}=globalThis.Bun;class N${id="version";async render($){let b=await this.getClaudeCodeVersion();if(!b)return null;let x=r("version");return`${W.version.icon}${x}${y.reset} ${W.version.text}v${b}${y.reset}`}async getClaudeCodeVersion(){let $=S2(),b=[];if(f0)b.push(A($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),A($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),A($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else b.push(A($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),A($,".npm-global","lib","node_modules","@anthropic-ai","claude-code","package.json"),"/usr/local/lib/node_modules/@anthropic-ai/claude-code/package.json","/usr/lib/node_modules/@anthropic-ai/claude-code/package.json");for(let q of b){let Z=await this.readVersionFromPackage(q);if(Z)return Z}let x=[];if(f0)x.push({base:A($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:A($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else x.push({base:A($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:A($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:A($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:A($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:q,pattern:Z}of x)try{let z=new m2(Z);for await(let v of z.scan({cwd:q,absolute:!0})){let G=await this.readVersionFromPackage(v);if(G)return G}}catch{continue}return null}async readVersionFromPackage($){try{let b=Bun.file($);if(!await b.exists())return null;return(await b.json()).version||null}catch{return null}}}var f0;var R0=U(()=>{u();f0=process.platform==="win32"});class C{id="context";static cache=null;static CACHE_TTL=5000;async render($){let b=await this.getTokensWithCache($.transcript_path),x=this.getContextLimit($.model.id),Z=Math.round((b??0)/x*100),z=Math.max(0,100-Z),v=r("context"),G=this.getRemainingColor(z),Y=this.renderProgressBar(z);return`${W.context.icon}${v}${y.reset} ${G}Context Remaining: ${z}%${y.reset} ${Y}`}renderProgressBar($){let x=Math.round($/100*10),q=10-x,Z="=".repeat(x),z="-".repeat(q),v=this.getRemainingColor($);return`${V.brightBlack}[${y.reset}${v}${Z}${y.reset}${V.brightBlack}${z}]${y.reset}`}getRemainingColor($){if($<=20)return W.context.high;if($<=50)return W.context.medium;return W.context.low}async getTokensWithCache($){let b=Date.now();if(C.cache&&C.cache.path===$&&b-C.cache.timestamp<C.CACHE_TTL)return C.cache.tokens;let x=await this.parseTranscriptTokens($);return C.cache={path:$,tokens:x,timestamp:b},x}async parseTranscriptTokens($){try{let b=Bun.file($);if(!await b.exists())return null;let x=await b.text();if(!x.trim())return null;let q=x.split(`
4
- `).filter((Z)=>Z.trim());for(let Z=q.length-1;Z>=0;Z--)try{let z=JSON.parse(q[Z]);if(z.type==="assistant"&&z.message?.usage){let v=z.message.usage;return(v.input_tokens||0)+(v.output_tokens||0)+(v.cache_creation_input_tokens||0)+(v.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return V2[$]||h2}}var V2,h2=200000;var A0=U(()=>{u();V2={"claude-opus-4-5-20251101":200000,"claude-opus-4-5":200000,"claude-sonnet-4-5-20250514":200000,"claude-sonnet-4-5":200000,"claude-sonnet-4-20250514":200000,"claude-sonnet-4":200000,"claude-sonnet-3-5-20241022":200000,"claude-3-5-sonnet-20241022":200000,"claude-3-5-sonnet":200000,"claude-haiku-3-5-20241022":200000,"claude-3-5-haiku-20241022":200000,"claude-3-5-haiku":200000}});async function X$(){try{let $=await R1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let x=await(await fetch(`${g}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),Z=await(await fetch(`${g}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!x.success)return{success:!1,error:x.error||x.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let z=(Z.data||[]).map((v)=>({model:v.model,requests:v.requests,cost:v.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:x.data?.usage?.total?.requests||0,totalCost:x.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(x.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:z}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function w1($){return $.toLocaleString("en-US")}var X1=U(()=>{O()});class c{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(c.cache&&Date.now()-c.cache.timestamp<c.CACHE_TTL)return c.cache.data;try{let b=await X$();if(!b.success||!b.data)return null;let x=b.data.todayCost,q=r("todayUsage"),Z=`${W.todayUsage.icon}${q}${y.reset} ${W.todayUsage.text}Today: ${x}${y.reset}`;return c.cache={data:Z,timestamp:Date.now()},Z}catch{return null}}}var N0=U(()=>{X1();u()});var I0=U(()=>{E0();O0();T0();r0();R0();A0();N0()});class W1{separator=`${W.separator} \u2502 ${y.reset}`;render($){let b=["directory","git","model","version","today-usage"],x=["context"],q=this.renderLine($,b),Z=this.renderLine($,x);return[q,Z].filter((z)=>z.length>0).join(`
5
- `)}renderLine($,b){let x=[];for(let q of b){let Z=$.get(q);if(Z)x.push(Z)}return x.join(this.separator)}}var _0=U(()=>{u()});import{homedir as I$}from"os";import{join as W$,dirname as B2}from"path";import{mkdir as K2}from"fs/promises";function U2($,b){let x=$.split(".").map(Number),q=b.split(".").map(Number),Z=Math.max(x.length,q.length);for(let z=0;z<Z;z++){let v=x[z]||0,G=q[z]||0;if(v!==G)return v-G}return 0}async function k2(){let $=I$(),b=W$($,".tako","cli","node_modules","tako-cli","package.json");try{let x=Bun.file(b);if(!await x.exists())return null;return(await x.json()).version||null}catch{return null}}async function j2(){let $=await k2();if(!$)return!1;return U2($,L2)>=0}function E2(){let $=I$();if(P0)return W$($,".tako","bin","tako.cmd");return W$($,".tako","bin","tako")}function O2($){if(P0)return $.replace(/\\/g,"/");return $}async function q$(){if(!await j2())return;let b=W$(I$(),".claude","settings.json"),x={};try{let v=Bun.file(b);if(await v.exists())x=await v.json()}catch{}let Z={type:"command",command:`"${O2(E2())}" statusline`,padding:0},z=typeof x.statusLine==="object"&&x.statusLine!==null?x.statusLine.command:null;if(typeof z==="string"&&z.includes("tako statusline"))return;x.statusLine=Z,await K2(B2(b),{recursive:!0}),await Bun.write(b,JSON.stringify(x,null,2))}async function _$(){let $=W$(I$(),".claude","settings.json");try{let b=Bun.file($);if(!await b.exists())return;let x=await b.json(),q=typeof x.statusLine==="object"&&x.statusLine!==null?x.statusLine.command:null;if(typeof q==="string"&&q.includes("tako statusline"))delete x.statusLine,await Bun.write($,JSON.stringify(x,null,2))}catch{}}var P0,L2="0.1.48";var C0=U(()=>{P0=process.platform==="win32"});var g0={};E1(g0,{statusLineCommand:()=>r2,renderStatusLine:()=>p0,removeStatusLineConfig:()=>_$,injectStatusLineConfig:()=>q$});async function p0($){let b=await Promise.all(T2.map(async(Z)=>{try{let z=await Z.render($);return{id:Z.id,content:z}}catch{return{id:Z.id,content:null}}})),x=new Map;for(let{id:Z,content:z}of b)x.set(Z,z);return new W1().render(x)}async function r2(){try{let $=await Bun.stdin.json(),b=await p0($);console.log(b)}catch($){process.exit(0)}}var T2;var P$=U(()=>{I0();_0();C0();T2=[new f$,new R$,new A$,new N$,new C,new c]});O();import{join as S$}from"path";function d$($,b){if(!$.startsWith(I))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${b} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function G$($){let b=S$(g$,$);return d$(b,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),b}async function A1($){let b=G$($.id),x=S$(b,"node_modules",$.package,"package.json");try{let q=Bun.file(x);if(!await q.exists())return null;let z=(await q.json()).bin;if(!z)return null;let v=null;if(typeof z==="string")v=z;else if(typeof z==="object"&&z[$.command])v=z[$.command];if(!v)return null;let G=S$(b,"node_modules",$.package,v);return d$(G,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),G}catch{return null}}function N1($){let b=G$($.id),x=S$(b,"node_modules",".bin",$.command);return d$(x,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),x}var u$=new Map;function m$($){u$.set($.id,$)}function I1(){return Array.from(u$.values())}function c$($){return u$.get($)}O();var e0={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",continueArg:"--continue",getEnvVars($){return{ANTHROPIC_BASE_URL:`${g}/api`,ANTHROPIC_AUTH_TOKEN:$}}};m$(e0);import{homedir as t0}from"os";import{join as l$}from"path";O();var a$=l$(t0(),".codex"),$b=l$(a$,"config.toml"),bb=l$(a$,"auth.json"),vb=`model_provider = "crs"
3
+ var s0=Object.create;var{getPrototypeOf:o0,defineProperty:Z$,getOwnPropertyNames:k1,getOwnPropertyDescriptor:i0}=Object,U1=Object.prototype.hasOwnProperty;var S$=($,b,x)=>{x=$!=null?s0(o0($)):{};let q=b||!$||!$.__esModule?Z$(x,"default",{value:$,enumerable:!0}):x;for(let Z of k1($))if(!U1.call(q,Z))Z$(q,Z,{get:()=>$[Z],enumerable:!0});return q},L1=new WeakMap,D0=($)=>{var b=L1.get($),x;if(b)return b;if(b=Z$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")k1($).map((q)=>!U1.call(b,q)&&Z$(b,q,{get:()=>$[q],enumerable:!(x=i0($,q))||x.enumerable}));return L1.set($,b),b},E1=($,b)=>()=>(b||$((b={exports:{}}).exports,b),b.exports);var j1=($,b)=>{for(var x in b)Z$($,x,{get:b[x],enumerable:!0,configurable:!0,set:(q)=>b[x]=()=>q})};var k=($,b)=>()=>($&&(b=$($=0)),b);var f=import.meta.require;import{homedir as n0}from"os";import{join as $$}from"path";async function f1(){let $=await import("fs/promises");try{await $.mkdir(_,{recursive:!0}),await $.mkdir(F$,{recursive:!0})}catch{}}async function m(){await f1();try{let $=Bun.file(T1);if(await $.exists()){let b=await $.json();return{...O1,...b}}}catch{}return{...O1}}async function d$($){await f1(),await Bun.write(T1,JSON.stringify($,null,2))}async function s($){let x={...await m(),...$};return await d$(x),x}async function R1(){return!!(await m()).apiKey}async function W$(){return(await m()).apiKey}async function A1(){return(await m()).apiId}var _,T1,F$,P,l,E,e0,p,t2,O1;var j=k(()=>{_=$$(n0(),".tako"),T1=$$(_,"config.json"),F$=$$(_,"tools"),P=$$(_,"cli"),l=$$(_,"bun"),E=$$(l,"bin",process.platform==="win32"?"bun.exe":"bun"),e0=process.env.TAKO_SERVER||"https://claude-proxy.shiroha.tech",p=process.env.PROXY_BASE_URL||"https://claude-proxy.shiroha.tech",t2=process.env.TAKO_DEV==="true"||e0.includes("localhost"),O1={apiKey:"",apiId:"",installedClients:{}}});var i$=E1((Vv,P1)=>{var o$={to($,b){if(!b)return`\x1B[${$+1}G`;return`\x1B[${b+1};${$+1}H`},move($,b){let x="";if($<0)x+=`\x1B[${-$}D`;else if($>0)x+=`\x1B[${$}C`;if(b<0)x+=`\x1B[${-b}A`;else if(b>0)x+=`\x1B[${b}B`;return x},up:($=1)=>`\x1B[${$}A`,down:($=1)=>`\x1B[${$}B`,forward:($=1)=>`\x1B[${$}C`,backward:($=1)=>`\x1B[${$}D`,nextLine:($=1)=>"\x1B[E".repeat($),prevLine:($=1)=>"\x1B[F".repeat($),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Qb={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},Hb={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let b="";for(let x=0;x<$;x++)b+=this.line+(x<$-1?o$.up():"");if($)b+=o$.left;return b}};P1.exports={cursor:o$,scroll:Qb,erase:Hb,beep:"\x07"}});var n$=E1((hv,D$)=>{var h$=process||{},C1=h$.argv||[],V$=h$.env||{},Jb=!(!!V$.NO_COLOR||C1.includes("--no-color"))&&(!!V$.FORCE_COLOR||C1.includes("--color")||h$.platform==="win32"||(h$.stdout||{}).isTTY&&V$.TERM!=="dumb"||!!V$.CI),zb=($,b,x=$)=>(q)=>{let Z=""+q,G=Z.indexOf(b,$.length);return~G?$+Yb(Z,b,x,G)+b:$+Z+b},Yb=($,b,x,q)=>{let Z="",G=0;do Z+=$.substring(G,q)+x,G=q+b.length,q=$.indexOf(b,G);while(~q);return Z+$.substring(G)},r1=($=Jb)=>{let b=$?zb:()=>String;return{isColorSupported:$,reset:b("\x1B[0m","\x1B[0m"),bold:b("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:b("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:b("\x1B[3m","\x1B[23m"),underline:b("\x1B[4m","\x1B[24m"),inverse:b("\x1B[7m","\x1B[27m"),hidden:b("\x1B[8m","\x1B[28m"),strikethrough:b("\x1B[9m","\x1B[29m"),black:b("\x1B[30m","\x1B[39m"),red:b("\x1B[31m","\x1B[39m"),green:b("\x1B[32m","\x1B[39m"),yellow:b("\x1B[33m","\x1B[39m"),blue:b("\x1B[34m","\x1B[39m"),magenta:b("\x1B[35m","\x1B[39m"),cyan:b("\x1B[36m","\x1B[39m"),white:b("\x1B[37m","\x1B[39m"),gray:b("\x1B[90m","\x1B[39m"),bgBlack:b("\x1B[40m","\x1B[49m"),bgRed:b("\x1B[41m","\x1B[49m"),bgGreen:b("\x1B[42m","\x1B[49m"),bgYellow:b("\x1B[43m","\x1B[49m"),bgBlue:b("\x1B[44m","\x1B[49m"),bgMagenta:b("\x1B[45m","\x1B[49m"),bgCyan:b("\x1B[46m","\x1B[49m"),bgWhite:b("\x1B[47m","\x1B[49m"),blackBright:b("\x1B[90m","\x1B[39m"),redBright:b("\x1B[91m","\x1B[39m"),greenBright:b("\x1B[92m","\x1B[39m"),yellowBright:b("\x1B[93m","\x1B[39m"),blueBright:b("\x1B[94m","\x1B[39m"),magentaBright:b("\x1B[95m","\x1B[39m"),cyanBright:b("\x1B[96m","\x1B[39m"),whiteBright:b("\x1B[97m","\x1B[39m"),bgBlackBright:b("\x1B[100m","\x1B[49m"),bgRedBright:b("\x1B[101m","\x1B[49m"),bgGreenBright:b("\x1B[102m","\x1B[49m"),bgYellowBright:b("\x1B[103m","\x1B[49m"),bgBlueBright:b("\x1B[104m","\x1B[49m"),bgMagentaBright:b("\x1B[105m","\x1B[49m"),bgCyanBright:b("\x1B[106m","\x1B[49m"),bgWhiteBright:b("\x1B[107m","\x1B[49m")}};D$.exports=r1();D$.exports.createColors=r1});var H0={};j1(H0,{t:()=>H,setLocale:()=>Q1,getLocale:()=>H1,detectLocale:()=>o,clearLocaleOverride:()=>ab});function o(){if(E$)return E$;let $=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if($.toLowerCase().includes("zh")||$.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function Q1($){E$=$}function ab(){E$=null}function H($,b){let x=o(),q=$.split("."),Z=sb;for(let v of q)if(Z=Z?.[v],!Z)return $;let G=Z[x]||Z.en||$;if(b)for(let[v,Q]of Object.entries(b))G=G.replace(`{${v}}`,String(Q));return G}function H1(){return o()}var E$=null,sb;var O=k(()=>{sb={launcher:{starting:{en:"Starting {client}...",zh:"\u6B63\u5728\u542F\u52A8 {client}..."},directoryNotFound:{en:"Directory not found: {path}",zh:"\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}"},apiKeyNotConfigured:{en:"API Key not configured",zh:"API Key \u672A\u914D\u7F6E"},error:{en:"Error: {message}",zh:"\u9519\u8BEF\uFF1A{message}"}},menu:{selectAction:{en:"Select an action:",zh:"\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A"},launchClient:{en:"Launch {client}",zh:"\u542F\u52A8 {client}"},advanced:{en:"Advanced",zh:"\u9AD8\u7EA7"},advancedHint:{en:"Usage stats, configuration, etc.",zh:"\u7528\u91CF\u7EDF\u8BA1\u3001\u914D\u7F6E\u7B49"},exit:{en:"Exit",zh:"\u9000\u51FA"},advancedOptions:{en:"Advanced Options:",zh:"\u9AD8\u7EA7\u9009\u9879\uFF1A"},viewStats:{en:"View Usage Statistics",zh:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},configApiKey:{en:"Configure API Key",zh:"\u914D\u7F6E API Key"},back:{en:"Back",zh:"\u8FD4\u56DE"},changeLanguage:{en:"Change Language",zh:"\u5207\u6362\u8BED\u8A00"},currentLanguage:{en:"Current Language: {lang}",zh:"\u5F53\u524D\u8BED\u8A00\uFF1A{lang}"},languageChanged:{en:"Language changed to {lang}",zh:"\u8BED\u8A00\u5DF2\u5207\u6362\u4E3A {lang}"},enableStatusLine:{en:"Enable Statusline",zh:"\u542F\u7528\u72B6\u6001\u680F"},disableStatusLine:{en:"Disable Statusline",zh:"\u7981\u7528\u72B6\u6001\u680F"}},language:{en:{en:"English",zh:"\u82F1\u8BED"},zh:{en:"Chinese",zh:"\u4E2D\u6587"}},banner:{welcome:{en:"Welcome!",zh:"\u6B22\u8FCE\u4F7F\u7528\uFF01"}},stats:{title:{en:"\uD83D\uDCCA Usage Statistics",zh:"\uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"},totalRequests:{en:"Total Requests: {count} times",zh:"\u603B\u8C03\u7528\u6B21\u6570\uFF1A{count} \u6B21"},totalCost:{en:"Total Cost: {cost}",zh:"\u603B\u6D88\u8D39\uFF1A{cost}"},todayCost:{en:"Today's Cost: {cost}",zh:"\u4ECA\u65E5\u6D88\u8D39\uFF1A{cost}"},modelDistribution:{en:"Model Usage Distribution (Today):",zh:"\u6A21\u578B\u4F7F\u7528\u5206\u5E03\uFF08\u4ECA\u65E5\uFF09\uFF1A"},times:{en:"times",zh:"\u6B21"},refreshHint:{en:"{countdown}s until refresh | Press any key to return",zh:"{countdown}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE"},fetching:{en:"Fetching usage statistics...",zh:"\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1..."},fetchFailed:{en:"Failed to fetch: {error}",zh:"\u83B7\u53D6\u5931\u8D25\uFF1A{error}"}},prompts:{enterApiKey:{en:"Please enter your API Key:",zh:"\u8BF7\u8F93\u5165\u60A8\u7684 API Key\uFF1A"},apiKeyPlaceholder:{en:"cr_xxxxxxxx",zh:"cr_xxxxxxxx"},validating:{en:"Validating API Key...",zh:"\u6B63\u5728\u9A8C\u8BC1 API Key..."},keyInvalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},keyValidationFailed:{en:"Validation failed: {error}",zh:"\u9A8C\u8BC1\u5931\u8D25\uFF1A{error}"},keyConfigured:{en:"API Key configured successfully!",zh:"API Key \u914D\u7F6E\u6210\u529F\uFF01"}},cli:{version:{en:"Tako CLI v{version}",zh:"Tako CLI v{version}"},usage:{en:"Usage: tako [options] [command]",zh:"\u7528\u6CD5\uFF1Atako [\u9009\u9879] [\u547D\u4EE4]"},options:{en:"Options:",zh:"\u9009\u9879\uFF1A"},optionVersion:{en:" -v, --version Display version number",zh:" -v, --version \u663E\u793A\u7248\u672C\u53F7"},optionHelp:{en:" -h, --help Display help information",zh:" -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"},shortcuts:{en:"Shortcuts:",zh:"\u5FEB\u6377\u547D\u4EE4\uFF1A"},shortcutClaude:{en:" --claude Launch Claude Code directly",zh:" --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},shortcutCodex:{en:" --codex Launch Codex directly",zh:" --codex \u76F4\u63A5\u542F\u52A8 Codex"},examples:{en:"Examples:",zh:"\u793A\u4F8B\uFF1A"},exampleInteractive:{en:" tako Interactive tool selection",zh:" tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177"},exampleClaude:{en:" tako --claude Launch Claude Code directly",zh:" tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},exampleCodex:{en:" tako --codex Launch Codex directly",zh:" tako --codex \u76F4\u63A5\u542F\u52A8 Codex"},clientNotFound:{en:"{client} client not found",zh:"{client} \u5BA2\u6237\u7AEF\u672A\u627E\u5230"},cliError:{en:"Tako CLI encountered an error:",zh:"Tako CLI \u53D1\u751F\u9519\u8BEF\uFF1A"},launchFailed:{en:"Launch failed",zh:"\u542F\u52A8\u5931\u8D25"}},auth:{invalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},validationFailed:{en:"Validation failed",zh:"\u9A8C\u8BC1\u5931\u8D25"},networkError:{en:"Network request failed",zh:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}},updater:{migrating:{en:"Detected old installation, migrating...",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB..."},installingLocally:{en:"Installing to local directory...",zh:"\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."},migrationFailed:{en:"Local installation failed, skipping migration",zh:"\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"},installComplete:{en:"Local installation complete",zh:"\u672C\u5730\u5B89\u88C5\u5B8C\u6210"},migrationComplete:{en:"Detected old installation, migration complete. Please restart Tako CLI",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"},newVersionAvailable:{en:"New version v{version} available (current v{current})",zh:"\u53D1\u73B0\u65B0\u7248\u672C v{version}\uFF08\u5F53\u524D v{current}\uFF09"},pleaseRestart:{en:"Please restart Tako CLI to use the new version",zh:"\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"}},region:{usingChinaMirror:{en:"Detected China mainland network, using domestic mirror",zh:"\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"},usingGlobalMirror:{en:"Using global mirror",zh:"\u4F7F\u7528\u56FD\u9645\u6E90"}},telemetry:{toggle:{en:"Toggle Telemetry",zh:"\u5207\u6362\u9065\u6D4B"},enabled:{en:"Telemetry is enabled",zh:"\u9065\u6D4B\u5DF2\u5F00\u542F"},disabled:{en:"Telemetry is disabled",zh:"\u9065\u6D4B\u5DF2\u5173\u95ED"},description:{en:"Anonymous usage data helps us improve Tako CLI",zh:"\u533F\u540D\u4F7F\u7528\u6570\u636E\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Tako CLI"}},time:{justNow:{en:"just now",zh:"\u521A\u521A"},minutesAgo:{en:"{n}m ago",zh:"{n}\u5206\u949F\u524D"},hoursAgo:{en:"{n}h ago",zh:"{n}\u5C0F\u65F6\u524D"},yesterday:{en:"yesterday",zh:"\u6628\u5929"},daysAgo:{en:"{n}d ago",zh:"{n}\u5929\u524D"},weeksAgo:{en:"{n}w ago",zh:"{n}\u5468\u524D"},monthsAgo:{en:"{n}mo ago",zh:"{n}\u6708\u524D"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},statusline:{enabled:{en:"Statusline enabled. Restart Claude Code to apply.",zh:"\u72B6\u6001\u680F\u5DF2\u542F\u7528\u3002\u91CD\u542F Claude Code \u751F\u6548\u3002"},disabled:{en:"Statusline disabled. Restart Claude Code to apply.",zh:"\u72B6\u6001\u680F\u5DF2\u7981\u7528\u3002\u91CD\u542F Claude Code \u751F\u6548\u3002"}}}});function y2(){return process.env.NERD_FONT==="1"}function T($){let b=d[$];if(typeof b==="string")return b;return y2()?b.nerd:b.plain}var V,W,S,d;var u=k(()=>{V={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"},W={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"},S={directory:{icon:V.brightYellow,text:V.brightGreen},git:{icon:V.brightBlue,text:V.brightBlue,clean:V.brightGreen,dirty:V.brightYellow,conflict:V.brightRed},model:{icon:V.brightCyan,text:V.brightCyan},version:{icon:V.brightWhite,text:V.brightBlack},outputStyle:{icon:V.brightMagenta,text:V.brightMagenta},context:{icon:V.brightMagenta,low:V.brightGreen,medium:V.brightYellow,high:V.brightRed},todayUsage:{icon:V.brightGreen,text:V.brightGreen},separator:V.brightBlack},d={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"}});import{homedir as m2}from"os";class A${id="directory";render($){let b=this.formatPath($.workspace.current_dir),x=T("directory");return`${S.directory.icon}${x}${W.reset} ${S.directory.text}${b}${W.reset}`}formatPath($){let b=m2();if($===b)return"~";if($.startsWith(b+"/"))return"~"+$.slice(b.length);return $}}var O0=k(()=>{u()});class N${id="git";async render($){let b=$.workspace.current_dir;if(!await this.isGitRepository(b))return null;let q=await this.getBranch(b);if(!q)return null;let{status:Z,statusColor:G}=await this.getStatus(b),{ahead:v,behind:Q}=await this.getAheadBehind(b),z=T("git"),J=`${S.git.icon}${z}${W.reset} ${S.git.text}${q}${W.reset}`;if(J+=` ${G}${Z}${W.reset}`,v>0)J+=` ${S.git.clean}${d.gitAhead}${v}${W.reset}`;if(Q>0)J+=` ${S.git.dirty}${d.gitBehind}${Q}${W.reset}`;return J}async isGitRepository($){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:$,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch($){try{let b=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text();if(await b.exited===0&&x.trim())return x.trim();let Z=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),G=await new Response(Z.stdout).text();if(await Z.exited===0&&G.trim())return`detached:${G.trim()}`;return null}catch{return null}}async getStatus($){try{let b=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text();if(await b.exited!==0)return{status:d.gitClean,statusColor:S.git.clean};let Z=x.trim();if(!Z)return{status:d.gitClean,statusColor:S.git.clean};if(Z.includes("UU")||Z.includes("AA")||Z.includes("DD"))return{status:d.gitConflict,statusColor:S.git.conflict};return{status:d.gitDirty,statusColor:S.git.dirty}}catch{return{status:d.gitClean,statusColor:S.git.clean}}}async getAheadBehind($){try{let b=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(b.stdout).text(),Z=await b.exited===0?parseInt(x.trim(),10)||0:0,G=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),v=await new Response(G.stdout).text(),z=await G.exited===0?parseInt(v.trim(),10)||0:0;return{ahead:Z,behind:z}}catch{return{ahead:0,behind:0}}}}var T0=k(()=>{u()});class I${id="model";render($){let b=$.model.id,x=V2[b]||this.simplifyModelName($.model.display_name),q=T("model");return`${S.model.icon}${q}${W.reset} ${S.model.text}${x}${W.reset}`}simplifyModelName($){let b=$.replace(/^Claude\s+/i,"");return b=b.replace(/-\d{8}$/,""),b}}var V2;var f0=k(()=>{u();V2={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"}});var R0=k(()=>{u()});import{homedir as h2}from"os";import{join as N}from"path";var{Glob:B2}=globalThis.Bun;class _${id="version";async render($){let b=await this.getClaudeCodeVersion();if(!b)return null;let x=T("version");return`${S.version.icon}${x}${W.reset} ${S.version.text}v${b}${W.reset}`}async getClaudeCodeVersion(){let $=h2(),b=[];if(A0)b.push(N($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),N($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),N($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else b.push(N($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),N($,".npm-global","lib","node_modules","@anthropic-ai","claude-code","package.json"),"/usr/local/lib/node_modules/@anthropic-ai/claude-code/package.json","/usr/lib/node_modules/@anthropic-ai/claude-code/package.json");for(let q of b){let Z=await this.readVersionFromPackage(q);if(Z)return Z}let x=[];if(A0)x.push({base:N($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:N($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else x.push({base:N($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:N($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:N($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:N($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:q,pattern:Z}of x)try{let G=new B2(Z);for await(let v of G.scan({cwd:q,absolute:!0})){let Q=await this.readVersionFromPackage(v);if(Q)return Q}}catch{continue}return null}async readVersionFromPackage($){try{let b=Bun.file($);if(!await b.exists())return null;return(await b.json()).version||null}catch{return null}}}var A0;var N0=k(()=>{u();A0=process.platform==="win32"});class r{id="context";static cache=null;static CACHE_TTL=5000;async render($){let b=await this.getTokensWithCache($.transcript_path),x=this.getContextLimit($.model.id),Z=Math.round((b??0)/x*100),G=Math.max(0,100-Z),v=T("context"),Q=this.getRemainingColor(G),z=this.renderProgressBar(G);return`${S.context.icon}${v}${W.reset} ${Q}Context Remaining: ${G}%${W.reset} ${z}`}renderProgressBar($){let x=Math.round($/100*10),q=10-x,Z="=".repeat(x),G="-".repeat(q),v=this.getRemainingColor($);return`${V.brightBlack}[${W.reset}${v}${Z}${W.reset}${V.brightBlack}${G}]${W.reset}`}getRemainingColor($){if($<=20)return S.context.high;if($<=50)return S.context.medium;return S.context.low}async getTokensWithCache($){let b=Date.now();if(r.cache&&r.cache.path===$&&b-r.cache.timestamp<r.CACHE_TTL)return r.cache.tokens;let x=await this.parseTranscriptTokens($);return r.cache={path:$,tokens:x,timestamp:b},x}async parseTranscriptTokens($){try{let b=Bun.file($);if(!await b.exists())return null;let x=await b.text();if(!x.trim())return null;let q=x.split(`
4
+ `).filter((Z)=>Z.trim());for(let Z=q.length-1;Z>=0;Z--)try{let G=JSON.parse(q[Z]);if(G.type==="assistant"&&G.message?.usage){let v=G.message.usage;return(v.input_tokens||0)+(v.output_tokens||0)+(v.cache_creation_input_tokens||0)+(v.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return K2[$]||L2}}var K2,L2=200000;var I0=k(()=>{u();K2={"claude-opus-4-5-20251101":200000,"claude-opus-4-5":200000,"claude-sonnet-4-5-20250514":200000,"claude-sonnet-4-5":200000,"claude-sonnet-4-20250514":200000,"claude-sonnet-4":200000,"claude-sonnet-3-5-20241022":200000,"claude-3-5-sonnet-20241022":200000,"claude-3-5-sonnet":200000,"claude-haiku-3-5-20241022":200000,"claude-3-5-haiku-20241022":200000,"claude-3-5-haiku":200000}});async function X$(){try{let $=await A1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let x=await(await fetch(`${p}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),Z=await(await fetch(`${p}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!x.success)return{success:!1,error:x.error||x.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let G=(Z.data||[]).map((v)=>({model:v.model,requests:v.requests,cost:v.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:x.data?.usage?.total?.requests||0,totalCost:x.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(x.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:G}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function X1($){return $.toLocaleString("en-US")}var w1=k(()=>{j()});class c{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(c.cache&&Date.now()-c.cache.timestamp<c.CACHE_TTL)return c.cache.data;try{let b=await X$();if(!b.success||!b.data)return null;let x=b.data.todayCost,q=T("todayUsage"),Z=`${S.todayUsage.icon}${q}${W.reset} ${S.todayUsage.text}Today: ${x}${W.reset}`;return c.cache={data:Z,timestamp:Date.now()},Z}catch{return null}}}var _0=k(()=>{w1();u()});var P0=k(()=>{O0();T0();f0();R0();N0();I0();_0()});class S1{separator=`${S.separator} \u2502 ${W.reset}`;render($){let b=["directory","git","model","version","today-usage"],x=["context"],q=this.renderLine($,b),Z=this.renderLine($,x);return[q,Z].filter((G)=>G.length>0).join(`
5
+ `)}renderLine($,b){let x=[];for(let q of b){let Z=$.get(q);if(Z)x.push(Z)}return x.join(this.separator)}}var C0=k(()=>{u()});import{homedir as P$}from"os";import{join as w$,dirname as k2}from"path";import{mkdir as U2}from"fs/promises";function j2($,b){let x=$.split(".").map(Number),q=b.split(".").map(Number),Z=Math.max(x.length,q.length);for(let G=0;G<Z;G++){let v=x[G]||0,Q=q[G]||0;if(v!==Q)return v-Q}return 0}async function O2(){let $=P$(),b=w$($,".tako","cli","node_modules","tako-cli","package.json");try{let x=Bun.file(b);if(!await x.exists())return null;return(await x.json()).version||null}catch{return null}}async function T2(){let $=await O2();if(!$)return!1;return j2($,E2)>=0}function f2(){let $=P$();if(r0)return w$($,".tako","bin","tako.cmd");return w$($,".tako","bin","tako")}function R2($){if(r0)return $.replace(/\\/g,"/");return $}async function x$(){if(!await T2())return;let b=w$(P$(),".claude","settings.json"),x={};try{let v=Bun.file(b);if(await v.exists())x=await v.json()}catch{}let Z={type:"command",command:`"${R2(f2())}" statusline`,padding:0},G=typeof x.statusLine==="object"&&x.statusLine!==null?x.statusLine.command:null;if(typeof G==="string"&&G.includes("tako statusline"))return;x.statusLine=Z,await U2(k2(b),{recursive:!0}),await Bun.write(b,JSON.stringify(x,null,2))}async function C$(){let $=w$(P$(),".claude","settings.json");try{let b=Bun.file($);if(!await b.exists())return;let x=await b.json(),q=typeof x.statusLine==="object"&&x.statusLine!==null?x.statusLine.command:null;if(typeof q==="string"&&q.includes("tako statusline"))delete x.statusLine,await Bun.write($,JSON.stringify(x,null,2))}catch{}}var r0,E2="0.1.48";var g0=k(()=>{r0=process.platform==="win32"});var F0={};j1(F0,{statusLineCommand:()=>N2,renderStatusLine:()=>p0,removeStatusLineConfig:()=>C$,injectStatusLineConfig:()=>x$});async function p0($){let b=await Promise.all(A2.map(async(Z)=>{try{let G=await Z.render($);return{id:Z.id,content:G}}catch{return{id:Z.id,content:null}}})),x=new Map;for(let{id:Z,content:G}of b)x.set(Z,G);return new S1().render(x)}async function N2(){try{let $=await Bun.stdin.json(),b=await p0($);console.log(b)}catch($){process.exit(0)}}var A2;var r$=k(()=>{P0();C0();g0();A2=[new A$,new N$,new I$,new _$,new r,new c]});j();import{join as y$}from"path";function u$($,b){if(!$.startsWith(_))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${b} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function G$($){let b=y$(F$,$);return u$(b,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),b}async function N1($){let b=G$($.id),x=y$(b,"node_modules",$.package,"package.json");try{let q=Bun.file(x);if(!await q.exists())return null;let G=(await q.json()).bin;if(!G)return null;let v=null;if(typeof G==="string")v=G;else if(typeof G==="object"&&G[$.command])v=G[$.command];if(!v)return null;let Q=y$(b,"node_modules",$.package,v);return u$(Q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),Q}catch{return null}}function I1($){let b=G$($.id),x=y$(b,"node_modules",".bin",$.command);return u$(x,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),x}var c$=new Map;function m$($){c$.set($.id,$)}function _1(){return Array.from(c$.values())}function l$($){return c$.get($)}j();var t0={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",continueArg:"--continue",getEnvVars($){return{ANTHROPIC_BASE_URL:`${p}/api`,ANTHROPIC_AUTH_TOKEN:$}}};m$(t0);import{homedir as $b}from"os";import{join as a$}from"path";j();var s$=a$($b(),".codex"),bb=a$(s$,"config.toml"),vb=a$(s$,"auth.json"),xb=`model_provider = "crs"
6
6
  model = "gpt-5-codex"
7
7
  model_reasoning_effort = "high"
8
8
  disable_response_storage = true
@@ -10,69 +10,69 @@ preferred_auth_method = "apikey"
10
10
 
11
11
  [model_providers.crs]
12
12
  name = "crs"
13
- base_url = "${g}/openai"
13
+ base_url = "${p}/openai"
14
14
  wire_api = "responses"
15
15
  requires_openai_auth = true
16
16
  env_key = "CRS_OAI_KEY"
17
- `,xb=`{
17
+ `,qb=`{
18
18
  "OPENAI_API_KEY": null
19
19
  }
20
- `;async function qb($){let b=await import("fs/promises");try{await b.mkdir(a$,{recursive:!0})}catch{}await Bun.write($b,vb),await Bun.write(bb,xb)}var Zb={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",getEnvVars($){return{CRS_OAI_KEY:$}},setupConfigFiles:qb};m$(Zb);var k=j(o$(),1),K$=j(D$(),1);import{stdin as o1,stdout as i1}from"process";import*as l from"readline";import p1 from"readline";import{WriteStream as Yb}from"tty";function Mb({onlyFirst:$=!1}={}){let b=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(b,$?void 0:"g")}var wb=Mb();function D1($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(wb,"")}function n1($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var e1={exports:{}};(function($){var b={};$.exports=b,b.eastAsianWidth=function(q){var Z=q.charCodeAt(0),z=q.length==2?q.charCodeAt(1):0,v=Z;return 55296<=Z&&Z<=56319&&56320<=z&&z<=57343&&(Z&=1023,z&=1023,v=Z<<10|z,v+=65536),v==12288||65281<=v&&v<=65376||65504<=v&&v<=65510?"F":v==8361||65377<=v&&v<=65470||65474<=v&&v<=65479||65482<=v&&v<=65487||65490<=v&&v<=65495||65498<=v&&v<=65500||65512<=v&&v<=65518?"H":4352<=v&&v<=4447||4515<=v&&v<=4519||4602<=v&&v<=4607||9001<=v&&v<=9002||11904<=v&&v<=11929||11931<=v&&v<=12019||12032<=v&&v<=12245||12272<=v&&v<=12283||12289<=v&&v<=12350||12353<=v&&v<=12438||12441<=v&&v<=12543||12549<=v&&v<=12589||12593<=v&&v<=12686||12688<=v&&v<=12730||12736<=v&&v<=12771||12784<=v&&v<=12830||12832<=v&&v<=12871||12880<=v&&v<=13054||13056<=v&&v<=19903||19968<=v&&v<=42124||42128<=v&&v<=42182||43360<=v&&v<=43388||44032<=v&&v<=55203||55216<=v&&v<=55238||55243<=v&&v<=55291||63744<=v&&v<=64255||65040<=v&&v<=65049||65072<=v&&v<=65106||65108<=v&&v<=65126||65128<=v&&v<=65131||110592<=v&&v<=110593||127488<=v&&v<=127490||127504<=v&&v<=127546||127552<=v&&v<=127560||127568<=v&&v<=127569||131072<=v&&v<=194367||177984<=v&&v<=196605||196608<=v&&v<=262141?"W":32<=v&&v<=126||162<=v&&v<=163||165<=v&&v<=166||v==172||v==175||10214<=v&&v<=10221||10629<=v&&v<=10630?"Na":v==161||v==164||167<=v&&v<=168||v==170||173<=v&&v<=174||176<=v&&v<=180||182<=v&&v<=186||188<=v&&v<=191||v==198||v==208||215<=v&&v<=216||222<=v&&v<=225||v==230||232<=v&&v<=234||236<=v&&v<=237||v==240||242<=v&&v<=243||247<=v&&v<=250||v==252||v==254||v==257||v==273||v==275||v==283||294<=v&&v<=295||v==299||305<=v&&v<=307||v==312||319<=v&&v<=322||v==324||328<=v&&v<=331||v==333||338<=v&&v<=339||358<=v&&v<=359||v==363||v==462||v==464||v==466||v==468||v==470||v==472||v==474||v==476||v==593||v==609||v==708||v==711||713<=v&&v<=715||v==717||v==720||728<=v&&v<=731||v==733||v==735||768<=v&&v<=879||913<=v&&v<=929||931<=v&&v<=937||945<=v&&v<=961||963<=v&&v<=969||v==1025||1040<=v&&v<=1103||v==1105||v==8208||8211<=v&&v<=8214||8216<=v&&v<=8217||8220<=v&&v<=8221||8224<=v&&v<=8226||8228<=v&&v<=8231||v==8240||8242<=v&&v<=8243||v==8245||v==8251||v==8254||v==8308||v==8319||8321<=v&&v<=8324||v==8364||v==8451||v==8453||v==8457||v==8467||v==8470||8481<=v&&v<=8482||v==8486||v==8491||8531<=v&&v<=8532||8539<=v&&v<=8542||8544<=v&&v<=8555||8560<=v&&v<=8569||v==8585||8592<=v&&v<=8601||8632<=v&&v<=8633||v==8658||v==8660||v==8679||v==8704||8706<=v&&v<=8707||8711<=v&&v<=8712||v==8715||v==8719||v==8721||v==8725||v==8730||8733<=v&&v<=8736||v==8739||v==8741||8743<=v&&v<=8748||v==8750||8756<=v&&v<=8759||8764<=v&&v<=8765||v==8776||v==8780||v==8786||8800<=v&&v<=8801||8804<=v&&v<=8807||8810<=v&&v<=8811||8814<=v&&v<=8815||8834<=v&&v<=8835||8838<=v&&v<=8839||v==8853||v==8857||v==8869||v==8895||v==8978||9312<=v&&v<=9449||9451<=v&&v<=9547||9552<=v&&v<=9587||9600<=v&&v<=9615||9618<=v&&v<=9621||9632<=v&&v<=9633||9635<=v&&v<=9641||9650<=v&&v<=9651||9654<=v&&v<=9655||9660<=v&&v<=9661||9664<=v&&v<=9665||9670<=v&&v<=9672||v==9675||9678<=v&&v<=9681||9698<=v&&v<=9701||v==9711||9733<=v&&v<=9734||v==9737||9742<=v&&v<=9743||9748<=v&&v<=9749||v==9756||v==9758||v==9792||v==9794||9824<=v&&v<=9825||9827<=v&&v<=9829||9831<=v&&v<=9834||9836<=v&&v<=9837||v==9839||9886<=v&&v<=9887||9918<=v&&v<=9919||9924<=v&&v<=9933||9935<=v&&v<=9953||v==9955||9960<=v&&v<=9983||v==10045||v==10071||10102<=v&&v<=10111||11093<=v&&v<=11097||12872<=v&&v<=12879||57344<=v&&v<=63743||65024<=v&&v<=65039||v==65533||127232<=v&&v<=127242||127248<=v&&v<=127277||127280<=v&&v<=127337||127344<=v&&v<=127386||917760<=v&&v<=917999||983040<=v&&v<=1048573||1048576<=v&&v<=1114109?"A":"N"},b.characterLength=function(q){var Z=this.eastAsianWidth(q);return Z=="F"||Z=="W"||Z=="A"?2:1};function x(q){return q.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}b.length=function(q){for(var Z=x(q),z=0,v=0;v<Z.length;v++)z=z+this.characterLength(Z[v]);return z},b.slice=function(q,Z,z){textLen=b.length(q),Z=Z||0,z=z||1,Z<0&&(Z=textLen+Z),z<0&&(z=textLen+z);for(var v="",G=0,Y=x(q),H=0;H<Y.length;H++){var X=Y[H],M=b.length(X);if(G>=Z-(M==2?1:0))if(G+M<=z)v+=X;else break;G+=M}return v}})(e1);var Xb=e1.exports,Wb=n1(Xb),yb=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Sb=n1(yb);function Q$($,b={}){if(typeof $!="string"||$.length===0||(b={ambiguousIsNarrow:!0,...b},$=D1($),$.length===0))return 0;$=$.replace(Sb()," ");let x=b.ambiguousIsNarrow?1:2,q=0;for(let Z of $){let z=Z.codePointAt(0);if(z<=31||z>=127&&z<=159||z>=768&&z<=879)continue;switch(Wb.eastAsianWidth(Z)){case"F":case"W":q+=2;break;case"A":q+=x;break;default:q+=1}}return q}var n$=10,g1=($=0)=>(b)=>`\x1B[${b+$}m`,F1=($=0)=>(b)=>`\x1B[${38+$};5;${b}m`,d1=($=0)=>(b,x,q)=>`\x1B[${38+$};2;${b};${x};${q}m`,S={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(S.modifier);var mb=Object.keys(S.color),Vb=Object.keys(S.bgColor);[...mb,...Vb];function hb(){let $=new Map;for(let[b,x]of Object.entries(S)){for(let[q,Z]of Object.entries(x))S[q]={open:`\x1B[${Z[0]}m`,close:`\x1B[${Z[1]}m`},x[q]=S[q],$.set(Z[0],Z[1]);Object.defineProperty(S,b,{value:x,enumerable:!1})}return Object.defineProperty(S,"codes",{value:$,enumerable:!1}),S.color.close="\x1B[39m",S.bgColor.close="\x1B[49m",S.color.ansi=g1(),S.color.ansi256=F1(),S.color.ansi16m=d1(),S.bgColor.ansi=g1(n$),S.bgColor.ansi256=F1(n$),S.bgColor.ansi16m=d1(n$),Object.defineProperties(S,{rgbToAnsi256:{value:(b,x,q)=>b===x&&x===q?b<8?16:b>248?231:Math.round((b-8)/247*24)+232:16+36*Math.round(b/255*5)+6*Math.round(x/255*5)+Math.round(q/255*5),enumerable:!1},hexToRgb:{value:(b)=>{let x=/[a-f\d]{6}|[a-f\d]{3}/i.exec(b.toString(16));if(!x)return[0,0,0];let[q]=x;q.length===3&&(q=[...q].map((z)=>z+z).join(""));let Z=Number.parseInt(q,16);return[Z>>16&255,Z>>8&255,Z&255]},enumerable:!1},hexToAnsi256:{value:(b)=>S.rgbToAnsi256(...S.hexToRgb(b)),enumerable:!1},ansi256ToAnsi:{value:(b)=>{if(b<8)return 30+b;if(b<16)return 90+(b-8);let x,q,Z;if(b>=232)x=((b-232)*10+8)/255,q=x,Z=x;else{b-=16;let G=b%36;x=Math.floor(b/36)/5,q=Math.floor(G/6)/5,Z=G%6/5}let z=Math.max(x,q,Z)*2;if(z===0)return 30;let v=30+(Math.round(Z)<<2|Math.round(q)<<1|Math.round(x));return z===2&&(v+=60),v},enumerable:!1},rgbToAnsi:{value:(b,x,q)=>S.ansi256ToAnsi(S.rgbToAnsi256(b,x,q)),enumerable:!1},hexToAnsi:{value:(b)=>S.ansi256ToAnsi(S.hexToAnsi256(b)),enumerable:!1}}),S}var Bb=hb(),L$=new Set(["\x1B","\x9B"]),Kb=39,t$="\x07",t1="[",Lb="]",$0="m",$1=`${Lb}8;;`,u1=($)=>`${L$.values().next().value}${t1}${$}${$0}`,c1=($)=>`${L$.values().next().value}${$1}${$}${t$}`,Ub=($)=>$.split(" ").map((b)=>Q$(b)),e$=($,b,x)=>{let q=[...b],Z=!1,z=!1,v=Q$(D1($[$.length-1]));for(let[G,Y]of q.entries()){let H=Q$(Y);if(v+H<=x?$[$.length-1]+=Y:($.push(Y),v=0),L$.has(Y)&&(Z=!0,z=q.slice(G+1).join("").startsWith($1)),Z){z?Y===t$&&(Z=!1,z=!1):Y===$0&&(Z=!1);continue}v+=H,v===x&&G<q.length-1&&($.push(""),v=0)}!v&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},kb=($)=>{let b=$.split(" "),x=b.length;for(;x>0&&!(Q$(b[x-1])>0);)x--;return x===b.length?$:b.slice(0,x).join(" ")+b.slice(x).join("")},jb=($,b,x={})=>{if(x.trim!==!1&&$.trim()==="")return"";let q="",Z,z,v=Ub($),G=[""];for(let[H,X]of $.split(" ").entries()){x.trim!==!1&&(G[G.length-1]=G[G.length-1].trimStart());let M=Q$(G[G.length-1]);if(H!==0&&(M>=b&&(x.wordWrap===!1||x.trim===!1)&&(G.push(""),M=0),(M>0||x.trim===!1)&&(G[G.length-1]+=" ",M++)),x.hard&&v[H]>b){let K=b-M,a=1+Math.floor((v[H]-K-1)/b);Math.floor((v[H]-1)/b)<a&&G.push(""),e$(G,X,b);continue}if(M+v[H]>b&&M>0&&v[H]>0){if(x.wordWrap===!1&&M<b){e$(G,X,b);continue}G.push("")}if(M+v[H]>b&&x.wordWrap===!1){e$(G,X,b);continue}G[G.length-1]+=X}x.trim!==!1&&(G=G.map((H)=>kb(H)));let Y=[...G.join(`
21
- `)];for(let[H,X]of Y.entries()){if(q+=X,L$.has(X)){let{groups:K}=new RegExp(`(?:\\${t1}(?<code>\\d+)m|\\${$1}(?<uri>.*)${t$})`).exec(Y.slice(H).join(""))||{groups:{}};if(K.code!==void 0){let a=Number.parseFloat(K.code);Z=a===Kb?void 0:a}else K.uri!==void 0&&(z=K.uri.length===0?void 0:K.uri)}let M=Bb.codes.get(Number(Z));Y[H+1]===`
22
- `?(z&&(q+=c1("")),Z&&M&&(q+=u1(M))):X===`
23
- `&&(Z&&M&&(q+=u1(Z)),z&&(q+=c1(z)))}return q};function l1($,b,x){return String($).normalize().replace(/\r\n/g,`
20
+ `;async function Zb($){let b=await import("fs/promises");try{await b.mkdir(s$,{recursive:!0})}catch{}await Bun.write(bb,xb),await Bun.write(vb,qb)}var Gb={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",getEnvVars($){return{CRS_OAI_KEY:$}},setupConfigFiles:Zb};m$(Gb);var U=S$(i$(),1),K$=S$(n$(),1);import{stdin as o1,stdout as i1}from"process";import*as a from"readline";import g1 from"readline";import{WriteStream as Mb}from"tty";function Xb({onlyFirst:$=!1}={}){let b=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(b,$?void 0:"g")}var wb=Xb();function D1($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(wb,"")}function n1($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var e1={exports:{}};(function($){var b={};$.exports=b,b.eastAsianWidth=function(q){var Z=q.charCodeAt(0),G=q.length==2?q.charCodeAt(1):0,v=Z;return 55296<=Z&&Z<=56319&&56320<=G&&G<=57343&&(Z&=1023,G&=1023,v=Z<<10|G,v+=65536),v==12288||65281<=v&&v<=65376||65504<=v&&v<=65510?"F":v==8361||65377<=v&&v<=65470||65474<=v&&v<=65479||65482<=v&&v<=65487||65490<=v&&v<=65495||65498<=v&&v<=65500||65512<=v&&v<=65518?"H":4352<=v&&v<=4447||4515<=v&&v<=4519||4602<=v&&v<=4607||9001<=v&&v<=9002||11904<=v&&v<=11929||11931<=v&&v<=12019||12032<=v&&v<=12245||12272<=v&&v<=12283||12289<=v&&v<=12350||12353<=v&&v<=12438||12441<=v&&v<=12543||12549<=v&&v<=12589||12593<=v&&v<=12686||12688<=v&&v<=12730||12736<=v&&v<=12771||12784<=v&&v<=12830||12832<=v&&v<=12871||12880<=v&&v<=13054||13056<=v&&v<=19903||19968<=v&&v<=42124||42128<=v&&v<=42182||43360<=v&&v<=43388||44032<=v&&v<=55203||55216<=v&&v<=55238||55243<=v&&v<=55291||63744<=v&&v<=64255||65040<=v&&v<=65049||65072<=v&&v<=65106||65108<=v&&v<=65126||65128<=v&&v<=65131||110592<=v&&v<=110593||127488<=v&&v<=127490||127504<=v&&v<=127546||127552<=v&&v<=127560||127568<=v&&v<=127569||131072<=v&&v<=194367||177984<=v&&v<=196605||196608<=v&&v<=262141?"W":32<=v&&v<=126||162<=v&&v<=163||165<=v&&v<=166||v==172||v==175||10214<=v&&v<=10221||10629<=v&&v<=10630?"Na":v==161||v==164||167<=v&&v<=168||v==170||173<=v&&v<=174||176<=v&&v<=180||182<=v&&v<=186||188<=v&&v<=191||v==198||v==208||215<=v&&v<=216||222<=v&&v<=225||v==230||232<=v&&v<=234||236<=v&&v<=237||v==240||242<=v&&v<=243||247<=v&&v<=250||v==252||v==254||v==257||v==273||v==275||v==283||294<=v&&v<=295||v==299||305<=v&&v<=307||v==312||319<=v&&v<=322||v==324||328<=v&&v<=331||v==333||338<=v&&v<=339||358<=v&&v<=359||v==363||v==462||v==464||v==466||v==468||v==470||v==472||v==474||v==476||v==593||v==609||v==708||v==711||713<=v&&v<=715||v==717||v==720||728<=v&&v<=731||v==733||v==735||768<=v&&v<=879||913<=v&&v<=929||931<=v&&v<=937||945<=v&&v<=961||963<=v&&v<=969||v==1025||1040<=v&&v<=1103||v==1105||v==8208||8211<=v&&v<=8214||8216<=v&&v<=8217||8220<=v&&v<=8221||8224<=v&&v<=8226||8228<=v&&v<=8231||v==8240||8242<=v&&v<=8243||v==8245||v==8251||v==8254||v==8308||v==8319||8321<=v&&v<=8324||v==8364||v==8451||v==8453||v==8457||v==8467||v==8470||8481<=v&&v<=8482||v==8486||v==8491||8531<=v&&v<=8532||8539<=v&&v<=8542||8544<=v&&v<=8555||8560<=v&&v<=8569||v==8585||8592<=v&&v<=8601||8632<=v&&v<=8633||v==8658||v==8660||v==8679||v==8704||8706<=v&&v<=8707||8711<=v&&v<=8712||v==8715||v==8719||v==8721||v==8725||v==8730||8733<=v&&v<=8736||v==8739||v==8741||8743<=v&&v<=8748||v==8750||8756<=v&&v<=8759||8764<=v&&v<=8765||v==8776||v==8780||v==8786||8800<=v&&v<=8801||8804<=v&&v<=8807||8810<=v&&v<=8811||8814<=v&&v<=8815||8834<=v&&v<=8835||8838<=v&&v<=8839||v==8853||v==8857||v==8869||v==8895||v==8978||9312<=v&&v<=9449||9451<=v&&v<=9547||9552<=v&&v<=9587||9600<=v&&v<=9615||9618<=v&&v<=9621||9632<=v&&v<=9633||9635<=v&&v<=9641||9650<=v&&v<=9651||9654<=v&&v<=9655||9660<=v&&v<=9661||9664<=v&&v<=9665||9670<=v&&v<=9672||v==9675||9678<=v&&v<=9681||9698<=v&&v<=9701||v==9711||9733<=v&&v<=9734||v==9737||9742<=v&&v<=9743||9748<=v&&v<=9749||v==9756||v==9758||v==9792||v==9794||9824<=v&&v<=9825||9827<=v&&v<=9829||9831<=v&&v<=9834||9836<=v&&v<=9837||v==9839||9886<=v&&v<=9887||9918<=v&&v<=9919||9924<=v&&v<=9933||9935<=v&&v<=9953||v==9955||9960<=v&&v<=9983||v==10045||v==10071||10102<=v&&v<=10111||11093<=v&&v<=11097||12872<=v&&v<=12879||57344<=v&&v<=63743||65024<=v&&v<=65039||v==65533||127232<=v&&v<=127242||127248<=v&&v<=127277||127280<=v&&v<=127337||127344<=v&&v<=127386||917760<=v&&v<=917999||983040<=v&&v<=1048573||1048576<=v&&v<=1114109?"A":"N"},b.characterLength=function(q){var Z=this.eastAsianWidth(q);return Z=="F"||Z=="W"||Z=="A"?2:1};function x(q){return q.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}b.length=function(q){for(var Z=x(q),G=0,v=0;v<Z.length;v++)G=G+this.characterLength(Z[v]);return G},b.slice=function(q,Z,G){textLen=b.length(q),Z=Z||0,G=G||1,Z<0&&(Z=textLen+Z),G<0&&(G=textLen+G);for(var v="",Q=0,z=x(q),J=0;J<z.length;J++){var M=z[J],X=b.length(M);if(Q>=Z-(X==2?1:0))if(Q+X<=G)v+=M;else break;Q+=X}return v}})(e1);var Sb=e1.exports,Wb=n1(Sb),yb=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},mb=n1(yb);function Q$($,b={}){if(typeof $!="string"||$.length===0||(b={ambiguousIsNarrow:!0,...b},$=D1($),$.length===0))return 0;$=$.replace(mb()," ");let x=b.ambiguousIsNarrow?1:2,q=0;for(let Z of $){let G=Z.codePointAt(0);if(G<=31||G>=127&&G<=159||G>=768&&G<=879)continue;switch(Wb.eastAsianWidth(Z)){case"F":case"W":q+=2;break;case"A":q+=x;break;default:q+=1}}return q}var e$=10,p1=($=0)=>(b)=>`\x1B[${b+$}m`,F1=($=0)=>(b)=>`\x1B[${38+$};5;${b}m`,d1=($=0)=>(b,x,q)=>`\x1B[${38+$};2;${b};${x};${q}m`,y={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(y.modifier);var Vb=Object.keys(y.color),hb=Object.keys(y.bgColor);[...Vb,...hb];function Bb(){let $=new Map;for(let[b,x]of Object.entries(y)){for(let[q,Z]of Object.entries(x))y[q]={open:`\x1B[${Z[0]}m`,close:`\x1B[${Z[1]}m`},x[q]=y[q],$.set(Z[0],Z[1]);Object.defineProperty(y,b,{value:x,enumerable:!1})}return Object.defineProperty(y,"codes",{value:$,enumerable:!1}),y.color.close="\x1B[39m",y.bgColor.close="\x1B[49m",y.color.ansi=p1(),y.color.ansi256=F1(),y.color.ansi16m=d1(),y.bgColor.ansi=p1(e$),y.bgColor.ansi256=F1(e$),y.bgColor.ansi16m=d1(e$),Object.defineProperties(y,{rgbToAnsi256:{value:(b,x,q)=>b===x&&x===q?b<8?16:b>248?231:Math.round((b-8)/247*24)+232:16+36*Math.round(b/255*5)+6*Math.round(x/255*5)+Math.round(q/255*5),enumerable:!1},hexToRgb:{value:(b)=>{let x=/[a-f\d]{6}|[a-f\d]{3}/i.exec(b.toString(16));if(!x)return[0,0,0];let[q]=x;q.length===3&&(q=[...q].map((G)=>G+G).join(""));let Z=Number.parseInt(q,16);return[Z>>16&255,Z>>8&255,Z&255]},enumerable:!1},hexToAnsi256:{value:(b)=>y.rgbToAnsi256(...y.hexToRgb(b)),enumerable:!1},ansi256ToAnsi:{value:(b)=>{if(b<8)return 30+b;if(b<16)return 90+(b-8);let x,q,Z;if(b>=232)x=((b-232)*10+8)/255,q=x,Z=x;else{b-=16;let Q=b%36;x=Math.floor(b/36)/5,q=Math.floor(Q/6)/5,Z=Q%6/5}let G=Math.max(x,q,Z)*2;if(G===0)return 30;let v=30+(Math.round(Z)<<2|Math.round(q)<<1|Math.round(x));return G===2&&(v+=60),v},enumerable:!1},rgbToAnsi:{value:(b,x,q)=>y.ansi256ToAnsi(y.rgbToAnsi256(b,x,q)),enumerable:!1},hexToAnsi:{value:(b)=>y.ansi256ToAnsi(y.hexToAnsi256(b)),enumerable:!1}}),y}var Kb=Bb(),L$=new Set(["\x1B","\x9B"]),Lb=39,$1="\x07",t1="[",kb="]",$0="m",b1=`${kb}8;;`,u1=($)=>`${L$.values().next().value}${t1}${$}${$0}`,c1=($)=>`${L$.values().next().value}${b1}${$}${$1}`,Ub=($)=>$.split(" ").map((b)=>Q$(b)),t$=($,b,x)=>{let q=[...b],Z=!1,G=!1,v=Q$(D1($[$.length-1]));for(let[Q,z]of q.entries()){let J=Q$(z);if(v+J<=x?$[$.length-1]+=z:($.push(z),v=0),L$.has(z)&&(Z=!0,G=q.slice(Q+1).join("").startsWith(b1)),Z){G?z===$1&&(Z=!1,G=!1):z===$0&&(Z=!1);continue}v+=J,v===x&&Q<q.length-1&&($.push(""),v=0)}!v&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},Eb=($)=>{let b=$.split(" "),x=b.length;for(;x>0&&!(Q$(b[x-1])>0);)x--;return x===b.length?$:b.slice(0,x).join(" ")+b.slice(x).join("")},jb=($,b,x={})=>{if(x.trim!==!1&&$.trim()==="")return"";let q="",Z,G,v=Ub($),Q=[""];for(let[J,M]of $.split(" ").entries()){x.trim!==!1&&(Q[Q.length-1]=Q[Q.length-1].trimStart());let X=Q$(Q[Q.length-1]);if(J!==0&&(X>=b&&(x.wordWrap===!1||x.trim===!1)&&(Q.push(""),X=0),(X>0||x.trim===!1)&&(Q[Q.length-1]+=" ",X++)),x.hard&&v[J]>b){let B=b-X,I=1+Math.floor((v[J]-B-1)/b);Math.floor((v[J]-1)/b)<I&&Q.push(""),t$(Q,M,b);continue}if(X+v[J]>b&&X>0&&v[J]>0){if(x.wordWrap===!1&&X<b){t$(Q,M,b);continue}Q.push("")}if(X+v[J]>b&&x.wordWrap===!1){t$(Q,M,b);continue}Q[Q.length-1]+=M}x.trim!==!1&&(Q=Q.map((J)=>Eb(J)));let z=[...Q.join(`
21
+ `)];for(let[J,M]of z.entries()){if(q+=M,L$.has(M)){let{groups:B}=new RegExp(`(?:\\${t1}(?<code>\\d+)m|\\${b1}(?<uri>.*)${$1})`).exec(z.slice(J).join(""))||{groups:{}};if(B.code!==void 0){let I=Number.parseFloat(B.code);Z=I===Lb?void 0:I}else B.uri!==void 0&&(G=B.uri.length===0?void 0:B.uri)}let X=Kb.codes.get(Number(Z));z[J+1]===`
22
+ `?(G&&(q+=c1("")),Z&&X&&(q+=u1(X))):M===`
23
+ `&&(Z&&X&&(q+=u1(Z)),G&&(q+=c1(G)))}return q};function l1($,b,x){return String($).normalize().replace(/\r\n/g,`
24
24
  `).split(`
25
25
  `).map((q)=>jb(q,b,x)).join(`
26
- `)}var Eb=Object.defineProperty,Ob=($,b,x)=>(b in $)?Eb($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,f=($,b,x)=>(Ob($,typeof b!="symbol"?b+"":b,x),x);function Tb($,b){if($===b)return;let x=$.split(`
26
+ `)}var Ob=Object.defineProperty,Tb=($,b,x)=>(b in $)?Ob($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,R=($,b,x)=>(Tb($,typeof b!="symbol"?b+"":b,x),x);function fb($,b){if($===b)return;let x=$.split(`
27
27
  `),q=b.split(`
28
- `),Z=[];for(let z=0;z<Math.max(x.length,q.length);z++)x[z]!==q[z]&&Z.push(z);return Z}var b0=Symbol("clack:cancel");function F($){return $===b0}function B$($,b){$.isTTY&&$.setRawMode(b)}var a1=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),rb=new Set(["up","down","left","right","space","enter"]);class b1{constructor({render:$,input:b=o1,output:x=i1,...q},Z=!0){f(this,"input"),f(this,"output"),f(this,"rl"),f(this,"opts"),f(this,"_track",!1),f(this,"_render"),f(this,"_cursor",0),f(this,"state","initial"),f(this,"value"),f(this,"error",""),f(this,"subscribers",new Map),f(this,"_prevFrame",""),this.opts=q,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=$.bind(this),this._track=Z,this.input=b,this.output=x}prompt(){let $=new Yb(0);return $._write=(b,x,q)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),q()},this.input.pipe($),this.rl=p1.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),p1.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),B$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((b,x)=>{this.once("submit",()=>{this.output.write(k.cursor.show),this.output.off("resize",this.render),B$(this.input,!1),b(this.value)}),this.once("cancel",()=>{this.output.write(k.cursor.show),this.output.off("resize",this.render),B$(this.input,!1),b(b0)})})}on($,b){let x=this.subscribers.get($)??[];x.push({cb:b}),this.subscribers.set($,x)}once($,b){let x=this.subscribers.get($)??[];x.push({cb:b,once:!0}),this.subscribers.set($,x)}emit($,...b){let x=this.subscribers.get($)??[],q=[];for(let Z of x)Z.cb(...b),Z.once&&q.push(()=>x.splice(x.indexOf(Z),1));for(let Z of q)Z()}unsubscribe(){this.subscribers.clear()}onKeypress($,b){if(this.state==="error"&&(this.state="active"),b?.name&&!this._track&&a1.has(b.name)&&this.emit("cursor",a1.get(b.name)),b?.name&&rb.has(b.name)&&this.emit("cursor",b.name),$&&($.toLowerCase()==="y"||$.toLowerCase()==="n")&&this.emit("confirm",$.toLowerCase()==="y"),$==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),$&&this.emit("key",$.toLowerCase()),b?.name==="return"){if(this.opts.validate){let x=this.opts.validate(this.value);x&&(this.error=x,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}$==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
28
+ `),Z=[];for(let G=0;G<Math.max(x.length,q.length);G++)x[G]!==q[G]&&Z.push(G);return Z}var b0=Symbol("clack:cancel");function F($){return $===b0}function B$($,b){$.isTTY&&$.setRawMode(b)}var a1=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),Rb=new Set(["up","down","left","right","space","enter"]);class v1{constructor({render:$,input:b=o1,output:x=i1,...q},Z=!0){R(this,"input"),R(this,"output"),R(this,"rl"),R(this,"opts"),R(this,"_track",!1),R(this,"_render"),R(this,"_cursor",0),R(this,"state","initial"),R(this,"value"),R(this,"error",""),R(this,"subscribers",new Map),R(this,"_prevFrame",""),this.opts=q,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=$.bind(this),this._track=Z,this.input=b,this.output=x}prompt(){let $=new Mb(0);return $._write=(b,x,q)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),q()},this.input.pipe($),this.rl=g1.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),g1.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),B$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((b,x)=>{this.once("submit",()=>{this.output.write(U.cursor.show),this.output.off("resize",this.render),B$(this.input,!1),b(this.value)}),this.once("cancel",()=>{this.output.write(U.cursor.show),this.output.off("resize",this.render),B$(this.input,!1),b(b0)})})}on($,b){let x=this.subscribers.get($)??[];x.push({cb:b}),this.subscribers.set($,x)}once($,b){let x=this.subscribers.get($)??[];x.push({cb:b,once:!0}),this.subscribers.set($,x)}emit($,...b){let x=this.subscribers.get($)??[],q=[];for(let Z of x)Z.cb(...b),Z.once&&q.push(()=>x.splice(x.indexOf(Z),1));for(let Z of q)Z()}unsubscribe(){this.subscribers.clear()}onKeypress($,b){if(this.state==="error"&&(this.state="active"),b?.name&&!this._track&&a1.has(b.name)&&this.emit("cursor",a1.get(b.name)),b?.name&&Rb.has(b.name)&&this.emit("cursor",b.name),$&&($.toLowerCase()==="y"||$.toLowerCase()==="n")&&this.emit("confirm",$.toLowerCase()==="y"),$==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),$&&this.emit("key",$.toLowerCase()),b?.name==="return"){if(this.opts.validate){let x=this.opts.validate(this.value);x&&(this.error=x,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}$==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
29
29
  `),B$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=l1(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
30
- `).length-1;this.output.write(k.cursor.move(-999,$*-1))}render(){let $=l1(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(k.cursor.hide);else{let b=Tb(this._prevFrame,$);if(this.restoreCursor(),b&&b?.length===1){let x=b[0];this.output.write(k.cursor.move(0,x)),this.output.write(k.erase.lines(1));let q=$.split(`
31
- `);this.output.write(q[x]),this._prevFrame=$,this.output.write(k.cursor.move(0,q.length-x-1));return}else if(b&&b?.length>1){let x=b[0];this.output.write(k.cursor.move(0,x)),this.output.write(k.erase.down());let q=$.split(`
30
+ `).length-1;this.output.write(U.cursor.move(-999,$*-1))}render(){let $=l1(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(U.cursor.hide);else{let b=fb(this._prevFrame,$);if(this.restoreCursor(),b&&b?.length===1){let x=b[0];this.output.write(U.cursor.move(0,x)),this.output.write(U.erase.lines(1));let q=$.split(`
31
+ `);this.output.write(q[x]),this._prevFrame=$,this.output.write(U.cursor.move(0,q.length-x-1));return}else if(b&&b?.length>1){let x=b[0];this.output.write(U.cursor.move(0,x)),this.output.write(U.erase.down());let q=$.split(`
32
32
  `).slice(x);this.output.write(q.join(`
33
- `)),this._prevFrame=$;return}this.output.write(k.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}var fb=Object.defineProperty,Rb=($,b,x)=>(b in $)?fb($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,s1=($,b,x)=>(Rb($,typeof b!="symbol"?b+"":b,x),x),v0=class extends b1{constructor($){super($,!1),s1(this,"options"),s1(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:b})=>b===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(b)=>{switch(b){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var Ab=Object.defineProperty,Nb=($,b,x)=>(b in $)?Ab($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,Ib=($,b,x)=>(Nb($,typeof b!="symbol"?b+"":b,x),x);class v1 extends b1{constructor($){super($),Ib(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=$.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${K$.default.inverse(K$.default.hidden("_"))}`;else{let b=this.value.slice(0,this.cursor),x=this.value.slice(this.cursor);this.valueWithCursor=`${b}${K$.default.inverse(x[0])}${x.slice(1)}`}})}get cursor(){return this._cursor}}var _b=globalThis.process.platform.startsWith("win");function x0({input:$=o1,output:b=i1,overwrite:x=!0,hideCursor:q=!0}={}){let Z=l.createInterface({input:$,output:b,prompt:"",tabSize:1});l.emitKeypressEvents($,Z),$.isTTY&&$.setRawMode(!0);let z=(v,{name:G})=>{if(String(v)==="\x03"){q&&b.write(k.cursor.show),process.exit(0);return}if(!x)return;l.moveCursor(b,G==="return"?0:-1,G==="return"?-1:0,()=>{l.clearLine(b,1,()=>{$.once("keypress",z)})})};return q&&b.write(k.cursor.hide),$.once("keypress",z),()=>{$.off("keypress",z),q&&b.write(k.cursor.show),$.isTTY&&!_b&&$.setRawMode(!1),Z.terminal=!1,Z.close()}}var J=j(D$(),1),x$=j(o$(),1);import R from"process";function Pb(){return R.platform!=="win32"?R.env.TERM!=="linux":Boolean(R.env.CI)||Boolean(R.env.WT_SESSION)||Boolean(R.env.TERMINUS_SUBLIME)||R.env.ConEmuTask==="{cmd::Cmder}"||R.env.TERM_PROGRAM==="Terminus-Sublime"||R.env.TERM_PROGRAM==="vscode"||R.env.TERM==="xterm-256color"||R.env.TERM==="alacritty"||R.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var x1=Pb(),B=($,b)=>x1?$:b,Cb=B("\u25C6","*"),q0=B("\u25A0","x"),Z0=B("\u25B2","x"),q1=B("\u25C7","o"),rv=B("\u250C","T"),L=B("\u2502","|"),U$=B("\u2514","\u2014"),pb=B("\u25CF",">"),gb=B("\u25CB"," "),fv=B("\u25FB","[\u2022]"),Rv=B("\u25FC","[+]"),Av=B("\u25FB","[ ]"),Nv=B("\u25AA","\u2022"),Iv=B("\u2500","-"),_v=B("\u256E","+"),Pv=B("\u251C","+"),Cv=B("\u256F","+"),Fb=B("\u25CF","\u2022"),db=B("\u25C6","*"),ub=B("\u25B2","!"),cb=B("\u25A0","x"),z0=($)=>{switch($){case"initial":case"active":return J.default.cyan(Cb);case"cancel":return J.default.red(q0);case"error":return J.default.yellow(Z0);case"submit":return J.default.green(q1)}},G0=($)=>new v1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let b=`${J.default.gray(L)}
34
- ${z0(this.state)} ${$.message}
35
- `,x=$.placeholder?J.default.inverse($.placeholder[0])+J.default.dim($.placeholder.slice(1)):J.default.inverse(J.default.hidden("_")),q=this.value?this.valueWithCursor:x;switch(this.state){case"error":return`${b.trim()}
36
- ${J.default.yellow(L)} ${q}
37
- ${J.default.yellow(U$)} ${J.default.yellow(this.error)}
38
- `;case"submit":return`${b}${J.default.gray(L)} ${J.default.dim(this.value||$.placeholder)}`;case"cancel":return`${b}${J.default.gray(L)} ${J.default.strikethrough(J.default.dim(this.value??""))}${this.value?.trim()?`
39
- `+J.default.gray(L):""}`;default:return`${b}${J.default.cyan(L)} ${q}
40
- ${J.default.cyan(U$)}
41
- `}}}).prompt();var H$=($)=>{let b=(q,Z)=>{let z=q.label??String(q.value);return Z==="active"?`${J.default.green(pb)} ${z} ${q.hint?J.default.dim(`(${q.hint})`):""}`:Z==="selected"?`${J.default.dim(z)}`:Z==="cancelled"?`${J.default.strikethrough(J.default.dim(z))}`:`${J.default.dim(gb)} ${J.default.dim(z)}`},x=0;return new v0({options:$.options,initialValue:$.initialValue,render(){let q=`${J.default.gray(L)}
42
- ${z0(this.state)} ${$.message}
43
- `;switch(this.state){case"submit":return`${q}${J.default.gray(L)} ${b(this.options[this.cursor],"selected")}`;case"cancel":return`${q}${J.default.gray(L)} ${b(this.options[this.cursor],"cancelled")}
44
- ${J.default.gray(L)}`;default:{let Z=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=x+Z-3?x=Math.max(Math.min(this.cursor-Z+3,this.options.length-Z),0):this.cursor<x+2&&(x=Math.max(this.cursor-2,0));let z=Z<this.options.length&&x>0,v=Z<this.options.length&&x+Z<this.options.length;return`${q}${J.default.cyan(L)} ${this.options.slice(x,x+Z).map((G,Y,H)=>Y===0&&z?J.default.dim("..."):Y===H.length-1&&v?J.default.dim("..."):b(G,Y+x===this.cursor?"active":"inactive")).join(`
45
- ${J.default.cyan(L)} `)}
46
- ${J.default.cyan(U$)}
47
- `}}}}).prompt()};var Z1=($="")=>{process.stdout.write(`${J.default.gray(L)}
48
- ${J.default.gray(U$)} ${$}
33
+ `)),this._prevFrame=$;return}this.output.write(U.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}var Ab=Object.defineProperty,Nb=($,b,x)=>(b in $)?Ab($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,s1=($,b,x)=>(Nb($,typeof b!="symbol"?b+"":b,x),x),v0=class extends v1{constructor($){super($,!1),s1(this,"options"),s1(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:b})=>b===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(b)=>{switch(b){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var Ib=Object.defineProperty,_b=($,b,x)=>(b in $)?Ib($,b,{enumerable:!0,configurable:!0,writable:!0,value:x}):$[b]=x,Pb=($,b,x)=>(_b($,typeof b!="symbol"?b+"":b,x),x);class x1 extends v1{constructor($){super($),Pb(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=$.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${K$.default.inverse(K$.default.hidden("_"))}`;else{let b=this.value.slice(0,this.cursor),x=this.value.slice(this.cursor);this.valueWithCursor=`${b}${K$.default.inverse(x[0])}${x.slice(1)}`}})}get cursor(){return this._cursor}}var Cb=globalThis.process.platform.startsWith("win");function x0({input:$=o1,output:b=i1,overwrite:x=!0,hideCursor:q=!0}={}){let Z=a.createInterface({input:$,output:b,prompt:"",tabSize:1});a.emitKeypressEvents($,Z),$.isTTY&&$.setRawMode(!0);let G=(v,{name:Q})=>{if(String(v)==="\x03"){q&&b.write(U.cursor.show),process.exit(0);return}if(!x)return;a.moveCursor(b,Q==="return"?0:-1,Q==="return"?-1:0,()=>{a.clearLine(b,1,()=>{$.once("keypress",G)})})};return q&&b.write(U.cursor.hide),$.once("keypress",G),()=>{$.off("keypress",G),q&&b.write(U.cursor.show),$.isTTY&&!Cb&&$.setRawMode(!1),Z.terminal=!1,Z.close()}}var Y=S$(n$(),1),b$=S$(i$(),1);import A from"process";function rb(){return A.platform!=="win32"?A.env.TERM!=="linux":Boolean(A.env.CI)||Boolean(A.env.WT_SESSION)||Boolean(A.env.TERMINUS_SUBLIME)||A.env.ConEmuTask==="{cmd::Cmder}"||A.env.TERM_PROGRAM==="Terminus-Sublime"||A.env.TERM_PROGRAM==="vscode"||A.env.TERM==="xterm-256color"||A.env.TERM==="alacritty"||A.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var q1=rb(),K=($,b)=>q1?$:b,gb=K("\u25C6","*"),q0=K("\u25A0","x"),Z0=K("\u25B2","x"),Z1=K("\u25C7","o"),Nv=K("\u250C","T"),L=K("\u2502","|"),k$=K("\u2514","\u2014"),pb=K("\u25CF",">"),Fb=K("\u25CB"," "),Iv=K("\u25FB","[\u2022]"),_v=K("\u25FC","[+]"),Pv=K("\u25FB","[ ]"),Cv=K("\u25AA","\u2022"),rv=K("\u2500","-"),gv=K("\u256E","+"),pv=K("\u251C","+"),Fv=K("\u256F","+"),db=K("\u25CF","\u2022"),ub=K("\u25C6","*"),cb=K("\u25B2","!"),lb=K("\u25A0","x"),G0=($)=>{switch($){case"initial":case"active":return Y.default.cyan(gb);case"cancel":return Y.default.red(q0);case"error":return Y.default.yellow(Z0);case"submit":return Y.default.green(Z1)}},Q0=($)=>new x1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let b=`${Y.default.gray(L)}
34
+ ${G0(this.state)} ${$.message}
35
+ `,x=$.placeholder?Y.default.inverse($.placeholder[0])+Y.default.dim($.placeholder.slice(1)):Y.default.inverse(Y.default.hidden("_")),q=this.value?this.valueWithCursor:x;switch(this.state){case"error":return`${b.trim()}
36
+ ${Y.default.yellow(L)} ${q}
37
+ ${Y.default.yellow(k$)} ${Y.default.yellow(this.error)}
38
+ `;case"submit":return`${b}${Y.default.gray(L)} ${Y.default.dim(this.value||$.placeholder)}`;case"cancel":return`${b}${Y.default.gray(L)} ${Y.default.strikethrough(Y.default.dim(this.value??""))}${this.value?.trim()?`
39
+ `+Y.default.gray(L):""}`;default:return`${b}${Y.default.cyan(L)} ${q}
40
+ ${Y.default.cyan(k$)}
41
+ `}}}).prompt();var H$=($)=>{let b=(q,Z)=>{let G=q.label??String(q.value);return Z==="active"?`${Y.default.green(pb)} ${G} ${q.hint?Y.default.dim(`(${q.hint})`):""}`:Z==="selected"?`${Y.default.dim(G)}`:Z==="cancelled"?`${Y.default.strikethrough(Y.default.dim(G))}`:`${Y.default.dim(Fb)} ${Y.default.dim(G)}`},x=0;return new v0({options:$.options,initialValue:$.initialValue,render(){let q=`${Y.default.gray(L)}
42
+ ${G0(this.state)} ${$.message}
43
+ `;switch(this.state){case"submit":return`${q}${Y.default.gray(L)} ${b(this.options[this.cursor],"selected")}`;case"cancel":return`${q}${Y.default.gray(L)} ${b(this.options[this.cursor],"cancelled")}
44
+ ${Y.default.gray(L)}`;default:{let Z=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=x+Z-3?x=Math.max(Math.min(this.cursor-Z+3,this.options.length-Z),0):this.cursor<x+2&&(x=Math.max(this.cursor-2,0));let G=Z<this.options.length&&x>0,v=Z<this.options.length&&x+Z<this.options.length;return`${q}${Y.default.cyan(L)} ${this.options.slice(x,x+Z).map((Q,z,J)=>z===0&&G?Y.default.dim("..."):z===J.length-1&&v?Y.default.dim("..."):b(Q,z+x===this.cursor?"active":"inactive")).join(`
45
+ ${Y.default.cyan(L)} `)}
46
+ ${Y.default.cyan(k$)}
47
+ `}}}}).prompt()};var G1=($="")=>{process.stdout.write(`${Y.default.gray(L)}
48
+ ${Y.default.gray(k$)} ${$}
49
49
 
50
- `)},w={message:($="",{symbol:b=J.default.gray(L)}={})=>{let x=[`${J.default.gray(L)}`];if($){let[q,...Z]=$.split(`
51
- `);x.push(`${b} ${q}`,...Z.map((z)=>`${J.default.gray(L)} ${z}`))}process.stdout.write(`${x.join(`
50
+ `)},w={message:($="",{symbol:b=Y.default.gray(L)}={})=>{let x=[`${Y.default.gray(L)}`];if($){let[q,...Z]=$.split(`
51
+ `);x.push(`${b} ${q}`,...Z.map((G)=>`${Y.default.gray(L)} ${G}`))}process.stdout.write(`${x.join(`
52
52
  `)}
53
- `)},info:($)=>{w.message($,{symbol:J.default.blue(Fb)})},success:($)=>{w.message($,{symbol:J.default.green(db)})},step:($)=>{w.message($,{symbol:J.default.green(q1)})},warn:($)=>{w.message($,{symbol:J.default.yellow(ub)})},warning:($)=>{w.warn($)},error:($)=>{w.message($,{symbol:J.default.red(cb)})}},P=()=>{let $=x1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],b=x1?80:120,x,q,Z=!1,z="",v=(X="")=>{Z=!0,x=x0(),z=X.replace(/\.+$/,""),process.stdout.write(`${J.default.gray(L)}
54
- `);let M=0,K=0;q=setInterval(()=>{let a=J.default.magenta($[M]),$$=".".repeat(Math.floor(K)).slice(0,3);process.stdout.write(x$.cursor.move(-999,0)),process.stdout.write(x$.erase.down(1)),process.stdout.write(`${a} ${z}${$$}`),M=M+1<$.length?M+1:0,K=K<$.length?K+0.125:0},b)},G=(X="",M=0)=>{z=X??z,Z=!1,clearInterval(q);let K=M===0?J.default.green(q1):M===1?J.default.red(q0):J.default.red(Z0);process.stdout.write(x$.cursor.move(-999,0)),process.stdout.write(x$.erase.down(1)),process.stdout.write(`${K} ${z}
55
- `),x()},Y=(X="")=>{z=X??z},H=(X)=>{let M=X>1?"Something went wrong":"Canceled";Z&&G(M,X)};return process.on("uncaughtExceptionMonitor",()=>H(2)),process.on("unhandledRejection",()=>H(2)),process.on("SIGINT",()=>H(1)),process.on("SIGTERM",()=>H(1)),process.on("exit",H),{start:v,stop:G,message:Y}};O();import{join as J1}from"path";O();T();var E$=null,Q1={cn:{npm:"https://registry.npmmirror.com",bun:"https://bun.sh/install",bunMirror:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bun:"https://bun.sh/install",bunMirror:null}};async function D(){if(E$)return E$;let $=[sb,ob,ib];for(let b of $)try{let x=await Promise.race([b(),new Promise((q,Z)=>setTimeout(()=>Z(Error("timeout")),3000))]);if(x)return E$=x,x}catch{}return E$="cn","cn"}async function sb(){try{let $=await fetch("http://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function ob(){try{let $=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country==="CN"?"cn":"global"}catch{return null}}async function ib(){try{let $=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Db(){let $=await D();return Q1[$]}async function n(){return(await Db()).npm}async function H0(){if(await D()==="cn")return`curl -fsSL https://bun.sh/install | BUN_INSTALL_MIRROR="${Q1.cn.bunMirror}" bash`;return"curl -fsSL https://bun.sh/install | bash"}async function J0(){let $=await D(),b=Q1[$];if($==="cn")w.info(Q("region.usingChinaMirror")),w.message(` npm: ${b.npm}`);else w.info(Q("region.usingGlobalMirror"))}var nb=class{constructor($){this.baseUrl=$.baseUrl,this.headers={"Content-Type":"application/json",...$.defaultHeaders},this.maxRetries=$.maxRetries??3,this.initialRetryDelay=$.initialRetryDelay??500}async resolveHeaders(){let $={};for(let[b,x]of Object.entries(this.headers)){let q=await x;q!==null&&($[b]=q)}return $}addHeader($,b){this.headers[$]=b}async post($,b,x,q){try{let Z=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:b?JSON.stringify(b??{}):void 0,keepalive:!0,...x});if(Z.status===401)return null;if(Z.status!==200&&Z.status!==202)throw Error(`HTTP error! status: ${Z.status}`);let z=await Z.text();return z?JSON.parse(z):null}catch(Z){if(q<this.maxRetries){let z=this.initialRetryDelay*2**q;return await new Promise((v)=>setTimeout(v,z)),this.post($,b,x,q+1)}return console.error("Max retries reached:",Z),null}}async fetch($,b,x={}){let q=`${this.baseUrl}${$}`;return this.post(q,b,x,0)}},Y0=class{constructor($){this.options=$,this.queue=[];let b={"openpanel-client-id":$.clientId};$.clientSecret&&(b["openpanel-client-secret"]=$.clientSecret),b["openpanel-sdk-name"]=$.sdk||"node",b["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new nb({baseUrl:$.apiUrl||"https://api.openpanel.dev",defaultHeaders:b})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send($){return this.options.disabled||this.options.filter&&!this.options.filter($)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push($),Promise.resolve()):this.api.fetch("/track",$)}setGlobalProperties($){this.global={...this.global,...$}}async track($,b){return this.log("track event",$,b),this.send({type:"track",payload:{name:$,profileId:b?.profileId??this.profileId,properties:{...this.global??{},...b??{}}}})}async identify($){if(this.log("identify user",$),$.profileId&&(this.profileId=$.profileId,this.flush()),Object.keys($).length>1)return this.send({type:"identify",payload:{...$,properties:{...this.global,...$.properties}}})}async alias($){}async increment($){return this.send({type:"increment",payload:$})}async decrement($){return this.send({type:"decrement",payload:$})}async revenue($,b){let x=b?.deviceId;return delete b?.deviceId,this.track("revenue",{...b??{},...x?{__deviceId:x}:{},__revenue:$})}async fetchDeviceId(){return(await this.api.fetch("/track/device-id",void 0,{method:"GET",keepalive:!1}))?.deviceId??""}clear(){this.profileId=void 0}flush(){this.queue.forEach(($)=>{this.send({...$,payload:{...$.payload,profileId:$.payload.profileId??this.profileId}})}),this.queue=[]}log(...$){this.options.debug&&console.log("[OpenPanel.dev]",...$)}};var eb="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",tb="sec_3038f0cb74f91312f374",$2="https://op.shiroha.tech/api",J$=null;function H1(){if(!J$)J$=new Y0({clientId:eb,clientSecret:tb,apiUrl:$2});return J$}async function M0(){if(J$)try{J$=null}catch{}}O();T();T();var b2="0.1.49";function w0(){return{cli_version:b2,platform:process.platform,arch:process.arch,locale:i(),node_version:process.version}}function X0($){return Bun.hash($).toString(16).slice(0,8)}var v2="0.1.49",W0=!1,Y$=null;async function y0(){if(Y$!==null)return Y$;try{return Y$=(await m()).telemetryEnabled!==!1,Y$}catch{return Y$=!1,!1}}async function x2(){try{return(await m()).apiId||"anonymous"}catch{return"anonymous"}}async function O$(){if(W0)return;try{if(!await y0())return;let $=await m();if(!$.apiId)return;let b=H1(),x=await D();await b.identify({profileId:$.apiId,properties:{region:x,locale:i(),first_seen_version:v2,platform:process.platform,arch:process.arch}}),W0=!0}catch{}}function h($,b){q2($,b).catch(()=>{})}async function q2($,b){try{if(!await y0())return;let x=H1(),q=await x2();await x.track($,{profileId:q,properties:{...w0(),...b}})}catch{}}async function M$(){await M0()}var e=null;function Z2($){return $.startsWith(s)}async function z2(){try{if(!await Bun.file(E).exists())return null;let b=Bun.spawn([E,"--version"],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode!==0)return null;return(await new Response(b.stdout).text()).trim()}catch{return null}}async function m0(){return await z2()!==null}async function G2(){if(process.platform==="win32")return!0;try{let b=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode===0)return!0}catch{}w.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let $=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let b of $)try{let x=Bun.spawn(["bash","-c",`sudo ${b} 2>/dev/null || ${b}`],{stdout:"pipe",stderr:"pipe"});if(await x.exited,x.exitCode===0)return!0}catch{}return!1}async function Q2(){let $=P();if(!await G2())return w.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await J0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{await(await import("fs/promises")).mkdir(s,{recursive:!0});let x;if(process.platform==="win32"){let Z=await D()==="cn"?'$env:BUN_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/bun"; ':"",z=`$env:BUN_INSTALL="${s}"; ${Z}irm bun.sh/install.ps1 | iex`;x=await Bun.spawn(["powershell","-Command",z],{stdout:"inherit",stderr:"inherit"}).exited}else{let q=await H0(),Z=`BUN_INSTALL="${s}" ${q}`;x=await Bun.spawn(["bash","-c",Z],{stdout:"inherit",stderr:"inherit"}).exited}if(x!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1;return e=E,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),w.info(`\u5B89\u88C5\u4F4D\u7F6E: ${s}`),!0}catch(b){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function H2(){if(await m0())return e=E,!0;return w.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),w.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await Q2()}async function Y1(){if(e){if(!Z2(e))e=E;return e}if(await m0())return e=E,E;return E}async function V0($){try{let b=await n(),x=await fetch(`${b}/${$}/latest`);if(!x.ok)return null;return(await x.json()).version}catch{return null}}async function J2($){return(await m()).installedClients[$.id]?.version||null}async function h0($){let b=G$($.id),x=J1(b,"package.json");try{return await Bun.file(x).exists()}catch{return!1}}async function B0($){let b=await J2($);if(!b)return!0;let x=await V0($.package);if(!x)return!1;return b!==x}async function S0($,b=!1){let x=P(),q=G$($.id);try{if(!await H2())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};let Z=await h0($),z=b||await B0($);if(Z&&!z)return{success:!0};let v=Z?"\u66F4\u65B0":"\u5B89\u88C5";x.start(`\u6B63\u5728${v} ${$.name}...`);let G=await import("fs/promises");await G.mkdir(q,{recursive:!0});let Y=J1(q,"package.json");if(!await Bun.file(Y).exists())await Bun.write(Y,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let X=await Y1(),M=await n();if(Z){let b$=J1(q,"bun.lock");try{await G.unlink(b$)}catch{}}let K=Bun.spawn([X,"add",`${$.package}@latest`],{cwd:q,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:M}});if(await K.exited!==0){let b$=await new Response(K.stderr).text();return x.stop(`${v} ${$.name} \u5931\u8D25`),{success:!1,error:b$}}let $$=await V0($.package),K1=(await m()).installedClients[$.id]?.version;if($$){let b$=await m();if(b$.installedClients[$.id]={version:$$,installedAt:new Date().toISOString()},await o(b$),Z&&K1)h("client_updated",{client_id:$.id,from_version:K1,to_version:$$});else h("client_installed",{client_id:$.id,client_version:$$})}return x.stop(`${$.name} ${v}\u5B8C\u6210`),{success:!0}}catch(Z){return x.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:Z instanceof Error?Z.message:"\u672A\u77E5\u9519\u8BEF"}}}async function T$($){if(!await h0($))return await S0($);if(await B0($))return await S0($,!0);return{success:!0}}O();O();import{homedir as Y2}from"os";var M2=50,M1=3;async function w$($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function r$($,b){let x=await m(),q=x.recentProjects||[],Z=new Date().toISOString(),z=q.findIndex((G)=>G.path===$);if(z>=0){let G=q[z],Y=G.clientUsage||{},H=Y[b]||{count:0,lastAt:Z};q[z]={...G,launchCount:G.launchCount+1,lastLaunchedAt:Z,lastClientId:b,clientUsage:{...Y,[b]:{count:H.count+1,lastAt:Z}}}}else q.push({path:$,launchCount:1,lastLaunchedAt:Z,lastClientId:b,clientUsage:{[b]:{count:1,lastAt:Z}}});let v=q.sort((G,Y)=>new Date(Y.lastLaunchedAt).getTime()-new Date(G.lastLaunchedAt).getTime()).slice(0,M2);x.recentProjects=v,await F$(x)}function w2($,b){let x=$.clientUsage?.[b];if(x)return new Date(x.lastAt).getTime();if($.lastClientId===b)return new Date($.lastLaunchedAt).getTime();return 0}async function K0($,b=M1,x=!0){let Z=(await m()).recentProjects||[],z=process.cwd(),G=Z.filter((H)=>{if(x&&H.path===z)return!1;return H.clientUsage?.[$]||H.lastClientId===$}).map((H)=>({...H,lastUsedTime:w2(H,$)})).sort((H,X)=>X.lastUsedTime-H.lastUsedTime),Y=[];for(let{lastUsedTime:H,...X}of G){if(Y.length>=b)break;if(await w$(X.path))Y.push(X)}return Y}async function L0(){let b=(await m()).recentProjects||[],x=process.cwd();return b.find((Z)=>Z.path===x)?.lastClientId||null}function U0($,b=25){let x=Y2(),q=$.startsWith(x)?"~"+$.slice(x.length):$;if(q.length>b){let z=q.split("/").pop()||"";if(z.length>b-4)q="..."+z.slice(-b+3);else q=`.../${z}`}return q}function k0($){let{t:b}=(T(),i0(Q0)),x=Date.now(),q=new Date($).getTime(),Z=x-q,z=Math.floor(Z/60000),v=Math.floor(Z/3600000),G=Math.floor(Z/86400000),Y=Math.floor(G/7),H=Math.floor(G/30);if(z<1)return b("time.justNow");if(z<60)return b("time.minutesAgo",{n:z});if(v<24)return b("time.hoursAgo",{n:v});if(G===1)return b("time.yesterday");if(G<7)return b("time.daysAgo",{n:G});if(G<30)return b("time.weeksAgo",{n:Y});return b("time.monthsAgo",{n:H})}T();O();async function j0($,b){try{let x=b?.projectPath||process.cwd();if(b?.projectPath){if(!await w$(b.projectPath))return{success:!1,error:`\u76EE\u5F55\u4E0D\u5B58\u5728: ${b.projectPath}`}}let q=await T$($);if(!q.success)return q;let Z=await y$();if(!Z)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if($.setupConfigFiles)await $.setupConfigFiles(Z);let z=await A1($);if(!z)z=N1($);if(!await Bun.file(z).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${z}`};await r$(x,$.id);let G=$.getEnvVars(Z),Y={...process.env,...G};w.info(`\u542F\u52A8 ${$.name}...`);let H;if($.runtime==="native")H=[z];else H=[await Y1(),z];if(b?.args&&b.args.length>0)H=[...H,...b.args];return await Bun.spawn(H,{env:Y,stdio:["inherit","inherit","inherit"],cwd:x}).exited,{success:!0}}catch(x){return{success:!1,error:x instanceof Error?x.message:"\u542F\u52A8\u5931\u8D25"}}}P$();async function Z$($,b){try{let x=b?.projectPath||process.cwd();if(b?.projectPath){if(!await w$(b.projectPath))return{success:!1,error:Q("launcher.directoryNotFound",{path:b.projectPath})}}let q=await T$($);if(!q.success)return q;let Z=await y$();if(!Z)return{success:!1,error:Q("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(Z);if($.id==="claude-code"){if((await m()).statusLineEnabled!==!1)try{await q$()}catch{}}await r$(x,$.id);let v=(await m()).installedClients[$.id]?.version;return h("client_launched",{client_id:$.id,client_version:v,project_hash:X0(x),is_recent_project:!!b?.projectPath}),w.info(Q("launcher.starting",{client:$.name})),await j0($,b)}catch(x){return{success:!1,error:x instanceof Error?x.message:"Launch failed"}}}O();T();import{join as p}from"path";var y1="tako-cli",t="0.1.49";function f2($,b){let x=$.split(".").map(Number),q=b.split(".").map(Number);for(let Z=0;Z<3;Z++){let z=x[Z]||0,v=q[Z]||0;if(z>v)return 1;if(z<v)return-1}return 0}async function R2(){try{let $=await n(),b=await fetch(`${$}/${y1}/latest`,{signal:AbortSignal.timeout(5000)});if(!b.ok)return null;return(await b.json()).version||null}catch{return null}}async function A2(){let $=await R2();if(!$)return{hasUpdate:!1,currentVersion:t};return{hasUpdate:f2($,t)>0,latestVersion:$,currentVersion:t}}async function F0(){let $=await import("fs/promises"),b=p(I,"bin"),x=p(b,"tako"),q=p(_,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(b,{recursive:!0}),process.platform==="win32"){let z=`@echo off\r
53
+ `)},info:($)=>{w.message($,{symbol:Y.default.blue(db)})},success:($)=>{w.message($,{symbol:Y.default.green(ub)})},step:($)=>{w.message($,{symbol:Y.default.green(Z1)})},warn:($)=>{w.message($,{symbol:Y.default.yellow(cb)})},warning:($)=>{w.warn($)},error:($)=>{w.message($,{symbol:Y.default.red(lb)})}},C=()=>{let $=q1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],b=q1?80:120,x,q,Z=!1,G="",v=(M="")=>{Z=!0,x=x0(),G=M.replace(/\.+$/,""),process.stdout.write(`${Y.default.gray(L)}
54
+ `);let X=0,B=0;q=setInterval(()=>{let I=Y.default.magenta($[X]),e=".".repeat(Math.floor(B)).slice(0,3);process.stdout.write(b$.cursor.move(-999,0)),process.stdout.write(b$.erase.down(1)),process.stdout.write(`${I} ${G}${e}`),X=X+1<$.length?X+1:0,B=B<$.length?B+0.125:0},b)},Q=(M="",X=0)=>{G=M??G,Z=!1,clearInterval(q);let B=X===0?Y.default.green(Z1):X===1?Y.default.red(q0):Y.default.red(Z0);process.stdout.write(b$.cursor.move(-999,0)),process.stdout.write(b$.erase.down(1)),process.stdout.write(`${B} ${G}
55
+ `),x()},z=(M="")=>{G=M??G},J=(M)=>{let X=M>1?"Something went wrong":"Canceled";Z&&Q(X,M)};return process.on("uncaughtExceptionMonitor",()=>J(2)),process.on("unhandledRejection",()=>J(2)),process.on("SIGINT",()=>J(1)),process.on("SIGTERM",()=>J(1)),process.on("exit",J),{start:v,stop:Q,message:z}};j();import{join as z1}from"path";j();O();var j$=null,O$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function v$(){if(j$)return j$;let $=[ob,ib,Db];for(let b of $)try{let x=await Promise.race([b(),new Promise((q,Z)=>setTimeout(()=>Z(Error("timeout")),3000))]);if(x)return j$=x,x}catch{}return j$="cn","cn"}async function ob(){try{let $=await fetch("http://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function ib(){try{let $=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country==="CN"?"cn":"global"}catch{return null}}async function Db(){try{let $=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function nb(){let $=await v$();return O$[$]}async function i(){return(await nb()).npm}function J0(){return"curl -fsSL https://bun.sh/install | bash"}async function eb(){let $=O$.cn.bunBinary,b=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!b.ok)throw Error(`Failed to fetch bun versions: ${b.status}`);let q=(await b.json()).map((Z)=>Z.name.replace(/\/$/,"")).filter((Z)=>/^bun-v\d+\.\d+\.\d+$/.test(Z)).sort((Z,G)=>{let v=Z.replace("bun-v","").split(".").map(Number),Q=G.replace("bun-v","").split(".").map(Number);for(let z=0;z<3;z++)if(v[z]!==Q[z])return Q[z]-v[z];return 0});if(q.length===0)throw Error("No bun versions found on mirror");return q[0]}async function z0(){let $=O$.cn.bunBinary,b=await eb(),q={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",Z=process.arch==="arm64"?"aarch64":"x64",G=`bun-${q}-${Z}`;return`${$}/${b}/${G}.zip`}async function Y0(){let $=await v$(),b=O$[$];if($==="cn")w.info(H("region.usingChinaMirror")),w.message(` npm: ${b.npm}`);else w.info(H("region.usingGlobalMirror"))}var tb=class{constructor($){this.baseUrl=$.baseUrl,this.headers={"Content-Type":"application/json",...$.defaultHeaders},this.maxRetries=$.maxRetries??3,this.initialRetryDelay=$.initialRetryDelay??500}async resolveHeaders(){let $={};for(let[b,x]of Object.entries(this.headers)){let q=await x;q!==null&&($[b]=q)}return $}addHeader($,b){this.headers[$]=b}async post($,b,x,q){try{let Z=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:b?JSON.stringify(b??{}):void 0,keepalive:!0,...x});if(Z.status===401)return null;if(Z.status!==200&&Z.status!==202)throw Error(`HTTP error! status: ${Z.status}`);let G=await Z.text();return G?JSON.parse(G):null}catch(Z){if(q<this.maxRetries){let G=this.initialRetryDelay*2**q;return await new Promise((v)=>setTimeout(v,G)),this.post($,b,x,q+1)}return console.error("Max retries reached:",Z),null}}async fetch($,b,x={}){let q=`${this.baseUrl}${$}`;return this.post(q,b,x,0)}},M0=class{constructor($){this.options=$,this.queue=[];let b={"openpanel-client-id":$.clientId};$.clientSecret&&(b["openpanel-client-secret"]=$.clientSecret),b["openpanel-sdk-name"]=$.sdk||"node",b["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new tb({baseUrl:$.apiUrl||"https://api.openpanel.dev",defaultHeaders:b})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send($){return this.options.disabled||this.options.filter&&!this.options.filter($)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push($),Promise.resolve()):this.api.fetch("/track",$)}setGlobalProperties($){this.global={...this.global,...$}}async track($,b){return this.log("track event",$,b),this.send({type:"track",payload:{name:$,profileId:b?.profileId??this.profileId,properties:{...this.global??{},...b??{}}}})}async identify($){if(this.log("identify user",$),$.profileId&&(this.profileId=$.profileId,this.flush()),Object.keys($).length>1)return this.send({type:"identify",payload:{...$,properties:{...this.global,...$.properties}}})}async alias($){}async increment($){return this.send({type:"increment",payload:$})}async decrement($){return this.send({type:"decrement",payload:$})}async revenue($,b){let x=b?.deviceId;return delete b?.deviceId,this.track("revenue",{...b??{},...x?{__deviceId:x}:{},__revenue:$})}async fetchDeviceId(){return(await this.api.fetch("/track/device-id",void 0,{method:"GET",keepalive:!1}))?.deviceId??""}clear(){this.profileId=void 0}flush(){this.queue.forEach(($)=>{this.send({...$,payload:{...$.payload,profileId:$.payload.profileId??this.profileId}})}),this.queue=[]}log(...$){this.options.debug&&console.log("[OpenPanel.dev]",...$)}};var $2="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",b2="sec_3038f0cb74f91312f374",v2="https://op.shiroha.tech/api",J$=null;function J1(){if(!J$)J$=new M0({clientId:$2,clientSecret:b2,apiUrl:v2});return J$}async function X0(){if(J$)try{J$=null}catch{}}j();O();O();var x2="0.1.50";function w0(){return{cli_version:x2,platform:process.platform,arch:process.arch,locale:o(),node_version:process.version}}function S0($){return Bun.hash($).toString(16).slice(0,8)}var q2="0.1.50",W0=!1,z$=null;async function y0(){if(z$!==null)return z$;try{return z$=(await m()).telemetryEnabled!==!1,z$}catch{return z$=!1,!1}}async function Z2(){try{return(await m()).apiId||"anonymous"}catch{return"anonymous"}}async function T$(){if(W0)return;try{if(!await y0())return;let $=await m();if(!$.apiId)return;let b=J1(),x=await v$();await b.identify({profileId:$.apiId,properties:{region:x,locale:o(),first_seen_version:q2,platform:process.platform,arch:process.arch}}),W0=!0}catch{}}function h($,b){G2($,b).catch(()=>{})}async function G2($,b){try{if(!await y0())return;let x=J1(),q=await Z2();await x.track($,{profileId:q,properties:{...w0(),...b}})}catch{}}async function Y$(){await X0()}var D=null;function Q2($){return $.startsWith(l)}async function H2(){try{if(!await Bun.file(E).exists())return null;let b=Bun.spawn([E,"--version"],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode!==0)return null;return(await new Response(b.stdout).text()).trim()}catch{return null}}async function V0(){return await H2()!==null}async function J2(){if(process.platform==="win32")return!0;try{let b=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode===0)return!0}catch{}w.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let $=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let b of $)try{let x=Bun.spawn(["bash","-c",`sudo ${b} 2>/dev/null || ${b}`],{stdout:"pipe",stderr:"pipe"});if(await x.exited,x.exitCode===0)return!0}catch{}return!1}async function z2($){let b=await import("fs/promises"),{join:x}=await import("path"),q=process.platform==="win32",Z=q?"bun.exe":"bun",G=await z0();w.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${G}`);let v=await fetch(G);if(!v.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${v.status}`);let Q=x($,"bun-download.zip");await Bun.write(Q,v);let z=x($,"bin");if(await b.mkdir(z,{recursive:!0}),q){let M=`Expand-Archive -Path "${Q}" -DestinationPath "${$}" -Force`,X=Bun.spawn(["powershell","-Command",M],{stdout:"pipe",stderr:"pipe"});if(await X.exited,X.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let M=Bun.spawn(["unzip","-oq",Q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await M.exited,M.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let J=await b.readdir($);for(let M of J){let X=x($,M);if((await b.stat(X)).isDirectory()&&M.startsWith("bun-")){let I=x(X,Z);try{if(await b.access(I),await b.rename(I,x(z,Z)),!q)await b.chmod(x(z,Z),493);await b.rm(X,{recursive:!0,force:!0});break}catch{}}}return await b.rm(Q,{force:!0}),!0}async function Y2(){let $=C();if(!await J2())return w.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await Y0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(l,{recursive:!0}),await v$()==="cn")await z2(l);else if(process.platform==="win32"){let q=`$env:BUN_INSTALL="${l}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",q],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let q=`BUN_INSTALL="${l}" ${J0()}`;if(await Bun.spawn(["bash","-c",q],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return D=E,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),w.info(`\u5B89\u88C5\u4F4D\u7F6E: ${l}`),!0}catch(b){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function M2(){if(await V0())return D=E,!0;return w.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),w.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await Y2()}async function Y1(){if(D){if(!Q2(D))D=E;return D}if(await V0())return D=E,E;return E}async function h0($){try{let b=await i(),x=await fetch(`${b}/${$}/latest`);if(!x.ok)return null;return(await x.json()).version}catch{return null}}async function X2($){return(await m()).installedClients[$.id]?.version||null}async function B0($){let b=G$($.id),x=z1(b,"package.json");try{return await Bun.file(x).exists()}catch{return!1}}async function K0($){let b=await X2($);if(!b)return!0;let x=await h0($.package);if(!x)return!1;return b!==x}async function m0($,b=!1){let x=C(),q=G$($.id);try{if(!await M2())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};let Z=await B0($),G=b||await K0($);if(Z&&!G)return{success:!0};let v=Z?"\u66F4\u65B0":"\u5B89\u88C5";x.start(`\u6B63\u5728${v} ${$.name}...`);let Q=await import("fs/promises");await Q.mkdir(q,{recursive:!0});let z=z1(q,"package.json");if(!await Bun.file(z).exists())await Bun.write(z,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let M=await Y1(),X=await i();if(Z){let t=z1(q,"bun.lock");try{await Q.unlink(t)}catch{}}let B=Bun.spawn([M,"add",`${$.package}@latest`],{cwd:q,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:X}});if(await B.exited!==0){let t=await new Response(B.stderr).text();return x.stop(`${v} ${$.name} \u5931\u8D25`),{success:!1,error:t}}let e=await h0($.package),K1=(await m()).installedClients[$.id]?.version;if(e){let t=await m();if(t.installedClients[$.id]={version:e,installedAt:new Date().toISOString()},await s(t),Z&&K1)h("client_updated",{client_id:$.id,from_version:K1,to_version:e});else h("client_installed",{client_id:$.id,client_version:e})}return x.stop(`${$.name} ${v}\u5B8C\u6210`),{success:!0}}catch(Z){return x.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:Z instanceof Error?Z.message:"\u672A\u77E5\u9519\u8BEF"}}}async function f$($){if(!await B0($))return await m0($);if(await K0($))return await m0($,!0);return{success:!0}}j();j();import{homedir as w2}from"os";var S2=50,M1=3;async function M$($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function R$($,b){let x=await m(),q=x.recentProjects||[],Z=new Date().toISOString(),G=q.findIndex((Q)=>Q.path===$);if(G>=0){let Q=q[G],z=Q.clientUsage||{},J=z[b]||{count:0,lastAt:Z};q[G]={...Q,launchCount:Q.launchCount+1,lastLaunchedAt:Z,lastClientId:b,clientUsage:{...z,[b]:{count:J.count+1,lastAt:Z}}}}else q.push({path:$,launchCount:1,lastLaunchedAt:Z,lastClientId:b,clientUsage:{[b]:{count:1,lastAt:Z}}});let v=q.sort((Q,z)=>new Date(z.lastLaunchedAt).getTime()-new Date(Q.lastLaunchedAt).getTime()).slice(0,S2);x.recentProjects=v,await d$(x)}function W2($,b){let x=$.clientUsage?.[b];if(x)return new Date(x.lastAt).getTime();if($.lastClientId===b)return new Date($.lastLaunchedAt).getTime();return 0}async function L0($,b=M1,x=!0){let Z=(await m()).recentProjects||[],G=process.cwd(),Q=Z.filter((J)=>{if(x&&J.path===G)return!1;return J.clientUsage?.[$]||J.lastClientId===$}).map((J)=>({...J,lastUsedTime:W2(J,$)})).sort((J,M)=>M.lastUsedTime-J.lastUsedTime),z=[];for(let{lastUsedTime:J,...M}of Q){if(z.length>=b)break;if(await M$(M.path))z.push(M)}return z}async function k0(){let b=(await m()).recentProjects||[],x=process.cwd();return b.find((Z)=>Z.path===x)?.lastClientId||null}function U0($,b=25){let x=w2(),q=$.startsWith(x)?"~"+$.slice(x.length):$;if(q.length>b){let G=q.split("/").pop()||"";if(G.length>b-4)q="..."+G.slice(-b+3);else q=`.../${G}`}return q}function E0($){let{t:b}=(O(),D0(H0)),x=Date.now(),q=new Date($).getTime(),Z=x-q,G=Math.floor(Z/60000),v=Math.floor(Z/3600000),Q=Math.floor(Z/86400000),z=Math.floor(Q/7),J=Math.floor(Q/30);if(G<1)return b("time.justNow");if(G<60)return b("time.minutesAgo",{n:G});if(v<24)return b("time.hoursAgo",{n:v});if(Q===1)return b("time.yesterday");if(Q<7)return b("time.daysAgo",{n:Q});if(Q<30)return b("time.weeksAgo",{n:z});return b("time.monthsAgo",{n:J})}O();j();async function j0($,b){try{let x=b?.projectPath||process.cwd();if(b?.projectPath){if(!await M$(b.projectPath))return{success:!1,error:`\u76EE\u5F55\u4E0D\u5B58\u5728: ${b.projectPath}`}}let q=await f$($);if(!q.success)return q;let Z=await W$();if(!Z)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if($.setupConfigFiles)await $.setupConfigFiles(Z);let G=await N1($);if(!G)G=I1($);if(!await Bun.file(G).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${G}`};await R$(x,$.id);let Q=$.getEnvVars(Z),z={...process.env,...Q};w.info(`\u542F\u52A8 ${$.name}...`);let J;if($.runtime==="native")J=[G];else J=[await Y1(),G];if(b?.args&&b.args.length>0)J=[...J,...b.args];return await Bun.spawn(J,{env:z,stdio:["inherit","inherit","inherit"],cwd:x}).exited,{success:!0}}catch(x){return{success:!1,error:x instanceof Error?x.message:"\u542F\u52A8\u5931\u8D25"}}}r$();async function q$($,b){try{let x=b?.projectPath||process.cwd();if(b?.projectPath){if(!await M$(b.projectPath))return{success:!1,error:H("launcher.directoryNotFound",{path:b.projectPath})}}let q=await f$($);if(!q.success)return q;let Z=await W$();if(!Z)return{success:!1,error:H("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(Z);if($.id==="claude-code"){if((await m()).statusLineEnabled!==!1)try{await x$()}catch{}}await R$(x,$.id);let v=(await m()).installedClients[$.id]?.version;return h("client_launched",{client_id:$.id,client_version:v,project_hash:S0(x),is_recent_project:!!b?.projectPath}),w.info(H("launcher.starting",{client:$.name})),await j0($,b)}catch(x){return{success:!1,error:x instanceof Error?x.message:"Launch failed"}}}j();O();import{join as g}from"path";var W1="tako-cli",n="0.1.50";function I2($,b){let x=$.split(".").map(Number),q=b.split(".").map(Number);for(let Z=0;Z<3;Z++){let G=x[Z]||0,v=q[Z]||0;if(G>v)return 1;if(G<v)return-1}return 0}async function _2(){try{let $=await i(),b=await fetch(`${$}/${W1}/latest`,{signal:AbortSignal.timeout(5000)});if(!b.ok)return null;return(await b.json()).version||null}catch{return null}}async function P2(){let $=await _2();if(!$)return{hasUpdate:!1,currentVersion:n};return{hasUpdate:I2($,n)>0,latestVersion:$,currentVersion:n}}async function d0(){let $=await import("fs/promises"),b=g(_,"bin"),x=g(b,"tako"),q=g(P,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(b,{recursive:!0}),process.platform==="win32"){let G=`@echo off\r
56
56
  "${E}" "${q}" %*\r
57
- `;await $.writeFile(p(b,"tako.cmd"),z)}else{let z=`#!/bin/bash
57
+ `;await $.writeFile(g(b,"tako.cmd"),G)}else{let G=`#!/bin/bash
58
58
  exec "${E}" "${q}" "$@"
59
- `;await $.writeFile(x,z,{mode:493})}}async function N2($){let b=P();b.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let x=await n(),q=await import("fs/promises");await q.mkdir(_,{recursive:!0});let Z=p(_,"package.json");try{await q.access(Z)}catch{await q.writeFile(Z,JSON.stringify({name:"tako-local",private:!0},null,2))}let z=Bun.spawn([E,"update",y1,"--latest"],{cwd:_,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:x}});if(await z.exited,z.exitCode===0)return await F0(),h("cli_updated",{from_version:t,to_version:$}),b.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let v=await new Response(z.stderr).text();return b.stop(`\u66F4\u65B0\u5931\u8D25: ${v||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(x){return b.stop(`\u66F4\u65B0\u5931\u8D25: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function I2(){let $=await import("fs/promises"),b=p(_,"bun.lock");try{await $.unlink(b)}catch{}}async function _2(){let $=await import("fs/promises");try{let b=await n();await $.mkdir(_,{recursive:!0});let x=p(_,"package.json");try{await $.access(x)}catch{await $.writeFile(x,JSON.stringify({name:"tako-local",private:!0},null,2))}await I2();let q=Bun.spawn([E,"add",`${y1}@latest`],{cwd:_,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:b}});return await q.exited,q.exitCode===0}catch{return!1}}async function P2(){let $=await import("fs/promises"),b=p(I,"bin"),x=p(b,"tako"),q=p(_,"node_modules/tako-cli/dist/index.js");try{let Z=await $.readFile(x,"utf-8");if(Z.includes("bun run tako-cli")||Z.includes("run tako-cli")){w.info(Q("updater.migrating"));let z=!1;try{await $.access(q),z=!0}catch{z=!1}if(!z){let v=P();if(v.start(Q("updater.installingLocally")),!await _2())return v.stop(Q("updater.migrationFailed")),!1;v.stop(Q("updater.installComplete"))}return await F0(),!0}}catch{}return!1}async function C$(){try{if(await P2())w.info(Q("updater.migrationComplete")),process.exit(0);let b=await A2();if(b.hasUpdate&&b.latestVersion){if(w.warn(Q("updater.newVersionAvailable",{version:b.latestVersion,current:t})),await N2(b.latestVersion))w.info(Q("updater.pleaseRestart")),process.exit(0)}}catch{}}T();function C2($){let b=$.codePointAt(0);if(!b)return!1;return b>=19968&&b<=40959||b>=13312&&b<=19903||b>=131072&&b<=191471||b>=63744&&b<=64255||b>=194560&&b<=195103||b>=44032&&b<=55215||b>=12352&&b<=12447||b>=12448&&b<=12543||b>=65280&&b<=65519||b>=126976&&b<=131071||b>=9728&&b<=10175||b===11088}function p2($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function S1($){let b=p2($),x=0;for(let q of b)x+=C2(q)?2:1;return x}P$();T();O();async function d0(){let $=I1(),b=await L0(),x=process.cwd(),q=[],Z=[...$].sort((z,v)=>{if(z.id===b)return-1;if(v.id===b)return 1;return 0});for(let z of Z){let v=await K0(z.id,M1,!0);q.push({value:{type:"launch",client:z},label:z.name,hint:Q("recentProjects.launchInCurrent")});for(let G of v)q.push({value:{type:"launch-in-project",client:z,projectPath:G.path},label:` \u2514\u2500 ${U0(G.path,35)}`,hint:k0(G.lastLaunchedAt)})}return q.push({value:{type:"advanced"},label:Q("menu.advanced"),hint:Q("menu.advancedHint")},{value:{type:"exit"},label:Q("menu.exit")}),q}async function m1(){let $=await d0(),b=await H$({message:Q("menu.selectAction"),options:$});if(F(b))return null;return b}async function V1(){let b=(await m()).statusLineEnabled!==!1,x=await H$({message:Q("menu.advancedOptions"),options:[{value:{type:"stats"},label:Q("menu.viewStats")},{value:{type:"config"},label:Q("menu.configApiKey")},{value:{type:"language"},label:Q("menu.changeLanguage")},{value:{type:"toggle-statusline"},label:b?Q("menu.disableStatusLine"):Q("menu.enableStatusLine")},{value:null,label:Q("menu.back")}]});if(F(x)||x===null)return null;return x}O();T();function g2($){return $.startsWith("cr_")&&$.length>10}async function F2($){try{let x=await(await fetch(`${g}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(x.success&&x.data?.id)return{valid:!0,apiId:x.data.id};return{valid:!1,error:x.error||Q("auth.validationFailed")}}catch(b){return{valid:!1,error:b instanceof Error?b.message:Q("auth.networkError")}}}async function u0($){if(!g2($))return h("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:Q("auth.invalidFormat")};let b=await F2($);if(!b.valid)return h("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:b.error};return await o({apiKey:$,apiId:b.apiId}),h("api_key_validated",{success:!0}),O$(),{success:!0}}T();async function p$($=!1){if(!$)w.warn("API Key not detected"),console.log();let b=await G0({message:Q("prompts.enterApiKey"),placeholder:Q("prompts.apiKeyPlaceholder"),validate(Z){if(!Z)return Q("prompts.enterApiKey");if(!Z.startsWith("cr_"))return Q("prompts.keyInvalidFormat");if(Z.length<10)return Q("prompts.keyInvalidFormat")}});if(F(b))return!1;let x=P();x.start(Q("prompts.validating"));let q=await u0(b);if(q.success)return x.stop(Q("prompts.keyConfigured")),!0;else return x.stop(Q("prompts.keyValidationFailed",{error:q.error||""})),!1}X1();T();function d2($,b){let x=[];if(x.push(""),x.push(` ${Q("stats.title")}`),x.push(""),x.push(` ${Q("stats.totalRequests",{count:w1($.totalRequests)})}`),x.push(` ${Q("stats.totalCost",{cost:$.totalCost})}`),x.push(` ${Q("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)x.push(""),x.push(` ${Q("stats.modelDistribution")}`),$.modelStats.forEach((q,Z)=>{let z=Z===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",v=q.model.length>25?q.model.slice(0,22)+"...":q.model;x.push(` ${z} ${v.padEnd(25)} ${w1(q.requests).padStart(6)} ${Q("stats.times")} ${q.cost.padStart(8)}`)});return x.push(""),x.push(` \x1B[90m${Q("stats.refreshHint",{countdown:b})}\x1B[0m`),x.join(`
60
- `)}async function h1(){let b=P();b.start(Q("stats.fetching"));let x=await X$();if(!x.success){b.stop(Q("stats.fetchFailed",{error:x.error||""}));return}b.stop("");let q=10,Z="",z=()=>{if(Z){let G=Z.split(`
61
- `).length;process.stdout.write(`\x1B[${G}A\x1B[0J`)}Z=d2(x.data,q),console.log(Z)};z();let v=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((G)=>{let Y=!0,H=()=>{if(!Y)return;Y=!1,M(),G()},X=setInterval(async()=>{if(!Y)return;if(q--,q<=0){q=10;let K=await X$();if(K.success)x=K}z()},1000),M=()=>{if(clearInterval(X),process.stdin.removeListener("data",H),process.stdin.isTTY)process.stdin.setRawMode(v??!1);process.stdin.pause()};process.stdin.on("data",H)})}function u2(){let b="\u2500".repeat(50);console.log(),console.log(` \u250C${b}\u2510`);let x=`\uD83D\uDC19 ${Q("cli.version",{version:t})}`,q=S1(x),Z=Math.floor((50-q)/2),z=50-Z-q;console.log(` \u2502${" ".repeat(Z)}${x}${" ".repeat(z)}\u2502`);let v=Q("banner.welcome"),G=`\x1B[90m${v}\x1B[0m`,Y=S1(v),H=Math.floor((50-Y)/2),X=50-H-Y;console.log(` \u2502${" ".repeat(H)}${G}${" ".repeat(X)}\u2502`),console.log(` \u2514${b}\u2518`),console.log()}async function c0($){switch($.type){case"launch":{h("menu_action",{action:"launch",client_id:$.client.id});let b=await Z$($.client);if(!b.success)w.error(b.error||Q("cli.launchFailed"));return!0}case"launch-in-project":{h("menu_action",{action:"launch",client_id:$.client.id});let b=$.client.continueArg?[$.client.continueArg]:[],x=await Z$($.client,{projectPath:$.projectPath,args:b});if(!x.success)w.error(x.error||Q("cli.launchFailed"));return!0}case"advanced":{h("menu_action",{action:"advanced"});let b=await V1();if(b)return await c0(b);return!0}case"stats":return h("menu_action",{action:"stats"}),await h1(),!0;case"config":return h("menu_action",{action:"config"}),await p$(!0),!0;case"language":return h("menu_action",{action:"language"}),await c2(),!0;case"toggle-statusline":{if(h("menu_action",{action:"toggle-statusline"}),(await m()).statusLineEnabled!==!1)await o({statusLineEnabled:!1}),await _$(),w.success(Q("statusline.disabled"));else await o({statusLineEnabled:!0}),await q$(),w.success(Q("statusline.enabled"));return!0}case"exit":return h("menu_action",{action:"exit"}),!1}}async function c2(){let $=G1(),b=Q(`language.${$}`),x=await H$({message:Q("menu.changeLanguage")+` (${Q("menu.currentLanguage",{lang:b})})`,options:[{value:"en",label:Q("language.en")},{value:"zh",label:Q("language.zh")}]});if(F(x))return;z1(x);let q=Q(`language.${x}`);w.success(Q("menu.languageChanged",{lang:q}))}async function l0(){if(u2(),!await f1()){if(!await p$()){Z1("\u518D\u89C1\uFF01");return}}while(!0){let b=await m1();if(b===null)break;if(!await c0(b))break}Z1("\u518D\u89C1\uFF01")}T();var B1="0.1.49";function l2(){console.log(`
62
- ${Q("cli.version",{version:B1})}
59
+ `;await $.writeFile(x,G,{mode:493})}}async function C2($){let b=C();b.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let x=await i(),q=await import("fs/promises");await q.mkdir(P,{recursive:!0});let Z=g(P,"package.json");try{await q.access(Z)}catch{await q.writeFile(Z,JSON.stringify({name:"tako-local",private:!0},null,2))}let G=Bun.spawn([E,"update",W1,"--latest"],{cwd:P,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:x}});if(await G.exited,G.exitCode===0)return await d0(),h("cli_updated",{from_version:n,to_version:$}),b.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let v=await new Response(G.stderr).text();return b.stop(`\u66F4\u65B0\u5931\u8D25: ${v||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(x){return b.stop(`\u66F4\u65B0\u5931\u8D25: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function r2(){let $=await import("fs/promises"),b=g(P,"bun.lock");try{await $.unlink(b)}catch{}}async function g2(){let $=await import("fs/promises");try{let b=await i();await $.mkdir(P,{recursive:!0});let x=g(P,"package.json");try{await $.access(x)}catch{await $.writeFile(x,JSON.stringify({name:"tako-local",private:!0},null,2))}await r2();let q=Bun.spawn([E,"add",`${W1}@latest`],{cwd:P,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:b}});return await q.exited,q.exitCode===0}catch{return!1}}async function p2(){let $=await import("fs/promises"),b=g(_,"bin"),x=g(b,"tako"),q=g(P,"node_modules/tako-cli/dist/index.js");try{let Z=await $.readFile(x,"utf-8");if(Z.includes("bun run tako-cli")||Z.includes("run tako-cli")){w.info(H("updater.migrating"));let G=!1;try{await $.access(q),G=!0}catch{G=!1}if(!G){let v=C();if(v.start(H("updater.installingLocally")),!await g2())return v.stop(H("updater.migrationFailed")),!1;v.stop(H("updater.installComplete"))}return await d0(),!0}}catch{}return!1}async function g$(){try{if(await p2())w.info(H("updater.migrationComplete")),process.exit(0);let b=await P2();if(b.hasUpdate&&b.latestVersion){if(w.warn(H("updater.newVersionAvailable",{version:b.latestVersion,current:n})),await C2(b.latestVersion))w.info(H("updater.pleaseRestart")),process.exit(0)}}catch{}}O();function F2($){let b=$.codePointAt(0);if(!b)return!1;return b>=19968&&b<=40959||b>=13312&&b<=19903||b>=131072&&b<=191471||b>=63744&&b<=64255||b>=194560&&b<=195103||b>=44032&&b<=55215||b>=12352&&b<=12447||b>=12448&&b<=12543||b>=65280&&b<=65519||b>=126976&&b<=131071||b>=9728&&b<=10175||b===11088}function d2($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function y1($){let b=d2($),x=0;for(let q of b)x+=F2(q)?2:1;return x}r$();O();j();async function u0(){let $=_1(),b=await k0(),x=process.cwd(),q=[],Z=[...$].sort((G,v)=>{if(G.id===b)return-1;if(v.id===b)return 1;return 0});for(let G of Z){let v=await L0(G.id,M1,!0);q.push({value:{type:"launch",client:G},label:G.name,hint:H("recentProjects.launchInCurrent")});for(let Q of v)q.push({value:{type:"launch-in-project",client:G,projectPath:Q.path},label:` \u2514\u2500 ${U0(Q.path,35)}`,hint:E0(Q.lastLaunchedAt)})}return q.push({value:{type:"advanced"},label:H("menu.advanced"),hint:H("menu.advancedHint")},{value:{type:"exit"},label:H("menu.exit")}),q}async function m1(){let $=await u0(),b=await H$({message:H("menu.selectAction"),options:$});if(F(b))return null;return b}async function V1(){let b=(await m()).statusLineEnabled!==!1,x=await H$({message:H("menu.advancedOptions"),options:[{value:{type:"stats"},label:H("menu.viewStats")},{value:{type:"config"},label:H("menu.configApiKey")},{value:{type:"language"},label:H("menu.changeLanguage")},{value:{type:"toggle-statusline"},label:b?H("menu.disableStatusLine"):H("menu.enableStatusLine")},{value:null,label:H("menu.back")}]});if(F(x)||x===null)return null;return x}j();O();function u2($){return $.startsWith("cr_")&&$.length>10}async function c2($){try{let x=await(await fetch(`${p}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(x.success&&x.data?.id)return{valid:!0,apiId:x.data.id};return{valid:!1,error:x.error||H("auth.validationFailed")}}catch(b){return{valid:!1,error:b instanceof Error?b.message:H("auth.networkError")}}}async function c0($){if(!u2($))return h("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:H("auth.invalidFormat")};let b=await c2($);if(!b.valid)return h("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:b.error};return await s({apiKey:$,apiId:b.apiId}),h("api_key_validated",{success:!0}),T$(),{success:!0}}O();async function p$($=!1){if(!$)w.warn("API Key not detected"),console.log();let b=await Q0({message:H("prompts.enterApiKey"),placeholder:H("prompts.apiKeyPlaceholder"),validate(Z){if(!Z)return H("prompts.enterApiKey");if(!Z.startsWith("cr_"))return H("prompts.keyInvalidFormat");if(Z.length<10)return H("prompts.keyInvalidFormat")}});if(F(b))return!1;let x=C();x.start(H("prompts.validating"));let q=await c0(b);if(q.success)return x.stop(H("prompts.keyConfigured")),!0;else return x.stop(H("prompts.keyValidationFailed",{error:q.error||""})),!1}w1();O();function l2($,b){let x=[];if(x.push(""),x.push(` ${H("stats.title")}`),x.push(""),x.push(` ${H("stats.totalRequests",{count:X1($.totalRequests)})}`),x.push(` ${H("stats.totalCost",{cost:$.totalCost})}`),x.push(` ${H("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)x.push(""),x.push(` ${H("stats.modelDistribution")}`),$.modelStats.forEach((q,Z)=>{let G=Z===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",v=q.model.length>25?q.model.slice(0,22)+"...":q.model;x.push(` ${G} ${v.padEnd(25)} ${X1(q.requests).padStart(6)} ${H("stats.times")} ${q.cost.padStart(8)}`)});return x.push(""),x.push(` \x1B[90m${H("stats.refreshHint",{countdown:b})}\x1B[0m`),x.join(`
60
+ `)}async function h1(){let b=C();b.start(H("stats.fetching"));let x=await X$();if(!x.success){b.stop(H("stats.fetchFailed",{error:x.error||""}));return}b.stop("");let q=10,Z="",G=()=>{if(Z){let Q=Z.split(`
61
+ `).length;process.stdout.write(`\x1B[${Q}A\x1B[0J`)}Z=l2(x.data,q),console.log(Z)};G();let v=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((Q)=>{let z=!0,J=()=>{if(!z)return;z=!1,X(),Q()},M=setInterval(async()=>{if(!z)return;if(q--,q<=0){q=10;let B=await X$();if(B.success)x=B}G()},1000),X=()=>{if(clearInterval(M),process.stdin.removeListener("data",J),process.stdin.isTTY)process.stdin.setRawMode(v??!1);process.stdin.pause()};process.stdin.on("data",J)})}function a2(){let b="\u2500".repeat(50);console.log(),console.log(` \u250C${b}\u2510`);let x=`\uD83D\uDC19 ${H("cli.version",{version:n})}`,q=y1(x),Z=Math.floor((50-q)/2),G=50-Z-q;console.log(` \u2502${" ".repeat(Z)}${x}${" ".repeat(G)}\u2502`);let v=H("banner.welcome"),Q=`\x1B[90m${v}\x1B[0m`,z=y1(v),J=Math.floor((50-z)/2),M=50-J-z;console.log(` \u2502${" ".repeat(J)}${Q}${" ".repeat(M)}\u2502`),console.log(` \u2514${b}\u2518`),console.log()}async function l0($){switch($.type){case"launch":{h("menu_action",{action:"launch",client_id:$.client.id});let b=await q$($.client);if(!b.success)w.error(b.error||H("cli.launchFailed"));return!0}case"launch-in-project":{h("menu_action",{action:"launch",client_id:$.client.id});let b=$.client.continueArg?[$.client.continueArg]:[],x=await q$($.client,{projectPath:$.projectPath,args:b});if(!x.success)w.error(x.error||H("cli.launchFailed"));return!0}case"advanced":{h("menu_action",{action:"advanced"});let b=await V1();if(b)return await l0(b);return!0}case"stats":return h("menu_action",{action:"stats"}),await h1(),!0;case"config":return h("menu_action",{action:"config"}),await p$(!0),!0;case"language":return h("menu_action",{action:"language"}),await s2(),!0;case"toggle-statusline":{if(h("menu_action",{action:"toggle-statusline"}),(await m()).statusLineEnabled!==!1)await s({statusLineEnabled:!1}),await C$(),w.success(H("statusline.disabled"));else await s({statusLineEnabled:!0}),await x$(),w.success(H("statusline.enabled"));return!0}case"exit":return h("menu_action",{action:"exit"}),!1}}async function s2(){let $=H1(),b=H(`language.${$}`),x=await H$({message:H("menu.changeLanguage")+` (${H("menu.currentLanguage",{lang:b})})`,options:[{value:"en",label:H("language.en")},{value:"zh",label:H("language.zh")}]});if(F(x))return;Q1(x);let q=H(`language.${x}`);w.success(H("menu.languageChanged",{lang:q}))}async function a0(){if(a2(),!await R1()){if(!await p$()){G1("\u518D\u89C1\uFF01");return}}while(!0){let b=await m1();if(b===null)break;if(!await l0(b))break}G1("\u518D\u89C1\uFF01")}O();var B1="0.1.50";function o2(){console.log(`
62
+ ${H("cli.version",{version:B1})}
63
63
 
64
- ${Q("cli.usage")}
64
+ ${H("cli.usage")}
65
65
 
66
- ${Q("cli.options")}
67
- ${Q("cli.optionVersion")}
68
- ${Q("cli.optionHelp")}
66
+ ${H("cli.options")}
67
+ ${H("cli.optionVersion")}
68
+ ${H("cli.optionHelp")}
69
69
 
70
- ${Q("cli.shortcuts")}
71
- ${Q("cli.shortcutClaude")}
72
- ${Q("cli.shortcutCodex")}
70
+ ${H("cli.shortcuts")}
71
+ ${H("cli.shortcutClaude")}
72
+ ${H("cli.shortcutCodex")}
73
73
 
74
- ${Q("cli.examples")}
75
- ${Q("cli.exampleInteractive")}
76
- ${Q("cli.exampleClaude")}
77
- ${Q("cli.exampleCodex")}
78
- `)}async function a2(){let $=process.argv.slice(2);if($.includes("statusline")){let{statusLineCommand:x}=await Promise.resolve().then(() => (P$(),g0));await x();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${B1}`);return}if($.includes("-h")||$.includes("--help")){l2();return}let b=B1==="dev";if(O$(),h("cli_started"),$.includes("--claude")){let x=c$("claude-code");if(!x)console.error(Q("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!b)await C$();let q=await Z$(x);if(!q.success)console.error(q.error),process.exit(1);return}if($.includes("--codex")){let x=c$("codex");if(!x)console.error(Q("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!b)await C$();let q=await Z$(x);if(!q.success)console.error(q.error),process.exit(1);return}if(!b)await C$();await l0()}process.on("beforeExit",async()=>{await M$()});process.on("SIGINT",async()=>{await M$(),process.exit(0)});process.on("SIGTERM",async()=>{await M$(),process.exit(0)});a2().catch(async($)=>{console.error(Q("cli.cliError"),$),await M$(),process.exit(1)});
74
+ ${H("cli.examples")}
75
+ ${H("cli.exampleInteractive")}
76
+ ${H("cli.exampleClaude")}
77
+ ${H("cli.exampleCodex")}
78
+ `)}async function i2(){let $=process.argv.slice(2);if($.includes("statusline")){let{statusLineCommand:x}=await Promise.resolve().then(() => (r$(),F0));await x();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${B1}`);return}if($.includes("-h")||$.includes("--help")){o2();return}let b=B1==="dev";if(T$(),h("cli_started"),$.includes("--claude")){let x=l$("claude-code");if(!x)console.error(H("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!b)await g$();let q=await q$(x);if(!q.success)console.error(q.error),process.exit(1);return}if($.includes("--codex")){let x=l$("codex");if(!x)console.error(H("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!b)await g$();let q=await q$(x);if(!q.success)console.error(q.error),process.exit(1);return}if(!b)await g$();await a0()}process.on("beforeExit",async()=>{await Y$()});process.on("SIGINT",async()=>{await Y$(),process.exit(0)});process.on("SIGTERM",async()=>{await Y$(),process.exit(0)});i2().catch(async($)=>{console.error(H("cli.cliError"),$),await Y$(),process.exit(1)});
package/install.sh CHANGED
@@ -43,12 +43,20 @@ detect_region() {
43
43
  country=$(curl -s --connect-timeout 2 "https://ipinfo.io/country" 2>/dev/null || echo "")
44
44
  fi
45
45
 
46
+ if [ -z "$country" ]; then
47
+ country=$(curl -s --connect-timeout 2 "https://api.ip.sb/geoip" 2>/dev/null | grep -o '"country_code":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")
48
+ fi
49
+
46
50
  if [ "$country" = "CN" ]; then
47
51
  REGION="cn"
48
52
  info "检测到中国大陆网络,使用国内镜像"
49
- else
53
+ elif [ -n "$country" ]; then
50
54
  REGION="global"
51
55
  info "使用国际源"
56
+ else
57
+ # 所有检测都失败,默认使用国内镜像(保守策略,与 TS 代码一致)
58
+ REGION="cn"
59
+ info "网络检测超时,默认使用国内镜像"
52
60
  fi
53
61
  }
54
62
 
@@ -88,6 +96,68 @@ install_dependencies() {
88
96
  fi
89
97
  }
90
98
 
99
+ # 从 npmmirror 直接下载安装 Bun(国内专用,不依赖 bun.sh 和 GitHub)
100
+ install_bun_from_npmmirror() {
101
+ local mirror="https://registry.npmmirror.com/-/binary/bun"
102
+
103
+ # 检测平台和架构
104
+ local os arch target
105
+ os=$(uname -s | tr '[:upper:]' '[:lower:]')
106
+ arch=$(uname -m)
107
+
108
+ case "$os" in
109
+ linux) os="linux" ;;
110
+ darwin) os="darwin" ;;
111
+ *) error "不支持的操作系统: $os" ;;
112
+ esac
113
+
114
+ case "$arch" in
115
+ x86_64|amd64) arch="x64" ;;
116
+ aarch64|arm64) arch="aarch64" ;;
117
+ *) error "不支持的架构: $arch" ;;
118
+ esac
119
+
120
+ # Alpine Linux 使用 musl 版本
121
+ target="bun-${os}-${arch}"
122
+ if [ "$os" = "linux" ] && [ -f /etc/alpine-release ]; then
123
+ target="${target}-musl"
124
+ fi
125
+
126
+ # 获取最新版本号
127
+ info "正在获取最新版本..."
128
+ local latest_version
129
+ latest_version=$(curl -s --connect-timeout 5 "$mirror/" 2>/dev/null \
130
+ | grep -o '"name":"bun-v[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*/"' \
131
+ | sed 's/"name":"bun-v//;s/\/"//' \
132
+ | sort -t. -k1,1rn -k2,2rn -k3,3rn \
133
+ | head -1)
134
+
135
+ if [ -z "$latest_version" ]; then
136
+ error "无法获取 Bun 最新版本号"
137
+ fi
138
+
139
+ # 补回前缀
140
+ latest_version="bun-v${latest_version}"
141
+
142
+ local download_url="${mirror}/${latest_version}/${target}.zip"
143
+ local zip_file="/tmp/bun-install-$$.zip"
144
+
145
+ info "下载 Bun (${latest_version}) from npmmirror..."
146
+ curl --fail --location --progress-bar --output "$zip_file" "$download_url" || \
147
+ error "下载失败: $download_url"
148
+
149
+ # 解压到目标目录
150
+ local bin_dir="$TAKO_BUN_DIR/bin"
151
+ mkdir -p "$bin_dir"
152
+
153
+ unzip -oq "$zip_file" -d /tmp/bun-install-$$ || error "解压失败"
154
+ mv "/tmp/bun-install-$$/${target}/bun" "$bin_dir/bun"
155
+ chmod +x "$bin_dir/bun"
156
+
157
+ # 清理临时文件
158
+ rm -rf "$zip_file" "/tmp/bun-install-$$"
159
+ }
160
+
91
161
  # 安装 Tako 专属 Bun
92
162
  install_bun() {
93
163
  # 检查是否已安装
@@ -101,20 +171,15 @@ install_bun() {
101
171
 
102
172
  mkdir -p "$TAKO_BUN_DIR"
103
173
 
104
- # 设置环境变量确保 bun 安装到正确位置
105
- export BUN_INSTALL="$TAKO_BUN_DIR"
106
-
107
- # 国内用户使用镜像
108
174
  if [ "$REGION" = "cn" ]; then
109
- export BUN_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/bun"
175
+ # 国内用户:直接从 npmmirror 下载二进制,完全不经过 bun.sh/GitHub
176
+ install_bun_from_npmmirror
177
+ else
178
+ # 海外用户:使用官方安装脚本
179
+ export BUN_INSTALL="$TAKO_BUN_DIR"
180
+ curl -fsSL https://bun.sh/install | bash
110
181
  fi
111
182
 
112
- # 执行 bun 安装脚本
113
- curl -fsSL https://bun.sh/install | bash
114
-
115
- # 清理环境变量
116
- unset BUN_INSTALL_MIRROR
117
-
118
183
  if [ ! -x "$TAKO_BUN_DIR/bin/bun" ]; then
119
184
  error "Bun 安装失败,请检查网络连接"
120
185
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.1.49",
3
+ "version": "0.1.50",
4
4
  "description": "Tako CLI - AI coding tools launcher",
5
5
  "type": "module",
6
6
  "bin": {