tako-cli 0.2.34 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +76 -76
- 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 f2=Object.create;var{getPrototypeOf:P2,defineProperty:X$,getOwnPropertyNames:e1,getOwnPropertyDescriptor:F2}=Object,t1=Object.prototype.hasOwnProperty;function $0($){return this[$]}var k2,u2,C$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?k2??=new WeakMap:u2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?f2(P2($)):{};let H=S||!$||!$.__esModule?X$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of e1($))if(!t1.call(H,q))X$(H,q,{get:$0.bind($,q),enumerable:!0});if(E)O.set($,H);return H},g2=($)=>{var S=(s1??=new WeakMap).get($),Y;if(S)return S;if(S=X$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of e1($))if(!t1.call(S,E))X$(S,E,{get:$0.bind($,E),enumerable:!(Y=F2($,E))||Y.enumerable})}return s1.set($,S),S},s1,S0=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var d2=($)=>$;function c2($,S){this[$]=d2.bind(null,S)}var D2=($,S)=>{for(var Y in S)X$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:c2.bind(S,Y)})};var p2=($,S)=>()=>($&&(S=$($=0)),S);var A=import.meta.require;var G1=S0((h3,M0)=>{var q1={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"},a2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},i2={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?q1.up():"");if($)S+=q1.left;return S}};M0.exports={cursor:q1,scroll:a2,erase:i2,beep:"\x07"}});var M1=S0((C3,R1)=>{var f$=process||{},Q0=f$.argv||[],_$=f$.env||{},r2=!(!!_$.NO_COLOR||Q0.includes("--no-color"))&&(!!_$.FORCE_COLOR||Q0.includes("--color")||f$.platform==="win32"||(f$.stdout||{}).isTTY&&_$.TERM!=="dumb"||!!_$.CI),n2=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+s2(O,S,Y,x)+S:$+O+S},s2=($,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)},Z0=($=r2)=>{let S=$?n2:()=>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")}};R1.exports=Z0();R1.exports.createColors=Z0});var u0={};D2(u0,{t:()=>Q,setLocale:()=>b1,getLocale:()=>w$,detectLocale:()=>E$,clearLocaleOverride:()=>_S});function E$(){if(g$)return g$;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 b1($){g$=$}function _S(){g$=null}function Q($,S){let Y=E$(),E=$.split("."),O=fS;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 w$(){return E$()}var g$=null,fS;var C=p2(()=>{fS={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 u2=Object.create;var{getPrototypeOf:g2,defineProperty:I$,getOwnPropertyNames:S0,getOwnPropertyDescriptor:d2}=Object,H0=Object.prototype.hasOwnProperty;function Y0($){return this[$]}var c2,D2,C$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?c2??=new WeakMap:D2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?u2(g2($)):{};let H=S||!$||!$.__esModule?I$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of S0($))if(!H0.call(H,q))I$(H,q,{get:Y0.bind($,q),enumerable:!0});if(E)O.set($,H);return H},p2=($)=>{var S=($0??=new WeakMap).get($),Y;if(S)return S;if(S=I$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of S0($))if(!H0.call(S,E))I$(S,E,{get:Y0.bind($,E),enumerable:!(Y=d2($,E))||Y.enumerable})}return $0.set($,S),S},$0,E0=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var o2=($)=>$;function l2($,S){this[$]=o2.bind(null,S)}var a2=($,S)=>{for(var Y in S)I$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:l2.bind(S,Y)})};var i2=($,S)=>()=>($&&(S=$($=0)),S);var B=import.meta.require;var Q1=E0((y3,w0)=>{var M1={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"},s2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},e2={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?M1.up():"");if($)S+=M1.left;return S}};w0.exports={cursor:M1,scroll:s2,erase:e2,beep:"\x07"}});var w1=E0((_3,Z1)=>{var f$=process||{},v0=f$.argv||[],_$=f$.env||{},t2=!(!!_$.NO_COLOR||v0.includes("--no-color"))&&(!!_$.FORCE_COLOR||v0.includes("--color")||f$.platform==="win32"||(f$.stdout||{}).isTTY&&_$.TERM!=="dumb"||!!_$.CI),$S=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+SS(O,S,Y,x)+S:$+O+S},SS=($,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)},J0=($=t2)=>{let S=$?$S:()=>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")}};Z1.exports=J0();Z1.exports.createColors=J0});var c0={};a2(c0,{t:()=>Q,setLocale:()=>V1,getLocale:()=>v$,detectLocale:()=>O$,clearLocaleOverride:()=>kS});function O$(){if(g$)return g$;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 V1($){g$=$}function kS(){g$=null}function Q($,S){let Y=O$(),E=$.split("."),O=uS;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 v$(){return O$()}var g$=null,uS;var m=i2(()=>{uS={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 PS}from"os";import{join as FS}from"path";import{join as j$}from"path";import{homedir as o2}from"os";import{join as R$}from"path";var f=R$(o2(),".tako"),Y0=R$(f,"config.json"),Y1=R$(f,"tools"),g=R$(f,"cli"),s=R$(f,"bun"),j=R$(s,"bin",process.platform==="win32"?"bun.exe":"bun"),l2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",o=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",N3=process.env.TAKO_DEV==="true"||l2.includes("localhost"),H0={apiKey:"",apiId:"",installedClients:{}};async function E0(){let $=await import("fs/promises");try{await $.mkdir(f,{recursive:!0}),await $.mkdir(Y1,{recursive:!0})}catch{}}async function L(){await E0();try{let $=Bun.file(Y0);if(await $.exists()){let S=await $.json();return{...H0,...S}}}catch{}return{...H0}}async function E1($){await E0(),await Bun.write(Y0,JSON.stringify($,null,2))}async function l($){let Y={...await L(),...$};return await E1(Y),Y}async function O0(){return!!(await L()).apiKey}async function m$(){return(await L()).apiKey}async function x0(){return(await L()).apiId}function O1($,S){if(!$.startsWith(f))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function M$($){let S=j$(Y1,$);return O1(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function q0($){let S=M$($.id),Y=j$(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=j$(S,"node_modules",$.package,H);return O1(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function G0($){let S=M$($.id),Y=j$(S,"node_modules",".bin",$.command);return O1(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var x1=new Map;function Q$($){x1.set($.id,$)}function R0(){return Array.from(x1.values())}function y$($){return x1.get($)}var K=C$(G1(),1),F$=C$(M1(),1);import{stdin as N0,stdout as U0}from"process";import*as e from"readline";import w0 from"readline";import{WriteStream as e2}from"tty";function t2({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 $S=t2();function V0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace($S,"")}function A0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var B0={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 Z=R[G],w=S.length(Z);if(q>=O-(w==2?1:0))if(q+w<=x)H+=Z;else break;q+=w}return H}})(B0);var SS=B0.exports,HS=A0(SS),YS=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},ES=A0(YS);function I$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=V0($),$.length===0))return 0;$=$.replace(ES()," ");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(HS.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var Q1=10,z0=($=0)=>(S)=>`\x1B[${S+$}m`,v0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,J0=($=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 OS=Object.keys(I.color),xS=Object.keys(I.bgColor);[...OS,...xS];function qS(){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=z0(),I.color.ansi256=v0(),I.color.ansi16m=J0(),I.bgColor.ansi=z0(Q1),I.bgColor.ansi256=v0(Q1),I.bgColor.ansi16m=J0(Q1),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 GS=qS(),k$=new Set(["\x1B","\x9B"]),RS=39,w1="\x07",K0="[",MS="]",h0="m",z1=`${MS}8;;`,T0=($)=>`${k$.values().next().value}${K0}${$}${h0}`,W0=($)=>`${k$.values().next().value}${z1}${$}${w1}`,QS=($)=>$.split(" ").map((S)=>I$(S)),Z1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=I$(V0($[$.length-1]));for(let[q,R]of E.entries()){let G=I$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),k$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(z1)),O){x?R===w1&&(O=!1,x=!1):R===h0&&(O=!1);continue}H+=G,H===Y&&q<E.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},ZS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(I$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},wS=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=QS($),q=[""];for(let[G,Z]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let w=I$(q[q.length-1]);if(G!==0&&(w>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),w=0),(w>0||Y.trim===!1)&&(q[q.length-1]+=" ",w++)),Y.hard&&H[G]>S){let v=S-w,U=1+Math.floor((H[G]-v-1)/S);Math.floor((H[G]-1)/S)<U&&q.push(""),Z1(q,Z,S);continue}if(w+H[G]>S&&w>0&&H[G]>0){if(Y.wordWrap===!1&&w<S){Z1(q,Z,S);continue}q.push("")}if(w+H[G]>S&&Y.wordWrap===!1){Z1(q,Z,S);continue}q[q.length-1]+=Z}Y.trim!==!1&&(q=q.map((G)=>ZS(G)));let R=[...q.join(`
|
|
6
|
-
`)];for(let[G,Z]of R.entries()){if(E+=Z,k$.has(Z)){let{groups:
|
|
7
|
-
`?(x&&(E+=
|
|
8
|
-
`&&(O&&w&&(E+=
|
|
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 gS}from"os";import{join as dS}from"path";import{join as j$}from"path";import{homedir as r2}from"os";import{join as M$}from"path";var f=M$(r2(),".tako"),x0=M$(f,"config.json"),x1=M$(f,"tools"),g=M$(f,"cli"),e=M$(f,"bun"),j=M$(e,"bin",process.platform==="win32"?"bun.exe":"bun"),n2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",o=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",B3=process.env.TAKO_DEV==="true"||n2.includes("localhost"),O0={apiKey:"",apiId:"",installedClients:{}};async function q0(){let $=await import("fs/promises");try{await $.mkdir(f,{recursive:!0}),await $.mkdir(x1,{recursive:!0})}catch{}}async function b(){await q0();try{let $=Bun.file(x0);if(await $.exists()){let S=await $.json();return{...O0,...S}}}catch{}return{...O0}}async function q1($){await q0(),await Bun.write(x0,JSON.stringify($,null,2))}async function l($){let Y={...await b(),...$};return await q1(Y),Y}async function G0(){return!!(await b()).apiKey}async function m$(){return(await b()).apiKey}async function R0(){return(await b()).apiId}function G1($,S){if(!$.startsWith(f))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function Q$($){let S=j$(x1,$);return G1(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function M0($){let S=Q$($.id),Y=j$(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=j$(S,"node_modules",$.package,H);return G1(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function Q0($){let S=Q$($.id),Y=j$(S,"node_modules",".bin",$.command);return G1(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var R1=new Map;function Z$($){R1.set($.id,$)}function Z0(){return Array.from(R1.values())}function y$($){return R1.get($)}var K=C$(Q1(),1),P$=C$(w1(),1);import{stdin as A0,stdout as B0}from"process";import*as t from"readline";import T0 from"readline";import{WriteStream as HS}from"tty";function YS({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 ES=YS();function K0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(ES,"")}function h0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var C0={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 Z=R[G],w=S.length(Z);if(q>=O-(w==2?1:0))if(q+w<=x)H+=Z;else break;q+=w}return H}})(C0);var OS=C0.exports,xS=h0(OS),qS=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},GS=h0(qS);function L$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=K0($),$.length===0))return 0;$=$.replace(GS()," ");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(xS.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var v1=10,W0=($=0)=>(S)=>`\x1B[${S+$}m`,X0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,I0=($=0)=>(S,Y,E)=>`\x1B[${38+$};2;${S};${Y};${E}m`,L={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(L.modifier);var RS=Object.keys(L.color),MS=Object.keys(L.bgColor);[...RS,...MS];function QS(){let $=new Map;for(let[S,Y]of Object.entries(L)){for(let[E,O]of Object.entries(Y))L[E]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},Y[E]=L[E],$.set(O[0],O[1]);Object.defineProperty(L,S,{value:Y,enumerable:!1})}return Object.defineProperty(L,"codes",{value:$,enumerable:!1}),L.color.close="\x1B[39m",L.bgColor.close="\x1B[49m",L.color.ansi=W0(),L.color.ansi256=X0(),L.color.ansi16m=I0(),L.bgColor.ansi=W0(v1),L.bgColor.ansi256=X0(v1),L.bgColor.ansi16m=I0(v1),Object.defineProperties(L,{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)=>L.rgbToAnsi256(...L.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)=>L.ansi256ToAnsi(L.rgbToAnsi256(S,Y,E)),enumerable:!1},hexToAnsi:{value:(S)=>L.ansi256ToAnsi(L.hexToAnsi256(S)),enumerable:!1}}),L}var ZS=QS(),k$=new Set(["\x1B","\x9B"]),wS=39,T1="\x07",m0="[",vS="]",j0="m",W1=`${vS}8;;`,L0=($)=>`${k$.values().next().value}${m0}${$}${j0}`,b0=($)=>`${k$.values().next().value}${W1}${$}${T1}`,JS=($)=>$.split(" ").map((S)=>L$(S)),J1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=L$(K0($[$.length-1]));for(let[q,R]of E.entries()){let G=L$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),k$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(W1)),O){x?R===T1&&(O=!1,x=!1):R===j0&&(O=!1);continue}H+=G,H===Y&&q<E.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},TS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(L$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},WS=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=JS($),q=[""];for(let[G,Z]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let w=L$(q[q.length-1]);if(G!==0&&(w>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),w=0),(w>0||Y.trim===!1)&&(q[q.length-1]+=" ",w++)),Y.hard&&H[G]>S){let J=S-w,U=1+Math.floor((H[G]-J-1)/S);Math.floor((H[G]-1)/S)<U&&q.push(""),J1(q,Z,S);continue}if(w+H[G]>S&&w>0&&H[G]>0){if(Y.wordWrap===!1&&w<S){J1(q,Z,S);continue}q.push("")}if(w+H[G]>S&&Y.wordWrap===!1){J1(q,Z,S);continue}q[q.length-1]+=Z}Y.trim!==!1&&(q=q.map((G)=>TS(G)));let R=[...q.join(`
|
|
6
|
+
`)];for(let[G,Z]of R.entries()){if(E+=Z,k$.has(Z)){let{groups:J}=new RegExp(`(?:\\${m0}(?<code>\\d+)m|\\${W1}(?<uri>.*)${T1})`).exec(R.slice(G).join(""))||{groups:{}};if(J.code!==void 0){let U=Number.parseFloat(J.code);O=U===wS?void 0:U}else J.uri!==void 0&&(x=J.uri.length===0?void 0:J.uri)}let w=ZS.codes.get(Number(O));R[G+1]===`
|
|
7
|
+
`?(x&&(E+=b0("")),O&&w&&(E+=L0(w))):Z===`
|
|
8
|
+
`&&(O&&w&&(E+=L0(O)),x&&(E+=b0(x)))}return E};function z0($,S,Y){return String($).normalize().replace(/\r\n/g,`
|
|
9
9
|
`).split(`
|
|
10
|
-
`).map((E)=>
|
|
11
|
-
`)}var
|
|
10
|
+
`).map((E)=>WS(E,S,Y)).join(`
|
|
11
|
+
`)}var XS=Object.defineProperty,IS=($,S,Y)=>(S in $)?XS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,F=($,S,Y)=>(IS($,typeof S!="symbol"?S+"":S,Y),Y);function LS($,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
|
|
14
|
-
`),
|
|
15
|
-
`).length-1;this.output.write(K.cursor.move(-999,$*-1))}render(){let $=
|
|
13
|
+
`),O=[];for(let x=0;x<Math.max(Y.length,E.length);x++)Y[x]!==E[x]&&O.push(x);return O}var y0=Symbol("clack:cancel");function A($){return $===y0}function F$($,S){$.isTTY&&$.setRawMode(S)}var N0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),bS=new Set(["up","down","left","right","space","enter"]);class b${constructor({render:$,input:S=A0,output:Y=B0,...E},O=!0){F(this,"input"),F(this,"output"),F(this,"rl"),F(this,"opts"),F(this,"_track",!1),F(this,"_render"),F(this,"_cursor",0),F(this,"state","initial"),F(this,"value"),F(this,"error",""),F(this,"subscribers",new Map),F(this,"_prevFrame",""),this.opts=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 HS(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=T0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),T0.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),F$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,Y)=>{this.once("submit",()=>{this.output.write(K.cursor.show),this.output.off("resize",this.render),F$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(K.cursor.show),this.output.off("resize",this.render),F$(this.input,!1),S(y0)})})}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&&N0.has(S.name)&&this.emit("cursor",N0.get(S.name)),S?.name&&bS.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
|
+
`),F$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=z0(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
15
|
+
`).length-1;this.output.write(K.cursor.move(-999,$*-1))}render(){let $=z0(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(K.cursor.hide);else{let S=LS(this._prevFrame,$);if(this.restoreCursor(),S&&S?.length===1){let Y=S[0];this.output.write(K.cursor.move(0,Y)),this.output.write(K.erase.lines(1));let E=$.split(`
|
|
16
16
|
`);this.output.write(E[Y]),this._prevFrame=$,this.output.write(K.cursor.move(0,E.length-Y-1));return}else if(S&&S?.length>1){let Y=S[0];this.output.write(K.cursor.move(0,Y)),this.output.write(K.erase.down());let E=$.split(`
|
|
17
17
|
`).slice(Y);this.output.write(E.join(`
|
|
18
|
-
`)),this._prevFrame=$;return}this.output.write(K.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class
|
|
18
|
+
`)),this._prevFrame=$;return}this.output.write(K.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class X1 extends b${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(K.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var zS=Object.defineProperty,NS=($,S,Y)=>(S in $)?zS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,U0=($,S,Y)=>(NS($,typeof S!="symbol"?S+"":S,Y),Y),_0=class extends b${constructor($){super($,!1),U0(this,"options"),U0(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 US=Object.defineProperty,VS=($,S,Y)=>(S in $)?US($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,V0=($,S,Y)=>(VS($,typeof S!="symbol"?S+"":S,Y),Y),f0=class extends b${constructor($){super($,!1),V0(this,"options"),V0(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 AS=Object.defineProperty,BS=($,S,Y)=>(S in $)?AS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,KS=($,S,Y)=>(BS($,typeof S!="symbol"?S+"":S,Y),Y);class I1 extends b${constructor($){super($),KS(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}${P$.default.inverse(P$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),Y=this.value.slice(this.cursor);this.valueWithCursor=`${S}${P$.default.inverse(Y[0])}${Y.slice(1)}`}})}get cursor(){return this._cursor}}var hS=globalThis.process.platform.startsWith("win");function F0({input:$=A0,output:S=B0,overwrite:Y=!0,hideCursor:E=!0}={}){let O=t.createInterface({input:$,output:S,prompt:"",tabSize:1});t.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let x=(H,{name:q})=>{if(String(H)==="\x03"){E&&S.write(K.cursor.show),process.exit(0);return}if(!Y)return;t.moveCursor(S,q==="return"?0:-1,q==="return"?-1:0,()=>{t.clearLine(S,1,()=>{$.once("keypress",x)})})};return E&&S.write(K.cursor.hide),$.once("keypress",x),()=>{$.off("keypress",x),E&&S.write(K.cursor.show),$.isTTY&&!hS&&$.setRawMode(!1),O.terminal=!1,O.close()}}var M=C$(w1(),1),w$=C$(Q1(),1);import k from"process";function CS(){return k.platform!=="win32"?k.env.TERM!=="linux":Boolean(k.env.CI)||Boolean(k.env.WT_SESSION)||Boolean(k.env.TERMINUS_SUBLIME)||k.env.ConEmuTask==="{cmd::Cmder}"||k.env.TERM_PROGRAM==="Terminus-Sublime"||k.env.TERM_PROGRAM==="vscode"||k.env.TERM==="xterm-256color"||k.env.TERM==="alacritty"||k.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var L1=CS(),V=($,S)=>L1?$:S,mS=V("\u25C6","*"),k0=V("\u25A0","x"),u0=V("\u25B2","x"),N1=V("\u25C7","o"),l3=V("\u250C","T"),W=V("\u2502","|"),Y$=V("\u2514","\u2014"),b1=V("\u25CF",">"),z1=V("\u25CB"," "),jS=V("\u25FB","[\u2022]"),P0=V("\u25FC","[+]"),yS=V("\u25FB","[ ]"),a3=V("\u25AA","\u2022"),i3=V("\u2500","-"),r3=V("\u256E","+"),n3=V("\u251C","+"),s3=V("\u256F","+"),_S=V("\u25CF","\u2022"),fS=V("\u25C6","*"),FS=V("\u25B2","!"),PS=V("\u25A0","x"),u$=($)=>{switch($){case"initial":case"active":return M.default.cyan(mS);case"cancel":return M.default.red(k0);case"error":return M.default.yellow(u0);case"submit":return M.default.green(N1)}},g0=($)=>new I1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${M.default.gray(W)}
|
|
19
19
|
${u$(this.state)} ${$.message}
|
|
20
20
|
`,Y=$.placeholder?M.default.inverse($.placeholder[0])+M.default.dim($.placeholder.slice(1)):M.default.inverse(M.default.hidden("_")),E=this.value?this.valueWithCursor:Y;switch(this.state){case"error":return`${S.trim()}
|
|
21
|
-
${M.default.yellow(
|
|
22
|
-
${M.default.yellow(
|
|
23
|
-
`;case"submit":return`${S}${M.default.gray(
|
|
24
|
-
`+M.default.gray(
|
|
25
|
-
${M.default.cyan(
|
|
26
|
-
`}}}).prompt();var
|
|
21
|
+
${M.default.yellow(W)} ${E}
|
|
22
|
+
${M.default.yellow(Y$)} ${M.default.yellow(this.error)}
|
|
23
|
+
`;case"submit":return`${S}${M.default.gray(W)} ${M.default.dim(this.value||$.placeholder)}`;case"cancel":return`${S}${M.default.gray(W)} ${M.default.strikethrough(M.default.dim(this.value??""))}${this.value?.trim()?`
|
|
24
|
+
`+M.default.gray(W):""}`;default:return`${S}${M.default.cyan(W)} ${E}
|
|
25
|
+
${M.default.cyan(Y$)}
|
|
26
|
+
`}}}).prompt();var $$=($)=>{let S=$.active??"Yes",Y=$.inactive??"No";return new X1({active:S,inactive:Y,initialValue:$.initialValue??!0,render(){let E=`${M.default.gray(W)}
|
|
27
27
|
${u$(this.state)} ${$.message}
|
|
28
|
-
`,O=this.value?S:Y;switch(this.state){case"submit":return`${E}${M.default.gray(
|
|
29
|
-
${M.default.gray(
|
|
30
|
-
${M.default.cyan(
|
|
31
|
-
`}}}).prompt()},
|
|
28
|
+
`,O=this.value?S:Y;switch(this.state){case"submit":return`${E}${M.default.gray(W)} ${M.default.dim(O)}`;case"cancel":return`${E}${M.default.gray(W)} ${M.default.strikethrough(M.default.dim(O))}
|
|
29
|
+
${M.default.gray(W)}`;default:return`${E}${M.default.cyan(W)} ${this.value?`${M.default.green(b1)} ${S}`:`${M.default.dim(z1)} ${M.default.dim(S)}`} ${M.default.dim("/")} ${this.value?`${M.default.dim(z1)} ${M.default.dim(Y)}`:`${M.default.green(b1)} ${Y}`}
|
|
30
|
+
${M.default.cyan(Y$)}
|
|
31
|
+
`}}}).prompt()},E$=($)=>{let S=(E,O)=>{let x=E.label??String(E.value);return O==="active"?`${M.default.green(b1)} ${x} ${E.hint?M.default.dim(`(${E.hint})`):""}`:O==="selected"?`${M.default.dim(x)}`:O==="cancelled"?`${M.default.strikethrough(M.default.dim(x))}`:`${M.default.dim(z1)} ${M.default.dim(x)}`},Y=0;return new f0({options:$.options,initialValue:$.initialValue,render(){let E=`${M.default.gray(W)}
|
|
32
32
|
${u$(this.state)} ${$.message}
|
|
33
|
-
`;switch(this.state){case"submit":return`${E}${M.default.gray(
|
|
34
|
-
${M.default.gray(
|
|
35
|
-
${M.default.cyan(
|
|
36
|
-
${M.default.cyan(
|
|
37
|
-
`}}}}).prompt()};var
|
|
38
|
-
${M.default.reset(M.default.dim(`Press ${M.default.gray(M.default.bgWhite(M.default.inverse(" space ")))} to select, ${M.default.gray(M.default.bgWhite(M.default.inverse(" enter ")))} to submit`))}`},render(){let Y=`${M.default.gray(
|
|
33
|
+
`;switch(this.state){case"submit":return`${E}${M.default.gray(W)} ${S(this.options[this.cursor],"selected")}`;case"cancel":return`${E}${M.default.gray(W)} ${S(this.options[this.cursor],"cancelled")}
|
|
34
|
+
${M.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}${M.default.cyan(W)} ${this.options.slice(Y,Y+O).map((q,R,G)=>R===0&&x?M.default.dim("..."):R===G.length-1&&H?M.default.dim("..."):S(q,R+Y===this.cursor?"active":"inactive")).join(`
|
|
35
|
+
${M.default.cyan(W)} `)}
|
|
36
|
+
${M.default.cyan(Y$)}
|
|
37
|
+
`}}}}).prompt()};var d0=($)=>{let S=(Y,E)=>{let O=Y.label??String(Y.value);return E==="active"?`${M.default.cyan(jS)} ${O} ${Y.hint?M.default.dim(`(${Y.hint})`):""}`:E==="selected"?`${M.default.green(P0)} ${M.default.dim(O)}`:E==="cancelled"?`${M.default.strikethrough(M.default.dim(O))}`:E==="active-selected"?`${M.default.green(P0)} ${O} ${Y.hint?M.default.dim(`(${Y.hint})`):""}`:E==="submitted"?`${M.default.dim(O)}`:`${M.default.dim(yS)} ${M.default.dim(O)}`};return new _0({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
|
+
${M.default.reset(M.default.dim(`Press ${M.default.gray(M.default.bgWhite(M.default.inverse(" space ")))} to select, ${M.default.gray(M.default.bgWhite(M.default.inverse(" enter ")))} to submit`))}`},render(){let Y=`${M.default.gray(W)}
|
|
39
39
|
${u$(this.state)} ${$.message}
|
|
40
|
-
`;switch(this.state){case"submit":return`${Y}${M.default.gray(
|
|
41
|
-
${M.default.gray(
|
|
42
|
-
`).map((O,x)=>x===0?`${M.default.yellow(
|
|
43
|
-
`);return Y+M.default.yellow(
|
|
44
|
-
${M.default.yellow(
|
|
40
|
+
`;switch(this.state){case"submit":return`${Y}${M.default.gray(W)} ${this.options.filter(({value:E})=>this.value.includes(E)).map((E)=>S(E,"submitted")).join(M.default.dim(", "))||M.default.dim("none")}`;case"cancel":{let E=this.options.filter(({value:O})=>this.value.includes(O)).map((O)=>S(O,"cancelled")).join(M.default.dim(", "));return`${Y}${M.default.gray(W)} ${E.trim()?`${E}
|
|
41
|
+
${M.default.gray(W)}`:""}`}case"error":{let E=this.error.split(`
|
|
42
|
+
`).map((O,x)=>x===0?`${M.default.yellow(Y$)} ${M.default.yellow(O)}`:` ${O}`).join(`
|
|
43
|
+
`);return Y+M.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
|
+
${M.default.yellow(W)} `)+`
|
|
45
45
|
`+E+`
|
|
46
|
-
`}default:return`${Y}${M.default.cyan(
|
|
47
|
-
${M.default.cyan(
|
|
48
|
-
${M.default.cyan(
|
|
49
|
-
`}}}).prompt()};var
|
|
50
|
-
${M.default.gray(
|
|
46
|
+
`}default:return`${Y}${M.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
|
+
${M.default.cyan(W)} `)}
|
|
48
|
+
${M.default.cyan(Y$)}
|
|
49
|
+
`}}}).prompt()};var U1=($="")=>{process.stdout.write(`${M.default.gray(W)}
|
|
50
|
+
${M.default.gray(Y$)} ${$}
|
|
51
51
|
|
|
52
|
-
`)},
|
|
53
|
-
`);Y.push(`${S} ${E}`,...O.map((x)=>`${M.default.gray(
|
|
52
|
+
`)},v={message:($="",{symbol:S=M.default.gray(W)}={})=>{let Y=[`${M.default.gray(W)}`];if($){let[E,...O]=$.split(`
|
|
53
|
+
`);Y.push(`${S} ${E}`,...O.map((x)=>`${M.default.gray(W)} ${x}`))}process.stdout.write(`${Y.join(`
|
|
54
54
|
`)}
|
|
55
|
-
`)},info:($)=>{
|
|
56
|
-
`);let w=0,
|
|
57
|
-
`),Y()},R=(Z="")=>{x=Z??x},G=(Z)=>{let w=Z>1?"Something went wrong":"Canceled";O&&q(w,Z)};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}};
|
|
58
|
-
`),
|
|
55
|
+
`)},info:($)=>{v.message($,{symbol:M.default.blue(_S)})},success:($)=>{v.message($,{symbol:M.default.green(fS)})},step:($)=>{v.message($,{symbol:M.default.green(N1)})},warn:($)=>{v.message($,{symbol:M.default.yellow(FS)})},warning:($)=>{v.warn($)},error:($)=>{v.message($,{symbol:M.default.red(PS)})}},d=()=>{let $=L1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=L1?80:120,Y,E,O=!1,x="",H=(Z="")=>{O=!0,Y=F0(),x=Z.replace(/\.+$/,""),process.stdout.write(`${M.default.gray(W)}
|
|
56
|
+
`);let w=0,J=0;E=setInterval(()=>{let U=M.default.magenta($[w]),C=".".repeat(Math.floor(J)).slice(0,3);process.stdout.write(w$.cursor.move(-999,0)),process.stdout.write(w$.erase.down(1)),process.stdout.write(`${U} ${x}${C}`),w=w+1<$.length?w+1:0,J=J<$.length?J+0.125:0},S)},q=(Z="",w=0)=>{x=Z??x,O=!1,clearInterval(E);let J=w===0?M.default.green(N1):w===1?M.default.red(k0):M.default.red(u0);process.stdout.write(w$.cursor.move(-999,0)),process.stdout.write(w$.erase.down(1)),process.stdout.write(`${J} ${x}
|
|
57
|
+
`),Y()},R=(Z="")=>{x=Z??x},G=(Z)=>{let w=Z>1?"Something went wrong":"Canceled";O&&q(w,Z)};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}};m();var D0=dS(gS(),".claude","settings.json"),cS=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function DS($){if($.startsWith("ANTHROPIC_"))return!0;return cS.includes($)}async function pS(){let $=await import("fs/promises"),S;try{S=await $.readFile(D0,"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(DS(x))E.push(x),delete Y.env[x];if(Object.keys(Y.env).length===0)delete Y.env}if(E.length===0)return;v.warn(Q("claudeCode.settingsDetected",{fields:E.join(", ")}));let O=await $$({message:Q("claudeCode.confirmClean"),initialValue:!0});if(A(O)||!O){v.info(Q("claudeCode.cleanSkipped"));return}await $.writeFile(D0,JSON.stringify(Y,null,2)+`
|
|
58
|
+
`),v.success(Q("claudeCode.settingsCleaned"))}var oS={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${o}/api`,ANTHROPIC_AUTH_TOKEN:$,CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"}},async setupConfigFiles(){await pS()},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"]}]};Z$(oS);import{homedir as xH}from"os";import{join as j1}from"path";/*!
|
|
59
59
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
60
60
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
61
61
|
*
|
|
@@ -81,9 +81,9 @@ ${M.default.gray(H$)} ${$}
|
|
|
81
81
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
82
82
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
83
83
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
84
|
-
*/function
|
|
84
|
+
*/function lS($,S){let Y=$.slice(0,S).split(/\r\n|\n|\r/g);return[Y.length,Y.pop().length+1]}function aS($,S,Y){let E=$.split(/\r\n|\n|\r/g),O="",x=(Math.log10(S+1)|0)+1;for(let H=S-1;H<=S+1;H++){let q=E[H-1];if(!q)continue;if(O+=H.toString().padEnd(x," "),O+=": ",O+=q,O+=`
|
|
85
85
|
`,H===S)O+=" ".repeat(x+Y+2),O+=`^
|
|
86
|
-
`}return O}class
|
|
86
|
+
`}return O}class T extends Error{line;column;codeblock;constructor($,S){let[Y,E]=lS(S.toml,S.ptr),O=aS(S.toml,Y,E);super(`Invalid TOML document: ${$}
|
|
87
87
|
|
|
88
88
|
${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
89
89
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
@@ -111,14 +111,14 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
111
111
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
112
112
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
113
113
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
114
|
-
*/function
|
|
115
|
-
`,S);if($[E-1]==="\r")E--;return E<=Y?E:-1}function
|
|
114
|
+
*/function iS($,S){let Y=0;while($[S-++Y]==="\\");return--Y&&Y%2}function d$($,S=0,Y=$.length){let E=$.indexOf(`
|
|
115
|
+
`,S);if($[E-1]==="\r")E--;return E<=Y?E:-1}function J$($,S){for(let Y=S;Y<$.length;Y++){let E=$[Y];if(E===`
|
|
116
116
|
`)return Y;if(E==="\r"&&$[Y+1]===`
|
|
117
|
-
`)return Y+1;if(E<" "&&E!=="\t"||E==="\x7F")throw new
|
|
117
|
+
`)return Y+1;if(E<" "&&E!=="\t"||E==="\x7F")throw new T("control characters are not allowed in comments",{toml:$,ptr:S})}return $.length}function y($,S,Y,E){let O;while(!0){while((O=$[S])===" "||O==="\t"||!Y&&(O===`
|
|
118
118
|
`||O==="\r"&&$[S+1]===`
|
|
119
|
-
`))S++;if(E||O!=="#")break;S=
|
|
119
|
+
`))S++;if(E||O!=="#")break;S=J$($,S)}return S}function p0($,S,Y,E,O=!1){if(!E)return S=d$($,S),S<0?$.length:S;for(let x=S;x<$.length;x++){let H=$[x];if(H==="#")x=d$($,x);else if(H===Y)return x+1;else if(H===E||O&&(H===`
|
|
120
120
|
`||H==="\r"&&$[x+1]===`
|
|
121
|
-
`))return x}throw new
|
|
121
|
+
`))return x}throw new T("cannot find end of structure",{toml:$,ptr:S})}function c$($,S){let Y=$[S],E=Y===$[S+1]&&$[S+1]===$[S+2]?$.slice(S,S+3):Y;S+=E.length-1;do S=$.indexOf(E,++S);while(S>-1&&Y!=="'"&&iS($,S));if(S>-1){if(S+=E.length,E.length>1){if($[S]===Y)S++;if($[S]===Y)S++}}return S}/*!
|
|
122
122
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
123
123
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
124
124
|
*
|
|
@@ -144,7 +144,7 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
144
144
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
145
145
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
146
146
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
147
|
-
*/var
|
|
147
|
+
*/var rS=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class H$ extends Date{#S=!1;#H=!1;#$=null;constructor($){let S=!0,Y=!0,E="Z";if(typeof $==="string"){let O=$.match(rS);if(O){if(!O[1])S=!1,$=`0000-01-01T${$}`;if(Y=!!O[2],Y&&$[10]===" "&&($=$.replace(" ","T")),O[2]&&+O[2]>23)$="";else if(E=O[3]||null,$=$.toUpperCase(),!E&&Y)$+="Z"}else $=""}super($);if(!isNaN(this.getTime()))this.#S=S,this.#H=Y,this.#$=E}isDateTime(){return this.#S&&this.#H}isLocal(){return!this.#S||!this.#H||!this.#$}isDate(){return this.#S&&!this.#H}isTime(){return this.#H&&!this.#S}isValid(){return this.#S||this.#H}toISOString(){let $=super.toISOString();if(this.isDate())return $.slice(0,10);if(this.isTime())return $.slice(11,23);if(this.#$===null)return $.slice(0,-1);if(this.#$==="Z")return $;let S=+this.#$.slice(1,3)*60+ +this.#$.slice(4,6);return S=this.#$[0]==="-"?S:-S,new Date(this.getTime()-S*60000).toISOString().slice(0,-1)+this.#$}static wrapAsOffsetDateTime($,S="Z"){let Y=new H$($);return Y.#$=S,Y}static wrapAsLocalDateTime($){let S=new H$($);return S.#$=null,S}static wrapAsLocalDate($){let S=new H$($);return S.#H=!1,S.#$=null,S}static wrapAsLocalTime($){let S=new H$($);return S.#S=!1,S.#$=null,S}}/*!
|
|
148
148
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
149
149
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
150
150
|
*
|
|
@@ -170,13 +170,13 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
170
170
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
171
171
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
172
172
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
173
|
-
*/var
|
|
173
|
+
*/var nS=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,sS=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,eS=/^[+-]?0[0-9_]/,tS=/^[0-9a-f]{2,8}$/i,o0={b:"\b",t:"\t",n:`
|
|
174
174
|
`,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function D$($,S=0,Y=$.length){let E=$[S]==="'",O=$[S++]===$[S]&&$[S]===$[S+1];if(O){if(Y-=2,$[S+=2]==="\r")S++;if($[S]===`
|
|
175
175
|
`)S++}let x=0,H,q="",R=S;while(S<Y-1){let G=$[S++];if(G===`
|
|
176
176
|
`||G==="\r"&&$[S]===`
|
|
177
|
-
`){if(!O)throw new
|
|
177
|
+
`){if(!O)throw new T("newlines are not allowed in strings",{toml:$,ptr:S-1})}else if(G<" "&&G!=="\t"||G==="\x7F")throw new T("control characters are not allowed in strings",{toml:$,ptr:S-1});if(H){if(H=!1,G==="x"||G==="u"||G==="U"){let Z=$.slice(S,S+=G==="x"?2:G==="u"?4:8);if(!tS.test(Z))throw new T("invalid unicode escape",{toml:$,ptr:x});try{q+=String.fromCodePoint(parseInt(Z,16))}catch{throw new T("invalid unicode escape",{toml:$,ptr:x})}}else if(O&&(G===`
|
|
178
178
|
`||G===" "||G==="\t"||G==="\r")){if(S=y($,S-1,!0),$[S]!==`
|
|
179
|
-
`&&$[S]!=="\r")throw new
|
|
179
|
+
`&&$[S]!=="\r")throw new T("invalid escape: only line-ending whitespace may be escaped",{toml:$,ptr:x});S=y($,S)}else if(G in o0)q+=o0[G];else throw new T("unrecognized escape sequence",{toml:$,ptr:x});R=S}else if(!E&&G==="\\")x=S-1,H=!0,q+=$.slice(R,x)}return q+$.slice(R,Y-1)}function l0($,S,Y,E){if($==="true")return!0;if($==="false")return!1;if($==="-inf")return-1/0;if($==="inf"||$==="+inf")return 1/0;if($==="nan"||$==="+nan"||$==="-nan")return NaN;if($==="-0")return E?0n:0;let O=nS.test($);if(O||sS.test($)){if(eS.test($))throw new T("leading zeroes are not allowed",{toml:S,ptr:Y});$=$.replace(/_/g,"");let H=+$;if(isNaN(H))throw new T("invalid number",{toml:S,ptr:Y});if(O){if((O=!Number.isSafeInteger(H))&&!E)throw new T("integer value cannot be represented losslessly",{toml:S,ptr:Y});if(O||E===!0)H=BigInt($)}return H}let x=new H$($);if(!x.isValid())throw new T("invalid value",{toml:S,ptr:Y});return x}/*!
|
|
180
180
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
181
181
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
182
182
|
*
|
|
@@ -202,8 +202,8 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
202
202
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
203
203
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
204
204
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
205
|
-
*/function
|
|
206
|
-
`&&$[H]!=="\r")throw new
|
|
205
|
+
*/function $H($,S,Y){let E=$.slice(S,Y),O=E.indexOf("#");if(O>-1)J$($,O),E=E.slice(0,O);return[E.trimEnd(),O]}function z$($,S,Y,E,O){if(E===0)throw new T("document contains excessively nested structures. aborting.",{toml:$,ptr:S});let x=$[S];if(x==="["||x==="{"){let[R,G]=x==="["?i0($,S,E,O):a0($,S,E,O);if(Y){if(G=y($,G),$[G]===",")G++;else if($[G]!==Y)throw new T("expected comma or end of structure",{toml:$,ptr:G})}return[R,G]}let H;if(x==='"'||x==="'"){H=c$($,S);let R=D$($,S,H);if(Y){if(H=y($,H),$[H]&&$[H]!==","&&$[H]!==Y&&$[H]!==`
|
|
206
|
+
`&&$[H]!=="\r")throw new T("unexpected character encountered",{toml:$,ptr:H});H+=+($[H]===",")}return[R,H]}H=p0($,S,",",Y);let q=$H($,S,H-+($[H-1]===","));if(!q[0])throw new T("incomplete key-value declaration: no value specified",{toml:$,ptr:S});if(Y&&q[1]>-1)H=y($,S+q[1]),H+=+($[H]===",");return[l0(q[0],$,S,O),H]}/*!
|
|
207
207
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
208
208
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
209
209
|
*
|
|
@@ -229,9 +229,9 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
229
229
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
230
230
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
231
231
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
232
|
-
*/var
|
|
233
|
-
`&&H!=="\r"){let q,R=O,G=!1,[Z,w]=p$($,S-1);for(let
|
|
234
|
-
`&&x!=="\r"){let H=
|
|
232
|
+
*/var SH=/^[a-zA-Z0-9-_]+[ \t]*$/;function p$($,S,Y="="){let E=S-1,O=[],x=$.indexOf(Y,S);if(x<0)throw new T("incomplete key-value: cannot find end of key",{toml:$,ptr:S});do{let H=$[S=++E];if(H!==" "&&H!=="\t")if(H==='"'||H==="'"){if(H===$[S+1]&&H===$[S+2])throw new T("multiline strings are not allowed in keys",{toml:$,ptr:S});let q=c$($,S);if(q<0)throw new T("unfinished string encountered",{toml:$,ptr:S});E=$.indexOf(".",q);let R=$.slice(q,E<0||E>x?x:E),G=d$(R);if(G>-1)throw new T("newlines are not allowed in keys",{toml:$,ptr:S+E+G});if(R.trimStart())throw new T("found extra tokens after the string part",{toml:$,ptr:q});if(x<q){if(x=$.indexOf(Y,q),x<0)throw new T("incomplete key-value: cannot find end of key",{toml:$,ptr:S})}O.push(D$($,S,q))}else{E=$.indexOf(".",S);let q=$.slice(S,E<0||E>x?x:E);if(!SH.test(q))throw new T("only letter, numbers, dashes and underscores are allowed in keys",{toml:$,ptr:S});O.push(q.trimEnd())}}while(E+1&&E<x);return[O,y($,x+1,!0,!0)]}function a0($,S,Y,E){let O={},x=new Set,H;S++;while((H=$[S++])!=="}"&&H)if(H===",")throw new T("expected value, found comma",{toml:$,ptr:S-1});else if(H==="#")S=J$($,S);else if(H!==" "&&H!=="\t"&&H!==`
|
|
233
|
+
`&&H!=="\r"){let q,R=O,G=!1,[Z,w]=p$($,S-1);for(let C=0;C<Z.length;C++){if(C)R=G?R[q]:R[q]={};if(q=Z[C],(G=Object.hasOwn(R,q))&&(typeof R[q]!=="object"||x.has(R[q])))throw new T("trying to redefine an already defined value",{toml:$,ptr:S});if(!G&&q==="__proto__")Object.defineProperty(R,q,{enumerable:!0,configurable:!0,writable:!0})}if(G)throw new T("trying to redefine an already defined value",{toml:$,ptr:S});let[J,U]=z$($,w,"}",Y-1,E);x.add(J),R[q]=J,S=U}if(!H)throw new T("unfinished table encountered",{toml:$,ptr:S});return[O,S]}function i0($,S,Y,E){let O=[],x;S++;while((x=$[S++])!=="]"&&x)if(x===",")throw new T("expected value, found comma",{toml:$,ptr:S-1});else if(x==="#")S=J$($,S);else if(x!==" "&&x!=="\t"&&x!==`
|
|
234
|
+
`&&x!=="\r"){let H=z$($,S-1,"]",Y-1,E);O.push(H[0]),S=H[1]}if(!x)throw new T("unfinished array encountered",{toml:$,ptr:S});return[O,S]}/*!
|
|
235
235
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
236
236
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
237
237
|
*
|
|
@@ -257,8 +257,8 @@ ${O}`,S);this.line=Y,this.column=E,this.codeblock=O}}/*!
|
|
|
257
257
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
258
258
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
259
259
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
260
|
-
*/function
|
|
261
|
-
`&&$[q]!=="\r")throw new
|
|
260
|
+
*/function r0($,S,Y,E){let O=S,x=Y,H,q=!1,R;for(let G=0;G<$.length;G++){if(G){if(O=q?O[H]:O[H]={},x=(R=x[H]).c,E===0&&(R.t===1||R.t===2))return null;if(R.t===2){let Z=O.length-1;O=O[Z],x=x[Z].c}}if(H=$[G],(q=Object.hasOwn(O,H))&&x[H]?.t===0&&x[H]?.d)return null;if(!q){if(H==="__proto__")Object.defineProperty(O,H,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(x,H,{enumerable:!0,configurable:!0,writable:!0});x[H]={t:G<$.length-1&&E===2?3:E,d:!1,i:0,c:{}}}}if(R=x[H],R.t!==E&&!(E===1&&R.t===3))return null;if(E===2){if(!R.d)R.d=!0,O[H]=[];O[H].push(O={}),R.c[R.i++]=R={t:1,d:!1,i:0,c:{}}}if(R.d)return null;if(R.d=!0,E===1)O=q?O[H]:O[H]={};else if(E===0&&q)return null;return[H,O,R.c]}function A1($,{maxDepth:S=1000,integersAsBigInt:Y}={}){let E={},O={},x=E,H=O;for(let q=y($,0);q<$.length;){if($[q]==="["){let R=$[++q]==="[",G=p$($,q+=+R,"]");if(R){if($[G[1]-1]!=="]")throw new T("expected end of table declaration",{toml:$,ptr:G[1]-1});G[1]++}let Z=r0(G[0],E,O,R?2:1);if(!Z)throw new T("trying to redefine an already defined table or value",{toml:$,ptr:q});H=Z[2],x=Z[1],q=G[1]}else{let R=p$($,q),G=r0(R[0],x,H,0);if(!G)throw new T("trying to redefine an already defined table or value",{toml:$,ptr:q});let Z=z$($,R[1],void 0,S,Y);G[1][G[0]]=Z[0],q=Z[1]}if(q=y($,q,!0),$[q]&&$[q]!==`
|
|
261
|
+
`&&$[q]!=="\r")throw new T("each key-value declaration must be followed by an end-of-line",{toml:$,ptr:q});q=y($,q)}return E}/*!
|
|
262
262
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
263
263
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
264
264
|
*
|
|
@@ -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
|
|
287
|
+
*/var n0=/^[a-z0-9-_]+$/i;function N$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function HH($){for(let S=0;S<$.length;S++)if(N$($[S])!=="object")return!1;return $.length!=0}function B1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function K1($,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 B1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return YH($,Y,E);if(S==="array")return EH($,Y,E)}function YH($,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+=n0.test(H)?H:B1(H),O+=" = ",O+=K1($[H],N$($[H]),S-1,Y)}return O+" }"}function EH($,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+=K1($[O],N$($[O]),S-1,Y)}return E+" ]"}function OH($,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+=
|
|
290
|
-
`)+
|
|
291
|
-
`)+
|
|
289
|
+
`,O+=h1(0,$[x],S,Y,E);return O}function h1($,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 Z=N$(S[G]);if(Z==="symbol"||Z==="function")throw TypeError(`cannot serialize values of type '${Z}'`);let w=n0.test(G)?G:B1(G);if(Z==="array"&&HH(S[G]))H+=(H&&`
|
|
290
|
+
`)+OH(S[G],Y?`${Y}.${w}`:w,E-1,O);else if(Z==="object"){let J=Y?`${Y}.${w}`:w;H+=(H&&`
|
|
291
|
+
`)+h1(J,S[G],J,E-1,O)}else x+=w,x+=" = ",x+=K1(S[G],Z,E,O),x+=`
|
|
292
292
|
`}}if($&&(x||!H))x=x?`[${$}]
|
|
293
293
|
${x}`:`[${$}]`;return x&&H?`${x}
|
|
294
|
-
${H}`:x||H}function
|
|
294
|
+
${H}`:x||H}function C1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(N$($)!=="object")throw TypeError("stringify can only be called with an object");let E=h1(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,18 +319,18 @@ ${H}`:x||H}function B1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(N$($)!=="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
|
|
323
|
-
`;await Bun.write(
|
|
324
|
-
`)}var QH={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:MH};Q$(QH);import{join as m}from"path";C();var o$=null,l$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function v$(){if(o$)return o$;let $=[ZH,wH,zH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return o$=Y,Y}catch{}return o$="cn","cn"}async function ZH(){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 wH(){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 zH(){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 vH(){let $=await v$();return l$[$]}async function a(){return(await vH()).npm}function e0(){return"curl -fsSL https://bun.sh/install | bash"}async function JH(){let $=l$.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 t0(){let $=l$.cn.bunBinary,S=await JH(),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 $2(){let $=await v$(),S=l$[$];if($==="cn")z.info(Q("region.usingChinaMirror")),z.message(` npm: ${S.npm}`);else z.info(Q("region.usingGlobalMirror"))}var TH=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)}},S2=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 TH({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 WH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",XH="sec_3038f0cb74f91312f374",IH="https://op.shiroha.tech/api",J$=null;function m1(){if(!J$)J$=new S2({clientId:WH,clientSecret:XH,apiUrl:IH});return J$}async function H2(){if(J$){try{J$.flush()}catch{}J$=null}}C();C();var LH="0.2.34";function Y2(){return{cli_version:LH,platform:process.platform,arch:process.arch,locale:E$(),node_version:process.version}}function E2($){return Bun.hash($).toString(16).slice(0,8)}var bH="0.2.34",O2=!1,U$=null,j1=[];async function x2(){if(U$!==null)return U$;try{return U$=(await L()).telemetryEnabled!==!1,U$}catch{return U$=!1,!1}}async function NH(){try{return(await L()).apiId||"anonymous"}catch{return"anonymous"}}async function a$(){if(O2)return;try{if(!await x2())return;let $=await L();if(!$.apiId)return;let S=m1(),Y=await v$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:E$(),first_seen_version:bH,platform:process.platform,arch:process.arch}}),O2=!0}catch{}}function b($,S){let Y=UH($,S).catch(()=>{});j1.push(Y)}async function UH($,S){try{if(!await x2())return;let Y=m1(),E=await NH();await Y.track($,{profileId:E,...Y2(),...S})}catch{}}async function V$(){await Promise.allSettled(j1),j1.length=0,await H2()}var O$=null;function VH($){return $.startsWith(s)}async function AH(){try{if(!await Bun.file(j).exists())return null;let S=Bun.spawn([j,"--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 q2(){return await AH()!==null}async function BH(){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 KH($){let S=await import("fs/promises"),{join:Y}=await import("path"),E=process.platform==="win32",O=E?"bun.exe":"bun",x=await t0();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 Z=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,w=Bun.spawn(["powershell","-Command",Z],{stdout:"pipe",stderr:"pipe"});if(await w.exited,w.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let Z=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await Z.exited,Z.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let Z of G){let w=Y($,Z);if((await S.stat(w)).isDirectory()&&Z.startsWith("bun-")){let U=Y(w,O);try{if(await S.access(U),await S.rename(U,Y(R,O)),!E)await S.chmod(Y(R,O),493);await S.rm(w,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function hH(){let $=d();if(!await BH())return z.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await $2(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(s,{recursive:!0}),await v$()==="cn")await KH(s);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${s}"; 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="${s}" ${e0()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return O$=j,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),z.info(`\u5B89\u88C5\u4F4D\u7F6E: ${s}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function CH(){if(await q2())return O$=j,!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 hH()}async function A$(){if(O$){if(!VH(O$))O$=j;return O$}if(await q2())return O$=j,j;return j}async function F1($){try{let S=await a(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function mH($){return(await L()).installedClients[$.id]?.version||null}async function G2($){let S=M$($.id),Y=m(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function R2($){let S=await mH($);if(!S)return!0;let Y=await F1($.package);if(!Y)return!1;return S!==Y}function M2($){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 Q2($,S,Y,E){let O=m(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=M2(q);if(!R)return;let G=m(S,"node_modules",R.pkg);if(await Bun.file(m(G,"package.json")).exists())return;z.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${R.pkg}...`);for(let w of[R.version,"latest"]){let v=Bun.spawn([Y,"add",`${R.pkg}@${w}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}});if(await v.exited,v.exitCode===0)break;if(w==="latest"){let U=await new Response(v.stderr).text();z.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${U.slice(0,200)}`)}}}catch(x){z.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function f1($,S){let Y=await import("fs/promises"),E=m(S,"node_modules",$.package,"package.json");try{let O=Bun.file(E);if(!await O.exists())return!1;let x=await O.json(),H=x.optionalDependencies;if(!H)return!0;let q=M2(H);if(!q)return z.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let R=x.bin,G=typeof R==="string"?R:R?.[$.command];if(!G)return!1;let Z=m(S,"node_modules",$.package,G),w=process.platform==="win32",v=w?`${$.command}.exe`:$.command,U=m(S,"node_modules",q.pkg,v),h=Bun.file(U);if(await h.exists()&&h.size>1024){if(await Bun.write(Z,h),!w)await Y.chmod(Z,493);return!0}let T$=m(S,"node_modules",$.package,"install.cjs");if(await Bun.file(T$).exists()){z.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let t$=await A$(),p=Bun.spawn([t$,T$],{cwd:m(S,"node_modules",$.package),stdout:"pipe",stderr:"pipe"});if(await p.exited,p.exitCode!==0){let h$=await new Response(p.stderr).text();z.warn(`postinstall \u5931\u8D25: ${h$.slice(0,200)}`)}let $1=Bun.file(Z);if(await $1.exists()&&$1.size>1024){if(!w)await Y.chmod(Z,493);return!0}}z.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let n=await a();for(let t$ of[q.version,"latest"])try{let p=await fetch(`${n}/${q.pkg}/${t$}`);if(!p.ok)continue;let h$=(await p.json()).dist?.tarball;if(!h$)continue;let W$=m(f,".tmp-extract-"+Date.now());await(await import("fs/promises")).mkdir(W$,{recursive:!0});let S1=Bun.spawn(["bash","-c",`curl -sL "${h$}" | tar xzf - -C "${W$}" "package/${v}" 2>&1`],{stdout:"pipe",stderr:"pipe"});await S1.exited;let y2=m(W$,"package",v),H1=Bun.file(y2);if(await H1.exists()&&H1.size>1024){if(await Bun.write(Z,H1),!w)await Y.chmod(Z,493);return await(await import("fs/promises")).rm(W$,{recursive:!0,force:!0}).catch(()=>{}),!0}let _2=await new Response(S1.stderr).text();z.warn(`\u4E0B\u8F7D\u63D0\u53D6\u5931\u8D25 (exit=${S1.exitCode}): ${_2.slice(0,200)}`),await(await import("fs/promises")).rm(W$,{recursive:!0,force:!0}).catch(()=>{})}catch(p){z.warn(`\u4E0B\u8F7D\u5931\u8D25: ${p instanceof Error?p.message:"\u672A\u77E5\u9519\u8BEF"}`)}return!1}catch(O){return z.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function P1($,S=!1){let Y=d(),E=M$($.id);try{if(!await CH())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 G2($),x=S||await R2($);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=m(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let Z=await A$(),w=await a();if(O){let n=m(E,"bun.lock");try{await q.unlink(n)}catch{}}let v=Bun.spawn([Z,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:w}});if(await v.exited!==0){let n=await new Response(v.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:n}}await Q2($,E,Z,w),await f1($,E);let h=await F1($.package),T$=(await L()).installedClients[$.id]?.version;if(h){let n=await L();if(n.installedClients[$.id]={version:h,installedAt:new Date().toISOString()},await l(n),O&&T$)b("client_updated",{client_id:$.id,from_version:T$,to_version:h});else b("client_installed",{client_id:$.id,client_version:h})}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 y1($){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 _1($){if($.runtime!=="native")return;let S=M$($.id),Y=m(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=m(S,"node_modules",$.package,H);if(!await y1(q))return;z.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await A$(),G=await a();if(await Q2($,S,R,G),!await f1($,S)||await y1(q)){if(z.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u65B0\u5B89\u88C5..."),await(await import("fs/promises")).rm(S,{recursive:!0,force:!0}),(await P1($)).success)if(await f1($,S),await y1(q))z.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else z.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else z.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function Z2($){if(!await G2($)){let E=await P1($);if(E.success)await _1($);return E}if(await _1($),await R2($)){let E=await F1($.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 t({message:`\u662F\u5426\u66F4\u65B0 ${$.name}\uFF1F`,initialValue:!1});if(B(H)||!H)return z.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let q=await P1($,!0);if(q.success)await _1($);return q}return{success:!0}}import{homedir as jH}from"os";var yH=50,k1=3;async function u1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function w2($,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,yH);Y.recentProjects=H,await E1(Y)}function _H($,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 z2($,S=k1,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:_H(G,$)})).sort((G,Z)=>Z.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...Z}of q){if(R.length>=S)break;if(await u1(Z.path))R.push(Z)}return R}async function v2(){let S=(await L()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function J2($,S=25){let Y=jH(),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 T2($){let{t:S}=(C(),g2(u0)),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})}C();async function W2($,S){try{let Y=S?.projectPath||process.cwd(),E=await m$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await q0($);if(!O)O=G0($);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 A$(),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 x$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await u1(S.projectPath))return{success:!1,error:Q("launcher.directoryNotFound",{path:S.projectPath})}}let E=await Z2($);if(!E.success)return E;let O=await m$();if(!O)return{success:!1,error:Q("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await w2(Y,$.id);let H=(await L()).installedClients[$.id]?.version;return b("client_launched",{client_id:$.id,client_version:H,project_hash:E2(Y),is_recent_project:!!S?.projectPath}),z.info(Q("launcher.starting",{client:$.name})),await W2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}C();import{join as c}from"path";var g1="tako-cli",F="0.2.34";function fH($,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 PH(){try{let $=await a(),S=await fetch(`${$}/${g1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function FH(){let $=await PH();if(!$)return{hasUpdate:!1,currentVersion:F};return{hasUpdate:fH($,F)>0,latestVersion:$,currentVersion:F}}async function X2(){let $=await import("fs/promises"),S=c(f,"bin"),Y=c(S,"tako"),E=c(g,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
|
|
322
|
+
*/var y1=j1(xH(),".codex"),s0=j1(y1,"config.toml"),qH=j1(y1,"auth.json"),GH={model_provider:"tako",model:"gpt-5.4",check_for_update_on_startup:!1,model_providers:{tako:{name:"tako",base_url:`${o}/v1`}}},RH={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function m1($,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]=m1(Y[E],O);else Y[E]=O;return Y}function MH($){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 QH($,S){let Y=await import("fs/promises");try{await Y.mkdir(y1,{recursive:!0})}catch{}let E={};try{E=A1(await Y.readFile(s0,"utf-8"))}catch{}E=MH(E);let O=m1(E,GH);if(S)for(let H of S){let q=RH[H];if(q)O=m1(O,q)}await Bun.write(s0,C1(O));let x=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
|
|
323
|
+
`;await Bun.write(qH,x)}var ZH={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars($){return{}},setupConfigFiles:QH,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"]}]};Z$(ZH);import{homedir as wH}from"os";import{join as t0}from"path";var $2=t0(wH(),".gemini"),e0=t0($2,"settings.json");async function vH(){let $=await import("fs/promises");try{await $.mkdir($2,{recursive:!0})}catch{}let S={};try{S=JSON.parse(await $.readFile(e0,"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(e0,JSON.stringify(S,null,2)+`
|
|
324
|
+
`)}var JH={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:vH};Z$(JH);import{join as h}from"path";m();var o$=null,l$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function T$(){if(o$)return o$;let $=[TH,WH,XH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return o$=Y,Y}catch{}return o$="cn","cn"}async function TH(){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 WH(){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 XH(){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 IH(){let $=await T$();return l$[$]}async function a(){return(await IH()).npm}function S2(){return"curl -fsSL https://bun.sh/install | bash"}async function LH(){let $=l$.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 H2(){let $=l$.cn.bunBinary,S=await LH(),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 Y2(){let $=await T$(),S=l$[$];if($==="cn")v.info(Q("region.usingChinaMirror")),v.message(` npm: ${S.npm}`);else v.info(Q("region.usingGlobalMirror"))}var bH=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)}},E2=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 bH({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 zH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",NH="sec_3038f0cb74f91312f374",UH="https://op.shiroha.tech/api",W$=null;function _1(){if(!W$)W$=new E2({clientId:zH,clientSecret:NH,apiUrl:UH});return W$}async function O2(){if(W$){try{W$.flush()}catch{}W$=null}}m();m();var VH="0.2.35";function x2(){return{cli_version:VH,platform:process.platform,arch:process.arch,locale:O$(),node_version:process.version}}function q2($){return Bun.hash($).toString(16).slice(0,8)}var AH="0.2.35",G2=!1,U$=null,f1=[];async function R2(){if(U$!==null)return U$;try{return U$=(await b()).telemetryEnabled!==!1,U$}catch{return U$=!1,!1}}async function BH(){try{return(await b()).apiId||"anonymous"}catch{return"anonymous"}}async function a$(){if(G2)return;try{if(!await R2())return;let $=await b();if(!$.apiId)return;let S=_1(),Y=await T$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:O$(),first_seen_version:AH,platform:process.platform,arch:process.arch}}),G2=!0}catch{}}function z($,S){let Y=KH($,S).catch(()=>{});f1.push(Y)}async function KH($,S){try{if(!await R2())return;let Y=_1(),E=await BH();await Y.track($,{profileId:E,...x2(),...S})}catch{}}async function V$(){await Promise.allSettled(f1),f1.length=0,await O2()}var x$=null;function hH($){return $.startsWith(e)}async function CH(){try{if(!await Bun.file(j).exists())return null;let S=Bun.spawn([j,"--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 M2(){return await CH()!==null}async function mH(){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{}v.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 H2();v.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 Z=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,w=Bun.spawn(["powershell","-Command",Z],{stdout:"pipe",stderr:"pipe"});if(await w.exited,w.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let Z=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await Z.exited,Z.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let Z of G){let w=Y($,Z);if((await S.stat(w)).isDirectory()&&Z.startsWith("bun-")){let U=Y(w,O);try{if(await S.access(U),await S.rename(U,Y(R,O)),!E)await S.chmod(Y(R,O),493);await S.rm(w,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function yH(){let $=d();if(!await mH())return v.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await Y2(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(e,{recursive:!0}),await T$()==="cn")await jH(e);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${e}"; 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="${e}" ${S2()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return x$=j,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),v.info(`\u5B89\u88C5\u4F4D\u7F6E: ${e}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function _H(){if(await M2())return x$=j,!0;return v.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),v.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await yH()}async function A$(){if(x$){if(!hH(x$))x$=j;return x$}if(await M2())return x$=j,j;return j}async function g1($){try{let S=await a(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function fH($){return(await b()).installedClients[$.id]?.version||null}async function Q2($){let S=Q$($.id),Y=h(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function Z2($){let S=await fH($);if(!S)return!0;let Y=await g1($.package);if(!Y)return!1;return S!==Y}function w2($){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 v2($,S,Y,E){let O=h(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=w2(q);if(!R)return;let G=h(S,"node_modules",R.pkg);if(await Bun.file(h(G,"package.json")).exists())return;v.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${R.pkg}...`);for(let w of[R.version,"latest"]){let J=Bun.spawn([Y,"add",`${R.pkg}@${w}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}});if(await J.exited,J.exitCode===0)break;if(w==="latest"){let U=await new Response(J.stderr).text();v.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${U.slice(0,200)}`)}}}catch(x){v.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function k1($,S){let Y=await import("fs/promises"),E=h(S,"node_modules",$.package,"package.json");try{let O=Bun.file(E);if(!await O.exists())return!1;let x=await O.json(),H=x.optionalDependencies;if(!H)return!0;let q=w2(H);if(!q)return v.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let R=x.bin,G=typeof R==="string"?R:R?.[$.command];if(!G)return!1;let Z=h(S,"node_modules",$.package,G),w=process.platform==="win32",J=w?`${$.command}.exe`:$.command,U=h(S,"node_modules",q.pkg,J),C=Bun.file(U);if(await C.exists()&&C.size>1024){if(await Bun.write(Z,C),!w)await Y.chmod(Z,493);return!0}let X$=h(S,"node_modules",$.package,"install.cjs");if(await Bun.file(X$).exists()){v.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let t$=await A$(),p=Bun.spawn([t$,X$],{cwd:h(S,"node_modules",$.package),stdout:"pipe",stderr:"pipe"});if(await p.exited,p.exitCode!==0){let h$=await new Response(p.stderr).text();v.warn(`postinstall \u5931\u8D25: ${h$.slice(0,200)}`)}let $1=Bun.file(Z);if(await $1.exists()&&$1.size>1024){if(!w)await Y.chmod(Z,493);return!0}}v.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let n=await a();for(let t$ of[q.version,"latest"])try{let p=await fetch(`${n}/${q.pkg}/${t$}`);if(!p.ok)continue;let h$=(await p.json()).dist?.tarball;if(!h$)continue;let s=h(f,".tmp-extract-"+Date.now());await Y.mkdir(s,{recursive:!0});let S1=h(s,"pkg.tgz"),H1=Bun.spawn(["curl","-fsSL","-o",S1,h$],{stdout:"pipe",stderr:"pipe"});if(await H1.exited,H1.exitCode!==0){let k2=await new Response(H1.stderr).text();v.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${k2.slice(0,200)}`),await Y.rm(s,{recursive:!0,force:!0}).catch(()=>{});continue}let Y1=Bun.file(S1).size;if(Y1<1024){v.warn(`\u4E0B\u8F7D\u6587\u4EF6\u5F02\u5E38 (${Y1} bytes)`),await Y.rm(s,{recursive:!0,force:!0}).catch(()=>{});continue}let E1=Bun.spawn(["tar","xzf",S1,"-C",s,`package/${J}`],{stdout:"pipe",stderr:"pipe"});await E1.exited;let F2=h(s,"package",J),O1=Bun.file(F2);if(await O1.exists()&&O1.size>1024){if(await Bun.write(Z,O1),!w)await Y.chmod(Z,493);return await Y.rm(s,{recursive:!0,force:!0}).catch(()=>{}),!0}let P2=await new Response(E1.stderr).text();v.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${Y1} bytes, exit=${E1.exitCode}): ${P2.slice(0,200)}`),await Y.rm(s,{recursive:!0,force:!0}).catch(()=>{})}catch(p){v.warn(`\u4E0B\u8F7D\u5931\u8D25: ${p instanceof Error?p.message:"\u672A\u77E5\u9519\u8BEF"}`)}return!1}catch(O){return v.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function u1($,S=!1){let Y=d(),E=Q$($.id);try{if(!await _H())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 Q2($),x=S||await Z2($);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=h(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let Z=await A$(),w=await a();if(O){let n=h(E,"bun.lock");try{await q.unlink(n)}catch{}}let J=Bun.spawn([Z,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:w}});if(await J.exited!==0){let n=await new Response(J.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:n}}await v2($,E,Z,w),await k1($,E);let C=await g1($.package),X$=(await b()).installedClients[$.id]?.version;if(C){let n=await b();if(n.installedClients[$.id]={version:C,installedAt:new Date().toISOString()},await l(n),O&&X$)z("client_updated",{client_id:$.id,from_version:X$,to_version:C});else z("client_installed",{client_id:$.id,client_version:C})}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 F1($){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 P1($){if($.runtime!=="native")return;let S=Q$($.id),Y=h(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=h(S,"node_modules",$.package,H);if(!await F1(q))return;v.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await A$(),G=await a();if(await v2($,S,R,G),!await k1($,S)||await F1(q)){if(v.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u65B0\u5B89\u88C5..."),await(await import("fs/promises")).rm(S,{recursive:!0,force:!0}),(await u1($)).success)if(await k1($,S),await F1(q))v.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else v.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else v.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function J2($){if(!await Q2($)){let E=await u1($);if(E.success)await P1($);return E}if(await P1($),await Z2($)){let E=await g1($.package),O=(await b()).installedClients[$.id]?.version||"\u672A\u77E5",x=E?`${O} \u2192 ${E}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";v.info(`${$.name} \u53D1\u73B0\u66F4\u65B0: ${x}`);let H=await $$({message:`\u662F\u5426\u66F4\u65B0 ${$.name}\uFF1F`,initialValue:!1});if(A(H)||!H)return v.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let q=await u1($,!0);if(q.success)await P1($);return q}return{success:!0}}import{homedir as FH}from"os";var PH=50,d1=3;async function c1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function T2($,S){let Y=await b(),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,PH);Y.recentProjects=H,await q1(Y)}function kH($,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 W2($,S=d1,Y=!0){let O=(await b()).recentProjects||[],x=process.cwd(),q=O.filter((G)=>{if(Y&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:kH(G,$)})).sort((G,Z)=>Z.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...Z}of q){if(R.length>=S)break;if(await c1(Z.path))R.push(Z)}return R}async function X2(){let S=(await b()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function I2($,S=25){let Y=FH(),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 L2($){let{t:S}=(m(),p2(c0)),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})}m();async function b2($,S){try{let Y=S?.projectPath||process.cwd(),E=await m$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await M0($);if(!O)O=Q0($);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};v.info(`\u542F\u52A8 ${$.name}...`);let R;if($.runtime==="native")R=[O];else R=[await A$(),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 q$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await c1(S.projectPath))return{success:!1,error:Q("launcher.directoryNotFound",{path:S.projectPath})}}let E=await J2($);if(!E.success)return E;let O=await m$();if(!O)return{success:!1,error:Q("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await T2(Y,$.id);let H=(await b()).installedClients[$.id]?.version;return z("client_launched",{client_id:$.id,client_version:H,project_hash:q2(Y),is_recent_project:!!S?.projectPath}),v.info(Q("launcher.starting",{client:$.name})),await b2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}m();import{join as c}from"path";var D1="tako-cli",P="0.2.35";function uH($,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 gH(){try{let $=await a(),S=await fetch(`${$}/${D1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function dH(){let $=await gH();if(!$)return{hasUpdate:!1,currentVersion:P};return{hasUpdate:uH($,P)>0,latestVersion:$,currentVersion:P}}async function z2(){let $=await import("fs/promises"),S=c(f,"bin"),Y=c(S,"tako"),E=c(g,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
|
|
325
325
|
"${j}" "${E}" %*\r
|
|
326
326
|
`;await $.writeFile(c(S,"tako.cmd"),x)}else{let x=`#!/bin/bash
|
|
327
327
|
exec "${j}" "${E}" "$@"
|
|
328
|
-
`;await $.writeFile(Y,x,{mode:493})}}async function kH($){let S=d();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let Y=await a(),E=await import("fs/promises");await E.mkdir(g,{recursive:!0});let O=c(g,"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([j,"update",g1,"--latest"],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await X2(),b("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 uH(){let $=await import("fs/promises"),S=c(g,"bun.lock");try{await $.unlink(S)}catch{}}async function gH(){let $=await import("fs/promises");try{let S=await a();await $.mkdir(g,{recursive:!0});let Y=c(g,"package.json");try{await $.access(Y)}catch{await $.writeFile(Y,JSON.stringify({name:"tako-local",private:!0},null,2))}await uH();let E=Bun.spawn([j,"add",`${g1}@latest`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await E.exited,E.exitCode===0}catch{return!1}}async function dH(){let $=await import("fs/promises"),S=c(f,"bin"),Y=c(S,"tako"),E=c(g,"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(Q("updater.migrating"));let x=!1;try{await $.access(E),x=!0}catch{x=!1}if(!x){let H=d();if(H.start(Q("updater.installingLocally")),!await gH())return H.stop(Q("updater.migrationFailed")),!1;H.stop(Q("updater.installComplete"))}return await X2(),!0}}catch{}return!1}async function B$(){try{if(await dH())z.info(Q("updater.migrationComplete")),process.exit(0);let S=await FH();if(S.hasUpdate&&S.latestVersion){if(z.warn(Q("updater.newVersionAvailable",{version:S.latestVersion,current:F})),await kH(S.latestVersion))z.info(Q("updater.pleaseRestart")),process.exit(0)}}catch{}}C();function cH($){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 DH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function d1($){let S=DH($),Y=0;for(let E of S)Y+=cH(E)?2:1;return Y}C();var c1="__skip_prompt__";async function q$($){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 I2(S,E);let O=await pH($,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=w$();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 I2(S,O.selectedIds)}async function L2(){await l({clientOptions:{},clientOptionsLocked:{}})}function I2($,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 pH($,S,Y){let E=w$(),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 w=G.find((U)=>Y?.includes(U.id))?.id??"__none__",v=await Y$({message:Q("menu.selectOptions")||`${$.name} options`,initialValue:w,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((U)=>({value:U.id,label:O(U),hint:U.flag}))]});if(B(v))return null;if(v!=="__none__")x.push(v)}if(q.length>0){let G=await k0({message:Q("menu.selectOptions")||`${$.name} options`,options:[...q.map((v)=>({value:v.id,label:O(v),hint:v.flag,initialValue:Y?.includes(v.id)??!1})),{value:c1,label:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(B(G))return null;let Z=G,w=Z.includes(c1);return x.push(...Z.filter((v)=>v!==c1)),{selectedIds:x,lock:w}}let R=await t({message:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(B(R))return null;return{selectedIds:x,lock:!!R}}var N2=[{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 oH(){let S=(await L()).lastSeenVersion;if(!S)return!0;return S!==F}async function b2(){await l({lastSeenVersion:F})}async function U2(){if(!await oH())return;let $=N2.find((Y)=>Y.version===F);if(!$){await b2();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 b2()}async function V2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of N2){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 t({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}C();async function A2(){let $=R0(),S=await v2(),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 z2(x.id,k1,!0);E.push({value:{type:"launch",client:x},label:x.name,hint:Q("recentProjects.launchInCurrent")});for(let q of H)E.push({value:{type:"launch-in-project",client:x,projectPath:q.path},label:` \u2514\u2500 ${J2(q.path,35)}`,hint:T2(q.lastLaunchedAt)})}return E.push({value:{type:"advanced"},label:Q("menu.advanced"),hint:Q("menu.advancedHint")},{value:{type:"exit"},label:Q("menu.exit")}),E}async function D1(){let $=await A2(),S=await Y$({message:Q("menu.selectAction"),options:$});if(B(S))return null;return S}async function p1(){let $=await Y$({message:Q("menu.advancedOptions"),options:[{value:{type:"stats"},label:Q("menu.viewStats")},{value:{type:"config"},label:Q("menu.configApiKey")},{value:{type:"resetOptions"},label:Q("menu.resetOptions")},{value:{type:"changelog"},label:"\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7"},{value:{type:"language"},label:Q("menu.changeLanguage")},{value:null,label:Q("menu.back")}]});if(B($)||$===null)return null;return $}C();function lH($){return $.startsWith("cr_")&&$.length>10}async function aH($){try{let Y=await(await fetch(`${o}/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||Q("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:Q("auth.networkError")}}}async function B2($){if(!lH($))return b("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:Q("auth.invalidFormat")};let S=await aH($);if(!S.valid)return b("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),b("api_key_validated",{success:!0}),a$(),{success:!0}}C();async function i$($=!1){if(!$)z.warn("API Key not detected"),console.log();let S=await F0({message:Q("prompts.enterApiKey"),placeholder:Q("prompts.apiKeyPlaceholder"),validate(O){if(!O)return Q("prompts.enterApiKey");if(!O.startsWith("cr_"))return Q("prompts.keyInvalidFormat");if(O.length<10)return Q("prompts.keyInvalidFormat")}});if(B(S))return!1;let Y=d();Y.start(Q("prompts.validating"));let E=await B2(S);if(E.success)return Y.stop(Q("prompts.keyConfigured")),!0;else return Y.stop(Q("prompts.keyValidationFailed",{error:E.error||""})),!1}async function K$(){try{let $=await x0();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${o}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${o}/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 o1($){return $.toLocaleString("en-US")}C();function iH($,S){let Y=[];if(Y.push(""),Y.push(` ${Q("stats.title")}`),Y.push(""),Y.push(` ${Q("stats.totalRequests",{count:o1($.totalRequests)})}`),Y.push(` ${Q("stats.totalCost",{cost:$.totalCost})}`),Y.push(` ${Q("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)Y.push(""),Y.push(` ${Q("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)} ${o1(E.requests).padStart(6)} ${Q("stats.times")} ${E.cost.padStart(8)}`)});return Y.push(""),Y.push(` \x1B[90m${Q("stats.refreshHint",{countdown:S})}\x1B[0m`),Y.join(`
|
|
329
|
-
`)}async function
|
|
330
|
-
`).length;process.stdout.write(`\x1B[${q}A\x1B[0J`)}O=iH(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,w(),q()},Z=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let v=await K$();if(v.success)Y=v}x()},1000),w=()=>{if(clearInterval(Z),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function rH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${Q("cli.version",{version:F})}`,E=d1(Y),O=Math.floor((50-E)/2),x=50-O-E;console.log(` \u2502${" ".repeat(O)}${Y}${" ".repeat(x)}\u2502`);let H=Q("banner.welcome"),q=`\x1B[90m${H}\x1B[0m`,R=d1(H),G=Math.floor((50-R)/2),Z=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(Z)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function K2($){switch($.type){case"launch":{b("menu_action",{action:"launch",client_id:$.client.id});let S=await q$($.client);if(S===null)return!0;let Y=await x$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)z.error(Y.error||Q("cli.launchFailed"));return!0}case"launch-in-project":{b("menu_action",{action:"launch",client_id:$.client.id});let S=await q$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await x$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)z.error(E.error||Q("cli.launchFailed"));return!0}case"advanced":{b("menu_action",{action:"advanced"});let S=await p1();if(S)return await K2(S);return!0}case"stats":return b("menu_action",{action:"stats"}),await l1(),!0;case"config":return b("menu_action",{action:"config"}),await i$(!0),!0;case"resetOptions":return b("menu_action",{action:"resetOptions"}),await L2(),z.success(Q("menu.optionsReset")),!0;case"changelog":return b("menu_action",{action:"changelog"}),await V2(),!0;case"language":return b("menu_action",{action:"language"}),await nH(),!0;case"exit":return b("menu_action",{action:"exit"}),!1}}async function nH(){let $=w$(),S=Q(`language.${$}`),Y=await Y$({message:Q("menu.changeLanguage")+` (${Q("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:Q("language.en")},{value:"zh",label:Q("language.zh")}]});if(B(Y))return;b1(Y);let E=Q(`language.${Y}`);z.success(Q("menu.languageChanged",{lang:E}))}async function h2(){if(rH(),await U2(),!await O0()){if(!await i$()){L1("\u518D\u89C1\uFF01");return}}while(!0){let S=await D1();if(S===null)break;if(!await K2(S))break}L1("\u518D\u89C1\uFF01")}C();import{homedir as eH}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 X={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},i={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 sH(){return!1}function _($){let S=i[$];if(typeof S==="string")return S;return sH()?S.nerd:S.plain}class r${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=_("directory");return`${W.directory.icon}${Y}${X.reset} ${W.directory.text}${S}${X.reset}`}formatPath($){let S=eH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class n${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=_("git"),G=`${W.git.icon}${R}${X.reset} ${W.git.text}${E}${X.reset}`;if(G+=` ${x}${O}${X.reset}`,H>0)G+=` ${W.git.clean}${i.gitAhead}${H}${X.reset}`;if(q>0)G+=` ${W.git.dirty}${i.gitBehind}${q}${X.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:i.gitClean,statusColor:W.git.clean};let O=Y.trim();if(!O)return{status:i.gitClean,statusColor:W.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:i.gitConflict,statusColor:W.git.conflict};return{status:i.gitDirty,statusColor:W.git.dirty}}catch{return{status:i.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 tH={"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 s${id="model";render($){let S=$.model.id,Y=tH[S]||this.simplifyModelName($.model.display_name),E=_("model");return`${W.model.icon}${E}${X.reset} ${W.model.text}${Y}${X.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as $3}from"os";import{join as u}from"path";var{Glob:S3}=globalThis.Bun;var C2=process.platform==="win32";class e${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=_("version");return`${W.version.icon}${Y}${X.reset} ${W.version.text}v${S}${X.reset}`}async getClaudeCodeVersion(){let $=$3(),S=[];if(C2)S.push(u($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),u($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),u($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(u($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),u($,".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(C2)Y.push({base:u($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:u($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:u($,".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 S3(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 H3={"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},Y3=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=_("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${W.context.icon}${H}${X.reset} ${q}Context Remaining: ${x}%${X.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${X.reset}${H}${O}${X.reset}${N.brightBlack}${x}]${X.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
|
|
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
|
|
333
|
-
${Q("cli.version",{version:
|
|
328
|
+
`;await $.writeFile(Y,x,{mode:493})}}async function cH($){let S=d();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let Y=await a(),E=await import("fs/promises");await E.mkdir(g,{recursive:!0});let O=c(g,"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([j,"update",D1,"--latest"],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await z2(),z("cli_updated",{from_version:P,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 DH(){let $=await import("fs/promises"),S=c(g,"bun.lock");try{await $.unlink(S)}catch{}}async function pH(){let $=await import("fs/promises");try{let S=await a();await $.mkdir(g,{recursive:!0});let Y=c(g,"package.json");try{await $.access(Y)}catch{await $.writeFile(Y,JSON.stringify({name:"tako-local",private:!0},null,2))}await DH();let E=Bun.spawn([j,"add",`${D1}@latest`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await E.exited,E.exitCode===0}catch{return!1}}async function oH(){let $=await import("fs/promises"),S=c(f,"bin"),Y=c(S,"tako"),E=c(g,"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")){v.info(Q("updater.migrating"));let x=!1;try{await $.access(E),x=!0}catch{x=!1}if(!x){let H=d();if(H.start(Q("updater.installingLocally")),!await pH())return H.stop(Q("updater.migrationFailed")),!1;H.stop(Q("updater.installComplete"))}return await z2(),!0}}catch{}return!1}async function B$(){try{if(await oH())v.info(Q("updater.migrationComplete")),process.exit(0);let S=await dH();if(S.hasUpdate&&S.latestVersion){if(v.warn(Q("updater.newVersionAvailable",{version:S.latestVersion,current:P})),await cH(S.latestVersion))v.info(Q("updater.pleaseRestart")),process.exit(0)}}catch{}}m();function lH($){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 aH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function p1($){let S=aH($),Y=0;for(let E of S)Y+=lH(E)?2:1;return Y}m();var o1="__skip_prompt__";async function G$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let Y=await b(),E=Y.clientOptions?.[$.id];if(E&&Y.clientOptionsLocked?.[$.id])return N2(S,E);let O=await iH($,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=v$();v.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 N2(S,O.selectedIds)}async function U2(){await l({clientOptions:{},clientOptionsLocked:{}})}function N2($,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 iH($,S,Y){let E=v$(),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 w=G.find((U)=>Y?.includes(U.id))?.id??"__none__",J=await E$({message:Q("menu.selectOptions")||`${$.name} options`,initialValue:w,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((U)=>({value:U.id,label:O(U),hint:U.flag}))]});if(A(J))return null;if(J!=="__none__")x.push(J)}if(q.length>0){let G=await d0({message:Q("menu.selectOptions")||`${$.name} options`,options:[...q.map((J)=>({value:J.id,label:O(J),hint:J.flag,initialValue:Y?.includes(J.id)??!1})),{value:o1,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 Z=G,w=Z.includes(o1);return x.push(...Z.filter((J)=>J!==o1)),{selectedIds:x,lock:w}}let R=await $$({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 A2=[{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 rH(){let S=(await b()).lastSeenVersion;if(!S)return!0;return S!==P}async function V2(){await l({lastSeenVersion:P})}async function B2(){if(!await rH())return;let $=A2.find((Y)=>Y.version===P);if(!$){await V2();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 V2()}async function K2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of A2){let Y=$.version===P?`\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 $$({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}m();async function h2(){let $=Z0(),S=await X2(),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 W2(x.id,d1,!0);E.push({value:{type:"launch",client:x},label:x.name,hint:Q("recentProjects.launchInCurrent")});for(let q of H)E.push({value:{type:"launch-in-project",client:x,projectPath:q.path},label:` \u2514\u2500 ${I2(q.path,35)}`,hint:L2(q.lastLaunchedAt)})}return E.push({value:{type:"advanced"},label:Q("menu.advanced"),hint:Q("menu.advancedHint")},{value:{type:"exit"},label:Q("menu.exit")}),E}async function l1(){let $=await h2(),S=await E$({message:Q("menu.selectAction"),options:$});if(A(S))return null;return S}async function a1(){let $=await E$({message:Q("menu.advancedOptions"),options:[{value:{type:"stats"},label:Q("menu.viewStats")},{value:{type:"config"},label:Q("menu.configApiKey")},{value:{type:"resetOptions"},label:Q("menu.resetOptions")},{value:{type:"changelog"},label:"\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7"},{value:{type:"language"},label:Q("menu.changeLanguage")},{value:null,label:Q("menu.back")}]});if(A($)||$===null)return null;return $}m();function nH($){return $.startsWith("cr_")&&$.length>10}async function sH($){try{let Y=await(await fetch(`${o}/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||Q("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:Q("auth.networkError")}}}async function C2($){if(!nH($))return z("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:Q("auth.invalidFormat")};let S=await sH($);if(!S.valid)return z("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),z("api_key_validated",{success:!0}),a$(),{success:!0}}m();async function i$($=!1){if(!$)v.warn("API Key not detected"),console.log();let S=await g0({message:Q("prompts.enterApiKey"),placeholder:Q("prompts.apiKeyPlaceholder"),validate(O){if(!O)return Q("prompts.enterApiKey");if(!O.startsWith("cr_"))return Q("prompts.keyInvalidFormat");if(O.length<10)return Q("prompts.keyInvalidFormat")}});if(A(S))return!1;let Y=d();Y.start(Q("prompts.validating"));let E=await C2(S);if(E.success)return Y.stop(Q("prompts.keyConfigured")),!0;else return Y.stop(Q("prompts.keyValidationFailed",{error:E.error||""})),!1}async function K$(){try{let $=await R0();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${o}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${o}/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 i1($){return $.toLocaleString("en-US")}m();function eH($,S){let Y=[];if(Y.push(""),Y.push(` ${Q("stats.title")}`),Y.push(""),Y.push(` ${Q("stats.totalRequests",{count:i1($.totalRequests)})}`),Y.push(` ${Q("stats.totalCost",{cost:$.totalCost})}`),Y.push(` ${Q("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)Y.push(""),Y.push(` ${Q("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)} ${i1(E.requests).padStart(6)} ${Q("stats.times")} ${E.cost.padStart(8)}`)});return Y.push(""),Y.push(` \x1B[90m${Q("stats.refreshHint",{countdown:S})}\x1B[0m`),Y.join(`
|
|
329
|
+
`)}async function r1(){let S=d();S.start(Q("stats.fetching"));let Y=await K$();if(!Y.success){S.stop(Q("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=eH(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,w(),q()},Z=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let J=await K$();if(J.success)Y=J}x()},1000),w=()=>{if(clearInterval(Z),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function tH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${Q("cli.version",{version:P})}`,E=p1(Y),O=Math.floor((50-E)/2),x=50-O-E;console.log(` \u2502${" ".repeat(O)}${Y}${" ".repeat(x)}\u2502`);let H=Q("banner.welcome"),q=`\x1B[90m${H}\x1B[0m`,R=p1(H),G=Math.floor((50-R)/2),Z=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(Z)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function m2($){switch($.type){case"launch":{z("menu_action",{action:"launch",client_id:$.client.id});let S=await G$($.client);if(S===null)return!0;let Y=await q$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)v.error(Y.error||Q("cli.launchFailed"));return!0}case"launch-in-project":{z("menu_action",{action:"launch",client_id:$.client.id});let S=await G$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await q$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)v.error(E.error||Q("cli.launchFailed"));return!0}case"advanced":{z("menu_action",{action:"advanced"});let S=await a1();if(S)return await m2(S);return!0}case"stats":return z("menu_action",{action:"stats"}),await r1(),!0;case"config":return z("menu_action",{action:"config"}),await i$(!0),!0;case"resetOptions":return z("menu_action",{action:"resetOptions"}),await U2(),v.success(Q("menu.optionsReset")),!0;case"changelog":return z("menu_action",{action:"changelog"}),await K2(),!0;case"language":return z("menu_action",{action:"language"}),await $3(),!0;case"exit":return z("menu_action",{action:"exit"}),!1}}async function $3(){let $=v$(),S=Q(`language.${$}`),Y=await E$({message:Q("menu.changeLanguage")+` (${Q("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:Q("language.en")},{value:"zh",label:Q("language.zh")}]});if(A(Y))return;V1(Y);let E=Q(`language.${Y}`);v.success(Q("menu.languageChanged",{lang:E}))}async function j2(){if(tH(),await B2(),!await G0()){if(!await i$()){U1("\u518D\u89C1\uFF01");return}}while(!0){let S=await l1();if(S===null)break;if(!await m2(S))break}U1("\u518D\u89C1\uFF01")}m();import{homedir as H3}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 I={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var X={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},i={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 S3(){return!1}function _($){let S=i[$];if(typeof S==="string")return S;return S3()?S.nerd:S.plain}class r${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=_("directory");return`${X.directory.icon}${Y}${I.reset} ${X.directory.text}${S}${I.reset}`}formatPath($){let S=H3();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class n${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=_("git"),G=`${X.git.icon}${R}${I.reset} ${X.git.text}${E}${I.reset}`;if(G+=` ${x}${O}${I.reset}`,H>0)G+=` ${X.git.clean}${i.gitAhead}${H}${I.reset}`;if(q>0)G+=` ${X.git.dirty}${i.gitBehind}${q}${I.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:i.gitClean,statusColor:X.git.clean};let O=Y.trim();if(!O)return{status:i.gitClean,statusColor:X.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:i.gitConflict,statusColor:X.git.conflict};return{status:i.gitDirty,statusColor:X.git.dirty}}catch{return{status:i.gitClean,statusColor:X.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 Y3={"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 s${id="model";render($){let S=$.model.id,Y=Y3[S]||this.simplifyModelName($.model.display_name),E=_("model");return`${X.model.icon}${E}${I.reset} ${X.model.text}${Y}${I.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as E3}from"os";import{join as u}from"path";var{Glob:O3}=globalThis.Bun;var y2=process.platform==="win32";class e${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=_("version");return`${X.version.icon}${Y}${I.reset} ${X.version.text}v${S}${I.reset}`}async getClaudeCodeVersion(){let $=E3(),S=[];if(y2)S.push(u($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),u($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),u($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(u($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),u($,".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(y2)Y.push({base:u($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:u($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:u($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:u($,".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 O3(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 x3={"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},q3=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=_("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${X.context.icon}${H}${I.reset} ${q}Context Remaining: ${x}%${I.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${I.reset}${H}${O}${I.reset}${N.brightBlack}${x}]${I.reset}`}getRemainingColor($){if($<=20)return X.context.high;if($<=50)return X.context.medium;return X.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 x3[$]||q3}}class r{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(r.cache&&Date.now()-r.cache.timestamp<r.CACHE_TTL)return r.cache.data;try{let S=await K$();if(!S.success||!S.data)return null;let Y=S.data.todayCost,E=_("todayUsage"),O=`${X.todayUsage.icon}${E}${I.reset} ${X.todayUsage.text}Today: ${Y}${I.reset}`;return r.cache={data:O,timestamp:Date.now()},O}catch{return null}}}class n1{separator=`${X.separator} \u2502 ${I.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 R$,dirname as G3}from"path";import{homedir as s1}from"os";import{mkdir as R3}from"fs/promises";var _2=R$(s1(),".tako"),M3=R$(_2,"cli"),Q3=R$(_2,"bin",process.platform==="win32"?"tako.cmd":"tako");function Z3(){if(process.platform==="win32")return R$(process.env.APPDATA||R$(s1(),"AppData","Roaming"),"claude","settings.json");return R$(s1(),".claude","settings.json")}var w3=process.platform==="win32",v3="0.1.48";function J3($,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 T3(){let $=R$(M3,"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 W3(){let $=await T3();if(!$)return!1;return J3($,v3)>=0}function X3(){return Q3}function I3($){if(w3)return $.replace(/\\/g,"/");return $}async function e1(){if(!await W3())return;let S=Z3(),Y={};try{let H=Bun.file(S);if(await H.exists())Y=await H.json()}catch{}let O={type:"command",command:`"${I3(X3())}" 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 R3(G3(S),{recursive:!0}),await Bun.write(S,JSON.stringify(Y,null,2))}var L3=[new r$,new n$,new s$,new e$,new D,new r];async function b3($){let S=await Promise.all(L3.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 n1().render(Y)}async function f2(){try{let $=await Bun.stdin.json(),S=await b3($);console.log(S)}catch($){process.exit(0)}}var t1="0.2.35";function z3(){console.log(`
|
|
333
|
+
${Q("cli.version",{version:t1})}
|
|
334
334
|
|
|
335
335
|
${Q("cli.usage")}
|
|
336
336
|
|
|
@@ -348,4 +348,4 @@ ${Q("cli.exampleInteractive")}
|
|
|
348
348
|
${Q("cli.exampleClaude")}
|
|
349
349
|
${Q("cli.exampleCodex")}
|
|
350
350
|
${Q("cli.exampleGemini")}
|
|
351
|
-
`)}async function
|
|
351
|
+
`)}async function N3(){let $=process.argv.slice(2);if($[0]==="statusline"){await f2();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${t1}`);return}if($.includes("-h")||$.includes("--help")){z3();return}let S=t1==="dev";if(a$(),z("cli_started"),$.includes("--claude")){let Y=y$("claude-code");if(!Y)console.error(Q("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await B$();let E=await G$(Y);if(E===null)return;let O=await q$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let Y=y$("codex");if(!Y)console.error(Q("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await B$();let E=await G$(Y);if(E===null)return;let O=await q$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--gemini")){let Y=y$("gemini");if(!Y)console.error(Q("cli.clientNotFound",{client:"Gemini CLI"})),process.exit(1);if(!S)await B$();let E=await G$(Y);if(E===null)return;let O=await q$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await B$();e1().catch(()=>{}),await j2()}process.on("beforeExit",async()=>{await V$()});process.on("SIGINT",async()=>{await V$(),process.exit(0)});process.on("SIGTERM",async()=>{await V$(),process.exit(0)});N3().catch(async($)=>{console.error(Q("cli.cliError"),$),await V$(),process.exit(1)});
|