tako-cli 0.2.25 → 0.2.27
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 +98 -98
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var V2=Object.create;var{getPrototypeOf:A2,defineProperty:z$,getOwnPropertyNames:c1,getOwnPropertyDescriptor:B2}=Object,D1=Object.prototype.hasOwnProperty;function p1($){return this[$]}var h2,K2,V$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?h2??=new WeakMap:K2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?V2(A2($)):{};let H=S||!$||!$.__esModule?z$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of c1($))if(!D1.call(H,q))z$(H,q,{get:p1.bind($,q),enumerable:!0});if(E)O.set($,H);return H},C2=($)=>{var S=(d1??=new WeakMap).get($),Y;if(S)return S;if(S=z$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of c1($))if(!D1.call(S,E))z$(S,E,{get:p1.bind($,E),enumerable:!(Y=B2($,E))||Y.enumerable})}return d1.set($,S),S},d1,l1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var m2=($)=>$;function j2($,S){this[$]=m2.bind(null,S)}var y2=($,S)=>{for(var Y in S)z$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:j2.bind(S,Y)})};var f2=($,S)=>()=>($&&(S=$($=0)),S);var K=import.meta.require;var $1=l1((I3,$0)=>{var t$={to($,S){if(!S)return`\x1B[${$+1}G`;return`\x1B[${S+1};${$+1}H`},move($,S){let Y="";if($<0)Y+=`\x1B[${-$}D`;else if($>0)Y+=`\x1B[${$}C`;if(S<0)Y+=`\x1B[${-S}A`;else if(S>0)Y+=`\x1B[${S}B`;return Y},up:($=1)=>`\x1B[${$}A`,down:($=1)=>`\x1B[${$}B`,forward:($=1)=>`\x1B[${$}C`,backward:($=1)=>`\x1B[${$}D`,nextLine:($=1)=>"\x1B[E".repeat($),prevLine:($=1)=>"\x1B[F".repeat($),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},F2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},k2={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let S="";for(let Y=0;Y<$;Y++)S+=this.line+(Y<$-1?t$.up():"");if($)S+=t$.left;return S}};$0.exports={cursor:t$,scroll:F2,erase:k2,beep:"\x07"}});var H1=l1((X3,S1)=>{var C$=process||{},S0=C$.argv||[],K$=C$.env||{},u2=!(!!K$.NO_COLOR||S0.includes("--no-color"))&&(!!K$.FORCE_COLOR||S0.includes("--color")||C$.platform==="win32"||(C$.stdout||{}).isTTY&&K$.TERM!=="dumb"||!!K$.CI),g2=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+d2(O,S,Y,x)+S:$+O+S},d2=($,S,Y,E)=>{let O="",x=0;do O+=$.substring(x,E)+Y,x=E+S.length,E=$.indexOf(S,x);while(~E);return O+$.substring(x)},H0=($=u2)=>{let S=$?g2:()=>String;return{isColorSupported:$,reset:S("\x1B[0m","\x1B[0m"),bold:S("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:S("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:S("\x1B[3m","\x1B[23m"),underline:S("\x1B[4m","\x1B[24m"),inverse:S("\x1B[7m","\x1B[27m"),hidden:S("\x1B[8m","\x1B[28m"),strikethrough:S("\x1B[9m","\x1B[29m"),black:S("\x1B[30m","\x1B[39m"),red:S("\x1B[31m","\x1B[39m"),green:S("\x1B[32m","\x1B[39m"),yellow:S("\x1B[33m","\x1B[39m"),blue:S("\x1B[34m","\x1B[39m"),magenta:S("\x1B[35m","\x1B[39m"),cyan:S("\x1B[36m","\x1B[39m"),white:S("\x1B[37m","\x1B[39m"),gray:S("\x1B[90m","\x1B[39m"),bgBlack:S("\x1B[40m","\x1B[49m"),bgRed:S("\x1B[41m","\x1B[49m"),bgGreen:S("\x1B[42m","\x1B[49m"),bgYellow:S("\x1B[43m","\x1B[49m"),bgBlue:S("\x1B[44m","\x1B[49m"),bgMagenta:S("\x1B[45m","\x1B[49m"),bgCyan:S("\x1B[46m","\x1B[49m"),bgWhite:S("\x1B[47m","\x1B[49m"),blackBright:S("\x1B[90m","\x1B[39m"),redBright:S("\x1B[91m","\x1B[39m"),greenBright:S("\x1B[92m","\x1B[39m"),yellowBright:S("\x1B[93m","\x1B[39m"),blueBright:S("\x1B[94m","\x1B[39m"),magentaBright:S("\x1B[95m","\x1B[39m"),cyanBright:S("\x1B[96m","\x1B[39m"),whiteBright:S("\x1B[97m","\x1B[39m"),bgBlackBright:S("\x1B[100m","\x1B[49m"),bgRedBright:S("\x1B[101m","\x1B[49m"),bgGreenBright:S("\x1B[102m","\x1B[49m"),bgYellowBright:S("\x1B[103m","\x1B[49m"),bgBlueBright:S("\x1B[104m","\x1B[49m"),bgMagentaBright:S("\x1B[105m","\x1B[49m"),bgCyanBright:S("\x1B[106m","\x1B[49m"),bgWhiteBright:S("\x1B[107m","\x1B[49m")}};S1.exports=H0();S1.exports.createColors=H0});var K0={};y2(K0,{t:()=>M,setLocale:()=>Z1,getLocale:()=>Q$,detectLocale:()=>H$,clearLocaleOverride:()=>US});function H$(){if(_$)return _$;let $=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if($.toLowerCase().includes("zh")||$.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function Z1($){_$=$}function US(){_$=null}function M($,S){let Y=H$(),E=$.split("."),O=VS;for(let H of E)if(O=O?.[H],!O)return $;let x=O[Y]||O.en||$;if(S)for(let[H,q]of Object.entries(S))x=x.replace(`{${H}}`,String(q));return x}function Q$(){return H$()}var _$=null,VS;var h=f2(()=>{VS={launcher:{starting:{en:"Starting {client}...",zh:"\u6B63\u5728\u542F\u52A8 {client}..."},directoryNotFound:{en:"Directory not found: {path}",zh:"\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}"},apiKeyNotConfigured:{en:"API Key not configured",zh:"API Key \u672A\u914D\u7F6E"},error:{en:"Error: {message}",zh:"\u9519\u8BEF\uFF1A{message}"}},menu:{selectAction:{en:"Select an action:",zh:"\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A"},launchClient:{en:"Launch {client}",zh:"\u542F\u52A8 {client}"},advanced:{en:"Advanced",zh:"\u9AD8\u7EA7"},advancedHint:{en:"Usage stats, configuration, etc.",zh:"\u7528\u91CF\u7EDF\u8BA1\u3001\u914D\u7F6E\u7B49"},exit:{en:"Exit",zh:"\u9000\u51FA"},advancedOptions:{en:"Advanced Options:",zh:"\u9AD8\u7EA7\u9009\u9879\uFF1A"},viewStats:{en:"View Usage Statistics",zh:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},configApiKey:{en:"Configure API Key",zh:"\u914D\u7F6E API Key"},back:{en:"Back",zh:"\u8FD4\u56DE"},changeLanguage:{en:"Change Language",zh:"\u5207\u6362\u8BED\u8A00"},currentLanguage:{en:"Current Language: {lang}",zh:"\u5F53\u524D\u8BED\u8A00\uFF1A{lang}"},languageChanged:{en:"Language changed to {lang}",zh:"\u8BED\u8A00\u5DF2\u5207\u6362\u4E3A {lang}"},selectOptions:{en:"Select launch options (Space to toggle, Enter to confirm):",zh:"\u9009\u62E9\u542F\u52A8\u9009\u9879\uFF08\u7A7A\u683C\u5207\u6362\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\uFF1A"},resetOptions:{en:"Reset Launch Options",zh:"\u91CD\u7F6E\u542F\u52A8\u9009\u9879"},optionsReset:{en:"Launch options have been reset. You will be prompted again next time.",zh:"\u542F\u52A8\u9009\u9879\u5DF2\u91CD\u7F6E\uFF0C\u4E0B\u6B21\u542F\u52A8\u65F6\u5C06\u91CD\u65B0\u9009\u62E9\u3002"}},language:{en:{en:"English",zh:"\u82F1\u8BED"},zh:{en:"Chinese",zh:"\u4E2D\u6587"}},banner:{welcome:{en:"Welcome!",zh:"\u6B22\u8FCE\u4F7F\u7528\uFF01"}},stats:{title:{en:"\uD83D\uDCCA Usage Statistics",zh:"\uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"},totalRequests:{en:"Total Requests: {count} times",zh:"\u603B\u8C03\u7528\u6B21\u6570\uFF1A{count} \u6B21"},totalCost:{en:"Total Cost: {cost}",zh:"\u603B\u6D88\u8D39\uFF1A{cost}"},todayCost:{en:"Today's Cost: {cost}",zh:"\u4ECA\u65E5\u6D88\u8D39\uFF1A{cost}"},modelDistribution:{en:"Model Usage Distribution (Today):",zh:"\u6A21\u578B\u4F7F\u7528\u5206\u5E03\uFF08\u4ECA\u65E5\uFF09\uFF1A"},times:{en:"times",zh:"\u6B21"},refreshHint:{en:"{countdown}s until refresh | Press any key to return",zh:"{countdown}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE"},fetching:{en:"Fetching usage statistics...",zh:"\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1..."},fetchFailed:{en:"Failed to fetch: {error}",zh:"\u83B7\u53D6\u5931\u8D25\uFF1A{error}"}},prompts:{enterApiKey:{en:"Please enter your API Key:",zh:"\u8BF7\u8F93\u5165\u60A8\u7684 API Key\uFF1A"},apiKeyPlaceholder:{en:"cr_xxxxxxxx",zh:"cr_xxxxxxxx"},validating:{en:"Validating API Key...",zh:"\u6B63\u5728\u9A8C\u8BC1 API Key..."},keyInvalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},keyValidationFailed:{en:"Validation failed: {error}",zh:"\u9A8C\u8BC1\u5931\u8D25\uFF1A{error}"},keyConfigured:{en:"API Key configured successfully!",zh:"API Key \u914D\u7F6E\u6210\u529F\uFF01"}},cli:{version:{en:"Tako CLI v{version}",zh:"Tako CLI v{version}"},usage:{en:"Usage: tako [options] [command]",zh:"\u7528\u6CD5\uFF1Atako [\u9009\u9879] [\u547D\u4EE4]"},options:{en:"Options:",zh:"\u9009\u9879\uFF1A"},optionVersion:{en:" -v, --version Display version number",zh:" -v, --version \u663E\u793A\u7248\u672C\u53F7"},optionHelp:{en:" -h, --help Display help information",zh:" -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"},shortcuts:{en:"Shortcuts:",zh:"\u5FEB\u6377\u547D\u4EE4\uFF1A"},shortcutClaude:{en:" --claude Launch Claude Code directly",zh:" --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},shortcutCodex:{en:" --codex Launch Codex directly",zh:" --codex \u76F4\u63A5\u542F\u52A8 Codex"},shortcutGemini:{en:" --gemini Launch Gemini CLI directly",zh:" --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},examples:{en:"Examples:",zh:"\u793A\u4F8B\uFF1A"},exampleInteractive:{en:" tako Interactive tool selection",zh:" tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177"},exampleClaude:{en:" tako --claude Launch Claude Code directly",zh:" tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},exampleCodex:{en:" tako --codex Launch Codex directly",zh:" tako --codex \u76F4\u63A5\u542F\u52A8 Codex"},exampleGemini:{en:" tako --gemini Launch Gemini CLI directly",zh:" tako --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},clientNotFound:{en:"{client} client not found",zh:"{client} \u5BA2\u6237\u7AEF\u672A\u627E\u5230"},cliError:{en:"Tako CLI encountered an error:",zh:"Tako CLI \u53D1\u751F\u9519\u8BEF\uFF1A"},launchFailed:{en:"Launch failed",zh:"\u542F\u52A8\u5931\u8D25"}},auth:{invalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},validationFailed:{en:"Validation failed",zh:"\u9A8C\u8BC1\u5931\u8D25"},networkError:{en:"Network request failed",zh:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}},updater:{migrating:{en:"Detected old installation, migrating...",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB..."},installingLocally:{en:"Installing to local directory...",zh:"\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."},migrationFailed:{en:"Local installation failed, skipping migration",zh:"\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"},installComplete:{en:"Local installation complete",zh:"\u672C\u5730\u5B89\u88C5\u5B8C\u6210"},migrationComplete:{en:"Detected old installation, migration complete. Please restart Tako CLI",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"},newVersionAvailable:{en:"New version v{version} available (current v{current})",zh:"\u53D1\u73B0\u65B0\u7248\u672C v{version}\uFF08\u5F53\u524D v{current}\uFF09"},pleaseRestart:{en:"Please restart Tako CLI to use the new version",zh:"\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"}},region:{usingChinaMirror:{en:"Detected China mainland network, using domestic mirror",zh:"\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"},usingGlobalMirror:{en:"Using global mirror",zh:"\u4F7F\u7528\u56FD\u9645\u6E90"}},telemetry:{toggle:{en:"Toggle Telemetry",zh:"\u5207\u6362\u9065\u6D4B"},enabled:{en:"Telemetry is enabled",zh:"\u9065\u6D4B\u5DF2\u5F00\u542F"},disabled:{en:"Telemetry is disabled",zh:"\u9065\u6D4B\u5DF2\u5173\u95ED"},description:{en:"Anonymous usage data helps us improve Tako CLI",zh:"\u533F\u540D\u4F7F\u7528\u6570\u636E\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Tako CLI"}},time:{justNow:{en:"just now",zh:"\u521A\u521A"},minutesAgo:{en:"{n}m ago",zh:"{n}\u5206\u949F\u524D"},hoursAgo:{en:"{n}h ago",zh:"{n}\u5C0F\u65F6\u524D"},yesterday:{en:"yesterday",zh:"\u6628\u5929"},daysAgo:{en:"{n}d ago",zh:"{n}\u5929\u524D"},weeksAgo:{en:"{n}w ago",zh:"{n}\u5468\u524D"},monthsAgo:{en:"{n}mo ago",zh:"{n}\u6708\u524D"}},claudeCode:{settingsDetected:{en:`Detected hardcoded config in Claude Code settings that conflicts with Tako:
|
|
3
|
+
var A2=Object.create;var{getPrototypeOf:B2,defineProperty:b$,getOwnPropertyNames:c1,getOwnPropertyDescriptor:h2}=Object,D1=Object.prototype.hasOwnProperty;function p1($){return this[$]}var K2,C2,A$=($,S,Y)=>{var E=$!=null&&typeof $==="object";if(E){var O=S?K2??=new WeakMap:C2??=new WeakMap,x=O.get($);if(x)return x}Y=$!=null?A2(B2($)):{};let H=S||!$||!$.__esModule?b$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of c1($))if(!D1.call(H,q))b$(H,q,{get:p1.bind($,q),enumerable:!0});if(E)O.set($,H);return H},m2=($)=>{var S=(d1??=new WeakMap).get($),Y;if(S)return S;if(S=b$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var E of c1($))if(!D1.call(S,E))b$(S,E,{get:p1.bind($,E),enumerable:!(Y=h2($,E))||Y.enumerable})}return d1.set($,S),S},d1,l1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var j2=($)=>$;function y2($,S){this[$]=j2.bind(null,S)}var f2=($,S)=>{for(var Y in S)b$($,Y,{get:S[Y],enumerable:!0,configurable:!0,set:y2.bind(S,Y)})};var _2=($,S)=>()=>($&&(S=$($=0)),S);var h=import.meta.require;var S1=l1((I3,$0)=>{var $1={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"},k2={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},u2={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?$1.up():"");if($)S+=$1.left;return S}};$0.exports={cursor:$1,scroll:k2,erase:u2,beep:"\x07"}});var Y1=l1((X3,H1)=>{var m$=process||{},S0=m$.argv||[],C$=m$.env||{},g2=!(!!C$.NO_COLOR||S0.includes("--no-color"))&&(!!C$.FORCE_COLOR||S0.includes("--color")||m$.platform==="win32"||(m$.stdout||{}).isTTY&&C$.TERM!=="dumb"||!!C$.CI),d2=($,S,Y=$)=>(E)=>{let O=""+E,x=O.indexOf(S,$.length);return~x?$+c2(O,S,Y,x)+S:$+O+S},c2=($,S,Y,E)=>{let O="",x=0;do O+=$.substring(x,E)+Y,x=E+S.length,E=$.indexOf(S,x);while(~E);return O+$.substring(x)},H0=($=g2)=>{let S=$?d2:()=>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")}};H1.exports=H0();H1.exports.createColors=H0});var K0={};f2(K0,{t:()=>Q,setLocale:()=>z1,getLocale:()=>w$,detectLocale:()=>H$,clearLocaleOverride:()=>VS});function H$(){if(P$)return P$;let $=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if($.toLowerCase().includes("zh")||$.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function z1($){P$=$}function VS(){P$=null}function Q($,S){let Y=H$(),E=$.split("."),O=AS;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 H$()}var P$=null,AS;var K=_2(()=>{AS={launcher:{starting:{en:"Starting {client}...",zh:"\u6B63\u5728\u542F\u52A8 {client}..."},directoryNotFound:{en:"Directory not found: {path}",zh:"\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}"},apiKeyNotConfigured:{en:"API Key not configured",zh:"API Key \u672A\u914D\u7F6E"},error:{en:"Error: {message}",zh:"\u9519\u8BEF\uFF1A{message}"}},menu:{selectAction:{en:"Select an action:",zh:"\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A"},launchClient:{en:"Launch {client}",zh:"\u542F\u52A8 {client}"},advanced:{en:"Advanced",zh:"\u9AD8\u7EA7"},advancedHint:{en:"Usage stats, configuration, etc.",zh:"\u7528\u91CF\u7EDF\u8BA1\u3001\u914D\u7F6E\u7B49"},exit:{en:"Exit",zh:"\u9000\u51FA"},advancedOptions:{en:"Advanced Options:",zh:"\u9AD8\u7EA7\u9009\u9879\uFF1A"},viewStats:{en:"View Usage Statistics",zh:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},configApiKey:{en:"Configure API Key",zh:"\u914D\u7F6E API Key"},back:{en:"Back",zh:"\u8FD4\u56DE"},changeLanguage:{en:"Change Language",zh:"\u5207\u6362\u8BED\u8A00"},currentLanguage:{en:"Current Language: {lang}",zh:"\u5F53\u524D\u8BED\u8A00\uFF1A{lang}"},languageChanged:{en:"Language changed to {lang}",zh:"\u8BED\u8A00\u5DF2\u5207\u6362\u4E3A {lang}"},selectOptions:{en:"Select launch options (Space to toggle, Enter to confirm):",zh:"\u9009\u62E9\u542F\u52A8\u9009\u9879\uFF08\u7A7A\u683C\u5207\u6362\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\uFF1A"},resetOptions:{en:"Reset Launch Options",zh:"\u91CD\u7F6E\u542F\u52A8\u9009\u9879"},optionsReset:{en:"Launch options have been reset. You will be prompted again next time.",zh:"\u542F\u52A8\u9009\u9879\u5DF2\u91CD\u7F6E\uFF0C\u4E0B\u6B21\u542F\u52A8\u65F6\u5C06\u91CD\u65B0\u9009\u62E9\u3002"}},language:{en:{en:"English",zh:"\u82F1\u8BED"},zh:{en:"Chinese",zh:"\u4E2D\u6587"}},banner:{welcome:{en:"Welcome!",zh:"\u6B22\u8FCE\u4F7F\u7528\uFF01"}},stats:{title:{en:"\uD83D\uDCCA Usage Statistics",zh:"\uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"},totalRequests:{en:"Total Requests: {count} times",zh:"\u603B\u8C03\u7528\u6B21\u6570\uFF1A{count} \u6B21"},totalCost:{en:"Total Cost: {cost}",zh:"\u603B\u6D88\u8D39\uFF1A{cost}"},todayCost:{en:"Today's Cost: {cost}",zh:"\u4ECA\u65E5\u6D88\u8D39\uFF1A{cost}"},modelDistribution:{en:"Model Usage Distribution (Today):",zh:"\u6A21\u578B\u4F7F\u7528\u5206\u5E03\uFF08\u4ECA\u65E5\uFF09\uFF1A"},times:{en:"times",zh:"\u6B21"},refreshHint:{en:"{countdown}s until refresh | Press any key to return",zh:"{countdown}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE"},fetching:{en:"Fetching usage statistics...",zh:"\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1..."},fetchFailed:{en:"Failed to fetch: {error}",zh:"\u83B7\u53D6\u5931\u8D25\uFF1A{error}"}},prompts:{enterApiKey:{en:"Please enter your API Key:",zh:"\u8BF7\u8F93\u5165\u60A8\u7684 API Key\uFF1A"},apiKeyPlaceholder:{en:"cr_xxxxxxxx",zh:"cr_xxxxxxxx"},validating:{en:"Validating API Key...",zh:"\u6B63\u5728\u9A8C\u8BC1 API Key..."},keyInvalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},keyValidationFailed:{en:"Validation failed: {error}",zh:"\u9A8C\u8BC1\u5931\u8D25\uFF1A{error}"},keyConfigured:{en:"API Key configured successfully!",zh:"API Key \u914D\u7F6E\u6210\u529F\uFF01"}},cli:{version:{en:"Tako CLI v{version}",zh:"Tako CLI v{version}"},usage:{en:"Usage: tako [options] [command]",zh:"\u7528\u6CD5\uFF1Atako [\u9009\u9879] [\u547D\u4EE4]"},options:{en:"Options:",zh:"\u9009\u9879\uFF1A"},optionVersion:{en:" -v, --version Display version number",zh:" -v, --version \u663E\u793A\u7248\u672C\u53F7"},optionHelp:{en:" -h, --help Display help information",zh:" -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"},shortcuts:{en:"Shortcuts:",zh:"\u5FEB\u6377\u547D\u4EE4\uFF1A"},shortcutClaude:{en:" --claude Launch Claude Code directly",zh:" --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},shortcutCodex:{en:" --codex Launch Codex directly",zh:" --codex \u76F4\u63A5\u542F\u52A8 Codex"},shortcutGemini:{en:" --gemini Launch Gemini CLI directly",zh:" --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},examples:{en:"Examples:",zh:"\u793A\u4F8B\uFF1A"},exampleInteractive:{en:" tako Interactive tool selection",zh:" tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177"},exampleClaude:{en:" tako --claude Launch Claude Code directly",zh:" tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},exampleCodex:{en:" tako --codex Launch Codex directly",zh:" tako --codex \u76F4\u63A5\u542F\u52A8 Codex"},exampleGemini:{en:" tako --gemini Launch Gemini CLI directly",zh:" tako --gemini \u76F4\u63A5\u542F\u52A8 Gemini CLI"},clientNotFound:{en:"{client} client not found",zh:"{client} \u5BA2\u6237\u7AEF\u672A\u627E\u5230"},cliError:{en:"Tako CLI encountered an error:",zh:"Tako CLI \u53D1\u751F\u9519\u8BEF\uFF1A"},launchFailed:{en:"Launch failed",zh:"\u542F\u52A8\u5931\u8D25"}},auth:{invalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},validationFailed:{en:"Validation failed",zh:"\u9A8C\u8BC1\u5931\u8D25"},networkError:{en:"Network request failed",zh:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}},updater:{migrating:{en:"Detected old installation, migrating...",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB..."},installingLocally:{en:"Installing to local directory...",zh:"\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."},migrationFailed:{en:"Local installation failed, skipping migration",zh:"\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"},installComplete:{en:"Local installation complete",zh:"\u672C\u5730\u5B89\u88C5\u5B8C\u6210"},migrationComplete:{en:"Detected old installation, migration complete. Please restart Tako CLI",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"},newVersionAvailable:{en:"New version v{version} available (current v{current})",zh:"\u53D1\u73B0\u65B0\u7248\u672C v{version}\uFF08\u5F53\u524D v{current}\uFF09"},pleaseRestart:{en:"Please restart Tako CLI to use the new version",zh:"\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"}},region:{usingChinaMirror:{en:"Detected China mainland network, using domestic mirror",zh:"\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"},usingGlobalMirror:{en:"Using global mirror",zh:"\u4F7F\u7528\u56FD\u9645\u6E90"}},telemetry:{toggle:{en:"Toggle Telemetry",zh:"\u5207\u6362\u9065\u6D4B"},enabled:{en:"Telemetry is enabled",zh:"\u9065\u6D4B\u5DF2\u5F00\u542F"},disabled:{en:"Telemetry is disabled",zh:"\u9065\u6D4B\u5DF2\u5173\u95ED"},description:{en:"Anonymous usage data helps us improve Tako CLI",zh:"\u533F\u540D\u4F7F\u7528\u6570\u636E\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Tako CLI"}},time:{justNow:{en:"just now",zh:"\u521A\u521A"},minutesAgo:{en:"{n}m ago",zh:"{n}\u5206\u949F\u524D"},hoursAgo:{en:"{n}h ago",zh:"{n}\u5C0F\u65F6\u524D"},yesterday:{en:"yesterday",zh:"\u6628\u5929"},daysAgo:{en:"{n}d ago",zh:"{n}\u5929\u524D"},weeksAgo:{en:"{n}w ago",zh:"{n}\u5468\u524D"},monthsAgo:{en:"{n}mo ago",zh:"{n}\u6708\u524D"}},claudeCode:{settingsDetected:{en:`Detected hardcoded config in Claude Code settings that conflicts with Tako:
|
|
4
4
|
{fields}`,zh:`\u68C0\u6D4B\u5230 Claude Code settings \u4E2D\u5B58\u5728\u4E0E Tako \u51B2\u7A81\u7684\u914D\u7F6E\uFF1A
|
|
5
|
-
{fields}`},confirmClean:{en:"Clean these settings? Tako will manage them automatically at launch",zh:"\u662F\u5426\u6E05\u7406\u8FD9\u4E9B\u914D\u7F6E\uFF1FTako \u542F\u52A8\u65F6\u4F1A\u81EA\u52A8\u6CE8\u5165\u6B63\u786E\u7684\u503C"},settingsCleaned:{en:"Settings cleaned, Tako will manage these configs automatically",zh:"\u5DF2\u6E05\u7406\u5B8C\u6210\uFF0CTako \u4F1A\u81EA\u52A8\u7BA1\u7406\u8FD9\u4E9B\u914D\u7F6E"},cleanSkipped:{en:"Skipped. Note: hardcoded settings may cause issues with Tako",zh:"\u5DF2\u8DF3\u8FC7\u3002\u6CE8\u610F\uFF1A\u5199\u6B7B\u7684\u914D\u7F6E\u53EF\u80FD\u5BFC\u81F4 Tako \u542F\u52A8\u5F02\u5E38"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}}}});import{homedir as AS}from"os";import{join as BS}from"path";import{join as B$}from"path";import{homedir as _2}from"os";import{join as G$}from"path";var k=G$(_2(),".tako"),a1=G$(k,"config.json"),r$=G$(k,"tools"),u=G$(k,"cli"),i=G$(k,"bun"),C=G$(i,"bin",process.platform==="win32"?"bun.exe":"bun"),P2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",p=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Z3=process.env.TAKO_DEV==="true"||P2.includes("localhost"),o1={apiKey:"",apiId:"",installedClients:{}};async function i1(){let $=await import("fs/promises");try{await $.mkdir(k,{recursive:!0}),await $.mkdir(r$,{recursive:!0})}catch{}}async function X(){await i1();try{let $=Bun.file(a1);if(await $.exists()){let S=await $.json();return{...o1,...S}}}catch{}return{...o1}}async function n$($){await i1(),await Bun.write(a1,JSON.stringify($,null,2))}async function l($){let Y={...await X(),...$};return await n$(Y),Y}async function r1(){return!!(await X()).apiKey}async function A$(){return(await X()).apiKey}async function n1(){return(await X()).apiId}function s$($,S){if(!$.startsWith(k))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function R$($){let S=B$(r$,$);return s$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function s1($){let S=R$($.id),Y=B$(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return null;let x=(await E.json()).bin;if(!x)return null;let H=null;if(typeof x==="string")H=x;else if(typeof x==="object"&&x[$.command])H=x[$.command];if(!H)return null;let q=B$(S,"node_modules",$.package,H);return s$(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function e1($){let S=R$($.id),Y=B$(S,"node_modules",".bin",$.command);return s$(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var e$=new Map;function w$($){e$.set($.id,$)}function t1(){return Array.from(e$.values())}function h$($){return e$.get($)}var B=V$($1(),1),j$=V$(H1(),1);import{stdin as v0,stdout as Z0}from"process";import*as r from"readline";import Y0 from"readline";import{WriteStream as c2}from"tty";function D2({onlyFirst:$=!1}={}){let S=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(S,$?void 0:"g")}var p2=D2();function b0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(p2,"")}function z0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var W0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(E){var O=E.charCodeAt(0),x=E.length==2?E.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=x&&x<=57343&&(O&=1023,x&=1023,H=O<<10|x,H+=65536),H==12288||65281<=H&&H<=65376||65504<=H&&H<=65510?"F":H==8361||65377<=H&&H<=65470||65474<=H&&H<=65479||65482<=H&&H<=65487||65490<=H&&H<=65495||65498<=H&&H<=65500||65512<=H&&H<=65518?"H":4352<=H&&H<=4447||4515<=H&&H<=4519||4602<=H&&H<=4607||9001<=H&&H<=9002||11904<=H&&H<=11929||11931<=H&&H<=12019||12032<=H&&H<=12245||12272<=H&&H<=12283||12289<=H&&H<=12350||12353<=H&&H<=12438||12441<=H&&H<=12543||12549<=H&&H<=12589||12593<=H&&H<=12686||12688<=H&&H<=12730||12736<=H&&H<=12771||12784<=H&&H<=12830||12832<=H&&H<=12871||12880<=H&&H<=13054||13056<=H&&H<=19903||19968<=H&&H<=42124||42128<=H&&H<=42182||43360<=H&&H<=43388||44032<=H&&H<=55203||55216<=H&&H<=55238||55243<=H&&H<=55291||63744<=H&&H<=64255||65040<=H&&H<=65049||65072<=H&&H<=65106||65108<=H&&H<=65126||65128<=H&&H<=65131||110592<=H&&H<=110593||127488<=H&&H<=127490||127504<=H&&H<=127546||127552<=H&&H<=127560||127568<=H&&H<=127569||131072<=H&&H<=194367||177984<=H&&H<=196605||196608<=H&&H<=262141?"W":32<=H&&H<=126||162<=H&&H<=163||165<=H&&H<=166||H==172||H==175||10214<=H&&H<=10221||10629<=H&&H<=10630?"Na":H==161||H==164||167<=H&&H<=168||H==170||173<=H&&H<=174||176<=H&&H<=180||182<=H&&H<=186||188<=H&&H<=191||H==198||H==208||215<=H&&H<=216||222<=H&&H<=225||H==230||232<=H&&H<=234||236<=H&&H<=237||H==240||242<=H&&H<=243||247<=H&&H<=250||H==252||H==254||H==257||H==273||H==275||H==283||294<=H&&H<=295||H==299||305<=H&&H<=307||H==312||319<=H&&H<=322||H==324||328<=H&&H<=331||H==333||338<=H&&H<=339||358<=H&&H<=359||H==363||H==462||H==464||H==466||H==468||H==470||H==472||H==474||H==476||H==593||H==609||H==708||H==711||713<=H&&H<=715||H==717||H==720||728<=H&&H<=731||H==733||H==735||768<=H&&H<=879||913<=H&&H<=929||931<=H&&H<=937||945<=H&&H<=961||963<=H&&H<=969||H==1025||1040<=H&&H<=1103||H==1105||H==8208||8211<=H&&H<=8214||8216<=H&&H<=8217||8220<=H&&H<=8221||8224<=H&&H<=8226||8228<=H&&H<=8231||H==8240||8242<=H&&H<=8243||H==8245||H==8251||H==8254||H==8308||H==8319||8321<=H&&H<=8324||H==8364||H==8451||H==8453||H==8457||H==8467||H==8470||8481<=H&&H<=8482||H==8486||H==8491||8531<=H&&H<=8532||8539<=H&&H<=8542||8544<=H&&H<=8555||8560<=H&&H<=8569||H==8585||8592<=H&&H<=8601||8632<=H&&H<=8633||H==8658||H==8660||H==8679||H==8704||8706<=H&&H<=8707||8711<=H&&H<=8712||H==8715||H==8719||H==8721||H==8725||H==8730||8733<=H&&H<=8736||H==8739||H==8741||8743<=H&&H<=8748||H==8750||8756<=H&&H<=8759||8764<=H&&H<=8765||H==8776||H==8780||H==8786||8800<=H&&H<=8801||8804<=H&&H<=8807||8810<=H&&H<=8811||8814<=H&&H<=8815||8834<=H&&H<=8835||8838<=H&&H<=8839||H==8853||H==8857||H==8869||H==8895||H==8978||9312<=H&&H<=9449||9451<=H&&H<=9547||9552<=H&&H<=9587||9600<=H&&H<=9615||9618<=H&&H<=9621||9632<=H&&H<=9633||9635<=H&&H<=9641||9650<=H&&H<=9651||9654<=H&&H<=9655||9660<=H&&H<=9661||9664<=H&&H<=9665||9670<=H&&H<=9672||H==9675||9678<=H&&H<=9681||9698<=H&&H<=9701||H==9711||9733<=H&&H<=9734||H==9737||9742<=H&&H<=9743||9748<=H&&H<=9749||H==9756||H==9758||H==9792||H==9794||9824<=H&&H<=9825||9827<=H&&H<=9829||9831<=H&&H<=9834||9836<=H&&H<=9837||H==9839||9886<=H&&H<=9887||9918<=H&&H<=9919||9924<=H&&H<=9933||9935<=H&&H<=9953||H==9955||9960<=H&&H<=9983||H==10045||H==10071||10102<=H&&H<=10111||11093<=H&&H<=11097||12872<=H&&H<=12879||57344<=H&&H<=63743||65024<=H&&H<=65039||H==65533||127232<=H&&H<=127242||127248<=H&&H<=127277||127280<=H&&H<=127337||127344<=H&&H<=127386||917760<=H&&H<=917999||983040<=H&&H<=1048573||1048576<=H&&H<=1114109?"A":"N"},S.characterLength=function(E){var O=this.eastAsianWidth(E);return O=="F"||O=="W"||O=="A"?2:1};function Y(E){return E.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(E){for(var O=Y(E),x=0,H=0;H<O.length;H++)x=x+this.characterLength(O[H]);return x},S.slice=function(E,O,x){textLen=S.length(E),O=O||0,x=x||1,O<0&&(O=textLen+O),x<0&&(x=textLen+x);for(var H="",q=0,R=Y(E),G=0;G<R.length;G++){var Q=R[G],v=S.length(Q);if(q>=O-(v==2?1:0))if(q+v<=x)H+=Q;else break;q+=v}return H}})(W0);var l2=W0.exports,o2=z0(l2),a2=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},i2=z0(a2);function W$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=b0($),$.length===0))return 0;$=$.replace(i2()," ");let Y=S.ambiguousIsNarrow?1:2,E=0;for(let O of $){let x=O.codePointAt(0);if(x<=31||x>=127&&x<=159||x>=768&&x<=879)continue;switch(o2.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var Y1=10,E0=($=0)=>(S)=>`\x1B[${S+$}m`,O0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,x0=($=0)=>(S,Y,E)=>`\x1B[${38+$};2;${S};${Y};${E}m`,I={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(I.modifier);var r2=Object.keys(I.color),n2=Object.keys(I.bgColor);[...r2,...n2];function s2(){let $=new Map;for(let[S,Y]of Object.entries(I)){for(let[E,O]of Object.entries(Y))I[E]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},Y[E]=I[E],$.set(O[0],O[1]);Object.defineProperty(I,S,{value:Y,enumerable:!1})}return Object.defineProperty(I,"codes",{value:$,enumerable:!1}),I.color.close="\x1B[39m",I.bgColor.close="\x1B[49m",I.color.ansi=E0(),I.color.ansi256=O0(),I.color.ansi16m=x0(),I.bgColor.ansi=E0(Y1),I.bgColor.ansi256=O0(Y1),I.bgColor.ansi16m=x0(Y1),Object.defineProperties(I,{rgbToAnsi256:{value:(S,Y,E)=>S===Y&&Y===E?S<8?16:S>248?231:Math.round((S-8)/247*24)+232:16+36*Math.round(S/255*5)+6*Math.round(Y/255*5)+Math.round(E/255*5),enumerable:!1},hexToRgb:{value:(S)=>{let Y=/[a-f\d]{6}|[a-f\d]{3}/i.exec(S.toString(16));if(!Y)return[0,0,0];let[E]=Y;E.length===3&&(E=[...E].map((x)=>x+x).join(""));let O=Number.parseInt(E,16);return[O>>16&255,O>>8&255,O&255]},enumerable:!1},hexToAnsi256:{value:(S)=>I.rgbToAnsi256(...I.hexToRgb(S)),enumerable:!1},ansi256ToAnsi:{value:(S)=>{if(S<8)return 30+S;if(S<16)return 90+(S-8);let Y,E,O;if(S>=232)Y=((S-232)*10+8)/255,E=Y,O=Y;else{S-=16;let q=S%36;Y=Math.floor(S/36)/5,E=Math.floor(q/6)/5,O=q%6/5}let x=Math.max(Y,E,O)*2;if(x===0)return 30;let H=30+(Math.round(O)<<2|Math.round(E)<<1|Math.round(Y));return x===2&&(H+=60),H},enumerable:!1},rgbToAnsi:{value:(S,Y,E)=>I.ansi256ToAnsi(I.rgbToAnsi256(S,Y,E)),enumerable:!1},hexToAnsi:{value:(S)=>I.ansi256ToAnsi(I.hexToAnsi256(S)),enumerable:!1}}),I}var e2=s2(),y$=new Set(["\x1B","\x9B"]),t2=39,O1="\x07",J0="[",$S="]",T0="m",x1=`${$S}8;;`,q0=($)=>`${y$.values().next().value}${J0}${$}${T0}`,G0=($)=>`${y$.values().next().value}${x1}${$}${O1}`,SS=($)=>$.split(" ").map((S)=>W$(S)),E1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=W$(b0($[$.length-1]));for(let[q,R]of E.entries()){let G=W$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),y$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(x1)),O){x?R===O1&&(O=!1,x=!1):R===T0&&(O=!1);continue}H+=G,H===Y&&q<E.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},HS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(W$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},YS=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=SS($),q=[""];for(let[G,Q]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let v=W$(q[q.length-1]);if(G!==0&&(v>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),v=0),(v>0||Y.trim===!1)&&(q[q.length-1]+=" ",v++)),Y.hard&&H[G]>S){let z=S-v,V=1+Math.floor((H[G]-z-1)/S);Math.floor((H[G]-1)/S)<V&&q.push(""),E1(q,Q,S);continue}if(v+H[G]>S&&v>0&&H[G]>0){if(Y.wordWrap===!1&&v<S){E1(q,Q,S);continue}q.push("")}if(v+H[G]>S&&Y.wordWrap===!1){E1(q,Q,S);continue}q[q.length-1]+=Q}Y.trim!==!1&&(q=q.map((G)=>HS(G)));let R=[...q.join(`
|
|
6
|
-
`)];for(let[G,
|
|
7
|
-
`?(x&&(E+=G0("")),O&&
|
|
8
|
-
`&&(O&&
|
|
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 BS}from"os";import{join as hS}from"path";import{join as h$}from"path";import{homedir as P2}from"os";import{join as G$}from"path";var u=G$(P2(),".tako"),a1=G$(u,"config.json"),n$=G$(u,"tools"),g=G$(u,"cli"),i=G$(u,"bun"),m=G$(i,"bin",process.platform==="win32"?"bun.exe":"bun"),F2=process.env.TAKO_SERVER||"https://tako.shiroha.tech",p=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",v3=process.env.TAKO_DEV==="true"||F2.includes("localhost"),o1={apiKey:"",apiId:"",installedClients:{}};async function i1(){let $=await import("fs/promises");try{await $.mkdir(u,{recursive:!0}),await $.mkdir(n$,{recursive:!0})}catch{}}async function X(){await i1();try{let $=Bun.file(a1);if(await $.exists()){let S=await $.json();return{...o1,...S}}}catch{}return{...o1}}async function s$($){await i1(),await Bun.write(a1,JSON.stringify($,null,2))}async function l($){let Y={...await X(),...$};return await s$(Y),Y}async function r1(){return!!(await X()).apiKey}async function B$(){return(await X()).apiKey}async function n1(){return(await X()).apiId}function e$($,S){if(!$.startsWith(u))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function R$($){let S=h$(n$,$);return e$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function s1($){let S=R$($.id),Y=h$(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=h$(S,"node_modules",$.package,H);return e$(q,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),q}catch{return null}}function e1($){let S=R$($.id),Y=h$(S,"node_modules",".bin",$.command);return e$(Y,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),Y}var t$=new Map;function M$($){t$.set($.id,$)}function t1(){return Array.from(t$.values())}function K$($){return t$.get($)}var B=A$(S1(),1),y$=A$(Y1(),1);import{stdin as Z0,stdout as v0}from"process";import*as r from"readline";import Y0 from"readline";import{WriteStream as D2}from"tty";function p2({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 l2=p2();function z0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(l2,"")}function b0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var W0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(E){var O=E.charCodeAt(0),x=E.length==2?E.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=x&&x<=57343&&(O&=1023,x&=1023,H=O<<10|x,H+=65536),H==12288||65281<=H&&H<=65376||65504<=H&&H<=65510?"F":H==8361||65377<=H&&H<=65470||65474<=H&&H<=65479||65482<=H&&H<=65487||65490<=H&&H<=65495||65498<=H&&H<=65500||65512<=H&&H<=65518?"H":4352<=H&&H<=4447||4515<=H&&H<=4519||4602<=H&&H<=4607||9001<=H&&H<=9002||11904<=H&&H<=11929||11931<=H&&H<=12019||12032<=H&&H<=12245||12272<=H&&H<=12283||12289<=H&&H<=12350||12353<=H&&H<=12438||12441<=H&&H<=12543||12549<=H&&H<=12589||12593<=H&&H<=12686||12688<=H&&H<=12730||12736<=H&&H<=12771||12784<=H&&H<=12830||12832<=H&&H<=12871||12880<=H&&H<=13054||13056<=H&&H<=19903||19968<=H&&H<=42124||42128<=H&&H<=42182||43360<=H&&H<=43388||44032<=H&&H<=55203||55216<=H&&H<=55238||55243<=H&&H<=55291||63744<=H&&H<=64255||65040<=H&&H<=65049||65072<=H&&H<=65106||65108<=H&&H<=65126||65128<=H&&H<=65131||110592<=H&&H<=110593||127488<=H&&H<=127490||127504<=H&&H<=127546||127552<=H&&H<=127560||127568<=H&&H<=127569||131072<=H&&H<=194367||177984<=H&&H<=196605||196608<=H&&H<=262141?"W":32<=H&&H<=126||162<=H&&H<=163||165<=H&&H<=166||H==172||H==175||10214<=H&&H<=10221||10629<=H&&H<=10630?"Na":H==161||H==164||167<=H&&H<=168||H==170||173<=H&&H<=174||176<=H&&H<=180||182<=H&&H<=186||188<=H&&H<=191||H==198||H==208||215<=H&&H<=216||222<=H&&H<=225||H==230||232<=H&&H<=234||236<=H&&H<=237||H==240||242<=H&&H<=243||247<=H&&H<=250||H==252||H==254||H==257||H==273||H==275||H==283||294<=H&&H<=295||H==299||305<=H&&H<=307||H==312||319<=H&&H<=322||H==324||328<=H&&H<=331||H==333||338<=H&&H<=339||358<=H&&H<=359||H==363||H==462||H==464||H==466||H==468||H==470||H==472||H==474||H==476||H==593||H==609||H==708||H==711||713<=H&&H<=715||H==717||H==720||728<=H&&H<=731||H==733||H==735||768<=H&&H<=879||913<=H&&H<=929||931<=H&&H<=937||945<=H&&H<=961||963<=H&&H<=969||H==1025||1040<=H&&H<=1103||H==1105||H==8208||8211<=H&&H<=8214||8216<=H&&H<=8217||8220<=H&&H<=8221||8224<=H&&H<=8226||8228<=H&&H<=8231||H==8240||8242<=H&&H<=8243||H==8245||H==8251||H==8254||H==8308||H==8319||8321<=H&&H<=8324||H==8364||H==8451||H==8453||H==8457||H==8467||H==8470||8481<=H&&H<=8482||H==8486||H==8491||8531<=H&&H<=8532||8539<=H&&H<=8542||8544<=H&&H<=8555||8560<=H&&H<=8569||H==8585||8592<=H&&H<=8601||8632<=H&&H<=8633||H==8658||H==8660||H==8679||H==8704||8706<=H&&H<=8707||8711<=H&&H<=8712||H==8715||H==8719||H==8721||H==8725||H==8730||8733<=H&&H<=8736||H==8739||H==8741||8743<=H&&H<=8748||H==8750||8756<=H&&H<=8759||8764<=H&&H<=8765||H==8776||H==8780||H==8786||8800<=H&&H<=8801||8804<=H&&H<=8807||8810<=H&&H<=8811||8814<=H&&H<=8815||8834<=H&&H<=8835||8838<=H&&H<=8839||H==8853||H==8857||H==8869||H==8895||H==8978||9312<=H&&H<=9449||9451<=H&&H<=9547||9552<=H&&H<=9587||9600<=H&&H<=9615||9618<=H&&H<=9621||9632<=H&&H<=9633||9635<=H&&H<=9641||9650<=H&&H<=9651||9654<=H&&H<=9655||9660<=H&&H<=9661||9664<=H&&H<=9665||9670<=H&&H<=9672||H==9675||9678<=H&&H<=9681||9698<=H&&H<=9701||H==9711||9733<=H&&H<=9734||H==9737||9742<=H&&H<=9743||9748<=H&&H<=9749||H==9756||H==9758||H==9792||H==9794||9824<=H&&H<=9825||9827<=H&&H<=9829||9831<=H&&H<=9834||9836<=H&&H<=9837||H==9839||9886<=H&&H<=9887||9918<=H&&H<=9919||9924<=H&&H<=9933||9935<=H&&H<=9953||H==9955||9960<=H&&H<=9983||H==10045||H==10071||10102<=H&&H<=10111||11093<=H&&H<=11097||12872<=H&&H<=12879||57344<=H&&H<=63743||65024<=H&&H<=65039||H==65533||127232<=H&&H<=127242||127248<=H&&H<=127277||127280<=H&&H<=127337||127344<=H&&H<=127386||917760<=H&&H<=917999||983040<=H&&H<=1048573||1048576<=H&&H<=1114109?"A":"N"},S.characterLength=function(E){var O=this.eastAsianWidth(E);return O=="F"||O=="W"||O=="A"?2:1};function Y(E){return E.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(E){for(var O=Y(E),x=0,H=0;H<O.length;H++)x=x+this.characterLength(O[H]);return x},S.slice=function(E,O,x){textLen=S.length(E),O=O||0,x=x||1,O<0&&(O=textLen+O),x<0&&(x=textLen+x);for(var H="",q=0,R=Y(E),G=0;G<R.length;G++){var w=R[G],Z=S.length(w);if(q>=O-(Z==2?1:0))if(q+Z<=x)H+=w;else break;q+=Z}return H}})(W0);var o2=W0.exports,a2=b0(o2),i2=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},r2=b0(i2);function W$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=z0($),$.length===0))return 0;$=$.replace(r2()," ");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(a2.eastAsianWidth(O)){case"F":case"W":E+=2;break;case"A":E+=Y;break;default:E+=1}}return E}var E1=10,E0=($=0)=>(S)=>`\x1B[${S+$}m`,O0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,x0=($=0)=>(S,Y,E)=>`\x1B[${38+$};2;${S};${Y};${E}m`,I={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(I.modifier);var n2=Object.keys(I.color),s2=Object.keys(I.bgColor);[...n2,...s2];function e2(){let $=new Map;for(let[S,Y]of Object.entries(I)){for(let[E,O]of Object.entries(Y))I[E]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},Y[E]=I[E],$.set(O[0],O[1]);Object.defineProperty(I,S,{value:Y,enumerable:!1})}return Object.defineProperty(I,"codes",{value:$,enumerable:!1}),I.color.close="\x1B[39m",I.bgColor.close="\x1B[49m",I.color.ansi=E0(),I.color.ansi256=O0(),I.color.ansi16m=x0(),I.bgColor.ansi=E0(E1),I.bgColor.ansi256=O0(E1),I.bgColor.ansi16m=x0(E1),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 t2=e2(),f$=new Set(["\x1B","\x9B"]),$S=39,x1="\x07",T0="[",SS="]",J0="m",q1=`${SS}8;;`,q0=($)=>`${f$.values().next().value}${T0}${$}${J0}`,G0=($)=>`${f$.values().next().value}${q1}${$}${x1}`,HS=($)=>$.split(" ").map((S)=>W$(S)),O1=($,S,Y)=>{let E=[...S],O=!1,x=!1,H=W$(z0($[$.length-1]));for(let[q,R]of E.entries()){let G=W$(R);if(H+G<=Y?$[$.length-1]+=R:($.push(R),H=0),f$.has(R)&&(O=!0,x=E.slice(q+1).join("").startsWith(q1)),O){x?R===x1&&(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())},YS=($)=>{let S=$.split(" "),Y=S.length;for(;Y>0&&!(W$(S[Y-1])>0);)Y--;return Y===S.length?$:S.slice(0,Y).join(" ")+S.slice(Y).join("")},ES=($,S,Y={})=>{if(Y.trim!==!1&&$.trim()==="")return"";let E="",O,x,H=HS($),q=[""];for(let[G,w]of $.split(" ").entries()){Y.trim!==!1&&(q[q.length-1]=q[q.length-1].trimStart());let Z=W$(q[q.length-1]);if(G!==0&&(Z>=S&&(Y.wordWrap===!1||Y.trim===!1)&&(q.push(""),Z=0),(Z>0||Y.trim===!1)&&(q[q.length-1]+=" ",Z++)),Y.hard&&H[G]>S){let z=S-Z,U=1+Math.floor((H[G]-z-1)/S);Math.floor((H[G]-1)/S)<U&&q.push(""),O1(q,w,S);continue}if(Z+H[G]>S&&Z>0&&H[G]>0){if(Y.wordWrap===!1&&Z<S){O1(q,w,S);continue}q.push("")}if(Z+H[G]>S&&Y.wordWrap===!1){O1(q,w,S);continue}q[q.length-1]+=w}Y.trim!==!1&&(q=q.map((G)=>YS(G)));let R=[...q.join(`
|
|
6
|
+
`)];for(let[G,w]of R.entries()){if(E+=w,f$.has(w)){let{groups:z}=new RegExp(`(?:\\${T0}(?<code>\\d+)m|\\${q1}(?<uri>.*)${x1})`).exec(R.slice(G).join(""))||{groups:{}};if(z.code!==void 0){let U=Number.parseFloat(z.code);O=U===$S?void 0:U}else z.uri!==void 0&&(x=z.uri.length===0?void 0:z.uri)}let Z=t2.codes.get(Number(O));R[G+1]===`
|
|
7
|
+
`?(x&&(E+=G0("")),O&&Z&&(E+=q0(Z))):w===`
|
|
8
|
+
`&&(O&&Z&&(E+=q0(O)),x&&(E+=G0(x)))}return E};function R0($,S,Y){return String($).normalize().replace(/\r\n/g,`
|
|
9
9
|
`).split(`
|
|
10
|
-
`).map((E)=>
|
|
11
|
-
`)}var
|
|
10
|
+
`).map((E)=>ES(E,S,Y)).join(`
|
|
11
|
+
`)}var OS=Object.defineProperty,xS=($,S,Y)=>(S in $)?OS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,f=($,S,Y)=>(xS($,typeof S!="symbol"?S+"":S,Y),Y);function qS($,S){if($===S)return;let Y=$.split(`
|
|
12
12
|
`),E=S.split(`
|
|
13
|
-
`),O=[];for(let x=0;x<Math.max(Y.length,E.length);x++)Y[x]!==E[x]&&O.push(x);return O}var I0=Symbol("clack:cancel");function A($){return $===I0}function
|
|
14
|
-
`),
|
|
15
|
-
`).length-1;this.output.write(B.cursor.move(-999,$*-1))}render(){let $=R0(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(B.cursor.hide);else{let S=
|
|
13
|
+
`),O=[];for(let x=0;x<Math.max(Y.length,E.length);x++)Y[x]!==E[x]&&O.push(x);return O}var I0=Symbol("clack:cancel");function A($){return $===I0}function j$($,S){$.isTTY&&$.setRawMode(S)}var M0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),GS=new Set(["up","down","left","right","space","enter"]);class T${constructor({render:$,input:S=Z0,output:Y=v0,...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 D2(0);return $._write=(S,Y,E)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),E()},this.input.pipe($),this.rl=Y0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),Y0.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),j$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,Y)=>{this.once("submit",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),j$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),j$(this.input,!1),S(I0)})})}on($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S}),this.subscribers.set($,Y)}once($,S){let Y=this.subscribers.get($)??[];Y.push({cb:S,once:!0}),this.subscribers.set($,Y)}emit($,...S){let Y=this.subscribers.get($)??[],E=[];for(let O of Y)O.cb(...S),O.once&&E.push(()=>Y.splice(Y.indexOf(O),1));for(let O of E)O()}unsubscribe(){this.subscribers.clear()}onKeypress($,S){if(this.state==="error"&&(this.state="active"),S?.name&&!this._track&&M0.has(S.name)&&this.emit("cursor",M0.get(S.name)),S?.name&&GS.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
|
+
`),j$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=R0(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
15
|
+
`).length-1;this.output.write(B.cursor.move(-999,$*-1))}render(){let $=R0(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(B.cursor.hide);else{let S=qS(this._prevFrame,$);if(this.restoreCursor(),S&&S?.length===1){let Y=S[0];this.output.write(B.cursor.move(0,Y)),this.output.write(B.erase.lines(1));let E=$.split(`
|
|
16
16
|
`);this.output.write(E[Y]),this._prevFrame=$,this.output.write(B.cursor.move(0,E.length-Y-1));return}else if(S&&S?.length>1){let Y=S[0];this.output.write(B.cursor.move(0,Y)),this.output.write(B.erase.down());let E=$.split(`
|
|
17
17
|
`).slice(Y);this.output.write(E.join(`
|
|
18
|
-
`)),this._prevFrame=$;return}this.output.write(B.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class
|
|
19
|
-
${
|
|
20
|
-
`,Y=$.placeholder?
|
|
21
|
-
${
|
|
22
|
-
${
|
|
23
|
-
`;case"submit":return`${S}${
|
|
24
|
-
`+
|
|
25
|
-
${
|
|
26
|
-
`}}}).prompt();var n=($)=>{let S=$.active??"Yes",Y=$.inactive??"No";return new
|
|
27
|
-
${
|
|
28
|
-
`,O=this.value?S:Y;switch(this.state){case"submit":return`${E}${
|
|
29
|
-
${
|
|
30
|
-
${
|
|
31
|
-
`}}}).prompt()},S$=($)=>{let S=(E,O)=>{let x=E.label??String(E.value);return O==="active"?`${
|
|
32
|
-
${
|
|
33
|
-
`;switch(this.state){case"submit":return`${E}${
|
|
34
|
-
${
|
|
35
|
-
${
|
|
36
|
-
${
|
|
37
|
-
`}}}}).prompt()};var h0=($)=>{let S=(Y,E)=>{let O=Y.label??String(Y.value);return E==="active"?`${
|
|
38
|
-
${
|
|
39
|
-
${
|
|
40
|
-
`;switch(this.state){case"submit":return`${Y}${
|
|
41
|
-
${
|
|
42
|
-
`).map((O,x)=>x===0?`${
|
|
43
|
-
`);return Y+
|
|
44
|
-
${
|
|
18
|
+
`)),this._prevFrame=$;return}this.output.write(B.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class G1 extends T${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(S)=>{this.output.write(B.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var RS=Object.defineProperty,MS=($,S,Y)=>(S in $)?RS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,Q0=($,S,Y)=>(MS($,typeof S!="symbol"?S+"":S,Y),Y),X0=class extends T${constructor($){super($,!1),Q0(this,"options"),Q0(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 QS=Object.defineProperty,wS=($,S,Y)=>(S in $)?QS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,w0=($,S,Y)=>(wS($,typeof S!="symbol"?S+"":S,Y),Y),L0=class extends T${constructor($){super($,!1),w0(this,"options"),w0(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 ZS=Object.defineProperty,vS=($,S,Y)=>(S in $)?ZS($,S,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[S]=Y,zS=($,S,Y)=>(vS($,typeof S!="symbol"?S+"":S,Y),Y);class R1 extends T${constructor($){super($),zS(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=$.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${y$.default.inverse(y$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),Y=this.value.slice(this.cursor);this.valueWithCursor=`${S}${y$.default.inverse(Y[0])}${Y.slice(1)}`}})}get cursor(){return this._cursor}}var bS=globalThis.process.platform.startsWith("win");function N0({input:$=Z0,output:S=v0,overwrite:Y=!0,hideCursor:E=!0}={}){let O=r.createInterface({input:$,output:S,prompt:"",tabSize:1});r.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let x=(H,{name:q})=>{if(String(H)==="\x03"){E&&S.write(B.cursor.show),process.exit(0);return}if(!Y)return;r.moveCursor(S,q==="return"?0:-1,q==="return"?-1:0,()=>{r.clearLine(S,1,()=>{$.once("keypress",x)})})};return E&&S.write(B.cursor.hide),$.once("keypress",x),()=>{$.off("keypress",x),E&&S.write(B.cursor.show),$.isTTY&&!bS&&$.setRawMode(!1),O.terminal=!1,O.close()}}var M=A$(Y1(),1),Q$=A$(S1(),1);import P from"process";function WS(){return P.platform!=="win32"?P.env.TERM!=="linux":Boolean(P.env.CI)||Boolean(P.env.WT_SESSION)||Boolean(P.env.TERMINUS_SUBLIME)||P.env.ConEmuTask==="{cmd::Cmder}"||P.env.TERM_PROGRAM==="Terminus-Sublime"||P.env.TERM_PROGRAM==="vscode"||P.env.TERM==="xterm-256color"||P.env.TERM==="alacritty"||P.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var M1=WS(),V=($,S)=>M1?$:S,TS=V("\u25C6","*"),V0=V("\u25A0","x"),A0=V("\u25B2","x"),Z1=V("\u25C7","o"),y3=V("\u250C","T"),W=V("\u2502","|"),$$=V("\u2514","\u2014"),Q1=V("\u25CF",">"),w1=V("\u25CB"," "),JS=V("\u25FB","[\u2022]"),U0=V("\u25FC","[+]"),IS=V("\u25FB","[ ]"),f3=V("\u25AA","\u2022"),_3=V("\u2500","-"),P3=V("\u256E","+"),F3=V("\u251C","+"),k3=V("\u256F","+"),XS=V("\u25CF","\u2022"),LS=V("\u25C6","*"),NS=V("\u25B2","!"),US=V("\u25A0","x"),_$=($)=>{switch($){case"initial":case"active":return M.default.cyan(TS);case"cancel":return M.default.red(V0);case"error":return M.default.yellow(A0);case"submit":return M.default.green(Z1)}},B0=($)=>new R1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${M.default.gray(W)}
|
|
19
|
+
${_$(this.state)} ${$.message}
|
|
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(W)} ${E}
|
|
22
|
+
${M.default.yellow($$)} ${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($$)}
|
|
26
|
+
`}}}).prompt();var n=($)=>{let S=$.active??"Yes",Y=$.inactive??"No";return new G1({active:S,inactive:Y,initialValue:$.initialValue??!0,render(){let E=`${M.default.gray(W)}
|
|
27
|
+
${_$(this.state)} ${$.message}
|
|
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(Q1)} ${S}`:`${M.default.dim(w1)} ${M.default.dim(S)}`} ${M.default.dim("/")} ${this.value?`${M.default.dim(w1)} ${M.default.dim(Y)}`:`${M.default.green(Q1)} ${Y}`}
|
|
30
|
+
${M.default.cyan($$)}
|
|
31
|
+
`}}}).prompt()},S$=($)=>{let S=(E,O)=>{let x=E.label??String(E.value);return O==="active"?`${M.default.green(Q1)} ${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(w1)} ${M.default.dim(x)}`},Y=0;return new L0({options:$.options,initialValue:$.initialValue,render(){let E=`${M.default.gray(W)}
|
|
32
|
+
${_$(this.state)} ${$.message}
|
|
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($$)}
|
|
37
|
+
`}}}}).prompt()};var h0=($)=>{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(U0)} ${M.default.dim(O)}`:E==="cancelled"?`${M.default.strikethrough(M.default.dim(O))}`:E==="active-selected"?`${M.default.green(U0)} ${O} ${Y.hint?M.default.dim(`(${Y.hint})`):""}`:E==="submitted"?`${M.default.dim(O)}`:`${M.default.dim(IS)} ${M.default.dim(O)}`};return new X0({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(Y){if(this.required&&Y.length===0)return`Please select at least one option.
|
|
38
|
+
${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
|
+
${_$(this.state)} ${$.message}
|
|
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($$)} ${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}${
|
|
47
|
-
${
|
|
48
|
-
${
|
|
49
|
-
`}}}).prompt()};var v1=($="")=>{process.stdout.write(`${
|
|
50
|
-
${
|
|
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($$)}
|
|
49
|
+
`}}}).prompt()};var v1=($="")=>{process.stdout.write(`${M.default.gray(W)}
|
|
50
|
+
${M.default.gray($$)} ${$}
|
|
51
51
|
|
|
52
|
-
`)},
|
|
53
|
-
`);Y.push(`${S} ${E}`,...O.map((x)=>`${
|
|
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
|
|
57
|
-
`),Y()},R=(
|
|
58
|
-
`),
|
|
55
|
+
`)},info:($)=>{v.message($,{symbol:M.default.blue(XS)})},success:($)=>{v.message($,{symbol:M.default.green(LS)})},step:($)=>{v.message($,{symbol:M.default.green(Z1)})},warn:($)=>{v.message($,{symbol:M.default.yellow(NS)})},warning:($)=>{v.warn($)},error:($)=>{v.message($,{symbol:M.default.red(US)})}},d=()=>{let $=M1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=M1?80:120,Y,E,O=!1,x="",H=(w="")=>{O=!0,Y=N0(),x=w.replace(/\.+$/,""),process.stdout.write(`${M.default.gray(W)}
|
|
56
|
+
`);let Z=0,z=0;E=setInterval(()=>{let U=M.default.magenta($[Z]),C=".".repeat(Math.floor(z)).slice(0,3);process.stdout.write(Q$.cursor.move(-999,0)),process.stdout.write(Q$.erase.down(1)),process.stdout.write(`${U} ${x}${C}`),Z=Z+1<$.length?Z+1:0,z=z<$.length?z+0.125:0},S)},q=(w="",Z=0)=>{x=w??x,O=!1,clearInterval(E);let z=Z===0?M.default.green(Z1):Z===1?M.default.red(V0):M.default.red(A0);process.stdout.write(Q$.cursor.move(-999,0)),process.stdout.write(Q$.erase.down(1)),process.stdout.write(`${z} ${x}
|
|
57
|
+
`),Y()},R=(w="")=>{x=w??x},G=(w)=>{let Z=w>1?"Something went wrong":"Canceled";O&&q(Z,w)};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}};K();var C0=hS(BS(),".claude","settings.json"),KS=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function CS($){if($.startsWith("ANTHROPIC_"))return!0;return KS.includes($)}async function mS(){let $=await import("fs/promises"),S;try{S=await $.readFile(C0,"utf-8")}catch{return}let Y;try{Y=JSON.parse(S)}catch{return}let E=[];if(Y.env&&typeof Y.env==="object"){for(let x of Object.keys(Y.env))if(CS(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 n({message:Q("claudeCode.confirmClean"),initialValue:!0});if(A(O)||!O){v.info(Q("claudeCode.cleanSkipped"));return}await $.writeFile(C0,JSON.stringify(Y,null,2)+`
|
|
58
|
+
`),v.success(Q("claudeCode.settingsCleaned"))}var jS={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${p}/api`,ANTHROPIC_AUTH_TOKEN:$,CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"}},async setupConfigFiles(){await mS()},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"]}]};M$(jS);import{homedir as aS}from"os";import{join as L1}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 @@ ${w.default.gray($$)} ${$}
|
|
|
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 yS($,S){let Y=$.slice(0,S).split(/\r\n|\n|\r/g);return[Y.length,Y.pop().length+1]}function fS($,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 b extends Error{line;column;codeblock;constructor($,S){let[Y,E]=
|
|
86
|
+
`}return O}class b extends Error{line;column;codeblock;constructor($,S){let[Y,E]=yS(S.toml,S.ptr),O=fS(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 _S($,S){let Y=0;while($[S-++Y]==="\\");return--Y&&Y%2}function F$($,S=0,Y=$.length){let E=$.indexOf(`
|
|
115
|
+
`,S);if($[E-1]==="\r")E--;return E<=Y?E:-1}function Z$($,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 b("control characters are not allowed in comments",{toml:$,ptr:S})}return $.length}function
|
|
117
|
+
`)return Y+1;if(E<" "&&E!=="\t"||E==="\x7F")throw new b("control characters are not allowed in comments",{toml:$,ptr:S})}return $.length}function j($,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=Z$($,S)}return S}function m0($,S,Y,E,O=!1){if(!E)return S=F$($,S),S<0?$.length:S;for(let x=S;x<$.length;x++){let H=$[x];if(H==="#")x=F$($,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 b("cannot find end of structure",{toml:$,ptr:S})}function
|
|
121
|
+
`))return x}throw new b("cannot find end of structure",{toml:$,ptr:S})}function k$($,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!=="'"&&_S($,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 PS=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class e extends Date{#S=!1;#H=!1;#$=null;constructor($){let S=!0,Y=!0,E="Z";if(typeof $==="string"){let O=$.match(PS);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 e($);return Y.#$=S,Y}static wrapAsLocalDateTime($){let S=new e($);return S.#$=null,S}static wrapAsLocalDate($){let S=new e($);return S.#H=!1,S.#$=null,S}static wrapAsLocalTime($){let S=new e($);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
|
|
174
|
-
`,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function
|
|
173
|
+
*/var FS=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,kS=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,uS=/^[+-]?0[0-9_]/,gS=/^[0-9a-f]{2,8}$/i,j0={b:"\b",t:"\t",n:`
|
|
174
|
+
`,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function u$($,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 b("newlines are not allowed in strings",{toml:$,ptr:S-1})}else if(G<" "&&G!=="\t"||G==="\x7F")throw new b("control characters are not allowed in strings",{toml:$,ptr:S-1});if(H){if(H=!1,G==="x"||G==="u"||G==="U"){let
|
|
178
|
-
`||G===" "||G==="\t"||G==="\r")){if(S=
|
|
179
|
-
`&&$[S]!=="\r")throw new b("invalid escape: only line-ending whitespace may be escaped",{toml:$,ptr:x});S=
|
|
177
|
+
`){if(!O)throw new b("newlines are not allowed in strings",{toml:$,ptr:S-1})}else if(G<" "&&G!=="\t"||G==="\x7F")throw new b("control characters are not allowed in strings",{toml:$,ptr:S-1});if(H){if(H=!1,G==="x"||G==="u"||G==="U"){let w=$.slice(S,S+=G==="x"?2:G==="u"?4:8);if(!gS.test(w))throw new b("invalid unicode escape",{toml:$,ptr:x});try{q+=String.fromCodePoint(parseInt(w,16))}catch{throw new b("invalid unicode escape",{toml:$,ptr:x})}}else if(O&&(G===`
|
|
178
|
+
`||G===" "||G==="\t"||G==="\r")){if(S=j($,S-1,!0),$[S]!==`
|
|
179
|
+
`&&$[S]!=="\r")throw new b("invalid escape: only line-ending whitespace may be escaped",{toml:$,ptr:x});S=j($,S)}else if(G in j0)q+=j0[G];else throw new b("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 y0($,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=FS.test($);if(O||kS.test($)){if(uS.test($))throw new b("leading zeroes are not allowed",{toml:S,ptr:Y});$=$.replace(/_/g,"");let H=+$;if(isNaN(H))throw new b("invalid number",{toml:S,ptr:Y});if(O){if((O=!Number.isSafeInteger(H))&&!E)throw new b("integer value cannot be represented losslessly",{toml:S,ptr:Y});if(O||E===!0)H=BigInt($)}return H}let x=new e($);if(!x.isValid())throw new b("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 b("unexpected character encountered",{toml:$,ptr:H});H+=+($[H]===",")}return[R,H]}H=m0($,S,",",Y);let q=
|
|
205
|
+
*/function dS($,S,Y){let E=$.slice(S,Y),O=E.indexOf("#");if(O>-1)Z$($,O),E=E.slice(0,O);return[E.trimEnd(),O]}function J$($,S,Y,E,O){if(E===0)throw new b("document contains excessively nested structures. aborting.",{toml:$,ptr:S});let x=$[S];if(x==="["||x==="{"){let[R,G]=x==="["?_0($,S,E,O):f0($,S,E,O);if(Y){if(G=j($,G),$[G]===",")G++;else if($[G]!==Y)throw new b("expected comma or end of structure",{toml:$,ptr:G})}return[R,G]}let H;if(x==='"'||x==="'"){H=k$($,S);let R=u$($,S,H);if(Y){if(H=j($,H),$[H]&&$[H]!==","&&$[H]!==Y&&$[H]!==`
|
|
206
|
+
`&&$[H]!=="\r")throw new b("unexpected character encountered",{toml:$,ptr:H});H+=+($[H]===",")}return[R,H]}H=m0($,S,",",Y);let q=dS($,S,H-+($[H-1]===","));if(!q[0])throw new b("incomplete key-value declaration: no value specified",{toml:$,ptr:S});if(Y&&q[1]>-1)H=j($,S+q[1]),H+=+($[H]===",");return[y0(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,[
|
|
234
|
-
`&&x!=="\r"){let H=
|
|
232
|
+
*/var cS=/^[a-zA-Z0-9-_]+[ \t]*$/;function g$($,S,Y="="){let E=S-1,O=[],x=$.indexOf(Y,S);if(x<0)throw new b("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 b("multiline strings are not allowed in keys",{toml:$,ptr:S});let q=k$($,S);if(q<0)throw new b("unfinished string encountered",{toml:$,ptr:S});E=$.indexOf(".",q);let R=$.slice(q,E<0||E>x?x:E),G=F$(R);if(G>-1)throw new b("newlines are not allowed in keys",{toml:$,ptr:S+E+G});if(R.trimStart())throw new b("found extra tokens after the string part",{toml:$,ptr:q});if(x<q){if(x=$.indexOf(Y,q),x<0)throw new b("incomplete key-value: cannot find end of key",{toml:$,ptr:S})}O.push(u$($,S,q))}else{E=$.indexOf(".",S);let q=$.slice(S,E<0||E>x?x:E);if(!cS.test(q))throw new b("only letter, numbers, dashes and underscores are allowed in keys",{toml:$,ptr:S});O.push(q.trimEnd())}}while(E+1&&E<x);return[O,j($,x+1,!0,!0)]}function f0($,S,Y,E){let O={},x=new Set,H;S++;while((H=$[S++])!=="}"&&H)if(H===",")throw new b("expected value, found comma",{toml:$,ptr:S-1});else if(H==="#")S=Z$($,S);else if(H!==" "&&H!=="\t"&&H!==`
|
|
233
|
+
`&&H!=="\r"){let q,R=O,G=!1,[w,Z]=g$($,S-1);for(let C=0;C<w.length;C++){if(C)R=G?R[q]:R[q]={};if(q=w[C],(G=Object.hasOwn(R,q))&&(typeof R[q]!=="object"||x.has(R[q])))throw new b("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 b("trying to redefine an already defined value",{toml:$,ptr:S});let[z,U]=J$($,Z,"}",Y-1,E);x.add(z),R[q]=z,S=U}if(!H)throw new b("unfinished table encountered",{toml:$,ptr:S});return[O,S]}function _0($,S,Y,E){let O=[],x;S++;while((x=$[S++])!=="]"&&x)if(x===",")throw new b("expected value, found comma",{toml:$,ptr:S-1});else if(x==="#")S=Z$($,S);else if(x!==" "&&x!=="\t"&&x!==`
|
|
234
|
+
`&&x!=="\r"){let H=J$($,S-1,"]",Y-1,E);O.push(H[0]),S=H[1]}if(!x)throw new b("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 P0($,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
|
|
261
|
-
`&&$[q]!=="\r")throw new b("each key-value declaration must be followed by an end-of-line",{toml:$,ptr:q});q=
|
|
260
|
+
*/function P0($,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 w=O.length-1;O=O[w],x=x[w].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 b1($,{maxDepth:S=1000,integersAsBigInt:Y}={}){let E={},O={},x=E,H=O;for(let q=j($,0);q<$.length;){if($[q]==="["){let R=$[++q]==="[",G=g$($,q+=+R,"]");if(R){if($[G[1]-1]!=="]")throw new b("expected end of table declaration",{toml:$,ptr:G[1]-1});G[1]++}let w=P0(G[0],E,O,R?2:1);if(!w)throw new b("trying to redefine an already defined table or value",{toml:$,ptr:q});H=w[2],x=w[1],q=G[1]}else{let R=g$($,q),G=P0(R[0],x,H,0);if(!G)throw new b("trying to redefine an already defined table or value",{toml:$,ptr:q});let w=J$($,R[1],void 0,S,Y);G[1][G[0]]=w[0],q=w[1]}if(q=j($,q,!0),$[q]&&$[q]!==`
|
|
261
|
+
`&&$[q]!=="\r")throw new b("each key-value declaration must be followed by an end-of-line",{toml:$,ptr:q});q=j($,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 F0=/^[a-z0-9-_]+$/i;function I$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function
|
|
287
|
+
*/var F0=/^[a-z0-9-_]+$/i;function I$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function DS($){for(let S=0;S<$.length;S++)if(I$($[S])!=="object")return!1;return $.length!=0}function W1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function T1($,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 W1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return pS($,Y,E);if(S==="array")return lS($,Y,E)}function pS($,S,Y){let E=Object.keys($);if(E.length===0)return"{}";let O="{ ";for(let x=0;x<E.length;x++){let H=E[x];if(x)O+=", ";O+=F0.test(H)?H:W1(H),O+=" = ",O+=T1($[H],I$($[H]),S-1,Y)}return O+" }"}function lS($,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+=T1($[O],I$($[O]),S-1,Y)}return E+" ]"}function oS($,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+=J1(0,$[x],S,Y,E);return O}function J1($,S,Y,E,O){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let x="",H="",q=Object.keys(S);for(let R=0;R<q.length;R++){let G=q[R];if(S[G]!==null&&S[G]!==void 0){let
|
|
290
|
-
`)+
|
|
291
|
-
`)+J1(z,S[G],z,E-1,O)}else x+=
|
|
289
|
+
`,O+=J1(0,$[x],S,Y,E);return O}function J1($,S,Y,E,O){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let x="",H="",q=Object.keys(S);for(let R=0;R<q.length;R++){let G=q[R];if(S[G]!==null&&S[G]!==void 0){let w=I$(S[G]);if(w==="symbol"||w==="function")throw TypeError(`cannot serialize values of type '${w}'`);let Z=F0.test(G)?G:W1(G);if(w==="array"&&DS(S[G]))H+=(H&&`
|
|
290
|
+
`)+oS(S[G],Y?`${Y}.${Z}`:Z,E-1,O);else if(w==="object"){let z=Y?`${Y}.${Z}`:Z;H+=(H&&`
|
|
291
|
+
`)+J1(z,S[G],z,E-1,O)}else x+=Z,x+=" = ",x+=T1(S[G],w,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 I1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(I$($)!=="object")throw TypeError("stringify can only be called with an object");let E=J1(0,$,"",S,Y);if(E[E.length-1]!==`
|
|
295
295
|
`)return E+`
|
|
296
296
|
`;return E}/*!
|
|
297
297
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
@@ -319,33 +319,33 @@ ${H}`:x||H}function T1($,{maxDepth:S=1000,numbersAsFloat:Y=!1}={}){if(I$($)!=="o
|
|
|
319
319
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
320
320
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
321
321
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
322
|
-
*/var L1
|
|
323
|
-
`;await Bun.write(
|
|
324
|
-
`)}var SH={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars($){return{GEMINI_API_KEY:$,GOOGLE_GEMINI_BASE_URL:"https://tako.shiroha.tech"}},setupConfigFiles:$H};w$(SH);import{join as d}from"path";h();var g$=null,d$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function Z$(){if(g$)return g$;let $=[HH,YH,EH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return g$=Y,Y}catch{}return g$="cn","cn"}async function HH(){try{let $=await fetch("http://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function YH(){try{let $=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country==="CN"?"cn":"global"}catch{return null}}async function EH(){try{let $=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(2000)});if(!$.ok)return null;return(await $.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function OH(){let $=await Z$();return d$[$]}async function t(){return(await OH()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function xH(){let $=d$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let E=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,x)=>{let H=O.replace("bun-v","").split(".").map(Number),q=x.replace("bun-v","").split(".").map(Number);for(let R=0;R<3;R++)if(H[R]!==q[R])return q[R]-H[R];return 0});if(E.length===0)throw Error("No bun versions found on mirror");return E[0]}async function D0(){let $=d$.cn.bunBinary,S=await xH(),E={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",x=`bun-${E}-${O}`;return`${$}/${S}/${x}.zip`}async function p0(){let $=await Z$(),S=d$[$];if($==="cn")Z.info(M("region.usingChinaMirror")),Z.message(` npm: ${S.npm}`);else Z.info(M("region.usingGlobalMirror"))}var qH=class{constructor($){this.baseUrl=$.baseUrl,this.headers={"Content-Type":"application/json",...$.defaultHeaders},this.maxRetries=$.maxRetries??3,this.initialRetryDelay=$.initialRetryDelay??500}async resolveHeaders(){let $={};for(let[S,Y]of Object.entries(this.headers)){let E=await Y;E!==null&&($[S]=E)}return $}addHeader($,S){this.headers[$]=S}async post($,S,Y,E){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...Y});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let x=await O.text();return x?JSON.parse(x):null}catch(O){if(E<this.maxRetries){let x=this.initialRetryDelay*2**E;return await new Promise((H)=>setTimeout(H,x)),this.post($,S,Y,E+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,Y={}){let E=`${this.baseUrl}${$}`;return this.post(E,S,Y,0)}},l0=class{constructor($){this.options=$,this.queue=[];let S={"openpanel-client-id":$.clientId};$.clientSecret&&(S["openpanel-client-secret"]=$.clientSecret),S["openpanel-sdk-name"]=$.sdk||"node",S["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new qH({baseUrl:$.apiUrl||"https://api.openpanel.dev",defaultHeaders:S})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send($){return this.options.disabled||this.options.filter&&!this.options.filter($)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push($),Promise.resolve()):this.api.fetch("/track",$)}setGlobalProperties($){this.global={...this.global,...$}}async track($,S){return this.log("track event",$,S),this.send({type:"track",payload:{name:$,profileId:S?.profileId??this.profileId,properties:{...this.global??{},...S??{}}}})}async identify($){if(this.log("identify user",$),$.profileId&&(this.profileId=$.profileId,this.flush()),Object.keys($).length>1)return this.send({type:"identify",payload:{...$,properties:{...this.global,...$.properties}}})}async alias($){}async increment($){return this.send({type:"increment",payload:$})}async decrement($){return this.send({type:"decrement",payload:$})}async revenue($,S){let Y=S?.deviceId;return delete S?.deviceId,this.track("revenue",{...S??{},...Y?{__deviceId:Y}:{},__revenue:$})}async fetchDeviceId(){return(await this.api.fetch("/track/device-id",void 0,{method:"GET",keepalive:!1}))?.deviceId??""}clear(){this.profileId=void 0}flush(){this.queue.forEach(($)=>{this.send({...$,payload:{...$.payload,profileId:$.payload.profileId??this.profileId}})}),this.queue=[]}log(...$){this.options.debug&&console.log("[OpenPanel.dev]",...$)}};var GH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",RH="sec_3038f0cb74f91312f374",wH="https://op.shiroha.tech/api",b$=null;function N1(){if(!b$)b$=new l0({clientId:GH,clientSecret:RH,apiUrl:wH});return b$}async function o0(){if(b$){try{b$.flush()}catch{}b$=null}}h();h();var MH="0.2.25";function a0(){return{cli_version:MH,platform:process.platform,arch:process.arch,locale:H$(),node_version:process.version}}function i0($){return Bun.hash($).toString(16).slice(0,8)}var QH="0.2.25",r0=!1,X$=null,U1=[];async function n0(){if(X$!==null)return X$;try{return X$=(await X()).telemetryEnabled!==!1,X$}catch{return X$=!1,!1}}async function vH(){try{return(await X()).apiId||"anonymous"}catch{return"anonymous"}}async function c$(){if(r0)return;try{if(!await n0())return;let $=await X();if(!$.apiId)return;let S=N1(),Y=await Z$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:H$(),first_seen_version:QH,platform:process.platform,arch:process.arch}}),r0=!0}catch{}}function L($,S){let Y=ZH($,S).catch(()=>{});U1.push(Y)}async function ZH($,S){try{if(!await n0())return;let Y=N1(),E=await vH();await Y.track($,{profileId:E,...a0(),...S})}catch{}}async function L$(){await Promise.allSettled(U1),U1.length=0,await o0()}var Y$=null;function bH($){return $.startsWith(i)}async function zH(){try{if(!await Bun.file(C).exists())return null;let S=Bun.spawn([C,"--version"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode!==0)return null;return(await new Response(S.stdout).text()).trim()}catch{return null}}async function t0(){return await zH()!==null}async function WH(){if(process.platform==="win32")return!0;try{let S=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode===0)return!0}catch{}Z.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let $=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let S of $)try{let Y=Bun.spawn(["bash","-c",`sudo ${S} 2>/dev/null || ${S}`],{stdout:"pipe",stderr:"pipe"});if(await Y.exited,Y.exitCode===0)return!0}catch{}return!1}async function JH($){let S=await import("fs/promises"),{join:Y}=await import("path"),E=process.platform==="win32",O=E?"bun.exe":"bun",x=await D0();Z.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${x}`);let H=await fetch(x);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let q=Y($,"bun-download.zip");await Bun.write(q,H);let R=Y($,"bin");if(await S.mkdir(R,{recursive:!0}),E){let Q=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,v=Bun.spawn(["powershell","-Command",Q],{stdout:"pipe",stderr:"pipe"});if(await v.exited,v.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let Q=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await Q.exited,Q.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let Q of G){let v=Y($,Q);if((await S.stat(v)).isDirectory()&&Q.startsWith("bun-")){let V=Y(v,O);try{if(await S.access(V),await S.rename(V,Y(R,O)),!E)await S.chmod(Y(R,O),493);await S.rm(v,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function TH(){let $=g();if(!await WH())return Z.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await p0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(i,{recursive:!0}),await Z$()==="cn")await JH(i);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${i}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let E=`BUN_INSTALL="${i}" ${c0()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return Y$=C,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),Z.info(`\u5B89\u88C5\u4F4D\u7F6E: ${i}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function IH(){if(await t0())return Y$=C,!0;return Z.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),Z.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await TH()}async function D$(){if(Y$){if(!bH(Y$))Y$=C;return Y$}if(await t0())return Y$=C,C;return C}async function A1($){try{let S=await t(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function XH($){return(await X()).installedClients[$.id]?.version||null}async function $2($){let S=R$($.id),Y=d(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function S2($){let S=await XH($);if(!S)return!0;let Y=await A1($.package);if(!Y)return!1;return S!==Y}function LH($){let{platform:S,arch:Y}=process,E=`${S}-${Y}`;for(let[O,x]of Object.entries($))if(O.endsWith(E))return{pkg:O,version:x};return null}async function H2($,S,Y,E){let O=d(S,"node_modules",$.package,"package.json");try{let x=Bun.file(O);if(!await x.exists())return;let q=(await x.json()).optionalDependencies;if(!q||typeof q!=="object")return;let R=LH(q);if(!R)return;let G=d(S,"node_modules",R.pkg);if(await Bun.file(d(G,"package.json")).exists())return;await Bun.spawn([Y,"add",`${R.pkg}@${R.version}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}}).exited}catch{}}async function Y2($,S){let Y=d(S,"node_modules",$.package,"install.cjs");if(!await Bun.file(Y).exists())return;let O=Bun.spawn(["node",Y],{cwd:d(S,"node_modules",$.package),stdout:"pipe",stderr:"pipe"});if(await O.exited,O.exitCode!==0){let x=await new Response(O.stderr).text();Z.warn(`postinstall \u6267\u884C\u5F02\u5E38: ${x.slice(0,200)}`)}}async function s0($,S=!1){let Y=g(),E=R$($.id);try{if(!await IH())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};let O=await $2($),x=S||await S2($);if(O&&!x)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";Y.start(`\u6B63\u5728${H} ${$.name}...`);let q=await import("fs/promises");await q.mkdir(E,{recursive:!0});let R=d(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let Q=await D$(),v=await t();if(O){let q$=d(E,"bun.lock");try{await q.unlink(q$)}catch{}}let z=Bun.spawn([Q,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:v}});if(await z.exited!==0){let q$=await new Response(z.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:q$}}await H2($,E,Q,v),await Y2($,E);let _=await A1($.package),g1=(await X()).installedClients[$.id]?.version;if(_){let q$=await X();if(q$.installedClients[$.id]={version:_,installedAt:new Date().toISOString()},await l(q$),O&&g1)L("client_updated",{client_id:$.id,from_version:g1,to_version:_});else L("client_installed",{client_id:$.id,client_version:_})}return Y.stop(`${$.name} ${H}\u5B8C\u6210`),{success:!0}}catch(O){return Y.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}}}async function e0($){try{let S=Bun.file($);if(!await S.exists())return!0;if(S.size<100)return!0;let E=new Uint8Array(await S.slice(0,4).arrayBuffer());if(E[0]===127&&E[1]===69&&E[2]===76&&E[3]===70)return!1;if(E[0]===254||E[0]===207||E[0]===206||E[0]===202)return!1;if(E[0]===77&&E[1]===90)return!1;return!0}catch{return!0}}async function V1($){if($.runtime!=="native")return;let S=R$($.id),Y=d(S,"node_modules",$.package,"package.json");try{let E=Bun.file(Y);if(!await E.exists())return;let x=(await E.json()).bin;if(!x)return;let H=typeof x==="string"?x:x[$.command];if(!H)return;let q=d(S,"node_modules",$.package,H);if(!await e0(q))return;Z.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await D$(),G=await t();if(await H2($,S,R,G),await Y2($,S),await e0(q))Z.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5931\u8D25\uFF0C\u53EF\u80FD\u5F71\u54CD\u542F\u52A8");else Z.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function E2($){if(!await $2($)){let E=await s0($);if(E.success)await V1($);return E}if(await V1($),await S2($)){let E=await A1($.package),O=(await X()).installedClients[$.id]?.version||"\u672A\u77E5",x=E?`${O} \u2192 ${E}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";Z.info(`${$.name} \u53D1\u73B0\u66F4\u65B0: ${x}`);let H=await n({message:`\u662F\u5426\u66F4\u65B0 ${$.name}\uFF1F`,initialValue:!1});if(A(H)||!H)return Z.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let q=await s0($,!0);if(q.success)await V1($);return q}return{success:!0}}import{homedir as NH}from"os";var UH=50,B1=3;async function h1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function O2($,S){let Y=await X(),E=Y.recentProjects||[],O=new Date().toISOString(),x=E.findIndex((q)=>q.path===$);if(x>=0){let q=E[x],R=q.clientUsage||{},G=R[S]||{count:0,lastAt:O};E[x]={...q,launchCount:q.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...R,[S]:{count:G.count+1,lastAt:O}}}}else E.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=E.sort((q,R)=>new Date(R.lastLaunchedAt).getTime()-new Date(q.lastLaunchedAt).getTime()).slice(0,UH);Y.recentProjects=H,await n$(Y)}function VH($,S){let Y=$.clientUsage?.[S];if(Y)return new Date(Y.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function x2($,S=B1,Y=!0){let O=(await X()).recentProjects||[],x=process.cwd(),q=O.filter((G)=>{if(Y&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:VH(G,$)})).sort((G,Q)=>Q.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...Q}of q){if(R.length>=S)break;if(await h1(Q.path))R.push(Q)}return R}async function q2(){let S=(await X()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function G2($,S=25){let Y=NH(),E=$.startsWith(Y)?"~"+$.slice(Y.length):$;if(E.length>S){let x=E.split("/").pop()||"";if(x.length>S-4)E="..."+x.slice(-S+3);else E=`.../${x}`}return E}function R2($){let{t:S}=(h(),C2(K0)),Y=Date.now(),E=new Date($).getTime(),O=Y-E,x=Math.floor(O/60000),H=Math.floor(O/3600000),q=Math.floor(O/86400000),R=Math.floor(q/7),G=Math.floor(q/30);if(x<1)return S("time.justNow");if(x<60)return S("time.minutesAgo",{n:x});if(H<24)return S("time.hoursAgo",{n:H});if(q===1)return S("time.yesterday");if(q<7)return S("time.daysAgo",{n:q});if(q<30)return S("time.weeksAgo",{n:R});return S("time.monthsAgo",{n:G})}h();async function w2($,S){try{let Y=S?.projectPath||process.cwd(),E=await A$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await s1($);if(!O)O=e1($);if(!await Bun.file(O).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${O}`};let H=$.getEnvVars(E),q={...process.env,...H};Z.info(`\u542F\u52A8 ${$.name}...`);let R;if($.runtime==="native")R=[O];else R=[await D$(),O];if(S?.args&&S.args.length>0)R=[...R,...S.args];return await Bun.spawn(R,{env:q,stdio:["inherit","inherit","inherit"],cwd:Y}).exited,{success:!0}}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"\u542F\u52A8\u5931\u8D25"}}}async function E$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await h1(S.projectPath))return{success:!1,error:M("launcher.directoryNotFound",{path:S.projectPath})}}let E=await E2($);if(!E.success)return E;let O=await A$();if(!O)return{success:!1,error:M("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await O2(Y,$.id);let H=(await X()).installedClients[$.id]?.version;return L("client_launched",{client_id:$.id,client_version:H,project_hash:i0(Y),is_recent_project:!!S?.projectPath}),Z.info(M("launcher.starting",{client:$.name})),await w2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}h();import{join as c}from"path";var K1="tako-cli",f="0.2.25";function AH($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number);for(let O=0;O<3;O++){let x=Y[O]||0,H=E[O]||0;if(x>H)return 1;if(x<H)return-1}return 0}async function BH(){try{let $=await t(),S=await fetch(`${$}/${K1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function hH(){let $=await BH();if(!$)return{hasUpdate:!1,currentVersion:f};return{hasUpdate:AH($,f)>0,latestVersion:$,currentVersion:f}}async function M2(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
|
|
325
|
-
"${
|
|
322
|
+
*/var N1=L1(aS(),".codex"),k0=L1(N1,"config.toml"),iS=L1(N1,"auth.json"),rS={model_provider:"tako",model:"gpt-5.4",check_for_update_on_startup:!1,model_providers:{tako:{name:"tako",base_url:`${p}/v1`}}},nS={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function X1($,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]=X1(Y[E],O);else Y[E]=O;return Y}function sS($){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 eS($,S){let Y=await import("fs/promises");try{await Y.mkdir(N1,{recursive:!0})}catch{}let E={};try{E=b1(await Y.readFile(k0,"utf-8"))}catch{}E=sS(E);let O=X1(E,rS);if(S)for(let H of S){let q=nS[H];if(q)O=X1(O,q)}await Bun.write(k0,I1(O));let x=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
|
|
323
|
+
`;await Bun.write(iS,x)}var tS={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars($){return{}},setupConfigFiles:eS,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"]}]};M$(tS);import{homedir as $H}from"os";import{join as g0}from"path";var d0=g0($H(),".gemini"),u0=g0(d0,"settings.json");async function SH(){let $=await import("fs/promises");try{await $.mkdir(d0,{recursive:!0})}catch{}let S={};try{S=JSON.parse(await $.readFile(u0,"utf-8"))}catch{}let Y=S.security?.auth||{};if(Y.selectedType==="gemini-api-key")return;S.selectedAuthType="gemini-api-key",S.security={...S.security,auth:{...Y,selectedType:"gemini-api-key"}},await Bun.write(u0,JSON.stringify(S,null,2)+`
|
|
324
|
+
`)}var HH={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:SH};M$(HH);import{join as F}from"path";K();var d$=null,c$={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(d$)return d$;let $=[YH,EH,OH];for(let S of $)try{let Y=await Promise.race([S(),new Promise((E,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(Y)return d$=Y,Y}catch{}return d$="cn","cn"}async function YH(){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 EH(){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 OH(){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 xH(){let $=await v$();return c$[$]}async function t(){return(await xH()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function qH(){let $=c$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let E=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,x)=>{let H=O.replace("bun-v","").split(".").map(Number),q=x.replace("bun-v","").split(".").map(Number);for(let R=0;R<3;R++)if(H[R]!==q[R])return q[R]-H[R];return 0});if(E.length===0)throw Error("No bun versions found on mirror");return E[0]}async function D0(){let $=c$.cn.bunBinary,S=await qH(),E={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",x=`bun-${E}-${O}`;return`${$}/${S}/${x}.zip`}async function p0(){let $=await v$(),S=c$[$];if($==="cn")v.info(Q("region.usingChinaMirror")),v.message(` npm: ${S.npm}`);else v.info(Q("region.usingGlobalMirror"))}var GH=class{constructor($){this.baseUrl=$.baseUrl,this.headers={"Content-Type":"application/json",...$.defaultHeaders},this.maxRetries=$.maxRetries??3,this.initialRetryDelay=$.initialRetryDelay??500}async resolveHeaders(){let $={};for(let[S,Y]of Object.entries(this.headers)){let E=await Y;E!==null&&($[S]=E)}return $}addHeader($,S){this.headers[$]=S}async post($,S,Y,E){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...Y});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let x=await O.text();return x?JSON.parse(x):null}catch(O){if(E<this.maxRetries){let x=this.initialRetryDelay*2**E;return await new Promise((H)=>setTimeout(H,x)),this.post($,S,Y,E+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,Y={}){let E=`${this.baseUrl}${$}`;return this.post(E,S,Y,0)}},l0=class{constructor($){this.options=$,this.queue=[];let S={"openpanel-client-id":$.clientId};$.clientSecret&&(S["openpanel-client-secret"]=$.clientSecret),S["openpanel-sdk-name"]=$.sdk||"node",S["openpanel-sdk-version"]=$.sdkVersion||"1.0.4",this.api=new GH({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 RH="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",MH="sec_3038f0cb74f91312f374",QH="https://op.shiroha.tech/api",z$=null;function U1(){if(!z$)z$=new l0({clientId:RH,clientSecret:MH,apiUrl:QH});return z$}async function o0(){if(z$){try{z$.flush()}catch{}z$=null}}K();K();var wH="0.2.27";function a0(){return{cli_version:wH,platform:process.platform,arch:process.arch,locale:H$(),node_version:process.version}}function i0($){return Bun.hash($).toString(16).slice(0,8)}var ZH="0.2.27",r0=!1,X$=null,V1=[];async function n0(){if(X$!==null)return X$;try{return X$=(await X()).telemetryEnabled!==!1,X$}catch{return X$=!1,!1}}async function vH(){try{return(await X()).apiId||"anonymous"}catch{return"anonymous"}}async function D$(){if(r0)return;try{if(!await n0())return;let $=await X();if(!$.apiId)return;let S=U1(),Y=await v$();await S.identify({profileId:$.apiId,properties:{region:Y,locale:H$(),first_seen_version:ZH,platform:process.platform,arch:process.arch}}),r0=!0}catch{}}function L($,S){let Y=zH($,S).catch(()=>{});V1.push(Y)}async function zH($,S){try{if(!await n0())return;let Y=U1(),E=await vH();await Y.track($,{profileId:E,...a0(),...S})}catch{}}async function L$(){await Promise.allSettled(V1),V1.length=0,await o0()}var Y$=null;function bH($){return $.startsWith(i)}async function WH(){try{if(!await Bun.file(m).exists())return null;let S=Bun.spawn([m,"--version"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode!==0)return null;return(await new Response(S.stdout).text()).trim()}catch{return null}}async function t0(){return await WH()!==null}async function TH(){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 D0();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 w=`Expand-Archive -Path "${q}" -DestinationPath "${$}" -Force`,Z=Bun.spawn(["powershell","-Command",w],{stdout:"pipe",stderr:"pipe"});if(await Z.exited,Z.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let w=Bun.spawn(["unzip","-oq",q,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await w.exited,w.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let w of G){let Z=Y($,w);if((await S.stat(Z)).isDirectory()&&w.startsWith("bun-")){let U=Y(Z,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(Z,{recursive:!0,force:!0});break}catch{}}}return await S.rm(q,{force:!0}),!0}async function IH(){let $=d();if(!await TH())return v.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await p0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(i,{recursive:!0}),await v$()==="cn")await JH(i);else if(process.platform==="win32"){let E=`$env:BUN_INSTALL="${i}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let E=`BUN_INSTALL="${i}" ${c0()}`;if(await Bun.spawn(["bash","-c",E],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return Y$=m,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),v.info(`\u5B89\u88C5\u4F4D\u7F6E: ${i}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function XH(){if(await t0())return Y$=m,!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 IH()}async function p$(){if(Y$){if(!bH(Y$))Y$=m;return Y$}if(await t0())return Y$=m,m;return m}async function B1($){try{let S=await t(),Y=await fetch(`${S}/${$}/latest`);if(!Y.ok)return null;return(await Y.json()).version}catch{return null}}async function LH($){return(await X()).installedClients[$.id]?.version||null}async function $2($){let S=R$($.id),Y=F(S,"package.json");try{return await Bun.file(Y).exists()}catch{return!1}}async function S2($){let S=await LH($);if(!S)return!0;let Y=await B1($.package);if(!Y)return!1;return S!==Y}function H2($){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 Y2($,S,Y,E){let O=F(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=H2(q);if(!R)return;let G=F(S,"node_modules",R.pkg);if(await Bun.file(F(G,"package.json")).exists())return;await Bun.spawn([Y,"add",`${R.pkg}@${R.version}`],{cwd:S,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}}).exited}catch{}}async function E2($,S){let Y=await import("fs/promises"),E=F(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!1;let q=H2(H);if(!q)return!1;let R=process.platform==="win32",G=R?`${$.command}.exe`:$.command,w=F(S,"node_modules",q.pkg,G),Z=Bun.file(w);if(!await Z.exists())return!1;let z=x.bin,U=typeof z==="string"?z:z?.[$.command];if(!U)return!1;let C=F(S,"node_modules",$.package,U),V$=await Z.arrayBuffer();if(await Bun.write(C,V$),!R)await Y.chmod(C,493);return!0}catch{return!1}}async function s0($,S=!1){let Y=d(),E=R$($.id);try{if(!await XH())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};let O=await $2($),x=S||await S2($);if(O&&!x)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";Y.start(`\u6B63\u5728${H} ${$.name}...`);let q=await import("fs/promises");await q.mkdir(E,{recursive:!0});let R=F(E,"package.json");if(!await Bun.file(R).exists())await Bun.write(R,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let w=await p$(),Z=await t();if(O){let q$=F(E,"bun.lock");try{await q.unlink(q$)}catch{}}let z=Bun.spawn([w,"add",`${$.package}@latest`],{cwd:E,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Z}});if(await z.exited!==0){let q$=await new Response(z.stderr).text();return Y.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:q$}}await Y2($,E,w,Z),await E2($,E);let C=await B1($.package),V$=(await X()).installedClients[$.id]?.version;if(C){let q$=await X();if(q$.installedClients[$.id]={version:C,installedAt:new Date().toISOString()},await l(q$),O&&V$)L("client_updated",{client_id:$.id,from_version:V$,to_version:C});else L("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 e0($){try{let S=Bun.file($);if(!await S.exists())return!0;if(S.size<100)return!0;let E=new Uint8Array(await S.slice(0,4).arrayBuffer());if(E[0]===127&&E[1]===69&&E[2]===76&&E[3]===70)return!1;if(E[0]===254||E[0]===207||E[0]===206||E[0]===202)return!1;if(E[0]===77&&E[1]===90)return!1;return!0}catch{return!0}}async function A1($){if($.runtime!=="native")return;let S=R$($.id),Y=F(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=F(S,"node_modules",$.package,H);if(!await e0(q))return;v.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let R=await p$(),G=await t();if(await Y2($,S,R,G),!await E2($,S)||await e0(q))v.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5931\u8D25\uFF0C\u53EF\u80FD\u5F71\u54CD\u542F\u52A8");else v.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function O2($){if(!await $2($)){let E=await s0($);if(E.success)await A1($);return E}if(await A1($),await S2($)){let E=await B1($.package),O=(await X()).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 n({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 s0($,!0);if(q.success)await A1($);return q}return{success:!0}}import{homedir as NH}from"os";var UH=50,h1=3;async function K1($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function x2($,S){let Y=await X(),E=Y.recentProjects||[],O=new Date().toISOString(),x=E.findIndex((q)=>q.path===$);if(x>=0){let q=E[x],R=q.clientUsage||{},G=R[S]||{count:0,lastAt:O};E[x]={...q,launchCount:q.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...R,[S]:{count:G.count+1,lastAt:O}}}}else E.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=E.sort((q,R)=>new Date(R.lastLaunchedAt).getTime()-new Date(q.lastLaunchedAt).getTime()).slice(0,UH);Y.recentProjects=H,await s$(Y)}function VH($,S){let Y=$.clientUsage?.[S];if(Y)return new Date(Y.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function q2($,S=h1,Y=!0){let O=(await X()).recentProjects||[],x=process.cwd(),q=O.filter((G)=>{if(Y&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:VH(G,$)})).sort((G,w)=>w.lastUsedTime-G.lastUsedTime),R=[];for(let{lastUsedTime:G,...w}of q){if(R.length>=S)break;if(await K1(w.path))R.push(w)}return R}async function G2(){let S=(await X()).recentProjects||[],Y=process.cwd();return S.find((O)=>O.path===Y)?.lastClientId||null}function R2($,S=25){let Y=NH(),E=$.startsWith(Y)?"~"+$.slice(Y.length):$;if(E.length>S){let x=E.split("/").pop()||"";if(x.length>S-4)E="..."+x.slice(-S+3);else E=`.../${x}`}return E}function M2($){let{t:S}=(K(),m2(K0)),Y=Date.now(),E=new Date($).getTime(),O=Y-E,x=Math.floor(O/60000),H=Math.floor(O/3600000),q=Math.floor(O/86400000),R=Math.floor(q/7),G=Math.floor(q/30);if(x<1)return S("time.justNow");if(x<60)return S("time.minutesAgo",{n:x});if(H<24)return S("time.hoursAgo",{n:H});if(q===1)return S("time.yesterday");if(q<7)return S("time.daysAgo",{n:q});if(q<30)return S("time.weeksAgo",{n:R});return S("time.monthsAgo",{n:G})}K();async function Q2($,S){try{let Y=S?.projectPath||process.cwd(),E=await B$();if(!E)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};let O=await s1($);if(!O)O=e1($);if(!await Bun.file(O).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${O}`};let H=$.getEnvVars(E),q={...process.env,...H};v.info(`\u542F\u52A8 ${$.name}...`);let R;if($.runtime==="native")R=[O];else R=[await p$(),O];if(S?.args&&S.args.length>0)R=[...R,...S.args];return await Bun.spawn(R,{env:q,stdio:["inherit","inherit","inherit"],cwd:Y}).exited,{success:!0}}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"\u542F\u52A8\u5931\u8D25"}}}async function E$($,S){try{let Y=S?.projectPath||process.cwd();if(S?.projectPath){if(!await K1(S.projectPath))return{success:!1,error:Q("launcher.directoryNotFound",{path:S.projectPath})}}let E=await O2($);if(!E.success)return E;let O=await B$();if(!O)return{success:!1,error:Q("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await x2(Y,$.id);let H=(await X()).installedClients[$.id]?.version;return L("client_launched",{client_id:$.id,client_version:H,project_hash:i0(Y),is_recent_project:!!S?.projectPath}),v.info(Q("launcher.starting",{client:$.name})),await Q2($,S)}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:"Launch failed"}}}K();import{join as c}from"path";var C1="tako-cli",_="0.2.27";function AH($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number);for(let O=0;O<3;O++){let x=Y[O]||0,H=E[O]||0;if(x>H)return 1;if(x<H)return-1}return 0}async function BH(){try{let $=await t(),S=await fetch(`${$}/${C1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function hH(){let $=await BH();if(!$)return{hasUpdate:!1,currentVersion:_};return{hasUpdate:AH($,_)>0,latestVersion:$,currentVersion:_}}async function w2(){let $=await import("fs/promises"),S=c(u,"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
|
+
"${m}" "${E}" %*\r
|
|
326
326
|
`;await $.writeFile(c(S,"tako.cmd"),x)}else{let x=`#!/bin/bash
|
|
327
|
-
exec "${
|
|
328
|
-
`;await $.writeFile(Y,x,{mode:493})}}async function KH($){let S=g();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let Y=await t(),E=await import("fs/promises");await E.mkdir(u,{recursive:!0});let O=c(u,"package.json");try{await E.access(O)}catch{await E.writeFile(O,JSON.stringify({name:"tako-local",private:!0},null,2))}let x=Bun.spawn([C,"update",K1,"--latest"],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await M2(),L("cli_updated",{from_version:f,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(x.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(Y){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${Y instanceof Error?Y.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function CH(){let $=await import("fs/promises"),S=c(u,"bun.lock");try{await $.unlink(S)}catch{}}async function mH(){let $=await import("fs/promises");try{let S=await t();await $.mkdir(u,{recursive:!0});let Y=c(u,"package.json");try{await $.access(Y)}catch{await $.writeFile(Y,JSON.stringify({name:"tako-local",private:!0},null,2))}await CH();let E=Bun.spawn([C,"add",`${K1}@latest`],{cwd:u,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await E.exited,E.exitCode===0}catch{return!1}}async function jH(){let $=await import("fs/promises"),S=c(k,"bin"),Y=c(S,"tako"),E=c(u,"node_modules/tako-cli/dist/index.js");try{let O=await $.readFile(Y,"utf-8");if(O.includes("bun run tako-cli")||O.includes("run tako-cli")){Z.info(M("updater.migrating"));let x=!1;try{await $.access(E),x=!0}catch{x=!1}if(!x){let H=g();if(H.start(M("updater.installingLocally")),!await mH())return H.stop(M("updater.migrationFailed")),!1;H.stop(M("updater.installComplete"))}return await M2(),!0}}catch{}return!1}async function N$(){try{if(await jH())Z.info(M("updater.migrationComplete")),process.exit(0);let S=await hH();if(S.hasUpdate&&S.latestVersion){if(Z.warn(M("updater.newVersionAvailable",{version:S.latestVersion,current:f})),await KH(S.latestVersion))Z.info(M("updater.pleaseRestart")),process.exit(0)}}catch{}}h();function yH($){let S=$.codePointAt(0);if(!S)return!1;return S>=19968&&S<=40959||S>=13312&&S<=19903||S>=131072&&S<=191471||S>=63744&&S<=64255||S>=194560&&S<=195103||S>=44032&&S<=55215||S>=12352&&S<=12447||S>=12448&&S<=12543||S>=65280&&S<=65519||S>=126976&&S<=131071||S>=9728&&S<=10175||S===11088}function fH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function C1($){let S=fH($),Y=0;for(let E of S)Y+=yH(E)?2:1;return Y}h();var m1="__skip_prompt__";async function O$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let Y=await X(),E=Y.clientOptions?.[$.id];if(E&&Y.clientOptionsLocked?.[$.id])return Q2(S,E);let O=await _H($,S,E);if(O===null)return null;if(await l({clientOptions:{...Y.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...Y.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let x=Q$();Z.info(x==="zh"?"\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u6B21\u5C06\u8DF3\u8FC7\u6B64\u9009\u62E9\u3002\u53EF\u5728\u300C\u9AD8\u7EA7 \u2192 \u91CD\u7F6E\u542F\u52A8\u9009\u9879\u300D\u4E2D\u4FEE\u6539\u3002":"Saved. This prompt will be skipped next time. Reset in Advanced \u2192 Reset Launch Options.")}return Q2(S,O.selectedIds)}async function v2(){await l({clientOptions:{},clientOptionsLocked:{}})}function Q2($,S){let Y=[];for(let E of S){let O=$.find((x)=>x.id===E);if(O)Y.push(...O.args)}return{args:Y,selectedOptionIds:S}}async function _H($,S,Y){let E=Q$(),O=(G)=>E==="zh"?G.label.zh:G.label.en,x=[],H=new Map,q=[];for(let G of S)if(G.group){if(!H.has(G.group))H.set(G.group,[]);H.get(G.group).push(G)}else q.push(G);for(let[,G]of H){let v=G.find((V)=>Y?.includes(V.id))?.id??"__none__",z=await S$({message:M("menu.selectOptions")||`${$.name} options`,initialValue:v,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((V)=>({value:V.id,label:O(V),hint:V.flag}))]});if(A(z))return null;if(z!=="__none__")x.push(z)}if(q.length>0){let G=await h0({message:M("menu.selectOptions")||`${$.name} options`,options:[...q.map((z)=>({value:z.id,label:O(z),hint:z.flag,initialValue:Y?.includes(z.id)??!1})),{value:m1,label:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(A(G))return null;let Q=G,v=Q.includes(m1);return x.push(...Q.filter((z)=>z!==m1)),{selectedIds:x,lock:v}}let R=await n({message:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(A(R))return null;return{selectedIds:x,lock:!!R}}var b2=[{version:"0.2.21",date:"2026-04-20",changes:["\u5BA2\u6237\u7AEF\u66F4\u65B0\u6539\u4E3A\u7528\u6237\u786E\u8BA4\uFF0C\u4E0D\u518D\u81EA\u52A8\u66F4\u65B0","\u7981\u6B62 Claude Code / Codex \u81EA\u8EAB\u7684\u81EA\u52A8\u66F4\u65B0\uFF0C\u7531 Tako \u7EDF\u4E00\u7BA1\u7406","\u4FEE\u590D\u5DF2\u5B89\u88C5\u7528\u6237\u539F\u751F\u4E8C\u8FDB\u5236\u672A\u5C31\u4F4D\u5BFC\u81F4 ENOEXEC \u7684\u95EE\u9898"]},{version:"0.2.20",date:"2026-04-19",changes:["\u4FEE\u590D Claude Code v2 \u539F\u751F\u4E8C\u8FDB\u5236\u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898","\u5B89\u88C5\u65F6\u81EA\u52A8\u8FD0\u884C postinstall \u786E\u4FDD\u539F\u751F\u4E8C\u8FDB\u5236\u5C31\u4F4D","\u65B0\u589E\u66F4\u65B0\u65E5\u5FD7\u529F\u80FD\uFF0C\u53EF\u5728\u4E3B\u9875\u67E5\u770B\u7248\u672C\u53D8\u66F4"]},{version:"0.2.18",date:"2026-04-15",changes:["\u65B0\u589E Gemini CLI \u652F\u6301","Codex \u914D\u7F6E\u7B80\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6","Claude Code settings.json \u51B2\u7A81\u68C0\u6D4B\u4E0E\u81EA\u52A8\u6E05\u7406","\u5B89\u88C5\u6D41\u7A0B\u4F18\u5316"]},{version:"0.2.14",date:"2026-04-10",changes:["Codex \u542F\u52A8\u9009\u9879\u652F\u6301\uFF08\u8DF3\u8FC7\u6743\u9650\u3001\u8BE6\u7EC6\u65E5\u5FD7\u7B49\uFF09","\u914D\u7F6E\u6CE8\u5165\u673A\u5236\u4F18\u5316"]},{version:"0.2.12",date:"2026-04-06",changes:["\u56FD\u5185\u955C\u50CF\u6E90\u5B89\u88C5\u4FEE\u590D","Windows install.ps1 \u5B89\u88C5\u811A\u672C\u4FEE\u590D"]},{version:"0.2.9",date:"2026-03-30",changes:["statusline \u72B6\u6001\u680F\u529F\u80FD\u8FC1\u79FB","Codex \u914D\u7F6E\u589E\u91CF\u66F4\u65B0\uFF0C\u4FEE\u590D\u542F\u52A8\u5931\u8D25\u95EE\u9898"]},{version:"0.2.0",date:"2026-03-15",changes:["\u5168\u65B0 Ink TUI \u4E3B\u83DC\u5355","\u5BA2\u6237\u7AEF Tab \u5207\u6362 + \u53EF\u6298\u53E0\u542F\u52A8\u9009\u9879","\u6700\u8FD1\u9879\u76EE\u5FEB\u901F\u542F\u52A8","\u57CB\u70B9\u5206\u6790\u7CFB\u7EDF"]}];async function PH(){let S=(await X()).lastSeenVersion;if(!S)return!0;return S!==f}async function Z2(){await l({lastSeenVersion:f})}async function z2(){if(!await PH())return;let $=b2.find((Y)=>Y.version===f);if(!$){await Z2();return}let S=` \x1B[36m\uD83D\uDCCB v${$.version} \u66F4\u65B0\u5185\u5BB9\uFF1A\x1B[0m`;console.log(S);for(let Y of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${Y}`);console.log(),await Z2()}async function W2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of b2){let Y=$.version===f?`\x1B[36;1mv${$.version}\x1B[0m \x1B[90m(\u5F53\u524D)\x1B[0m`:`\x1B[1mv${$.version}\x1B[0m`;console.log(),console.log(` ${Y} \x1B[90m${$.date}\x1B[0m`);for(let E of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${E}`)}console.log(),console.log(" "+"\u2500".repeat(40)),console.log(),await n({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}h();async function J2(){let $=t1(),S=await q2(),Y=process.cwd(),E=[],O=[...$].sort((x,H)=>{if(x.id===S)return-1;if(H.id===S)return 1;return 0});for(let x of O){let H=await x2(x.id,B1,!0);E.push({value:{type:"launch",client:x},label:x.name,hint:M("recentProjects.launchInCurrent")});for(let q of H)E.push({value:{type:"launch-in-project",client:x,projectPath:q.path},label:` \u2514\u2500 ${G2(q.path,35)}`,hint:R2(q.lastLaunchedAt)})}return E.push({value:{type:"advanced"},label:M("menu.advanced"),hint:M("menu.advancedHint")},{value:{type:"exit"},label:M("menu.exit")}),E}async function j1(){let $=await J2(),S=await S$({message:M("menu.selectAction"),options:$});if(A(S))return null;return S}async function y1(){let $=await S$({message:M("menu.advancedOptions"),options:[{value:{type:"stats"},label:M("menu.viewStats")},{value:{type:"config"},label:M("menu.configApiKey")},{value:{type:"resetOptions"},label:M("menu.resetOptions")},{value:{type:"changelog"},label:"\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7"},{value:{type:"language"},label:M("menu.changeLanguage")},{value:null,label:M("menu.back")}]});if(A($)||$===null)return null;return $}h();function FH($){return $.startsWith("cr_")&&$.length>10}async function kH($){try{let Y=await(await fetch(`${p}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(Y.success&&Y.data?.id)return{valid:!0,apiId:Y.data.id};return{valid:!1,error:Y.error||M("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:M("auth.networkError")}}}async function T2($){if(!FH($))return L("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:M("auth.invalidFormat")};let S=await kH($);if(!S.valid)return L("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),L("api_key_validated",{success:!0}),c$(),{success:!0}}h();async function p$($=!1){if(!$)Z.warn("API Key not detected"),console.log();let S=await B0({message:M("prompts.enterApiKey"),placeholder:M("prompts.apiKeyPlaceholder"),validate(O){if(!O)return M("prompts.enterApiKey");if(!O.startsWith("cr_"))return M("prompts.keyInvalidFormat");if(O.length<10)return M("prompts.keyInvalidFormat")}});if(A(S))return!1;let Y=g();Y.start(M("prompts.validating"));let E=await T2(S);if(E.success)return Y.stop(M("prompts.keyConfigured")),!0;else return Y.stop(M("prompts.keyValidationFailed",{error:E.error||""})),!1}async function U$(){try{let $=await n1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${p}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${p}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!Y.success)return{success:!1,error:Y.error||Y.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let x=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:Y.data?.usage?.total?.requests||0,totalCost:Y.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(Y.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function f1($){return $.toLocaleString("en-US")}h();function uH($,S){let Y=[];if(Y.push(""),Y.push(` ${M("stats.title")}`),Y.push(""),Y.push(` ${M("stats.totalRequests",{count:f1($.totalRequests)})}`),Y.push(` ${M("stats.totalCost",{cost:$.totalCost})}`),Y.push(` ${M("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)Y.push(""),Y.push(` ${M("stats.modelDistribution")}`),$.modelStats.forEach((E,O)=>{let x=O===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",H=E.model.length>25?E.model.slice(0,22)+"...":E.model;Y.push(` ${x} ${H.padEnd(25)} ${f1(E.requests).padStart(6)} ${M("stats.times")} ${E.cost.padStart(8)}`)});return Y.push(""),Y.push(` \x1B[90m${M("stats.refreshHint",{countdown:S})}\x1B[0m`),Y.join(`
|
|
329
|
-
`)}async function
|
|
330
|
-
`).length;process.stdout.write(`\x1B[${q}A\x1B[0J`)}O=uH(Y.data,E),console.log(O)};x();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((q)=>{let R=!0,G=()=>{if(!R)return;R=!1,v(),q()},Q=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let z=await U$();if(z.success)Y=z}x()},1000),v=()=>{if(clearInterval(Q),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function gH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${M("cli.version",{version:f})}`,E=C1(Y),O=Math.floor((50-E)/2),x=50-O-E;console.log(` \u2502${" ".repeat(O)}${Y}${" ".repeat(x)}\u2502`);let H=M("banner.welcome"),q=`\x1B[90m${H}\x1B[0m`,R=C1(H),G=Math.floor((50-R)/2),Q=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(Q)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function I2($){switch($.type){case"launch":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=await E$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)Z.error(Y.error||M("cli.launchFailed"));return!0}case"launch-in-project":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await E$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)Z.error(E.error||M("cli.launchFailed"));return!0}case"advanced":{L("menu_action",{action:"advanced"});let S=await y1();if(S)return await I2(S);return!0}case"stats":return L("menu_action",{action:"stats"}),await _1(),!0;case"config":return L("menu_action",{action:"config"}),await p$(!0),!0;case"resetOptions":return L("menu_action",{action:"resetOptions"}),await v2(),Z.success(M("menu.optionsReset")),!0;case"changelog":return L("menu_action",{action:"changelog"}),await W2(),!0;case"language":return L("menu_action",{action:"language"}),await dH(),!0;case"exit":return L("menu_action",{action:"exit"}),!1}}async function dH(){let $=Q$(),S=M(`language.${$}`),Y=await S$({message:M("menu.changeLanguage")+` (${M("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:M("language.en")},{value:"zh",label:M("language.zh")}]});if(A(Y))return;Z1(Y);let E=M(`language.${Y}`);Z.success(M("menu.languageChanged",{lang:E}))}async function X2(){if(gH(),await z2(),!await r1()){if(!await p$()){v1("\u518D\u89C1\uFF01");return}}while(!0){let S=await j1();if(S===null)break;if(!await I2(S))break}v1("\u518D\u89C1\uFF01")}h();import{homedir as DH}from"os";var N={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"};var T={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var J={directory:{icon:N.brightYellow,text:N.brightGreen},git:{icon:N.brightBlue,text:N.brightBlue,clean:N.brightGreen,dirty:N.brightYellow,conflict:N.brightRed},model:{icon:N.brightCyan,text:N.brightCyan},version:{icon:N.brightWhite,text:N.brightBlack},outputStyle:{icon:N.brightMagenta,text:N.brightMagenta},context:{icon:N.brightMagenta,low:N.brightGreen,medium:N.brightYellow,high:N.brightRed},todayUsage:{icon:N.brightGreen,text:N.brightGreen},separator:N.brightBlack},o={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"};function cH(){return!1}function j($){let S=o[$];if(typeof S==="string")return S;return cH()?S.nerd:S.plain}class l${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=j("directory");return`${J.directory.icon}${Y}${T.reset} ${J.directory.text}${S}${T.reset}`}formatPath($){let S=DH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class o${id="git";async render($){let S=$.workspace.current_dir;if(!await this.isGitRepository(S))return null;let E=await this.getBranch(S);if(!E)return null;let{status:O,statusColor:x}=await this.getStatus(S),{ahead:H,behind:q}=await this.getAheadBehind(S),R=j("git"),G=`${J.git.icon}${R}${T.reset} ${J.git.text}${E}${T.reset}`;if(G+=` ${x}${O}${T.reset}`,H>0)G+=` ${J.git.clean}${o.gitAhead}${H}${T.reset}`;if(q>0)G+=` ${J.git.dirty}${o.gitBehind}${q}${T.reset}`;return G}async isGitRepository($){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:$,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch($){try{let S=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited===0&&Y.trim())return Y.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(O.stdout).text();if(await O.exited===0&&x.trim())return`detached:${x.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited!==0)return{status:o.gitClean,statusColor:J.git.clean};let O=Y.trim();if(!O)return{status:o.gitClean,statusColor:J.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:o.gitConflict,statusColor:J.git.conflict};return{status:o.gitDirty,statusColor:J.git.dirty}}catch{return{status:o.gitClean,statusColor:J.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(Y.trim(),10)||0:0,x=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(x.stdout).text(),R=await x.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:R}}catch{return{ahead:0,behind:0}}}}var pH={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"};class a${id="model";render($){let S=$.model.id,Y=pH[S]||this.simplifyModelName($.model.display_name),E=j("model");return`${J.model.icon}${E}${T.reset} ${J.model.text}${Y}${T.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as lH}from"os";import{join as F}from"path";var{Glob:oH}=globalThis.Bun;var L2=process.platform==="win32";class i${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=j("version");return`${J.version.icon}${Y}${T.reset} ${J.version.text}v${S}${T.reset}`}async getClaudeCodeVersion(){let $=lH(),S=[];if(L2)S.push(F($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),F($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(F($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),F($,".npm-global","lib","node_modules","@anthropic-ai","claude-code","package.json"),"/usr/local/lib/node_modules/@anthropic-ai/claude-code/package.json","/usr/lib/node_modules/@anthropic-ai/claude-code/package.json");for(let E of S){let O=await this.readVersionFromPackage(E);if(O)return O}let Y=[];if(L2)Y.push({base:F($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:F($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:F($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:F($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:E,pattern:O}of Y)try{let x=new oH(O);for await(let H of x.scan({cwd:E,absolute:!0})){let q=await this.readVersionFromPackage(H);if(q)return q}}catch{continue}return null}async readVersionFromPackage($){try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}}var aH={"claude-opus-4-5-20251101":200000,"claude-opus-4-5":200000,"claude-sonnet-4-5-20250514":200000,"claude-sonnet-4-5":200000,"claude-sonnet-4-20250514":200000,"claude-sonnet-4":200000,"claude-sonnet-3-5-20241022":200000,"claude-3-5-sonnet-20241022":200000,"claude-3-5-sonnet":200000,"claude-haiku-3-5-20241022":200000,"claude-3-5-haiku-20241022":200000,"claude-3-5-haiku":200000},iH=200000;class D{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),Y=this.getContextLimit($.model.id),O=Math.round((S??0)/Y*100),x=Math.max(0,100-O),H=j("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${J.context.icon}${H}${T.reset} ${q}Context Remaining: ${x}%${T.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${T.reset}${H}${O}${T.reset}${N.brightBlack}${x}]${T.reset}`}getRemainingColor($){if($<=20)return J.context.high;if($<=50)return J.context.medium;return J.context.low}async getTokensWithCache($){let S=Date.now();if(D.cache&&D.cache.path===$&&S-D.cache.timestamp<D.CACHE_TTL)return D.cache.tokens;let Y=await this.parseTranscriptTokens($);return D.cache={path:$,tokens:Y,timestamp:S},Y}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let Y=await S.text();if(!Y.trim())return null;let E=Y.split(`
|
|
331
|
-
`).filter((O)=>O.trim());for(let O=E.length-1;O>=0;O--)try{let x=JSON.parse(E[O]);if(x.type==="assistant"&&x.message?.usage){let H=x.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return aH[$]||iH}}class a{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(a.cache&&Date.now()-a.cache.timestamp<a.CACHE_TTL)return a.cache.data;try{let S=await U$();if(!S.success||!S.data)return null;let Y=S.data.todayCost,E=
|
|
332
|
-
`)}renderLine($,S){let Y=[];for(let E of S){let O=$.get(E);if(O)Y.push(O)}return Y.join(this.separator)}}import{join as x$,dirname as rH}from"path";import{homedir as
|
|
333
|
-
${
|
|
327
|
+
exec "${m}" "${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 t(),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([m,"update",C1,"--latest"],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:Y}});if(await x.exited,x.exitCode===0)return await w2(),L("cli_updated",{from_version:_,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(x.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(Y){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${Y instanceof Error?Y.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function CH(){let $=await import("fs/promises"),S=c(g,"bun.lock");try{await $.unlink(S)}catch{}}async function mH(){let $=await import("fs/promises");try{let S=await t();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 CH();let E=Bun.spawn([m,"add",`${C1}@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 jH(){let $=await import("fs/promises"),S=c(u,"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 mH())return H.stop(Q("updater.migrationFailed")),!1;H.stop(Q("updater.installComplete"))}return await w2(),!0}}catch{}return!1}async function N$(){try{if(await jH())v.info(Q("updater.migrationComplete")),process.exit(0);let S=await hH();if(S.hasUpdate&&S.latestVersion){if(v.warn(Q("updater.newVersionAvailable",{version:S.latestVersion,current:_})),await KH(S.latestVersion))v.info(Q("updater.pleaseRestart")),process.exit(0)}}catch{}}K();function yH($){let S=$.codePointAt(0);if(!S)return!1;return S>=19968&&S<=40959||S>=13312&&S<=19903||S>=131072&&S<=191471||S>=63744&&S<=64255||S>=194560&&S<=195103||S>=44032&&S<=55215||S>=12352&&S<=12447||S>=12448&&S<=12543||S>=65280&&S<=65519||S>=126976&&S<=131071||S>=9728&&S<=10175||S===11088}function fH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function m1($){let S=fH($),Y=0;for(let E of S)Y+=yH(E)?2:1;return Y}K();var j1="__skip_prompt__";async function O$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let Y=await X(),E=Y.clientOptions?.[$.id];if(E&&Y.clientOptionsLocked?.[$.id])return Z2(S,E);let O=await _H($,S,E);if(O===null)return null;if(await l({clientOptions:{...Y.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...Y.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let x=w$();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 Z2(S,O.selectedIds)}async function v2(){await l({clientOptions:{},clientOptionsLocked:{}})}function Z2($,S){let Y=[];for(let E of S){let O=$.find((x)=>x.id===E);if(O)Y.push(...O.args)}return{args:Y,selectedOptionIds:S}}async function _H($,S,Y){let E=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 Z=G.find((U)=>Y?.includes(U.id))?.id??"__none__",z=await S$({message:Q("menu.selectOptions")||`${$.name} options`,initialValue:Z,options:[{value:"__none__",label:E==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((U)=>({value:U.id,label:O(U),hint:U.flag}))]});if(A(z))return null;if(z!=="__none__")x.push(z)}if(q.length>0){let G=await h0({message:Q("menu.selectOptions")||`${$.name} options`,options:[...q.map((z)=>({value:z.id,label:O(z),hint:z.flag,initialValue:Y?.includes(z.id)??!1})),{value:j1,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 w=G,Z=w.includes(j1);return x.push(...w.filter((z)=>z!==j1)),{selectedIds:x,lock:Z}}let R=await n({message:E==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(A(R))return null;return{selectedIds:x,lock:!!R}}var b2=[{version:"0.2.21",date:"2026-04-20",changes:["\u5BA2\u6237\u7AEF\u66F4\u65B0\u6539\u4E3A\u7528\u6237\u786E\u8BA4\uFF0C\u4E0D\u518D\u81EA\u52A8\u66F4\u65B0","\u7981\u6B62 Claude Code / Codex \u81EA\u8EAB\u7684\u81EA\u52A8\u66F4\u65B0\uFF0C\u7531 Tako \u7EDF\u4E00\u7BA1\u7406","\u4FEE\u590D\u5DF2\u5B89\u88C5\u7528\u6237\u539F\u751F\u4E8C\u8FDB\u5236\u672A\u5C31\u4F4D\u5BFC\u81F4 ENOEXEC \u7684\u95EE\u9898"]},{version:"0.2.20",date:"2026-04-19",changes:["\u4FEE\u590D Claude Code v2 \u539F\u751F\u4E8C\u8FDB\u5236\u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898","\u5B89\u88C5\u65F6\u81EA\u52A8\u8FD0\u884C postinstall \u786E\u4FDD\u539F\u751F\u4E8C\u8FDB\u5236\u5C31\u4F4D","\u65B0\u589E\u66F4\u65B0\u65E5\u5FD7\u529F\u80FD\uFF0C\u53EF\u5728\u4E3B\u9875\u67E5\u770B\u7248\u672C\u53D8\u66F4"]},{version:"0.2.18",date:"2026-04-15",changes:["\u65B0\u589E Gemini CLI \u652F\u6301","Codex \u914D\u7F6E\u7B80\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6","Claude Code settings.json \u51B2\u7A81\u68C0\u6D4B\u4E0E\u81EA\u52A8\u6E05\u7406","\u5B89\u88C5\u6D41\u7A0B\u4F18\u5316"]},{version:"0.2.14",date:"2026-04-10",changes:["Codex \u542F\u52A8\u9009\u9879\u652F\u6301\uFF08\u8DF3\u8FC7\u6743\u9650\u3001\u8BE6\u7EC6\u65E5\u5FD7\u7B49\uFF09","\u914D\u7F6E\u6CE8\u5165\u673A\u5236\u4F18\u5316"]},{version:"0.2.12",date:"2026-04-06",changes:["\u56FD\u5185\u955C\u50CF\u6E90\u5B89\u88C5\u4FEE\u590D","Windows install.ps1 \u5B89\u88C5\u811A\u672C\u4FEE\u590D"]},{version:"0.2.9",date:"2026-03-30",changes:["statusline \u72B6\u6001\u680F\u529F\u80FD\u8FC1\u79FB","Codex \u914D\u7F6E\u589E\u91CF\u66F4\u65B0\uFF0C\u4FEE\u590D\u542F\u52A8\u5931\u8D25\u95EE\u9898"]},{version:"0.2.0",date:"2026-03-15",changes:["\u5168\u65B0 Ink TUI \u4E3B\u83DC\u5355","\u5BA2\u6237\u7AEF Tab \u5207\u6362 + \u53EF\u6298\u53E0\u542F\u52A8\u9009\u9879","\u6700\u8FD1\u9879\u76EE\u5FEB\u901F\u542F\u52A8","\u57CB\u70B9\u5206\u6790\u7CFB\u7EDF"]}];async function PH(){let S=(await X()).lastSeenVersion;if(!S)return!0;return S!==_}async function z2(){await l({lastSeenVersion:_})}async function W2(){if(!await PH())return;let $=b2.find((Y)=>Y.version===_);if(!$){await z2();return}let S=` \x1B[36m\uD83D\uDCCB v${$.version} \u66F4\u65B0\u5185\u5BB9\uFF1A\x1B[0m`;console.log(S);for(let Y of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${Y}`);console.log(),await z2()}async function T2(){console.log(),console.log(" \x1B[1m\uD83D\uDCCB \u66F4\u65B0\u65E5\u5FD7\x1B[0m"),console.log(" "+"\u2500".repeat(40));for(let $ of b2){let Y=$.version===_?`\x1B[36;1mv${$.version}\x1B[0m \x1B[90m(\u5F53\u524D)\x1B[0m`:`\x1B[1mv${$.version}\x1B[0m`;console.log(),console.log(` ${Y} \x1B[90m${$.date}\x1B[0m`);for(let E of $.changes)console.log(` \x1B[90m\u2022\x1B[0m ${E}`)}console.log(),console.log(" "+"\u2500".repeat(40)),console.log(),await n({message:"\u8FD4\u56DE\u4E3B\u83DC\u5355",initialValue:!0,active:"\u786E\u5B9A",inactive:"\u786E\u5B9A"})}K();async function J2(){let $=t1(),S=await G2(),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 q2(x.id,h1,!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 ${R2(q.path,35)}`,hint:M2(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 y1(){let $=await J2(),S=await S$({message:Q("menu.selectAction"),options:$});if(A(S))return null;return S}async function f1(){let $=await S$({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 $}K();function FH($){return $.startsWith("cr_")&&$.length>10}async function kH($){try{let Y=await(await fetch(`${p}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(Y.success&&Y.data?.id)return{valid:!0,apiId:Y.data.id};return{valid:!1,error:Y.error||Q("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:Q("auth.networkError")}}}async function I2($){if(!FH($))return L("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:Q("auth.invalidFormat")};let S=await kH($);if(!S.valid)return L("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await l({apiKey:$,apiId:S.apiId}),L("api_key_validated",{success:!0}),D$(),{success:!0}}K();async function l$($=!1){if(!$)v.warn("API Key not detected"),console.log();let S=await B0({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 I2(S);if(E.success)return Y.stop(Q("prompts.keyConfigured")),!0;else return Y.stop(Q("prompts.keyValidationFailed",{error:E.error||""})),!1}async function U$(){try{let $=await n1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let Y=await(await fetch(`${p}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${p}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!Y.success)return{success:!1,error:Y.error||Y.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let x=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:Y.data?.usage?.total?.requests||0,totalCost:Y.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(Y.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function _1($){return $.toLocaleString("en-US")}K();function uH($,S){let Y=[];if(Y.push(""),Y.push(` ${Q("stats.title")}`),Y.push(""),Y.push(` ${Q("stats.totalRequests",{count:_1($.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)} ${_1(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 P1(){let S=d();S.start(Q("stats.fetching"));let Y=await U$();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=uH(Y.data,E),console.log(O)};x();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((q)=>{let R=!0,G=()=>{if(!R)return;R=!1,Z(),q()},w=setInterval(async()=>{if(!R)return;if(E--,E<=0){E=10;let z=await U$();if(z.success)Y=z}x()},1000),Z=()=>{if(clearInterval(w),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function gH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let Y=`\uD83D\uDC19 ${Q("cli.version",{version:_})}`,E=m1(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=m1(H),G=Math.floor((50-R)/2),w=50-G-R;console.log(` \u2502${" ".repeat(G)}${q}${" ".repeat(w)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function X2($){switch($.type){case"launch":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=await E$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!Y.success)v.error(Y.error||Q("cli.launchFailed"));return!0}case"launch-in-project":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await O$($.client);if(S===null)return!0;let Y=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],E=await E$($.client,{projectPath:$.projectPath,args:Y,selectedOptionIds:S.selectedOptionIds});if(!E.success)v.error(E.error||Q("cli.launchFailed"));return!0}case"advanced":{L("menu_action",{action:"advanced"});let S=await f1();if(S)return await X2(S);return!0}case"stats":return L("menu_action",{action:"stats"}),await P1(),!0;case"config":return L("menu_action",{action:"config"}),await l$(!0),!0;case"resetOptions":return L("menu_action",{action:"resetOptions"}),await v2(),v.success(Q("menu.optionsReset")),!0;case"changelog":return L("menu_action",{action:"changelog"}),await T2(),!0;case"language":return L("menu_action",{action:"language"}),await dH(),!0;case"exit":return L("menu_action",{action:"exit"}),!1}}async function dH(){let $=w$(),S=Q(`language.${$}`),Y=await S$({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;z1(Y);let E=Q(`language.${Y}`);v.success(Q("menu.languageChanged",{lang:E}))}async function L2(){if(gH(),await W2(),!await r1()){if(!await l$()){v1("\u518D\u89C1\uFF01");return}}while(!0){let S=await y1();if(S===null)break;if(!await X2(S))break}v1("\u518D\u89C1\uFF01")}K();import{homedir as DH}from"os";var N={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"};var J={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var T={directory:{icon:N.brightYellow,text:N.brightGreen},git:{icon:N.brightBlue,text:N.brightBlue,clean:N.brightGreen,dirty:N.brightYellow,conflict:N.brightRed},model:{icon:N.brightCyan,text:N.brightCyan},version:{icon:N.brightWhite,text:N.brightBlack},outputStyle:{icon:N.brightMagenta,text:N.brightMagenta},context:{icon:N.brightMagenta,low:N.brightGreen,medium:N.brightYellow,high:N.brightRed},todayUsage:{icon:N.brightGreen,text:N.brightGreen},separator:N.brightBlack},o={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"};function cH(){return!1}function y($){let S=o[$];if(typeof S==="string")return S;return cH()?S.nerd:S.plain}class o${id="directory";render($){let S=this.formatPath($.workspace.current_dir),Y=y("directory");return`${T.directory.icon}${Y}${J.reset} ${T.directory.text}${S}${J.reset}`}formatPath($){let S=DH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class a${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=y("git"),G=`${T.git.icon}${R}${J.reset} ${T.git.text}${E}${J.reset}`;if(G+=` ${x}${O}${J.reset}`,H>0)G+=` ${T.git.clean}${o.gitAhead}${H}${J.reset}`;if(q>0)G+=` ${T.git.dirty}${o.gitBehind}${q}${J.reset}`;return G}async isGitRepository($){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:$,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch($){try{let S=Bun.spawn(["git","branch","--show-current"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited===0&&Y.trim())return Y.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(O.stdout).text();if(await O.exited===0&&x.trim())return`detached:${x.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text();if(await S.exited!==0)return{status:o.gitClean,statusColor:T.git.clean};let O=Y.trim();if(!O)return{status:o.gitClean,statusColor:T.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:o.gitConflict,statusColor:T.git.conflict};return{status:o.gitDirty,statusColor:T.git.dirty}}catch{return{status:o.gitClean,statusColor:T.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),Y=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(Y.trim(),10)||0:0,x=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(x.stdout).text(),R=await x.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:R}}catch{return{ahead:0,behind:0}}}}var pH={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"};class i${id="model";render($){let S=$.model.id,Y=pH[S]||this.simplifyModelName($.model.display_name),E=y("model");return`${T.model.icon}${E}${J.reset} ${T.model.text}${Y}${J.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as lH}from"os";import{join as k}from"path";var{Glob:oH}=globalThis.Bun;var N2=process.platform==="win32";class r${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let Y=y("version");return`${T.version.icon}${Y}${J.reset} ${T.version.text}v${S}${J.reset}`}async getClaudeCodeVersion(){let $=lH(),S=[];if(N2)S.push(k($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),k($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),k($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(k($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),k($,".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(N2)Y.push({base:k($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:k($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else Y.push({base:k($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:k($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:k($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:k($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:E,pattern:O}of Y)try{let x=new oH(O);for await(let H of x.scan({cwd:E,absolute:!0})){let q=await this.readVersionFromPackage(H);if(q)return q}}catch{continue}return null}async readVersionFromPackage($){try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}}var aH={"claude-opus-4-5-20251101":200000,"claude-opus-4-5":200000,"claude-sonnet-4-5-20250514":200000,"claude-sonnet-4-5":200000,"claude-sonnet-4-20250514":200000,"claude-sonnet-4":200000,"claude-sonnet-3-5-20241022":200000,"claude-3-5-sonnet-20241022":200000,"claude-3-5-sonnet":200000,"claude-haiku-3-5-20241022":200000,"claude-3-5-haiku-20241022":200000,"claude-3-5-haiku":200000},iH=200000;class D{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),Y=this.getContextLimit($.model.id),O=Math.round((S??0)/Y*100),x=Math.max(0,100-O),H=y("context"),q=this.getRemainingColor(x),R=this.renderProgressBar(x);return`${T.context.icon}${H}${J.reset} ${q}Context Remaining: ${x}%${J.reset} ${R}`}renderProgressBar($){let Y=Math.round($/100*10),E=10-Y,O="=".repeat(Y),x="-".repeat(E),H=this.getRemainingColor($);return`${N.brightBlack}[${J.reset}${H}${O}${J.reset}${N.brightBlack}${x}]${J.reset}`}getRemainingColor($){if($<=20)return T.context.high;if($<=50)return T.context.medium;return T.context.low}async getTokensWithCache($){let S=Date.now();if(D.cache&&D.cache.path===$&&S-D.cache.timestamp<D.CACHE_TTL)return D.cache.tokens;let Y=await this.parseTranscriptTokens($);return D.cache={path:$,tokens:Y,timestamp:S},Y}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let Y=await S.text();if(!Y.trim())return null;let E=Y.split(`
|
|
331
|
+
`).filter((O)=>O.trim());for(let O=E.length-1;O>=0;O--)try{let x=JSON.parse(E[O]);if(x.type==="assistant"&&x.message?.usage){let H=x.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return aH[$]||iH}}class a{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(a.cache&&Date.now()-a.cache.timestamp<a.CACHE_TTL)return a.cache.data;try{let S=await U$();if(!S.success||!S.data)return null;let Y=S.data.todayCost,E=y("todayUsage"),O=`${T.todayUsage.icon}${E}${J.reset} ${T.todayUsage.text}Today: ${Y}${J.reset}`;return a.cache={data:O,timestamp:Date.now()},O}catch{return null}}}class F1{separator=`${T.separator} \u2502 ${J.reset}`;render($){let S=["directory","git","model","version","today-usage"],Y=["context"],E=this.renderLine($,S),O=this.renderLine($,Y);return[E,O].filter((x)=>x.length>0).join(`
|
|
332
|
+
`)}renderLine($,S){let Y=[];for(let E of S){let O=$.get(E);if(O)Y.push(O)}return Y.join(this.separator)}}import{join as x$,dirname as rH}from"path";import{homedir as k1}from"os";import{mkdir as nH}from"fs/promises";var U2=x$(k1(),".tako"),sH=x$(U2,"cli"),eH=x$(U2,"bin",process.platform==="win32"?"tako.cmd":"tako");function tH(){if(process.platform==="win32")return x$(process.env.APPDATA||x$(k1(),"AppData","Roaming"),"claude","settings.json");return x$(k1(),".claude","settings.json")}var $3=process.platform==="win32",S3="0.1.48";function H3($,S){let Y=$.split(".").map(Number),E=S.split(".").map(Number),O=Math.max(Y.length,E.length);for(let x=0;x<O;x++){let H=Y[x]||0,q=E[x]||0;if(H!==q)return H-q}return 0}async function Y3(){let $=x$(sH,"node_modules","tako-cli","package.json");try{let S=Bun.file($);if(!await S.exists())return null;return(await S.json()).version||null}catch{return null}}async function E3(){let $=await Y3();if(!$)return!1;return H3($,S3)>=0}function O3(){return eH}function x3($){if($3)return $.replace(/\\/g,"/");return $}async function u1(){if(!await E3())return;let S=tH(),Y={};try{let H=Bun.file(S);if(await H.exists())Y=await H.json()}catch{}let O={type:"command",command:`"${x3(O3())}" statusline`,padding:0},x=typeof Y.statusLine==="object"&&Y.statusLine!==null?Y.statusLine.command:null;if(typeof x==="string"&&x.includes("tako statusline"))return;Y.statusLine=O,await nH(rH(S),{recursive:!0}),await Bun.write(S,JSON.stringify(Y,null,2))}var q3=[new o$,new a$,new i$,new r$,new D,new a];async function G3($){let S=await Promise.all(q3.map(async(O)=>{try{let x=await O.render($);return{id:O.id,content:x}}catch{return{id:O.id,content:null}}})),Y=new Map;for(let{id:O,content:x}of S)Y.set(O,x);return new F1().render(Y)}async function V2(){try{let $=await Bun.stdin.json(),S=await G3($);console.log(S)}catch($){process.exit(0)}}var g1="0.2.27";function R3(){console.log(`
|
|
333
|
+
${Q("cli.version",{version:g1})}
|
|
334
334
|
|
|
335
|
-
${
|
|
335
|
+
${Q("cli.usage")}
|
|
336
336
|
|
|
337
|
-
${
|
|
338
|
-
${
|
|
339
|
-
${
|
|
337
|
+
${Q("cli.options")}
|
|
338
|
+
${Q("cli.optionVersion")}
|
|
339
|
+
${Q("cli.optionHelp")}
|
|
340
340
|
|
|
341
|
-
${
|
|
342
|
-
${
|
|
343
|
-
${
|
|
344
|
-
${
|
|
341
|
+
${Q("cli.shortcuts")}
|
|
342
|
+
${Q("cli.shortcutClaude")}
|
|
343
|
+
${Q("cli.shortcutCodex")}
|
|
344
|
+
${Q("cli.shortcutGemini")}
|
|
345
345
|
|
|
346
|
-
${
|
|
347
|
-
${
|
|
348
|
-
${
|
|
349
|
-
${
|
|
350
|
-
${
|
|
351
|
-
`)}async function
|
|
346
|
+
${Q("cli.examples")}
|
|
347
|
+
${Q("cli.exampleInteractive")}
|
|
348
|
+
${Q("cli.exampleClaude")}
|
|
349
|
+
${Q("cli.exampleCodex")}
|
|
350
|
+
${Q("cli.exampleGemini")}
|
|
351
|
+
`)}async function M3(){let $=process.argv.slice(2);if($[0]==="statusline"){await V2();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${g1}`);return}if($.includes("-h")||$.includes("--help")){R3();return}let S=g1==="dev";if(D$(),L("cli_started"),$.includes("--claude")){let Y=K$("claude-code");if(!Y)console.error(Q("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let Y=K$("codex");if(!Y)console.error(Q("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--gemini")){let Y=K$("gemini");if(!Y)console.error(Q("cli.clientNotFound",{client:"Gemini CLI"})),process.exit(1);if(!S)await N$();let E=await O$(Y);if(E===null)return;let O=await E$(Y,{args:E.args,selectedOptionIds:E.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await N$();u1().catch(()=>{}),await L2()}process.on("beforeExit",async()=>{await L$()});process.on("SIGINT",async()=>{await L$(),process.exit(0)});process.on("SIGTERM",async()=>{await L$(),process.exit(0)});M3().catch(async($)=>{console.error(Q("cli.cliError"),$),await L$(),process.exit(1)});
|