tako-cli 0.2.17 → 0.2.18

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 CHANGED
@@ -1,61 +1,61 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var MS=Object.create;var{getPrototypeOf:TS,defineProperty:v$,getOwnPropertyNames:d1,getOwnPropertyDescriptor:wS}=Object,c1=Object.prototype.hasOwnProperty;function l1($){return this[$]}var NS,QS,L$=($,S,E)=>{var Y=$!=null&&typeof $==="object";if(Y){var O=S?NS??=new WeakMap:QS??=new WeakMap,G=O.get($);if(G)return G}E=$!=null?MS(TS($)):{};let H=S||!$||!$.__esModule?v$(E,"default",{value:$,enumerable:!0}):E;for(let R of d1($))if(!c1.call(H,R))v$(H,R,{get:l1.bind($,R),enumerable:!0});if(Y)O.set($,H);return H},ZS=($)=>{var S=(u1??=new WeakMap).get($),E;if(S)return S;if(S=v$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var Y of d1($))if(!c1.call(S,Y))v$(S,Y,{get:l1.bind($,Y),enumerable:!(E=wS($,Y))||E.enumerable})}return u1.set($,S),S},u1,D1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var JS=($)=>$;function zS($,S){this[$]=JS.bind(null,S)}var WS=($,S)=>{for(var E in S)v$($,E,{get:S[E],enumerable:!0,configurable:!0,set:zS.bind(S,E)})};var LS=($,S)=>()=>($&&(S=$($=0)),S);var C=import.meta.require;var S1=D1((EE,t1)=>{var $1={to($,S){if(!S)return`\x1B[${$+1}G`;return`\x1B[${S+1};${$+1}H`},move($,S){let E="";if($<0)E+=`\x1B[${-$}D`;else if($>0)E+=`\x1B[${$}C`;if(S<0)E+=`\x1B[${-S}A`;else if(S>0)E+=`\x1B[${S}B`;return E},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"},VS={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},AS={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 E=0;E<$;E++)S+=this.line+(E<$-1?$1.up():"");if($)S+=$1.left;return S}};t1.exports={cursor:$1,scroll:VS,erase:AS,beep:"\x07"}});var E1=D1((YE,H1)=>{var B$=process||{},$0=B$.argv||[],A$=B$.env||{},BS=!(!!A$.NO_COLOR||$0.includes("--no-color"))&&(!!A$.FORCE_COLOR||$0.includes("--color")||B$.platform==="win32"||(B$.stdout||{}).isTTY&&A$.TERM!=="dumb"||!!A$.CI),hS=($,S,E=$)=>(Y)=>{let O=""+Y,G=O.indexOf(S,$.length);return~G?$+KS(O,S,E,G)+S:$+O+S},KS=($,S,E,Y)=>{let O="",G=0;do O+=$.substring(G,Y)+E,G=Y+S.length,Y=$.indexOf(S,G);while(~Y);return O+$.substring(G)},S0=($=BS)=>{let S=$?hS:()=>String;return{isColorSupported:$,reset:S("\x1B[0m","\x1B[0m"),bold:S("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:S("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:S("\x1B[3m","\x1B[23m"),underline:S("\x1B[4m","\x1B[24m"),inverse:S("\x1B[7m","\x1B[27m"),hidden:S("\x1B[8m","\x1B[28m"),strikethrough:S("\x1B[9m","\x1B[29m"),black:S("\x1B[30m","\x1B[39m"),red:S("\x1B[31m","\x1B[39m"),green:S("\x1B[32m","\x1B[39m"),yellow:S("\x1B[33m","\x1B[39m"),blue:S("\x1B[34m","\x1B[39m"),magenta:S("\x1B[35m","\x1B[39m"),cyan:S("\x1B[36m","\x1B[39m"),white:S("\x1B[37m","\x1B[39m"),gray:S("\x1B[90m","\x1B[39m"),bgBlack:S("\x1B[40m","\x1B[49m"),bgRed:S("\x1B[41m","\x1B[49m"),bgGreen:S("\x1B[42m","\x1B[49m"),bgYellow:S("\x1B[43m","\x1B[49m"),bgBlue:S("\x1B[44m","\x1B[49m"),bgMagenta:S("\x1B[45m","\x1B[49m"),bgCyan:S("\x1B[46m","\x1B[49m"),bgWhite:S("\x1B[47m","\x1B[49m"),blackBright:S("\x1B[90m","\x1B[39m"),redBright:S("\x1B[91m","\x1B[39m"),greenBright:S("\x1B[92m","\x1B[39m"),yellowBright:S("\x1B[93m","\x1B[39m"),blueBright:S("\x1B[94m","\x1B[39m"),magentaBright:S("\x1B[95m","\x1B[39m"),cyanBright:S("\x1B[96m","\x1B[39m"),whiteBright:S("\x1B[97m","\x1B[39m"),bgBlackBright:S("\x1B[100m","\x1B[49m"),bgRedBright:S("\x1B[101m","\x1B[49m"),bgGreenBright:S("\x1B[102m","\x1B[49m"),bgYellowBright:S("\x1B[103m","\x1B[49m"),bgBlueBright:S("\x1B[104m","\x1B[49m"),bgMagentaBright:S("\x1B[105m","\x1B[49m"),bgCyanBright:S("\x1B[106m","\x1B[49m"),bgWhiteBright:S("\x1B[107m","\x1B[49m")}};H1.exports=S0();H1.exports.createColors=S0});var h0={};WS(h0,{t:()=>v,setLocale:()=>w1,getLocale:()=>G$,detectLocale:()=>s,clearLocaleOverride:()=>I2});function s(){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 w1($){f$=$}function I2(){f$=null}function v($,S){let E=s(),Y=$.split("."),O=M2;for(let H of Y)if(O=O?.[H],!O)return $;let G=O[E]||O.en||$;if(S)for(let[H,R]of Object.entries(S))G=G.replace(`{${H}}`,String(R));return G}function G$(){return s()}var f$=null,M2;var h=LS(()=>{M2={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"},examples:{en:"Examples:",zh:"\u793A\u4F8B\uFF1A"},exampleInteractive:{en:" tako Interactive tool selection",zh:" tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177"},exampleClaude:{en:" tako --claude Launch Claude Code directly",zh:" tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code"},exampleCodex:{en:" tako --codex Launch Codex directly",zh:" tako --codex \u76F4\u63A5\u542F\u52A8 Codex"},clientNotFound:{en:"{client} client not found",zh:"{client} \u5BA2\u6237\u7AEF\u672A\u627E\u5230"},cliError:{en:"Tako CLI encountered an error:",zh:"Tako CLI \u53D1\u751F\u9519\u8BEF\uFF1A"},launchFailed:{en:"Launch failed",zh:"\u542F\u52A8\u5931\u8D25"}},auth:{invalidFormat:{en:"Invalid format, must start with cr_",zh:"\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"},validationFailed:{en:"Validation failed",zh:"\u9A8C\u8BC1\u5931\u8D25"},networkError:{en:"Network request failed",zh:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}},updater:{migrating:{en:"Detected old installation, migrating...",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB..."},installingLocally:{en:"Installing to local directory...",zh:"\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."},migrationFailed:{en:"Local installation failed, skipping migration",zh:"\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"},installComplete:{en:"Local installation complete",zh:"\u672C\u5730\u5B89\u88C5\u5B8C\u6210"},migrationComplete:{en:"Detected old installation, migration complete. Please restart Tako CLI",zh:"\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"},newVersionAvailable:{en:"New version v{version} available (current v{current})",zh:"\u53D1\u73B0\u65B0\u7248\u672C v{version}\uFF08\u5F53\u524D v{current}\uFF09"},pleaseRestart:{en:"Please restart Tako CLI to use the new version",zh:"\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"}},region:{usingChinaMirror:{en:"Detected China mainland network, using domestic mirror",zh:"\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"},usingGlobalMirror:{en:"Using global mirror",zh:"\u4F7F\u7528\u56FD\u9645\u6E90"}},telemetry:{toggle:{en:"Toggle Telemetry",zh:"\u5207\u6362\u9065\u6D4B"},enabled:{en:"Telemetry is enabled",zh:"\u9065\u6D4B\u5DF2\u5F00\u542F"},disabled:{en:"Telemetry is disabled",zh:"\u9065\u6D4B\u5DF2\u5173\u95ED"},description:{en:"Anonymous usage data helps us improve Tako CLI",zh:"\u533F\u540D\u4F7F\u7528\u6570\u636E\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB Tako CLI"}},time:{justNow:{en:"just now",zh:"\u521A\u521A"},minutesAgo:{en:"{n}m ago",zh:"{n}\u5206\u949F\u524D"},hoursAgo:{en:"{n}h ago",zh:"{n}\u5C0F\u65F6\u524D"},yesterday:{en:"yesterday",zh:"\u6628\u5929"},daysAgo:{en:"{n}d ago",zh:"{n}\u5929\u524D"},weeksAgo:{en:"{n}w ago",zh:"{n}\u5468\u524D"},monthsAgo:{en:"{n}mo ago",zh:"{n}\u6708\u524D"}},claudeCode:{settingsDetected:{en:`Detected hardcoded config in Claude Code settings that conflicts with Tako:
3
+ var TS=Object.create;var{getPrototypeOf:zS,defineProperty:M$,getOwnPropertyNames:c1,getOwnPropertyDescriptor:IS}=Object,D1=Object.prototype.hasOwnProperty;function l1($){return this[$]}var NS,WS,U$=($,S,E)=>{var Y=$!=null&&typeof $==="object";if(Y){var O=S?NS??=new WeakMap:WS??=new WeakMap,x=O.get($);if(x)return x}E=$!=null?TS(zS($)):{};let H=S||!$||!$.__esModule?M$(E,"default",{value:$,enumerable:!0}):E;for(let R of c1($))if(!D1.call(H,R))M$(H,R,{get:l1.bind($,R),enumerable:!0});if(Y)O.set($,H);return H},LS=($)=>{var S=(d1??=new WeakMap).get($),E;if(S)return S;if(S=M$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var Y of c1($))if(!D1.call(S,Y))M$(S,Y,{get:l1.bind($,Y),enumerable:!(E=IS($,Y))||E.enumerable})}return d1.set($,S),S},d1,p1=($,S)=>()=>(S||$((S={exports:{}}).exports,S),S.exports);var XS=($)=>$;function US($,S){this[$]=XS.bind(null,S)}var VS=($,S)=>{for(var E in S)M$($,E,{get:S[E],enumerable:!0,configurable:!0,set:US.bind(S,E)})};var BS=($,S)=>()=>($&&(S=$($=0)),S);var K=import.meta.require;var S1=p1((b3,$0)=>{var $1={to($,S){if(!S)return`\x1B[${$+1}G`;return`\x1B[${S+1};${$+1}H`},move($,S){let E="";if($<0)E+=`\x1B[${-$}D`;else if($>0)E+=`\x1B[${$}C`;if(S<0)E+=`\x1B[${-S}A`;else if(S>0)E+=`\x1B[${S}B`;return E},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"},KS={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},CS={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 E=0;E<$;E++)S+=this.line+(E<$-1?$1.up():"");if($)S+=$1.left;return S}};$0.exports={cursor:$1,scroll:KS,erase:CS,beep:"\x07"}});var E1=p1((v3,H1)=>{var K$=process||{},S0=K$.argv||[],h$=K$.env||{},mS=!(!!h$.NO_COLOR||S0.includes("--no-color"))&&(!!h$.FORCE_COLOR||S0.includes("--color")||K$.platform==="win32"||(K$.stdout||{}).isTTY&&h$.TERM!=="dumb"||!!h$.CI),yS=($,S,E=$)=>(Y)=>{let O=""+Y,x=O.indexOf(S,$.length);return~x?$+fS(O,S,E,x)+S:$+O+S},fS=($,S,E,Y)=>{let O="",x=0;do O+=$.substring(x,Y)+E,x=Y+S.length,Y=$.indexOf(S,x);while(~Y);return O+$.substring(x)},H0=($=mS)=>{let S=$?yS:()=>String;return{isColorSupported:$,reset:S("\x1B[0m","\x1B[0m"),bold:S("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:S("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:S("\x1B[3m","\x1B[23m"),underline:S("\x1B[4m","\x1B[24m"),inverse:S("\x1B[7m","\x1B[27m"),hidden:S("\x1B[8m","\x1B[28m"),strikethrough:S("\x1B[9m","\x1B[29m"),black:S("\x1B[30m","\x1B[39m"),red:S("\x1B[31m","\x1B[39m"),green:S("\x1B[32m","\x1B[39m"),yellow:S("\x1B[33m","\x1B[39m"),blue:S("\x1B[34m","\x1B[39m"),magenta:S("\x1B[35m","\x1B[39m"),cyan:S("\x1B[36m","\x1B[39m"),white:S("\x1B[37m","\x1B[39m"),gray:S("\x1B[90m","\x1B[39m"),bgBlack:S("\x1B[40m","\x1B[49m"),bgRed:S("\x1B[41m","\x1B[49m"),bgGreen:S("\x1B[42m","\x1B[49m"),bgYellow:S("\x1B[43m","\x1B[49m"),bgBlue:S("\x1B[44m","\x1B[49m"),bgMagenta:S("\x1B[45m","\x1B[49m"),bgCyan:S("\x1B[46m","\x1B[49m"),bgWhite:S("\x1B[47m","\x1B[49m"),blackBright:S("\x1B[90m","\x1B[39m"),redBright:S("\x1B[91m","\x1B[39m"),greenBright:S("\x1B[92m","\x1B[39m"),yellowBright:S("\x1B[93m","\x1B[39m"),blueBright:S("\x1B[94m","\x1B[39m"),magentaBright:S("\x1B[95m","\x1B[39m"),cyanBright:S("\x1B[96m","\x1B[39m"),whiteBright:S("\x1B[97m","\x1B[39m"),bgBlackBright:S("\x1B[100m","\x1B[49m"),bgRedBright:S("\x1B[101m","\x1B[49m"),bgGreenBright:S("\x1B[102m","\x1B[49m"),bgYellowBright:S("\x1B[103m","\x1B[49m"),bgBlueBright:S("\x1B[104m","\x1B[49m"),bgMagentaBright:S("\x1B[105m","\x1B[49m"),bgCyanBright:S("\x1B[106m","\x1B[49m"),bgWhiteBright:S("\x1B[107m","\x1B[49m")}};H1.exports=H0();H1.exports.createColors=H0});var K0={};VS(K0,{t:()=>v,setLocale:()=>Z1,getLocale:()=>q$,detectLocale:()=>s,clearLocaleOverride:()=>J2});function s(){if(_$)return _$;let $=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if($.toLowerCase().includes("zh")||$.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function Z1($){_$=$}function J2(){_$=null}function v($,S){let E=s(),Y=$.split("."),O=T2;for(let H of Y)if(O=O?.[H],!O)return $;let x=O[E]||O.en||$;if(S)for(let[H,R]of Object.entries(S))x=x.replace(`{${H}}`,String(R));return x}function q$(){return s()}var _$=null,T2;var h=BS(()=>{T2={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 T2}from"os";import{join as w2}from"path";import{join as U$}from"path";import{homedir as XS}from"os";import{join as E$}from"path";var F=E$(XS(),".tako"),o1=E$(F,"config.json"),r$=E$(F,"tools"),k=E$(F,"cli"),p=E$(F,"bun"),K=E$(p,"bin",process.platform==="win32"?"bun.exe":"bun"),US=process.env.TAKO_SERVER||"https://claude-proxy.shiroha.tech",c=process.env.PROXY_BASE_URL||"https://claude-proxy.shiroha.tech",sH=process.env.TAKO_DEV==="true"||US.includes("localhost"),p1={apiKey:"",apiId:"",installedClients:{}};async function i1(){let $=await import("fs/promises");try{await $.mkdir(F,{recursive:!0}),await $.mkdir(r$,{recursive:!0})}catch{}}async function U(){await i1();try{let $=Bun.file(o1);if(await $.exists()){let S=await $.json();return{...p1,...S}}}catch{}return{...p1}}async function n$($){await i1(),await Bun.write(o1,JSON.stringify($,null,2))}async function a($){let E={...await U(),...$};return await n$(E),E}async function a1(){return!!(await U()).apiKey}async function X$(){return(await U()).apiKey}async function r1(){return(await U()).apiId}function s$($,S){if(!$.startsWith(F))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${S} \u8DEF\u5F84 "${$}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function I$($){let S=U$(r$,$);return s$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function n1($){let S=I$($.id),E=U$(S,"node_modules",$.package,"package.json");try{let Y=Bun.file(E);if(!await Y.exists())return null;let G=(await Y.json()).bin;if(!G)return null;let H=null;if(typeof G==="string")H=G;else if(typeof G==="object"&&G[$.command])H=G[$.command];if(!H)return null;let R=U$(S,"node_modules",$.package,H);return s$(R,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),R}catch{return null}}function s1($){let S=I$($.id),E=U$(S,"node_modules",".bin",$.command);return s$(E,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),E}var e$=new Map;function V$($){e$.set($.id,$)}function e1(){return Array.from(e$.values())}function t$($){return e$.get($)}var A=L$(S1(),1),K$=L$(E1(),1);import{stdin as I0,stdout as M0}from"process";import*as o from"readline";import H0 from"readline";import{WriteStream as CS}from"tty";function mS({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 yS=mS();function T0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(yS,"")}function w0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var N0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(Y){var O=Y.charCodeAt(0),G=Y.length==2?Y.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=G&&G<=57343&&(O&=1023,G&=1023,H=O<<10|G,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(Y){var O=this.eastAsianWidth(Y);return O=="F"||O=="W"||O=="A"?2:1};function E(Y){return Y.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(Y){for(var O=E(Y),G=0,H=0;H<O.length;H++)G=G+this.characterLength(O[H]);return G},S.slice=function(Y,O,G){textLen=S.length(Y),O=O||0,G=G||1,O<0&&(O=textLen+O),G<0&&(G=textLen+G);for(var H="",R=0,q=E(Y),x=0;x<q.length;x++){var I=q[x],M=S.length(I);if(R>=O-(M==2?1:0))if(R+M<=G)H+=I;else break;R+=M}return H}})(N0);var fS=N0.exports,jS=w0(fS),_S=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},PS=w0(_S);function M$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=T0($),$.length===0))return 0;$=$.replace(PS()," ");let E=S.ambiguousIsNarrow?1:2,Y=0;for(let O of $){let G=O.codePointAt(0);if(G<=31||G>=127&&G<=159||G>=768&&G<=879)continue;switch(jS.eastAsianWidth(O)){case"F":case"W":Y+=2;break;case"A":Y+=E;break;default:Y+=1}}return Y}var Y1=10,E0=($=0)=>(S)=>`\x1B[${S+$}m`,Y0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,O0=($=0)=>(S,E,Y)=>`\x1B[${38+$};2;${S};${E};${Y}m`,z={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(z.modifier);var FS=Object.keys(z.color),kS=Object.keys(z.bgColor);[...FS,...kS];function gS(){let $=new Map;for(let[S,E]of Object.entries(z)){for(let[Y,O]of Object.entries(E))z[Y]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},E[Y]=z[Y],$.set(O[0],O[1]);Object.defineProperty(z,S,{value:E,enumerable:!1})}return Object.defineProperty(z,"codes",{value:$,enumerable:!1}),z.color.close="\x1B[39m",z.bgColor.close="\x1B[49m",z.color.ansi=E0(),z.color.ansi256=Y0(),z.color.ansi16m=O0(),z.bgColor.ansi=E0(Y1),z.bgColor.ansi256=Y0(Y1),z.bgColor.ansi16m=O0(Y1),Object.defineProperties(z,{rgbToAnsi256:{value:(S,E,Y)=>S===E&&E===Y?S<8?16:S>248?231:Math.round((S-8)/247*24)+232:16+36*Math.round(S/255*5)+6*Math.round(E/255*5)+Math.round(Y/255*5),enumerable:!1},hexToRgb:{value:(S)=>{let E=/[a-f\d]{6}|[a-f\d]{3}/i.exec(S.toString(16));if(!E)return[0,0,0];let[Y]=E;Y.length===3&&(Y=[...Y].map((G)=>G+G).join(""));let O=Number.parseInt(Y,16);return[O>>16&255,O>>8&255,O&255]},enumerable:!1},hexToAnsi256:{value:(S)=>z.rgbToAnsi256(...z.hexToRgb(S)),enumerable:!1},ansi256ToAnsi:{value:(S)=>{if(S<8)return 30+S;if(S<16)return 90+(S-8);let E,Y,O;if(S>=232)E=((S-232)*10+8)/255,Y=E,O=E;else{S-=16;let R=S%36;E=Math.floor(S/36)/5,Y=Math.floor(R/6)/5,O=R%6/5}let G=Math.max(E,Y,O)*2;if(G===0)return 30;let H=30+(Math.round(O)<<2|Math.round(Y)<<1|Math.round(E));return G===2&&(H+=60),H},enumerable:!1},rgbToAnsi:{value:(S,E,Y)=>z.ansi256ToAnsi(z.rgbToAnsi256(S,E,Y)),enumerable:!1},hexToAnsi:{value:(S)=>z.ansi256ToAnsi(z.hexToAnsi256(S)),enumerable:!1}}),z}var uS=gS(),C$=new Set(["\x1B","\x9B"]),dS=39,G1="\x07",Q0="[",cS="]",Z0="m",R1=`${cS}8;;`,G0=($)=>`${C$.values().next().value}${Q0}${$}${Z0}`,R0=($)=>`${C$.values().next().value}${R1}${$}${G1}`,lS=($)=>$.split(" ").map((S)=>M$(S)),O1=($,S,E)=>{let Y=[...S],O=!1,G=!1,H=M$(T0($[$.length-1]));for(let[R,q]of Y.entries()){let x=M$(q);if(H+x<=E?$[$.length-1]+=q:($.push(q),H=0),C$.has(q)&&(O=!0,G=Y.slice(R+1).join("").startsWith(R1)),O){G?q===G1&&(O=!1,G=!1):q===Z0&&(O=!1);continue}H+=x,H===E&&R<Y.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},DS=($)=>{let S=$.split(" "),E=S.length;for(;E>0&&!(M$(S[E-1])>0);)E--;return E===S.length?$:S.slice(0,E).join(" ")+S.slice(E).join("")},pS=($,S,E={})=>{if(E.trim!==!1&&$.trim()==="")return"";let Y="",O,G,H=lS($),R=[""];for(let[x,I]of $.split(" ").entries()){E.trim!==!1&&(R[R.length-1]=R[R.length-1].trimStart());let M=M$(R[R.length-1]);if(x!==0&&(M>=S&&(E.wordWrap===!1||E.trim===!1)&&(R.push(""),M=0),(M>0||E.trim===!1)&&(R[R.length-1]+=" ",M++)),E.hard&&H[x]>S){let N=S-M,V=1+Math.floor((H[x]-N-1)/S);Math.floor((H[x]-1)/S)<V&&R.push(""),O1(R,I,S);continue}if(M+H[x]>S&&M>0&&H[x]>0){if(E.wordWrap===!1&&M<S){O1(R,I,S);continue}R.push("")}if(M+H[x]>S&&E.wordWrap===!1){O1(R,I,S);continue}R[R.length-1]+=I}E.trim!==!1&&(R=R.map((x)=>DS(x)));let q=[...R.join(`
6
- `)];for(let[x,I]of q.entries()){if(Y+=I,C$.has(I)){let{groups:N}=new RegExp(`(?:\\${Q0}(?<code>\\d+)m|\\${R1}(?<uri>.*)${G1})`).exec(q.slice(x).join(""))||{groups:{}};if(N.code!==void 0){let V=Number.parseFloat(N.code);O=V===dS?void 0:V}else N.uri!==void 0&&(G=N.uri.length===0?void 0:N.uri)}let M=uS.codes.get(Number(O));q[x+1]===`
7
- `?(G&&(Y+=R0("")),O&&M&&(Y+=G0(M))):I===`
8
- `&&(O&&M&&(Y+=G0(O)),G&&(Y+=R0(G)))}return Y};function x0($,S,E){return String($).normalize().replace(/\r\n/g,`
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 z2}from"os";import{join as I2}from"path";import{join as B$}from"path";import{homedir as AS}from"os";import{join as O$}from"path";var F=O$(AS(),".tako"),i1=O$(F,"config.json"),n$=O$(F,"tools"),k=O$(F,"cli"),p=O$(F,"bun"),C=O$(p,"bin",process.platform==="win32"?"bun.exe":"bun"),hS=process.env.TAKO_SERVER||"https://tako.shiroha.tech",c=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Y3=process.env.TAKO_DEV==="true"||hS.includes("localhost"),o1={apiKey:"",apiId:"",installedClients:{}};async function a1(){let $=await import("fs/promises");try{await $.mkdir(F,{recursive:!0}),await $.mkdir(n$,{recursive:!0})}catch{}}async function U(){await a1();try{let $=Bun.file(i1);if(await $.exists()){let S=await $.json();return{...o1,...S}}}catch{}return{...o1}}async function s$($){await a1(),await Bun.write(i1,JSON.stringify($,null,2))}async function a($){let E={...await U(),...$};return await s$(E),E}async function r1(){return!!(await U()).apiKey}async function V$(){return(await U()).apiKey}async function n1(){return(await U()).apiId}function e$($,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=B$(n$,$);return e$(S,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),S}async function s1($){let S=Q$($.id),E=B$(S,"node_modules",$.package,"package.json");try{let Y=Bun.file(E);if(!await Y.exists())return null;let x=(await Y.json()).bin;if(!x)return null;let H=null;if(typeof x==="string")H=x;else if(typeof x==="object"&&x[$.command])H=x[$.command];if(!H)return null;let R=B$(S,"node_modules",$.package,H);return e$(R,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),R}catch{return null}}function e1($){let S=Q$($.id),E=B$(S,"node_modules",".bin",$.command);return e$(E,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),E}var t$=new Map;function x$($){t$.set($.id,$)}function t1(){return Array.from(t$.values())}function A$($){return t$.get($)}var B=U$(S1(),1),m$=U$(E1(),1);import{stdin as M0,stdout as Q0}from"process";import*as o from"readline";import E0 from"readline";import{WriteStream as jS}from"tty";function _S({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 PS=_S();function Z0($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(PS,"")}function J0($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var T0={exports:{}};(function($){var S={};$.exports=S,S.eastAsianWidth=function(Y){var O=Y.charCodeAt(0),x=Y.length==2?Y.charCodeAt(1):0,H=O;return 55296<=O&&O<=56319&&56320<=x&&x<=57343&&(O&=1023,x&=1023,H=O<<10|x,H+=65536),H==12288||65281<=H&&H<=65376||65504<=H&&H<=65510?"F":H==8361||65377<=H&&H<=65470||65474<=H&&H<=65479||65482<=H&&H<=65487||65490<=H&&H<=65495||65498<=H&&H<=65500||65512<=H&&H<=65518?"H":4352<=H&&H<=4447||4515<=H&&H<=4519||4602<=H&&H<=4607||9001<=H&&H<=9002||11904<=H&&H<=11929||11931<=H&&H<=12019||12032<=H&&H<=12245||12272<=H&&H<=12283||12289<=H&&H<=12350||12353<=H&&H<=12438||12441<=H&&H<=12543||12549<=H&&H<=12589||12593<=H&&H<=12686||12688<=H&&H<=12730||12736<=H&&H<=12771||12784<=H&&H<=12830||12832<=H&&H<=12871||12880<=H&&H<=13054||13056<=H&&H<=19903||19968<=H&&H<=42124||42128<=H&&H<=42182||43360<=H&&H<=43388||44032<=H&&H<=55203||55216<=H&&H<=55238||55243<=H&&H<=55291||63744<=H&&H<=64255||65040<=H&&H<=65049||65072<=H&&H<=65106||65108<=H&&H<=65126||65128<=H&&H<=65131||110592<=H&&H<=110593||127488<=H&&H<=127490||127504<=H&&H<=127546||127552<=H&&H<=127560||127568<=H&&H<=127569||131072<=H&&H<=194367||177984<=H&&H<=196605||196608<=H&&H<=262141?"W":32<=H&&H<=126||162<=H&&H<=163||165<=H&&H<=166||H==172||H==175||10214<=H&&H<=10221||10629<=H&&H<=10630?"Na":H==161||H==164||167<=H&&H<=168||H==170||173<=H&&H<=174||176<=H&&H<=180||182<=H&&H<=186||188<=H&&H<=191||H==198||H==208||215<=H&&H<=216||222<=H&&H<=225||H==230||232<=H&&H<=234||236<=H&&H<=237||H==240||242<=H&&H<=243||247<=H&&H<=250||H==252||H==254||H==257||H==273||H==275||H==283||294<=H&&H<=295||H==299||305<=H&&H<=307||H==312||319<=H&&H<=322||H==324||328<=H&&H<=331||H==333||338<=H&&H<=339||358<=H&&H<=359||H==363||H==462||H==464||H==466||H==468||H==470||H==472||H==474||H==476||H==593||H==609||H==708||H==711||713<=H&&H<=715||H==717||H==720||728<=H&&H<=731||H==733||H==735||768<=H&&H<=879||913<=H&&H<=929||931<=H&&H<=937||945<=H&&H<=961||963<=H&&H<=969||H==1025||1040<=H&&H<=1103||H==1105||H==8208||8211<=H&&H<=8214||8216<=H&&H<=8217||8220<=H&&H<=8221||8224<=H&&H<=8226||8228<=H&&H<=8231||H==8240||8242<=H&&H<=8243||H==8245||H==8251||H==8254||H==8308||H==8319||8321<=H&&H<=8324||H==8364||H==8451||H==8453||H==8457||H==8467||H==8470||8481<=H&&H<=8482||H==8486||H==8491||8531<=H&&H<=8532||8539<=H&&H<=8542||8544<=H&&H<=8555||8560<=H&&H<=8569||H==8585||8592<=H&&H<=8601||8632<=H&&H<=8633||H==8658||H==8660||H==8679||H==8704||8706<=H&&H<=8707||8711<=H&&H<=8712||H==8715||H==8719||H==8721||H==8725||H==8730||8733<=H&&H<=8736||H==8739||H==8741||8743<=H&&H<=8748||H==8750||8756<=H&&H<=8759||8764<=H&&H<=8765||H==8776||H==8780||H==8786||8800<=H&&H<=8801||8804<=H&&H<=8807||8810<=H&&H<=8811||8814<=H&&H<=8815||8834<=H&&H<=8835||8838<=H&&H<=8839||H==8853||H==8857||H==8869||H==8895||H==8978||9312<=H&&H<=9449||9451<=H&&H<=9547||9552<=H&&H<=9587||9600<=H&&H<=9615||9618<=H&&H<=9621||9632<=H&&H<=9633||9635<=H&&H<=9641||9650<=H&&H<=9651||9654<=H&&H<=9655||9660<=H&&H<=9661||9664<=H&&H<=9665||9670<=H&&H<=9672||H==9675||9678<=H&&H<=9681||9698<=H&&H<=9701||H==9711||9733<=H&&H<=9734||H==9737||9742<=H&&H<=9743||9748<=H&&H<=9749||H==9756||H==9758||H==9792||H==9794||9824<=H&&H<=9825||9827<=H&&H<=9829||9831<=H&&H<=9834||9836<=H&&H<=9837||H==9839||9886<=H&&H<=9887||9918<=H&&H<=9919||9924<=H&&H<=9933||9935<=H&&H<=9953||H==9955||9960<=H&&H<=9983||H==10045||H==10071||10102<=H&&H<=10111||11093<=H&&H<=11097||12872<=H&&H<=12879||57344<=H&&H<=63743||65024<=H&&H<=65039||H==65533||127232<=H&&H<=127242||127248<=H&&H<=127277||127280<=H&&H<=127337||127344<=H&&H<=127386||917760<=H&&H<=917999||983040<=H&&H<=1048573||1048576<=H&&H<=1114109?"A":"N"},S.characterLength=function(Y){var O=this.eastAsianWidth(Y);return O=="F"||O=="W"||O=="A"?2:1};function E(Y){return Y.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}S.length=function(Y){for(var O=E(Y),x=0,H=0;H<O.length;H++)x=x+this.characterLength(O[H]);return x},S.slice=function(Y,O,x){textLen=S.length(Y),O=O||0,x=x||1,O<0&&(O=textLen+O),x<0&&(x=textLen+x);for(var H="",R=0,q=E(Y),G=0;G<q.length;G++){var w=q[G],M=S.length(w);if(R>=O-(M==2?1:0))if(R+M<=x)H+=w;else break;R+=M}return H}})(T0);var FS=T0.exports,kS=J0(FS),gS=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},uS=J0(gS);function Z$($,S={}){if(typeof $!="string"||$.length===0||(S={ambiguousIsNarrow:!0,...S},$=Z0($),$.length===0))return 0;$=$.replace(uS()," ");let E=S.ambiguousIsNarrow?1:2,Y=0;for(let O of $){let x=O.codePointAt(0);if(x<=31||x>=127&&x<=159||x>=768&&x<=879)continue;switch(kS.eastAsianWidth(O)){case"F":case"W":Y+=2;break;case"A":Y+=E;break;default:Y+=1}}return Y}var Y1=10,Y0=($=0)=>(S)=>`\x1B[${S+$}m`,O0=($=0)=>(S)=>`\x1B[${38+$};5;${S}m`,x0=($=0)=>(S,E,Y)=>`\x1B[${38+$};2;${S};${E};${Y}m`,N={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(N.modifier);var dS=Object.keys(N.color),cS=Object.keys(N.bgColor);[...dS,...cS];function DS(){let $=new Map;for(let[S,E]of Object.entries(N)){for(let[Y,O]of Object.entries(E))N[Y]={open:`\x1B[${O[0]}m`,close:`\x1B[${O[1]}m`},E[Y]=N[Y],$.set(O[0],O[1]);Object.defineProperty(N,S,{value:E,enumerable:!1})}return Object.defineProperty(N,"codes",{value:$,enumerable:!1}),N.color.close="\x1B[39m",N.bgColor.close="\x1B[49m",N.color.ansi=Y0(),N.color.ansi256=O0(),N.color.ansi16m=x0(),N.bgColor.ansi=Y0(Y1),N.bgColor.ansi256=O0(Y1),N.bgColor.ansi16m=x0(Y1),Object.defineProperties(N,{rgbToAnsi256:{value:(S,E,Y)=>S===E&&E===Y?S<8?16:S>248?231:Math.round((S-8)/247*24)+232:16+36*Math.round(S/255*5)+6*Math.round(E/255*5)+Math.round(Y/255*5),enumerable:!1},hexToRgb:{value:(S)=>{let E=/[a-f\d]{6}|[a-f\d]{3}/i.exec(S.toString(16));if(!E)return[0,0,0];let[Y]=E;Y.length===3&&(Y=[...Y].map((x)=>x+x).join(""));let O=Number.parseInt(Y,16);return[O>>16&255,O>>8&255,O&255]},enumerable:!1},hexToAnsi256:{value:(S)=>N.rgbToAnsi256(...N.hexToRgb(S)),enumerable:!1},ansi256ToAnsi:{value:(S)=>{if(S<8)return 30+S;if(S<16)return 90+(S-8);let E,Y,O;if(S>=232)E=((S-232)*10+8)/255,Y=E,O=E;else{S-=16;let R=S%36;E=Math.floor(S/36)/5,Y=Math.floor(R/6)/5,O=R%6/5}let x=Math.max(E,Y,O)*2;if(x===0)return 30;let H=30+(Math.round(O)<<2|Math.round(Y)<<1|Math.round(E));return x===2&&(H+=60),H},enumerable:!1},rgbToAnsi:{value:(S,E,Y)=>N.ansi256ToAnsi(N.rgbToAnsi256(S,E,Y)),enumerable:!1},hexToAnsi:{value:(S)=>N.ansi256ToAnsi(N.hexToAnsi256(S)),enumerable:!1}}),N}var lS=DS(),y$=new Set(["\x1B","\x9B"]),pS=39,x1="\x07",z0="[",oS="]",I0="m",R1=`${oS}8;;`,R0=($)=>`${y$.values().next().value}${z0}${$}${I0}`,G0=($)=>`${y$.values().next().value}${R1}${$}${x1}`,iS=($)=>$.split(" ").map((S)=>Z$(S)),O1=($,S,E)=>{let Y=[...S],O=!1,x=!1,H=Z$(Z0($[$.length-1]));for(let[R,q]of Y.entries()){let G=Z$(q);if(H+G<=E?$[$.length-1]+=q:($.push(q),H=0),y$.has(q)&&(O=!0,x=Y.slice(R+1).join("").startsWith(R1)),O){x?q===x1&&(O=!1,x=!1):q===I0&&(O=!1);continue}H+=G,H===E&&R<Y.length-1&&($.push(""),H=0)}!H&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},aS=($)=>{let S=$.split(" "),E=S.length;for(;E>0&&!(Z$(S[E-1])>0);)E--;return E===S.length?$:S.slice(0,E).join(" ")+S.slice(E).join("")},rS=($,S,E={})=>{if(E.trim!==!1&&$.trim()==="")return"";let Y="",O,x,H=iS($),R=[""];for(let[G,w]of $.split(" ").entries()){E.trim!==!1&&(R[R.length-1]=R[R.length-1].trimStart());let M=Z$(R[R.length-1]);if(G!==0&&(M>=S&&(E.wordWrap===!1||E.trim===!1)&&(R.push(""),M=0),(M>0||E.trim===!1)&&(R[R.length-1]+=" ",M++)),E.hard&&H[G]>S){let J=S-M,V=1+Math.floor((H[G]-J-1)/S);Math.floor((H[G]-1)/S)<V&&R.push(""),O1(R,w,S);continue}if(M+H[G]>S&&M>0&&H[G]>0){if(E.wordWrap===!1&&M<S){O1(R,w,S);continue}R.push("")}if(M+H[G]>S&&E.wordWrap===!1){O1(R,w,S);continue}R[R.length-1]+=w}E.trim!==!1&&(R=R.map((G)=>aS(G)));let q=[...R.join(`
6
+ `)];for(let[G,w]of q.entries()){if(Y+=w,y$.has(w)){let{groups:J}=new RegExp(`(?:\\${z0}(?<code>\\d+)m|\\${R1}(?<uri>.*)${x1})`).exec(q.slice(G).join(""))||{groups:{}};if(J.code!==void 0){let V=Number.parseFloat(J.code);O=V===pS?void 0:V}else J.uri!==void 0&&(x=J.uri.length===0?void 0:J.uri)}let M=lS.codes.get(Number(O));q[G+1]===`
7
+ `?(x&&(Y+=G0("")),O&&M&&(Y+=R0(M))):w===`
8
+ `&&(O&&M&&(Y+=R0(O)),x&&(Y+=G0(x)))}return Y};function q0($,S,E){return String($).normalize().replace(/\r\n/g,`
9
9
  `).split(`
10
- `).map((Y)=>pS(Y,S,E)).join(`
11
- `)}var oS=Object.defineProperty,iS=($,S,E)=>(S in $)?oS($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,f=($,S,E)=>(iS($,typeof S!="symbol"?S+"":S,E),E);function aS($,S){if($===S)return;let E=$.split(`
10
+ `).map((Y)=>rS(Y,S,E)).join(`
11
+ `)}var nS=Object.defineProperty,sS=($,S,E)=>(S in $)?nS($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,f=($,S,E)=>(sS($,typeof S!="symbol"?S+"":S,E),E);function eS($,S){if($===S)return;let E=$.split(`
12
12
  `),Y=S.split(`
13
- `),O=[];for(let G=0;G<Math.max(E.length,Y.length);G++)E[G]!==Y[G]&&O.push(G);return O}var J0=Symbol("clack:cancel");function B($){return $===J0}function h$($,S){$.isTTY&&$.setRawMode(S)}var q0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),rS=new Set(["up","down","left","right","space","enter"]);class T${constructor({render:$,input:S=I0,output:E=M0,...Y},O=!0){f(this,"input"),f(this,"output"),f(this,"rl"),f(this,"opts"),f(this,"_track",!1),f(this,"_render"),f(this,"_cursor",0),f(this,"state","initial"),f(this,"value"),f(this,"error",""),f(this,"subscribers",new Map),f(this,"_prevFrame",""),this.opts=Y,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=E}prompt(){let $=new CS(0);return $._write=(S,E,Y)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),Y()},this.input.pipe($),this.rl=H0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),H0.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),h$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,E)=>{this.once("submit",()=>{this.output.write(A.cursor.show),this.output.off("resize",this.render),h$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(A.cursor.show),this.output.off("resize",this.render),h$(this.input,!1),S(J0)})})}on($,S){let E=this.subscribers.get($)??[];E.push({cb:S}),this.subscribers.set($,E)}once($,S){let E=this.subscribers.get($)??[];E.push({cb:S,once:!0}),this.subscribers.set($,E)}emit($,...S){let E=this.subscribers.get($)??[],Y=[];for(let O of E)O.cb(...S),O.once&&Y.push(()=>E.splice(E.indexOf(O),1));for(let O of Y)O()}unsubscribe(){this.subscribers.clear()}onKeypress($,S){if(this.state==="error"&&(this.state="active"),S?.name&&!this._track&&q0.has(S.name)&&this.emit("cursor",q0.get(S.name)),S?.name&&rS.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 E=this.opts.validate(this.value);E&&(this.error=E,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
- `),h$(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(A.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(A.cursor.hide);else{let S=aS(this._prevFrame,$);if(this.restoreCursor(),S&&S?.length===1){let E=S[0];this.output.write(A.cursor.move(0,E)),this.output.write(A.erase.lines(1));let Y=$.split(`
16
- `);this.output.write(Y[E]),this._prevFrame=$,this.output.write(A.cursor.move(0,Y.length-E-1));return}else if(S&&S?.length>1){let E=S[0];this.output.write(A.cursor.move(0,E)),this.output.write(A.erase.down());let Y=$.split(`
13
+ `),O=[];for(let x=0;x<Math.max(E.length,Y.length);x++)E[x]!==Y[x]&&O.push(x);return O}var N0=Symbol("clack:cancel");function A($){return $===N0}function C$($,S){$.isTTY&&$.setRawMode(S)}var b0=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),tS=new Set(["up","down","left","right","space","enter"]);class J${constructor({render:$,input:S=M0,output:E=Q0,...Y},O=!0){f(this,"input"),f(this,"output"),f(this,"rl"),f(this,"opts"),f(this,"_track",!1),f(this,"_render"),f(this,"_cursor",0),f(this,"state","initial"),f(this,"value"),f(this,"error",""),f(this,"subscribers",new Map),f(this,"_prevFrame",""),this.opts=Y,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=E}prompt(){let $=new jS(0);return $._write=(S,E,Y)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),Y()},this.input.pipe($),this.rl=E0.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),E0.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),C$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((S,E)=>{this.once("submit",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),C$(this.input,!1),S(this.value)}),this.once("cancel",()=>{this.output.write(B.cursor.show),this.output.off("resize",this.render),C$(this.input,!1),S(N0)})})}on($,S){let E=this.subscribers.get($)??[];E.push({cb:S}),this.subscribers.set($,E)}once($,S){let E=this.subscribers.get($)??[];E.push({cb:S,once:!0}),this.subscribers.set($,E)}emit($,...S){let E=this.subscribers.get($)??[],Y=[];for(let O of E)O.cb(...S),O.once&&Y.push(()=>E.splice(E.indexOf(O),1));for(let O of Y)O()}unsubscribe(){this.subscribers.clear()}onKeypress($,S){if(this.state==="error"&&(this.state="active"),S?.name&&!this._track&&b0.has(S.name)&&this.emit("cursor",b0.get(S.name)),S?.name&&tS.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 E=this.opts.validate(this.value);E&&(this.error=E,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
+ `),C$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=q0(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
15
+ `).length-1;this.output.write(B.cursor.move(-999,$*-1))}render(){let $=q0(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(B.cursor.hide);else{let S=eS(this._prevFrame,$);if(this.restoreCursor(),S&&S?.length===1){let E=S[0];this.output.write(B.cursor.move(0,E)),this.output.write(B.erase.lines(1));let Y=$.split(`
16
+ `);this.output.write(Y[E]),this._prevFrame=$,this.output.write(B.cursor.move(0,Y.length-E-1));return}else if(S&&S?.length>1){let E=S[0];this.output.write(B.cursor.move(0,E)),this.output.write(B.erase.down());let Y=$.split(`
17
17
  `).slice(E);this.output.write(Y.join(`
18
- `)),this._prevFrame=$;return}this.output.write(A.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class x1 extends T${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(S)=>{this.output.write(A.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var nS=Object.defineProperty,sS=($,S,E)=>(S in $)?nS($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,b0=($,S,E)=>(sS($,typeof S!="symbol"?S+"":S,E),E),z0=class extends T${constructor($){super($,!1),b0(this,"options"),b0(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 eS=Object.defineProperty,tS=($,S,E)=>(S in $)?eS($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,v0=($,S,E)=>(tS($,typeof S!="symbol"?S+"":S,E),E),W0=class extends T${constructor($){super($,!1),v0(this,"options"),v0(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:S})=>S===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(S)=>{switch(S){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var $2=Object.defineProperty,S2=($,S,E)=>(S in $)?$2($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,H2=($,S,E)=>(S2($,typeof S!="symbol"?S+"":S,E),E);class q1 extends T${constructor($){super($),H2(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=$.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${K$.default.inverse(K$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),E=this.value.slice(this.cursor);this.valueWithCursor=`${S}${K$.default.inverse(E[0])}${E.slice(1)}`}})}get cursor(){return this._cursor}}var E2=globalThis.process.platform.startsWith("win");function L0({input:$=I0,output:S=M0,overwrite:E=!0,hideCursor:Y=!0}={}){let O=o.createInterface({input:$,output:S,prompt:"",tabSize:1});o.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let G=(H,{name:R})=>{if(String(H)==="\x03"){Y&&S.write(A.cursor.show),process.exit(0);return}if(!E)return;o.moveCursor(S,R==="return"?0:-1,R==="return"?-1:0,()=>{o.clearLine(S,1,()=>{$.once("keypress",G)})})};return Y&&S.write(A.cursor.hide),$.once("keypress",G),()=>{$.off("keypress",G),Y&&S.write(A.cursor.show),$.isTTY&&!E2&&$.setRawMode(!1),O.terminal=!1,O.close()}}var b=L$(E1(),1),Y$=L$(S1(),1);import _ from"process";function Y2(){return _.platform!=="win32"?_.env.TERM!=="linux":Boolean(_.env.CI)||Boolean(_.env.WT_SESSION)||Boolean(_.env.TERMINUS_SUBLIME)||_.env.ConEmuTask==="{cmd::Cmder}"||_.env.TERM_PROGRAM==="Terminus-Sublime"||_.env.TERM_PROGRAM==="vscode"||_.env.TERM==="xterm-256color"||_.env.TERM==="alacritty"||_.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var b1=Y2(),X=($,S)=>b1?$:S,O2=X("\u25C6","*"),U0=X("\u25A0","x"),V0=X("\u25B2","x"),M1=X("\u25C7","o"),NE=X("\u250C","T"),Q=X("\u2502","|"),r=X("\u2514","\u2014"),v1=X("\u25CF",">"),I1=X("\u25CB"," "),G2=X("\u25FB","[\u2022]"),X0=X("\u25FC","[+]"),R2=X("\u25FB","[ ]"),QE=X("\u25AA","\u2022"),ZE=X("\u2500","-"),JE=X("\u256E","+"),zE=X("\u251C","+"),WE=X("\u256F","+"),x2=X("\u25CF","\u2022"),q2=X("\u25C6","*"),b2=X("\u25B2","!"),v2=X("\u25A0","x"),m$=($)=>{switch($){case"initial":case"active":return b.default.cyan(O2);case"cancel":return b.default.red(U0);case"error":return b.default.yellow(V0);case"submit":return b.default.green(M1)}},A0=($)=>new q1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${b.default.gray(Q)}
19
- ${m$(this.state)} ${$.message}
18
+ `)),this._prevFrame=$;return}this.output.write(B.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class G1 extends J${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(S)=>{this.output.write(B.cursor.move(0,-1)),this.value=S,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var $2=Object.defineProperty,S2=($,S,E)=>(S in $)?$2($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,v0=($,S,E)=>(S2($,typeof S!="symbol"?S+"":S,E),E),W0=class extends J${constructor($){super($,!1),v0(this,"options"),v0(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 H2=Object.defineProperty,E2=($,S,E)=>(S in $)?H2($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,w0=($,S,E)=>(E2($,typeof S!="symbol"?S+"":S,E),E),L0=class extends J${constructor($){super($,!1),w0(this,"options"),w0(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:S})=>S===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(S)=>{switch(S){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var Y2=Object.defineProperty,O2=($,S,E)=>(S in $)?Y2($,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):$[S]=E,x2=($,S,E)=>(O2($,typeof S!="symbol"?S+"":S,E),E);class q1 extends J${constructor($){super($),x2(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}${m$.default.inverse(m$.default.hidden("_"))}`;else{let S=this.value.slice(0,this.cursor),E=this.value.slice(this.cursor);this.valueWithCursor=`${S}${m$.default.inverse(E[0])}${E.slice(1)}`}})}get cursor(){return this._cursor}}var R2=globalThis.process.platform.startsWith("win");function X0({input:$=M0,output:S=Q0,overwrite:E=!0,hideCursor:Y=!0}={}){let O=o.createInterface({input:$,output:S,prompt:"",tabSize:1});o.emitKeypressEvents($,O),$.isTTY&&$.setRawMode(!0);let x=(H,{name:R})=>{if(String(H)==="\x03"){Y&&S.write(B.cursor.show),process.exit(0);return}if(!E)return;o.moveCursor(S,R==="return"?0:-1,R==="return"?-1:0,()=>{o.clearLine(S,1,()=>{$.once("keypress",x)})})};return Y&&S.write(B.cursor.hide),$.once("keypress",x),()=>{$.off("keypress",x),Y&&S.write(B.cursor.show),$.isTTY&&!R2&&$.setRawMode(!1),O.terminal=!1,O.close()}}var b=U$(E1(),1),R$=U$(S1(),1);import _ from"process";function G2(){return _.platform!=="win32"?_.env.TERM!=="linux":Boolean(_.env.CI)||Boolean(_.env.WT_SESSION)||Boolean(_.env.TERMINUS_SUBLIME)||_.env.ConEmuTask==="{cmd::Cmder}"||_.env.TERM_PROGRAM==="Terminus-Sublime"||_.env.TERM_PROGRAM==="vscode"||_.env.TERM==="xterm-256color"||_.env.TERM==="alacritty"||_.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var b1=G2(),X=($,S)=>b1?$:S,q2=X("\u25C6","*"),V0=X("\u25A0","x"),B0=X("\u25B2","x"),M1=X("\u25C7","o"),X3=X("\u250C","T"),T=X("\u2502","|"),r=X("\u2514","\u2014"),v1=X("\u25CF",">"),w1=X("\u25CB"," "),b2=X("\u25FB","[\u2022]"),U0=X("\u25FC","[+]"),v2=X("\u25FB","[ ]"),U3=X("\u25AA","\u2022"),V3=X("\u2500","-"),B3=X("\u256E","+"),A3=X("\u251C","+"),h3=X("\u256F","+"),w2=X("\u25CF","\u2022"),M2=X("\u25C6","*"),Q2=X("\u25B2","!"),Z2=X("\u25A0","x"),f$=($)=>{switch($){case"initial":case"active":return b.default.cyan(q2);case"cancel":return b.default.red(V0);case"error":return b.default.yellow(B0);case"submit":return b.default.green(M1)}},A0=($)=>new q1({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let S=`${b.default.gray(T)}
19
+ ${f$(this.state)} ${$.message}
20
20
  `,E=$.placeholder?b.default.inverse($.placeholder[0])+b.default.dim($.placeholder.slice(1)):b.default.inverse(b.default.hidden("_")),Y=this.value?this.valueWithCursor:E;switch(this.state){case"error":return`${S.trim()}
21
- ${b.default.yellow(Q)} ${Y}
21
+ ${b.default.yellow(T)} ${Y}
22
22
  ${b.default.yellow(r)} ${b.default.yellow(this.error)}
23
- `;case"submit":return`${S}${b.default.gray(Q)} ${b.default.dim(this.value||$.placeholder)}`;case"cancel":return`${S}${b.default.gray(Q)} ${b.default.strikethrough(b.default.dim(this.value??""))}${this.value?.trim()?`
24
- `+b.default.gray(Q):""}`;default:return`${S}${b.default.cyan(Q)} ${Y}
23
+ `;case"submit":return`${S}${b.default.gray(T)} ${b.default.dim(this.value||$.placeholder)}`;case"cancel":return`${S}${b.default.gray(T)} ${b.default.strikethrough(b.default.dim(this.value??""))}${this.value?.trim()?`
24
+ `+b.default.gray(T):""}`;default:return`${S}${b.default.cyan(T)} ${Y}
25
25
  ${b.default.cyan(r)}
26
- `}}}).prompt();var y$=($)=>{let S=$.active??"Yes",E=$.inactive??"No";return new x1({active:S,inactive:E,initialValue:$.initialValue??!0,render(){let Y=`${b.default.gray(Q)}
27
- ${m$(this.state)} ${$.message}
28
- `,O=this.value?S:E;switch(this.state){case"submit":return`${Y}${b.default.gray(Q)} ${b.default.dim(O)}`;case"cancel":return`${Y}${b.default.gray(Q)} ${b.default.strikethrough(b.default.dim(O))}
29
- ${b.default.gray(Q)}`;default:return`${Y}${b.default.cyan(Q)} ${this.value?`${b.default.green(v1)} ${S}`:`${b.default.dim(I1)} ${b.default.dim(S)}`} ${b.default.dim("/")} ${this.value?`${b.default.dim(I1)} ${b.default.dim(E)}`:`${b.default.green(v1)} ${E}`}
26
+ `}}}).prompt();var j$=($)=>{let S=$.active??"Yes",E=$.inactive??"No";return new G1({active:S,inactive:E,initialValue:$.initialValue??!0,render(){let Y=`${b.default.gray(T)}
27
+ ${f$(this.state)} ${$.message}
28
+ `,O=this.value?S:E;switch(this.state){case"submit":return`${Y}${b.default.gray(T)} ${b.default.dim(O)}`;case"cancel":return`${Y}${b.default.gray(T)} ${b.default.strikethrough(b.default.dim(O))}
29
+ ${b.default.gray(T)}`;default:return`${Y}${b.default.cyan(T)} ${this.value?`${b.default.green(v1)} ${S}`:`${b.default.dim(w1)} ${b.default.dim(S)}`} ${b.default.dim("/")} ${this.value?`${b.default.dim(w1)} ${b.default.dim(E)}`:`${b.default.green(v1)} ${E}`}
30
30
  ${b.default.cyan(r)}
31
- `}}}).prompt()},n=($)=>{let S=(Y,O)=>{let G=Y.label??String(Y.value);return O==="active"?`${b.default.green(v1)} ${G} ${Y.hint?b.default.dim(`(${Y.hint})`):""}`:O==="selected"?`${b.default.dim(G)}`:O==="cancelled"?`${b.default.strikethrough(b.default.dim(G))}`:`${b.default.dim(I1)} ${b.default.dim(G)}`},E=0;return new W0({options:$.options,initialValue:$.initialValue,render(){let Y=`${b.default.gray(Q)}
32
- ${m$(this.state)} ${$.message}
33
- `;switch(this.state){case"submit":return`${Y}${b.default.gray(Q)} ${S(this.options[this.cursor],"selected")}`;case"cancel":return`${Y}${b.default.gray(Q)} ${S(this.options[this.cursor],"cancelled")}
34
- ${b.default.gray(Q)}`;default:{let O=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=E+O-3?E=Math.max(Math.min(this.cursor-O+3,this.options.length-O),0):this.cursor<E+2&&(E=Math.max(this.cursor-2,0));let G=O<this.options.length&&E>0,H=O<this.options.length&&E+O<this.options.length;return`${Y}${b.default.cyan(Q)} ${this.options.slice(E,E+O).map((R,q,x)=>q===0&&G?b.default.dim("..."):q===x.length-1&&H?b.default.dim("..."):S(R,q+E===this.cursor?"active":"inactive")).join(`
35
- ${b.default.cyan(Q)} `)}
31
+ `}}}).prompt()},n=($)=>{let S=(Y,O)=>{let x=Y.label??String(Y.value);return O==="active"?`${b.default.green(v1)} ${x} ${Y.hint?b.default.dim(`(${Y.hint})`):""}`:O==="selected"?`${b.default.dim(x)}`:O==="cancelled"?`${b.default.strikethrough(b.default.dim(x))}`:`${b.default.dim(w1)} ${b.default.dim(x)}`},E=0;return new L0({options:$.options,initialValue:$.initialValue,render(){let Y=`${b.default.gray(T)}
32
+ ${f$(this.state)} ${$.message}
33
+ `;switch(this.state){case"submit":return`${Y}${b.default.gray(T)} ${S(this.options[this.cursor],"selected")}`;case"cancel":return`${Y}${b.default.gray(T)} ${S(this.options[this.cursor],"cancelled")}
34
+ ${b.default.gray(T)}`;default:{let O=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=E+O-3?E=Math.max(Math.min(this.cursor-O+3,this.options.length-O),0):this.cursor<E+2&&(E=Math.max(this.cursor-2,0));let x=O<this.options.length&&E>0,H=O<this.options.length&&E+O<this.options.length;return`${Y}${b.default.cyan(T)} ${this.options.slice(E,E+O).map((R,q,G)=>q===0&&x?b.default.dim("..."):q===G.length-1&&H?b.default.dim("..."):S(R,q+E===this.cursor?"active":"inactive")).join(`
35
+ ${b.default.cyan(T)} `)}
36
36
  ${b.default.cyan(r)}
37
- `}}}}).prompt()};var B0=($)=>{let S=(E,Y)=>{let O=E.label??String(E.value);return Y==="active"?`${b.default.cyan(G2)} ${O} ${E.hint?b.default.dim(`(${E.hint})`):""}`:Y==="selected"?`${b.default.green(X0)} ${b.default.dim(O)}`:Y==="cancelled"?`${b.default.strikethrough(b.default.dim(O))}`:Y==="active-selected"?`${b.default.green(X0)} ${O} ${E.hint?b.default.dim(`(${E.hint})`):""}`:Y==="submitted"?`${b.default.dim(O)}`:`${b.default.dim(R2)} ${b.default.dim(O)}`};return new z0({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(E){if(this.required&&E.length===0)return`Please select at least one option.
38
- ${b.default.reset(b.default.dim(`Press ${b.default.gray(b.default.bgWhite(b.default.inverse(" space ")))} to select, ${b.default.gray(b.default.bgWhite(b.default.inverse(" enter ")))} to submit`))}`},render(){let E=`${b.default.gray(Q)}
39
- ${m$(this.state)} ${$.message}
40
- `;switch(this.state){case"submit":return`${E}${b.default.gray(Q)} ${this.options.filter(({value:Y})=>this.value.includes(Y)).map((Y)=>S(Y,"submitted")).join(b.default.dim(", "))||b.default.dim("none")}`;case"cancel":{let Y=this.options.filter(({value:O})=>this.value.includes(O)).map((O)=>S(O,"cancelled")).join(b.default.dim(", "));return`${E}${b.default.gray(Q)} ${Y.trim()?`${Y}
41
- ${b.default.gray(Q)}`:""}`}case"error":{let Y=this.error.split(`
42
- `).map((O,G)=>G===0?`${b.default.yellow(r)} ${b.default.yellow(O)}`:` ${O}`).join(`
43
- `);return E+b.default.yellow(Q)+" "+this.options.map((O,G)=>{let H=this.value.includes(O.value),R=G===this.cursor;return R&&H?S(O,"active-selected"):H?S(O,"selected"):S(O,R?"active":"inactive")}).join(`
44
- ${b.default.yellow(Q)} `)+`
37
+ `}}}}).prompt()};var h0=($)=>{let S=(E,Y)=>{let O=E.label??String(E.value);return Y==="active"?`${b.default.cyan(b2)} ${O} ${E.hint?b.default.dim(`(${E.hint})`):""}`:Y==="selected"?`${b.default.green(U0)} ${b.default.dim(O)}`:Y==="cancelled"?`${b.default.strikethrough(b.default.dim(O))}`:Y==="active-selected"?`${b.default.green(U0)} ${O} ${E.hint?b.default.dim(`(${E.hint})`):""}`:Y==="submitted"?`${b.default.dim(O)}`:`${b.default.dim(v2)} ${b.default.dim(O)}`};return new W0({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(E){if(this.required&&E.length===0)return`Please select at least one option.
38
+ ${b.default.reset(b.default.dim(`Press ${b.default.gray(b.default.bgWhite(b.default.inverse(" space ")))} to select, ${b.default.gray(b.default.bgWhite(b.default.inverse(" enter ")))} to submit`))}`},render(){let E=`${b.default.gray(T)}
39
+ ${f$(this.state)} ${$.message}
40
+ `;switch(this.state){case"submit":return`${E}${b.default.gray(T)} ${this.options.filter(({value:Y})=>this.value.includes(Y)).map((Y)=>S(Y,"submitted")).join(b.default.dim(", "))||b.default.dim("none")}`;case"cancel":{let Y=this.options.filter(({value:O})=>this.value.includes(O)).map((O)=>S(O,"cancelled")).join(b.default.dim(", "));return`${E}${b.default.gray(T)} ${Y.trim()?`${Y}
41
+ ${b.default.gray(T)}`:""}`}case"error":{let Y=this.error.split(`
42
+ `).map((O,x)=>x===0?`${b.default.yellow(r)} ${b.default.yellow(O)}`:` ${O}`).join(`
43
+ `);return E+b.default.yellow(T)+" "+this.options.map((O,x)=>{let H=this.value.includes(O.value),R=x===this.cursor;return R&&H?S(O,"active-selected"):H?S(O,"selected"):S(O,R?"active":"inactive")}).join(`
44
+ ${b.default.yellow(T)} `)+`
45
45
  `+Y+`
46
- `}default:return`${E}${b.default.cyan(Q)} ${this.options.map((Y,O)=>{let G=this.value.includes(Y.value),H=O===this.cursor;return H&&G?S(Y,"active-selected"):G?S(Y,"selected"):S(Y,H?"active":"inactive")}).join(`
47
- ${b.default.cyan(Q)} `)}
46
+ `}default:return`${E}${b.default.cyan(T)} ${this.options.map((Y,O)=>{let x=this.value.includes(Y.value),H=O===this.cursor;return H&&x?S(Y,"active-selected"):x?S(Y,"selected"):S(Y,H?"active":"inactive")}).join(`
47
+ ${b.default.cyan(T)} `)}
48
48
  ${b.default.cyan(r)}
49
- `}}}).prompt()};var T1=($="")=>{process.stdout.write(`${b.default.gray(Q)}
49
+ `}}}).prompt()};var Q1=($="")=>{process.stdout.write(`${b.default.gray(T)}
50
50
  ${b.default.gray(r)} ${$}
51
51
 
52
- `)},w={message:($="",{symbol:S=b.default.gray(Q)}={})=>{let E=[`${b.default.gray(Q)}`];if($){let[Y,...O]=$.split(`
53
- `);E.push(`${S} ${Y}`,...O.map((G)=>`${b.default.gray(Q)} ${G}`))}process.stdout.write(`${E.join(`
52
+ `)},Z={message:($="",{symbol:S=b.default.gray(T)}={})=>{let E=[`${b.default.gray(T)}`];if($){let[Y,...O]=$.split(`
53
+ `);E.push(`${S} ${Y}`,...O.map((x)=>`${b.default.gray(T)} ${x}`))}process.stdout.write(`${E.join(`
54
54
  `)}
55
- `)},info:($)=>{w.message($,{symbol:b.default.blue(x2)})},success:($)=>{w.message($,{symbol:b.default.green(q2)})},step:($)=>{w.message($,{symbol:b.default.green(M1)})},warn:($)=>{w.message($,{symbol:b.default.yellow(b2)})},warning:($)=>{w.warn($)},error:($)=>{w.message($,{symbol:b.default.red(v2)})}},g=()=>{let $=b1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=b1?80:120,E,Y,O=!1,G="",H=(I="")=>{O=!0,E=L0(),G=I.replace(/\.+$/,""),process.stdout.write(`${b.default.gray(Q)}
56
- `);let M=0,N=0;Y=setInterval(()=>{let V=b.default.magenta($[M]),j=".".repeat(Math.floor(N)).slice(0,3);process.stdout.write(Y$.cursor.move(-999,0)),process.stdout.write(Y$.erase.down(1)),process.stdout.write(`${V} ${G}${j}`),M=M+1<$.length?M+1:0,N=N<$.length?N+0.125:0},S)},R=(I="",M=0)=>{G=I??G,O=!1,clearInterval(Y);let N=M===0?b.default.green(M1):M===1?b.default.red(U0):b.default.red(V0);process.stdout.write(Y$.cursor.move(-999,0)),process.stdout.write(Y$.erase.down(1)),process.stdout.write(`${N} ${G}
57
- `),E()},q=(I="")=>{G=I??G},x=(I)=>{let M=I>1?"Something went wrong":"Canceled";O&&R(M,I)};return process.on("uncaughtExceptionMonitor",()=>x(2)),process.on("unhandledRejection",()=>x(2)),process.on("SIGINT",()=>x(1)),process.on("SIGTERM",()=>x(1)),process.on("exit",x),{start:H,stop:R,message:q}};h();var K0=w2(T2(),".claude","settings.json"),N2=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function Q2($){if($.startsWith("ANTHROPIC_"))return!0;return N2.includes($)}async function Z2(){let $=await import("fs/promises"),S;try{S=await $.readFile(K0,"utf-8")}catch{return}let E;try{E=JSON.parse(S)}catch{return}let Y=[];if(E.env&&typeof E.env==="object"){for(let G of Object.keys(E.env))if(Q2(G))Y.push(G),delete E.env[G];if(Object.keys(E.env).length===0)delete E.env}if(Y.length===0)return;w.warn(v("claudeCode.settingsDetected",{fields:Y.join(", ")}));let O=await y$({message:v("claudeCode.confirmClean"),initialValue:!0});if(B(O)||!O){w.info(v("claudeCode.cleanSkipped"));return}await $.writeFile(K0,JSON.stringify(E,null,2)+`
58
- `),w.success(v("claudeCode.settingsCleaned"))}var J2={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${c}/api`,ANTHROPIC_AUTH_TOKEN:$}},async setupConfigFiles(){await Z2()},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"]}]};V$(J2);import{homedir as j2}from"os";import{join as L1}from"path";/*!
55
+ `)},info:($)=>{Z.message($,{symbol:b.default.blue(w2)})},success:($)=>{Z.message($,{symbol:b.default.green(M2)})},step:($)=>{Z.message($,{symbol:b.default.green(M1)})},warn:($)=>{Z.message($,{symbol:b.default.yellow(Q2)})},warning:($)=>{Z.warn($)},error:($)=>{Z.message($,{symbol:b.default.red(Z2)})}},g=()=>{let $=b1?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],S=b1?80:120,E,Y,O=!1,x="",H=(w="")=>{O=!0,E=X0(),x=w.replace(/\.+$/,""),process.stdout.write(`${b.default.gray(T)}
56
+ `);let M=0,J=0;Y=setInterval(()=>{let V=b.default.magenta($[M]),j=".".repeat(Math.floor(J)).slice(0,3);process.stdout.write(R$.cursor.move(-999,0)),process.stdout.write(R$.erase.down(1)),process.stdout.write(`${V} ${x}${j}`),M=M+1<$.length?M+1:0,J=J<$.length?J+0.125:0},S)},R=(w="",M=0)=>{x=w??x,O=!1,clearInterval(Y);let J=M===0?b.default.green(M1):M===1?b.default.red(V0):b.default.red(B0);process.stdout.write(R$.cursor.move(-999,0)),process.stdout.write(R$.erase.down(1)),process.stdout.write(`${J} ${x}
57
+ `),E()},q=(w="")=>{x=w??x},G=(w)=>{let M=w>1?"Something went wrong":"Canceled";O&&R(M,w)};return process.on("uncaughtExceptionMonitor",()=>G(2)),process.on("unhandledRejection",()=>G(2)),process.on("SIGINT",()=>G(1)),process.on("SIGTERM",()=>G(1)),process.on("exit",G),{start:H,stop:R,message:q}};h();var C0=I2(z2(),".claude","settings.json"),N2=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function W2($){if($.startsWith("ANTHROPIC_"))return!0;return N2.includes($)}async function L2(){let $=await import("fs/promises"),S;try{S=await $.readFile(C0,"utf-8")}catch{return}let E;try{E=JSON.parse(S)}catch{return}let Y=[];if(E.env&&typeof E.env==="object"){for(let x of Object.keys(E.env))if(W2(x))Y.push(x),delete E.env[x];if(Object.keys(E.env).length===0)delete E.env}if(Y.length===0)return;Z.warn(v("claudeCode.settingsDetected",{fields:Y.join(", ")}));let O=await j$({message:v("claudeCode.confirmClean"),initialValue:!0});if(A(O)||!O){Z.info(v("claudeCode.cleanSkipped"));return}await $.writeFile(C0,JSON.stringify(E,null,2)+`
58
+ `),Z.success(v("claudeCode.settingsCleaned"))}var X2={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",continueArg:"--continue",brandColor:"yellow",getEnvVars($){return{ANTHROPIC_BASE_URL:`${c}/api`,ANTHROPIC_AUTH_TOKEN:$}},async setupConfigFiles(){await L2()},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"]}]};x$(X2);import{homedir as k2}from"os";import{join as L1}from"path";/*!
59
59
  * Copyright (c) Squirrel Chat et al., All rights reserved.
60
60
  * SPDX-License-Identifier: BSD-3-Clause
61
61
  *
@@ -81,9 +81,9 @@ ${b.default.gray(r)} ${$}
81
81
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
82
82
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
83
83
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
84
- */function z2($,S){let E=$.slice(0,S).split(/\r\n|\n|\r/g);return[E.length,E.pop().length+1]}function W2($,S,E){let Y=$.split(/\r\n|\n|\r/g),O="",G=(Math.log10(S+1)|0)+1;for(let H=S-1;H<=S+1;H++){let R=Y[H-1];if(!R)continue;if(O+=H.toString().padEnd(G," "),O+=": ",O+=R,O+=`
85
- `,H===S)O+=" ".repeat(G+E+2),O+=`^
86
- `}return O}class T extends Error{line;column;codeblock;constructor($,S){let[E,Y]=z2(S.toml,S.ptr),O=W2(S.toml,E,Y);super(`Invalid TOML document: ${$}
84
+ */function U2($,S){let E=$.slice(0,S).split(/\r\n|\n|\r/g);return[E.length,E.pop().length+1]}function V2($,S,E){let Y=$.split(/\r\n|\n|\r/g),O="",x=(Math.log10(S+1)|0)+1;for(let H=S-1;H<=S+1;H++){let R=Y[H-1];if(!R)continue;if(O+=H.toString().padEnd(x," "),O+=": ",O+=R,O+=`
85
+ `,H===S)O+=" ".repeat(x+E+2),O+=`^
86
+ `}return O}class Q extends Error{line;column;codeblock;constructor($,S){let[E,Y]=U2(S.toml,S.ptr),O=V2(S.toml,E,Y);super(`Invalid TOML document: ${$}
87
87
 
88
88
  ${O}`,S);this.line=E,this.column=Y,this.codeblock=O}}/*!
89
89
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -111,14 +111,14 @@ ${O}`,S);this.line=E,this.column=Y,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 L2($,S){let E=0;while($[S-++E]==="\\");return--E&&E%2}function j$($,S=0,E=$.length){let Y=$.indexOf(`
115
- `,S);if($[Y-1]==="\r")Y--;return Y<=E?Y:-1}function R$($,S){for(let E=S;E<$.length;E++){let Y=$[E];if(Y===`
114
+ */function B2($,S){let E=0;while($[S-++E]==="\\");return--E&&E%2}function P$($,S=0,E=$.length){let Y=$.indexOf(`
115
+ `,S);if($[Y-1]==="\r")Y--;return Y<=E?Y:-1}function b$($,S){for(let E=S;E<$.length;E++){let Y=$[E];if(Y===`
116
116
  `)return E;if(Y==="\r"&&$[E+1]===`
117
- `)return E+1;if(Y<" "&&Y!=="\t"||Y==="\x7F")throw new T("control characters are not allowed in comments",{toml:$,ptr:S})}return $.length}function m($,S,E,Y){let O;while(!0){while((O=$[S])===" "||O==="\t"||!E&&(O===`
117
+ `)return E+1;if(Y<" "&&Y!=="\t"||Y==="\x7F")throw new Q("control characters are not allowed in comments",{toml:$,ptr:S})}return $.length}function m($,S,E,Y){let O;while(!0){while((O=$[S])===" "||O==="\t"||!E&&(O===`
118
118
  `||O==="\r"&&$[S+1]===`
119
- `))S++;if(Y||O!=="#")break;S=R$($,S)}return S}function C0($,S,E,Y,O=!1){if(!Y)return S=j$($,S),S<0?$.length:S;for(let G=S;G<$.length;G++){let H=$[G];if(H==="#")G=j$($,G);else if(H===E)return G+1;else if(H===Y||O&&(H===`
120
- `||H==="\r"&&$[G+1]===`
121
- `))return G}throw new T("cannot find end of structure",{toml:$,ptr:S})}function _$($,S){let E=$[S],Y=E===$[S+1]&&$[S+1]===$[S+2]?$.slice(S,S+3):E;S+=Y.length-1;do S=$.indexOf(Y,++S);while(S>-1&&E!=="'"&&L2($,S));if(S>-1){if(S+=Y.length,Y.length>1){if($[S]===E)S++;if($[S]===E)S++}}return S}/*!
119
+ `))S++;if(Y||O!=="#")break;S=b$($,S)}return S}function m0($,S,E,Y,O=!1){if(!Y)return S=P$($,S),S<0?$.length:S;for(let x=S;x<$.length;x++){let H=$[x];if(H==="#")x=P$($,x);else if(H===E)return x+1;else if(H===Y||O&&(H===`
120
+ `||H==="\r"&&$[x+1]===`
121
+ `))return x}throw new Q("cannot find end of structure",{toml:$,ptr:S})}function F$($,S){let E=$[S],Y=E===$[S+1]&&$[S+1]===$[S+2]?$.slice(S,S+3):E;S+=Y.length-1;do S=$.indexOf(Y,++S);while(S>-1&&E!=="'"&&B2($,S));if(S>-1){if(S+=Y.length,Y.length>1){if($[S]===E)S++;if($[S]===E)S++}}return S}/*!
122
122
  * Copyright (c) Squirrel Chat et al., All rights reserved.
123
123
  * SPDX-License-Identifier: BSD-3-Clause
124
124
  *
@@ -144,7 +144,7 @@ ${O}`,S);this.line=E,this.column=Y,this.codeblock=O}}/*!
144
144
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
145
145
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
146
146
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
147
- */var X2=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class i extends Date{#S=!1;#H=!1;#$=null;constructor($){let S=!0,E=!0,Y="Z";if(typeof $==="string"){let O=$.match(X2);if(O){if(!O[1])S=!1,$=`0000-01-01T${$}`;if(E=!!O[2],E&&$[10]===" "&&($=$.replace(" ","T")),O[2]&&+O[2]>23)$="";else if(Y=O[3]||null,$=$.toUpperCase(),!Y&&E)$+="Z"}else $=""}super($);if(!isNaN(this.getTime()))this.#S=S,this.#H=E,this.#$=Y}isDateTime(){return this.#S&&this.#H}isLocal(){return!this.#S||!this.#H||!this.#$}isDate(){return this.#S&&!this.#H}isTime(){return this.#H&&!this.#S}isValid(){return this.#S||this.#H}toISOString(){let $=super.toISOString();if(this.isDate())return $.slice(0,10);if(this.isTime())return $.slice(11,23);if(this.#$===null)return $.slice(0,-1);if(this.#$==="Z")return $;let S=+this.#$.slice(1,3)*60+ +this.#$.slice(4,6);return S=this.#$[0]==="-"?S:-S,new Date(this.getTime()-S*60000).toISOString().slice(0,-1)+this.#$}static wrapAsOffsetDateTime($,S="Z"){let E=new i($);return E.#$=S,E}static wrapAsLocalDateTime($){let S=new i($);return S.#$=null,S}static wrapAsLocalDate($){let S=new i($);return S.#H=!1,S.#$=null,S}static wrapAsLocalTime($){let S=new i($);return S.#S=!1,S.#$=null,S}}/*!
147
+ */var A2=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class i extends Date{#S=!1;#H=!1;#$=null;constructor($){let S=!0,E=!0,Y="Z";if(typeof $==="string"){let O=$.match(A2);if(O){if(!O[1])S=!1,$=`0000-01-01T${$}`;if(E=!!O[2],E&&$[10]===" "&&($=$.replace(" ","T")),O[2]&&+O[2]>23)$="";else if(Y=O[3]||null,$=$.toUpperCase(),!Y&&E)$+="Z"}else $=""}super($);if(!isNaN(this.getTime()))this.#S=S,this.#H=E,this.#$=Y}isDateTime(){return this.#S&&this.#H}isLocal(){return!this.#S||!this.#H||!this.#$}isDate(){return this.#S&&!this.#H}isTime(){return this.#H&&!this.#S}isValid(){return this.#S||this.#H}toISOString(){let $=super.toISOString();if(this.isDate())return $.slice(0,10);if(this.isTime())return $.slice(11,23);if(this.#$===null)return $.slice(0,-1);if(this.#$==="Z")return $;let S=+this.#$.slice(1,3)*60+ +this.#$.slice(4,6);return S=this.#$[0]==="-"?S:-S,new Date(this.getTime()-S*60000).toISOString().slice(0,-1)+this.#$}static wrapAsOffsetDateTime($,S="Z"){let E=new i($);return E.#$=S,E}static wrapAsLocalDateTime($){let S=new i($);return S.#$=null,S}static wrapAsLocalDate($){let S=new i($);return S.#H=!1,S.#$=null,S}static wrapAsLocalTime($){let S=new i($);return S.#S=!1,S.#$=null,S}}/*!
148
148
  * Copyright (c) Squirrel Chat et al., All rights reserved.
149
149
  * SPDX-License-Identifier: BSD-3-Clause
150
150
  *
@@ -170,13 +170,13 @@ ${O}`,S);this.line=E,this.column=Y,this.codeblock=O}}/*!
170
170
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
171
171
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
172
172
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
173
- */var U2=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,V2=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,A2=/^[+-]?0[0-9_]/,B2=/^[0-9a-f]{2,8}$/i,m0={b:"\b",t:"\t",n:`
174
- `,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function P$($,S=0,E=$.length){let Y=$[S]==="'",O=$[S++]===$[S]&&$[S]===$[S+1];if(O){if(E-=2,$[S+=2]==="\r")S++;if($[S]===`
175
- `)S++}let G=0,H,R="",q=S;while(S<E-1){let x=$[S++];if(x===`
176
- `||x==="\r"&&$[S]===`
177
- `){if(!O)throw new T("newlines are not allowed in strings",{toml:$,ptr:S-1})}else if(x<" "&&x!=="\t"||x==="\x7F")throw new T("control characters are not allowed in strings",{toml:$,ptr:S-1});if(H){if(H=!1,x==="x"||x==="u"||x==="U"){let I=$.slice(S,S+=x==="x"?2:x==="u"?4:8);if(!B2.test(I))throw new T("invalid unicode escape",{toml:$,ptr:G});try{R+=String.fromCodePoint(parseInt(I,16))}catch{throw new T("invalid unicode escape",{toml:$,ptr:G})}}else if(O&&(x===`
178
- `||x===" "||x==="\t"||x==="\r")){if(S=m($,S-1,!0),$[S]!==`
179
- `&&$[S]!=="\r")throw new T("invalid escape: only line-ending whitespace may be escaped",{toml:$,ptr:G});S=m($,S)}else if(x in m0)R+=m0[x];else throw new T("unrecognized escape sequence",{toml:$,ptr:G});q=S}else if(!Y&&x==="\\")G=S-1,H=!0,R+=$.slice(q,G)}return R+$.slice(q,E-1)}function y0($,S,E,Y){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 Y?0n:0;let O=U2.test($);if(O||V2.test($)){if(A2.test($))throw new T("leading zeroes are not allowed",{toml:S,ptr:E});$=$.replace(/_/g,"");let H=+$;if(isNaN(H))throw new T("invalid number",{toml:S,ptr:E});if(O){if((O=!Number.isSafeInteger(H))&&!Y)throw new T("integer value cannot be represented losslessly",{toml:S,ptr:E});if(O||Y===!0)H=BigInt($)}return H}let G=new i($);if(!G.isValid())throw new T("invalid value",{toml:S,ptr:E});return G}/*!
173
+ */var h2=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,K2=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,C2=/^[+-]?0[0-9_]/,m2=/^[0-9a-f]{2,8}$/i,y0={b:"\b",t:"\t",n:`
174
+ `,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function k$($,S=0,E=$.length){let Y=$[S]==="'",O=$[S++]===$[S]&&$[S]===$[S+1];if(O){if(E-=2,$[S+=2]==="\r")S++;if($[S]===`
175
+ `)S++}let x=0,H,R="",q=S;while(S<E-1){let G=$[S++];if(G===`
176
+ `||G==="\r"&&$[S]===`
177
+ `){if(!O)throw new Q("newlines are not allowed in strings",{toml:$,ptr:S-1})}else if(G<" "&&G!=="\t"||G==="\x7F")throw new Q("control characters are not allowed in strings",{toml:$,ptr:S-1});if(H){if(H=!1,G==="x"||G==="u"||G==="U"){let w=$.slice(S,S+=G==="x"?2:G==="u"?4:8);if(!m2.test(w))throw new Q("invalid unicode escape",{toml:$,ptr:x});try{R+=String.fromCodePoint(parseInt(w,16))}catch{throw new Q("invalid unicode escape",{toml:$,ptr:x})}}else if(O&&(G===`
178
+ `||G===" "||G==="\t"||G==="\r")){if(S=m($,S-1,!0),$[S]!==`
179
+ `&&$[S]!=="\r")throw new Q("invalid escape: only line-ending whitespace may be escaped",{toml:$,ptr:x});S=m($,S)}else if(G in y0)R+=y0[G];else throw new Q("unrecognized escape sequence",{toml:$,ptr:x});q=S}else if(!Y&&G==="\\")x=S-1,H=!0,R+=$.slice(q,x)}return R+$.slice(q,E-1)}function f0($,S,E,Y){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 Y?0n:0;let O=h2.test($);if(O||K2.test($)){if(C2.test($))throw new Q("leading zeroes are not allowed",{toml:S,ptr:E});$=$.replace(/_/g,"");let H=+$;if(isNaN(H))throw new Q("invalid number",{toml:S,ptr:E});if(O){if((O=!Number.isSafeInteger(H))&&!Y)throw new Q("integer value cannot be represented losslessly",{toml:S,ptr:E});if(O||Y===!0)H=BigInt($)}return H}let x=new i($);if(!x.isValid())throw new Q("invalid value",{toml:S,ptr:E});return x}/*!
180
180
  * Copyright (c) Squirrel Chat et al., All rights reserved.
181
181
  * SPDX-License-Identifier: BSD-3-Clause
182
182
  *
@@ -202,8 +202,8 @@ ${O}`,S);this.line=E,this.column=Y,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 h2($,S,E){let Y=$.slice(S,E),O=Y.indexOf("#");if(O>-1)R$($,O),Y=Y.slice(0,O);return[Y.trimEnd(),O]}function w$($,S,E,Y,O){if(Y===0)throw new T("document contains excessively nested structures. aborting.",{toml:$,ptr:S});let G=$[S];if(G==="["||G==="{"){let[q,x]=G==="["?j0($,S,Y,O):f0($,S,Y,O);if(E){if(x=m($,x),$[x]===",")x++;else if($[x]!==E)throw new T("expected comma or end of structure",{toml:$,ptr:x})}return[q,x]}let H;if(G==='"'||G==="'"){H=_$($,S);let q=P$($,S,H);if(E){if(H=m($,H),$[H]&&$[H]!==","&&$[H]!==E&&$[H]!==`
206
- `&&$[H]!=="\r")throw new T("unexpected character encountered",{toml:$,ptr:H});H+=+($[H]===",")}return[q,H]}H=C0($,S,",",E);let R=h2($,S,H-+($[H-1]===","));if(!R[0])throw new T("incomplete key-value declaration: no value specified",{toml:$,ptr:S});if(E&&R[1]>-1)H=m($,S+R[1]),H+=+($[H]===",");return[y0(R[0],$,S,O),H]}/*!
205
+ */function y2($,S,E){let Y=$.slice(S,E),O=Y.indexOf("#");if(O>-1)b$($,O),Y=Y.slice(0,O);return[Y.trimEnd(),O]}function T$($,S,E,Y,O){if(Y===0)throw new Q("document contains excessively nested structures. aborting.",{toml:$,ptr:S});let x=$[S];if(x==="["||x==="{"){let[q,G]=x==="["?_0($,S,Y,O):j0($,S,Y,O);if(E){if(G=m($,G),$[G]===",")G++;else if($[G]!==E)throw new Q("expected comma or end of structure",{toml:$,ptr:G})}return[q,G]}let H;if(x==='"'||x==="'"){H=F$($,S);let q=k$($,S,H);if(E){if(H=m($,H),$[H]&&$[H]!==","&&$[H]!==E&&$[H]!==`
206
+ `&&$[H]!=="\r")throw new Q("unexpected character encountered",{toml:$,ptr:H});H+=+($[H]===",")}return[q,H]}H=m0($,S,",",E);let R=y2($,S,H-+($[H-1]===","));if(!R[0])throw new Q("incomplete key-value declaration: no value specified",{toml:$,ptr:S});if(E&&R[1]>-1)H=m($,S+R[1]),H+=+($[H]===",");return[f0(R[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=E,this.column=Y,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 K2=/^[a-zA-Z0-9-_]+[ \t]*$/;function F$($,S,E="="){let Y=S-1,O=[],G=$.indexOf(E,S);if(G<0)throw new T("incomplete key-value: cannot find end of key",{toml:$,ptr:S});do{let H=$[S=++Y];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 R=_$($,S);if(R<0)throw new T("unfinished string encountered",{toml:$,ptr:S});Y=$.indexOf(".",R);let q=$.slice(R,Y<0||Y>G?G:Y),x=j$(q);if(x>-1)throw new T("newlines are not allowed in keys",{toml:$,ptr:S+Y+x});if(q.trimStart())throw new T("found extra tokens after the string part",{toml:$,ptr:R});if(G<R){if(G=$.indexOf(E,R),G<0)throw new T("incomplete key-value: cannot find end of key",{toml:$,ptr:S})}O.push(P$($,S,R))}else{Y=$.indexOf(".",S);let R=$.slice(S,Y<0||Y>G?G:Y);if(!K2.test(R))throw new T("only letter, numbers, dashes and underscores are allowed in keys",{toml:$,ptr:S});O.push(R.trimEnd())}}while(Y+1&&Y<G);return[O,m($,G+1,!0,!0)]}function f0($,S,E,Y){let O={},G=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=R$($,S);else if(H!==" "&&H!=="\t"&&H!==`
233
- `&&H!=="\r"){let R,q=O,x=!1,[I,M]=F$($,S-1);for(let j=0;j<I.length;j++){if(j)q=x?q[R]:q[R]={};if(R=I[j],(x=Object.hasOwn(q,R))&&(typeof q[R]!=="object"||G.has(q[R])))throw new T("trying to redefine an already defined value",{toml:$,ptr:S});if(!x&&R==="__proto__")Object.defineProperty(q,R,{enumerable:!0,configurable:!0,writable:!0})}if(x)throw new T("trying to redefine an already defined value",{toml:$,ptr:S});let[N,V]=w$($,M,"}",E-1,Y);G.add(N),q[R]=N,S=V}if(!H)throw new T("unfinished table encountered",{toml:$,ptr:S});return[O,S]}function j0($,S,E,Y){let O=[],G;S++;while((G=$[S++])!=="]"&&G)if(G===",")throw new T("expected value, found comma",{toml:$,ptr:S-1});else if(G==="#")S=R$($,S);else if(G!==" "&&G!=="\t"&&G!==`
234
- `&&G!=="\r"){let H=w$($,S-1,"]",E-1,Y);O.push(H[0]),S=H[1]}if(!G)throw new T("unfinished array encountered",{toml:$,ptr:S});return[O,S]}/*!
232
+ */var f2=/^[a-zA-Z0-9-_]+[ \t]*$/;function g$($,S,E="="){let Y=S-1,O=[],x=$.indexOf(E,S);if(x<0)throw new Q("incomplete key-value: cannot find end of key",{toml:$,ptr:S});do{let H=$[S=++Y];if(H!==" "&&H!=="\t")if(H==='"'||H==="'"){if(H===$[S+1]&&H===$[S+2])throw new Q("multiline strings are not allowed in keys",{toml:$,ptr:S});let R=F$($,S);if(R<0)throw new Q("unfinished string encountered",{toml:$,ptr:S});Y=$.indexOf(".",R);let q=$.slice(R,Y<0||Y>x?x:Y),G=P$(q);if(G>-1)throw new Q("newlines are not allowed in keys",{toml:$,ptr:S+Y+G});if(q.trimStart())throw new Q("found extra tokens after the string part",{toml:$,ptr:R});if(x<R){if(x=$.indexOf(E,R),x<0)throw new Q("incomplete key-value: cannot find end of key",{toml:$,ptr:S})}O.push(k$($,S,R))}else{Y=$.indexOf(".",S);let R=$.slice(S,Y<0||Y>x?x:Y);if(!f2.test(R))throw new Q("only letter, numbers, dashes and underscores are allowed in keys",{toml:$,ptr:S});O.push(R.trimEnd())}}while(Y+1&&Y<x);return[O,m($,x+1,!0,!0)]}function j0($,S,E,Y){let O={},x=new Set,H;S++;while((H=$[S++])!=="}"&&H)if(H===",")throw new Q("expected value, found comma",{toml:$,ptr:S-1});else if(H==="#")S=b$($,S);else if(H!==" "&&H!=="\t"&&H!==`
233
+ `&&H!=="\r"){let R,q=O,G=!1,[w,M]=g$($,S-1);for(let j=0;j<w.length;j++){if(j)q=G?q[R]:q[R]={};if(R=w[j],(G=Object.hasOwn(q,R))&&(typeof q[R]!=="object"||x.has(q[R])))throw new Q("trying to redefine an already defined value",{toml:$,ptr:S});if(!G&&R==="__proto__")Object.defineProperty(q,R,{enumerable:!0,configurable:!0,writable:!0})}if(G)throw new Q("trying to redefine an already defined value",{toml:$,ptr:S});let[J,V]=T$($,M,"}",E-1,Y);x.add(J),q[R]=J,S=V}if(!H)throw new Q("unfinished table encountered",{toml:$,ptr:S});return[O,S]}function _0($,S,E,Y){let O=[],x;S++;while((x=$[S++])!=="]"&&x)if(x===",")throw new Q("expected value, found comma",{toml:$,ptr:S-1});else if(x==="#")S=b$($,S);else if(x!==" "&&x!=="\t"&&x!==`
234
+ `&&x!=="\r"){let H=T$($,S-1,"]",E-1,Y);O.push(H[0]),S=H[1]}if(!x)throw new Q("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=E,this.column=Y,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 _0($,S,E,Y){let O=S,G=E,H,R=!1,q;for(let x=0;x<$.length;x++){if(x){if(O=R?O[H]:O[H]={},G=(q=G[H]).c,Y===0&&(q.t===1||q.t===2))return null;if(q.t===2){let I=O.length-1;O=O[I],G=G[I].c}}if(H=$[x],(R=Object.hasOwn(O,H))&&G[H]?.t===0&&G[H]?.d)return null;if(!R){if(H==="__proto__")Object.defineProperty(O,H,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(G,H,{enumerable:!0,configurable:!0,writable:!0});G[H]={t:x<$.length-1&&Y===2?3:Y,d:!1,i:0,c:{}}}}if(q=G[H],q.t!==Y&&!(Y===1&&q.t===3))return null;if(Y===2){if(!q.d)q.d=!0,O[H]=[];O[H].push(O={}),q.c[q.i++]=q={t:1,d:!1,i:0,c:{}}}if(q.d)return null;if(q.d=!0,Y===1)O=R?O[H]:O[H]={};else if(Y===0&&R)return null;return[H,O,q.c]}function N1($,{maxDepth:S=1000,integersAsBigInt:E}={}){let Y={},O={},G=Y,H=O;for(let R=m($,0);R<$.length;){if($[R]==="["){let q=$[++R]==="[",x=F$($,R+=+q,"]");if(q){if($[x[1]-1]!=="]")throw new T("expected end of table declaration",{toml:$,ptr:x[1]-1});x[1]++}let I=_0(x[0],Y,O,q?2:1);if(!I)throw new T("trying to redefine an already defined table or value",{toml:$,ptr:R});H=I[2],G=I[1],R=x[1]}else{let q=F$($,R),x=_0(q[0],G,H,0);if(!x)throw new T("trying to redefine an already defined table or value",{toml:$,ptr:R});let I=w$($,q[1],void 0,S,E);x[1][x[0]]=I[0],R=I[1]}if(R=m($,R,!0),$[R]&&$[R]!==`
261
- `&&$[R]!=="\r")throw new T("each key-value declaration must be followed by an end-of-line",{toml:$,ptr:R});R=m($,R)}return Y}/*!
260
+ */function P0($,S,E,Y){let O=S,x=E,H,R=!1,q;for(let G=0;G<$.length;G++){if(G){if(O=R?O[H]:O[H]={},x=(q=x[H]).c,Y===0&&(q.t===1||q.t===2))return null;if(q.t===2){let w=O.length-1;O=O[w],x=x[w].c}}if(H=$[G],(R=Object.hasOwn(O,H))&&x[H]?.t===0&&x[H]?.d)return null;if(!R){if(H==="__proto__")Object.defineProperty(O,H,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(x,H,{enumerable:!0,configurable:!0,writable:!0});x[H]={t:G<$.length-1&&Y===2?3:Y,d:!1,i:0,c:{}}}}if(q=x[H],q.t!==Y&&!(Y===1&&q.t===3))return null;if(Y===2){if(!q.d)q.d=!0,O[H]=[];O[H].push(O={}),q.c[q.i++]=q={t:1,d:!1,i:0,c:{}}}if(q.d)return null;if(q.d=!0,Y===1)O=R?O[H]:O[H]={};else if(Y===0&&R)return null;return[H,O,q.c]}function J1($,{maxDepth:S=1000,integersAsBigInt:E}={}){let Y={},O={},x=Y,H=O;for(let R=m($,0);R<$.length;){if($[R]==="["){let q=$[++R]==="[",G=g$($,R+=+q,"]");if(q){if($[G[1]-1]!=="]")throw new Q("expected end of table declaration",{toml:$,ptr:G[1]-1});G[1]++}let w=P0(G[0],Y,O,q?2:1);if(!w)throw new Q("trying to redefine an already defined table or value",{toml:$,ptr:R});H=w[2],x=w[1],R=G[1]}else{let q=g$($,R),G=P0(q[0],x,H,0);if(!G)throw new Q("trying to redefine an already defined table or value",{toml:$,ptr:R});let w=T$($,q[1],void 0,S,E);G[1][G[0]]=w[0],R=w[1]}if(R=m($,R,!0),$[R]&&$[R]!==`
261
+ `&&$[R]!=="\r")throw new Q("each key-value declaration must be followed by an end-of-line",{toml:$,ptr:R});R=m($,R)}return Y}/*!
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=E,this.column=Y,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 P0=/^[a-z0-9-_]+$/i;function N$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function C2($){for(let S=0;S<$.length;S++)if(N$($[S])!=="object")return!1;return $.length!=0}function Q1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function Z1($,S,E,Y){if(E===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(Y&&Number.isInteger($))return $.toFixed(1);return $.toString()}if(S==="bigint"||S==="boolean")return $.toString();if(S==="string")return Q1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return m2($,E,Y);if(S==="array")return y2($,E,Y)}function m2($,S,E){let Y=Object.keys($);if(Y.length===0)return"{}";let O="{ ";for(let G=0;G<Y.length;G++){let H=Y[G];if(G)O+=", ";O+=P0.test(H)?H:Q1(H),O+=" = ",O+=Z1($[H],N$($[H]),S-1,E)}return O+" }"}function y2($,S,E){if($.length===0)return"[]";let Y="[ ";for(let O=0;O<$.length;O++){if(O)Y+=", ";if($[O]===null||$[O]===void 0)throw TypeError("arrays cannot contain null or undefined values");Y+=Z1($[O],N$($[O]),S-1,E)}return Y+" ]"}function f2($,S,E,Y){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let O="";for(let G=0;G<$.length;G++)O+=`${O&&`
287
+ */var F0=/^[a-z0-9-_]+$/i;function z$($){let S=typeof $;if(S==="object"){if(Array.isArray($))return"array";if($ instanceof Date)return"date"}return S}function j2($){for(let S=0;S<$.length;S++)if(z$($[S])!=="object")return!1;return $.length!=0}function T1($){return JSON.stringify($).replace(/\x7f/g,"\\u007f")}function z1($,S,E,Y){if(E===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(Y&&Number.isInteger($))return $.toFixed(1);return $.toString()}if(S==="bigint"||S==="boolean")return $.toString();if(S==="string")return T1($);if(S==="date"){if(isNaN($.getTime()))throw TypeError("cannot serialize invalid date");return $.toISOString()}if(S==="object")return _2($,E,Y);if(S==="array")return P2($,E,Y)}function _2($,S,E){let Y=Object.keys($);if(Y.length===0)return"{}";let O="{ ";for(let x=0;x<Y.length;x++){let H=Y[x];if(x)O+=", ";O+=F0.test(H)?H:T1(H),O+=" = ",O+=z1($[H],z$($[H]),S-1,E)}return O+" }"}function P2($,S,E){if($.length===0)return"[]";let Y="[ ";for(let O=0;O<$.length;O++){if(O)Y+=", ";if($[O]===null||$[O]===void 0)throw TypeError("arrays cannot contain null or undefined values");Y+=z1($[O],z$($[O]),S-1,E)}return Y+" ]"}function F2($,S,E,Y){if(E===0)throw Error("Could not stringify the object: maximum object depth exceeded");let O="";for(let x=0;x<$.length;x++)O+=`${O&&`
288
288
  `}[[${S}]]
289
- `,O+=J1(0,$[G],S,E,Y);return O}function J1($,S,E,Y,O){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");let G="",H="",R=Object.keys(S);for(let q=0;q<R.length;q++){let x=R[q];if(S[x]!==null&&S[x]!==void 0){let I=N$(S[x]);if(I==="symbol"||I==="function")throw TypeError(`cannot serialize values of type '${I}'`);let M=P0.test(x)?x:Q1(x);if(I==="array"&&C2(S[x]))H+=(H&&`
290
- `)+f2(S[x],E?`${E}.${M}`:M,Y-1,O);else if(I==="object"){let N=E?`${E}.${M}`:M;H+=(H&&`
291
- `)+J1(N,S[x],N,Y-1,O)}else G+=M,G+=" = ",G+=Z1(S[x],I,Y,O),G+=`
292
- `}}if($&&(G||!H))G=G?`[${$}]
293
- ${G}`:`[${$}]`;return G&&H?`${G}
294
- ${H}`:G||H}function z1($,{maxDepth:S=1000,numbersAsFloat:E=!1}={}){if(N$($)!=="object")throw TypeError("stringify can only be called with an object");let Y=J1(0,$,"",S,E);if(Y[Y.length-1]!==`
289
+ `,O+=I1(0,$[x],S,E,Y);return O}function I1($,S,E,Y,O){if(Y===0)throw Error("Could not stringify the object: maximum object depth exceeded");let x="",H="",R=Object.keys(S);for(let q=0;q<R.length;q++){let G=R[q];if(S[G]!==null&&S[G]!==void 0){let w=z$(S[G]);if(w==="symbol"||w==="function")throw TypeError(`cannot serialize values of type '${w}'`);let M=F0.test(G)?G:T1(G);if(w==="array"&&j2(S[G]))H+=(H&&`
290
+ `)+F2(S[G],E?`${E}.${M}`:M,Y-1,O);else if(w==="object"){let J=E?`${E}.${M}`:M;H+=(H&&`
291
+ `)+I1(J,S[G],J,Y-1,O)}else x+=M,x+=" = ",x+=z1(S[G],w,Y,O),x+=`
292
+ `}}if($&&(x||!H))x=x?`[${$}]
293
+ ${x}`:`[${$}]`;return x&&H?`${x}
294
+ ${H}`:x||H}function N1($,{maxDepth:S=1000,numbersAsFloat:E=!1}={}){if(z$($)!=="object")throw TypeError("stringify can only be called with an object");let Y=I1(0,$,"",S,E);if(Y[Y.length-1]!==`
295
295
  `)return Y+`
296
296
  `;return Y}/*!
297
297
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -319,17 +319,18 @@ ${H}`:G||H}function z1($,{maxDepth:S=1000,numbersAsFloat:E=!1}={}){if(N$($)!=="o
319
319
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
320
320
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
321
321
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
322
- */var X1=L1(j2(),".codex"),F0=L1(X1,"config.toml"),_2=L1(X1,"auth.json"),P2={model_provider:"tako",model:"gpt-5.4",model_providers:{tako:{name:"tako",base_url:`${c}/v1`}}},F2={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function W1($,S){let E={...$};for(let[Y,O]of Object.entries(S))if(O&&typeof O==="object"&&!Array.isArray(O)&&E[Y]&&typeof E[Y]==="object"&&!Array.isArray(E[Y]))E[Y]=W1(E[Y],O);else E[Y]=O;return E}function k2($){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 g2($,S){let E=await import("fs/promises");try{await E.mkdir(X1,{recursive:!0})}catch{}let Y={};try{Y=N1(await E.readFile(F0,"utf-8"))}catch{}Y=k2(Y);let O=W1(Y,P2);if(S)for(let H of S){let R=F2[H];if(R)O=W1(O,R)}await Bun.write(F0,z1(O));let G=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
323
- `;await Bun.write(_2,G)}var u2={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars($){return{}},setupConfigFiles:g2,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"]}]};V$(u2);import{join as V1}from"path";h();var k$=null,g$={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}};async function x$(){if(k$)return k$;let $=[d2,c2,l2];for(let S of $)try{let E=await Promise.race([S(),new Promise((Y,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(E)return k$=E,E}catch{}return k$="cn","cn"}async function d2(){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 c2(){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 l2(){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 D2(){let $=await x$();return g$[$]}async function e(){return(await D2()).npm}function k0(){return"curl -fsSL https://bun.sh/install | bash"}async function p2(){let $=g$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let Y=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,G)=>{let H=O.replace("bun-v","").split(".").map(Number),R=G.replace("bun-v","").split(".").map(Number);for(let q=0;q<3;q++)if(H[q]!==R[q])return R[q]-H[q];return 0});if(Y.length===0)throw Error("No bun versions found on mirror");return Y[0]}async function g0(){let $=g$.cn.bunBinary,S=await p2(),Y={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",G=`bun-${Y}-${O}`;return`${$}/${S}/${G}.zip`}async function u0(){let $=await x$(),S=g$[$];if($==="cn")w.info(v("region.usingChinaMirror")),w.message(` npm: ${S.npm}`);else w.info(v("region.usingGlobalMirror"))}var o2=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,E]of Object.entries(this.headers)){let Y=await E;Y!==null&&($[S]=Y)}return $}addHeader($,S){this.headers[$]=S}async post($,S,E,Y){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...E});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let G=await O.text();return G?JSON.parse(G):null}catch(O){if(Y<this.maxRetries){let G=this.initialRetryDelay*2**Y;return await new Promise((H)=>setTimeout(H,G)),this.post($,S,E,Y+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,E={}){let Y=`${this.baseUrl}${$}`;return this.post(Y,S,E,0)}},d0=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 o2({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 E=S?.deviceId;return delete S?.deviceId,this.track("revenue",{...S??{},...E?{__deviceId:E}:{},__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 i2="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",a2="sec_3038f0cb74f91312f374",r2="https://op.shiroha.tech/api",Q$=null;function U1(){if(!Q$)Q$=new d0({clientId:i2,clientSecret:a2,apiUrl:r2});return Q$}async function c0(){if(Q$)try{Q$=null}catch{}}h();h();var n2="0.2.17";function l0(){return{cli_version:n2,platform:process.platform,arch:process.arch,locale:s(),node_version:process.version}}function D0($){return Bun.hash($).toString(16).slice(0,8)}var s2="0.2.17",p0=!1,Z$=null;async function o0(){if(Z$!==null)return Z$;try{return Z$=(await U()).telemetryEnabled!==!1,Z$}catch{return Z$=!1,!1}}async function e2(){try{return(await U()).apiId||"anonymous"}catch{return"anonymous"}}async function u$(){if(p0)return;try{if(!await o0())return;let $=await U();if(!$.apiId)return;let S=U1(),E=await x$();await S.identify({profileId:$.apiId,properties:{region:E,locale:s(),first_seen_version:s2,platform:process.platform,arch:process.arch}}),p0=!0}catch{}}function L($,S){t2($,S).catch(()=>{})}async function t2($,S){try{if(!await o0())return;let E=U1(),Y=await e2();await E.track($,{profileId:Y,properties:{...l0(),...S}})}catch{}}async function J$(){await c0()}var t=null;function $H($){return $.startsWith(p)}async function SH(){try{if(!await Bun.file(K).exists())return null;let S=Bun.spawn([K,"--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 a0(){return await SH()!==null}async function HH(){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{}w.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let $=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let S of $)try{let E=Bun.spawn(["bash","-c",`sudo ${S} 2>/dev/null || ${S}`],{stdout:"pipe",stderr:"pipe"});if(await E.exited,E.exitCode===0)return!0}catch{}return!1}async function EH($){let S=await import("fs/promises"),{join:E}=await import("path"),Y=process.platform==="win32",O=Y?"bun.exe":"bun",G=await g0();w.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${G}`);let H=await fetch(G);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let R=E($,"bun-download.zip");await Bun.write(R,H);let q=E($,"bin");if(await S.mkdir(q,{recursive:!0}),Y){let I=`Expand-Archive -Path "${R}" -DestinationPath "${$}" -Force`,M=Bun.spawn(["powershell","-Command",I],{stdout:"pipe",stderr:"pipe"});if(await M.exited,M.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let I=Bun.spawn(["unzip","-oq",R,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await I.exited,I.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let x=await S.readdir($);for(let I of x){let M=E($,I);if((await S.stat(M)).isDirectory()&&I.startsWith("bun-")){let V=E(M,O);try{if(await S.access(V),await S.rename(V,E(q,O)),!Y)await S.chmod(E(q,O),493);await S.rm(M,{recursive:!0,force:!0});break}catch{}}}return await S.rm(R,{force:!0}),!0}async function YH(){let $=g();if(!await HH())return w.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await u0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(p,{recursive:!0}),await x$()==="cn")await EH(p);else if(process.platform==="win32"){let Y=`$env:BUN_INSTALL="${p}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",Y],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let Y=`BUN_INSTALL="${p}" ${k0()}`;if(await Bun.spawn(["bash","-c",Y],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return t=K,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),w.info(`\u5B89\u88C5\u4F4D\u7F6E: ${p}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function OH(){if(await a0())return t=K,!0;return w.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),w.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await YH()}async function A1(){if(t){if(!$H(t))t=K;return t}if(await a0())return t=K,K;return K}async function r0($){try{let S=await e(),E=await fetch(`${S}/${$}/latest`);if(!E.ok)return null;return(await E.json()).version}catch{return null}}async function GH($){return(await U()).installedClients[$.id]?.version||null}async function n0($){let S=I$($.id),E=V1(S,"package.json");try{return await Bun.file(E).exists()}catch{return!1}}async function s0($){let S=await GH($);if(!S)return!0;let E=await r0($.package);if(!E)return!1;return S!==E}async function i0($,S=!1){let E=g(),Y=I$($.id);try{if(!await OH())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 n0($),G=S||await s0($);if(O&&!G)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";E.start(`\u6B63\u5728${H} ${$.name}...`);let R=await import("fs/promises");await R.mkdir(Y,{recursive:!0});let q=V1(Y,"package.json");if(!await Bun.file(q).exists())await Bun.write(q,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let I=await A1(),M=await e();if(O){let H$=V1(Y,"bun.lock");try{await R.unlink(H$)}catch{}}let N=Bun.spawn([I,"add",`${$.package}@latest`],{cwd:Y,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:M}});if(await N.exited!==0){let H$=await new Response(N.stderr).text();return E.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:H$}}let j=await r0($.package),g1=(await U()).installedClients[$.id]?.version;if(j){let H$=await U();if(H$.installedClients[$.id]={version:j,installedAt:new Date().toISOString()},await a(H$),O&&g1)L("client_updated",{client_id:$.id,from_version:g1,to_version:j});else L("client_installed",{client_id:$.id,client_version:j})}return E.stop(`${$.name} ${H}\u5B8C\u6210`),{success:!0}}catch(O){return E.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}}}async function d$($){if(!await n0($))return await i0($);if(await s0($))return await i0($,!0);return{success:!0}}import{homedir as RH}from"os";var xH=50,B1=3;async function z$($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function c$($,S){let E=await U(),Y=E.recentProjects||[],O=new Date().toISOString(),G=Y.findIndex((R)=>R.path===$);if(G>=0){let R=Y[G],q=R.clientUsage||{},x=q[S]||{count:0,lastAt:O};Y[G]={...R,launchCount:R.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...q,[S]:{count:x.count+1,lastAt:O}}}}else Y.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=Y.sort((R,q)=>new Date(q.lastLaunchedAt).getTime()-new Date(R.lastLaunchedAt).getTime()).slice(0,xH);E.recentProjects=H,await n$(E)}function qH($,S){let E=$.clientUsage?.[S];if(E)return new Date(E.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function e0($,S=B1,E=!0){let O=(await U()).recentProjects||[],G=process.cwd(),R=O.filter((x)=>{if(E&&x.path===G)return!1;return x.clientUsage?.[$]||x.lastClientId===$}).map((x)=>({...x,lastUsedTime:qH(x,$)})).sort((x,I)=>I.lastUsedTime-x.lastUsedTime),q=[];for(let{lastUsedTime:x,...I}of R){if(q.length>=S)break;if(await z$(I.path))q.push(I)}return q}async function t0(){let S=(await U()).recentProjects||[],E=process.cwd();return S.find((O)=>O.path===E)?.lastClientId||null}function $S($,S=25){let E=RH(),Y=$.startsWith(E)?"~"+$.slice(E.length):$;if(Y.length>S){let G=Y.split("/").pop()||"";if(G.length>S-4)Y="..."+G.slice(-S+3);else Y=`.../${G}`}return Y}function SS($){let{t:S}=(h(),ZS(h0)),E=Date.now(),Y=new Date($).getTime(),O=E-Y,G=Math.floor(O/60000),H=Math.floor(O/3600000),R=Math.floor(O/86400000),q=Math.floor(R/7),x=Math.floor(R/30);if(G<1)return S("time.justNow");if(G<60)return S("time.minutesAgo",{n:G});if(H<24)return S("time.hoursAgo",{n:H});if(R===1)return S("time.yesterday");if(R<7)return S("time.daysAgo",{n:R});if(R<30)return S("time.weeksAgo",{n:q});return S("time.monthsAgo",{n:x})}h();async function HS($,S){try{let E=S?.projectPath||process.cwd();if(S?.projectPath){if(!await z$(S.projectPath))return{success:!1,error:`\u76EE\u5F55\u4E0D\u5B58\u5728: ${S.projectPath}`}}let Y=await d$($);if(!Y.success)return Y;let O=await X$();if(!O)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);let G=await n1($);if(!G)G=s1($);if(!await Bun.file(G).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${G}`};await c$(E,$.id);let R=$.getEnvVars(O),q={...process.env,...R};w.info(`\u542F\u52A8 ${$.name}...`);let x;if($.runtime==="native")x=[G];else x=[await A1(),G];if(S?.args&&S.args.length>0)x=[...x,...S.args];return await Bun.spawn(x,{env:q,stdio:["inherit","inherit","inherit"],cwd:E}).exited,{success:!0}}catch(E){return{success:!1,error:E instanceof Error?E.message:"\u542F\u52A8\u5931\u8D25"}}}async function q$($,S){try{let E=S?.projectPath||process.cwd();if(S?.projectPath){if(!await z$(S.projectPath))return{success:!1,error:v("launcher.directoryNotFound",{path:S.projectPath})}}let Y=await d$($);if(!Y.success)return Y;let O=await X$();if(!O)return{success:!1,error:v("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await c$(E,$.id);let H=(await U()).installedClients[$.id]?.version;return L("client_launched",{client_id:$.id,client_version:H,project_hash:D0(E),is_recent_project:!!S?.projectPath}),w.info(v("launcher.starting",{client:$.name})),await HS($,S)}catch(E){return{success:!1,error:E instanceof Error?E.message:"Launch failed"}}}h();import{join as u}from"path";var h1="tako-cli",$$="0.2.17";function bH($,S){let E=$.split(".").map(Number),Y=S.split(".").map(Number);for(let O=0;O<3;O++){let G=E[O]||0,H=Y[O]||0;if(G>H)return 1;if(G<H)return-1}return 0}async function vH(){try{let $=await e(),S=await fetch(`${$}/${h1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function IH(){let $=await vH();if(!$)return{hasUpdate:!1,currentVersion:$$};return{hasUpdate:bH($,$$)>0,latestVersion:$,currentVersion:$$}}async function ES(){let $=await import("fs/promises"),S=u(F,"bin"),E=u(S,"tako"),Y=u(k,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let G=`@echo off\r
324
- "${K}" "${Y}" %*\r
325
- `;await $.writeFile(u(S,"tako.cmd"),G)}else{let G=`#!/bin/bash
326
- exec "${K}" "${Y}" "$@"
327
- `;await $.writeFile(E,G,{mode:493})}}async function MH($){let S=g();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let E=await e(),Y=await import("fs/promises");await Y.mkdir(k,{recursive:!0});let O=u(k,"package.json");try{await Y.access(O)}catch{await Y.writeFile(O,JSON.stringify({name:"tako-local",private:!0},null,2))}let G=Bun.spawn([K,"update",h1,"--latest"],{cwd:k,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}});if(await G.exited,G.exitCode===0)return await ES(),L("cli_updated",{from_version:$$,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(G.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(E){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${E instanceof Error?E.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function TH(){let $=await import("fs/promises"),S=u(k,"bun.lock");try{await $.unlink(S)}catch{}}async function wH(){let $=await import("fs/promises");try{let S=await e();await $.mkdir(k,{recursive:!0});let E=u(k,"package.json");try{await $.access(E)}catch{await $.writeFile(E,JSON.stringify({name:"tako-local",private:!0},null,2))}await TH();let Y=Bun.spawn([K,"add",`${h1}@latest`],{cwd:k,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await Y.exited,Y.exitCode===0}catch{return!1}}async function NH(){let $=await import("fs/promises"),S=u(F,"bin"),E=u(S,"tako"),Y=u(k,"node_modules/tako-cli/dist/index.js");try{let O=await $.readFile(E,"utf-8");if(O.includes("bun run tako-cli")||O.includes("run tako-cli")){w.info(v("updater.migrating"));let G=!1;try{await $.access(Y),G=!0}catch{G=!1}if(!G){let H=g();if(H.start(v("updater.installingLocally")),!await wH())return H.stop(v("updater.migrationFailed")),!1;H.stop(v("updater.installComplete"))}return await ES(),!0}}catch{}return!1}async function l$(){try{if(await NH())w.info(v("updater.migrationComplete")),process.exit(0);let S=await IH();if(S.hasUpdate&&S.latestVersion){if(w.warn(v("updater.newVersionAvailable",{version:S.latestVersion,current:$$})),await MH(S.latestVersion))w.info(v("updater.pleaseRestart")),process.exit(0)}}catch{}}h();function QH($){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 ZH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function K1($){let S=ZH($),E=0;for(let Y of S)E+=QH(Y)?2:1;return E}h();var C1="__skip_prompt__";async function b$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let E=await U(),Y=E.clientOptions?.[$.id];if(Y&&E.clientOptionsLocked?.[$.id])return YS(S,Y);let O=await JH($,S,Y);if(O===null)return null;if(await a({clientOptions:{...E.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...E.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let G=G$();w.info(G==="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 YS(S,O.selectedIds)}async function OS(){await a({clientOptions:{},clientOptionsLocked:{}})}function YS($,S){let E=[];for(let Y of S){let O=$.find((G)=>G.id===Y);if(O)E.push(...O.args)}return{args:E,selectedOptionIds:S}}async function JH($,S,E){let Y=G$(),O=(x)=>Y==="zh"?x.label.zh:x.label.en,G=[],H=new Map,R=[];for(let x of S)if(x.group){if(!H.has(x.group))H.set(x.group,[]);H.get(x.group).push(x)}else R.push(x);for(let[,x]of H){let M=x.find((V)=>E?.includes(V.id))?.id??"__none__",N=await n({message:v("menu.selectOptions")||`${$.name} options`,initialValue:M,options:[{value:"__none__",label:Y==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...x.map((V)=>({value:V.id,label:O(V),hint:V.flag}))]});if(B(N))return null;if(N!=="__none__")G.push(N)}if(R.length>0){let x=await B0({message:v("menu.selectOptions")||`${$.name} options`,options:[...R.map((N)=>({value:N.id,label:O(N),hint:N.flag,initialValue:E?.includes(N.id)??!1})),{value:C1,label:Y==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(B(x))return null;let I=x,M=I.includes(C1);return G.push(...I.filter((N)=>N!==C1)),{selectedIds:G,lock:M}}let q=await y$({message:Y==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(B(q))return null;return{selectedIds:G,lock:!!q}}h();async function GS(){let $=e1(),S=await t0(),E=process.cwd(),Y=[],O=[...$].sort((G,H)=>{if(G.id===S)return-1;if(H.id===S)return 1;return 0});for(let G of O){let H=await e0(G.id,B1,!0);Y.push({value:{type:"launch",client:G},label:G.name,hint:v("recentProjects.launchInCurrent")});for(let R of H)Y.push({value:{type:"launch-in-project",client:G,projectPath:R.path},label:` \u2514\u2500 ${$S(R.path,35)}`,hint:SS(R.lastLaunchedAt)})}return Y.push({value:{type:"advanced"},label:v("menu.advanced"),hint:v("menu.advancedHint")},{value:{type:"exit"},label:v("menu.exit")}),Y}async function m1(){let $=await GS(),S=await n({message:v("menu.selectAction"),options:$});if(B(S))return null;return S}async function y1(){let $=await n({message:v("menu.advancedOptions"),options:[{value:{type:"stats"},label:v("menu.viewStats")},{value:{type:"config"},label:v("menu.configApiKey")},{value:{type:"resetOptions"},label:v("menu.resetOptions")},{value:{type:"language"},label:v("menu.changeLanguage")},{value:null,label:v("menu.back")}]});if(B($)||$===null)return null;return $}h();function zH($){return $.startsWith("cr_")&&$.length>10}async function WH($){try{let E=await(await fetch(`${c}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(E.success&&E.data?.id)return{valid:!0,apiId:E.data.id};return{valid:!1,error:E.error||v("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:v("auth.networkError")}}}async function RS($){if(!zH($))return L("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:v("auth.invalidFormat")};let S=await WH($);if(!S.valid)return L("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await a({apiKey:$,apiId:S.apiId}),L("api_key_validated",{success:!0}),u$(),{success:!0}}h();async function D$($=!1){if(!$)w.warn("API Key not detected"),console.log();let S=await A0({message:v("prompts.enterApiKey"),placeholder:v("prompts.apiKeyPlaceholder"),validate(O){if(!O)return v("prompts.enterApiKey");if(!O.startsWith("cr_"))return v("prompts.keyInvalidFormat");if(O.length<10)return v("prompts.keyInvalidFormat")}});if(B(S))return!1;let E=g();E.start(v("prompts.validating"));let Y=await RS(S);if(Y.success)return E.stop(v("prompts.keyConfigured")),!0;else return E.stop(v("prompts.keyValidationFailed",{error:Y.error||""})),!1}async function W$(){try{let $=await r1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let E=await(await fetch(`${c}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${c}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!E.success)return{success:!1,error:E.error||E.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let G=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:E.data?.usage?.total?.requests||0,totalCost:E.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(E.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:G}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function f1($){return $.toLocaleString("en-US")}h();function LH($,S){let E=[];if(E.push(""),E.push(` ${v("stats.title")}`),E.push(""),E.push(` ${v("stats.totalRequests",{count:f1($.totalRequests)})}`),E.push(` ${v("stats.totalCost",{cost:$.totalCost})}`),E.push(` ${v("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)E.push(""),E.push(` ${v("stats.modelDistribution")}`),$.modelStats.forEach((Y,O)=>{let G=O===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",H=Y.model.length>25?Y.model.slice(0,22)+"...":Y.model;E.push(` ${G} ${H.padEnd(25)} ${f1(Y.requests).padStart(6)} ${v("stats.times")} ${Y.cost.padStart(8)}`)});return E.push(""),E.push(` \x1B[90m${v("stats.refreshHint",{countdown:S})}\x1B[0m`),E.join(`
328
- `)}async function j1(){let S=g();S.start(v("stats.fetching"));let E=await W$();if(!E.success){S.stop(v("stats.fetchFailed",{error:E.error||""}));return}S.stop("");let Y=10,O="",G=()=>{if(O){let R=O.split(`
329
- `).length;process.stdout.write(`\x1B[${R}A\x1B[0J`)}O=LH(E.data,Y),console.log(O)};G();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((R)=>{let q=!0,x=()=>{if(!q)return;q=!1,M(),R()},I=setInterval(async()=>{if(!q)return;if(Y--,Y<=0){Y=10;let N=await W$();if(N.success)E=N}G()},1000),M=()=>{if(clearInterval(I),process.stdin.removeListener("data",x),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",x)})}function XH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let E=`\uD83D\uDC19 ${v("cli.version",{version:$$})}`,Y=K1(E),O=Math.floor((50-Y)/2),G=50-O-Y;console.log(` \u2502${" ".repeat(O)}${E}${" ".repeat(G)}\u2502`);let H=v("banner.welcome"),R=`\x1B[90m${H}\x1B[0m`,q=K1(H),x=Math.floor((50-q)/2),I=50-x-q;console.log(` \u2502${" ".repeat(x)}${R}${" ".repeat(I)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function xS($){switch($.type){case"launch":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await b$($.client);if(S===null)return!0;let E=await q$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!E.success)w.error(E.error||v("cli.launchFailed"));return!0}case"launch-in-project":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await b$($.client);if(S===null)return!0;let E=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],Y=await q$($.client,{projectPath:$.projectPath,args:E,selectedOptionIds:S.selectedOptionIds});if(!Y.success)w.error(Y.error||v("cli.launchFailed"));return!0}case"advanced":{L("menu_action",{action:"advanced"});let S=await y1();if(S)return await xS(S);return!0}case"stats":return L("menu_action",{action:"stats"}),await j1(),!0;case"config":return L("menu_action",{action:"config"}),await D$(!0),!0;case"resetOptions":return L("menu_action",{action:"resetOptions"}),await OS(),w.success(v("menu.optionsReset")),!0;case"language":return L("menu_action",{action:"language"}),await UH(),!0;case"exit":return L("menu_action",{action:"exit"}),!1}}async function UH(){let $=G$(),S=v(`language.${$}`),E=await n({message:v("menu.changeLanguage")+` (${v("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:v("language.en")},{value:"zh",label:v("language.zh")}]});if(B(E))return;w1(E);let Y=v(`language.${E}`);w.success(v("menu.languageChanged",{lang:Y}))}async function qS(){if(XH(),!await a1()){if(!await D$()){T1("\u518D\u89C1\uFF01");return}}while(!0){let S=await m1();if(S===null)break;if(!await xS(S))break}T1("\u518D\u89C1\uFF01")}h();import{homedir as AH}from"os";var W={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"};var J={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var Z={directory:{icon:W.brightYellow,text:W.brightGreen},git:{icon:W.brightBlue,text:W.brightBlue,clean:W.brightGreen,dirty:W.brightYellow,conflict:W.brightRed},model:{icon:W.brightCyan,text:W.brightCyan},version:{icon:W.brightWhite,text:W.brightBlack},outputStyle:{icon:W.brightMagenta,text:W.brightMagenta},context:{icon:W.brightMagenta,low:W.brightGreen,medium:W.brightYellow,high:W.brightRed},todayUsage:{icon:W.brightGreen,text:W.brightGreen},separator:W.brightBlack},l={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 VH(){return!1}function y($){let S=l[$];if(typeof S==="string")return S;return VH()?S.nerd:S.plain}class p${id="directory";render($){let S=this.formatPath($.workspace.current_dir),E=y("directory");return`${Z.directory.icon}${E}${J.reset} ${Z.directory.text}${S}${J.reset}`}formatPath($){let S=AH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class o${id="git";async render($){let S=$.workspace.current_dir;if(!await this.isGitRepository(S))return null;let Y=await this.getBranch(S);if(!Y)return null;let{status:O,statusColor:G}=await this.getStatus(S),{ahead:H,behind:R}=await this.getAheadBehind(S),q=y("git"),x=`${Z.git.icon}${q}${J.reset} ${Z.git.text}${Y}${J.reset}`;if(x+=` ${G}${O}${J.reset}`,H>0)x+=` ${Z.git.clean}${l.gitAhead}${H}${J.reset}`;if(R>0)x+=` ${Z.git.dirty}${l.gitBehind}${R}${J.reset}`;return x}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"}),E=await new Response(S.stdout).text();if(await S.exited===0&&E.trim())return E.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),G=await new Response(O.stdout).text();if(await O.exited===0&&G.trim())return`detached:${G.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),E=await new Response(S.stdout).text();if(await S.exited!==0)return{status:l.gitClean,statusColor:Z.git.clean};let O=E.trim();if(!O)return{status:l.gitClean,statusColor:Z.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:l.gitConflict,statusColor:Z.git.conflict};return{status:l.gitDirty,statusColor:Z.git.dirty}}catch{return{status:l.gitClean,statusColor:Z.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),E=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(E.trim(),10)||0:0,G=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(G.stdout).text(),q=await G.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:q}}catch{return{ahead:0,behind:0}}}}var BH={"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,E=BH[S]||this.simplifyModelName($.model.display_name),Y=y("model");return`${Z.model.icon}${Y}${J.reset} ${Z.model.text}${E}${J.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as hH}from"os";import{join as P}from"path";var{Glob:KH}=globalThis.Bun;var bS=process.platform==="win32";class a${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let E=y("version");return`${Z.version.icon}${E}${J.reset} ${Z.version.text}v${S}${J.reset}`}async getClaudeCodeVersion(){let $=hH(),S=[];if(bS)S.push(P($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),P($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),P($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(P($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),P($,".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 Y of S){let O=await this.readVersionFromPackage(Y);if(O)return O}let E=[];if(bS)E.push({base:P($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else E.push({base:P($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:P($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:Y,pattern:O}of E)try{let G=new KH(O);for await(let H of G.scan({cwd:Y,absolute:!0})){let R=await this.readVersionFromPackage(H);if(R)return R}}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 CH={"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},mH=200000;class d{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),E=this.getContextLimit($.model.id),O=Math.round((S??0)/E*100),G=Math.max(0,100-O),H=y("context"),R=this.getRemainingColor(G),q=this.renderProgressBar(G);return`${Z.context.icon}${H}${J.reset} ${R}Context Remaining: ${G}%${J.reset} ${q}`}renderProgressBar($){let E=Math.round($/100*10),Y=10-E,O="=".repeat(E),G="-".repeat(Y),H=this.getRemainingColor($);return`${W.brightBlack}[${J.reset}${H}${O}${J.reset}${W.brightBlack}${G}]${J.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 E=await this.parseTranscriptTokens($);return d.cache={path:$,tokens:E,timestamp:S},E}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let E=await S.text();if(!E.trim())return null;let Y=E.split(`
330
- `).filter((O)=>O.trim());for(let O=Y.length-1;O>=0;O--)try{let G=JSON.parse(Y[O]);if(G.type==="assistant"&&G.message?.usage){let H=G.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 CH[$]||mH}}class D{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(D.cache&&Date.now()-D.cache.timestamp<D.CACHE_TTL)return D.cache.data;try{let S=await W$();if(!S.success||!S.data)return null;let E=S.data.todayCost,Y=y("todayUsage"),O=`${Z.todayUsage.icon}${Y}${J.reset} ${Z.todayUsage.text}Today: ${E}${J.reset}`;return D.cache={data:O,timestamp:Date.now()},O}catch{return null}}}class _1{separator=`${Z.separator} \u2502 ${J.reset}`;render($){let S=["directory","git","model","version","today-usage"],E=["context"],Y=this.renderLine($,S),O=this.renderLine($,E);return[Y,O].filter((G)=>G.length>0).join(`
331
- `)}renderLine($,S){let E=[];for(let Y of S){let O=$.get(Y);if(O)E.push(O)}return E.join(this.separator)}}import{join as S$,dirname as yH}from"path";import{homedir as P1}from"os";import{mkdir as fH}from"fs/promises";var vS=S$(P1(),".tako"),jH=S$(vS,"cli"),_H=S$(vS,"bin",process.platform==="win32"?"tako.cmd":"tako");function PH(){if(process.platform==="win32")return S$(process.env.APPDATA||S$(P1(),"AppData","Roaming"),"claude","settings.json");return S$(P1(),".claude","settings.json")}var FH=process.platform==="win32",kH="0.1.48";function gH($,S){let E=$.split(".").map(Number),Y=S.split(".").map(Number),O=Math.max(E.length,Y.length);for(let G=0;G<O;G++){let H=E[G]||0,R=Y[G]||0;if(H!==R)return H-R}return 0}async function uH(){let $=S$(jH,"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 dH(){let $=await uH();if(!$)return!1;return gH($,kH)>=0}function cH(){return _H}function lH($){if(FH)return $.replace(/\\/g,"/");return $}async function F1(){if(!await dH())return;let S=PH(),E={};try{let H=Bun.file(S);if(await H.exists())E=await H.json()}catch{}let O={type:"command",command:`"${lH(cH())}" statusline`,padding:0},G=typeof E.statusLine==="object"&&E.statusLine!==null?E.statusLine.command:null;if(typeof G==="string"&&G.includes("tako statusline"))return;E.statusLine=O,await fH(yH(S),{recursive:!0}),await Bun.write(S,JSON.stringify(E,null,2))}var DH=[new p$,new o$,new i$,new a$,new d,new D];async function pH($){let S=await Promise.all(DH.map(async(O)=>{try{let G=await O.render($);return{id:O.id,content:G}}catch{return{id:O.id,content:null}}})),E=new Map;for(let{id:O,content:G}of S)E.set(O,G);return new _1().render(E)}async function IS(){try{let $=await Bun.stdin.json(),S=await pH($);console.log(S)}catch($){process.exit(0)}}var k1="0.2.17";function oH(){console.log(`
332
- ${v("cli.version",{version:k1})}
322
+ */var X1=L1(k2(),".codex"),k0=L1(X1,"config.toml"),g2=L1(X1,"auth.json"),u2={model_provider:"tako",model:"gpt-5.4",model_providers:{tako:{name:"tako",base_url:`${c}/v1`}}},d2={"full-auto":{approval_policy:"on-request",sandbox:"workspace-write"}};function W1($,S){let E={...$};for(let[Y,O]of Object.entries(S))if(O&&typeof O==="object"&&!Array.isArray(O)&&E[Y]&&typeof E[Y]==="object"&&!Array.isArray(E[Y]))E[Y]=W1(E[Y],O);else E[Y]=O;return E}function c2($){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 D2($,S){let E=await import("fs/promises");try{await E.mkdir(X1,{recursive:!0})}catch{}let Y={};try{Y=J1(await E.readFile(k0,"utf-8"))}catch{}Y=c2(Y);let O=W1(Y,u2);if(S)for(let H of S){let R=d2[H];if(R)O=W1(O,R)}await Bun.write(k0,N1(O));let x=JSON.stringify({OPENAI_API_KEY:$},null,2)+`
323
+ `;await Bun.write(g2,x)}var l2={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars($){return{}},setupConfigFiles:D2,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"]}]};x$(l2);import{homedir as p2}from"os";import{join as u0}from"path";var d0=u0(p2(),".gemini"),g0=u0(d0,"settings.json");async function o2(){let $=await import("fs/promises");try{await $.mkdir(d0,{recursive:!0})}catch{}let S={};try{S=JSON.parse(await $.readFile(g0,"utf-8"))}catch{}let E=S.security?.auth||{};if(E.selectedType==="gemini-api-key")return;S.selectedAuthType="gemini-api-key",S.security={...S.security,auth:{...E,selectedType:"gemini-api-key"}},await Bun.write(g0,JSON.stringify(S,null,2)+`
324
+ `)}var i2={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"native",brandColor:"cyan",getEnvVars($){return{GEMINI_API_KEY:$,GOOGLE_GEMINI_BASE_URL:"https://tako.shiroha.tech"}},setupConfigFiles:o2};x$(i2);import{join as B1}from"path";h();var u$=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(u$)return u$;let $=[a2,r2,n2];for(let S of $)try{let E=await Promise.race([S(),new Promise((Y,O)=>setTimeout(()=>O(Error("timeout")),3000))]);if(E)return u$=E,E}catch{}return u$="cn","cn"}async function a2(){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 r2(){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 n2(){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 s2(){let $=await v$();return d$[$]}async function e(){return(await s2()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function e2(){let $=d$.cn.bunBinary,S=await fetch(`${$}/`,{signal:AbortSignal.timeout(1e4)});if(!S.ok)throw Error(`Failed to fetch bun versions: ${S.status}`);let Y=(await S.json()).map((O)=>O.name.replace(/\/$/,"")).filter((O)=>/^bun-v\d+\.\d+\.\d+$/.test(O)).sort((O,x)=>{let H=O.replace("bun-v","").split(".").map(Number),R=x.replace("bun-v","").split(".").map(Number);for(let q=0;q<3;q++)if(H[q]!==R[q])return R[q]-H[q];return 0});if(Y.length===0)throw Error("No bun versions found on mirror");return Y[0]}async function D0(){let $=d$.cn.bunBinary,S=await e2(),Y={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",O=process.arch==="arm64"?"aarch64":"x64",x=`bun-${Y}-${O}`;return`${$}/${S}/${x}.zip`}async function l0(){let $=await v$(),S=d$[$];if($==="cn")Z.info(v("region.usingChinaMirror")),Z.message(` npm: ${S.npm}`);else Z.info(v("region.usingGlobalMirror"))}var t2=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,E]of Object.entries(this.headers)){let Y=await E;Y!==null&&($[S]=Y)}return $}addHeader($,S){this.headers[$]=S}async post($,S,E,Y){try{let O=await fetch($,{method:"POST",headers:await this.resolveHeaders(),body:S?JSON.stringify(S??{}):void 0,keepalive:!0,...E});if(O.status===401)return null;if(O.status!==200&&O.status!==202)throw Error(`HTTP error! status: ${O.status}`);let x=await O.text();return x?JSON.parse(x):null}catch(O){if(Y<this.maxRetries){let x=this.initialRetryDelay*2**Y;return await new Promise((H)=>setTimeout(H,x)),this.post($,S,E,Y+1)}return console.error("Max retries reached:",O),null}}async fetch($,S,E={}){let Y=`${this.baseUrl}${$}`;return this.post(Y,S,E,0)}},p0=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 t2({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 E=S?.deviceId;return delete S?.deviceId,this.track("revenue",{...S??{},...E?{__deviceId:E}:{},__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 $H="f8ec91ab-20e5-4c17-bece-f5f2fe647a71",SH="sec_3038f0cb74f91312f374",HH="https://op.shiroha.tech/api",w$=null;function U1(){if(!w$)w$=new p0({clientId:$H,clientSecret:SH,apiUrl:HH});return w$}async function o0(){if(w$){try{w$.flush()}catch{}w$=null}}h();h();var EH="0.2.18";function i0(){return{cli_version:EH,platform:process.platform,arch:process.arch,locale:s(),node_version:process.version}}function a0($){return Bun.hash($).toString(16).slice(0,8)}var YH="0.2.18",r0=!1,I$=null,V1=[];async function n0(){if(I$!==null)return I$;try{return I$=(await U()).telemetryEnabled!==!1,I$}catch{return I$=!1,!1}}async function OH(){try{return(await U()).apiId||"anonymous"}catch{return"anonymous"}}async function c$(){if(r0)return;try{if(!await n0())return;let $=await U();if(!$.apiId)return;let S=U1(),E=await v$();await S.identify({profileId:$.apiId,properties:{region:E,locale:s(),first_seen_version:YH,platform:process.platform,arch:process.arch}}),r0=!0}catch{}}function L($,S){let E=xH($,S).catch(()=>{});V1.push(E)}async function xH($,S){try{if(!await n0())return;let E=U1(),Y=await OH();await E.track($,{profileId:Y,...i0(),...S})}catch{}}async function N$(){await Promise.allSettled(V1),V1.length=0,await o0()}var t=null;function RH($){return $.startsWith(p)}async function GH(){try{if(!await Bun.file(C).exists())return null;let S=Bun.spawn([C,"--version"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode!==0)return null;return(await new Response(S.stdout).text()).trim()}catch{return null}}async function e0(){return await GH()!==null}async function qH(){if(process.platform==="win32")return!0;try{let S=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await S.exited,S.exitCode===0)return!0}catch{}Z.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let $=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let S of $)try{let E=Bun.spawn(["bash","-c",`sudo ${S} 2>/dev/null || ${S}`],{stdout:"pipe",stderr:"pipe"});if(await E.exited,E.exitCode===0)return!0}catch{}return!1}async function bH($){let S=await import("fs/promises"),{join:E}=await import("path"),Y=process.platform==="win32",O=Y?"bun.exe":"bun",x=await D0();Z.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${x}`);let H=await fetch(x);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let R=E($,"bun-download.zip");await Bun.write(R,H);let q=E($,"bin");if(await S.mkdir(q,{recursive:!0}),Y){let w=`Expand-Archive -Path "${R}" -DestinationPath "${$}" -Force`,M=Bun.spawn(["powershell","-Command",w],{stdout:"pipe",stderr:"pipe"});if(await M.exited,M.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let w=Bun.spawn(["unzip","-oq",R,"-d",$],{stdout:"pipe",stderr:"pipe"});if(await w.exited,w.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let G=await S.readdir($);for(let w of G){let M=E($,w);if((await S.stat(M)).isDirectory()&&w.startsWith("bun-")){let V=E(M,O);try{if(await S.access(V),await S.rename(V,E(q,O)),!Y)await S.chmod(E(q,O),493);await S.rm(M,{recursive:!0,force:!0});break}catch{}}}return await S.rm(R,{force:!0}),!0}async function vH(){let $=g();if(!await qH())return Z.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await l0(),$.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(p,{recursive:!0}),await v$()==="cn")await bH(p);else if(process.platform==="win32"){let Y=`$env:BUN_INSTALL="${p}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",Y],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let Y=`BUN_INSTALL="${p}" ${c0()}`;if(await Bun.spawn(["bash","-c",Y],{stdout:"inherit",stderr:"inherit"}).exited!==0)return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return t=C,$.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),Z.info(`\u5B89\u88C5\u4F4D\u7F6E: ${p}`),!0}catch(S){return $.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function wH(){if(await e0())return t=C,!0;return Z.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),Z.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await vH()}async function A1(){if(t){if(!RH(t))t=C;return t}if(await e0())return t=C,C;return C}async function t0($){try{let S=await e(),E=await fetch(`${S}/${$}/latest`);if(!E.ok)return null;return(await E.json()).version}catch{return null}}async function MH($){return(await U()).installedClients[$.id]?.version||null}async function $S($){let S=Q$($.id),E=B1(S,"package.json");try{return await Bun.file(E).exists()}catch{return!1}}async function SS($){let S=await MH($);if(!S)return!0;let E=await t0($.package);if(!E)return!1;return S!==E}async function s0($,S=!1){let E=g(),Y=Q$($.id);try{if(!await wH())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 $S($),x=S||await SS($);if(O&&!x)return{success:!0};let H=O?"\u66F4\u65B0":"\u5B89\u88C5";E.start(`\u6B63\u5728${H} ${$.name}...`);let R=await import("fs/promises");await R.mkdir(Y,{recursive:!0});let q=B1(Y,"package.json");if(!await Bun.file(q).exists())await Bun.write(q,JSON.stringify({name:`tako-${$.id}`,private:!0,dependencies:{}},null,2));let w=await A1(),M=await e();if(O){let Y$=B1(Y,"bun.lock");try{await R.unlink(Y$)}catch{}}let J=Bun.spawn([w,"add",`${$.package}@latest`],{cwd:Y,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:M}});if(await J.exited!==0){let Y$=await new Response(J.stderr).text();return E.stop(`${H} ${$.name} \u5931\u8D25`),{success:!1,error:Y$}}let j=await t0($.package),u1=(await U()).installedClients[$.id]?.version;if(j){let Y$=await U();if(Y$.installedClients[$.id]={version:j,installedAt:new Date().toISOString()},await a(Y$),O&&u1)L("client_updated",{client_id:$.id,from_version:u1,to_version:j});else L("client_installed",{client_id:$.id,client_version:j})}return E.stop(`${$.name} ${H}\u5B8C\u6210`),{success:!0}}catch(O){return E.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:O instanceof Error?O.message:"\u672A\u77E5\u9519\u8BEF"}}}async function D$($){if(!await $S($))return await s0($);if(await SS($))return await s0($,!0);return{success:!0}}import{homedir as QH}from"os";var ZH=50,h1=3;async function W$($){try{return(await(await import("fs/promises")).stat($)).isDirectory()}catch{return!1}}async function l$($,S){let E=await U(),Y=E.recentProjects||[],O=new Date().toISOString(),x=Y.findIndex((R)=>R.path===$);if(x>=0){let R=Y[x],q=R.clientUsage||{},G=q[S]||{count:0,lastAt:O};Y[x]={...R,launchCount:R.launchCount+1,lastLaunchedAt:O,lastClientId:S,clientUsage:{...q,[S]:{count:G.count+1,lastAt:O}}}}else Y.push({path:$,launchCount:1,lastLaunchedAt:O,lastClientId:S,clientUsage:{[S]:{count:1,lastAt:O}}});let H=Y.sort((R,q)=>new Date(q.lastLaunchedAt).getTime()-new Date(R.lastLaunchedAt).getTime()).slice(0,ZH);E.recentProjects=H,await s$(E)}function JH($,S){let E=$.clientUsage?.[S];if(E)return new Date(E.lastAt).getTime();if($.lastClientId===S)return new Date($.lastLaunchedAt).getTime();return 0}async function HS($,S=h1,E=!0){let O=(await U()).recentProjects||[],x=process.cwd(),R=O.filter((G)=>{if(E&&G.path===x)return!1;return G.clientUsage?.[$]||G.lastClientId===$}).map((G)=>({...G,lastUsedTime:JH(G,$)})).sort((G,w)=>w.lastUsedTime-G.lastUsedTime),q=[];for(let{lastUsedTime:G,...w}of R){if(q.length>=S)break;if(await W$(w.path))q.push(w)}return q}async function ES(){let S=(await U()).recentProjects||[],E=process.cwd();return S.find((O)=>O.path===E)?.lastClientId||null}function YS($,S=25){let E=QH(),Y=$.startsWith(E)?"~"+$.slice(E.length):$;if(Y.length>S){let x=Y.split("/").pop()||"";if(x.length>S-4)Y="..."+x.slice(-S+3);else Y=`.../${x}`}return Y}function OS($){let{t:S}=(h(),LS(K0)),E=Date.now(),Y=new Date($).getTime(),O=E-Y,x=Math.floor(O/60000),H=Math.floor(O/3600000),R=Math.floor(O/86400000),q=Math.floor(R/7),G=Math.floor(R/30);if(x<1)return S("time.justNow");if(x<60)return S("time.minutesAgo",{n:x});if(H<24)return S("time.hoursAgo",{n:H});if(R===1)return S("time.yesterday");if(R<7)return S("time.daysAgo",{n:R});if(R<30)return S("time.weeksAgo",{n:q});return S("time.monthsAgo",{n:G})}h();async function xS($,S){try{let E=S?.projectPath||process.cwd();if(S?.projectPath){if(!await W$(S.projectPath))return{success:!1,error:`\u76EE\u5F55\u4E0D\u5B58\u5728: ${S.projectPath}`}}let Y=await D$($);if(!Y.success)return Y;let O=await V$();if(!O)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);let x=await s1($);if(!x)x=e1($);if(!await Bun.file(x).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${x}`};await l$(E,$.id);let R=$.getEnvVars(O),q={...process.env,...R};Z.info(`\u542F\u52A8 ${$.name}...`);let G;if($.runtime==="native")G=[x];else G=[await A1(),x];if(S?.args&&S.args.length>0)G=[...G,...S.args];return await Bun.spawn(G,{env:q,stdio:["inherit","inherit","inherit"],cwd:E}).exited,{success:!0}}catch(E){return{success:!1,error:E instanceof Error?E.message:"\u542F\u52A8\u5931\u8D25"}}}async function $$($,S){try{let E=S?.projectPath||process.cwd();if(S?.projectPath){if(!await W$(S.projectPath))return{success:!1,error:v("launcher.directoryNotFound",{path:S.projectPath})}}let Y=await D$($);if(!Y.success)return Y;let O=await V$();if(!O)return{success:!1,error:v("launcher.apiKeyNotConfigured")};if($.setupConfigFiles)await $.setupConfigFiles(O,S?.selectedOptionIds);await l$(E,$.id);let H=(await U()).installedClients[$.id]?.version;return L("client_launched",{client_id:$.id,client_version:H,project_hash:a0(E),is_recent_project:!!S?.projectPath}),Z.info(v("launcher.starting",{client:$.name})),await xS($,S)}catch(E){return{success:!1,error:E instanceof Error?E.message:"Launch failed"}}}h();import{join as u}from"path";var K1="tako-cli",S$="0.2.18";function TH($,S){let E=$.split(".").map(Number),Y=S.split(".").map(Number);for(let O=0;O<3;O++){let x=E[O]||0,H=Y[O]||0;if(x>H)return 1;if(x<H)return-1}return 0}async function zH(){try{let $=await e(),S=await fetch(`${$}/${K1}/latest`,{signal:AbortSignal.timeout(5000)});if(!S.ok)return null;return(await S.json()).version||null}catch{return null}}async function IH(){let $=await zH();if(!$)return{hasUpdate:!1,currentVersion:S$};return{hasUpdate:TH($,S$)>0,latestVersion:$,currentVersion:S$}}async function RS(){let $=await import("fs/promises"),S=u(F,"bin"),E=u(S,"tako"),Y=u(k,"node_modules/tako-cli/dist/index.js");if(await $.mkdir(S,{recursive:!0}),process.platform==="win32"){let x=`@echo off\r
325
+ "${C}" "${Y}" %*\r
326
+ `;await $.writeFile(u(S,"tako.cmd"),x)}else{let x=`#!/bin/bash
327
+ exec "${C}" "${Y}" "$@"
328
+ `;await $.writeFile(E,x,{mode:493})}}async function NH($){let S=g();S.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${$}...`);try{let E=await e(),Y=await import("fs/promises");await Y.mkdir(k,{recursive:!0});let O=u(k,"package.json");try{await Y.access(O)}catch{await Y.writeFile(O,JSON.stringify({name:"tako-local",private:!0},null,2))}let x=Bun.spawn([C,"update",K1,"--latest"],{cwd:k,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:E}});if(await x.exited,x.exitCode===0)return await RS(),L("cli_updated",{from_version:S$,to_version:$}),S.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${$}`),!0;else{let H=await new Response(x.stderr).text();return S.stop(`\u66F4\u65B0\u5931\u8D25: ${H||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(E){return S.stop(`\u66F4\u65B0\u5931\u8D25: ${E instanceof Error?E.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function WH(){let $=await import("fs/promises"),S=u(k,"bun.lock");try{await $.unlink(S)}catch{}}async function LH(){let $=await import("fs/promises");try{let S=await e();await $.mkdir(k,{recursive:!0});let E=u(k,"package.json");try{await $.access(E)}catch{await $.writeFile(E,JSON.stringify({name:"tako-local",private:!0},null,2))}await WH();let Y=Bun.spawn([C,"add",`${K1}@latest`],{cwd:k,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:S}});return await Y.exited,Y.exitCode===0}catch{return!1}}async function XH(){let $=await import("fs/promises"),S=u(F,"bin"),E=u(S,"tako"),Y=u(k,"node_modules/tako-cli/dist/index.js");try{let O=await $.readFile(E,"utf-8");if(O.includes("bun run tako-cli")||O.includes("run tako-cli")){Z.info(v("updater.migrating"));let x=!1;try{await $.access(Y),x=!0}catch{x=!1}if(!x){let H=g();if(H.start(v("updater.installingLocally")),!await LH())return H.stop(v("updater.migrationFailed")),!1;H.stop(v("updater.installComplete"))}return await RS(),!0}}catch{}return!1}async function L$(){try{if(await XH())Z.info(v("updater.migrationComplete")),process.exit(0);let S=await IH();if(S.hasUpdate&&S.latestVersion){if(Z.warn(v("updater.newVersionAvailable",{version:S.latestVersion,current:S$})),await NH(S.latestVersion))Z.info(v("updater.pleaseRestart")),process.exit(0)}}catch{}}h();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 VH($){return $.replace(/\x1b\[[0-9;]*m/g,"")}function C1($){let S=VH($),E=0;for(let Y of S)E+=UH(Y)?2:1;return E}h();var m1="__skip_prompt__";async function H$($){let S=$.launchOptions;if(!S||S.length===0)return{args:[],selectedOptionIds:[]};let E=await U(),Y=E.clientOptions?.[$.id];if(Y&&E.clientOptionsLocked?.[$.id])return GS(S,Y);let O=await BH($,S,Y);if(O===null)return null;if(await a({clientOptions:{...E.clientOptions,[$.id]:O.selectedIds},...O.lock?{clientOptionsLocked:{...E.clientOptionsLocked,[$.id]:!0}}:{}}),O.lock){let x=q$();Z.info(x==="zh"?"\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u6B21\u5C06\u8DF3\u8FC7\u6B64\u9009\u62E9\u3002\u53EF\u5728\u300C\u9AD8\u7EA7 \u2192 \u91CD\u7F6E\u542F\u52A8\u9009\u9879\u300D\u4E2D\u4FEE\u6539\u3002":"Saved. This prompt will be skipped next time. Reset in Advanced \u2192 Reset Launch Options.")}return GS(S,O.selectedIds)}async function qS(){await a({clientOptions:{},clientOptionsLocked:{}})}function GS($,S){let E=[];for(let Y of S){let O=$.find((x)=>x.id===Y);if(O)E.push(...O.args)}return{args:E,selectedOptionIds:S}}async function BH($,S,E){let Y=q$(),O=(G)=>Y==="zh"?G.label.zh:G.label.en,x=[],H=new Map,R=[];for(let G of S)if(G.group){if(!H.has(G.group))H.set(G.group,[]);H.get(G.group).push(G)}else R.push(G);for(let[,G]of H){let M=G.find((V)=>E?.includes(V.id))?.id??"__none__",J=await n({message:v("menu.selectOptions")||`${$.name} options`,initialValue:M,options:[{value:"__none__",label:Y==="zh"?"\u8DF3\u8FC7":"Skip",hint:""},...G.map((V)=>({value:V.id,label:O(V),hint:V.flag}))]});if(A(J))return null;if(J!=="__none__")x.push(J)}if(R.length>0){let G=await h0({message:v("menu.selectOptions")||`${$.name} options`,options:[...R.map((J)=>({value:J.id,label:O(J),hint:J.flag,initialValue:E?.includes(J.id)??!1})),{value:m1,label:Y==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9":"Don't show this again",hint:""}],required:!1});if(A(G))return null;let w=G,M=w.includes(m1);return x.push(...w.filter((J)=>J!==m1)),{selectedIds:x,lock:M}}let q=await j$({message:Y==="zh"?"\u4EE5\u540E\u4E0D\u518D\u663E\u793A\u6B64\u9009\u62E9\uFF1F":"Don't show this again?",initialValue:!1});if(A(q))return null;return{selectedIds:x,lock:!!q}}h();async function bS(){let $=t1(),S=await ES(),E=process.cwd(),Y=[],O=[...$].sort((x,H)=>{if(x.id===S)return-1;if(H.id===S)return 1;return 0});for(let x of O){let H=await HS(x.id,h1,!0);Y.push({value:{type:"launch",client:x},label:x.name,hint:v("recentProjects.launchInCurrent")});for(let R of H)Y.push({value:{type:"launch-in-project",client:x,projectPath:R.path},label:` \u2514\u2500 ${YS(R.path,35)}`,hint:OS(R.lastLaunchedAt)})}return Y.push({value:{type:"advanced"},label:v("menu.advanced"),hint:v("menu.advancedHint")},{value:{type:"exit"},label:v("menu.exit")}),Y}async function y1(){let $=await bS(),S=await n({message:v("menu.selectAction"),options:$});if(A(S))return null;return S}async function f1(){let $=await n({message:v("menu.advancedOptions"),options:[{value:{type:"stats"},label:v("menu.viewStats")},{value:{type:"config"},label:v("menu.configApiKey")},{value:{type:"resetOptions"},label:v("menu.resetOptions")},{value:{type:"language"},label:v("menu.changeLanguage")},{value:null,label:v("menu.back")}]});if(A($)||$===null)return null;return $}h();function AH($){return $.startsWith("cr_")&&$.length>10}async function hH($){try{let E=await(await fetch(`${c}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:$})})).json();if(E.success&&E.data?.id)return{valid:!0,apiId:E.data.id};return{valid:!1,error:E.error||v("auth.validationFailed")}}catch(S){return{valid:!1,error:S instanceof Error?S.message:v("auth.networkError")}}}async function vS($){if(!AH($))return L("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:v("auth.invalidFormat")};let S=await hH($);if(!S.valid)return L("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:S.error};return await a({apiKey:$,apiId:S.apiId}),L("api_key_validated",{success:!0}),c$(),{success:!0}}h();async function p$($=!1){if(!$)Z.warn("API Key not detected"),console.log();let S=await A0({message:v("prompts.enterApiKey"),placeholder:v("prompts.apiKeyPlaceholder"),validate(O){if(!O)return v("prompts.enterApiKey");if(!O.startsWith("cr_"))return v("prompts.keyInvalidFormat");if(O.length<10)return v("prompts.keyInvalidFormat")}});if(A(S))return!1;let E=g();E.start(v("prompts.validating"));let Y=await vS(S);if(Y.success)return E.stop(v("prompts.keyConfigured")),!0;else return E.stop(v("prompts.keyValidationFailed",{error:Y.error||""})),!1}async function X$(){try{let $=await n1();if(!$)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let E=await(await fetch(`${c}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$})})).json(),O=await(await fetch(`${c}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:$,period:"daily"})})).json();if(!E.success)return{success:!1,error:E.error||E.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let x=(O.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:E.data?.usage?.total?.requests||0,totalCost:E.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(E.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch($){return{success:!1,error:$ instanceof Error?$.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function j1($){return $.toLocaleString("en-US")}h();function KH($,S){let E=[];if(E.push(""),E.push(` ${v("stats.title")}`),E.push(""),E.push(` ${v("stats.totalRequests",{count:j1($.totalRequests)})}`),E.push(` ${v("stats.totalCost",{cost:$.totalCost})}`),E.push(` ${v("stats.todayCost",{cost:$.todayCost})}`),$.modelStats.length>0)E.push(""),E.push(` ${v("stats.modelDistribution")}`),$.modelStats.forEach((Y,O)=>{let x=O===$.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",H=Y.model.length>25?Y.model.slice(0,22)+"...":Y.model;E.push(` ${x} ${H.padEnd(25)} ${j1(Y.requests).padStart(6)} ${v("stats.times")} ${Y.cost.padStart(8)}`)});return E.push(""),E.push(` \x1B[90m${v("stats.refreshHint",{countdown:S})}\x1B[0m`),E.join(`
329
+ `)}async function _1(){let S=g();S.start(v("stats.fetching"));let E=await X$();if(!E.success){S.stop(v("stats.fetchFailed",{error:E.error||""}));return}S.stop("");let Y=10,O="",x=()=>{if(O){let R=O.split(`
330
+ `).length;process.stdout.write(`\x1B[${R}A\x1B[0J`)}O=KH(E.data,Y),console.log(O)};x();let H=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((R)=>{let q=!0,G=()=>{if(!q)return;q=!1,M(),R()},w=setInterval(async()=>{if(!q)return;if(Y--,Y<=0){Y=10;let J=await X$();if(J.success)E=J}x()},1000),M=()=>{if(clearInterval(w),process.stdin.removeListener("data",G),process.stdin.isTTY)process.stdin.setRawMode(H??!1);process.stdin.pause()};process.stdin.on("data",G)})}function CH(){let S="\u2500".repeat(50);console.log(),console.log(` \u250C${S}\u2510`);let E=`\uD83D\uDC19 ${v("cli.version",{version:S$})}`,Y=C1(E),O=Math.floor((50-Y)/2),x=50-O-Y;console.log(` \u2502${" ".repeat(O)}${E}${" ".repeat(x)}\u2502`);let H=v("banner.welcome"),R=`\x1B[90m${H}\x1B[0m`,q=C1(H),G=Math.floor((50-q)/2),w=50-G-q;console.log(` \u2502${" ".repeat(G)}${R}${" ".repeat(w)}\u2502`),console.log(` \u2514${S}\u2518`),console.log()}async function wS($){switch($.type){case"launch":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await H$($.client);if(S===null)return!0;let E=await $$($.client,{args:S.args,selectedOptionIds:S.selectedOptionIds});if(!E.success)Z.error(E.error||v("cli.launchFailed"));return!0}case"launch-in-project":{L("menu_action",{action:"launch",client_id:$.client.id});let S=await H$($.client);if(S===null)return!0;let E=[...$.client.continueArg?[$.client.continueArg]:[],...S.args],Y=await $$($.client,{projectPath:$.projectPath,args:E,selectedOptionIds:S.selectedOptionIds});if(!Y.success)Z.error(Y.error||v("cli.launchFailed"));return!0}case"advanced":{L("menu_action",{action:"advanced"});let S=await f1();if(S)return await wS(S);return!0}case"stats":return L("menu_action",{action:"stats"}),await _1(),!0;case"config":return L("menu_action",{action:"config"}),await p$(!0),!0;case"resetOptions":return L("menu_action",{action:"resetOptions"}),await qS(),Z.success(v("menu.optionsReset")),!0;case"language":return L("menu_action",{action:"language"}),await mH(),!0;case"exit":return L("menu_action",{action:"exit"}),!1}}async function mH(){let $=q$(),S=v(`language.${$}`),E=await n({message:v("menu.changeLanguage")+` (${v("menu.currentLanguage",{lang:S})})`,options:[{value:"en",label:v("language.en")},{value:"zh",label:v("language.zh")}]});if(A(E))return;Z1(E);let Y=v(`language.${E}`);Z.success(v("menu.languageChanged",{lang:Y}))}async function MS(){if(CH(),!await r1()){if(!await p$()){Q1("\u518D\u89C1\uFF01");return}}while(!0){let S=await y1();if(S===null)break;if(!await wS(S))break}Q1("\u518D\u89C1\uFF01")}h();import{homedir as fH}from"os";var W={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:W.brightYellow,text:W.brightGreen},git:{icon:W.brightBlue,text:W.brightBlue,clean:W.brightGreen,dirty:W.brightYellow,conflict:W.brightRed},model:{icon:W.brightCyan,text:W.brightCyan},version:{icon:W.brightWhite,text:W.brightBlack},outputStyle:{icon:W.brightMagenta,text:W.brightMagenta},context:{icon:W.brightMagenta,low:W.brightGreen,medium:W.brightYellow,high:W.brightRed},todayUsage:{icon:W.brightGreen,text:W.brightGreen},separator:W.brightBlack},D={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"};function yH(){return!1}function y($){let S=D[$];if(typeof S==="string")return S;return yH()?S.nerd:S.plain}class o${id="directory";render($){let S=this.formatPath($.workspace.current_dir),E=y("directory");return`${z.directory.icon}${E}${I.reset} ${z.directory.text}${S}${I.reset}`}formatPath($){let S=fH();if($===S)return"~";if($.startsWith(S+"/"))return"~"+$.slice(S.length);return $}}class i${id="git";async render($){let S=$.workspace.current_dir;if(!await this.isGitRepository(S))return null;let Y=await this.getBranch(S);if(!Y)return null;let{status:O,statusColor:x}=await this.getStatus(S),{ahead:H,behind:R}=await this.getAheadBehind(S),q=y("git"),G=`${z.git.icon}${q}${I.reset} ${z.git.text}${Y}${I.reset}`;if(G+=` ${x}${O}${I.reset}`,H>0)G+=` ${z.git.clean}${D.gitAhead}${H}${I.reset}`;if(R>0)G+=` ${z.git.dirty}${D.gitBehind}${R}${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"}),E=await new Response(S.stdout).text();if(await S.exited===0&&E.trim())return E.trim();let O=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),x=await new Response(O.stdout).text();if(await O.exited===0&&x.trim())return`detached:${x.trim()}`;return null}catch{return null}}async getStatus($){try{let S=Bun.spawn(["git","status","--porcelain"],{cwd:$,stdout:"pipe",stderr:"pipe"}),E=await new Response(S.stdout).text();if(await S.exited!==0)return{status:D.gitClean,statusColor:z.git.clean};let O=E.trim();if(!O)return{status:D.gitClean,statusColor:z.git.clean};if(O.includes("UU")||O.includes("AA")||O.includes("DD"))return{status:D.gitConflict,statusColor:z.git.conflict};return{status:D.gitDirty,statusColor:z.git.dirty}}catch{return{status:D.gitClean,statusColor:z.git.clean}}}async getAheadBehind($){try{let S=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:$,stdout:"pipe",stderr:"pipe"}),E=await new Response(S.stdout).text(),O=await S.exited===0?parseInt(E.trim(),10)||0:0,x=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:$,stdout:"pipe",stderr:"pipe"}),H=await new Response(x.stdout).text(),q=await x.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:O,behind:q}}catch{return{ahead:0,behind:0}}}}var jH={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"};class a${id="model";render($){let S=$.model.id,E=jH[S]||this.simplifyModelName($.model.display_name),Y=y("model");return`${z.model.icon}${Y}${I.reset} ${z.model.text}${E}${I.reset}`}simplifyModelName($){let S=$.replace(/^Claude\s+/i,"");return S=S.replace(/-\d{8}$/,""),S}}import{homedir as _H}from"os";import{join as P}from"path";var{Glob:PH}=globalThis.Bun;var QS=process.platform==="win32";class r${id="version";async render($){let S=await this.getClaudeCodeVersion();if(!S)return null;let E=y("version");return`${z.version.icon}${E}${I.reset} ${z.version.text}v${S}${I.reset}`}async getClaudeCodeVersion(){let $=_H(),S=[];if(QS)S.push(P($,"AppData","Roaming","npm","node_modules","@anthropic-ai","claude-code","package.json"),P($,"AppData","Local","npm-cache","_npx","**","node_modules","@anthropic-ai","claude-code","package.json"),P($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"));else S.push(P($,".bun","install","global","node_modules","@anthropic-ai","claude-code","package.json"),P($,".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 Y of S){let O=await this.readVersionFromPackage(Y);if(O)return O}let E=[];if(QS)E.push({base:P($,"AppData","Roaming","nvm"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"});else E.push({base:P($,".local","share","fnm","node-versions"),pattern:"*/installation/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".nvm","versions","node"),pattern:"*/lib/node_modules/@anthropic-ai/claude-code/package.json"},{base:P($,".volta","tools","image","packages","@anthropic-ai","claude-code"),pattern:"*/package.json"},{base:P($,".local","share","pnpm","global"),pattern:"*/node_modules/@anthropic-ai/claude-code/package.json"});for(let{base:Y,pattern:O}of E)try{let x=new PH(O);for await(let H of x.scan({cwd:Y,absolute:!0})){let R=await this.readVersionFromPackage(H);if(R)return R}}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 FH={"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},kH=200000;class d{id="context";static cache=null;static CACHE_TTL=5000;async render($){let S=await this.getTokensWithCache($.transcript_path),E=this.getContextLimit($.model.id),O=Math.round((S??0)/E*100),x=Math.max(0,100-O),H=y("context"),R=this.getRemainingColor(x),q=this.renderProgressBar(x);return`${z.context.icon}${H}${I.reset} ${R}Context Remaining: ${x}%${I.reset} ${q}`}renderProgressBar($){let E=Math.round($/100*10),Y=10-E,O="=".repeat(E),x="-".repeat(Y),H=this.getRemainingColor($);return`${W.brightBlack}[${I.reset}${H}${O}${I.reset}${W.brightBlack}${x}]${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 E=await this.parseTranscriptTokens($);return d.cache={path:$,tokens:E,timestamp:S},E}async parseTranscriptTokens($){try{let S=Bun.file($);if(!await S.exists())return null;let E=await S.text();if(!E.trim())return null;let Y=E.split(`
331
+ `).filter((O)=>O.trim());for(let O=Y.length-1;O>=0;O--)try{let x=JSON.parse(Y[O]);if(x.type==="assistant"&&x.message?.usage){let H=x.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}getContextLimit($){return FH[$]||kH}}class l{id="today-usage";static cache=null;static CACHE_TTL=30000;async render($){if(l.cache&&Date.now()-l.cache.timestamp<l.CACHE_TTL)return l.cache.data;try{let S=await X$();if(!S.success||!S.data)return null;let E=S.data.todayCost,Y=y("todayUsage"),O=`${z.todayUsage.icon}${Y}${I.reset} ${z.todayUsage.text}Today: ${E}${I.reset}`;return l.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"],E=["context"],Y=this.renderLine($,S),O=this.renderLine($,E);return[Y,O].filter((x)=>x.length>0).join(`
332
+ `)}renderLine($,S){let E=[];for(let Y of S){let O=$.get(Y);if(O)E.push(O)}return E.join(this.separator)}}import{join as E$,dirname as gH}from"path";import{homedir as F1}from"os";import{mkdir as uH}from"fs/promises";var ZS=E$(F1(),".tako"),dH=E$(ZS,"cli"),cH=E$(ZS,"bin",process.platform==="win32"?"tako.cmd":"tako");function DH(){if(process.platform==="win32")return E$(process.env.APPDATA||E$(F1(),"AppData","Roaming"),"claude","settings.json");return E$(F1(),".claude","settings.json")}var lH=process.platform==="win32",pH="0.1.48";function oH($,S){let E=$.split(".").map(Number),Y=S.split(".").map(Number),O=Math.max(E.length,Y.length);for(let x=0;x<O;x++){let H=E[x]||0,R=Y[x]||0;if(H!==R)return H-R}return 0}async function iH(){let $=E$(dH,"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 aH(){let $=await iH();if(!$)return!1;return oH($,pH)>=0}function rH(){return cH}function nH($){if(lH)return $.replace(/\\/g,"/");return $}async function k1(){if(!await aH())return;let S=DH(),E={};try{let H=Bun.file(S);if(await H.exists())E=await H.json()}catch{}let O={type:"command",command:`"${nH(rH())}" statusline`,padding:0},x=typeof E.statusLine==="object"&&E.statusLine!==null?E.statusLine.command:null;if(typeof x==="string"&&x.includes("tako statusline"))return;E.statusLine=O,await uH(gH(S),{recursive:!0}),await Bun.write(S,JSON.stringify(E,null,2))}var sH=[new o$,new i$,new a$,new r$,new d,new l];async function eH($){let S=await Promise.all(sH.map(async(O)=>{try{let x=await O.render($);return{id:O.id,content:x}}catch{return{id:O.id,content:null}}})),E=new Map;for(let{id:O,content:x}of S)E.set(O,x);return new P1().render(E)}async function JS(){try{let $=await Bun.stdin.json(),S=await eH($);console.log(S)}catch($){process.exit(0)}}var g1="0.2.18";function tH(){console.log(`
333
+ ${v("cli.version",{version:g1})}
333
334
 
334
335
  ${v("cli.usage")}
335
336
 
@@ -340,9 +341,11 @@ ${v("cli.optionHelp")}
340
341
  ${v("cli.shortcuts")}
341
342
  ${v("cli.shortcutClaude")}
342
343
  ${v("cli.shortcutCodex")}
344
+ ${v("cli.shortcutGemini")}
343
345
 
344
346
  ${v("cli.examples")}
345
347
  ${v("cli.exampleInteractive")}
346
348
  ${v("cli.exampleClaude")}
347
349
  ${v("cli.exampleCodex")}
348
- `)}async function iH(){let $=process.argv.slice(2);if($[0]==="statusline"){await IS();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${k1}`);return}if($.includes("-h")||$.includes("--help")){oH();return}let S=k1==="dev";if(u$(),L("cli_started"),$.includes("--claude")){let E=t$("claude-code");if(!E)console.error(v("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await l$();let Y=await b$(E);if(Y===null)return;let O=await q$(E,{args:Y.args,selectedOptionIds:Y.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let E=t$("codex");if(!E)console.error(v("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await l$();let Y=await b$(E);if(Y===null)return;let O=await q$(E,{args:Y.args,selectedOptionIds:Y.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await l$();F1().catch(()=>{}),await qS()}process.on("beforeExit",async()=>{await J$()});process.on("SIGINT",async()=>{await J$(),process.exit(0)});process.on("SIGTERM",async()=>{await J$(),process.exit(0)});iH().catch(async($)=>{console.error(v("cli.cliError"),$),await J$(),process.exit(1)});
350
+ ${v("cli.exampleGemini")}
351
+ `)}async function $3(){let $=process.argv.slice(2);if($[0]==="statusline"){await JS();return}if($.includes("-v")||$.includes("--version")){console.log(`Tako CLI v${g1}`);return}if($.includes("-h")||$.includes("--help")){tH();return}let S=g1==="dev";if(c$(),L("cli_started"),$.includes("--claude")){let E=A$("claude-code");if(!E)console.error(v("cli.clientNotFound",{client:"Claude Code"})),process.exit(1);if(!S)await L$();let Y=await H$(E);if(Y===null)return;let O=await $$(E,{args:Y.args,selectedOptionIds:Y.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--codex")){let E=A$("codex");if(!E)console.error(v("cli.clientNotFound",{client:"Codex"})),process.exit(1);if(!S)await L$();let Y=await H$(E);if(Y===null)return;let O=await $$(E,{args:Y.args,selectedOptionIds:Y.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if($.includes("--gemini")){let E=A$("gemini");if(!E)console.error(v("cli.clientNotFound",{client:"Gemini CLI"})),process.exit(1);if(!S)await L$();let Y=await H$(E);if(Y===null)return;let O=await $$(E,{args:Y.args,selectedOptionIds:Y.selectedOptionIds});if(!O.success)console.error(O.error),process.exit(1);return}if(!S)await L$();k1().catch(()=>{}),await MS()}process.on("beforeExit",async()=>{await N$()});process.on("SIGINT",async()=>{await N$(),process.exit(0)});process.on("SIGTERM",async()=>{await N$(),process.exit(0)});$3().catch(async($)=>{console.error(v("cli.cliError"),$),await N$(),process.exit(1)});
package/install.ps1 CHANGED
@@ -44,6 +44,41 @@ function Detect-Region {
44
44
  return $region
45
45
  }
46
46
 
47
+ # Check and install Git (required by Claude Code)
48
+ function Ensure-Git {
49
+ param([string]$Region)
50
+
51
+ if (Get-Command git -ErrorAction SilentlyContinue) {
52
+ return
53
+ }
54
+
55
+ Write-Warn "Git is not installed. Claude Code requires Git to work properly."
56
+
57
+ # Try winget first (Windows 10 1709+)
58
+ if (Get-Command winget -ErrorAction SilentlyContinue) {
59
+ Write-Info "Installing Git via winget..."
60
+ try {
61
+ winget install --id Git.Git -e --source winget --accept-package-agreements --accept-source-agreements 2>&1 | ForEach-Object { Write-Host $_ }
62
+ # Refresh PATH for current session
63
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
64
+ if (Get-Command git -ErrorAction SilentlyContinue) {
65
+ Write-Info "Git installed successfully"
66
+ return
67
+ }
68
+ } catch {
69
+ Write-Warn "winget install failed, please install Git manually"
70
+ }
71
+ }
72
+
73
+ # Fallback: prompt user to install manually
74
+ if ($Region -eq "cn") {
75
+ Write-Warn "Please install Git manually: https://registry.npmmirror.com/binary.html?path=git-for-windows/"
76
+ } else {
77
+ Write-Warn "Please install Git manually: https://git-scm.com/downloads/win"
78
+ }
79
+ Write-Warn "After installing Git, reopen your terminal and run 'tako' again."
80
+ }
81
+
47
82
  # Install Tako dedicated Bun
48
83
  function Install-Bun {
49
84
  param([string]$Region)
@@ -254,42 +289,21 @@ function Setup-Path {
254
289
  }
255
290
  }
256
291
 
257
- # Verify installation
258
- function Verify-Installation {
259
- # Refresh current session environment
260
- $env:Path = "$TAKO_BIN_DIR;$env:Path"
261
-
262
- $takoCmd = "$TAKO_BIN_DIR\tako.cmd"
263
- $takoCmdPs1 = "$TAKO_BIN_DIR\tako.ps1"
292
+ # Verify and auto-launch
293
+ function Verify-And-Launch {
294
+ param([string]$TakoEntry)
264
295
 
265
- if (Test-Path $takoCmd) {
266
- Write-Host ""
267
- Write-Host " [OK] Installation successful!" -ForegroundColor Green
268
- Write-Host ""
269
- Write-Host " Run 'tako' to get started" -ForegroundColor Cyan
270
- Write-Host ""
296
+ $bun = "$TAKO_BUN_DIR\bin\bun.exe"
271
297
 
272
- # Test if tako command is available
273
- try {
274
- $testResult = & $takoCmd --version 2>&1
275
- if ($LASTEXITCODE -eq 0 -or $testResult) {
276
- Write-Host " [OK] tako command is ready" -ForegroundColor Green
277
- }
278
- } catch {
279
- Write-Host " Note: If 'tako' command is not recognized, try:" -ForegroundColor Yellow
280
- Write-Host ""
281
- Write-Host " 1. Reopen your terminal (recommended)" -ForegroundColor Cyan
282
- Write-Host ""
283
- Write-Host " 2. Or run in current terminal:" -ForegroundColor Cyan
284
- Write-Host " `$env:Path = `"$TAKO_BIN_DIR;`$env:Path`"" -ForegroundColor Gray
285
- Write-Host ""
286
- Write-Host " 3. Or use full path:" -ForegroundColor Cyan
287
- Write-Host " $takoCmd" -ForegroundColor Gray
288
- }
289
- Write-Host ""
290
- } else {
291
- Write-Err "Installation verification failed: tako.cmd not found"
298
+ if (-not (Test-Path $bun) -or -not (Test-Path $TakoEntry)) {
299
+ Write-Err "Installation verification failed"
292
300
  }
301
+
302
+ Write-Info "Installation successful! Launching Tako CLI..."
303
+ Write-Host ""
304
+
305
+ # Auto-launch Tako CLI
306
+ & $bun $TakoEntry
293
307
  }
294
308
 
295
309
  # Main
@@ -302,12 +316,11 @@ function Main {
302
316
 
303
317
  $region = Detect-Region
304
318
  Install-Bun -Region $region
319
+ Ensure-Git -Region $region
305
320
  $takoEntry = Install-Tako -Region $region
306
321
  Create-Command -TakoEntry $takoEntry
307
322
  Setup-Path
308
- Verify-Installation
309
-
310
- Write-Host ""
323
+ Verify-And-Launch -TakoEntry $takoEntry
311
324
  }
312
325
 
313
326
  # Run
package/install.sh CHANGED
@@ -96,6 +96,70 @@ install_dependencies() {
96
96
  fi
97
97
  }
98
98
 
99
+ # 检查并安装 Git(Claude Code 必需)
100
+ ensure_git() {
101
+ if command -v git &> /dev/null; then
102
+ return 0
103
+ fi
104
+
105
+ warn "Git 未安装,Claude Code 需要 Git 才能正常工作"
106
+
107
+ local os
108
+ os=$(uname -s)
109
+
110
+ if [ "$os" = "Darwin" ]; then
111
+ # macOS: 通过 Xcode Command Line Tools 安装(系统自带,无需第三方工具)
112
+ info "正在安装 Xcode Command Line Tools(包含 Git)..."
113
+ info "请在弹出的对话框中点击「安装」"
114
+ xcode-select --install 2>/dev/null || true
115
+ # 等待安装完成(xcode-select --install 是异步 GUI 弹窗)
116
+ local waited=0
117
+ while ! command -v git &> /dev/null; do
118
+ sleep 3
119
+ waited=$((waited + 3))
120
+ if [ $waited -ge 300 ]; then
121
+ warn "等待超时,请手动完成 Xcode Command Line Tools 安装后重新运行此脚本"
122
+ return 1
123
+ fi
124
+ done
125
+ info "Git 安装完成"
126
+ else
127
+ # Linux: 通过包管理器安装
128
+ info "安装 Git..."
129
+
130
+ if [ -w "/usr" ] 2>/dev/null; then
131
+ SUDO=""
132
+ else
133
+ SUDO="sudo"
134
+ fi
135
+
136
+ if command -v apt-get &> /dev/null; then
137
+ $SUDO apt-get update -qq && $SUDO apt-get install -y -qq git
138
+ elif command -v yum &> /dev/null; then
139
+ $SUDO yum install -y -q git
140
+ elif command -v dnf &> /dev/null; then
141
+ $SUDO dnf install -y -q git
142
+ elif command -v pacman &> /dev/null; then
143
+ $SUDO pacman -S --noconfirm git
144
+ elif command -v apk &> /dev/null; then
145
+ $SUDO apk add --quiet git
146
+ else
147
+ if [ "$REGION" = "cn" ]; then
148
+ warn "无法自动安装 Git,请手动安装: https://registry.npmmirror.com/binary.html?path=git-for-linux/"
149
+ else
150
+ warn "无法自动安装 Git,请手动安装: https://git-scm.com/downloads"
151
+ fi
152
+ return 1
153
+ fi
154
+
155
+ if command -v git &> /dev/null; then
156
+ info "Git 安装完成"
157
+ else
158
+ warn "Git 安装失败,请手动安装"
159
+ fi
160
+ fi
161
+ }
162
+
99
163
  # 从 npmmirror 直接下载安装 Bun(国内专用,不依赖 bun.sh 和 GitHub)
100
164
  install_bun_from_npmmirror() {
101
165
  local mirror="https://registry.npmmirror.com/-/binary/bun"
@@ -338,39 +402,13 @@ exec \"$bun\" \"$TAKO_ENTRY\" \"\$@\"
338
402
  info "tako 命令已配置到 $tako_bin_dir"
339
403
  }
340
404
 
341
- # 验证安装
342
- verify_installation() {
343
- if command -v tako &> /dev/null; then
344
- info "安装成功!"
345
- echo ""
346
- echo -e " ${CYAN}运行 'tako' 开始使用${NC}"
347
- echo ""
348
- else
349
- # tako 不在 PATH 中,但可能已配置到 shell rc 文件
350
- info "安装完成!"
351
- echo ""
352
- echo -e " ${YELLOW}请执行以下命令使配置生效:${NC}"
353
- echo ""
354
-
355
- local current_shell=""
356
- current_shell=$(basename "$SHELL" 2>/dev/null || echo "bash")
357
-
358
- case "$current_shell" in
359
- zsh)
360
- echo -e " ${CYAN}source ~/.zshrc${NC}"
361
- ;;
362
- fish)
363
- echo -e " ${CYAN}source ~/.config/fish/config.fish${NC}"
364
- ;;
365
- *)
366
- echo -e " ${CYAN}source ~/.bashrc${NC}"
367
- ;;
368
- esac
405
+ # 验证安装并自动启动
406
+ verify_and_launch() {
407
+ info "安装成功!正在启动 Tako CLI..."
408
+ echo ""
369
409
 
370
- echo ""
371
- echo -e " 或者打开新终端,然后运行 ${CYAN}tako${NC}"
372
- echo ""
373
- fi
410
+ # PATH 可能还没生效,直接用已知路径启动
411
+ exec "$TAKO_BUN_DIR/bin/bun" "$TAKO_ENTRY"
374
412
  }
375
413
 
376
414
  # 解析命令行参数
@@ -400,12 +438,11 @@ main() {
400
438
 
401
439
  detect_region
402
440
  install_dependencies
441
+ ensure_git
403
442
  install_bun
404
443
  install_tako
405
444
  create_command
406
- verify_installation
407
-
408
- echo ""
445
+ verify_and_launch
409
446
  }
410
447
 
411
448
  main "$@"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.2.17",
3
+ "version": "0.2.18",
4
4
  "description": "Tako CLI - AI coding tools launcher",
5
5
  "type": "module",
6
6
  "bin": {