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