tako-cli 0.2.24 → 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +39 -39
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,61 +1,61 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var V2=Object.create;var{getPrototypeOf:A2,defineProperty:z$,getOwnPropertyNames:c1,getOwnPropertyDescriptor:B2}=Object,D1=Object.prototype.hasOwnProperty;function p1($){return this[$]}var h2,K2,V$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?h2??=new WeakMap:K2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?V2(A2($)):{};let H=S||!$||!$.__esModule?z$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of c1($))if(!D1.call(H,q))z$(H,q,{get:p1.bind($,q),enumerable:!0});if(E)O.set($,H);return H},C2=($)=>{var S=(d1??=new WeakMap).get($),Y;if(S)return S;if(S=z$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of c1($))if(!D1.call(S,E))z$(S,E,{get:p1.bind($,E),enumerable:!(Y=B2($,E))||Y.enumerable})}return d1.set($,S),S},d1,l1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var m2=($)=>$;function j2($,S){this[$]=m2.bind(null,S)}var y2=($,S)=>{for(var Y in S)z$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:j2.bind(S,Y)})};var f2=($,S)=>()=>($&&(S=$($=0)),S);var K=import.meta.require;var $1=l1((I3,$0)=>{var t$={to($,S){if(!S)return`\x1B[${$+1}G`;return`\x1B[${S+1};${$+1}H`},move($,S){let Y="";if($<0)Y+=`\x1B[${-$}D`;else if($>0)Y+=`\x1B[${$}C`;if(S<0)Y+=`\x1B[${-S}A`;else if(S>0)Y+=`\x1B[${S}B`;return Y},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"},F2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},k2={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let S="";for(let Y=0;Y<$;Y++)S+=this.line+(Y<$-1?t$.up():"");if($)S+=t$.left;return S}};$0.exports={cursor:t$,scroll:F2,erase:k2,beep:"\x07"}});var H1=l1((L3,S1)=>{var C$=process||{},S0=C$.argv||[],K$=C$.env||{},u2=!(!!K$.NO_COLOR||S0.includes("--no-color"))&&(!!K$.FORCE_COLOR||S0.includes("--color")||C$.platform==="win32"||(C$.stdout||{}).isTTY&&K$.TERM!=="dumb"||!!K$.CI),g2=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+d2(O,S,Y,x)+S:$+O+S},d2=($,S,Y,E)=>{let O="",x=0;do O+=$.substring(x,E)+Y,x=E+S.length,E=$.indexOf(S,x);while(~E);return O+$.substring(x)},H0=($=u2)=>{let S=$?g2:()=>String;return{isColorSupported:$,reset:S("\x1B[0m","\x1B[0m"),bold:S("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:S("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:S("\x1B[3m","\x1B[23m"),underline:S("\x1B[4m","\x1B[24m"),inverse:S("\x1B[7m","\x1B[27m"),hidden:S("\x1B[8m","\x1B[28m"),strikethrough:S("\x1B[9m","\x1B[29m"),black:S("\x1B[30m","\x1B[39m"),red:S("\x1B[31m","\x1B[39m"),green:S("\x1B[32m","\x1B[39m"),yellow:S("\x1B[33m","\x1B[39m"),blue:S("\x1B[34m","\x1B[39m"),magenta:S("\x1B[35m","\x1B[39m"),cyan:S("\x1B[36m","\x1B[39m"),white:S("\x1B[37m","\x1B[39m"),gray:S("\x1B[90m","\x1B[39m"),bgBlack:S("\x1B[40m","\x1B[49m"),bgRed:S("\x1B[41m","\x1B[49m"),bgGreen:S("\x1B[42m","\x1B[49m"),bgYellow:S("\x1B[43m","\x1B[49m"),bgBlue:S("\x1B[44m","\x1B[49m"),bgMagenta:S("\x1B[45m","\x1B[49m"),bgCyan:S("\x1B[46m","\x1B[49m"),bgWhite:S("\x1B[47m","\x1B[49m"),blackBright:S("\x1B[90m","\x1B[39m"),redBright:S("\x1B[91m","\x1B[39m"),greenBright:S("\x1B[92m","\x1B[39m"),yellowBright:S("\x1B[93m","\x1B[39m"),blueBright:S("\x1B[94m","\x1B[39m"),magentaBright:S("\x1B[95m","\x1B[39m"),cyanBright:S("\x1B[96m","\x1B[39m"),whiteBright:S("\x1B[97m","\x1B[39m"),bgBlackBright:S("\x1B[100m","\x1B[49m"),bgRedBright:S("\x1B[101m","\x1B[49m"),bgGreenBright:S("\x1B[102m","\x1B[49m"),bgYellowBright:S("\x1B[103m","\x1B[49m"),bgBlueBright:S("\x1B[104m","\x1B[49m"),bgMagentaBright:S("\x1B[105m","\x1B[49m"),bgCyanBright:S("\x1B[106m","\x1B[49m"),bgWhiteBright:S("\x1B[107m","\x1B[49m")}};S1.exports=H0();S1.exports.createColors=H0});var K0={};y2(K0,{t:()=>M,setLocale:()=>Z1,getLocale:()=>Q$,detectLocale:()=>H$,clearLocaleOverride:()=>US});function H$(){if(_$)return _$;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($){_$=$}function US(){_$=null}function M($,S){let Y=H$(),E=$.split("."),O=VS;for(let H of E)if(O=O?.[H],!O)return $;let x=O[Y]||O.en||$;if(S)for(let[H,q]of Object.entries(S))x=x.replace(`{${H}}`,String(q));return x}function Q$(){return H$()}var _$=null,VS;var h=f2(()=>{VS={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}"},selectOptions:{en:"Select launch options (Space to toggle, Enter to confirm):",zh:"\u9009\u62E9\u542F\u52A8\u9009\u9879\uFF08\u7A7A\u683C\u5207\u6362\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\uFF1A"},resetOptions:{en:"Reset Launch Options",zh:"\u91CD\u7F6E\u542F\u52A8\u9009\u9879"},optionsReset:{en:"Launch options have been reset. You will be prompted again next time.",zh:"\u542F\u52A8\u9009\u9879\u5DF2\u91CD\u7F6E\uFF0C\u4E0B\u6B21\u542F\u52A8\u65F6\u5C06\u91CD\u65B0\u9009\u62E9\u3002"}},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"},shortcutGemini:{en:" --gemini Launch Gemini CLI directly",zh:" --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},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"},exampleGemini:{en:" tako --gemini Launch Gemini CLI directly",zh:" tako --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},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"}},claudeCode:{settingsDetected:{en:`Detected hardcoded config in Claude Code settings that conflicts with Tako:
3
+ var V2=Object.create;var{getPrototypeOf:A2,defineProperty:z$,getOwnPropertyNames:c1,getOwnPropertyDescriptor:B2}=Object,D1=Object.prototype.hasOwnProperty;function p1($){return this[$]}var h2,K2,V$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?h2??=new WeakMap:K2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?V2(A2($)):{};let H=S||!$||!$.__esModule?z$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of c1($))if(!D1.call(H,q))z$(H,q,{get:p1.bind($,q),enumerable:!0});if(E)O.set($,H);return H},C2=($)=>{var S=(d1??=new WeakMap).get($),Y;if(S)return S;if(S=z$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of c1($))if(!D1.call(S,E))z$(S,E,{get:p1.bind($,E),enumerable:!(Y=B2($,E))||Y.enumerable})}return d1.set($,S),S},d1,l1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var m2=($)=>$;function j2($,S){this[$]=m2.bind(null,S)}var y2=($,S)=>{for(var Y in S)z$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:j2.bind(S,Y)})};var f2=($,S)=>()=>($&&(S=$($=0)),S);var K=import.meta.require;var $1=l1((I3,$0)=>{var t$={to($,S){if(!S)return`\x1B[${$+1}G`;return`\x1B[${S+1};${$+1}H`},move($,S){let Y="";if($<0)Y+=`\x1B[${-$}D`;else if($>0)Y+=`\x1B[${$}C`;if(S<0)Y+=`\x1B[${-S}A`;else if(S>0)Y+=`\x1B[${S}B`;return Y},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"},F2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},k2={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let S="";for(let Y=0;Y<$;Y++)S+=this.line+(Y<$-1?t$.up():"");if($)S+=t$.left;return S}};$0.exports={cursor:t$,scroll:F2,erase:k2,beep:"\x07"}});var H1=l1((X3,S1)=>{var C$=process||{},S0=C$.argv||[],K$=C$.env||{},u2=!(!!K$.NO_COLOR||S0.includes("--no-color"))&&(!!K$.FORCE_COLOR||S0.includes("--color")||C$.platform==="win32"||(C$.stdout||{}).isTTY&&K$.TERM!=="dumb"||!!K$.CI),g2=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+d2(O,S,Y,x)+S:$+O+S},d2=($,S,Y,E)=>{let O="",x=0;do O+=$.substring(x,E)+Y,x=E+S.length,E=$.indexOf(S,x);while(~E);return O+$.substring(x)},H0=($=u2)=>{let S=$?g2:()=>String;return{isColorSupported:$,reset:S("\x1B[0m","\x1B[0m"),bold:S("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:S("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:S("\x1B[3m","\x1B[23m"),underline:S("\x1B[4m","\x1B[24m"),inverse:S("\x1B[7m","\x1B[27m"),hidden:S("\x1B[8m","\x1B[28m"),strikethrough:S("\x1B[9m","\x1B[29m"),black:S("\x1B[30m","\x1B[39m"),red:S("\x1B[31m","\x1B[39m"),green:S("\x1B[32m","\x1B[39m"),yellow:S("\x1B[33m","\x1B[39m"),blue:S("\x1B[34m","\x1B[39m"),magenta:S("\x1B[35m","\x1B[39m"),cyan:S("\x1B[36m","\x1B[39m"),white:S("\x1B[37m","\x1B[39m"),gray:S("\x1B[90m","\x1B[39m"),bgBlack:S("\x1B[40m","\x1B[49m"),bgRed:S("\x1B[41m","\x1B[49m"),bgGreen:S("\x1B[42m","\x1B[49m"),bgYellow:S("\x1B[43m","\x1B[49m"),bgBlue:S("\x1B[44m","\x1B[49m"),bgMagenta:S("\x1B[45m","\x1B[49m"),bgCyan:S("\x1B[46m","\x1B[49m"),bgWhite:S("\x1B[47m","\x1B[49m"),blackBright:S("\x1B[90m","\x1B[39m"),redBright:S("\x1B[91m","\x1B[39m"),greenBright:S("\x1B[92m","\x1B[39m"),yellowBright:S("\x1B[93m","\x1B[39m"),blueBright:S("\x1B[94m","\x1B[39m"),magentaBright:S("\x1B[95m","\x1B[39m"),cyanBright:S("\x1B[96m","\x1B[39m"),whiteBright:S("\x1B[97m","\x1B[39m"),bgBlackBright:S("\x1B[100m","\x1B[49m"),bgRedBright:S("\x1B[101m","\x1B[49m"),bgGreenBright:S("\x1B[102m","\x1B[49m"),bgYellowBright:S("\x1B[103m","\x1B[49m"),bgBlueBright:S("\x1B[104m","\x1B[49m"),bgMagentaBright:S("\x1B[105m","\x1B[49m"),bgCyanBright:S("\x1B[106m","\x1B[49m"),bgWhiteBright:S("\x1B[107m","\x1B[49m")}};S1.exports=H0();S1.exports.createColors=H0});var K0={};y2(K0,{t:()=>M,setLocale:()=>Z1,getLocale:()=>Q$,detectLocale:()=>H$,clearLocaleOverride:()=>US});function H$(){if(_$)return _$;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($){_$=$}function US(){_$=null}function M($,S){let Y=H$(),E=$.split("."),O=VS;for(let H of E)if(O=O?.[H],!O)return $;let x=O[Y]||O.en||$;if(S)for(let[H,q]of Object.entries(S))x=x.replace(`{${H}}`,String(q));return x}function Q$(){return H$()}var _$=null,VS;var h=f2(()=>{VS={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}"},selectOptions:{en:"Select launch options (Space to toggle, Enter to confirm):",zh:"\u9009\u62E9\u542F\u52A8\u9009\u9879\uFF08\u7A7A\u683C\u5207\u6362\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\uFF1A"},resetOptions:{en:"Reset Launch Options",zh:"\u91CD\u7F6E\u542F\u52A8\u9009\u9879"},optionsReset:{en:"Launch options have been reset. You will be prompted again next time.",zh:"\u542F\u52A8\u9009\u9879\u5DF2\u91CD\u7F6E\uFF0C\u4E0B\u6B21\u542F\u52A8\u65F6\u5C06\u91CD\u65B0\u9009\u62E9\u3002"}},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"},shortcutGemini:{en:" --gemini Launch Gemini CLI directly",zh:" --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},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"},exampleGemini:{en:" tako --gemini Launch Gemini CLI directly",zh:" tako --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},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"}},claudeCode:{settingsDetected:{en:`Detected hardcoded config in Claude Code settings that conflicts with Tako:
4
4
  {fields}`,zh:`\u68C0\u6D4B\u5230 Claude Code settings \u4E2D\u5B58\u5728\u4E0E Tako \u51B2\u7A81\u7684\u914D\u7F6E\uFF1A
5
- {fields}`},confirmClean:{en:"Clean these settings? Tako will manage them automatically at launch",zh:"\u662F\u5426\u6E05\u7406\u8FD9\u4E9B\u914D\u7F6E\uFF1FTako \u542F\u52A8\u65F6\u4F1A\u81EA\u52A8\u6CE8\u5165\u6B63\u786E\u7684\u503C"},settingsCleaned:{en:"Settings cleaned, Tako will manage these configs automatically",zh:"\u5DF2\u6E05\u7406\u5B8C\u6210\uFF0CTako \u4F1A\u81EA\u52A8\u7BA1\u7406\u8FD9\u4E9B\u914D\u7F6E"},cleanSkipped:{en:"Skipped. Note: hardcoded settings may cause issues with Tako",zh:"\u5DF2\u8DF3\u8FC7\u3002\u6CE8\u610F\uFF1A\u5199\u6B7B\u7684\u914D\u7F6E\u53EF\u80FD\u5BFC\u81F4 Tako \u542F\u52A8\u5F02\u5E38"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}}}});import{homedir as AS}from"os";import{join as BS}from"path";import{join as B$}from"path";import{homedir as _2}from"os";import{join as G$}from"path";var k=G$(_2(),".tako"),a1=G$(k,"config.json"),r$=G$(k,"tools"),u=G$(k,"cli"),i=G$(k,"bun"),C=G$(i,"bin",process.platform==="win32"?"bun.exe":"bun"),P2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",p=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Z3=process.env.TAKO_DEV==="true"||P2.includes("localhost"),o1={apiKey:"",apiId:"",installedClients:{}};async function i1(){let $=await import("fs/promises");try{await $.mkdir(k,{recursive:!0}),await $.mkdir(r$,{recursive:!0})}catch{}}async function L(){await i1();try{let $=Bun.file(a1);if(await $.exists()){let S=await $.json();return{...o1,...S}}}catch{}return{...o1}}async function n$($){await i1(),await Bun.write(a1,JSON.stringify($,null,2))}async function l($){let Y={...await L(),...$};return await n$(Y),Y}async function r1(){return!!(await L()).apiKey}async function A$(){return(await L()).apiKey}async function n1(){return(await L()).apiId}function s$($,S){if(!$.startsWith(k))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function R$($){let S=B$(r$,$);return s$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function s1($){let S=R$($.id),Y=B$(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return null;let x=(await E.json()).bin;if(!x)return null;let H=null;if(typeof x==="string")H=x;else if(typeof x==="object"&&x[$.command])H=x[$.command];if(!H)return null;let q=B$(S,"node_modules",$.package,H);return s$(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function e1($){let S=R$($.id),Y=B$(S,"node_modules",".bin",$.command);return s$(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var e$=new Map;function w$($){e$.set($.id,$)}function t1(){return Array.from(e$.values())}function h$($){return e$.get($)}var B=V$($1(),1),j$=V$(H1(),1);import{stdin as v0,stdout as Z0}from"process";import*as r from"readline";import Y0 from"readline";import{WriteStream as c2}from"tty";function D2({onlyFirst:$=!1}={}){let S=["[\\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(S,$?void 0:"g")}var p2=D2();function b0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(p2,"")}function z0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var J0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(E){var O=E.charCodeAt(0),x=E.length==2?E.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=x&&x<=57343&&(O&=1023,x&=1023,H=O<<10|x,H+=65536),H==12288||65281<=H&&H<=65376||65504<=H&&H<=65510?"F":H==8361||65377<=H&&H<=65470||65474<=H&&H<=65479||65482<=H&&H<=65487||65490<=H&&H<=65495||65498<=H&&H<=65500||65512<=H&&H<=65518?"H":4352<=H&&H<=4447||4515<=H&&H<=4519||4602<=H&&H<=4607||9001<=H&&H<=9002||11904<=H&&H<=11929||11931<=H&&H<=12019||12032<=H&&H<=12245||12272<=H&&H<=12283||12289<=H&&H<=12350||12353<=H&&H<=12438||12441<=H&&H<=12543||12549<=H&&H<=12589||12593<=H&&H<=12686||12688<=H&&H<=12730||12736<=H&&H<=12771||12784<=H&&H<=12830||12832<=H&&H<=12871||12880<=H&&H<=13054||13056<=H&&H<=19903||19968<=H&&H<=42124||42128<=H&&H<=42182||43360<=H&&H<=43388||44032<=H&&H<=55203||55216<=H&&H<=55238||55243<=H&&H<=55291||63744<=H&&H<=64255||65040<=H&&H<=65049||65072<=H&&H<=65106||65108<=H&&H<=65126||65128<=H&&H<=65131||110592<=H&&H<=110593||127488<=H&&H<=127490||127504<=H&&H<=127546||127552<=H&&H<=127560||127568<=H&&H<=127569||131072<=H&&H<=194367||177984<=H&&H<=196605||196608<=H&&H<=262141?"W":32<=H&&H<=126||162<=H&&H<=163||165<=H&&H<=166||H==172||H==175||10214<=H&&H<=10221||10629<=H&&H<=10630?"Na":H==161||H==164||167<=H&&H<=168||H==170||173<=H&&H<=174||176<=H&&H<=180||182<=H&&H<=186||188<=H&&H<=191||H==198||H==208||215<=H&&H<=216||222<=H&&H<=225||H==230||232<=H&&H<=234||236<=H&&H<=237||H==240||242<=H&&H<=243||247<=H&&H<=250||H==252||H==254||H==257||H==273||H==275||H==283||294<=H&&H<=295||H==299||305<=H&&H<=307||H==312||319<=H&&H<=322||H==324||328<=H&&H<=331||H==333||338<=H&&H<=339||358<=H&&H<=359||H==363||H==462||H==464||H==466||H==468||H==470||H==472||H==474||H==476||H==593||H==609||H==708||H==711||713<=H&&H<=715||H==717||H==720||728<=H&&H<=731||H==733||H==735||768<=H&&H<=879||913<=H&&H<=929||931<=H&&H<=937||945<=H&&H<=961||963<=H&&H<=969||H==1025||1040<=H&&H<=1103||H==1105||H==8208||8211<=H&&H<=8214||8216<=H&&H<=8217||8220<=H&&H<=8221||8224<=H&&H<=8226||8228<=H&&H<=8231||H==8240||8242<=H&&H<=8243||H==8245||H==8251||H==8254||H==8308||H==8319||8321<=H&&H<=8324||H==8364||H==8451||H==8453||H==8457||H==8467||H==8470||8481<=H&&H<=8482||H==8486||H==8491||8531<=H&&H<=8532||8539<=H&&H<=8542||8544<=H&&H<=8555||8560<=H&&H<=8569||H==8585||8592<=H&&H<=8601||8632<=H&&H<=8633||H==8658||H==8660||H==8679||H==8704||8706<=H&&H<=8707||8711<=H&&H<=8712||H==8715||H==8719||H==8721||H==8725||H==8730||8733<=H&&H<=8736||H==8739||H==8741||8743<=H&&H<=8748||H==8750||8756<=H&&H<=8759||8764<=H&&H<=8765||H==8776||H==8780||H==8786||8800<=H&&H<=8801||8804<=H&&H<=8807||8810<=H&&H<=8811||8814<=H&&H<=8815||8834<=H&&H<=8835||8838<=H&&H<=8839||H==8853||H==8857||H==8869||H==8895||H==8978||9312<=H&&H<=9449||9451<=H&&H<=9547||9552<=H&&H<=9587||9600<=H&&H<=9615||9618<=H&&H<=9621||9632<=H&&H<=9633||9635<=H&&H<=9641||9650<=H&&H<=9651||9654<=H&&H<=9655||9660<=H&&H<=9661||9664<=H&&H<=9665||9670<=H&&H<=9672||H==9675||9678<=H&&H<=9681||9698<=H&&H<=9701||H==9711||9733<=H&&H<=9734||H==9737||9742<=H&&H<=9743||9748<=H&&H<=9749||H==9756||H==9758||H==9792||H==9794||9824<=H&&H<=9825||9827<=H&&H<=9829||9831<=H&&H<=9834||9836<=H&&H<=9837||H==9839||9886<=H&&H<=9887||9918<=H&&H<=9919||9924<=H&&H<=9933||9935<=H&&H<=9953||H==9955||9960<=H&&H<=9983||H==10045||H==10071||10102<=H&&H<=10111||11093<=H&&H<=11097||12872<=H&&H<=12879||57344<=H&&H<=63743||65024<=H&&H<=65039||H==65533||127232<=H&&H<=127242||127248<=H&&H<=127277||127280<=H&&H<=127337||127344<=H&&H<=127386||917760<=H&&H<=917999||983040<=H&&H<=1048573||1048576<=H&&H<=1114109?"A":"N"},S.characterLength=function(E){var O=this.eastAsianWidth(E);return O=="F"||O=="W"||O=="A"?2:1};function Y(E){return E.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(E){for(var O=Y(E),x=0,H=0;H<O.length;H++)x=x+this.characterLength(O[H]);return x},S.slice=function(E,O,x){textLen=S.length(E),O=O||0,x=x||1,O<0&&(O=textLen+O),x<0&&(x=textLen+x);for(var H="",q=0,R=Y(E),G=0;G<R.length;G++){var Q=R[G],v=S.length(Q);if(q>=O-(v==2?1:0))if(q+v<=x)H+=Q;else break;q+=v}return H}})(J0);var l2=J0.exports,o2=z0(l2),a2=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},i2=z0(a2);function J$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=b0($),$.length===0))return 0;$=$.replace(i2()," ");let Y=S.ambiguousIsNarrow?1:2,E=0;for(let O of $){let x=O.codePointAt(0);if(x<=31||x>=127&&x<=159||x>=768&&x<=879)continue;switch(o2.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var Y1=10,E0=($=0)=>(S)=>`\x1B[${S+$}m`,O0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,x0=($=0)=>(S,Y,E)=>`\x1B[${38+$};2;${S};${Y};${E}m`,I={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(I.modifier);var r2=Object.keys(I.color),n2=Object.keys(I.bgColor);[...r2,...n2];function s2(){let $=new Map;for(let[S,Y]of Object.entries(I)){for(let[E,O]of Object.entries(Y))I[E]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},Y[E]=I[E],$.set(O[0],O[1]);Object.defineProperty(I,S,{value:Y,enumerable:!1})}return Object.defineProperty(I,"codes",{value:$,enumerable:!1}),I.color.close="\x1B[39m",I.bgColor.close="\x1B[49m",I.color.ansi=E0(),I.color.ansi256=O0(),I.color.ansi16m=x0(),I.bgColor.ansi=E0(Y1),I.bgColor.ansi256=O0(Y1),I.bgColor.ansi16m=x0(Y1),Object.defineProperties(I,{rgbToAnsi256:{value:(S,Y,E)=>S===Y&&Y===E?S<8?16:S>248?231:Math.round((S-8)/247*24)+232:16+36*Math.round(S/255*5)+6*Math.round(Y/255*5)+Math.round(E/255*5),enumerable:!1},hexToRgb:{value:(S)=>{let Y=/[a-f\d]{6}|[a-f\d]{3}/i.exec(S.toString(16));if(!Y)return[0,0,0];let[E]=Y;E.length===3&&(E=[...E].map((x)=>x+x).join(""));let O=Number.parseInt(E,16);return[O>>16&255,O>>8&255,O&255]},enumerable:!1},hexToAnsi256:{value:(S)=>I.rgbToAnsi256(...I.hexToRgb(S)),enumerable:!1},ansi256ToAnsi:{value:(S)=>{if(S<8)return 30+S;if(S<16)return 90+(S-8);let Y,E,O;if(S>=232)Y=((S-232)*10+8)/255,E=Y,O=Y;else{S-=16;let q=S%36;Y=Math.floor(S/36)/5,E=Math.floor(q/6)/5,O=q%6/5}let x=Math.max(Y,E,O)*2;if(x===0)return 30;let H=30+(Math.round(O)<<2|Math.round(E)<<1|Math.round(Y));return x===2&&(H+=60),H},enumerable:!1},rgbToAnsi:{value:(S,Y,E)=>I.ansi256ToAnsi(I.rgbToAnsi256(S,Y,E)),enumerable:!1},hexToAnsi:{value:(S)=>I.ansi256ToAnsi(I.hexToAnsi256(S)),enumerable:!1}}),I}var e2=s2(),y$=new Set(["\x1B","\x9B"]),t2=39,O1="\x07",W0="[",$S="]",T0="m",x1=`${$S}8;;`,q0=($)=>`${y$.values().next().value}${W0}${$}${T0}`,G0=($)=>`${y$.values().next().value}${x1}${$}${O1}`,SS=($)=>$.split(" ").map((S)=>J$(S)),E1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=J$(b0($[$.length-1]));for(let[q,R]of E.entries()){let G=J$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),y$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(x1)),O){x?R===O1&&(O=!1,x=!1):R===T0&&(O=!1);continue}H+=G,H===Y&&q<E.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},HS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(J$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},YS=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=SS($),q=[""];for(let[G,Q]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let v=J$(q[q.length-1]);if(G!==0&&(v>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),v=0),(v>0||Y.trim===!1)&&(q[q.length-1]+=" ",v++)),Y.hard&&H[G]>S){let z=S-v,V=1+Math.floor((H[G]-z-1)/S);Math.floor((H[G]-1)/S)<V&&q.push(""),E1(q,Q,S);continue}if(v+H[G]>S&&v>0&&H[G]>0){if(Y.wordWrap===!1&&v<S){E1(q,Q,S);continue}q.push("")}if(v+H[G]>S&&Y.wordWrap===!1){E1(q,Q,S);continue}q[q.length-1]+=Q}Y.trim!==!1&&(q=q.map((G)=>HS(G)));let R=[...q.join(`
6
- `)];for(let[G,Q]of R.entries()){if(E+=Q,y$.has(Q)){let{groups:z}=new RegExp(`(?:\\${W0}(?<code>\\d+)m|\\${x1}(?<uri>.*)${O1})`).exec(R.slice(G).join(""))||{groups:{}};if(z.code!==void 0){let V=Number.parseFloat(z.code);O=V===t2?void 0:V}else z.uri!==void 0&&(x=z.uri.length===0?void 0:z.uri)}let v=e2.codes.get(Number(O));R[G+1]===`
5
+ {fields}`},confirmClean:{en:"Clean these settings? Tako will manage them automatically at launch",zh:"\u662F\u5426\u6E05\u7406\u8FD9\u4E9B\u914D\u7F6E\uFF1FTako \u542F\u52A8\u65F6\u4F1A\u81EA\u52A8\u6CE8\u5165\u6B63\u786E\u7684\u503C"},settingsCleaned:{en:"Settings cleaned, Tako will manage these configs automatically",zh:"\u5DF2\u6E05\u7406\u5B8C\u6210\uFF0CTako \u4F1A\u81EA\u52A8\u7BA1\u7406\u8FD9\u4E9B\u914D\u7F6E"},cleanSkipped:{en:"Skipped. Note: hardcoded settings may cause issues with Tako",zh:"\u5DF2\u8DF3\u8FC7\u3002\u6CE8\u610F\uFF1A\u5199\u6B7B\u7684\u914D\u7F6E\u53EF\u80FD\u5BFC\u81F4 Tako \u542F\u52A8\u5F02\u5E38"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}}}});import{homedir as AS}from"os";import{join as BS}from"path";import{join as B$}from"path";import{homedir as _2}from"os";import{join as G$}from"path";var k=G$(_2(),".tako"),a1=G$(k,"config.json"),r$=G$(k,"tools"),u=G$(k,"cli"),i=G$(k,"bun"),C=G$(i,"bin",process.platform==="win32"?"bun.exe":"bun"),P2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",p=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Z3=process.env.TAKO_DEV==="true"||P2.includes("localhost"),o1={apiKey:"",apiId:"",installedClients:{}};async function i1(){let $=await import("fs/promises");try{await $.mkdir(k,{recursive:!0}),await $.mkdir(r$,{recursive:!0})}catch{}}async function X(){await i1();try{let $=Bun.file(a1);if(await $.exists()){let S=await $.json();return{...o1,...S}}}catch{}return{...o1}}async function n$($){await i1(),await Bun.write(a1,JSON.stringify($,null,2))}async function l($){let Y={...await X(),...$};return await n$(Y),Y}async function r1(){return!!(await X()).apiKey}async function A$(){return(await X()).apiKey}async function n1(){return(await X()).apiId}function s$($,S){if(!$.startsWith(k))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function R$($){let S=B$(r$,$);return s$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function s1($){let S=R$($.id),Y=B$(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return null;let x=(await E.json()).bin;if(!x)return null;let H=null;if(typeof x==="string")H=x;else if(typeof x==="object"&&x[$.command])H=x[$.command];if(!H)return null;let q=B$(S,"node_modules",$.package,H);return s$(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function e1($){let S=R$($.id),Y=B$(S,"node_modules",".bin",$.command);return s$(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var e$=new Map;function w$($){e$.set($.id,$)}function t1(){return Array.from(e$.values())}function h$($){return e$.get($)}var B=V$($1(),1),j$=V$(H1(),1);import{stdin as v0,stdout as Z0}from"process";import*as r from"readline";import Y0 from"readline";import{WriteStream as c2}from"tty";function D2({onlyFirst:$=!1}={}){let S=["[\\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(S,$?void 0:"g")}var p2=D2();function b0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(p2,"")}function z0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var W0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(E){var O=E.charCodeAt(0),x=E.length==2?E.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=x&&x<=57343&&(O&=1023,x&=1023,H=O<<10|x,H+=65536),H==12288||65281<=H&&H<=65376||65504<=H&&H<=65510?"F":H==8361||65377<=H&&H<=65470||65474<=H&&H<=65479||65482<=H&&H<=65487||65490<=H&&H<=65495||65498<=H&&H<=65500||65512<=H&&H<=65518?"H":4352<=H&&H<=4447||4515<=H&&H<=4519||4602<=H&&H<=4607||9001<=H&&H<=9002||11904<=H&&H<=11929||11931<=H&&H<=12019||12032<=H&&H<=12245||12272<=H&&H<=12283||12289<=H&&H<=12350||12353<=H&&H<=12438||12441<=H&&H<=12543||12549<=H&&H<=12589||12593<=H&&H<=12686||12688<=H&&H<=12730||12736<=H&&H<=12771||12784<=H&&H<=12830||12832<=H&&H<=12871||12880<=H&&H<=13054||13056<=H&&H<=19903||19968<=H&&H<=42124||42128<=H&&H<=42182||43360<=H&&H<=43388||44032<=H&&H<=55203||55216<=H&&H<=55238||55243<=H&&H<=55291||63744<=H&&H<=64255||65040<=H&&H<=65049||65072<=H&&H<=65106||65108<=H&&H<=65126||65128<=H&&H<=65131||110592<=H&&H<=110593||127488<=H&&H<=127490||127504<=H&&H<=127546||127552<=H&&H<=127560||127568<=H&&H<=127569||131072<=H&&H<=194367||177984<=H&&H<=196605||196608<=H&&H<=262141?"W":32<=H&&H<=126||162<=H&&H<=163||165<=H&&H<=166||H==172||H==175||10214<=H&&H<=10221||10629<=H&&H<=10630?"Na":H==161||H==164||167<=H&&H<=168||H==170||173<=H&&H<=174||176<=H&&H<=180||182<=H&&H<=186||188<=H&&H<=191||H==198||H==208||215<=H&&H<=216||222<=H&&H<=225||H==230||232<=H&&H<=234||236<=H&&H<=237||H==240||242<=H&&H<=243||247<=H&&H<=250||H==252||H==254||H==257||H==273||H==275||H==283||294<=H&&H<=295||H==299||305<=H&&H<=307||H==312||319<=H&&H<=322||H==324||328<=H&&H<=331||H==333||338<=H&&H<=339||358<=H&&H<=359||H==363||H==462||H==464||H==466||H==468||H==470||H==472||H==474||H==476||H==593||H==609||H==708||H==711||713<=H&&H<=715||H==717||H==720||728<=H&&H<=731||H==733||H==735||768<=H&&H<=879||913<=H&&H<=929||931<=H&&H<=937||945<=H&&H<=961||963<=H&&H<=969||H==1025||1040<=H&&H<=1103||H==1105||H==8208||8211<=H&&H<=8214||8216<=H&&H<=8217||8220<=H&&H<=8221||8224<=H&&H<=8226||8228<=H&&H<=8231||H==8240||8242<=H&&H<=8243||H==8245||H==8251||H==8254||H==8308||H==8319||8321<=H&&H<=8324||H==8364||H==8451||H==8453||H==8457||H==8467||H==8470||8481<=H&&H<=8482||H==8486||H==8491||8531<=H&&H<=8532||8539<=H&&H<=8542||8544<=H&&H<=8555||8560<=H&&H<=8569||H==8585||8592<=H&&H<=8601||8632<=H&&H<=8633||H==8658||H==8660||H==8679||H==8704||8706<=H&&H<=8707||8711<=H&&H<=8712||H==8715||H==8719||H==8721||H==8725||H==8730||8733<=H&&H<=8736||H==8739||H==8741||8743<=H&&H<=8748||H==8750||8756<=H&&H<=8759||8764<=H&&H<=8765||H==8776||H==8780||H==8786||8800<=H&&H<=8801||8804<=H&&H<=8807||8810<=H&&H<=8811||8814<=H&&H<=8815||8834<=H&&H<=8835||8838<=H&&H<=8839||H==8853||H==8857||H==8869||H==8895||H==8978||9312<=H&&H<=9449||9451<=H&&H<=9547||9552<=H&&H<=9587||9600<=H&&H<=9615||9618<=H&&H<=9621||9632<=H&&H<=9633||9635<=H&&H<=9641||9650<=H&&H<=9651||9654<=H&&H<=9655||9660<=H&&H<=9661||9664<=H&&H<=9665||9670<=H&&H<=9672||H==9675||9678<=H&&H<=9681||9698<=H&&H<=9701||H==9711||9733<=H&&H<=9734||H==9737||9742<=H&&H<=9743||9748<=H&&H<=9749||H==9756||H==9758||H==9792||H==9794||9824<=H&&H<=9825||9827<=H&&H<=9829||9831<=H&&H<=9834||9836<=H&&H<=9837||H==9839||9886<=H&&H<=9887||9918<=H&&H<=9919||9924<=H&&H<=9933||9935<=H&&H<=9953||H==9955||9960<=H&&H<=9983||H==10045||H==10071||10102<=H&&H<=10111||11093<=H&&H<=11097||12872<=H&&H<=12879||57344<=H&&H<=63743||65024<=H&&H<=65039||H==65533||127232<=H&&H<=127242||127248<=H&&H<=127277||127280<=H&&H<=127337||127344<=H&&H<=127386||917760<=H&&H<=917999||983040<=H&&H<=1048573||1048576<=H&&H<=1114109?"A":"N"},S.characterLength=function(E){var O=this.eastAsianWidth(E);return O=="F"||O=="W"||O=="A"?2:1};function Y(E){return E.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(E){for(var O=Y(E),x=0,H=0;H<O.length;H++)x=x+this.characterLength(O[H]);return x},S.slice=function(E,O,x){textLen=S.length(E),O=O||0,x=x||1,O<0&&(O=textLen+O),x<0&&(x=textLen+x);for(var H="",q=0,R=Y(E),G=0;G<R.length;G++){var Q=R[G],v=S.length(Q);if(q>=O-(v==2?1:0))if(q+v<=x)H+=Q;else break;q+=v}return H}})(W0);var l2=W0.exports,o2=z0(l2),a2=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},i2=z0(a2);function W$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=b0($),$.length===0))return 0;$=$.replace(i2()," ");let Y=S.ambiguousIsNarrow?1:2,E=0;for(let O of $){let x=O.codePointAt(0);if(x<=31||x>=127&&x<=159||x>=768&&x<=879)continue;switch(o2.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var Y1=10,E0=($=0)=>(S)=>`\x1B[${S+$}m`,O0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,x0=($=0)=>(S,Y,E)=>`\x1B[${38+$};2;${S};${Y};${E}m`,I={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(I.modifier);var r2=Object.keys(I.color),n2=Object.keys(I.bgColor);[...r2,...n2];function s2(){let $=new Map;for(let[S,Y]of Object.entries(I)){for(let[E,O]of Object.entries(Y))I[E]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},Y[E]=I[E],$.set(O[0],O[1]);Object.defineProperty(I,S,{value:Y,enumerable:!1})}return Object.defineProperty(I,"codes",{value:$,enumerable:!1}),I.color.close="\x1B[39m",I.bgColor.close="\x1B[49m",I.color.ansi=E0(),I.color.ansi256=O0(),I.color.ansi16m=x0(),I.bgColor.ansi=E0(Y1),I.bgColor.ansi256=O0(Y1),I.bgColor.ansi16m=x0(Y1),Object.defineProperties(I,{rgbToAnsi256:{value:(S,Y,E)=>S===Y&&Y===E?S<8?16:S>248?231:Math.round((S-8)/247*24)+232:16+36*Math.round(S/255*5)+6*Math.round(Y/255*5)+Math.round(E/255*5),enumerable:!1},hexToRgb:{value:(S)=>{let Y=/[a-f\d]{6}|[a-f\d]{3}/i.exec(S.toString(16));if(!Y)return[0,0,0];let[E]=Y;E.length===3&&(E=[...E].map((x)=>x+x).join(""));let O=Number.parseInt(E,16);return[O>>16&255,O>>8&255,O&255]},enumerable:!1},hexToAnsi256:{value:(S)=>I.rgbToAnsi256(...I.hexToRgb(S)),enumerable:!1},ansi256ToAnsi:{value:(S)=>{if(S<8)return 30+S;if(S<16)return 90+(S-8);let Y,E,O;if(S>=232)Y=((S-232)*10+8)/255,E=Y,O=Y;else{S-=16;let q=S%36;Y=Math.floor(S/36)/5,E=Math.floor(q/6)/5,O=q%6/5}let x=Math.max(Y,E,O)*2;if(x===0)return 30;let H=30+(Math.round(O)<<2|Math.round(E)<<1|Math.round(Y));return x===2&&(H+=60),H},enumerable:!1},rgbToAnsi:{value:(S,Y,E)=>I.ansi256ToAnsi(I.rgbToAnsi256(S,Y,E)),enumerable:!1},hexToAnsi:{value:(S)=>I.ansi256ToAnsi(I.hexToAnsi256(S)),enumerable:!1}}),I}var e2=s2(),y$=new Set(["\x1B","\x9B"]),t2=39,O1="\x07",J0="[",$S="]",T0="m",x1=`${$S}8;;`,q0=($)=>`${y$.values().next().value}${J0}${$}${T0}`,G0=($)=>`${y$.values().next().value}${x1}${$}${O1}`,SS=($)=>$.split(" ").map((S)=>W$(S)),E1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=W$(b0($[$.length-1]));for(let[q,R]of E.entries()){let G=W$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),y$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(x1)),O){x?R===O1&&(O=!1,x=!1):R===T0&&(O=!1);continue}H+=G,H===Y&&q<E.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},HS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(W$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},YS=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=SS($),q=[""];for(let[G,Q]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let v=W$(q[q.length-1]);if(G!==0&&(v>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),v=0),(v>0||Y.trim===!1)&&(q[q.length-1]+=" ",v++)),Y.hard&&H[G]>S){let z=S-v,V=1+Math.floor((H[G]-z-1)/S);Math.floor((H[G]-1)/S)<V&&q.push(""),E1(q,Q,S);continue}if(v+H[G]>S&&v>0&&H[G]>0){if(Y.wordWrap===!1&&v<S){E1(q,Q,S);continue}q.push("")}if(v+H[G]>S&&Y.wordWrap===!1){E1(q,Q,S);continue}q[q.length-1]+=Q}Y.trim!==!1&&(q=q.map((G)=>HS(G)));let R=[...q.join(`
6
+ `)];for(let[G,Q]of R.entries()){if(E+=Q,y$.has(Q)){let{groups:z}=new RegExp(`(?:\\${J0}(?<code>\\d+)m|\\${x1}(?<uri>.*)${O1})`).exec(R.slice(G).join(""))||{groups:{}};if(z.code!==void 0){let V=Number.parseFloat(z.code);O=V===t2?void 0:V}else z.uri!==void 0&&(x=z.uri.length===0?void 0:z.uri)}let v=e2.codes.get(Number(O));R[G+1]===`
7
7
  `?(x&&(E+=G0("")),O&&v&&(E+=q0(v))):Q===`
8
8
  `&&(O&&v&&(E+=q0(O)),x&&(E+=G0(x)))}return E};function R0($,S,Y){return String($).normalize().replace(/\r\n/g,`
9
9
  `).split(`
10
10
  `).map((E)=>YS(E,S,Y)).join(`
11
11
  `)}var ES=Object.defineProperty,OS=($,S,Y)=>(S in $)?ES($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,y=($,S,Y)=>(OS($,typeof S!="symbol"?S+"":S,Y),Y);function xS($,S){if($===S)return;let Y=$.split(`
12
12
  `),E=S.split(`
13
- `),O=[];for(let x=0;x<Math.max(Y.length,E.length);x++)Y[x]!==E[x]&&O.push(x);return O}var I0=Symbol("clack:cancel");function A($){return $===I0}function m$($,S){$.isTTY&&$.setRawMode(S)}var w0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),qS=new Set(["up","down","left","right","space","enter"]);class W${constructor({render:$,input:S=v0,output:Y=Z0,...E},O=!0){y(this,"input"),y(this,"output"),y(this,"rl"),y(this,"opts"),y(this,"_track",!1),y(this,"_render"),y(this,"_cursor",0),y(this,"state","initial"),y(this,"value"),y(this,"error",""),y(this,"subscribers",new Map),y(this,"_prevFrame",""),this.opts=E,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=$.bind(this),this._track=O,this.input=S,this.output=Y}prompt(){let $=new c2(0);return $._write=(S,Y,E)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),E()},this.input.pipe($),this.rl=Y0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),Y0.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),m$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,Y)=>{this.once("submit",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),m$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),m$(this.input,!1),S(I0)})})}on($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S}),this.subscribers.set($,Y)}once($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S,once:!0}),this.subscribers.set($,Y)}emit($,...S){let Y=this.subscribers.get($)??[],E=[];for(let O of Y)O.cb(...S),O.once&&E.push(()=>Y.splice(Y.indexOf(O),1));for(let O of E)O()}unsubscribe(){this.subscribers.clear()}onKeypress($,S){if(this.state==="error"&&(this.state="active"),S?.name&&!this._track&&w0.has(S.name)&&this.emit("cursor",w0.get(S.name)),S?.name&&qS.has(S.name)&&this.emit("cursor",S.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()),S?.name==="return"){if(this.opts.validate){let Y=this.opts.validate(this.value);Y&&(this.error=Y,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(`
13
+ `),O=[];for(let x=0;x<Math.max(Y.length,E.length);x++)Y[x]!==E[x]&&O.push(x);return O}var I0=Symbol("clack:cancel");function A($){return $===I0}function m$($,S){$.isTTY&&$.setRawMode(S)}var w0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),qS=new Set(["up","down","left","right","space","enter"]);class J${constructor({render:$,input:S=v0,output:Y=Z0,...E},O=!0){y(this,"input"),y(this,"output"),y(this,"rl"),y(this,"opts"),y(this,"_track",!1),y(this,"_render"),y(this,"_cursor",0),y(this,"state","initial"),y(this,"value"),y(this,"error",""),y(this,"subscribers",new Map),y(this,"_prevFrame",""),this.opts=E,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=$.bind(this),this._track=O,this.input=S,this.output=Y}prompt(){let $=new c2(0);return $._write=(S,Y,E)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),E()},this.input.pipe($),this.rl=Y0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),Y0.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),m$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,Y)=>{this.once("submit",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),m$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),m$(this.input,!1),S(I0)})})}on($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S}),this.subscribers.set($,Y)}once($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S,once:!0}),this.subscribers.set($,Y)}emit($,...S){let Y=this.subscribers.get($)??[],E=[];for(let O of Y)O.cb(...S),O.once&&E.push(()=>Y.splice(Y.indexOf(O),1));for(let O of E)O()}unsubscribe(){this.subscribers.clear()}onKeypress($,S){if(this.state==="error"&&(this.state="active"),S?.name&&!this._track&&w0.has(S.name)&&this.emit("cursor",w0.get(S.name)),S?.name&&qS.has(S.name)&&this.emit("cursor",S.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()),S?.name==="return"){if(this.opts.validate){let Y=this.opts.validate(this.value);Y&&(this.error=Y,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(`
14
14
  `),m$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=R0(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
15
15
  `).length-1;this.output.write(B.cursor.move(-999,$*-1))}render(){let $=R0(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(B.cursor.hide);else{let S=xS(this._prevFrame,$);if(this.restoreCursor(),S&&S?.length===1){let Y=S[0];this.output.write(B.cursor.move(0,Y)),this.output.write(B.erase.lines(1));let E=$.split(`
16
16
  `);this.output.write(E[Y]),this._prevFrame=$,this.output.write(B.cursor.move(0,E.length-Y-1));return}else if(S&&S?.length>1){let Y=S[0];this.output.write(B.cursor.move(0,Y)),this.output.write(B.erase.down());let E=$.split(`
17
17
  `).slice(Y);this.output.write(E.join(`
18
- `)),this._prevFrame=$;return}this.output.write(B.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class q1 extends W${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(S)=>{this.output.write(B.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var GS=Object.defineProperty,RS=($,S,Y)=>(S in $)?GS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,M0=($,S,Y)=>(RS($,typeof S!="symbol"?S+"":S,Y),Y),L0=class extends W${constructor($){super($,!1),M0(this,"options"),M0(this,"cursor",0),this.options=$.options,this.value=[...$.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:S})=>S===$.cursorAt),0),this.on("key",(S)=>{S==="a"&&this.toggleAll()}),this.on("cursor",(S)=>{switch(S){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;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let $=this.value.length===this.options.length;this.value=$?[]:this.options.map((S)=>S.value)}toggleValue(){let $=this.value.includes(this._value);this.value=$?this.value.filter((S)=>S!==this._value):[...this.value,this._value]}};var wS=Object.defineProperty,MS=($,S,Y)=>(S in $)?wS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,Q0=($,S,Y)=>(MS($,typeof S!="symbol"?S+"":S,Y),Y),X0=class extends W${constructor($){super($,!1),Q0(this,"options"),Q0(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:S})=>S===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(S)=>{switch(S){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 QS=Object.defineProperty,vS=($,S,Y)=>(S in $)?QS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,ZS=($,S,Y)=>(vS($,typeof S!="symbol"?S+"":S,Y),Y);class G1 extends W${constructor($){super($),ZS(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}${j$.default.inverse(j$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),Y=this.value.slice(this.cursor);this.valueWithCursor=`${S}${j$.default.inverse(Y[0])}${Y.slice(1)}`}})}get cursor(){return this._cursor}}var bS=globalThis.process.platform.startsWith("win");function N0({input:$=v0,output:S=Z0,overwrite:Y=!0,hideCursor:E=!0}={}){let O=r.createInterface({input:$,output:S,prompt:"",tabSize:1});r.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let x=(H,{name:q})=>{if(String(H)==="\x03"){E&&S.write(B.cursor.show),process.exit(0);return}if(!Y)return;r.moveCursor(S,q==="return"?0:-1,q==="return"?-1:0,()=>{r.clearLine(S,1,()=>{$.once("keypress",x)})})};return E&&S.write(B.cursor.hide),$.once("keypress",x),()=>{$.off("keypress",x),E&&S.write(B.cursor.show),$.isTTY&&!bS&&$.setRawMode(!1),O.terminal=!1,O.close()}}var w=V$(H1(),1),M$=V$($1(),1);import P from"process";function zS(){return P.platform!=="win32"?P.env.TERM!=="linux":Boolean(P.env.CI)||Boolean(P.env.WT_SESSION)||Boolean(P.env.TERMINUS_SUBLIME)||P.env.ConEmuTask==="{cmd::Cmder}"||P.env.TERM_PROGRAM==="Terminus-Sublime"||P.env.TERM_PROGRAM==="vscode"||P.env.TERM==="xterm-256color"||P.env.TERM==="alacritty"||P.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var R1=zS(),U=($,S)=>R1?$:S,JS=U("\u25C6","*"),V0=U("\u25A0","x"),A0=U("\u25B2","x"),Q1=U("\u25C7","o"),y3=U("\u250C","T"),J=U("\u2502","|"),$$=U("\u2514","\u2014"),w1=U("\u25CF",">"),M1=U("\u25CB"," "),WS=U("\u25FB","[\u2022]"),U0=U("\u25FC","[+]"),TS=U("\u25FB","[ ]"),f3=U("\u25AA","\u2022"),_3=U("\u2500","-"),P3=U("\u256E","+"),F3=U("\u251C","+"),k3=U("\u256F","+"),IS=U("\u25CF","\u2022"),LS=U("\u25C6","*"),XS=U("\u25B2","!"),NS=U("\u25A0","x"),f$=($)=>{switch($){case"initial":case"active":return w.default.cyan(JS);case"cancel":return w.default.red(V0);case"error":return w.default.yellow(A0);case"submit":return w.default.green(Q1)}},B0=($)=>new G1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${w.default.gray(J)}
18
+ `)),this._prevFrame=$;return}this.output.write(B.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class q1 extends J${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(S)=>{this.output.write(B.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var GS=Object.defineProperty,RS=($,S,Y)=>(S in $)?GS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,M0=($,S,Y)=>(RS($,typeof S!="symbol"?S+"":S,Y),Y),X0=class extends J${constructor($){super($,!1),M0(this,"options"),M0(this,"cursor",0),this.options=$.options,this.value=[...$.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:S})=>S===$.cursorAt),0),this.on("key",(S)=>{S==="a"&&this.toggleAll()}),this.on("cursor",(S)=>{switch(S){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;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let $=this.value.length===this.options.length;this.value=$?[]:this.options.map((S)=>S.value)}toggleValue(){let $=this.value.includes(this._value);this.value=$?this.value.filter((S)=>S!==this._value):[...this.value,this._value]}};var wS=Object.defineProperty,MS=($,S,Y)=>(S in $)?wS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,Q0=($,S,Y)=>(MS($,typeof S!="symbol"?S+"":S,Y),Y),L0=class extends J${constructor($){super($,!1),Q0(this,"options"),Q0(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:S})=>S===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(S)=>{switch(S){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 QS=Object.defineProperty,vS=($,S,Y)=>(S in $)?QS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,ZS=($,S,Y)=>(vS($,typeof S!="symbol"?S+"":S,Y),Y);class G1 extends J${constructor($){super($),ZS(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}${j$.default.inverse(j$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),Y=this.value.slice(this.cursor);this.valueWithCursor=`${S}${j$.default.inverse(Y[0])}${Y.slice(1)}`}})}get cursor(){return this._cursor}}var bS=globalThis.process.platform.startsWith("win");function N0({input:$=v0,output:S=Z0,overwrite:Y=!0,hideCursor:E=!0}={}){let O=r.createInterface({input:$,output:S,prompt:"",tabSize:1});r.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let x=(H,{name:q})=>{if(String(H)==="\x03"){E&&S.write(B.cursor.show),process.exit(0);return}if(!Y)return;r.moveCursor(S,q==="return"?0:-1,q==="return"?-1:0,()=>{r.clearLine(S,1,()=>{$.once("keypress",x)})})};return E&&S.write(B.cursor.hide),$.once("keypress",x),()=>{$.off("keypress",x),E&&S.write(B.cursor.show),$.isTTY&&!bS&&$.setRawMode(!1),O.terminal=!1,O.close()}}var w=V$(H1(),1),M$=V$($1(),1);import P from"process";function zS(){return P.platform!=="win32"?P.env.TERM!=="linux":Boolean(P.env.CI)||Boolean(P.env.WT_SESSION)||Boolean(P.env.TERMINUS_SUBLIME)||P.env.ConEmuTask==="{cmd::Cmder}"||P.env.TERM_PROGRAM==="Terminus-Sublime"||P.env.TERM_PROGRAM==="vscode"||P.env.TERM==="xterm-256color"||P.env.TERM==="alacritty"||P.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var R1=zS(),U=($,S)=>R1?$:S,WS=U("\u25C6","*"),V0=U("\u25A0","x"),A0=U("\u25B2","x"),Q1=U("\u25C7","o"),y3=U("\u250C","T"),W=U("\u2502","|"),$$=U("\u2514","\u2014"),w1=U("\u25CF",">"),M1=U("\u25CB"," "),JS=U("\u25FB","[\u2022]"),U0=U("\u25FC","[+]"),TS=U("\u25FB","[ ]"),f3=U("\u25AA","\u2022"),_3=U("\u2500","-"),P3=U("\u256E","+"),F3=U("\u251C","+"),k3=U("\u256F","+"),IS=U("\u25CF","\u2022"),XS=U("\u25C6","*"),LS=U("\u25B2","!"),NS=U("\u25A0","x"),f$=($)=>{switch($){case"initial":case"active":return w.default.cyan(WS);case"cancel":return w.default.red(V0);case"error":return w.default.yellow(A0);case"submit":return w.default.green(Q1)}},B0=($)=>new G1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${w.default.gray(W)}
19
19
  ${f$(this.state)} ${$.message}
20
20
  `,Y=$.placeholder?w.default.inverse($.placeholder[0])+w.default.dim($.placeholder.slice(1)):w.default.inverse(w.default.hidden("_")),E=this.value?this.valueWithCursor:Y;switch(this.state){case"error":return`${S.trim()}
21
- ${w.default.yellow(J)} ${E}
21
+ ${w.default.yellow(W)} ${E}
22
22
  ${w.default.yellow($$)} ${w.default.yellow(this.error)}
23
- `;case"submit":return`${S}${w.default.gray(J)} ${w.default.dim(this.value||$.placeholder)}`;case"cancel":return`${S}${w.default.gray(J)} ${w.default.strikethrough(w.default.dim(this.value??""))}${this.value?.trim()?`
24
- `+w.default.gray(J):""}`;default:return`${S}${w.default.cyan(J)} ${E}
23
+ `;case"submit":return`${S}${w.default.gray(W)} ${w.default.dim(this.value||$.placeholder)}`;case"cancel":return`${S}${w.default.gray(W)} ${w.default.strikethrough(w.default.dim(this.value??""))}${this.value?.trim()?`
24
+ `+w.default.gray(W):""}`;default:return`${S}${w.default.cyan(W)} ${E}
25
25
  ${w.default.cyan($$)}
26
- `}}}).prompt();var n=($)=>{let S=$.active??"Yes",Y=$.inactive??"No";return new q1({active:S,inactive:Y,initialValue:$.initialValue??!0,render(){let E=`${w.default.gray(J)}
26
+ `}}}).prompt();var n=($)=>{let S=$.active??"Yes",Y=$.inactive??"No";return new q1({active:S,inactive:Y,initialValue:$.initialValue??!0,render(){let E=`${w.default.gray(W)}
27
27
  ${f$(this.state)} ${$.message}
28
- `,O=this.value?S:Y;switch(this.state){case"submit":return`${E}${w.default.gray(J)} ${w.default.dim(O)}`;case"cancel":return`${E}${w.default.gray(J)} ${w.default.strikethrough(w.default.dim(O))}
29
- ${w.default.gray(J)}`;default:return`${E}${w.default.cyan(J)} ${this.value?`${w.default.green(w1)} ${S}`:`${w.default.dim(M1)} ${w.default.dim(S)}`} ${w.default.dim("/")} ${this.value?`${w.default.dim(M1)} ${w.default.dim(Y)}`:`${w.default.green(w1)} ${Y}`}
28
+ `,O=this.value?S:Y;switch(this.state){case"submit":return`${E}${w.default.gray(W)} ${w.default.dim(O)}`;case"cancel":return`${E}${w.default.gray(W)} ${w.default.strikethrough(w.default.dim(O))}
29
+ ${w.default.gray(W)}`;default:return`${E}${w.default.cyan(W)} ${this.value?`${w.default.green(w1)} ${S}`:`${w.default.dim(M1)} ${w.default.dim(S)}`} ${w.default.dim("/")} ${this.value?`${w.default.dim(M1)} ${w.default.dim(Y)}`:`${w.default.green(w1)} ${Y}`}
30
30
  ${w.default.cyan($$)}
31
- `}}}).prompt()},S$=($)=>{let S=(E,O)=>{let x=E.label??String(E.value);return O==="active"?`${w.default.green(w1)} ${x} ${E.hint?w.default.dim(`(${E.hint})`):""}`:O==="selected"?`${w.default.dim(x)}`:O==="cancelled"?`${w.default.strikethrough(w.default.dim(x))}`:`${w.default.dim(M1)} ${w.default.dim(x)}`},Y=0;return new X0({options:$.options,initialValue:$.initialValue,render(){let E=`${w.default.gray(J)}
31
+ `}}}).prompt()},S$=($)=>{let S=(E,O)=>{let x=E.label??String(E.value);return O==="active"?`${w.default.green(w1)} ${x} ${E.hint?w.default.dim(`(${E.hint})`):""}`:O==="selected"?`${w.default.dim(x)}`:O==="cancelled"?`${w.default.strikethrough(w.default.dim(x))}`:`${w.default.dim(M1)} ${w.default.dim(x)}`},Y=0;return new L0({options:$.options,initialValue:$.initialValue,render(){let E=`${w.default.gray(W)}
32
32
  ${f$(this.state)} ${$.message}
33
- `;switch(this.state){case"submit":return`${E}${w.default.gray(J)} ${S(this.options[this.cursor],"selected")}`;case"cancel":return`${E}${w.default.gray(J)} ${S(this.options[this.cursor],"cancelled")}
34
- ${w.default.gray(J)}`;default:{let O=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=Y+O-3?Y=Math.max(Math.min(this.cursor-O+3,this.options.length-O),0):this.cursor<Y+2&&(Y=Math.max(this.cursor-2,0));let x=O<this.options.length&&Y>0,H=O<this.options.length&&Y+O<this.options.length;return`${E}${w.default.cyan(J)} ${this.options.slice(Y,Y+O).map((q,R,G)=>R===0&&x?w.default.dim("..."):R===G.length-1&&H?w.default.dim("..."):S(q,R+Y===this.cursor?"active":"inactive")).join(`
35
- ${w.default.cyan(J)} `)}
33
+ `;switch(this.state){case"submit":return`${E}${w.default.gray(W)} ${S(this.options[this.cursor],"selected")}`;case"cancel":return`${E}${w.default.gray(W)} ${S(this.options[this.cursor],"cancelled")}
34
+ ${w.default.gray(W)}`;default:{let O=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=Y+O-3?Y=Math.max(Math.min(this.cursor-O+3,this.options.length-O),0):this.cursor<Y+2&&(Y=Math.max(this.cursor-2,0));let x=O<this.options.length&&Y>0,H=O<this.options.length&&Y+O<this.options.length;return`${E}${w.default.cyan(W)} ${this.options.slice(Y,Y+O).map((q,R,G)=>R===0&&x?w.default.dim("..."):R===G.length-1&&H?w.default.dim("..."):S(q,R+Y===this.cursor?"active":"inactive")).join(`
35
+ ${w.default.cyan(W)} `)}
36
36
  ${w.default.cyan($$)}
37
- `}}}}).prompt()};var h0=($)=>{let S=(Y,E)=>{let O=Y.label??String(Y.value);return E==="active"?`${w.default.cyan(WS)} ${O} ${Y.hint?w.default.dim(`(${Y.hint})`):""}`:E==="selected"?`${w.default.green(U0)} ${w.default.dim(O)}`:E==="cancelled"?`${w.default.strikethrough(w.default.dim(O))}`:E==="active-selected"?`${w.default.green(U0)} ${O} ${Y.hint?w.default.dim(`(${Y.hint})`):""}`:E==="submitted"?`${w.default.dim(O)}`:`${w.default.dim(TS)} ${w.default.dim(O)}`};return new L0({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(Y){if(this.required&&Y.length===0)return`Please select at least one option.
38
- ${w.default.reset(w.default.dim(`Press ${w.default.gray(w.default.bgWhite(w.default.inverse(" space ")))} to select, ${w.default.gray(w.default.bgWhite(w.default.inverse(" enter ")))} to submit`))}`},render(){let Y=`${w.default.gray(J)}
37
+ `}}}}).prompt()};var h0=($)=>{let S=(Y,E)=>{let O=Y.label??String(Y.value);return E==="active"?`${w.default.cyan(JS)} ${O} ${Y.hint?w.default.dim(`(${Y.hint})`):""}`:E==="selected"?`${w.default.green(U0)} ${w.default.dim(O)}`:E==="cancelled"?`${w.default.strikethrough(w.default.dim(O))}`:E==="active-selected"?`${w.default.green(U0)} ${O} ${Y.hint?w.default.dim(`(${Y.hint})`):""}`:E==="submitted"?`${w.default.dim(O)}`:`${w.default.dim(TS)} ${w.default.dim(O)}`};return new X0({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(Y){if(this.required&&Y.length===0)return`Please select at least one option.
38
+ ${w.default.reset(w.default.dim(`Press ${w.default.gray(w.default.bgWhite(w.default.inverse(" space ")))} to select, ${w.default.gray(w.default.bgWhite(w.default.inverse(" enter ")))} to submit`))}`},render(){let Y=`${w.default.gray(W)}
39
39
  ${f$(this.state)} ${$.message}
40
- `;switch(this.state){case"submit":return`${Y}${w.default.gray(J)} ${this.options.filter(({value:E})=>this.value.includes(E)).map((E)=>S(E,"submitted")).join(w.default.dim(", "))||w.default.dim("none")}`;case"cancel":{let E=this.options.filter(({value:O})=>this.value.includes(O)).map((O)=>S(O,"cancelled")).join(w.default.dim(", "));return`${Y}${w.default.gray(J)} ${E.trim()?`${E}
41
- ${w.default.gray(J)}`:""}`}case"error":{let E=this.error.split(`
40
+ `;switch(this.state){case"submit":return`${Y}${w.default.gray(W)} ${this.options.filter(({value:E})=>this.value.includes(E)).map((E)=>S(E,"submitted")).join(w.default.dim(", "))||w.default.dim("none")}`;case"cancel":{let E=this.options.filter(({value:O})=>this.value.includes(O)).map((O)=>S(O,"cancelled")).join(w.default.dim(", "));return`${Y}${w.default.gray(W)} ${E.trim()?`${E}
41
+ ${w.default.gray(W)}`:""}`}case"error":{let E=this.error.split(`
42
42
  `).map((O,x)=>x===0?`${w.default.yellow($$)} ${w.default.yellow(O)}`:` ${O}`).join(`
43
- `);return Y+w.default.yellow(J)+" "+this.options.map((O,x)=>{let H=this.value.includes(O.value),q=x===this.cursor;return q&&H?S(O,"active-selected"):H?S(O,"selected"):S(O,q?"active":"inactive")}).join(`
44
- ${w.default.yellow(J)} `)+`
43
+ `);return Y+w.default.yellow(W)+" "+this.options.map((O,x)=>{let H=this.value.includes(O.value),q=x===this.cursor;return q&&H?S(O,"active-selected"):H?S(O,"selected"):S(O,q?"active":"inactive")}).join(`
44
+ ${w.default.yellow(W)} `)+`
45
45
  `+E+`
46
- `}default:return`${Y}${w.default.cyan(J)} ${this.options.map((E,O)=>{let x=this.value.includes(E.value),H=O===this.cursor;return H&&x?S(E,"active-selected"):x?S(E,"selected"):S(E,H?"active":"inactive")}).join(`
47
- ${w.default.cyan(J)} `)}
46
+ `}default:return`${Y}${w.default.cyan(W)} ${this.options.map((E,O)=>{let x=this.value.includes(E.value),H=O===this.cursor;return H&&x?S(E,"active-selected"):x?S(E,"selected"):S(E,H?"active":"inactive")}).join(`
47
+ ${w.default.cyan(W)} `)}
48
48
  ${w.default.cyan($$)}
49
- `}}}).prompt()};var v1=($="")=>{process.stdout.write(`${w.default.gray(J)}
49
+ `}}}).prompt()};var v1=($="")=>{process.stdout.write(`${w.default.gray(W)}
50
50
  ${w.default.gray($$)} ${$}
51
51
 
52
- `)},Z={message:($="",{symbol:S=w.default.gray(J)}={})=>{let Y=[`${w.default.gray(J)}`];if($){let[E,...O]=$.split(`
53
- `);Y.push(`${S} ${E}`,...O.map((x)=>`${w.default.gray(J)} ${x}`))}process.stdout.write(`${Y.join(`
52
+ `)},Z={message:($="",{symbol:S=w.default.gray(W)}={})=>{let Y=[`${w.default.gray(W)}`];if($){let[E,...O]=$.split(`
53
+ `);Y.push(`${S} ${E}`,...O.map((x)=>`${w.default.gray(W)} ${x}`))}process.stdout.write(`${Y.join(`
54
54
  `)}
55
- `)},info:($)=>{Z.message($,{symbol:w.default.blue(IS)})},success:($)=>{Z.message($,{symbol:w.default.green(LS)})},step:($)=>{Z.message($,{symbol:w.default.green(Q1)})},warn:($)=>{Z.message($,{symbol:w.default.yellow(XS)})},warning:($)=>{Z.warn($)},error:($)=>{Z.message($,{symbol:w.default.red(NS)})}},g=()=>{let $=R1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=R1?80:120,Y,E,O=!1,x="",H=(Q="")=>{O=!0,Y=N0(),x=Q.replace(/\.+$/,""),process.stdout.write(`${w.default.gray(J)}
55
+ `)},info:($)=>{Z.message($,{symbol:w.default.blue(IS)})},success:($)=>{Z.message($,{symbol:w.default.green(XS)})},step:($)=>{Z.message($,{symbol:w.default.green(Q1)})},warn:($)=>{Z.message($,{symbol:w.default.yellow(LS)})},warning:($)=>{Z.warn($)},error:($)=>{Z.message($,{symbol:w.default.red(NS)})}},g=()=>{let $=R1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=R1?80:120,Y,E,O=!1,x="",H=(Q="")=>{O=!0,Y=N0(),x=Q.replace(/\.+$/,""),process.stdout.write(`${w.default.gray(W)}
56
56
  `);let v=0,z=0;E=setInterval(()=>{let V=w.default.magenta($[v]),_=".".repeat(Math.floor(z)).slice(0,3);process.stdout.write(M$.cursor.move(-999,0)),process.stdout.write(M$.erase.down(1)),process.stdout.write(`${V} ${x}${_}`),v=v+1<$.length?v+1:0,z=z<$.length?z+0.125:0},S)},q=(Q="",v=0)=>{x=Q??x,O=!1,clearInterval(E);let z=v===0?w.default.green(Q1):v===1?w.default.red(V0):w.default.red(A0);process.stdout.write(M$.cursor.move(-999,0)),process.stdout.write(M$.erase.down(1)),process.stdout.write(`${z} ${x}
57
57
  `),Y()},R=(Q="")=>{x=Q??x},G=(Q)=>{let v=Q>1?"Something went wrong":"Canceled";O&&q(v,Q)};return process.on("uncaughtExceptionMonitor",()=>G(2)),process.on("unhandledRejection",()=>G(2)),process.on("SIGINT",()=>G(1)),process.on("SIGTERM",()=>G(1)),process.on("exit",G),{start:H,stop:q,message:R}};h();var C0=BS(AS(),".claude","settings.json"),hS=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function KS($){if($.startsWith("ANTHROPIC_"))return!0;return hS.includes($)}async function CS(){let $=await import("fs/promises"),S;try{S=await $.readFile(C0,"utf-8")}catch{return}let Y;try{Y=JSON.parse(S)}catch{return}let E=[];if(Y.env&&typeof Y.env==="object"){for(let x of Object.keys(Y.env))if(KS(x))E.push(x),delete Y.env[x];if(Object.keys(Y.env).length===0)delete Y.env}if(E.length===0)return;Z.warn(M("claudeCode.settingsDetected",{fields:E.join(", ")}));let O=await n({message:M("claudeCode.confirmClean"),initialValue:!0});if(A(O)||!O){Z.info(M("claudeCode.cleanSkipped"));return}await $.writeFile(C0,JSON.stringify(Y,null,2)+`
58
- `),Z.success(M("claudeCode.settingsCleaned"))}var mS={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${p}/api`,ANTHROPIC_AUTH_TOKEN:$,CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"}},async setupConfigFiles(){await CS()},launchOptions:[{id:"skip-permissions",label:{en:"Skip Permissions",zh:"\u8DF3\u8FC7\u6743\u9650\u786E\u8BA4"},shortLabel:"Skip Perms",description:{en:"Auto-execute all operations without confirmation",zh:"\u5141\u8BB8\u81EA\u52A8\u6267\u884C\u6240\u6709\u64CD\u4F5C\uFF0C\u65E0\u9700\u786E\u8BA4"},flag:"--dangerously-skip-permissions",args:["--dangerously-skip-permissions"]},{id:"verbose",label:{en:"Verbose",zh:"\u8BE6\u7EC6\u65E5\u5FD7"},shortLabel:"Verbose",description:{en:"Show full invocation details",zh:"\u663E\u793A\u5B8C\u6574\u7684\u8C03\u7528\u8FC7\u7A0B"},flag:"--verbose",args:["--verbose"]},{id:"worktree",label:{en:"Git Worktree",zh:"Git Worktree"},shortLabel:"Worktree",description:{en:"Run in an isolated worktree",zh:"\u5728\u9694\u79BB\u7684 worktree \u4E2D\u8FD0\u884C"},flag:"--worktree",args:["--worktree"]}]};w$(mS);import{homedir as oS}from"os";import{join as L1}from"path";/*!
58
+ `),Z.success(M("claudeCode.settingsCleaned"))}var mS={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${p}/api`,ANTHROPIC_AUTH_TOKEN:$,CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"}},async setupConfigFiles(){await CS()},launchOptions:[{id:"skip-permissions",label:{en:"Skip Permissions",zh:"\u8DF3\u8FC7\u6743\u9650\u786E\u8BA4"},shortLabel:"Skip Perms",description:{en:"Auto-execute all operations without confirmation",zh:"\u5141\u8BB8\u81EA\u52A8\u6267\u884C\u6240\u6709\u64CD\u4F5C\uFF0C\u65E0\u9700\u786E\u8BA4"},flag:"--dangerously-skip-permissions",args:["--dangerously-skip-permissions"]},{id:"verbose",label:{en:"Verbose",zh:"\u8BE6\u7EC6\u65E5\u5FD7"},shortLabel:"Verbose",description:{en:"Show full invocation details",zh:"\u663E\u793A\u5B8C\u6574\u7684\u8C03\u7528\u8FC7\u7A0B"},flag:"--verbose",args:["--verbose"]},{id:"worktree",label:{en:"Git Worktree",zh:"Git Worktree"},shortLabel:"Worktree",description:{en:"Run in an isolated worktree",zh:"\u5728\u9694\u79BB\u7684 worktree \u4E2D\u8FD0\u884C"},flag:"--worktree",args:["--worktree"]}]};w$(mS);import{homedir as oS}from"os";import{join as X1}from"path";/*!
59
59
  * Copyright (c) Squirrel Chat et al., All rights reserved.
60
60
  * SPDX-License-Identifier: BSD-3-Clause
61
61
  *
@@ -284,14 +284,14 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
284
284
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
285
285
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
286
286
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
287
- */var F0=/^[a-z0-9-_]+$/i;function I$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function cS($){for(let S=0;S<$.length;S++)if(I$($[S])!=="object")return!1;return $.length!=0}function z1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function J1($,S,Y,E){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");if(S==="number"){if(isNaN($))return"nan";if($===1/0)return"inf";if($===-1/0)return"-inf";if(E&&Number.isInteger($))return $.toFixed(1);return $.toString()}if(S==="bigint"||S==="boolean")return $.toString();if(S==="string")return z1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return DS($,Y,E);if(S==="array")return pS($,Y,E)}function DS($,S,Y){let E=Object.keys($);if(E.length===0)return"{}";let O="{ ";for(let x=0;x<E.length;x++){let H=E[x];if(x)O+=", ";O+=F0.test(H)?H:z1(H),O+=" = ",O+=J1($[H],I$($[H]),S-1,Y)}return O+" }"}function pS($,S,Y){if($.length===0)return"[]";let E="[ ";for(let O=0;O<$.length;O++){if(O)E+=", ";if($[O]===null||$[O]===void 0)throw TypeError("arrays cannot contain null or undefined values");E+=J1($[O],I$($[O]),S-1,Y)}return E+" ]"}function lS($,S,Y,E){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");let O="";for(let x=0;x<$.length;x++)O+=`${O&&`
287
+ */var F0=/^[a-z0-9-_]+$/i;function I$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function cS($){for(let S=0;S<$.length;S++)if(I$($[S])!=="object")return!1;return $.length!=0}function z1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function W1($,S,Y,E){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");if(S==="number"){if(isNaN($))return"nan";if($===1/0)return"inf";if($===-1/0)return"-inf";if(E&&Number.isInteger($))return $.toFixed(1);return $.toString()}if(S==="bigint"||S==="boolean")return $.toString();if(S==="string")return z1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return DS($,Y,E);if(S==="array")return pS($,Y,E)}function DS($,S,Y){let E=Object.keys($);if(E.length===0)return"{}";let O="{ ";for(let x=0;x<E.length;x++){let H=E[x];if(x)O+=", ";O+=F0.test(H)?H:z1(H),O+=" = ",O+=W1($[H],I$($[H]),S-1,Y)}return O+" }"}function pS($,S,Y){if($.length===0)return"[]";let E="[ ";for(let O=0;O<$.length;O++){if(O)E+=", ";if($[O]===null||$[O]===void 0)throw TypeError("arrays cannot contain null or undefined values");E+=W1($[O],I$($[O]),S-1,Y)}return E+" ]"}function lS($,S,Y,E){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");let O="";for(let x=0;x<$.length;x++)O+=`${O&&`
288
288
  `}[[${S}]]
289
- `,O+=W1(0,$[x],S,Y,E);return O}function W1($,S,Y,E,O){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let x="",H="",q=Object.keys(S);for(let R=0;R<q.length;R++){let G=q[R];if(S[G]!==null&&S[G]!==void 0){let Q=I$(S[G]);if(Q==="symbol"||Q==="function")throw TypeError(`cannot serialize values of type '${Q}'`);let v=F0.test(G)?G:z1(G);if(Q==="array"&&cS(S[G]))H+=(H&&`
289
+ `,O+=J1(0,$[x],S,Y,E);return O}function J1($,S,Y,E,O){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let x="",H="",q=Object.keys(S);for(let R=0;R<q.length;R++){let G=q[R];if(S[G]!==null&&S[G]!==void 0){let Q=I$(S[G]);if(Q==="symbol"||Q==="function")throw TypeError(`cannot serialize values of type '${Q}'`);let v=F0.test(G)?G:z1(G);if(Q==="array"&&cS(S[G]))H+=(H&&`
290
290
  `)+lS(S[G],Y?`${Y}.${v}`:v,E-1,O);else if(Q==="object"){let z=Y?`${Y}.${v}`:v;H+=(H&&`
291
- `)+W1(z,S[G],z,E-1,O)}else x+=v,x+=" = ",x+=J1(S[G],Q,E,O),x+=`
291
+ `)+J1(z,S[G],z,E-1,O)}else x+=v,x+=" = ",x+=W1(S[G],Q,E,O),x+=`
292
292
  `}}if($&&(x||!H))x=x?`[${$}]
293
293
  ${x}`:`[${$}]`;return x&&H?`${x}
294
- ${H}`:x||H}function T1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(I$($)!=="object")throw TypeError("stringify can only be called with an object");let E=W1(0,$,"",S,Y);if(E[E.length-1]!==`
294
+ ${H}`:x||H}function T1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(I$($)!=="object")throw TypeError("stringify can only be called with an object");let E=J1(0,$,"",S,Y);if(E[E.length-1]!==`
295
295
  `)return E+`
296
296
  `;return E}/*!
297
297
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -319,17 +319,17 @@ ${H}`:x||H}function T1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(I$($)!=="o
319
319
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
320
320
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
321
321
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
322
- */var X1=L1(oS(),".codex"),k0=L1(X1,"config.toml"),aS=L1(X1,"auth.json"),iS={model_provider:"tako",model:"gpt-5.4",check_for_update_on_startup:!1,model_providers:{tako:{name:"tako",base_url:`${p}/v1`}}},rS={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function I1($,S){let Y={...$};for(let[E,O]of Object.entries(S))if(O&&typeof O==="object"&&!Array.isArray(O)&&Y[E]&&typeof Y[E]==="object"&&!Array.isArray(Y[E]))Y[E]=I1(Y[E],O);else Y[E]=O;return Y}function nS($){if($.model_providers?.crs)delete $.model_providers.crs;if($.model_provider==="crs")delete $.model_provider;if($.openai_base_url)delete $.openai_base_url;let S=$.model_providers?.tako;if(S)delete S.wire_api,delete S.requires_openai_auth,delete S.supports_websockets,delete S.request_max_retries,delete S.stream_max_retries,delete S.api_key,delete S.env_key,delete S.experimental_bearer_token;return $}async function sS($,S){let Y=await import("fs/promises");try{await Y.mkdir(X1,{recursive:!0})}catch{}let E={};try{E=b1(await Y.readFile(k0,"utf-8"))}catch{}E=nS(E);let O=I1(E,iS);if(S)for(let H of S){let q=rS[H];if(q)O=I1(O,q)}await Bun.write(k0,T1(O));let x=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
322
+ */var L1=X1(oS(),".codex"),k0=X1(L1,"config.toml"),aS=X1(L1,"auth.json"),iS={model_provider:"tako",model:"gpt-5.4",check_for_update_on_startup:!1,model_providers:{tako:{name:"tako",base_url:`${p}/v1`}}},rS={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function I1($,S){let Y={...$};for(let[E,O]of Object.entries(S))if(O&&typeof O==="object"&&!Array.isArray(O)&&Y[E]&&typeof Y[E]==="object"&&!Array.isArray(Y[E]))Y[E]=I1(Y[E],O);else Y[E]=O;return Y}function nS($){if($.model_providers?.crs)delete $.model_providers.crs;if($.model_provider==="crs")delete $.model_provider;if($.openai_base_url)delete $.openai_base_url;let S=$.model_providers?.tako;if(S)delete S.wire_api,delete S.requires_openai_auth,delete S.supports_websockets,delete S.request_max_retries,delete S.stream_max_retries,delete S.api_key,delete S.env_key,delete S.experimental_bearer_token;return $}async function sS($,S){let Y=await import("fs/promises");try{await Y.mkdir(L1,{recursive:!0})}catch{}let E={};try{E=b1(await Y.readFile(k0,"utf-8"))}catch{}E=nS(E);let O=I1(E,iS);if(S)for(let H of S){let q=rS[H];if(q)O=I1(O,q)}await Bun.write(k0,T1(O));let x=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
323
323
  `;await Bun.write(aS,x)}var eS={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars($){return{}},setupConfigFiles:sS,launchOptions:[{id:"full-auto",label:{en:"Full-Auto",zh:"\u5168\u81EA\u52A8\u6A21\u5F0F"},shortLabel:"Full-Auto",description:{en:"Low-friction automation, auto-write in sandbox",zh:"\u4F4E\u6469\u64E6\u81EA\u52A8\u5316\uFF0C\u6C99\u7BB1\u5185\u81EA\u52A8\u5199\u5165"},flag:"--full-auto",args:[]},{id:"search",label:{en:"Web Search",zh:"\u7F51\u7EDC\u641C\u7D22"},shortLabel:"Search",description:{en:"Enable real-time web search",zh:"\u542F\u7528\u5B9E\u65F6\u7F51\u9875\u641C\u7D22"},flag:"--search",args:["--search"]}]};w$(eS);import{homedir as tS}from"os";import{join as g0}from"path";var d0=g0(tS(),".gemini"),u0=g0(d0,"settings.json");async function $H(){let $=await import("fs/promises");try{await $.mkdir(d0,{recursive:!0})}catch{}let S={};try{S=JSON.parse(await $.readFile(u0,"utf-8"))}catch{}let Y=S.security?.auth||{};if(Y.selectedType==="gemini-api-key")return;S.selectedAuthType="gemini-api-key",S.security={...S.security,auth:{...Y,selectedType:"gemini-api-key"}},await Bun.write(u0,JSON.stringify(S,null,2)+`
324
- `)}var SH={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"native",brandColor:"cyan",getEnvVars($){return{GEMINI_API_KEY:$,GOOGLE_GEMINI_BASE_URL:"https://tako.shiroha.tech"}},setupConfigFiles:$H};w$(SH);import{join as d}from"path";h();var g$=null,d$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function Z$(){if(g$)return g$;let $=[HH,YH,EH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return g$=Y,Y}catch{}return g$="cn","cn"}async function HH(){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 YH(){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 EH(){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 OH(){let $=await Z$();return d$[$]}async function t(){return(await OH()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function xH(){let $=d$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let E=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,x)=>{let H=O.replace("bun-v","").split(".").map(Number),q=x.replace("bun-v","").split(".").map(Number);for(let R=0;R<3;R++)if(H[R]!==q[R])return q[R]-H[R];return 0});if(E.length===0)throw Error("No bun versions found on mirror");return E[0]}async function D0(){let $=d$.cn.bunBinary,S=await xH(),E={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",x=`bun-${E}-${O}`;return`${$}/${S}/${x}.zip`}async function p0(){let $=await Z$(),S=d$[$];if($==="cn")Z.info(M("region.usingChinaMirror")),Z.message(` npm: ${S.npm}`);else Z.info(M("region.usingGlobalMirror"))}var qH=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[S,Y]of Object.entries(this.headers)){let E=await Y;E!==null&&($[S]=E)}return $}addHeader($,S){this.headers[$]=S}async post($,S,Y,E){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...Y});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let x=await O.text();return x?JSON.parse(x):null}catch(O){if(E<this.maxRetries){let x=this.initialRetryDelay*2**E;return await new Promise((H)=>setTimeout(H,x)),this.post($,S,Y,E+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,Y={}){let E=`${this.baseUrl}${$}`;return this.post(E,S,Y,0)}},l0=class{constructor($){this.options=$,this.queue=[];let S={"openpanel-client-id":$.clientId};$.clientSecret&&(S["openpanel-client-secret"]=$.clientSecret),S["openpanel-sdk-name"]=$.sdk||"node",S["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new qH({baseUrl:$.apiUrl||"https://api.openpanel.dev",defaultHeaders:S})}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($,S){return this.log("track event",$,S),this.send({type:"track",payload:{name:$,profileId:S?.profileId??this.profileId,properties:{...this.global??{},...S??{}}}})}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($,S){let Y=S?.deviceId;return delete S?.deviceId,this.track("revenue",{...S??{},...Y?{__deviceId:Y}:{},__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 GH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",RH="sec_3038f0cb74f91312f374",wH="https://op.shiroha.tech/api",b$=null;function N1(){if(!b$)b$=new l0({clientId:GH,clientSecret:RH,apiUrl:wH});return b$}async function o0(){if(b$){try{b$.flush()}catch{}b$=null}}h();h();var MH="0.2.24";function a0(){return{cli_version:MH,platform:process.platform,arch:process.arch,locale:H$(),node_version:process.version}}function i0($){return Bun.hash($).toString(16).slice(0,8)}var QH="0.2.24",r0=!1,L$=null,U1=[];async function n0(){if(L$!==null)return L$;try{return L$=(await L()).telemetryEnabled!==!1,L$}catch{return L$=!1,!1}}async function vH(){try{return(await L()).apiId||"anonymous"}catch{return"anonymous"}}async function c$(){if(r0)return;try{if(!await n0())return;let $=await L();if(!$.apiId)return;let S=N1(),Y=await Z$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:H$(),first_seen_version:QH,platform:process.platform,arch:process.arch}}),r0=!0}catch{}}function X($,S){let Y=ZH($,S).catch(()=>{});U1.push(Y)}async function ZH($,S){try{if(!await n0())return;let Y=N1(),E=await vH();await Y.track($,{profileId:E,...a0(),...S})}catch{}}async function X$(){await Promise.allSettled(U1),U1.length=0,await o0()}var Y$=null;function bH($){return $.startsWith(i)}async function zH(){try{if(!await Bun.file(C).exists())return null;let S=Bun.spawn([C,"--version"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode!==0)return null;return(await new Response(S.stdout).text()).trim()}catch{return null}}async function t0(){return await zH()!==null}async function JH(){if(process.platform==="win32")return!0;try{let S=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode===0)return!0}catch{}Z.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 S of $)try{let Y=Bun.spawn(["bash","-c",`sudo ${S} 2>/dev/null || ${S}`],{stdout:"pipe",stderr:"pipe"});if(await Y.exited,Y.exitCode===0)return!0}catch{}return!1}async function WH($){let S=await import("fs/promises"),{join:Y}=await import("path"),E=process.platform==="win32",O=E?"bun.exe":"bun",x=await D0();Z.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${x}`);let H=await fetch(x);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let q=Y($,"bun-download.zip");await Bun.write(q,H);let R=Y($,"bin");if(await S.mkdir(R,{recursive:!0}),E){let Q=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,v=Bun.spawn(["powershell","-Command",Q],{stdout:"pipe",stderr:"pipe"});if(await v.exited,v.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let Q=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await Q.exited,Q.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let Q of G){let v=Y($,Q);if((await S.stat(v)).isDirectory()&&Q.startsWith("bun-")){let V=Y(v,O);try{if(await S.access(V),await S.rename(V,Y(R,O)),!E)await S.chmod(Y(R,O),493);await S.rm(v,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function TH(){let $=g();if(!await JH())return Z.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await p0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(i,{recursive:!0}),await Z$()==="cn")await WH(i);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${i}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let E=`BUN_INSTALL="${i}" ${c0()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return Y$=C,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),Z.info(`\u5B89\u88C5\u4F4D\u7F6E: ${i}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function IH(){if(await t0())return Y$=C,!0;return Z.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),Z.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await TH()}async function D$(){if(Y$){if(!bH(Y$))Y$=C;return Y$}if(await t0())return Y$=C,C;return C}async function A1($){try{let S=await t(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function LH($){return(await L()).installedClients[$.id]?.version||null}async function $2($){let S=R$($.id),Y=d(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function S2($){let S=await LH($);if(!S)return!0;let Y=await A1($.package);if(!Y)return!1;return S!==Y}function XH($){let{platform:S,arch:Y}=process,E=`${S}-${Y}`;for(let[O,x]of Object.entries($))if(O.endsWith(E))return{pkg:O,version:x};return null}async function H2($,S,Y,E){let O=d(S,"node_modules",$.package,"package.json");try{let x=Bun.file(O);if(!await x.exists())return;let q=(await x.json()).optionalDependencies;if(!q||typeof q!=="object")return;let R=XH(q);if(!R)return;let G=d(S,"node_modules",R.pkg);if(await Bun.file(d(G,"package.json")).exists())return;await Bun.spawn([Y,"add",`${R.pkg}@${R.version}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}}).exited}catch{}}async function Y2($,S){let Y=d(S,"node_modules",$.package,"install.cjs");if(!await Bun.file(Y).exists())return;let O=Bun.spawn(["node",Y],{cwd:d(S,"node_modules",$.package),stdout:"pipe",stderr:"pipe"});if(await O.exited,O.exitCode!==0){let x=await new Response(O.stderr).text();Z.warn(`postinstall \u6267\u884C\u5F02\u5E38: ${x.slice(0,200)}`)}}async function s0($,S=!1){let Y=g(),E=R$($.id);try{if(!await IH())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 O=await $2($),x=S||await S2($);if(O&&!x)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";Y.start(`\u6B63\u5728${H} ${$.name}...`);let q=await import("fs/promises");await q.mkdir(E,{recursive:!0});let R=d(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let Q=await D$(),v=await t();if(O){let q$=d(E,"bun.lock");try{await q.unlink(q$)}catch{}}let z=Bun.spawn([Q,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:v}});if(await z.exited!==0){let q$=await new Response(z.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:q$}}await H2($,E,Q,v),await Y2($,E);let _=await A1($.package),g1=(await L()).installedClients[$.id]?.version;if(_){let q$=await L();if(q$.installedClients[$.id]={version:_,installedAt:new Date().toISOString()},await l(q$),O&&g1)X("client_updated",{client_id:$.id,from_version:g1,to_version:_});else X("client_installed",{client_id:$.id,client_version:_})}return Y.stop(`${$.name} ${H}\u5B8C\u6210`),{success:!0}}catch(O){return Y.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}}}async function e0($){try{let S=Bun.file($);if(!await S.exists())return!0;if(S.size<100)return!0;let E=new Uint8Array(await S.slice(0,4).arrayBuffer());if(E[0]===127&&E[1]===69&&E[2]===76&&E[3]===70)return!1;if(E[0]===254||E[0]===207||E[0]===206||E[0]===202)return!1;if(E[0]===77&&E[1]===90)return!1;return!0}catch{return!0}}async function V1($){if($.runtime!=="native")return;let S=R$($.id),Y=d(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return;let x=(await E.json()).bin;if(!x)return;let H=typeof x==="string"?x:x[$.command];if(!H)return;let q=d(S,"node_modules",$.package,H);if(!await e0(q))return;Z.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await D$(),G=await t();if(await H2($,S,R,G),await Y2($,S),await e0(q))Z.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5931\u8D25\uFF0C\u53EF\u80FD\u5F71\u54CD\u542F\u52A8");else Z.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function E2($){if(!await $2($)){let E=await s0($);if(E.success)await V1($);return E}if(await V1($),await S2($)){let E=await A1($.package),O=(await L()).installedClients[$.id]?.version||"\u672A\u77E5",x=E?`${O} \u2192 ${E}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";Z.info(`${$.name} \u53D1\u73B0\u66F4\u65B0: ${x}`);let H=await n({message:`\u662F\u5426\u66F4\u65B0 ${$.name}\uFF1F`,initialValue:!1});if(A(H)||!H)return Z.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let q=await s0($,!0);if(q.success)await V1($);return q}return{success:!0}}import{homedir as NH}from"os";var UH=50,B1=3;async function h1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function O2($,S){let Y=await L(),E=Y.recentProjects||[],O=new Date().toISOString(),x=E.findIndex((q)=>q.path===$);if(x>=0){let q=E[x],R=q.clientUsage||{},G=R[S]||{count:0,lastAt:O};E[x]={...q,launchCount:q.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...R,[S]:{count:G.count+1,lastAt:O}}}}else E.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=E.sort((q,R)=>new Date(R.lastLaunchedAt).getTime()-new Date(q.lastLaunchedAt).getTime()).slice(0,UH);Y.recentProjects=H,await n$(Y)}function VH($,S){let Y=$.clientUsage?.[S];if(Y)return new Date(Y.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function x2($,S=B1,Y=!0){let O=(await L()).recentProjects||[],x=process.cwd(),q=O.filter((G)=>{if(Y&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:VH(G,$)})).sort((G,Q)=>Q.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...Q}of q){if(R.length>=S)break;if(await h1(Q.path))R.push(Q)}return R}async function q2(){let S=(await L()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function G2($,S=25){let Y=NH(),E=$.startsWith(Y)?"~"+$.slice(Y.length):$;if(E.length>S){let x=E.split("/").pop()||"";if(x.length>S-4)E="..."+x.slice(-S+3);else E=`.../${x}`}return E}function R2($){let{t:S}=(h(),C2(K0)),Y=Date.now(),E=new Date($).getTime(),O=Y-E,x=Math.floor(O/60000),H=Math.floor(O/3600000),q=Math.floor(O/86400000),R=Math.floor(q/7),G=Math.floor(q/30);if(x<1)return S("time.justNow");if(x<60)return S("time.minutesAgo",{n:x});if(H<24)return S("time.hoursAgo",{n:H});if(q===1)return S("time.yesterday");if(q<7)return S("time.daysAgo",{n:q});if(q<30)return S("time.weeksAgo",{n:R});return S("time.monthsAgo",{n:G})}h();async function w2($,S){try{let Y=S?.projectPath||process.cwd(),E=await A$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await s1($);if(!O)O=e1($);if(!await Bun.file(O).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${O}`};let H=$.getEnvVars(E),q={...process.env,...H};Z.info(`\u542F\u52A8 ${$.name}...`);let R;if($.runtime==="native")R=[O];else R=[await D$(),O];if(S?.args&&S.args.length>0)R=[...R,...S.args];return await Bun.spawn(R,{env:q,stdio:["inherit","inherit","inherit"],cwd:Y}).exited,{success:!0}}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"\u542F\u52A8\u5931\u8D25"}}}async function E$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await h1(S.projectPath))return{success:!1,error:M("launcher.directoryNotFound",{path:S.projectPath})}}let E=await E2($);if(!E.success)return E;let O=await A$();if(!O)return{success:!1,error:M("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await O2(Y,$.id);let H=(await L()).installedClients[$.id]?.version;return X("client_launched",{client_id:$.id,client_version:H,project_hash:i0(Y),is_recent_project:!!S?.projectPath}),Z.info(M("launcher.starting",{client:$.name})),await w2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}h();import{join as c}from"path";var K1="tako-cli",f="0.2.24";function AH($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number);for(let O=0;O<3;O++){let x=Y[O]||0,H=E[O]||0;if(x>H)return 1;if(x<H)return-1}return 0}async function BH(){try{let $=await t(),S=await fetch(`${$}/${K1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function hH(){let $=await BH();if(!$)return{hasUpdate:!1,currentVersion:f};return{hasUpdate:AH($,f)>0,latestVersion:$,currentVersion:f}}async function M2(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
324
+ `)}var SH={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars($){return{GEMINI_API_KEY:$,GOOGLE_GEMINI_BASE_URL:"https://tako.shiroha.tech"}},setupConfigFiles:$H};w$(SH);import{join as d}from"path";h();var g$=null,d$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function Z$(){if(g$)return g$;let $=[HH,YH,EH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return g$=Y,Y}catch{}return g$="cn","cn"}async function HH(){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 YH(){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 EH(){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 OH(){let $=await Z$();return d$[$]}async function t(){return(await OH()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function xH(){let $=d$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let E=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,x)=>{let H=O.replace("bun-v","").split(".").map(Number),q=x.replace("bun-v","").split(".").map(Number);for(let R=0;R<3;R++)if(H[R]!==q[R])return q[R]-H[R];return 0});if(E.length===0)throw Error("No bun versions found on mirror");return E[0]}async function D0(){let $=d$.cn.bunBinary,S=await xH(),E={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",x=`bun-${E}-${O}`;return`${$}/${S}/${x}.zip`}async function p0(){let $=await Z$(),S=d$[$];if($==="cn")Z.info(M("region.usingChinaMirror")),Z.message(` npm: ${S.npm}`);else Z.info(M("region.usingGlobalMirror"))}var qH=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[S,Y]of Object.entries(this.headers)){let E=await Y;E!==null&&($[S]=E)}return $}addHeader($,S){this.headers[$]=S}async post($,S,Y,E){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...Y});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let x=await O.text();return x?JSON.parse(x):null}catch(O){if(E<this.maxRetries){let x=this.initialRetryDelay*2**E;return await new Promise((H)=>setTimeout(H,x)),this.post($,S,Y,E+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,Y={}){let E=`${this.baseUrl}${$}`;return this.post(E,S,Y,0)}},l0=class{constructor($){this.options=$,this.queue=[];let S={"openpanel-client-id":$.clientId};$.clientSecret&&(S["openpanel-client-secret"]=$.clientSecret),S["openpanel-sdk-name"]=$.sdk||"node",S["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new qH({baseUrl:$.apiUrl||"https://api.openpanel.dev",defaultHeaders:S})}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($,S){return this.log("track event",$,S),this.send({type:"track",payload:{name:$,profileId:S?.profileId??this.profileId,properties:{...this.global??{},...S??{}}}})}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($,S){let Y=S?.deviceId;return delete S?.deviceId,this.track("revenue",{...S??{},...Y?{__deviceId:Y}:{},__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 GH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",RH="sec_3038f0cb74f91312f374",wH="https://op.shiroha.tech/api",b$=null;function N1(){if(!b$)b$=new l0({clientId:GH,clientSecret:RH,apiUrl:wH});return b$}async function o0(){if(b$){try{b$.flush()}catch{}b$=null}}h();h();var MH="0.2.26";function a0(){return{cli_version:MH,platform:process.platform,arch:process.arch,locale:H$(),node_version:process.version}}function i0($){return Bun.hash($).toString(16).slice(0,8)}var QH="0.2.26",r0=!1,X$=null,U1=[];async function n0(){if(X$!==null)return X$;try{return X$=(await X()).telemetryEnabled!==!1,X$}catch{return X$=!1,!1}}async function vH(){try{return(await X()).apiId||"anonymous"}catch{return"anonymous"}}async function c$(){if(r0)return;try{if(!await n0())return;let $=await X();if(!$.apiId)return;let S=N1(),Y=await Z$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:H$(),first_seen_version:QH,platform:process.platform,arch:process.arch}}),r0=!0}catch{}}function L($,S){let Y=ZH($,S).catch(()=>{});U1.push(Y)}async function ZH($,S){try{if(!await n0())return;let Y=N1(),E=await vH();await Y.track($,{profileId:E,...a0(),...S})}catch{}}async function L$(){await Promise.allSettled(U1),U1.length=0,await o0()}var Y$=null;function bH($){return $.startsWith(i)}async function zH(){try{if(!await Bun.file(C).exists())return null;let S=Bun.spawn([C,"--version"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode!==0)return null;return(await new Response(S.stdout).text()).trim()}catch{return null}}async function t0(){return await zH()!==null}async function WH(){if(process.platform==="win32")return!0;try{let S=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode===0)return!0}catch{}Z.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 S of $)try{let Y=Bun.spawn(["bash","-c",`sudo ${S} 2>/dev/null || ${S}`],{stdout:"pipe",stderr:"pipe"});if(await Y.exited,Y.exitCode===0)return!0}catch{}return!1}async function JH($){let S=await import("fs/promises"),{join:Y}=await import("path"),E=process.platform==="win32",O=E?"bun.exe":"bun",x=await D0();Z.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${x}`);let H=await fetch(x);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let q=Y($,"bun-download.zip");await Bun.write(q,H);let R=Y($,"bin");if(await S.mkdir(R,{recursive:!0}),E){let Q=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,v=Bun.spawn(["powershell","-Command",Q],{stdout:"pipe",stderr:"pipe"});if(await v.exited,v.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let Q=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await Q.exited,Q.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let Q of G){let v=Y($,Q);if((await S.stat(v)).isDirectory()&&Q.startsWith("bun-")){let V=Y(v,O);try{if(await S.access(V),await S.rename(V,Y(R,O)),!E)await S.chmod(Y(R,O),493);await S.rm(v,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function TH(){let $=g();if(!await WH())return Z.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await p0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(i,{recursive:!0}),await Z$()==="cn")await JH(i);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${i}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let E=`BUN_INSTALL="${i}" ${c0()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return Y$=C,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),Z.info(`\u5B89\u88C5\u4F4D\u7F6E: ${i}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function IH(){if(await t0())return Y$=C,!0;return Z.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),Z.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await TH()}async function D$(){if(Y$){if(!bH(Y$))Y$=C;return Y$}if(await t0())return Y$=C,C;return C}async function A1($){try{let S=await t(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function XH($){return(await X()).installedClients[$.id]?.version||null}async function $2($){let S=R$($.id),Y=d(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function S2($){let S=await XH($);if(!S)return!0;let Y=await A1($.package);if(!Y)return!1;return S!==Y}function LH($){let{platform:S,arch:Y}=process,E=`${S}-${Y}`;for(let[O,x]of Object.entries($))if(O.endsWith(E))return{pkg:O,version:x};return null}async function H2($,S,Y,E){let O=d(S,"node_modules",$.package,"package.json");try{let x=Bun.file(O);if(!await x.exists())return;let q=(await x.json()).optionalDependencies;if(!q||typeof q!=="object")return;let R=LH(q);if(!R)return;let G=d(S,"node_modules",R.pkg);if(await Bun.file(d(G,"package.json")).exists())return;await Bun.spawn([Y,"add",`${R.pkg}@${R.version}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}}).exited}catch{}}async function Y2($,S){let Y=d(S,"node_modules",$.package,"install.cjs");if(!await Bun.file(Y).exists())return;let O=Bun.spawn(["node",Y],{cwd:d(S,"node_modules",$.package),stdout:"pipe",stderr:"pipe"});if(await O.exited,O.exitCode!==0){let x=await new Response(O.stderr).text();Z.warn(`postinstall \u6267\u884C\u5F02\u5E38: ${x.slice(0,200)}`)}}async function s0($,S=!1){let Y=g(),E=R$($.id);try{if(!await IH())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 O=await $2($),x=S||await S2($);if(O&&!x)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";Y.start(`\u6B63\u5728${H} ${$.name}...`);let q=await import("fs/promises");await q.mkdir(E,{recursive:!0});let R=d(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let Q=await D$(),v=await t();if(O){let q$=d(E,"bun.lock");try{await q.unlink(q$)}catch{}}let z=Bun.spawn([Q,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:v}});if(await z.exited!==0){let q$=await new Response(z.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:q$}}await H2($,E,Q,v),await Y2($,E);let _=await A1($.package),g1=(await X()).installedClients[$.id]?.version;if(_){let q$=await X();if(q$.installedClients[$.id]={version:_,installedAt:new Date().toISOString()},await l(q$),O&&g1)L("client_updated",{client_id:$.id,from_version:g1,to_version:_});else L("client_installed",{client_id:$.id,client_version:_})}return Y.stop(`${$.name} ${H}\u5B8C\u6210`),{success:!0}}catch(O){return Y.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}}}async function e0($){try{let S=Bun.file($);if(!await S.exists())return!0;if(S.size<100)return!0;let E=new Uint8Array(await S.slice(0,4).arrayBuffer());if(E[0]===127&&E[1]===69&&E[2]===76&&E[3]===70)return!1;if(E[0]===254||E[0]===207||E[0]===206||E[0]===202)return!1;if(E[0]===77&&E[1]===90)return!1;return!0}catch{return!0}}async function V1($){if($.runtime!=="native")return;let S=R$($.id),Y=d(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return;let x=(await E.json()).bin;if(!x)return;let H=typeof x==="string"?x:x[$.command];if(!H)return;let q=d(S,"node_modules",$.package,H);if(!await e0(q))return;Z.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await D$(),G=await t();if(await H2($,S,R,G),await Y2($,S),await e0(q))Z.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5931\u8D25\uFF0C\u53EF\u80FD\u5F71\u54CD\u542F\u52A8");else Z.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function E2($){if(!await $2($)){let E=await s0($);if(E.success)await V1($);return E}if(await V1($),await S2($)){let E=await A1($.package),O=(await X()).installedClients[$.id]?.version||"\u672A\u77E5",x=E?`${O} \u2192 ${E}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";Z.info(`${$.name} \u53D1\u73B0\u66F4\u65B0: ${x}`);let H=await n({message:`\u662F\u5426\u66F4\u65B0 ${$.name}\uFF1F`,initialValue:!1});if(A(H)||!H)return Z.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let q=await s0($,!0);if(q.success)await V1($);return q}return{success:!0}}import{homedir as NH}from"os";var UH=50,B1=3;async function h1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function O2($,S){let Y=await X(),E=Y.recentProjects||[],O=new Date().toISOString(),x=E.findIndex((q)=>q.path===$);if(x>=0){let q=E[x],R=q.clientUsage||{},G=R[S]||{count:0,lastAt:O};E[x]={...q,launchCount:q.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...R,[S]:{count:G.count+1,lastAt:O}}}}else E.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=E.sort((q,R)=>new Date(R.lastLaunchedAt).getTime()-new Date(q.lastLaunchedAt).getTime()).slice(0,UH);Y.recentProjects=H,await n$(Y)}function VH($,S){let Y=$.clientUsage?.[S];if(Y)return new Date(Y.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function x2($,S=B1,Y=!0){let O=(await X()).recentProjects||[],x=process.cwd(),q=O.filter((G)=>{if(Y&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:VH(G,$)})).sort((G,Q)=>Q.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...Q}of q){if(R.length>=S)break;if(await h1(Q.path))R.push(Q)}return R}async function q2(){let S=(await X()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function G2($,S=25){let Y=NH(),E=$.startsWith(Y)?"~"+$.slice(Y.length):$;if(E.length>S){let x=E.split("/").pop()||"";if(x.length>S-4)E="..."+x.slice(-S+3);else E=`.../${x}`}return E}function R2($){let{t:S}=(h(),C2(K0)),Y=Date.now(),E=new Date($).getTime(),O=Y-E,x=Math.floor(O/60000),H=Math.floor(O/3600000),q=Math.floor(O/86400000),R=Math.floor(q/7),G=Math.floor(q/30);if(x<1)return S("time.justNow");if(x<60)return S("time.minutesAgo",{n:x});if(H<24)return S("time.hoursAgo",{n:H});if(q===1)return S("time.yesterday");if(q<7)return S("time.daysAgo",{n:q});if(q<30)return S("time.weeksAgo",{n:R});return S("time.monthsAgo",{n:G})}h();async function w2($,S){try{let Y=S?.projectPath||process.cwd(),E=await A$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await s1($);if(!O)O=e1($);if(!await Bun.file(O).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${O}`};let H=$.getEnvVars(E),q={...process.env,...H};Z.info(`\u542F\u52A8 ${$.name}...`);let R;if($.runtime==="native")R=[O];else R=[await D$(),O];if(S?.args&&S.args.length>0)R=[...R,...S.args];return await Bun.spawn(R,{env:q,stdio:["inherit","inherit","inherit"],cwd:Y}).exited,{success:!0}}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"\u542F\u52A8\u5931\u8D25"}}}async function E$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await h1(S.projectPath))return{success:!1,error:M("launcher.directoryNotFound",{path:S.projectPath})}}let E=await E2($);if(!E.success)return E;let O=await A$();if(!O)return{success:!1,error:M("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await O2(Y,$.id);let H=(await X()).installedClients[$.id]?.version;return L("client_launched",{client_id:$.id,client_version:H,project_hash:i0(Y),is_recent_project:!!S?.projectPath}),Z.info(M("launcher.starting",{client:$.name})),await w2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}h();import{join as c}from"path";var K1="tako-cli",f="0.2.26";function AH($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number);for(let O=0;O<3;O++){let x=Y[O]||0,H=E[O]||0;if(x>H)return 1;if(x<H)return-1}return 0}async function BH(){try{let $=await t(),S=await fetch(`${$}/${K1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function hH(){let $=await BH();if(!$)return{hasUpdate:!1,currentVersion:f};return{hasUpdate:AH($,f)>0,latestVersion:$,currentVersion:f}}async function M2(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
325
325
  "${C}" "${E}" %*\r
326
326
  `;await $.writeFile(c(S,"tako.cmd"),x)}else{let x=`#!/bin/bash
327
327
  exec "${C}" "${E}" "$@"
328
- `;await $.writeFile(Y,x,{mode:493})}}async function KH($){let S=g();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let Y=await t(),E=await import("fs/promises");await E.mkdir(u,{recursive:!0});let O=c(u,"package.json");try{await E.access(O)}catch{await E.writeFile(O,JSON.stringify({name:"tako-local",private:!0},null,2))}let x=Bun.spawn([C,"update",K1,"--latest"],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await M2(),X("cli_updated",{from_version:f,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(x.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(Y){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${Y instanceof Error?Y.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function CH(){let $=await import("fs/promises"),S=c(u,"bun.lock");try{await $.unlink(S)}catch{}}async function mH(){let $=await import("fs/promises");try{let S=await t();await $.mkdir(u,{recursive:!0});let Y=c(u,"package.json");try{await $.access(Y)}catch{await $.writeFile(Y,JSON.stringify({name:"tako-local",private:!0},null,2))}await CH();let E=Bun.spawn([C,"add",`${K1}@latest`],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await E.exited,E.exitCode===0}catch{return!1}}async function jH(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");try{let O=await $.readFile(Y,"utf-8");if(O.includes("bun run tako-cli")||O.includes("run tako-cli")){Z.info(M("updater.migrating"));let x=!1;try{await $.access(E),x=!0}catch{x=!1}if(!x){let H=g();if(H.start(M("updater.installingLocally")),!await mH())return H.stop(M("updater.migrationFailed")),!1;H.stop(M("updater.installComplete"))}return await M2(),!0}}catch{}return!1}async function N$(){try{if(await jH())Z.info(M("updater.migrationComplete")),process.exit(0);let S=await hH();if(S.hasUpdate&&S.latestVersion){if(Z.warn(M("updater.newVersionAvailable",{version:S.latestVersion,current:f})),await KH(S.latestVersion))Z.info(M("updater.pleaseRestart")),process.exit(0)}}catch{}}h();function yH($){let S=$.codePointAt(0);if(!S)return!1;return S>=19968&&S<=40959||S>=13312&&S<=19903||S>=131072&&S<=191471||S>=63744&&S<=64255||S>=194560&&S<=195103||S>=44032&&S<=55215||S>=12352&&S<=12447||S>=12448&&S<=12543||S>=65280&&S<=65519||S>=126976&&S<=131071||S>=9728&&S<=10175||S===11088}function fH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function C1($){let S=fH($),Y=0;for(let E of S)Y+=yH(E)?2:1;return Y}h();var m1="__skip_prompt__";async function O$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let Y=await L(),E=Y.clientOptions?.[$.id];if(E&&Y.clientOptionsLocked?.[$.id])return Q2(S,E);let O=await _H($,S,E);if(O===null)return null;if(await l({clientOptions:{...Y.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...Y.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let x=Q$();Z.info(x==="zh"?"\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u6B21\u5C06\u8DF3\u8FC7\u6B64\u9009\u62E9\u3002\u53EF\u5728\u300C\u9AD8\u7EA7 \u2192 \u91CD\u7F6E\u542F\u52A8\u9009\u9879\u300D\u4E2D\u4FEE\u6539\u3002":"Saved. This prompt will be skipped next time. Reset in Advanced \u2192 Reset Launch Options.")}return Q2(S,O.selectedIds)}async function v2(){await l({clientOptions:{},clientOptionsLocked:{}})}function Q2($,S){let Y=[];for(let E of S){let O=$.find((x)=>x.id===E);if(O)Y.push(...O.args)}return{args:Y,selectedOptionIds:S}}async function _H($,S,Y){let E=Q$(),O=(G)=>E==="zh"?G.label.zh:G.label.en,x=[],H=new Map,q=[];for(let G of S)if(G.group){if(!H.has(G.group))H.set(G.group,[]);H.get(G.group).push(G)}else q.push(G);for(let[,G]of H){let v=G.find((V)=>Y?.includes(V.id))?.id??"__none__",z=await S$({message:M("menu.selectOptions")||`${$.name} options`,initialValue:v,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((V)=>({value:V.id,label:O(V),hint:V.flag}))]});if(A(z))return null;if(z!=="__none__")x.push(z)}if(q.length>0){let G=await h0({message:M("menu.selectOptions")||`${$.name} options`,options:[...q.map((z)=>({value:z.id,label:O(z),hint:z.flag,initialValue:Y?.includes(z.id)??!1})),{value:m1,label:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(A(G))return null;let Q=G,v=Q.includes(m1);return x.push(...Q.filter((z)=>z!==m1)),{selectedIds:x,lock:v}}let R=await n({message:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(A(R))return null;return{selectedIds:x,lock:!!R}}var b2=[{version:"0.2.21",date:"2026-04-20",changes:["\u5BA2\u6237\u7AEF\u66F4\u65B0\u6539\u4E3A\u7528\u6237\u786E\u8BA4\uFF0C\u4E0D\u518D\u81EA\u52A8\u66F4\u65B0","\u7981\u6B62 Claude Code / Codex \u81EA\u8EAB\u7684\u81EA\u52A8\u66F4\u65B0\uFF0C\u7531 Tako \u7EDF\u4E00\u7BA1\u7406","\u4FEE\u590D\u5DF2\u5B89\u88C5\u7528\u6237\u539F\u751F\u4E8C\u8FDB\u5236\u672A\u5C31\u4F4D\u5BFC\u81F4 ENOEXEC \u7684\u95EE\u9898"]},{version:"0.2.20",date:"2026-04-19",changes:["\u4FEE\u590D Claude Code v2 \u539F\u751F\u4E8C\u8FDB\u5236\u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898","\u5B89\u88C5\u65F6\u81EA\u52A8\u8FD0\u884C postinstall \u786E\u4FDD\u539F\u751F\u4E8C\u8FDB\u5236\u5C31\u4F4D","\u65B0\u589E\u66F4\u65B0\u65E5\u5FD7\u529F\u80FD\uFF0C\u53EF\u5728\u4E3B\u9875\u67E5\u770B\u7248\u672C\u53D8\u66F4"]},{version:"0.2.18",date:"2026-04-15",changes:["\u65B0\u589E Gemini CLI \u652F\u6301","Codex \u914D\u7F6E\u7B80\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6","Claude Code settings.json \u51B2\u7A81\u68C0\u6D4B\u4E0E\u81EA\u52A8\u6E05\u7406","\u5B89\u88C5\u6D41\u7A0B\u4F18\u5316"]},{version:"0.2.14",date:"2026-04-10",changes:["Codex \u542F\u52A8\u9009\u9879\u652F\u6301\uFF08\u8DF3\u8FC7\u6743\u9650\u3001\u8BE6\u7EC6\u65E5\u5FD7\u7B49\uFF09","\u914D\u7F6E\u6CE8\u5165\u673A\u5236\u4F18\u5316"]},{version:"0.2.12",date:"2026-04-06",changes:["\u56FD\u5185\u955C\u50CF\u6E90\u5B89\u88C5\u4FEE\u590D","Windows install.ps1 \u5B89\u88C5\u811A\u672C\u4FEE\u590D"]},{version:"0.2.9",date:"2026-03-30",changes:["statusline \u72B6\u6001\u680F\u529F\u80FD\u8FC1\u79FB","Codex \u914D\u7F6E\u589E\u91CF\u66F4\u65B0\uFF0C\u4FEE\u590D\u542F\u52A8\u5931\u8D25\u95EE\u9898"]},{version:"0.2.0",date:"2026-03-15",changes:["\u5168\u65B0 Ink TUI \u4E3B\u83DC\u5355","\u5BA2\u6237\u7AEF Tab \u5207\u6362 + \u53EF\u6298\u53E0\u542F\u52A8\u9009\u9879","\u6700\u8FD1\u9879\u76EE\u5FEB\u901F\u542F\u52A8","\u57CB\u70B9\u5206\u6790\u7CFB\u7EDF"]}];async function PH(){let S=(await L()).lastSeenVersion;if(!S)return!0;return S!==f}async function Z2(){await l({lastSeenVersion:f})}async function z2(){if(!await PH())return;let $=b2.find((Y)=>Y.version===f);if(!$){await Z2();return}let S=` \x1B[36m\uD83D\uDCCB v${$.version} \u66F4\u65B0\u5185\u5BB9\uFF1A\x1B[0m`;console.log(S);for(let Y of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${Y}`);console.log(),await Z2()}async function J2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of b2){let Y=$.version===f?`\x1B[36;1mv${$.version}\x1B[0m \x1B[90m(\u5F53\u524D)\x1B[0m`:`\x1B[1mv${$.version}\x1B[0m`;console.log(),console.log(` ${Y} \x1B[90m${$.date}\x1B[0m`);for(let E of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${E}`)}console.log(),console.log(" "+"\u2500".repeat(40)),console.log(),await n({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}h();async function W2(){let $=t1(),S=await q2(),Y=process.cwd(),E=[],O=[...$].sort((x,H)=>{if(x.id===S)return-1;if(H.id===S)return 1;return 0});for(let x of O){let H=await x2(x.id,B1,!0);E.push({value:{type:"launch",client:x},label:x.name,hint:M("recentProjects.launchInCurrent")});for(let q of H)E.push({value:{type:"launch-in-project",client:x,projectPath:q.path},label:` \u2514\u2500 ${G2(q.path,35)}`,hint:R2(q.lastLaunchedAt)})}return E.push({value:{type:"advanced"},label:M("menu.advanced"),hint:M("menu.advancedHint")},{value:{type:"exit"},label:M("menu.exit")}),E}async function j1(){let $=await W2(),S=await S$({message:M("menu.selectAction"),options:$});if(A(S))return null;return S}async function y1(){let $=await S$({message:M("menu.advancedOptions"),options:[{value:{type:"stats"},label:M("menu.viewStats")},{value:{type:"config"},label:M("menu.configApiKey")},{value:{type:"resetOptions"},label:M("menu.resetOptions")},{value:{type:"changelog"},label:"\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7"},{value:{type:"language"},label:M("menu.changeLanguage")},{value:null,label:M("menu.back")}]});if(A($)||$===null)return null;return $}h();function FH($){return $.startsWith("cr_")&&$.length>10}async function kH($){try{let Y=await(await fetch(`${p}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(Y.success&&Y.data?.id)return{valid:!0,apiId:Y.data.id};return{valid:!1,error:Y.error||M("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:M("auth.networkError")}}}async function T2($){if(!FH($))return X("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:M("auth.invalidFormat")};let S=await kH($);if(!S.valid)return X("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),X("api_key_validated",{success:!0}),c$(),{success:!0}}h();async function p$($=!1){if(!$)Z.warn("API Key not detected"),console.log();let S=await B0({message:M("prompts.enterApiKey"),placeholder:M("prompts.apiKeyPlaceholder"),validate(O){if(!O)return M("prompts.enterApiKey");if(!O.startsWith("cr_"))return M("prompts.keyInvalidFormat");if(O.length<10)return M("prompts.keyInvalidFormat")}});if(A(S))return!1;let Y=g();Y.start(M("prompts.validating"));let E=await T2(S);if(E.success)return Y.stop(M("prompts.keyConfigured")),!0;else return Y.stop(M("prompts.keyValidationFailed",{error:E.error||""})),!1}async function U$(){try{let $=await n1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${p}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${p}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!Y.success)return{success:!1,error:Y.error||Y.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let x=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:Y.data?.usage?.total?.requests||0,totalCost:Y.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(Y.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function f1($){return $.toLocaleString("en-US")}h();function uH($,S){let Y=[];if(Y.push(""),Y.push(` ${M("stats.title")}`),Y.push(""),Y.push(` ${M("stats.totalRequests",{count:f1($.totalRequests)})}`),Y.push(` ${M("stats.totalCost",{cost:$.totalCost})}`),Y.push(` ${M("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)Y.push(""),Y.push(` ${M("stats.modelDistribution")}`),$.modelStats.forEach((E,O)=>{let x=O===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",H=E.model.length>25?E.model.slice(0,22)+"...":E.model;Y.push(` ${x} ${H.padEnd(25)} ${f1(E.requests).padStart(6)} ${M("stats.times")} ${E.cost.padStart(8)}`)});return Y.push(""),Y.push(` \x1B[90m${M("stats.refreshHint",{countdown:S})}\x1B[0m`),Y.join(`
328
+ `;await $.writeFile(Y,x,{mode:493})}}async function KH($){let S=g();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let Y=await t(),E=await import("fs/promises");await E.mkdir(u,{recursive:!0});let O=c(u,"package.json");try{await E.access(O)}catch{await E.writeFile(O,JSON.stringify({name:"tako-local",private:!0},null,2))}let x=Bun.spawn([C,"update",K1,"--latest"],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await M2(),L("cli_updated",{from_version:f,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(x.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(Y){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${Y instanceof Error?Y.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function CH(){let $=await import("fs/promises"),S=c(u,"bun.lock");try{await $.unlink(S)}catch{}}async function mH(){let $=await import("fs/promises");try{let S=await t();await $.mkdir(u,{recursive:!0});let Y=c(u,"package.json");try{await $.access(Y)}catch{await $.writeFile(Y,JSON.stringify({name:"tako-local",private:!0},null,2))}await CH();let E=Bun.spawn([C,"add",`${K1}@latest`],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await E.exited,E.exitCode===0}catch{return!1}}async function jH(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");try{let O=await $.readFile(Y,"utf-8");if(O.includes("bun run tako-cli")||O.includes("run tako-cli")){Z.info(M("updater.migrating"));let x=!1;try{await $.access(E),x=!0}catch{x=!1}if(!x){let H=g();if(H.start(M("updater.installingLocally")),!await mH())return H.stop(M("updater.migrationFailed")),!1;H.stop(M("updater.installComplete"))}return await M2(),!0}}catch{}return!1}async function N$(){try{if(await jH())Z.info(M("updater.migrationComplete")),process.exit(0);let S=await hH();if(S.hasUpdate&&S.latestVersion){if(Z.warn(M("updater.newVersionAvailable",{version:S.latestVersion,current:f})),await KH(S.latestVersion))Z.info(M("updater.pleaseRestart")),process.exit(0)}}catch{}}h();function yH($){let S=$.codePointAt(0);if(!S)return!1;return S>=19968&&S<=40959||S>=13312&&S<=19903||S>=131072&&S<=191471||S>=63744&&S<=64255||S>=194560&&S<=195103||S>=44032&&S<=55215||S>=12352&&S<=12447||S>=12448&&S<=12543||S>=65280&&S<=65519||S>=126976&&S<=131071||S>=9728&&S<=10175||S===11088}function fH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function C1($){let S=fH($),Y=0;for(let E of S)Y+=yH(E)?2:1;return Y}h();var m1="__skip_prompt__";async function O$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let Y=await X(),E=Y.clientOptions?.[$.id];if(E&&Y.clientOptionsLocked?.[$.id])return Q2(S,E);let O=await _H($,S,E);if(O===null)return null;if(await l({clientOptions:{...Y.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...Y.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let x=Q$();Z.info(x==="zh"?"\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u6B21\u5C06\u8DF3\u8FC7\u6B64\u9009\u62E9\u3002\u53EF\u5728\u300C\u9AD8\u7EA7 \u2192 \u91CD\u7F6E\u542F\u52A8\u9009\u9879\u300D\u4E2D\u4FEE\u6539\u3002":"Saved. This prompt will be skipped next time. Reset in Advanced \u2192 Reset Launch Options.")}return Q2(S,O.selectedIds)}async function v2(){await l({clientOptions:{},clientOptionsLocked:{}})}function Q2($,S){let Y=[];for(let E of S){let O=$.find((x)=>x.id===E);if(O)Y.push(...O.args)}return{args:Y,selectedOptionIds:S}}async function _H($,S,Y){let E=Q$(),O=(G)=>E==="zh"?G.label.zh:G.label.en,x=[],H=new Map,q=[];for(let G of S)if(G.group){if(!H.has(G.group))H.set(G.group,[]);H.get(G.group).push(G)}else q.push(G);for(let[,G]of H){let v=G.find((V)=>Y?.includes(V.id))?.id??"__none__",z=await S$({message:M("menu.selectOptions")||`${$.name} options`,initialValue:v,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((V)=>({value:V.id,label:O(V),hint:V.flag}))]});if(A(z))return null;if(z!=="__none__")x.push(z)}if(q.length>0){let G=await h0({message:M("menu.selectOptions")||`${$.name} options`,options:[...q.map((z)=>({value:z.id,label:O(z),hint:z.flag,initialValue:Y?.includes(z.id)??!1})),{value:m1,label:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(A(G))return null;let Q=G,v=Q.includes(m1);return x.push(...Q.filter((z)=>z!==m1)),{selectedIds:x,lock:v}}let R=await n({message:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(A(R))return null;return{selectedIds:x,lock:!!R}}var b2=[{version:"0.2.21",date:"2026-04-20",changes:["\u5BA2\u6237\u7AEF\u66F4\u65B0\u6539\u4E3A\u7528\u6237\u786E\u8BA4\uFF0C\u4E0D\u518D\u81EA\u52A8\u66F4\u65B0","\u7981\u6B62 Claude Code / Codex \u81EA\u8EAB\u7684\u81EA\u52A8\u66F4\u65B0\uFF0C\u7531 Tako \u7EDF\u4E00\u7BA1\u7406","\u4FEE\u590D\u5DF2\u5B89\u88C5\u7528\u6237\u539F\u751F\u4E8C\u8FDB\u5236\u672A\u5C31\u4F4D\u5BFC\u81F4 ENOEXEC \u7684\u95EE\u9898"]},{version:"0.2.20",date:"2026-04-19",changes:["\u4FEE\u590D Claude Code v2 \u539F\u751F\u4E8C\u8FDB\u5236\u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898","\u5B89\u88C5\u65F6\u81EA\u52A8\u8FD0\u884C postinstall \u786E\u4FDD\u539F\u751F\u4E8C\u8FDB\u5236\u5C31\u4F4D","\u65B0\u589E\u66F4\u65B0\u65E5\u5FD7\u529F\u80FD\uFF0C\u53EF\u5728\u4E3B\u9875\u67E5\u770B\u7248\u672C\u53D8\u66F4"]},{version:"0.2.18",date:"2026-04-15",changes:["\u65B0\u589E Gemini CLI \u652F\u6301","Codex \u914D\u7F6E\u7B80\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6","Claude Code settings.json \u51B2\u7A81\u68C0\u6D4B\u4E0E\u81EA\u52A8\u6E05\u7406","\u5B89\u88C5\u6D41\u7A0B\u4F18\u5316"]},{version:"0.2.14",date:"2026-04-10",changes:["Codex \u542F\u52A8\u9009\u9879\u652F\u6301\uFF08\u8DF3\u8FC7\u6743\u9650\u3001\u8BE6\u7EC6\u65E5\u5FD7\u7B49\uFF09","\u914D\u7F6E\u6CE8\u5165\u673A\u5236\u4F18\u5316"]},{version:"0.2.12",date:"2026-04-06",changes:["\u56FD\u5185\u955C\u50CF\u6E90\u5B89\u88C5\u4FEE\u590D","Windows install.ps1 \u5B89\u88C5\u811A\u672C\u4FEE\u590D"]},{version:"0.2.9",date:"2026-03-30",changes:["statusline \u72B6\u6001\u680F\u529F\u80FD\u8FC1\u79FB","Codex \u914D\u7F6E\u589E\u91CF\u66F4\u65B0\uFF0C\u4FEE\u590D\u542F\u52A8\u5931\u8D25\u95EE\u9898"]},{version:"0.2.0",date:"2026-03-15",changes:["\u5168\u65B0 Ink TUI \u4E3B\u83DC\u5355","\u5BA2\u6237\u7AEF Tab \u5207\u6362 + \u53EF\u6298\u53E0\u542F\u52A8\u9009\u9879","\u6700\u8FD1\u9879\u76EE\u5FEB\u901F\u542F\u52A8","\u57CB\u70B9\u5206\u6790\u7CFB\u7EDF"]}];async function PH(){let S=(await X()).lastSeenVersion;if(!S)return!0;return S!==f}async function Z2(){await l({lastSeenVersion:f})}async function z2(){if(!await PH())return;let $=b2.find((Y)=>Y.version===f);if(!$){await Z2();return}let S=` \x1B[36m\uD83D\uDCCB v${$.version} \u66F4\u65B0\u5185\u5BB9\uFF1A\x1B[0m`;console.log(S);for(let Y of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${Y}`);console.log(),await Z2()}async function W2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of b2){let Y=$.version===f?`\x1B[36;1mv${$.version}\x1B[0m \x1B[90m(\u5F53\u524D)\x1B[0m`:`\x1B[1mv${$.version}\x1B[0m`;console.log(),console.log(` ${Y} \x1B[90m${$.date}\x1B[0m`);for(let E of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${E}`)}console.log(),console.log(" "+"\u2500".repeat(40)),console.log(),await n({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}h();async function J2(){let $=t1(),S=await q2(),Y=process.cwd(),E=[],O=[...$].sort((x,H)=>{if(x.id===S)return-1;if(H.id===S)return 1;return 0});for(let x of O){let H=await x2(x.id,B1,!0);E.push({value:{type:"launch",client:x},label:x.name,hint:M("recentProjects.launchInCurrent")});for(let q of H)E.push({value:{type:"launch-in-project",client:x,projectPath:q.path},label:` \u2514\u2500 ${G2(q.path,35)}`,hint:R2(q.lastLaunchedAt)})}return E.push({value:{type:"advanced"},label:M("menu.advanced"),hint:M("menu.advancedHint")},{value:{type:"exit"},label:M("menu.exit")}),E}async function j1(){let $=await J2(),S=await S$({message:M("menu.selectAction"),options:$});if(A(S))return null;return S}async function y1(){let $=await S$({message:M("menu.advancedOptions"),options:[{value:{type:"stats"},label:M("menu.viewStats")},{value:{type:"config"},label:M("menu.configApiKey")},{value:{type:"resetOptions"},label:M("menu.resetOptions")},{value:{type:"changelog"},label:"\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7"},{value:{type:"language"},label:M("menu.changeLanguage")},{value:null,label:M("menu.back")}]});if(A($)||$===null)return null;return $}h();function FH($){return $.startsWith("cr_")&&$.length>10}async function kH($){try{let Y=await(await fetch(`${p}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(Y.success&&Y.data?.id)return{valid:!0,apiId:Y.data.id};return{valid:!1,error:Y.error||M("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:M("auth.networkError")}}}async function T2($){if(!FH($))return L("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:M("auth.invalidFormat")};let S=await kH($);if(!S.valid)return L("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),L("api_key_validated",{success:!0}),c$(),{success:!0}}h();async function p$($=!1){if(!$)Z.warn("API Key not detected"),console.log();let S=await B0({message:M("prompts.enterApiKey"),placeholder:M("prompts.apiKeyPlaceholder"),validate(O){if(!O)return M("prompts.enterApiKey");if(!O.startsWith("cr_"))return M("prompts.keyInvalidFormat");if(O.length<10)return M("prompts.keyInvalidFormat")}});if(A(S))return!1;let Y=g();Y.start(M("prompts.validating"));let E=await T2(S);if(E.success)return Y.stop(M("prompts.keyConfigured")),!0;else return Y.stop(M("prompts.keyValidationFailed",{error:E.error||""})),!1}async function U$(){try{let $=await n1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${p}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${p}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!Y.success)return{success:!1,error:Y.error||Y.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let x=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:Y.data?.usage?.total?.requests||0,totalCost:Y.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(Y.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function f1($){return $.toLocaleString("en-US")}h();function uH($,S){let Y=[];if(Y.push(""),Y.push(` ${M("stats.title")}`),Y.push(""),Y.push(` ${M("stats.totalRequests",{count:f1($.totalRequests)})}`),Y.push(` ${M("stats.totalCost",{cost:$.totalCost})}`),Y.push(` ${M("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)Y.push(""),Y.push(` ${M("stats.modelDistribution")}`),$.modelStats.forEach((E,O)=>{let x=O===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",H=E.model.length>25?E.model.slice(0,22)+"...":E.model;Y.push(` ${x} ${H.padEnd(25)} ${f1(E.requests).padStart(6)} ${M("stats.times")} ${E.cost.padStart(8)}`)});return Y.push(""),Y.push(` \x1B[90m${M("stats.refreshHint",{countdown:S})}\x1B[0m`),Y.join(`
329
329
  `)}async function _1(){let S=g();S.start(M("stats.fetching"));let Y=await U$();if(!Y.success){S.stop(M("stats.fetchFailed",{error:Y.error||""}));return}S.stop("");let E=10,O="",x=()=>{if(O){let q=O.split(`
330
- `).length;process.stdout.write(`\x1B[${q}A\x1B[0J`)}O=uH(Y.data,E),console.log(O)};x();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((q)=>{let R=!0,G=()=>{if(!R)return;R=!1,v(),q()},Q=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let z=await U$();if(z.success)Y=z}x()},1000),v=()=>{if(clearInterval(Q),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function gH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${M("cli.version",{version:f})}`,E=C1(Y),O=Math.floor((50-E)/2),x=50-O-E;console.log(` \u2502${" ".repeat(O)}${Y}${" ".repeat(x)}\u2502`);let H=M("banner.welcome"),q=`\x1B[90m${H}\x1B[0m`,R=C1(H),G=Math.floor((50-R)/2),Q=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(Q)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function I2($){switch($.type){case"launch":{X("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=await E$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)Z.error(Y.error||M("cli.launchFailed"));return!0}case"launch-in-project":{X("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await E$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)Z.error(E.error||M("cli.launchFailed"));return!0}case"advanced":{X("menu_action",{action:"advanced"});let S=await y1();if(S)return await I2(S);return!0}case"stats":return X("menu_action",{action:"stats"}),await _1(),!0;case"config":return X("menu_action",{action:"config"}),await p$(!0),!0;case"resetOptions":return X("menu_action",{action:"resetOptions"}),await v2(),Z.success(M("menu.optionsReset")),!0;case"changelog":return X("menu_action",{action:"changelog"}),await J2(),!0;case"language":return X("menu_action",{action:"language"}),await dH(),!0;case"exit":return X("menu_action",{action:"exit"}),!1}}async function dH(){let $=Q$(),S=M(`language.${$}`),Y=await S$({message:M("menu.changeLanguage")+` (${M("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:M("language.en")},{value:"zh",label:M("language.zh")}]});if(A(Y))return;Z1(Y);let E=M(`language.${Y}`);Z.success(M("menu.languageChanged",{lang:E}))}async function L2(){if(gH(),await z2(),!await r1()){if(!await p$()){v1("\u518D\u89C1\uFF01");return}}while(!0){let S=await j1();if(S===null)break;if(!await I2(S))break}v1("\u518D\u89C1\uFF01")}h();import{homedir as DH}from"os";var N={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"};var T={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var W={directory:{icon:N.brightYellow,text:N.brightGreen},git:{icon:N.brightBlue,text:N.brightBlue,clean:N.brightGreen,dirty:N.brightYellow,conflict:N.brightRed},model:{icon:N.brightCyan,text:N.brightCyan},version:{icon:N.brightWhite,text:N.brightBlack},outputStyle:{icon:N.brightMagenta,text:N.brightMagenta},context:{icon:N.brightMagenta,low:N.brightGreen,medium:N.brightYellow,high:N.brightRed},todayUsage:{icon:N.brightGreen,text:N.brightGreen},separator:N.brightBlack},o={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"};function cH(){return!1}function j($){let S=o[$];if(typeof S==="string")return S;return cH()?S.nerd:S.plain}class l${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=j("directory");return`${W.directory.icon}${Y}${T.reset} ${W.directory.text}${S}${T.reset}`}formatPath($){let S=DH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class o${id="git";async render($){let S=$.workspace.current_dir;if(!await this.isGitRepository(S))return null;let E=await this.getBranch(S);if(!E)return null;let{status:O,statusColor:x}=await this.getStatus(S),{ahead:H,behind:q}=await this.getAheadBehind(S),R=j("git"),G=`${W.git.icon}${R}${T.reset} ${W.git.text}${E}${T.reset}`;if(G+=` ${x}${O}${T.reset}`,H>0)G+=` ${W.git.clean}${o.gitAhead}${H}${T.reset}`;if(q>0)G+=` ${W.git.dirty}${o.gitBehind}${q}${T.reset}`;return G}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 S=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited===0&&Y.trim())return Y.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(O.stdout).text();if(await O.exited===0&&x.trim())return`detached:${x.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited!==0)return{status:o.gitClean,statusColor:W.git.clean};let O=Y.trim();if(!O)return{status:o.gitClean,statusColor:W.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:o.gitConflict,statusColor:W.git.conflict};return{status:o.gitDirty,statusColor:W.git.dirty}}catch{return{status:o.gitClean,statusColor:W.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(Y.trim(),10)||0:0,x=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(x.stdout).text(),R=await x.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:R}}catch{return{ahead:0,behind:0}}}}var pH={"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"};class a${id="model";render($){let S=$.model.id,Y=pH[S]||this.simplifyModelName($.model.display_name),E=j("model");return`${W.model.icon}${E}${T.reset} ${W.model.text}${Y}${T.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as lH}from"os";import{join as F}from"path";var{Glob:oH}=globalThis.Bun;var X2=process.platform==="win32";class i${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=j("version");return`${W.version.icon}${Y}${T.reset} ${W.version.text}v${S}${T.reset}`}async getClaudeCodeVersion(){let $=lH(),S=[];if(X2)S.push(F($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),F($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),F($,".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 E of S){let O=await this.readVersionFromPackage(E);if(O)return O}let Y=[];if(X2)Y.push({base:F($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:F($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:F($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:E,pattern:O}of Y)try{let x=new oH(O);for await(let H of x.scan({cwd:E,absolute:!0})){let q=await this.readVersionFromPackage(H);if(q)return q}}catch{continue}return null}async readVersionFromPackage($){try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}}var aH={"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},iH=200000;class D{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),Y=this.getContextLimit($.model.id),O=Math.round((S??0)/Y*100),x=Math.max(0,100-O),H=j("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${W.context.icon}${H}${T.reset} ${q}Context Remaining: ${x}%${T.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${T.reset}${H}${O}${T.reset}${N.brightBlack}${x}]${T.reset}`}getRemainingColor($){if($<=20)return W.context.high;if($<=50)return W.context.medium;return W.context.low}async getTokensWithCache($){let S=Date.now();if(D.cache&&D.cache.path===$&&S-D.cache.timestamp<D.CACHE_TTL)return D.cache.tokens;let Y=await this.parseTranscriptTokens($);return D.cache={path:$,tokens:Y,timestamp:S},Y}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let Y=await S.text();if(!Y.trim())return null;let E=Y.split(`
331
- `).filter((O)=>O.trim());for(let O=E.length-1;O>=0;O--)try{let x=JSON.parse(E[O]);if(x.type==="assistant"&&x.message?.usage){let H=x.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return aH[$]||iH}}class a{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(a.cache&&Date.now()-a.cache.timestamp<a.CACHE_TTL)return a.cache.data;try{let S=await U$();if(!S.success||!S.data)return null;let Y=S.data.todayCost,E=j("todayUsage"),O=`${W.todayUsage.icon}${E}${T.reset} ${W.todayUsage.text}Today: ${Y}${T.reset}`;return a.cache={data:O,timestamp:Date.now()},O}catch{return null}}}class P1{separator=`${W.separator} \u2502 ${T.reset}`;render($){let S=["directory","git","model","version","today-usage"],Y=["context"],E=this.renderLine($,S),O=this.renderLine($,Y);return[E,O].filter((x)=>x.length>0).join(`
332
- `)}renderLine($,S){let Y=[];for(let E of S){let O=$.get(E);if(O)Y.push(O)}return Y.join(this.separator)}}import{join as x$,dirname as rH}from"path";import{homedir as F1}from"os";import{mkdir as nH}from"fs/promises";var N2=x$(F1(),".tako"),sH=x$(N2,"cli"),eH=x$(N2,"bin",process.platform==="win32"?"tako.cmd":"tako");function tH(){if(process.platform==="win32")return x$(process.env.APPDATA||x$(F1(),"AppData","Roaming"),"claude","settings.json");return x$(F1(),".claude","settings.json")}var $3=process.platform==="win32",S3="0.1.48";function H3($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number),O=Math.max(Y.length,E.length);for(let x=0;x<O;x++){let H=Y[x]||0,q=E[x]||0;if(H!==q)return H-q}return 0}async function Y3(){let $=x$(sH,"node_modules","tako-cli","package.json");try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}async function E3(){let $=await Y3();if(!$)return!1;return H3($,S3)>=0}function O3(){return eH}function x3($){if($3)return $.replace(/\\/g,"/");return $}async function k1(){if(!await E3())return;let S=tH(),Y={};try{let H=Bun.file(S);if(await H.exists())Y=await H.json()}catch{}let O={type:"command",command:`"${x3(O3())}" statusline`,padding:0},x=typeof Y.statusLine==="object"&&Y.statusLine!==null?Y.statusLine.command:null;if(typeof x==="string"&&x.includes("tako statusline"))return;Y.statusLine=O,await nH(rH(S),{recursive:!0}),await Bun.write(S,JSON.stringify(Y,null,2))}var q3=[new l$,new o$,new a$,new i$,new D,new a];async function G3($){let S=await Promise.all(q3.map(async(O)=>{try{let x=await O.render($);return{id:O.id,content:x}}catch{return{id:O.id,content:null}}})),Y=new Map;for(let{id:O,content:x}of S)Y.set(O,x);return new P1().render(Y)}async function U2(){try{let $=await Bun.stdin.json(),S=await G3($);console.log(S)}catch($){process.exit(0)}}var u1="0.2.24";function R3(){console.log(`
330
+ `).length;process.stdout.write(`\x1B[${q}A\x1B[0J`)}O=uH(Y.data,E),console.log(O)};x();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((q)=>{let R=!0,G=()=>{if(!R)return;R=!1,v(),q()},Q=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let z=await U$();if(z.success)Y=z}x()},1000),v=()=>{if(clearInterval(Q),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function gH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${M("cli.version",{version:f})}`,E=C1(Y),O=Math.floor((50-E)/2),x=50-O-E;console.log(` \u2502${" ".repeat(O)}${Y}${" ".repeat(x)}\u2502`);let H=M("banner.welcome"),q=`\x1B[90m${H}\x1B[0m`,R=C1(H),G=Math.floor((50-R)/2),Q=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(Q)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function I2($){switch($.type){case"launch":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=await E$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)Z.error(Y.error||M("cli.launchFailed"));return!0}case"launch-in-project":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await E$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)Z.error(E.error||M("cli.launchFailed"));return!0}case"advanced":{L("menu_action",{action:"advanced"});let S=await y1();if(S)return await I2(S);return!0}case"stats":return L("menu_action",{action:"stats"}),await _1(),!0;case"config":return L("menu_action",{action:"config"}),await p$(!0),!0;case"resetOptions":return L("menu_action",{action:"resetOptions"}),await v2(),Z.success(M("menu.optionsReset")),!0;case"changelog":return L("menu_action",{action:"changelog"}),await W2(),!0;case"language":return L("menu_action",{action:"language"}),await dH(),!0;case"exit":return L("menu_action",{action:"exit"}),!1}}async function dH(){let $=Q$(),S=M(`language.${$}`),Y=await S$({message:M("menu.changeLanguage")+` (${M("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:M("language.en")},{value:"zh",label:M("language.zh")}]});if(A(Y))return;Z1(Y);let E=M(`language.${Y}`);Z.success(M("menu.languageChanged",{lang:E}))}async function X2(){if(gH(),await z2(),!await r1()){if(!await p$()){v1("\u518D\u89C1\uFF01");return}}while(!0){let S=await j1();if(S===null)break;if(!await I2(S))break}v1("\u518D\u89C1\uFF01")}h();import{homedir as DH}from"os";var N={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"};var T={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var J={directory:{icon:N.brightYellow,text:N.brightGreen},git:{icon:N.brightBlue,text:N.brightBlue,clean:N.brightGreen,dirty:N.brightYellow,conflict:N.brightRed},model:{icon:N.brightCyan,text:N.brightCyan},version:{icon:N.brightWhite,text:N.brightBlack},outputStyle:{icon:N.brightMagenta,text:N.brightMagenta},context:{icon:N.brightMagenta,low:N.brightGreen,medium:N.brightYellow,high:N.brightRed},todayUsage:{icon:N.brightGreen,text:N.brightGreen},separator:N.brightBlack},o={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"};function cH(){return!1}function j($){let S=o[$];if(typeof S==="string")return S;return cH()?S.nerd:S.plain}class l${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=j("directory");return`${J.directory.icon}${Y}${T.reset} ${J.directory.text}${S}${T.reset}`}formatPath($){let S=DH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class o${id="git";async render($){let S=$.workspace.current_dir;if(!await this.isGitRepository(S))return null;let E=await this.getBranch(S);if(!E)return null;let{status:O,statusColor:x}=await this.getStatus(S),{ahead:H,behind:q}=await this.getAheadBehind(S),R=j("git"),G=`${J.git.icon}${R}${T.reset} ${J.git.text}${E}${T.reset}`;if(G+=` ${x}${O}${T.reset}`,H>0)G+=` ${J.git.clean}${o.gitAhead}${H}${T.reset}`;if(q>0)G+=` ${J.git.dirty}${o.gitBehind}${q}${T.reset}`;return G}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 S=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited===0&&Y.trim())return Y.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(O.stdout).text();if(await O.exited===0&&x.trim())return`detached:${x.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited!==0)return{status:o.gitClean,statusColor:J.git.clean};let O=Y.trim();if(!O)return{status:o.gitClean,statusColor:J.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:o.gitConflict,statusColor:J.git.conflict};return{status:o.gitDirty,statusColor:J.git.dirty}}catch{return{status:o.gitClean,statusColor:J.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(Y.trim(),10)||0:0,x=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(x.stdout).text(),R=await x.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:R}}catch{return{ahead:0,behind:0}}}}var pH={"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"};class a${id="model";render($){let S=$.model.id,Y=pH[S]||this.simplifyModelName($.model.display_name),E=j("model");return`${J.model.icon}${E}${T.reset} ${J.model.text}${Y}${T.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as lH}from"os";import{join as F}from"path";var{Glob:oH}=globalThis.Bun;var L2=process.platform==="win32";class i${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=j("version");return`${J.version.icon}${Y}${T.reset} ${J.version.text}v${S}${T.reset}`}async getClaudeCodeVersion(){let $=lH(),S=[];if(L2)S.push(F($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),F($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),F($,".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 E of S){let O=await this.readVersionFromPackage(E);if(O)return O}let Y=[];if(L2)Y.push({base:F($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:F($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:F($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:E,pattern:O}of Y)try{let x=new oH(O);for await(let H of x.scan({cwd:E,absolute:!0})){let q=await this.readVersionFromPackage(H);if(q)return q}}catch{continue}return null}async readVersionFromPackage($){try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}}var aH={"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},iH=200000;class D{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),Y=this.getContextLimit($.model.id),O=Math.round((S??0)/Y*100),x=Math.max(0,100-O),H=j("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${J.context.icon}${H}${T.reset} ${q}Context Remaining: ${x}%${T.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${T.reset}${H}${O}${T.reset}${N.brightBlack}${x}]${T.reset}`}getRemainingColor($){if($<=20)return J.context.high;if($<=50)return J.context.medium;return J.context.low}async getTokensWithCache($){let S=Date.now();if(D.cache&&D.cache.path===$&&S-D.cache.timestamp<D.CACHE_TTL)return D.cache.tokens;let Y=await this.parseTranscriptTokens($);return D.cache={path:$,tokens:Y,timestamp:S},Y}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let Y=await S.text();if(!Y.trim())return null;let E=Y.split(`
331
+ `).filter((O)=>O.trim());for(let O=E.length-1;O>=0;O--)try{let x=JSON.parse(E[O]);if(x.type==="assistant"&&x.message?.usage){let H=x.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return aH[$]||iH}}class a{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(a.cache&&Date.now()-a.cache.timestamp<a.CACHE_TTL)return a.cache.data;try{let S=await U$();if(!S.success||!S.data)return null;let Y=S.data.todayCost,E=j("todayUsage"),O=`${J.todayUsage.icon}${E}${T.reset} ${J.todayUsage.text}Today: ${Y}${T.reset}`;return a.cache={data:O,timestamp:Date.now()},O}catch{return null}}}class P1{separator=`${J.separator} \u2502 ${T.reset}`;render($){let S=["directory","git","model","version","today-usage"],Y=["context"],E=this.renderLine($,S),O=this.renderLine($,Y);return[E,O].filter((x)=>x.length>0).join(`
332
+ `)}renderLine($,S){let Y=[];for(let E of S){let O=$.get(E);if(O)Y.push(O)}return Y.join(this.separator)}}import{join as x$,dirname as rH}from"path";import{homedir as F1}from"os";import{mkdir as nH}from"fs/promises";var N2=x$(F1(),".tako"),sH=x$(N2,"cli"),eH=x$(N2,"bin",process.platform==="win32"?"tako.cmd":"tako");function tH(){if(process.platform==="win32")return x$(process.env.APPDATA||x$(F1(),"AppData","Roaming"),"claude","settings.json");return x$(F1(),".claude","settings.json")}var $3=process.platform==="win32",S3="0.1.48";function H3($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number),O=Math.max(Y.length,E.length);for(let x=0;x<O;x++){let H=Y[x]||0,q=E[x]||0;if(H!==q)return H-q}return 0}async function Y3(){let $=x$(sH,"node_modules","tako-cli","package.json");try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}async function E3(){let $=await Y3();if(!$)return!1;return H3($,S3)>=0}function O3(){return eH}function x3($){if($3)return $.replace(/\\/g,"/");return $}async function k1(){if(!await E3())return;let S=tH(),Y={};try{let H=Bun.file(S);if(await H.exists())Y=await H.json()}catch{}let O={type:"command",command:`"${x3(O3())}" statusline`,padding:0},x=typeof Y.statusLine==="object"&&Y.statusLine!==null?Y.statusLine.command:null;if(typeof x==="string"&&x.includes("tako statusline"))return;Y.statusLine=O,await nH(rH(S),{recursive:!0}),await Bun.write(S,JSON.stringify(Y,null,2))}var q3=[new l$,new o$,new a$,new i$,new D,new a];async function G3($){let S=await Promise.all(q3.map(async(O)=>{try{let x=await O.render($);return{id:O.id,content:x}}catch{return{id:O.id,content:null}}})),Y=new Map;for(let{id:O,content:x}of S)Y.set(O,x);return new P1().render(Y)}async function U2(){try{let $=await Bun.stdin.json(),S=await G3($);console.log(S)}catch($){process.exit(0)}}var u1="0.2.26";function R3(){console.log(`
333
333
  ${M("cli.version",{version:u1})}
334
334
 
335
335
  ${M("cli.usage")}
@@ -348,4 +348,4 @@ ${M("cli.exampleInteractive")}
348
348
  ${M("cli.exampleClaude")}
349
349
  ${M("cli.exampleCodex")}
350
350
  ${M("cli.exampleGemini")}
351
- `)}async function w3(){let $=process.argv.slice(2);if($[0]==="statusline"){await U2();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${u1}`);return}if($.includes("-h")||$.includes("--help")){R3();return}let S=u1==="dev";if(c$(),X("cli_started"),$.includes("--claude")){let Y=h$("claude-code");if(!Y)console.error(M("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let Y=h$("codex");if(!Y)console.error(M("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--gemini")){let Y=h$("gemini");if(!Y)console.error(M("cli.clientNotFound",{client:"Gemini CLI"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await N$();k1().catch(()=>{}),await L2()}process.on("beforeExit",async()=>{await X$()});process.on("SIGINT",async()=>{await X$(),process.exit(0)});process.on("SIGTERM",async()=>{await X$(),process.exit(0)});w3().catch(async($)=>{console.error(M("cli.cliError"),$),await X$(),process.exit(1)});
351
+ `)}async function w3(){let $=process.argv.slice(2);if($[0]==="statusline"){await U2();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${u1}`);return}if($.includes("-h")||$.includes("--help")){R3();return}let S=u1==="dev";if(c$(),L("cli_started"),$.includes("--claude")){let Y=h$("claude-code");if(!Y)console.error(M("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let Y=h$("codex");if(!Y)console.error(M("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--gemini")){let Y=h$("gemini");if(!Y)console.error(M("cli.clientNotFound",{client:"Gemini CLI"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await N$();k1().catch(()=>{}),await X2()}process.on("beforeExit",async()=>{await L$()});process.on("SIGINT",async()=>{await L$(),process.exit(0)});process.on("SIGTERM",async()=>{await L$(),process.exit(0)});w3().catch(async($)=>{console.error(M("cli.cliError"),$),await L$(),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "description": "Tako CLI - AI coding tools launcher",
5
5
  "type": "module",
6
6
  "bin": {