tako-cli 0.3.19 → 0.3.21

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.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var{defineProperty:kd,getOwnPropertyNames:dc,getOwnPropertyDescriptor:ec}=Object,uc=Object.prototype.hasOwnProperty;function rc(i){return this[i]}var tc=(i)=>{var o=(Pe??=new WeakMap).get(i),n;if(o)return o;if(o=kd({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function"){for(var d of dc(i))if(!uc.call(o,d))kd(o,d,{get:rc.bind(i,d),enumerable:!(n=ec(i,d))||n.enumerable})}return Pe.set(i,o),o},Pe;var cc=(i)=>i;function ac(i,o){this[i]=cc.bind(null,o)}var ii=(i,o)=>{for(var n in o)kd(i,n,{get:o[n],enumerable:!0,configurable:!0,set:ac.bind(o,n)})};var N=(i,o)=>()=>(i&&(o=i(i=0)),o);var $=import.meta.require;var Wn={};ii(Wn,{updateConfig:()=>Ui,saveConfig:()=>K,loadConfig:()=>z,hasApiKey:()=>mc,getApiKey:()=>xc,getApiId:()=>Di,ensureTakoDir:()=>Ho,TOOLS_DIR:()=>Nn,TAKO_SERVER:()=>Ie,TAKO_DIR:()=>Q,TAKO_CLI_DIR:()=>mi,TAKO_BUN_DIR:()=>bi,TAKO_BUN_CACHE_DIR:()=>gd,TAKO_BUN_BIN:()=>Y,PROXY_BASE_URL:()=>A,IS_DEV:()=>Xo,CONFIG_PATH:()=>zd});import{homedir as pc}from"os";import{join as _i,resolve as lc}from"path";async function Ho(){let i=await import("fs/promises");try{await i.mkdir(Q,{recursive:!0}),await i.mkdir(Nn,{recursive:!0})}catch{}}async function z(){await Ho();try{let i=Bun.file(zd);if(await i.exists()){let o=await i.json();return{...Ce,...o}}}catch{}return{...Ce}}async function K(i){await Ho(),await Bun.write(zd,JSON.stringify(i,null,2))}async function Ui(i){let n={...await z(),...i};return await K(n),n}async function mc(){return!!(await z()).apiKey}async function xc(){return(await z()).apiKey}async function Di(){return(await z()).apiId}var Q,zd,Nn,mi,bi,Y,gd,Ie,A,Xo,Ce;var C=N(()=>{Q=lc(process.env.TAKO_HOME||_i(pc(),".tako")),zd=_i(Q,"config.json"),Nn=_i(Q,"tools"),mi=_i(Q,"cli"),bi=_i(Q,"bun"),Y=_i(bi,"bin",process.platform==="win32"?"bun.exe":"bun"),gd=_i(bi,"install-cache"),Ie=process.env.TAKO_SERVER||"https://tako.shiroha.tech",A=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Xo=process.env.TAKO_DEV==="true"||process.env.TAKO_DEV==="1"||Ie.includes("localhost"),Ce={apiKey:"",apiId:"",installedClients:{}}});import{join as kn}from"path";function $d(i,o){if(!i.startsWith(Q))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${o} \u8DEF\u5F84 "${i}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function Gi(i){let o=kn(Nn,i);return $d(o,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),o}async function xo(i){let o=Gi(i.id),n=kn(o,"node_modules",i.package,"package.json");try{let d=Bun.file(n);if(!await d.exists())return null;let u=(await d.json()).bin;if(!u)return null;let r=null;if(typeof u==="string")r=u;else if(typeof u==="object"&&u[i.command])r=u[i.command];if(!r)return null;let t=kn(o,"node_modules",i.package,r);return $d(t,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),t}catch{return null}}function wo(i){let o=Gi(i.id),n=kn(o,"node_modules",".bin",i.command);return $d(n,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),n}function zn(i,o){let n=i.launchOptions;return typeof n==="function"?n(o):n??[]}function yo(i){Md.set(i.id,i)}function Qe(){return Array.from(Md.values())}function oi(i){return Md.get(i)}var Md;var E=N(()=>{C();Md=new Map});var wc,Ai;var Gd=N(()=>{/*!
3
+ var{defineProperty:$0,getOwnPropertyNames:ic,getOwnPropertyDescriptor:oc}=Object,nc=Object.prototype.hasOwnProperty;function dc(i){return this[i]}var uc=(i)=>{var o=(Pu??=new WeakMap).get(i),n;if(o)return o;if(o=$0({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function"){for(var d of ic(i))if(!nc.call(o,d))$0(o,d,{get:dc.bind(i,d),enumerable:!(n=oc(i,d))||n.enumerable})}return Pu.set(i,o),o},Pu;var ec=(i)=>i;function rc(i,o){this[i]=ec.bind(null,o)}var mi=(i,o)=>{for(var n in o)$0(i,n,{get:o[n],enumerable:!0,configurable:!0,set:rc.bind(o,n)})};var N=(i,o)=>()=>(i&&(o=i(i=0)),o);var $=import.meta.require;var sn={};mi(sn,{updateConfig:()=>Di,saveConfig:()=>K,loadConfig:()=>s,hasApiKey:()=>pc,getApiKey:()=>ac,getApiId:()=>ji,ensureTakoDir:()=>Zo,TOOLS_DIR:()=>zn,TAKO_SERVER:()=>Qu,TAKO_DIR:()=>q,TAKO_CLI_DIR:()=>xi,TAKO_BUN_DIR:()=>Wi,TAKO_BUN_CACHE_DIR:()=>G0,TAKO_BUN_BIN:()=>A,PROXY_BASE_URL:()=>Y,IS_DEV:()=>Ho,CONFIG_PATH:()=>M0});import{homedir as tc}from"os";import{join as Ui,resolve as cc}from"path";async function Zo(){let i=await import("fs/promises");try{await i.mkdir(q,{recursive:!0}),await i.mkdir(zn,{recursive:!0})}catch{}}async function s(){await Zo();try{let i=Bun.file(M0);if(await i.exists()){let o=await i.json();return{...Cu,...o}}}catch{}return{...Cu}}async function K(i){await Zo(),await Bun.write(M0,JSON.stringify(i,null,2))}async function Di(i){let n={...await s(),...i};return await K(n),n}async function pc(){return!!(await s()).apiKey}async function ac(){return(await s()).apiKey}async function ji(){return(await s()).apiId}var q,M0,zn,xi,Wi,A,G0,Qu,Y,Ho,Cu;var C=N(()=>{q=cc(process.env.TAKO_HOME||Ui(tc(),".tako")),M0=Ui(q,"config.json"),zn=Ui(q,"tools"),xi=Ui(q,"cli"),Wi=Ui(q,"bun"),A=Ui(Wi,"bin",process.platform==="win32"?"bun.exe":"bun"),G0=Ui(Wi,"install-cache"),Qu=process.env.TAKO_SERVER||"https://tako.shiroha.tech",Y=process.env.PROXY_BASE_URL||"https://tako.shiroha.tech",Ho=process.env.TAKO_DEV==="true"||process.env.TAKO_DEV==="1"||Qu.includes("localhost"),Cu={apiKey:"",apiId:"",installedClients:{}}});import{join as kn}from"path";function S0(i,o){if(!i.startsWith(q))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${o} \u8DEF\u5F84 "${i}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function Gi(i){let o=kn(zn,i);return S0(o,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),o}async function xo(i){let o=Gi(i.id),n=kn(o,"node_modules",i.package,"package.json");try{let d=Bun.file(n);if(!await d.exists())return null;let e=(await d.json()).bin;if(!e)return null;let r=null;if(typeof e==="string")r=e;else if(typeof e==="object"&&e[i.command])r=e[i.command];if(!r)return null;let t=kn(o,"node_modules",i.package,r);return S0(t,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),t}catch{return null}}function wo(i){let o=Gi(i.id),n=kn(o,"node_modules",".bin",i.command);return S0(n,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),n}function gn(i,o){let n=i.launchOptions;return typeof n==="function"?n(o):n??[]}function yo(i){P0.set(i.id,i)}function qu(){return Array.from(P0.values())}function ii(i){return P0.get(i)}var P0;var _=N(()=>{C();P0=new Map});var lc,Ai;var C0=N(()=>{/*!
4
4
  * Copyright (c) Squirrel Chat et al., All rights reserved.
5
5
  * SPDX-License-Identifier: BSD-3-Clause
6
6
  *
@@ -26,9 +26,9 @@ var{defineProperty:kd,getOwnPropertyNames:dc,getOwnPropertyDescriptor:ec}=Object
26
26
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
27
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- */wc=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;Ai=class Ai extends Date{#o=!1;#n=!1;#i=null;constructor(i){let o=!0,n=!0,d="Z";if(typeof i==="string"){let e=i.match(wc);if(e){if(!e[1])o=!1,i=`0000-01-01T${i}`;if(n=!!e[2],n&&i[10]===" "&&(i=i.replace(" ","T")),e[2]&&+e[2]>23)i="";else if(d=e[3]||null,i=i.toUpperCase(),!d&&n)i+="Z"}else i=""}super(i);if(!isNaN(this.getTime()))this.#o=o,this.#n=n,this.#i=d}isDateTime(){return this.#o&&this.#n}isLocal(){return!this.#o||!this.#n||!this.#i}isDate(){return this.#o&&!this.#n}isTime(){return this.#n&&!this.#o}isValid(){return this.#o||this.#n}toISOString(){let i=super.toISOString();if(this.isDate())return i.slice(0,10);if(this.isTime())return i.slice(11,23);if(this.#i===null)return i.slice(0,-1);if(this.#i==="Z")return i;let o=+this.#i.slice(1,3)*60+ +this.#i.slice(4,6);return o=this.#i[0]==="-"?o:-o,new Date(this.getTime()-o*60000).toISOString().slice(0,-1)+this.#i}static wrapAsOffsetDateTime(i,o="Z"){let n=new Ai(i);return n.#i=o,n}static wrapAsLocalDateTime(i){let o=new Ai(i);return o.#i=null,o}static wrapAsLocalDate(i){let o=new Ai(i);return o.#n=!1,o.#i=null,o}static wrapAsLocalTime(i){let o=new Ai(i);return o.#o=!1,o.#i=null,o}}});function yc(i,o){let n=i.slice(0,o).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}function sc(i,o,n){let d=i.split(/\r\n|\n|\r/g),e="",u=(Math.log10(o+1)|0)+1;for(let r=o-1;r<=o+1;r++){let t=d[r-1];if(!t)continue;if(e+=r.toString().padEnd(u," "),e+=": ",e+=t,e+=`
30
- `,r===o)e+=" ".repeat(u+n+2),e+=`^
31
- `}return e}var G;var ji=N(()=>{/*!
29
+ */lc=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;Ai=class Ai extends Date{#o=!1;#n=!1;#i=null;constructor(i){let o=!0,n=!0,d="Z";if(typeof i==="string"){let u=i.match(lc);if(u){if(!u[1])o=!1,i=`0000-01-01T${i}`;if(n=!!u[2],n&&i[10]===" "&&(i=i.replace(" ","T")),u[2]&&+u[2]>23)i="";else if(d=u[3]||null,i=i.toUpperCase(),!d&&n)i+="Z"}else i=""}super(i);if(!isNaN(this.getTime()))this.#o=o,this.#n=n,this.#i=d}isDateTime(){return this.#o&&this.#n}isLocal(){return!this.#o||!this.#n||!this.#i}isDate(){return this.#o&&!this.#n}isTime(){return this.#n&&!this.#o}isValid(){return this.#o||this.#n}toISOString(){let i=super.toISOString();if(this.isDate())return i.slice(0,10);if(this.isTime())return i.slice(11,23);if(this.#i===null)return i.slice(0,-1);if(this.#i==="Z")return i;let o=+this.#i.slice(1,3)*60+ +this.#i.slice(4,6);return o=this.#i[0]==="-"?o:-o,new Date(this.getTime()-o*60000).toISOString().slice(0,-1)+this.#i}static wrapAsOffsetDateTime(i,o="Z"){let n=new Ai(i);return n.#i=o,n}static wrapAsLocalDateTime(i){let o=new Ai(i);return o.#i=null,o}static wrapAsLocalDate(i){let o=new Ai(i);return o.#n=!1,o.#i=null,o}static wrapAsLocalTime(i){let o=new Ai(i);return o.#o=!1,o.#i=null,o}}});function mc(i,o){let n=i.slice(0,o).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}function xc(i,o,n){let d=i.split(/\r\n|\n|\r/g),u="",e=(Math.log10(o+1)|0)+1;for(let r=o-1;r<=o+1;r++){let t=d[r-1];if(!t)continue;if(u+=r.toString().padEnd(e," "),u+=": ",u+=t,u+=`
30
+ `,r===o)u+=" ".repeat(e+n+2),u+=`^
31
+ `}return u}var G;var io=N(()=>{/*!
32
32
  * Copyright (c) Squirrel Chat et al., All rights reserved.
33
33
  * SPDX-License-Identifier: BSD-3-Clause
34
34
  *
@@ -54,14 +54,14 @@ var{defineProperty:kd,getOwnPropertyNames:dc,getOwnPropertyDescriptor:ec}=Object
54
54
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
55
55
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
56
56
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57
- */G=class G extends Error{line;column;codeblock;constructor(i,o){let[n,d]=yc(o.toml,o.ptr),e=sc(o.toml,n,d);super(`Invalid TOML document: ${i}
57
+ */G=class G extends Error{line;column;codeblock;constructor(i,o){let[n,d]=mc(o.toml,o.ptr),u=xc(o.toml,n,d);super(`Invalid TOML document: ${i}
58
58
 
59
- ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i[o++],d=n,e=n==="'",u=n===i[o]&&n===i[o+1];if(u){if(i[o+=2]===`
59
+ ${u}`,o);this.line=n,this.column=d,this.codeblock=u}}});function $n(i,o){let n=i[o++],d=n,u=n==="'",e=n===i[o]&&n===i[o+1];if(e){if(i[o+=2]===`
60
60
  `)o++;else if(i[o]==="\r"&&i[o+1]===`
61
- `)o+=2}let r="",t=o,c=0;for(let a=o;a<i.length;a++)if(n=i[a],u&&(n===`
62
- `||n==="\r"&&i[a+1]===`
63
- `))c=c&&3;else if(n<" "&&n!=="\t"||n==="\x7F")throw new G("control characters are not allowed in strings",{toml:i,ptr:a});else if((!c||c===3)&&n===d&&(!u||i[a+1]===d&&i[a+2]===d)){if(u){if(i[a+3]===d)a++;if(i[a+3]===d)a++}return[c?r:r+i.slice(t,a),a+(u?3:1)]}else if(!c){if(!e&&n==="\\")r+=i.slice(t,t=a),c=1}else if(c===1)if(n==="x"||n==="u"||n==="U"){let p=0,l=n==="x"?2:n==="u"?4:8;for(let x=0;x<l;x++,a++){let w=i.charCodeAt(a+1),y=w>=48&&w<=57?w-48:w>=65&&w<=70?w-65+10:w>=97&&w<=102?w-97+10:-1;if(y<0)throw new G("invalid non-hex character in unicode escape",{toml:i,ptr:a+1});p=p<<4|y}if(p<0||p>1114111||p>=55296&&p<=57343)throw new G("invalid unicode escape",{toml:i,ptr:a});r+=String.fromCodePoint(p),t=a+1,c=0}else if(n===" "||n==="\t")c=2;else{if(n==="b")r+="\b";else if(n==="t")r+="\t";else if(n==="n")r+=`
64
- `;else if(n==="f")r+="\f";else if(n==="r")r+="\r";else if(n==="e")r+="\x1B";else if(n==='"')r+='"';else if(n==="\\")r+="\\";else throw new G("unrecognized escape sequence",{toml:i,ptr:a});t=a+1,c=0}else if(n!==" "&&n!=="\t"){if(c===2)throw new G("invalid escape: only line-ending whitespace may be escaped",{toml:i,ptr:t});c=!e&&n==="\\"?1:0,t=a}throw new G("unfinished string",{toml:i,ptr:o})}function qe(i,o,n,d){if(i==="true")return!0;if(i==="false")return!1;if(i==="-inf")return-1/0;if(i==="inf"||i==="+inf")return 1/0;if(i==="nan"||i==="+nan"||i==="-nan")return NaN;if(i==="-0")return d?0n:0;let e=vc.test(i);if(e||fc.test(i)){if(hc.test(i))throw new G("leading zeroes are not allowed",{toml:o,ptr:n});i=i.replace(/_/g,"");let r=+i;if(isNaN(r))throw new G("invalid number",{toml:o,ptr:n});if(e){if((e=!Number.isSafeInteger(r))&&!d)throw new G("integer value cannot be represented losslessly",{toml:o,ptr:n});if(e||d===!0)r=BigInt(i)}return r}let u=new Ai(i);if(!u.isValid())throw new G("invalid value",{toml:o,ptr:n});return u}var vc,fc,hc;var Sd=N(()=>{Gd();ji();/*!
61
+ `)o+=2}let r="",t=o,c=0;for(let p=o;p<i.length;p++)if(n=i[p],e&&(n===`
62
+ `||n==="\r"&&i[p+1]===`
63
+ `))c=c&&3;else if(n<" "&&n!=="\t"||n==="\x7F")throw new G("control characters are not allowed in strings",{toml:i,ptr:p});else if((!c||c===3)&&n===d&&(!e||i[p+1]===d&&i[p+2]===d)){if(e){if(i[p+3]===d)p++;if(i[p+3]===d)p++}return[c?r:r+i.slice(t,p),p+(e?3:1)]}else if(!c){if(!u&&n==="\\")r+=i.slice(t,t=p),c=1}else if(c===1)if(n==="x"||n==="u"||n==="U"){let a=0,l=n==="x"?2:n==="u"?4:8;for(let x=0;x<l;x++,p++){let w=i.charCodeAt(p+1),y=w>=48&&w<=57?w-48:w>=65&&w<=70?w-65+10:w>=97&&w<=102?w-97+10:-1;if(y<0)throw new G("invalid non-hex character in unicode escape",{toml:i,ptr:p+1});a=a<<4|y}if(a<0||a>1114111||a>=55296&&a<=57343)throw new G("invalid unicode escape",{toml:i,ptr:p});r+=String.fromCodePoint(a),t=p+1,c=0}else if(n===" "||n==="\t")c=2;else{if(n==="b")r+="\b";else if(n==="t")r+="\t";else if(n==="n")r+=`
64
+ `;else if(n==="f")r+="\f";else if(n==="r")r+="\r";else if(n==="e")r+="\x1B";else if(n==='"')r+='"';else if(n==="\\")r+="\\";else throw new G("unrecognized escape sequence",{toml:i,ptr:p});t=p+1,c=0}else if(n!==" "&&n!=="\t"){if(c===2)throw new G("invalid escape: only line-ending whitespace may be escaped",{toml:i,ptr:t});c=!u&&n==="\\"?1:0,t=p}throw new G("unfinished string",{toml:i,ptr:o})}function Iu(i,o,n,d){if(i==="true")return!0;if(i==="false")return!1;if(i==="-inf")return-1/0;if(i==="inf"||i==="+inf")return 1/0;if(i==="nan"||i==="+nan"||i==="-nan")return NaN;if(i==="-0")return d?0n:0;let u=wc.test(i);if(u||yc.test(i)){if(vc.test(i))throw new G("leading zeroes are not allowed",{toml:o,ptr:n});i=i.replace(/_/g,"");let r=+i;if(isNaN(r))throw new G("invalid number",{toml:o,ptr:n});if(u){if((u=!Number.isSafeInteger(r))&&!d)throw new G("integer value cannot be represented losslessly",{toml:o,ptr:n});if(u||d===!0)r=BigInt(i)}return r}let e=new Ai(i);if(!e.isValid())throw new G("invalid value",{toml:o,ptr:n});return e}var wc,yc,vc;var Q0=N(()=>{C0();io();/*!
65
65
  * Copyright (c) Squirrel Chat et al., All rights reserved.
66
66
  * SPDX-License-Identifier: BSD-3-Clause
67
67
  *
@@ -87,14 +87,14 @@ ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i
87
87
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
88
88
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
89
89
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
90
- */vc=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,fc=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,hc=/^[+-]?0[0-9_]/});function $n(i,o=0,n=i.length){let d=i.indexOf(`
91
- `,o);if(i[d-1]==="\r")d--;return d<=n?d:-1}function so(i,o){for(let n=o;n<i.length;n++){let d=i[n];if(d===`
90
+ */wc=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,yc=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,vc=/^[+-]?0[0-9_]/});function Mn(i,o=0,n=i.length){let d=i.indexOf(`
91
+ `,o);if(i[d-1]==="\r")d--;return d<=n?d:-1}function vo(i,o){for(let n=o;n<i.length;n++){let d=i[n];if(d===`
92
92
  `)return n;if(d==="\r"&&i[n+1]===`
93
- `)return n+1;if(d<" "&&d!=="\t"||d==="\x7F")throw new G("control characters are not allowed in comments",{toml:i,ptr:o})}return i.length}function Li(i,o,n,d){let e;while(!0){while((e=i[o])===" "||e==="\t"||!n&&(e===`
94
- `||e==="\r"&&i[o+1]===`
95
- `))o++;if(d||e!=="#")break;o=so(i,o)}return o}function Oe(i,o,n,d,e=!1){if(!d)return o=$n(i,o),o<0?i.length:o;for(let u=o;u<i.length;u++){let r=i[u];if(r==="#")u=$n(i,u);else if(r===n)return u+1;else if(r===d||e&&(r===`
96
- `||r==="\r"&&i[u+1]===`
97
- `))return u}throw new G("cannot find end of structure",{toml:i,ptr:o})}var Mn=N(()=>{ji();/*!
93
+ `)return n+1;if(d<" "&&d!=="\t"||d==="\x7F")throw new G("control characters are not allowed in comments",{toml:i,ptr:o})}return i.length}function Ni(i,o,n,d){let u;while(!0){while((u=i[o])===" "||u==="\t"||!n&&(u===`
94
+ `||u==="\r"&&i[o+1]===`
95
+ `))o++;if(d||u!=="#")break;o=vo(i,o)}return o}function Ou(i,o,n,d,u=!1){if(!d)return o=Mn(i,o),o<0?i.length:o;for(let e=o;e<i.length;e++){let r=i[e];if(r==="#")e=Mn(i,e);else if(r===n)return e+1;else if(r===d||u&&(r===`
96
+ `||r==="\r"&&i[e+1]===`
97
+ `))return e}throw new G("cannot find end of structure",{toml:i,ptr:o})}var Gn=N(()=>{io();/*!
98
98
  * Copyright (c) Squirrel Chat et al., All rights reserved.
99
99
  * SPDX-License-Identifier: BSD-3-Clause
100
100
  *
@@ -120,8 +120,8 @@ ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i
120
120
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
121
121
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
122
122
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
123
- */});function bc(i,o,n){let d=i.slice(o,n),e=d.indexOf("#");if(e>-1)so(i,e),d=d.slice(0,e);return[d.trimEnd(),e]}function Zo(i,o,n,d,e){if(d===0)throw new G("document contains excessively nested structures. aborting.",{toml:i,ptr:o});let u=i[o];if(u==="["||u==="{"){let[c,a]=u==="["?Je(i,o,d,e):Re(i,o,d,e);if(n){if(a=Li(i,a),i[a]===",")a++;else if(i[a]!==n)throw new G("expected comma or end of structure",{toml:i,ptr:a})}return[c,a]}if(u==='"'||u==="'"){let[c,a]=gn(i,o);if(n){if(a=Li(i,a),i[a]&&i[a]!==","&&i[a]!==n&&i[a]!==`
124
- `&&i[a]!=="\r")throw new G("unexpected character encountered",{toml:i,ptr:a});if(i[a]===",")a++}return[c,a]}let r=Oe(i,o,",",n),t=bc(i,o,r-(i[r-1]===","?1:0));if(!t[0])throw new G("incomplete key-value declaration: no value specified",{toml:i,ptr:o});if(n&&t[1]>-1){if(r=Li(i,o+t[1]),i[r]===",")r++}return[qe(t[0],i,o,e),r]}var Pd=N(()=>{Sd();Cd();Mn();ji();/*!
123
+ */});function fc(i,o,n){let d=i.slice(o,n),u=d.indexOf("#");if(u>-1)vo(i,u),d=d.slice(0,u);return[d.trimEnd(),u]}function Ko(i,o,n,d,u){if(d===0)throw new G("document contains excessively nested structures. aborting.",{toml:i,ptr:o});let e=i[o];if(e==="["||e==="{"){let[c,p]=e==="["?Ru(i,o,d,u):Ju(i,o,d,u);if(n){if(p=Ni(i,p),i[p]===",")p++;else if(i[p]!==n)throw new G("expected comma or end of structure",{toml:i,ptr:p})}return[c,p]}if(e==='"'||e==="'"){let[c,p]=$n(i,o);if(n){if(p=Ni(i,p),i[p]&&i[p]!==","&&i[p]!==n&&i[p]!==`
124
+ `&&i[p]!=="\r")throw new G("unexpected character encountered",{toml:i,ptr:p});if(i[p]===",")p++}return[c,p]}let r=Ou(i,o,",",n),t=fc(i,o,r-(i[r-1]===","?1:0));if(!t[0])throw new G("incomplete key-value declaration: no value specified",{toml:i,ptr:o});if(n&&t[1]>-1){if(r=Ni(i,o+t[1]),i[r]===",")r++}return[Iu(t[0],i,o,u),r]}var q0=N(()=>{Q0();I0();Gn();io();/*!
125
125
  * Copyright (c) Squirrel Chat et al., All rights reserved.
126
126
  * SPDX-License-Identifier: BSD-3-Clause
127
127
  *
@@ -147,9 +147,9 @@ ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i
147
147
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
148
148
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
149
149
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
150
- */});function Gn(i,o,n="="){let d=o-1,e=[],u=i.indexOf(n,o);if(u<0)throw new G("incomplete key-value: cannot find end of key",{toml:i,ptr:o});do{let r=i[o=++d];if(r!==" "&&r!=="\t")if(r==='"'||r==="'"){if(r===i[o+1]&&r===i[o+2])throw new G("multiline strings are not allowed in keys",{toml:i,ptr:o});let[t,c]=gn(i,o);d=i.indexOf(".",c);let a=i.slice(c,d<0||d>u?u:d),p=$n(a);if(p>-1)throw new G("newlines are not allowed in keys",{toml:i,ptr:o+d+p});if(a.trimStart())throw new G("found extra tokens after the string part",{toml:i,ptr:c});if(u<c){if(u=i.indexOf(n,c),u<0)throw new G("incomplete key-value: cannot find end of key",{toml:i,ptr:o})}e.push(t)}else{d=i.indexOf(".",o);let t=i.slice(o,d<0||d>u?u:d);if(!Lc.test(t))throw new G("only letter, numbers, dashes and underscores are allowed in keys",{toml:i,ptr:o});e.push(t.trimEnd())}}while(d+1&&d<u);return[e,Li(i,u+1,!0,!0)]}function Re(i,o,n,d){let e={},u=new Set,r;o++;while((r=i[o++])!=="}"&&r)if(r===",")throw new G("expected value, found comma",{toml:i,ptr:o-1});else if(r==="#")o=so(i,o);else if(r!==" "&&r!=="\t"&&r!==`
151
- `&&r!=="\r"){let t,c=e,a=!1,[p,l]=Gn(i,o-1);for(let y=0;y<p.length;y++){if(y)c=a?c[t]:c[t]={};if(t=p[y],(a=Object.hasOwn(c,t))&&(typeof c[t]!=="object"||u.has(c[t])))throw new G("trying to redefine an already defined value",{toml:i,ptr:o});if(!a&&t==="__proto__")Object.defineProperty(c,t,{enumerable:!0,configurable:!0,writable:!0})}if(a)throw new G("trying to redefine an already defined value",{toml:i,ptr:o});let[x,w]=Zo(i,l,"}",n-1,d);u.add(x),c[t]=x,o=w}if(!r)throw new G("unfinished table encountered",{toml:i,ptr:o});return[e,o]}function Je(i,o,n,d){let e=[],u;o++;while((u=i[o++])!=="]"&&u)if(u===",")throw new G("expected value, found comma",{toml:i,ptr:o-1});else if(u==="#")o=so(i,o);else if(u!==" "&&u!=="\t"&&u!==`
152
- `&&u!=="\r"){let r=Zo(i,o-1,"]",n-1,d);e.push(r[0]),o=r[1]}if(!u)throw new G("unfinished array encountered",{toml:i,ptr:o});return[e,o]}var Lc;var Cd=N(()=>{Sd();Pd();Mn();ji();/*!
150
+ */});function Sn(i,o,n="="){let d=o-1,u=[],e=i.indexOf(n,o);if(e<0)throw new G("incomplete key-value: cannot find end of key",{toml:i,ptr:o});do{let r=i[o=++d];if(r!==" "&&r!=="\t")if(r==='"'||r==="'"){if(r===i[o+1]&&r===i[o+2])throw new G("multiline strings are not allowed in keys",{toml:i,ptr:o});let[t,c]=$n(i,o);d=i.indexOf(".",c);let p=i.slice(c,d<0||d>e?e:d),a=Mn(p);if(a>-1)throw new G("newlines are not allowed in keys",{toml:i,ptr:o+d+a});if(p.trimStart())throw new G("found extra tokens after the string part",{toml:i,ptr:c});if(e<c){if(e=i.indexOf(n,c),e<0)throw new G("incomplete key-value: cannot find end of key",{toml:i,ptr:o})}u.push(t)}else{d=i.indexOf(".",o);let t=i.slice(o,d<0||d>e?e:d);if(!hc.test(t))throw new G("only letter, numbers, dashes and underscores are allowed in keys",{toml:i,ptr:o});u.push(t.trimEnd())}}while(d+1&&d<e);return[u,Ni(i,e+1,!0,!0)]}function Ju(i,o,n,d){let u={},e=new Set,r;o++;while((r=i[o++])!=="}"&&r)if(r===",")throw new G("expected value, found comma",{toml:i,ptr:o-1});else if(r==="#")o=vo(i,o);else if(r!==" "&&r!=="\t"&&r!==`
151
+ `&&r!=="\r"){let t,c=u,p=!1,[a,l]=Sn(i,o-1);for(let y=0;y<a.length;y++){if(y)c=p?c[t]:c[t]={};if(t=a[y],(p=Object.hasOwn(c,t))&&(typeof c[t]!=="object"||e.has(c[t])))throw new G("trying to redefine an already defined value",{toml:i,ptr:o});if(!p&&t==="__proto__")Object.defineProperty(c,t,{enumerable:!0,configurable:!0,writable:!0})}if(p)throw new G("trying to redefine an already defined value",{toml:i,ptr:o});let[x,w]=Ko(i,l,"}",n-1,d);e.add(x),c[t]=x,o=w}if(!r)throw new G("unfinished table encountered",{toml:i,ptr:o});return[u,o]}function Ru(i,o,n,d){let u=[],e;o++;while((e=i[o++])!=="]"&&e)if(e===",")throw new G("expected value, found comma",{toml:i,ptr:o-1});else if(e==="#")o=vo(i,o);else if(e!==" "&&e!=="\t"&&e!==`
152
+ `&&e!=="\r"){let r=Ko(i,o-1,"]",n-1,d);u.push(r[0]),o=r[1]}if(!e)throw new G("unfinished array encountered",{toml:i,ptr:o});return[u,o]}var hc;var I0=N(()=>{Q0();q0();Gn();io();/*!
153
153
  * Copyright (c) Squirrel Chat et al., All rights reserved.
154
154
  * SPDX-License-Identifier: BSD-3-Clause
155
155
  *
@@ -175,8 +175,8 @@ ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i
175
175
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
176
176
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
177
177
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
178
- */Lc=/^[a-zA-Z0-9-_]+[ \t]*$/});function Be(i,o,n,d){let e=o,u=n,r,t=!1,c;for(let a=0;a<i.length;a++){if(a){if(e=t?e[r]:e[r]={},u=(c=u[r]).c,d===0&&(c.t===1||c.t===2))return null;if(c.t===2){let p=e.length-1;e=e[p],u=u[p].c}}if(r=i[a],(t=Object.hasOwn(e,r))&&u[r]?.t===0&&u[r]?.d)return null;if(!t){if(r==="__proto__")Object.defineProperty(e,r,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(u,r,{enumerable:!0,configurable:!0,writable:!0});u[r]={t:a<i.length-1&&d===2?3:d,d:!1,i:0,c:{}}}}if(c=u[r],c.t!==d&&!(d===1&&c.t===3))return null;if(d===2){if(!c.d)c.d=!0,e[r]=[];e[r].push(e={}),c.c[c.i++]=c={t:1,d:!1,i:0,c:{}}}if(c.d)return null;if(c.d=!0,d===1)e=t?e[r]:e[r]={};else if(d===0&&t)return null;return[r,e,c.c]}function Id(i,{maxDepth:o=1000,integersAsBigInt:n}={}){let d={},e={},u=d,r=e;for(let t=Li(i,0);t<i.length;){if(i[t]==="["){let c=i[++t]==="[",a=Gn(i,t+=+c,"]");if(c){if(i[a[1]-1]!=="]")throw new G("expected end of table declaration",{toml:i,ptr:a[1]-1});a[1]++}let p=Be(a[0],d,e,c?2:1);if(!p)throw new G("trying to redefine an already defined table or value",{toml:i,ptr:t});r=p[2],u=p[1],t=a[1]}else{let c=Gn(i,t),a=Be(c[0],u,r,0);if(!a)throw new G("trying to redefine an already defined table or value",{toml:i,ptr:t});let p=Zo(i,c[1],void 0,o,n);a[1][a[0]]=p[0],t=p[1]}if(t=Li(i,t,!0),i[t]&&i[t]!==`
179
- `&&i[t]!=="\r")throw new G("each key-value declaration must be followed by an end-of-line",{toml:i,ptr:t});t=Li(i,t)}return d}var Ye=N(()=>{Cd();Pd();Mn();ji();/*!
178
+ */hc=/^[a-zA-Z0-9-_]+[ \t]*$/});function Bu(i,o,n,d){let u=o,e=n,r,t=!1,c;for(let p=0;p<i.length;p++){if(p){if(u=t?u[r]:u[r]={},e=(c=e[r]).c,d===0&&(c.t===1||c.t===2))return null;if(c.t===2){let a=u.length-1;u=u[a],e=e[a].c}}if(r=i[p],(t=Object.hasOwn(u,r))&&e[r]?.t===0&&e[r]?.d)return null;if(!t){if(r==="__proto__")Object.defineProperty(u,r,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(e,r,{enumerable:!0,configurable:!0,writable:!0});e[r]={t:p<i.length-1&&d===2?3:d,d:!1,i:0,c:{}}}}if(c=e[r],c.t!==d&&!(d===1&&c.t===3))return null;if(d===2){if(!c.d)c.d=!0,u[r]=[];u[r].push(u={}),c.c[c.i++]=c={t:1,d:!1,i:0,c:{}}}if(c.d)return null;if(c.d=!0,d===1)u=t?u[r]:u[r]={};else if(d===0&&t)return null;return[r,u,c.c]}function O0(i,{maxDepth:o=1000,integersAsBigInt:n}={}){let d={},u={},e=d,r=u;for(let t=Ni(i,0);t<i.length;){if(i[t]==="["){let c=i[++t]==="[",p=Sn(i,t+=+c,"]");if(c){if(i[p[1]-1]!=="]")throw new G("expected end of table declaration",{toml:i,ptr:p[1]-1});p[1]++}let a=Bu(p[0],d,u,c?2:1);if(!a)throw new G("trying to redefine an already defined table or value",{toml:i,ptr:t});r=a[2],e=a[1],t=p[1]}else{let c=Sn(i,t),p=Bu(c[0],e,r,0);if(!p)throw new G("trying to redefine an already defined table or value",{toml:i,ptr:t});let a=Ko(i,c[1],void 0,o,n);p[1][p[0]]=a[0],t=a[1]}if(t=Ni(i,t,!0),i[t]&&i[t]!==`
179
+ `&&i[t]!=="\r")throw new G("each key-value declaration must be followed by an end-of-line",{toml:i,ptr:t});t=Ni(i,t)}return d}var Yu=N(()=>{I0();q0();Gn();io();/*!
180
180
  * Copyright (c) Squirrel Chat et al., All rights reserved.
181
181
  * SPDX-License-Identifier: BSD-3-Clause
182
182
  *
@@ -202,16 +202,16 @@ ${e}`,o);this.line=n,this.column=d,this.codeblock=e}}});function gn(i,o){let n=i
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 Ko(i){let o=typeof i;if(o==="object"){if(Array.isArray(i))return"array";if(i instanceof Date)return"date"}return o}function Nc(i){for(let o=0;o<i.length;o++)if(Ko(i[o])!=="object")return!1;return i.length!=0}function Qd(i){return JSON.stringify(i).replace(/\x7f/g,"\\u007f")}function qd(i,o,n,d){if(n===0)throw Error("Could not stringify the object: maximum object depth exceeded");if(o==="number"){if(isNaN(i))return"nan";if(i===1/0)return"inf";if(i===-1/0)return"-inf";if(Number.isInteger(i)&&(d||!Number.isSafeInteger(i)))return i.toFixed(1);return i.toString()}if(o==="bigint"||o==="boolean")return i.toString();if(o==="string")return Qd(i);if(o==="date"){if(isNaN(i.getTime()))throw TypeError("cannot serialize invalid date");return i.toISOString()}if(o==="object")return Wc(i,n,d);if(o==="array")return kc(i,n,d)}function Wc(i,o,n){let d=Object.keys(i);if(d.length===0)return"{}";let e="{ ";for(let u=0;u<d.length;u++){let r=d[u];if(u)e+=", ";e+=Ae.test(r)?r:Qd(r),e+=" = ",e+=qd(i[r],Ko(i[r]),o-1,n)}return e+" }"}function kc(i,o,n){if(i.length===0)return"[]";let d="[ ";for(let e=0;e<i.length;e++){if(e)d+=", ";if(i[e]===null||i[e]===void 0)throw TypeError("arrays cannot contain null or undefined values");d+=qd(i[e],Ko(i[e]),o-1,n)}return d+" ]"}function zc(i,o,n,d){if(n===0)throw Error("Could not stringify the object: maximum object depth exceeded");let e="";for(let u=0;u<i.length;u++)e+=`${e&&`
205
+ */});function Vo(i){let o=typeof i;if(o==="object"){if(Array.isArray(i))return"array";if(i instanceof Date)return"date"}return o}function bc(i){for(let o=0;o<i.length;o++)if(Vo(i[o])!=="object")return!1;return i.length!=0}function J0(i){return JSON.stringify(i).replace(/\x7f/g,"\\u007f")}function R0(i,o,n,d){if(n===0)throw Error("Could not stringify the object: maximum object depth exceeded");if(o==="number"){if(isNaN(i))return"nan";if(i===1/0)return"inf";if(i===-1/0)return"-inf";if(Number.isInteger(i)&&(d||!Number.isSafeInteger(i)))return i.toFixed(1);return i.toString()}if(o==="bigint"||o==="boolean")return i.toString();if(o==="string")return J0(i);if(o==="date"){if(isNaN(i.getTime()))throw TypeError("cannot serialize invalid date");return i.toISOString()}if(o==="object")return Lc(i,n,d);if(o==="array")return Wc(i,n,d)}function Lc(i,o,n){let d=Object.keys(i);if(d.length===0)return"{}";let u="{ ";for(let e=0;e<d.length;e++){let r=d[e];if(e)u+=", ";u+=Au.test(r)?r:J0(r),u+=" = ",u+=R0(i[r],Vo(i[r]),o-1,n)}return u+" }"}function Wc(i,o,n){if(i.length===0)return"[]";let d="[ ";for(let u=0;u<i.length;u++){if(u)d+=", ";if(i[u]===null||i[u]===void 0)throw TypeError("arrays cannot contain null or undefined values");d+=R0(i[u],Vo(i[u]),o-1,n)}return d+" ]"}function Nc(i,o,n,d){if(n===0)throw Error("Could not stringify the object: maximum object depth exceeded");let u="";for(let e=0;e<i.length;e++)u+=`${u&&`
206
206
  `}[[${o}]]
207
- `,e+=Od(0,i[u],o,n,d);return e}function Od(i,o,n,d,e){if(d===0)throw Error("Could not stringify the object: maximum object depth exceeded");let u="",r="",t=Object.keys(o);for(let c=0;c<t.length;c++){let a=t[c];if(o[a]!==null&&o[a]!==void 0){let p=Ko(o[a]);if(p==="symbol"||p==="function")throw TypeError(`cannot serialize values of type '${p}'`);let l=Ae.test(a)?a:Qd(a);if(p==="array"&&Nc(o[a]))r+=(r&&`
208
- `)+zc(o[a],n?`${n}.${l}`:l,d-1,e);else if(p==="object"){let x=n?`${n}.${l}`:l;r+=(r&&`
209
- `)+Od(x,o[a],x,d-1,e)}else u+=l,u+=" = ",u+=qd(o[a],p,d,e),u+=`
210
- `}}if(i&&(u||!r))u=u?`[${i}]
211
- ${u}`:`[${i}]`;return u&&r?`${u}
212
- ${r}`:u||r}function Rd(i,{maxDepth:o=1000,numbersAsFloat:n=!1}={}){if(Ko(i)!=="object")throw TypeError("stringify can only be called with an object");let d=Od(0,i,"",o,n);if(d[d.length-1]!==`
207
+ `,u+=B0(0,i[e],o,n,d);return u}function B0(i,o,n,d,u){if(d===0)throw Error("Could not stringify the object: maximum object depth exceeded");let e="",r="",t=Object.keys(o);for(let c=0;c<t.length;c++){let p=t[c];if(o[p]!==null&&o[p]!==void 0){let a=Vo(o[p]);if(a==="symbol"||a==="function")throw TypeError(`cannot serialize values of type '${a}'`);let l=Au.test(p)?p:J0(p);if(a==="array"&&bc(o[p]))r+=(r&&`
208
+ `)+Nc(o[p],n?`${n}.${l}`:l,d-1,u);else if(a==="object"){let x=n?`${n}.${l}`:l;r+=(r&&`
209
+ `)+B0(x,o[p],x,d-1,u)}else e+=l,e+=" = ",e+=R0(o[p],a,d,u),e+=`
210
+ `}}if(i&&(e||!r))e=e?`[${i}]
211
+ ${e}`:`[${i}]`;return e&&r?`${e}
212
+ ${r}`:e||r}function Y0(i,{maxDepth:o=1000,numbersAsFloat:n=!1}={}){if(Vo(i)!=="object")throw TypeError("stringify can only be called with an object");let d=B0(0,i,"",o,n);if(d[d.length-1]!==`
213
213
  `)return d+`
214
- `;return d}var Ae;var Xe=N(()=>{/*!
214
+ `;return d}var Au;var Xu=N(()=>{/*!
215
215
  * Copyright (c) Squirrel Chat et al., All rights reserved.
216
216
  * SPDX-License-Identifier: BSD-3-Clause
217
217
  *
@@ -237,7 +237,7 @@ ${r}`:u||r}function Rd(i,{maxDepth:o=1000,numbersAsFloat:n=!1}={}){if(Ko(i)!=="o
237
237
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
238
238
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
239
239
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
240
- */Ae=/^[a-z0-9-_]+$/i});var He=N(()=>{Ye();Xe();Gd();ji();/*!
240
+ */Au=/^[a-z0-9-_]+$/i});var Hu=N(()=>{Yu();Xu();C0();io();/*!
241
241
  * Copyright (c) Squirrel Chat et al., All rights reserved.
242
242
  * SPDX-License-Identifier: BSD-3-Clause
243
243
  *
@@ -263,64 +263,64 @@ ${r}`:u||r}function Rd(i,{maxDepth:o=1000,numbersAsFloat:n=!1}={}){if(Ko(i)!=="o
263
263
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
264
264
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265
265
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
266
- */});function gc(i){let o=[];for(let[n,d]of Object.entries(i)){if(!d?.models)continue;for(let[e,u]of Object.entries(d.models)){let r=u?.limit?.context;if(typeof r!=="number"||r<=0)continue;o.push({id:e,displayName:u.name||e,provider:n,contextWindow:r,outputLimit:typeof u.limit?.output==="number"?u.limit.output:void 0})}}return o}async function Ze(){let i=await fetch("https://models.dev/api.json",{signal:AbortSignal.timeout(1e4)});if(!i.ok)throw Error(`models.dev http ${i.status}`);let o=await i.json();return gc(o)}var ci;var Sn=N(()=>{ci=[{id:"claude-3-sonnet-20240229",displayName:"Claude Sonnet 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-haiku-4-5",displayName:"Claude Haiku 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-5-20251101",displayName:"Claude Opus 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-opus-20240229",displayName:"Claude Opus 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-3-5-haiku-20241022",displayName:"Claude Haiku 3.5",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-3-5-sonnet-20241022",displayName:"Claude Sonnet 3.5 v2",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-sonnet-4-6",displayName:"Claude Sonnet 4.6",provider:"anthropic",contextWindow:1e6,outputLimit:64000},{id:"claude-opus-4-0",displayName:"Claude Opus 4 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-opus-4-7",displayName:"Claude Opus 4.7",provider:"anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-3-haiku-20240307",displayName:"Claude Haiku 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-sonnet-4-5-20250929",displayName:"Claude Sonnet 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-haiku-latest",displayName:"Claude Haiku 3.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-1",displayName:"Claude Opus 4.1 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-sonnet-4-0",displayName:"Claude Sonnet 4 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-sonnet-20240620",displayName:"Claude Sonnet 3.5",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-5",displayName:"Claude Opus 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-haiku-4-5-20251001",displayName:"Claude Haiku 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-6",displayName:"Claude Opus 4.6",provider:"anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-3-7-sonnet-20250219",displayName:"Claude Sonnet 3.7",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-5",displayName:"Claude Sonnet 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-20250514",displayName:"Claude Opus 4",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"gpt-5.1-codex-max",displayName:"GPT-5.1 Codex Max",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4o-2024-05-13",displayName:"GPT-4o (2024-05-13)",provider:"openai",contextWindow:128000,outputLimit:4096},{id:"o1-mini",displayName:"o1-mini",provider:"openai",contextWindow:128000,outputLimit:65536},{id:"gpt-5.2-pro",displayName:"GPT-5.2 Pro",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"text-embedding-3-large",displayName:"text-embedding-3-large",provider:"openai",contextWindow:8191,outputLimit:3072},{id:"gpt-5.3-chat-latest",displayName:"GPT-5.3 Chat (latest)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.5",displayName:"GPT-5.5",provider:"openai",contextWindow:1050000,outputLimit:130000},{id:"gpt-5-mini",displayName:"GPT-5 Mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5-nano",displayName:"GPT-5 Nano",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.3-codex",displayName:"GPT-5.3 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4-turbo",displayName:"GPT-4 Turbo",provider:"openai",contextWindow:128000,outputLimit:4096},{id:"text-embedding-ada-002",displayName:"text-embedding-ada-002",provider:"openai",contextWindow:8192,outputLimit:1536},{id:"gpt-5.2",displayName:"GPT-5.2",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o3-pro",displayName:"o3-pro",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-4o-mini",displayName:"GPT-4o mini",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"o4-mini-deep-research",displayName:"o4-mini-deep-research",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-mini",displayName:"GPT-5.4 mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o4-mini",displayName:"o4-mini",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-nano",displayName:"GPT-5.4 nano",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.2-codex",displayName:"GPT-5.2 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.2-chat-latest",displayName:"GPT-5.2 Chat",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.1-codex-mini",displayName:"GPT-5.1 Codex mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o1-preview",displayName:"o1-preview",provider:"openai",contextWindow:128000,outputLimit:32768},{id:"gpt-4o-2024-08-06",displayName:"GPT-4o (2024-08-06)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.1",displayName:"GPT-5.1",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o1",displayName:"o1",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-pro",displayName:"GPT-5.4 Pro",provider:"openai",contextWindow:1050000,outputLimit:128000},{id:"gpt-3.5-turbo",displayName:"GPT-3.5-turbo",provider:"openai",contextWindow:16385,outputLimit:4096},{id:"o3-deep-research",displayName:"o3-deep-research",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"o3-mini",displayName:"o3-mini",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"text-embedding-3-small",displayName:"text-embedding-3-small",provider:"openai",contextWindow:8191,outputLimit:1536},{id:"o1-pro",displayName:"o1-pro",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-4",displayName:"GPT-4",provider:"openai",contextWindow:8192,outputLimit:8192},{id:"gpt-5-codex",displayName:"GPT-5-Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.4",displayName:"GPT-5.4",provider:"openai",contextWindow:1050000,outputLimit:128000},{id:"gpt-5.1-chat-latest",displayName:"GPT-5.1 Chat",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.3-codex-spark",displayName:"GPT-5.3 Codex Spark",provider:"openai",contextWindow:128000,outputLimit:32000},{id:"gpt-4.1-nano",displayName:"GPT-4.1 nano",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"o3",displayName:"o3",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5-pro",displayName:"GPT-5 Pro",provider:"openai",contextWindow:400000,outputLimit:272000},{id:"gpt-4o",displayName:"GPT-4o",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5",displayName:"GPT-5",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5-chat-latest",displayName:"GPT-5 Chat (latest)",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4.1",displayName:"GPT-4.1",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"gpt-4.1-mini",displayName:"GPT-4.1 mini",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"gpt-5.1-codex",displayName:"GPT-5.1 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4o-2024-11-20",displayName:"GPT-4o (2024-11-20)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gemini-flash-lite-latest",displayName:"Gemini Flash-Lite Latest",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-live-2.5-flash-preview-native-audio",displayName:"Gemini Live 2.5 Flash Preview Native Audio",provider:"google",contextWindow:131072,outputLimit:65536},{id:"gemini-3.1-pro-preview-customtools",displayName:"Gemini 3.1 Pro Preview Custom Tools",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-lite-preview-09-2025",displayName:"Gemini 2.5 Flash Lite Preview 09-25",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemma-3n-e4b-it",displayName:"Gemma 3n 4B",provider:"google",contextWindow:8192,outputLimit:2000},{id:"gemini-3.1-flash-lite-preview",displayName:"Gemini 3.1 Flash Lite Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-3.1-pro-preview",displayName:"Gemini 3.1 Pro Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",provider:"google",contextWindow:1048576,outputLimit:8192},{id:"gemini-3-flash-preview",displayName:"Gemini 3 Flash Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-preview-tts",displayName:"Gemini 2.5 Flash Preview TTS",provider:"google",contextWindow:8000,outputLimit:16000},{id:"gemini-3-pro-preview",displayName:"Gemini 3 Pro Preview",provider:"google",contextWindow:1e6,outputLimit:64000},{id:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-embedding-001",displayName:"Gemini Embedding 001",provider:"google",contextWindow:2048,outputLimit:3072},{id:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-flash-latest",displayName:"Gemini Flash Latest",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-4-31b-it",displayName:"Gemma 4 31B",provider:"google",contextWindow:256000,outputLimit:8192},{id:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-image",displayName:"Gemini 2.5 Flash Image",provider:"google",contextWindow:32768,outputLimit:32768},{id:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3-12b-it",displayName:"Gemma 3 12B",provider:"google",contextWindow:32768,outputLimit:8192},{id:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3n-e2b-it",displayName:"Gemma 3n 2B",provider:"google",contextWindow:8192,outputLimit:2000},{id:"gemini-3.1-flash-image-preview",displayName:"Gemini 3.1 Flash Image (Preview)",provider:"google",contextWindow:131072,outputLimit:32768},{id:"gemma-3-4b-it",displayName:"Gemma 3 4B",provider:"google",contextWindow:32768,outputLimit:8192},{id:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-pro-preview-tts",displayName:"Gemini 2.5 Pro Preview TTS",provider:"google",contextWindow:8000,outputLimit:16000},{id:"gemini-2.5-flash-preview-09-2025",displayName:"Gemini 2.5 Flash Preview 09-25",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3-27b-it",displayName:"Gemma 3 27B",provider:"google",contextWindow:131072,outputLimit:8192},{id:"gemma-4-26b-a4b-it",displayName:"Gemma 4 26B",provider:"google",contextWindow:256000,outputLimit:8192},{id:"gemini-2.5-flash-lite",displayName:"Gemini 2.5 Flash Lite",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-image-preview",displayName:"Gemini 2.5 Flash Image (Preview)",provider:"google",contextWindow:32768,outputLimit:32768},{id:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemini-live-2.5-flash",displayName:"Gemini Live 2.5 Flash",provider:"google",contextWindow:128000,outputLimit:8000},{id:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",provider:"google",contextWindow:1048576,outputLimit:8192},{id:"claude-sonnet-4-6@default",displayName:"Claude Sonnet 4.6",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-haiku-4-5@20251001",displayName:"Claude Haiku 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-haiku@20241022",displayName:"Claude Haiku 3.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-3-5-sonnet@20241022",displayName:"Claude Sonnet 3.5 v2",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-1@20250805",displayName:"Claude Opus 4.1",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-sonnet-4@20250514",displayName:"Claude Sonnet 4",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-7-sonnet@20250219",displayName:"Claude Sonnet 3.7",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4@20250514",displayName:"Claude Opus 4",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-opus-4-5@20251101",displayName:"Claude Opus 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-5@20250929",displayName:"Claude Sonnet 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-6@default",displayName:"Claude Opus 4.6",provider:"google-vertex-anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-opus-4-7@default",displayName:"Claude Opus 4.7",provider:"google-vertex-anthropic",contextWindow:1e6,outputLimit:128000},{id:"grok-2-1212",displayName:"Grok 2 (1212)",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-vision-beta",displayName:"Grok Vision Beta",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-3-mini-fast",displayName:"Grok 3 Mini Fast",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-3-mini-latest",displayName:"Grok 3 Mini Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-3-fast",displayName:"Grok 3 Fast",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2-vision-latest",displayName:"Grok 2 Vision Latest",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-4.20-0309-reasoning",displayName:"Grok 4.20 (Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-4-1-fast-non-reasoning",displayName:"Grok 4.1 Fast (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-mini-fast-latest",displayName:"Grok 3 Mini Fast Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4-fast",displayName:"Grok 4 Fast",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-latest",displayName:"Grok 3 Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2",displayName:"Grok 2",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-code-fast-1",displayName:"Grok Code Fast 1",provider:"xai",contextWindow:256000,outputLimit:1e4},{id:"grok-4.20-0309-non-reasoning",displayName:"Grok 4.20 (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-fast-latest",displayName:"Grok 3 Fast Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4.20-multi-agent-0309",displayName:"Grok 4.20 Multi-Agent",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-4",displayName:"Grok 4",provider:"xai",contextWindow:256000,outputLimit:64000},{id:"grok-2-latest",displayName:"Grok 2 Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-beta",displayName:"Grok Beta",provider:"xai",contextWindow:131072,outputLimit:4096},{id:"grok-2-vision",displayName:"Grok 2 Vision",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-4-1-fast",displayName:"Grok 4.1 Fast",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-mini",displayName:"Grok 3 Mini",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2-vision-1212",displayName:"Grok 2 Vision (1212)",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-3",displayName:"Grok 3",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4-fast-non-reasoning",displayName:"Grok 4 Fast (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"deepseek-chat",displayName:"DeepSeek Chat",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-reasoner",displayName:"DeepSeek Reasoner",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-v4-flash",displayName:"DeepSeek V4 Flash",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-v4-pro",displayName:"DeepSeek V4 Pro",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"mimo-v2.5-pro",displayName:"MiMo v2.5 Pro",provider:"xiaomi",contextWindow:1e6,outputLimit:64000},{id:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2.5",displayName:"Kimi K2.5",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-thinking-turbo",displayName:"Kimi K2 Thinking Turbo",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2.6",displayName:"Kimi K2.6",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",provider:"moonshotai",contextWindow:131072,outputLimit:16384},{id:"kimi-k2-thinking",displayName:"Kimi K2 Thinking",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"mistral-small-latest",displayName:"Mistral Small (latest)",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"mistral-nemo",displayName:"Mistral Nemo",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-large-2512",displayName:"Mistral Large 3",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"labs-devstral-small-2512",displayName:"Devstral Small 2",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"devstral-2512",displayName:"Devstral 2",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"magistral-medium-latest",displayName:"Magistral Medium (latest)",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"open-mixtral-8x7b",displayName:"Mixtral 8x7B",provider:"mistral",contextWindow:32000,outputLimit:32000},{id:"pixtral-large-latest",displayName:"Pixtral Large (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-large-2411",displayName:"Mistral Large 2.1",provider:"mistral",contextWindow:131072,outputLimit:16384},{id:"codestral-latest",displayName:"Codestral (latest)",provider:"mistral",contextWindow:256000,outputLimit:4096},{id:"mistral-large-latest",displayName:"Mistral Large (latest)",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"mistral-small-2506",displayName:"Mistral Small 3.2",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"pixtral-12b",displayName:"Pixtral 12B",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"ministral-8b-latest",displayName:"Ministral 8B (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-embed",displayName:"Mistral Embed",provider:"mistral",contextWindow:8000,outputLimit:3072},{id:"magistral-small",displayName:"Magistral Small",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-small-2603",displayName:"Mistral Small 4",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"ministral-3b-latest",displayName:"Ministral 3B (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"open-mixtral-8x22b",displayName:"Mixtral 8x22B",provider:"mistral",contextWindow:64000,outputLimit:64000},{id:"devstral-small-2505",displayName:"Devstral Small 2505",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"devstral-medium-2507",displayName:"Devstral Medium",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-medium-latest",displayName:"Mistral Medium (latest)",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"open-mistral-7b",displayName:"Mistral 7B",provider:"mistral",contextWindow:8000,outputLimit:8000},{id:"devstral-medium-latest",displayName:"Devstral 2 (latest)",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"mistral-medium-2505",displayName:"Mistral Medium 3",provider:"mistral",contextWindow:131072,outputLimit:131072},{id:"devstral-small-2507",displayName:"Devstral Small",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-medium-2508",displayName:"Mistral Medium 3.1",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"qwen3-235b-a22b",displayName:"Qwen3 235B-A22B",provider:"alibaba",contextWindow:131072,outputLimit:16384},{id:"qwen3-coder-plus",displayName:"Qwen3 Coder Plus",provider:"alibaba",contextWindow:1048576,outputLimit:65536},{id:"qwen-vl-ocr",displayName:"Qwen-VL OCR",provider:"alibaba",contextWindow:34096,outputLimit:4096},{id:"qwen-omni-turbo-realtime",displayName:"Qwen-Omni Turbo Realtime",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen3-8b",displayName:"Qwen3 8B",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3.5-397b-a17b",displayName:"Qwen3.5 397B-A17B",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwq-plus",displayName:"QwQ Plus",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen-vl-plus",displayName:"Qwen-VL Plus",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-livetranslate-flash-realtime",displayName:"Qwen3-LiveTranslate Flash Realtime",provider:"alibaba",contextWindow:53248,outputLimit:4096},{id:"qwen3-32b",displayName:"Qwen3 32B",provider:"alibaba",contextWindow:131072,outputLimit:16384},{id:"qwen-max",displayName:"Qwen Max",provider:"alibaba",contextWindow:32768,outputLimit:8192},{id:"qwen-plus",displayName:"Qwen Plus",provider:"alibaba",contextWindow:1e6,outputLimit:32768},{id:"qwen-omni-turbo",displayName:"Qwen-Omni Turbo",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen-flash",displayName:"Qwen Flash",provider:"alibaba",contextWindow:1e6,outputLimit:32768},{id:"qwen2-5-vl-7b-instruct",displayName:"Qwen2.5-VL 7B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3.6-plus",displayName:"Qwen3.6 Plus",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen3-max",displayName:"Qwen3 Max",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen3-omni-flash",displayName:"Qwen3-Omni Flash",provider:"alibaba",contextWindow:65536,outputLimit:16384},{id:"qwen2-5-72b-instruct",displayName:"Qwen2.5 72B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-vl-235b-a22b",displayName:"Qwen3-VL 235B-A22B",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen3-asr-flash",displayName:"Qwen3-ASR Flash",provider:"alibaba",contextWindow:53248,outputLimit:4096},{id:"qwen3-next-80b-a3b-thinking",displayName:"Qwen3-Next 80B-A3B (Thinking)",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen-mt-plus",displayName:"Qwen-MT Plus",provider:"alibaba",contextWindow:16384,outputLimit:8192},{id:"qwen-vl-max",displayName:"Qwen-VL Max",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-coder-flash",displayName:"Qwen3 Coder Flash",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen2-5-7b-instruct",displayName:"Qwen2.5 7B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen2-5-14b-instruct",displayName:"Qwen2.5 14B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen2-5-32b-instruct",displayName:"Qwen2.5 32B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-next-80b-a3b-instruct",displayName:"Qwen3-Next 80B-A3B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen-plus-character-ja",displayName:"Qwen Plus Character (Japanese)",provider:"alibaba",contextWindow:8192,outputLimit:512},{id:"qwen3-omni-flash-realtime",displayName:"Qwen3-Omni Flash Realtime",provider:"alibaba",contextWindow:65536,outputLimit:16384},{id:"qwen3-vl-30b-a3b",displayName:"Qwen3-VL 30B-A3B",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen3-vl-plus",displayName:"Qwen3-VL Plus",provider:"alibaba",contextWindow:262144,outputLimit:32768},{id:"qwen3-coder-480b-a35b-instruct",displayName:"Qwen3-Coder 480B-A35B Instruct",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen3-coder-30b-a3b-instruct",displayName:"Qwen3-Coder 30B-A3B Instruct",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen-turbo",displayName:"Qwen Turbo",provider:"alibaba",contextWindow:1e6,outputLimit:16384},{id:"qwen-mt-turbo",displayName:"Qwen-MT Turbo",provider:"alibaba",contextWindow:16384,outputLimit:8192},{id:"qwen2-5-omni-7b",displayName:"Qwen2.5-Omni 7B",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen3.5-plus",displayName:"Qwen3.5 Plus",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen2-5-vl-72b-instruct",displayName:"Qwen2.5-VL 72B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qvq-max",displayName:"QVQ Max",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-14b",displayName:"Qwen3 14B",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"command-a-reasoning-08-2025",displayName:"Command A Reasoning",provider:"cohere",contextWindow:256000,outputLimit:32000},{id:"command-r7b-12-2024",displayName:"Command R7B",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-vision-8b",displayName:"Aya Vision 8B",provider:"cohere",contextWindow:16000,outputLimit:4000},{id:"command-r-plus-08-2024",displayName:"Command R+",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-expanse-8b",displayName:"Aya Expanse 8B",provider:"cohere",contextWindow:8000,outputLimit:4000},{id:"command-r7b-arabic-02-2025",displayName:"Command R7B Arabic",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"command-a-vision-07-2025",displayName:"Command A Vision",provider:"cohere",contextWindow:128000,outputLimit:8000},{id:"c4ai-aya-vision-32b",displayName:"Aya Vision 32B",provider:"cohere",contextWindow:16000,outputLimit:4000},{id:"command-a-translate-08-2025",displayName:"Command A Translate",provider:"cohere",contextWindow:8000,outputLimit:8000},{id:"command-r-08-2024",displayName:"Command R",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-expanse-32b",displayName:"Aya Expanse 32B",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"command-a-03-2025",displayName:"Command A",provider:"cohere",contextWindow:256000,outputLimit:8000},{id:"anthropic.claude-3-5-sonnet-20241022-v2:0",displayName:"Claude Sonnet 3.5 v2",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"openai.gpt-oss-safeguard-120b",displayName:"GPT OSS Safeguard 120B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-nano-3-30b",displayName:"NVIDIA Nemotron Nano 3 30B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-2-90b-instruct-v1:0",displayName:"Llama 3.2 90B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-super-3-120b",displayName:"NVIDIA Nemotron 3 Super 120B A12B",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"writer.palmyra-x5-v1:0",displayName:"Palmyra X5",provider:"amazon-bedrock",contextWindow:1040000,outputLimit:8192},{id:"mistral.ministral-3-8b-instruct",displayName:"Ministral 3 8B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"au.anthropic.claude-opus-4-6-v1",displayName:"AU Anthropic Claude Opus 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"mistral.ministral-3-3b-instruct",displayName:"Ministral 3 3B",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"amazon.nova-premier-v1:0",displayName:"Nova Premier",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:16384},{id:"anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.devstral-2-123b",displayName:"Devstral 2 123B",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"global.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.voxtral-small-24b-2507",displayName:"Voxtral Small 24B 2507",provider:"amazon-bedrock",contextWindow:32000,outputLimit:8192},{id:"google.gemma-3-12b-it",displayName:"Google Gemma 3 12B",provider:"amazon-bedrock",contextWindow:131072,outputLimit:8192},{id:"amazon.nova-pro-v1:0",displayName:"Nova Pro",provider:"amazon-bedrock",contextWindow:300000,outputLimit:8192},{id:"anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"minimax.minimax-m2",displayName:"MiniMax M2",provider:"amazon-bedrock",contextWindow:204608,outputLimit:128000},{id:"global.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"mistral.pixtral-large-2502-v1:0",displayName:"Pixtral Large (25.02)",provider:"amazon-bedrock",contextWindow:128000,outputLimit:8192},{id:"meta.llama4-maverick-17b-instruct-v1:0",displayName:"Llama 4 Maverick 17B Instruct",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:16384},{id:"us.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"us.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"amazon.nova-micro-v1:0",displayName:"Nova Micro",provider:"amazon-bedrock",contextWindow:128000,outputLimit:8192},{id:"global.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"openai.gpt-oss-20b-1:0",displayName:"gpt-oss-20b",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"zai.glm-5",displayName:"GLM-5",provider:"amazon-bedrock",contextWindow:202752,outputLimit:101376},{id:"qwen.qwen3-32b-v1:0",displayName:"Qwen3 32B (dense)",provider:"amazon-bedrock",contextWindow:16384,outputLimit:16384},{id:"deepseek.v3.2",displayName:"DeepSeek-V3.2",provider:"amazon-bedrock",contextWindow:163840,outputLimit:81920},{id:"eu.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"zai.glm-4.7-flash",displayName:"GLM-4.7-Flash",provider:"amazon-bedrock",contextWindow:200000,outputLimit:131072},{id:"us.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"amazon.nova-2-lite-v1:0",displayName:"Nova 2 Lite",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"qwen.qwen3-coder-480b-a35b-v1:0",displayName:"Qwen3 Coder 480B A35B Instruct",provider:"amazon-bedrock",contextWindow:131072,outputLimit:65536},{id:"meta.llama3-2-1b-instruct-v1:0",displayName:"Llama 3.2 1B Instruct",provider:"amazon-bedrock",contextWindow:131000,outputLimit:4096},{id:"amazon.nova-lite-v1:0",displayName:"Nova Lite",provider:"amazon-bedrock",contextWindow:300000,outputLimit:8192},{id:"meta.llama3-1-8b-instruct-v1:0",displayName:"Llama 3.1 8B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"google.gemma-3-27b-it",displayName:"Google Gemma 3 27B Instruct",provider:"amazon-bedrock",contextWindow:202752,outputLimit:8192},{id:"global.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"google.gemma-3-4b-it",displayName:"Gemma 3 4B IT",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama4-scout-17b-instruct-v1:0",displayName:"Llama 4 Scout 17B Instruct",provider:"amazon-bedrock",contextWindow:3500000,outputLimit:16384},{id:"deepseek.v3-v1:0",displayName:"DeepSeek-V3.1",provider:"amazon-bedrock",contextWindow:163840,outputLimit:81920},{id:"mistral.magistral-small-2509",displayName:"Magistral Small 1.2",provider:"amazon-bedrock",contextWindow:128000,outputLimit:40000},{id:"qwen.qwen3-next-80b-a3b",displayName:"Qwen/Qwen3-Next-80B-A3B-Instruct",provider:"amazon-bedrock",contextWindow:262000,outputLimit:262000},{id:"zai.glm-4.7",displayName:"GLM-4.7",provider:"amazon-bedrock",contextWindow:204800,outputLimit:131072},{id:"moonshot.kimi-k2-thinking",displayName:"Kimi K2 Thinking",provider:"amazon-bedrock",contextWindow:256000,outputLimit:256000},{id:"us.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.ministral-3-14b-instruct",displayName:"Ministral 14B 3.0",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-3-haiku-20240307-v1:0",displayName:"Claude Haiku 3",provider:"amazon-bedrock",contextWindow:200000,outputLimit:4096},{id:"deepseek.r1-v1:0",displayName:"DeepSeek-R1",provider:"amazon-bedrock",contextWindow:128000,outputLimit:32768},{id:"meta.llama3-1-405b-instruct-v1:0",displayName:"Llama 3.1 405B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"mistral.voxtral-mini-3b-2507",displayName:"Voxtral Mini 3B 2507",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"openai.gpt-oss-120b-1:0",displayName:"gpt-oss-120b",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-nano-12b-v2",displayName:"NVIDIA Nemotron Nano 12B v2 VL BF16",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"eu.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"minimax.minimax-m2.5",displayName:"MiniMax M2.5",provider:"amazon-bedrock",contextWindow:196608,outputLimit:98304},{id:"meta.llama3-3-70b-instruct-v1:0",displayName:"Llama 3.3 70B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-1-70b-instruct-v1:0",displayName:"Llama 3.1 70B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-2-3b-instruct-v1:0",displayName:"Llama 3.2 3B Instruct",provider:"amazon-bedrock",contextWindow:131000,outputLimit:4096},{id:"eu.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"eu.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"meta.llama3-2-11b-instruct-v1:0",displayName:"Llama 3.2 11B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"moonshotai.kimi-k2.5",displayName:"Kimi K2.5",provider:"amazon-bedrock",contextWindow:256000,outputLimit:256000},{id:"au.anthropic.claude-sonnet-4-6",displayName:"AU Anthropic Claude Sonnet 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"openai.gpt-oss-safeguard-20b",displayName:"GPT OSS Safeguard 20B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"qwen.qwen3-coder-30b-a3b-v1:0",displayName:"Qwen3 Coder 30B A3B Instruct",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"minimax.minimax-m2.1",displayName:"MiniMax M2.1",provider:"amazon-bedrock",contextWindow:204800,outputLimit:131072},{id:"qwen.qwen3-vl-235b-a22b",displayName:"Qwen/Qwen3-VL-235B-A22B-Instruct",provider:"amazon-bedrock",contextWindow:262000,outputLimit:262000},{id:"qwen.qwen3-coder-next",displayName:"Qwen3 Coder Next",provider:"amazon-bedrock",contextWindow:131072,outputLimit:65536},{id:"nvidia.nemotron-nano-9b-v2",displayName:"NVIDIA Nemotron Nano 9B v2",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"mistral.mistral-large-3-675b-instruct",displayName:"Mistral Large 3",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"qwen.qwen3-235b-a22b-2507-v1:0",displayName:"Qwen3 235B A22B 2507",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"anthropic.claude-3-7-sonnet-20250219-v1:0",displayName:"Claude Sonnet 3.7",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"writer.palmyra-x4-v1:0",displayName:"Palmyra X4",provider:"amazon-bedrock",contextWindow:122880,outputLimit:8192},{id:"anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-3-5-sonnet-20240620-v1:0",displayName:"Claude Sonnet 3.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"eu.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"eu.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"us.anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"us.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"global.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"us.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"global.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"us.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"us.anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"global.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"eu.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"anthropic.claude-3-5-haiku-20241022-v1:0",displayName:"Claude Haiku 3.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"gpt-5.2-chat",displayName:"GPT-5.2 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"codex-mini",displayName:"Codex Mini",provider:"azure",contextWindow:200000,outputLimit:1e5},{id:"phi-4-multimodal",displayName:"Phi-4-multimodal",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"phi-3.5-mini-instruct",displayName:"Phi-3.5-mini-instruct",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B 16E Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"grok-4-1-fast-reasoning",displayName:"Grok 4.1 Fast (Reasoning)",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"phi-3-medium-4k-instruct",displayName:"Phi-3-medium-instruct (4k)",provider:"azure",contextWindow:4096,outputLimit:1024},{id:"ministral-3b",displayName:"Ministral 3B",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"meta-llama-3.1-8b-instruct",displayName:"Meta-Llama-3.1-8B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"deepseek-v3-0324",displayName:"DeepSeek-V3-0324",provider:"azure",contextWindow:131072,outputLimit:131072},{id:"gpt-5-chat",displayName:"GPT-5 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"phi-3.5-moe-instruct",displayName:"Phi-3.5-MoE-instruct",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-5.3-chat",displayName:"GPT-5.3 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"phi-3-mini-128k-instruct",displayName:"Phi-3-mini-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"phi-4-reasoning",displayName:"Phi-4-reasoning",provider:"azure",contextWindow:32000,outputLimit:4096},{id:"meta-llama-3-70b-instruct",displayName:"Meta-Llama-3-70B-Instruct",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"phi-3-small-8k-instruct",displayName:"Phi-3-small-instruct (8k)",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"llama-3.2-90b-vision-instruct",displayName:"Llama-3.2-90B-Vision-Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"deepseek-r1",displayName:"DeepSeek-R1",provider:"azure",contextWindow:163840,outputLimit:163840},{id:"deepseek-v3.2-speciale",displayName:"DeepSeek-V3.2-Speciale",provider:"azure",contextWindow:128000,outputLimit:128000},{id:"cohere-command-a",displayName:"Command A",provider:"azure",contextWindow:256000,outputLimit:8000},{id:"llama-3.2-11b-vision-instruct",displayName:"Llama-3.2-11B-Vision-Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"meta-llama-3.1-405b-instruct",displayName:"Meta-Llama-3.1-405B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"gpt-5.1-chat",displayName:"GPT-5.1 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"gpt-4-turbo-vision",displayName:"GPT-4 Turbo Vision",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"cohere-embed-v-4-0",displayName:"Embed v4",provider:"azure",contextWindow:128000,outputLimit:1536},{id:"gpt-3.5-turbo-0125",displayName:"GPT-3.5 Turbo 0125",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"cohere-embed-v3-multilingual",displayName:"Embed v3 Multilingual",provider:"azure",contextWindow:512,outputLimit:1024},{id:"grok-4-20-non-reasoning",displayName:"Grok 4.20 (Non-Reasoning)",provider:"azure",contextWindow:262000,outputLimit:8192},{id:"grok-4-fast-reasoning",displayName:"Grok 4 Fast (Reasoning)",provider:"azure",contextWindow:2000000,outputLimit:30000},{id:"mistral-small-2503",displayName:"Mistral Small 3.1",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"model-router",displayName:"Model Router",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"gpt-3.5-turbo-1106",displayName:"GPT-3.5 Turbo 1106",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"deepseek-v3.1",displayName:"DeepSeek-V3.1",provider:"azure",contextWindow:131072,outputLimit:131072},{id:"phi-3-mini-4k-instruct",displayName:"Phi-3-mini-instruct (4k)",provider:"azure",contextWindow:4096,outputLimit:1024},{id:"meta-llama-3.1-70b-instruct",displayName:"Meta-Llama-3.1-70B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"phi-4-mini-reasoning",displayName:"Phi-4-mini-reasoning",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"meta-llama-3-8b-instruct",displayName:"Meta-Llama-3-8B-Instruct",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"phi-4-mini",displayName:"Phi-4-mini",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"grok-4-20-reasoning",displayName:"Grok 4.20 (Reasoning)",provider:"azure",contextWindow:262000,outputLimit:8192},{id:"gpt-3.5-turbo-0301",displayName:"GPT-3.5 Turbo 0301",provider:"azure",contextWindow:4096,outputLimit:4096},{id:"phi-3-small-128k-instruct",displayName:"Phi-3-small-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"deepseek-v3.2",displayName:"DeepSeek-V3.2",provider:"azure",contextWindow:128000,outputLimit:128000},{id:"phi-3-medium-128k-instruct",displayName:"Phi-3-medium-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-3.5-turbo-0613",displayName:"GPT-3.5 Turbo 0613",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"phi-4",displayName:"Phi-4",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-4-32k",displayName:"GPT-4 32K",provider:"azure",contextWindow:32768,outputLimit:32768},{id:"cohere-embed-v3-english",displayName:"Embed v3 English",provider:"azure",contextWindow:512,outputLimit:1024},{id:"phi-4-reasoning-plus",displayName:"Phi-4-reasoning-plus",provider:"azure",contextWindow:32000,outputLimit:4096},{id:"gpt-3.5-turbo-instruct",displayName:"GPT-3.5 Turbo Instruct",provider:"azure",contextWindow:4096,outputLimit:4096},{id:"deepseek-r1-0528",displayName:"DeepSeek-R1-0528",provider:"azure",contextWindow:163840,outputLimit:163840},{id:"codestral-2501",displayName:"Codestral 25.01",provider:"azure",contextWindow:256000,outputLimit:256000},{id:"llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama 4 Maverick 17B 128E Instruct FP8",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"mai-ds-r1",displayName:"MAI-DS-R1",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"cohere-command-r-08-2024",displayName:"Command R",provider:"azure",contextWindow:128000,outputLimit:4000},{id:"cohere-command-r-plus-08-2024",displayName:"Command R+",provider:"azure",contextWindow:128000,outputLimit:4000}]});import{join as Mc}from"path";import{homedir as Gc}from"os";function Ke(){return Pc??Mc(Gc(),".tako","models-cache.json")}function Jd(i){Pn.clear();for(let o of i)if(!Pn.has(o.id))Pn.set(o.id,o)}function Cc(){try{let o=$("fs").readFileSync(Ke(),"utf-8"),n=JSON.parse(o);if(typeof n?.fetchedAt!=="number"||!Array.isArray(n?.entries))return null;return n}catch{return null}}async function Ic(i){try{let o=await import("fs/promises"),n=Ke(),d=n.slice(0,n.lastIndexOf("/"));if(d)await o.mkdir(d,{recursive:!0}).catch(()=>{});await o.writeFile(n,JSON.stringify(i),"utf-8")}catch{}}function Ni(){if(Cn)return;Cn=!0;let i=Cc();if(i&&Date.now()-i.fetchedAt<Sc){Jd(i.entries);return}Jd(ci)}async function Bd(){try{let i=await Ze();if(!i.length)return;Jd(i),await Ic({fetchedAt:Date.now(),entries:i}),Cn=!0}catch{}}function Ve(i){let o=i.match(/^(.+?)(?:\[1m\]|:1m)$/i),n=o?o[1]:i,d=n.match(/^[^\/]+\/(.+)$/);return{lookupId:d?d[1]:n,is1m:!!o}}function Yd(i){if(!Cn)Ni();let{lookupId:o,is1m:n}=Ve(i),d=Pn.get(o);if(!d)return;if(n)return{...d,contextWindow:1e6};return d}var Sc=86400000,Pc=null,Pn,Cn=!1;var Te=N(()=>{Sn();Pn=new Map});import{join as Qc}from"path";function Ee(){return Rc??Qc(Q,"tako-models-cache.json")}function Xd(i,o){return`${i.replace(/\/+$/,"")}#${o}`}function Hd(){if(Fe)return;Fe=!0;try{let i=$("fs"),o=JSON.parse(i.readFileSync(Ee(),"utf-8"));if(o?.version!==1||typeof o.buckets!=="object")return;for(let[n,d]of Object.entries(o.buckets))if(typeof d?.fetchedAt==="number"&&Array.isArray(d.entries))Vo.set(n,d)}catch{}}async function Jc(){try{let i=await import("fs/promises"),o=Ee(),n=o.slice(0,o.lastIndexOf("/"));if(n)await i.mkdir(n,{recursive:!0}).catch(()=>{});let d={version:1,buckets:Object.fromEntries(Vo)};await i.writeFile(o,JSON.stringify(d),"utf-8")}catch{}}function Bc(i){let o=i?.models;if(!Array.isArray(o))return[];let n=[];for(let d of o){let e=d?.slug;if(typeof e!=="string"||!e)continue;n.push({id:e,displayName:d.display_name||e,description:d.description||"",contextWindow:typeof d.context_window==="number"?d.context_window:0,sortOrder:typeof d.priority==="number"?d.priority:0,category:typeof d.model_category==="string"&&d.model_category?d.model_category:"chat"})}return n.sort((d,e)=>d.sortOrder-e.sortOrder||d.id.localeCompare(e.id)),n}function To(i){return i.filter((o)=>!o.category||o.category==="chat")}function Xi(i,o){return Hd(),Vo.get(Xd(i,o))?.entries??null}async function In(i,o,n){Hd();let d=Xd(i,n),e=Ad.get(d);if(e)return e;let u=(async()=>{try{let r=i.replace(/\/+$/,"")+`/v1/models?client_version=tako-cli&api_type=${n}`,t=await fetch(r,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(Oc)});if(!t.ok)return;let c=await t.json(),a=Bc(c);if(a.length===0)return;Vo.set(d,{fetchedAt:Date.now(),entries:a}),await Jc()}catch{}finally{Ad.delete(d)}})();return Ad.set(d,u),u}function Zd(i){Hd();let o=Date.now(),n=[];for(let d of i){if(d.type!=="tako"&&d.type!=="custom")continue;if(!d.apiKey||!d.baseUrl)continue;for(let e of["openai","claude"]){let u=Vo.get(Xd(d.baseUrl,e));if(u&&o-u.fetchedAt<qc)continue;let r=In(d.baseUrl,d.apiKey,e);if(!u)n.push(r)}}return Promise.all(n).then(()=>{return})}var qc=3600000,Oc=8000,Rc=null,Vo,Fe=!1,Ad;var Kd=N(()=>{C();Vo=new Map,Ad=new Map});var vo=N(()=>{Te();Kd()});import{homedir as Yc}from"os";import{join as Td}from"path";function je(i,o){let n={...i};for(let[d,e]of Object.entries(o))if(e&&typeof e==="object"&&!Array.isArray(e)&&n[d]&&typeof n[d]==="object"&&!Array.isArray(n[d]))n[d]=je(n[d],e);else n[d]=e;return n}function Ac(i){if(i.model_providers?.crs)delete i.model_providers.crs;if(i.model_provider==="crs")delete i.model_provider;if(i.openai_base_url)delete i.openai_base_url;let o=i.model_providers?.tako;if(o)delete o.wire_api,delete o.request_max_retries,delete o.stream_max_retries,delete o.api_key,delete o.env_key;return i}function De(i){if(i.model_providers?.tako)delete i.model_providers.tako.supports_websockets;if(i.features){if(delete i.features.multi_agent,delete i.features.responses_websockets_v2,Object.keys(i.features).length===0)delete i.features}}async function Xc(i,o){let n=await import("fs/promises");try{await n.mkdir(Fd,{recursive:!0})}catch{}let d={};try{d=Id(await n.readFile(_e,"utf-8"))}catch{}if(d=Ac(d),i.type==="codex-subscription")if(delete d.model_provider,d.check_for_update_on_startup=!1,d.remote_compaction_v2=!1,De(d),i.authData)await Bun.write(Ue,JSON.stringify(i.authData,null,2)+`
267
- `);else await Bun.write(Ue,JSON.stringify({OPENAI_API_KEY:null,auth_mode:"chatgpt"},null,2)+`
268
- `);else{let e;if(i.type==="tako")e=`${A}/v1`;else if(i.type==="deepseek")e="https://api.deepseek.com/v1";else e=`${i.baseUrl}/v1`;let r=o?.find((l)=>l.startsWith("model-"))?.slice(6)||i.model||"gpt-5.5",t=/^gpt[-.]/i.test(r),c;if(!t){if(c=ci.find((x)=>x.id===r)?.contextWindow,!c&&(i.type==="tako"||i.type==="custom")&&i.baseUrl){let x=Xi(i.baseUrl,"openai")?.find((w)=>w.id===r);if(x&&x.contextWindow>0)c=x.contextWindow}if(!c)c=i.modelContextWindow}else delete d.model_context_window;let a={name:"tako",base_url:e,requires_openai_auth:!0};if(i.apiKey)a.experimental_bearer_token=i.apiKey;De(d);let p={model_provider:"tako",model:r,check_for_update_on_startup:!1,remote_compaction_v2:!1,model_providers:{tako:a}};if(c)p.model_context_window=c;d=je(d,p)}await Bun.write(_e,Rd(d))}function Vd(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Tc(i){if(!i.baseUrl)return null;let o=Xi(i.baseUrl,"openai");if(!o||o.length===0)return null;let n=To(o);if(n.length===0)return null;return n.map((d)=>({id:`model-${d.id}`,label:{en:d.displayName,zh:d.displayName},shortLabel:d.displayName,description:{en:`Use ${d.displayName} (${Vd(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${Vd(d.contextWindow)}\uFF09`},flag:`--model ${d.id}`,args:["--model",d.id],group:"model"}))}function Fc(i){if(Ni(),i&&(i.type==="tako"||i.type==="custom")){let d=Tc(i);if(d)return d}let o=i?.type==="deepseek"?Vc:Kc,n=[];for(let d of o){let e=ci.find((t)=>t.id===d),u=Vd(e?.contextWindow??0),r=e?.displayName??d;n.push({id:`model-${d}`,label:{en:r,zh:r},shortLabel:r,description:{en:`Use ${r} (${u} ctx)`,zh:`\u4F7F\u7528 ${r}\uFF08\u4E0A\u4E0B\u6587 ${u}\uFF09`},flag:`--model ${d}`,args:["--model",d],group:"model"})}return n}function Ec(i){return[...Zc,...Fc(i)]}var Fd,_e,Ue,Hc,Zc,Kc,Vc;var iu=N(()=>{E();C();He();vo();Sn();Fd=Td(Yc(),".codex"),_e=Td(Fd,"config.toml"),Ue=Td(Fd,"auth.json");Hc={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars(i){return{}},setupConfigFiles:Xc,launchOptions:(i)=>Ec(i)},Zc=[{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"]},{id:"bypass-sandbox",label:{en:"Bypass Sandbox",zh:"\u7ED5\u8FC7\u5BA1\u6279\u4E0E\u6C99\u7BB1"},shortLabel:"Bypass",description:{en:"DANGEROUS: skip all approvals & sandbox (use only in disposable envs)",zh:"\u5371\u9669\uFF1A\u8DF3\u8FC7\u6240\u6709\u5BA1\u6279\u4E0E\u6C99\u7BB1\u9650\u5236\uFF08\u4EC5\u9650\u9694\u79BB/\u4E34\u65F6\u73AF\u5883\u4F7F\u7528\uFF09"},flag:"--dangerously-bypass-approvals-and-sandbox",args:["--dangerously-bypass-approvals-and-sandbox"]}],Kc=["gpt-5.5","gpt-5.4","gpt-5.3-codex","gpt-5.3"],Vc=["deepseek-v4-flash","deepseek-v4-pro"];yo(Hc)});function di(i){switch(i){case"claude-subscription":return["claude-code"];case"codex-subscription":return["codex"];case"anthropic":return["claude-code"];case"deepseek":return["claude-code","codex"];case"xiaomi":return["claude-code"];case"custom":return["claude-code","codex"];case"tako":default:return}}function Fo(i){switch(i){case"deepseek":return"deepseek-v4-flash";case"xiaomi":return"mimo-v2.5-pro";case"tako":return;default:return}}function Ed(i){switch(i){case"deepseek":return"https://api.deepseek.com";case"xiaomi":return Ud;default:return}}function Dd(i){return i?.startsWith("tp-")?ou:Ud}function Eo(i){switch(i){case"deepseek":return["deepseek-v4-flash","deepseek-v4-pro"];case"xiaomi":return Uc;case"tako":case"anthropic":return _c;default:return}}function Hi(i,o){let n=i.supportedClients;if(!n||n.length===0)return!0;return n.includes(o)}var io,_d="https://api.deepseek.com/anthropic",Ud="https://api.xiaomimimo.com/anthropic",ou="https://token-plan-cn.xiaomimimo.com/anthropic",_c,Uc;var Si=N(()=>{io={"claude-subscription":{en:"Claude Subscription",zh:"Claude \u8BA2\u9605\u76F4\u8FDE"},"codex-subscription":{en:"Codex Subscription",zh:"Codex \u8BA2\u9605\u76F4\u8FDE"},tako:{en:"Tako Proxy",zh:"Tako \u4EE3\u7406"},anthropic:{en:"Anthropic Direct",zh:"Anthropic \u76F4\u8FDE"},deepseek:{en:"DeepSeek",zh:"DeepSeek"},xiaomi:{en:"Xiaomi MiMo",zh:"\u5C0F\u7C73 MiMo"},custom:{en:"Custom Proxy",zh:"\u81EA\u5B9A\u4E49\u4EE3\u7406"}};_c=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Uc=["mimo-v2.5-pro"]});var du={};ii(du,{spinner:()=>oa,setLogHandler:()=>jc,resetLogHandler:()=>ia,log:()=>L,createSpinner:()=>oo});function Dc(i){let o=!!process.stderr.isTTY,n=(e)=>process.stderr.write(e),d=i;if(o)n(`\u23F3 ${i}`);else n(`\u23F3 ${i}
269
- `);return{update(e){if(e===d)return;if(d=e,o)n(`\r\x1B[2K\u23F3 ${e}`);else n(`\u23F3 ${e}
270
- `)},stop(e){if(o)n("\r\x1B[2K");if(e)n(`\u2713 ${e}
271
- `)}}}function jc(i){Pi=i}function ia(){Pi=nu}function oa(){return{start(i){return Pi.spin(i)}}}function oo(){let i=null;return{start(o){i=Pi.spin(o)},stop(o){i?.stop(o),i=null},update(o){i?.update(o)}}}var nu,Pi,L;var Ci=N(()=>{nu={info:(i)=>console.log(`\u2139 ${i}`),warn:(i)=>console.log(`\u26A0 ${i}`),error:(i)=>console.error(`\u2717 ${i}`),success:(i)=>console.log(`\u2713 ${i}`),spin:Dc},Pi=nu;L={info:(i)=>Pi.info(i),warn:(i)=>Pi.warn(i),error:(i)=>Pi.error(i),success:(i)=>Pi.success(i),message:(i)=>Pi.info(i),debug:(i)=>{if(process.env.TAKO_DEV)process.stderr.write(`[debug] ${i}
272
- `)}}});var eu={};ii(eu,{t:()=>g,setLocale:()=>jd,getLocale:()=>Ii,detectLocale:()=>no,clearLocaleOverride:()=>na});function no(){if(Qn)return Qn;let i=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if(i.toLowerCase().includes("zh")||i.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function jd(i){Qn=i}function na(){Qn=null}function g(i,o){let n=no(),d=i.split("."),e=da;for(let r of d)if(e=e?.[r],!e)return i;let u=e[n]||e.en||i;if(o)for(let[r,t]of Object.entries(o))u=u.replace(`{${r}}`,String(t));return u}function Ii(){return no()}var Qn=null,da;var X=N(()=>{da={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 [args...] Launch Claude Code (passes extra args through, e.g. --model)",zh:" --claude [\u53C2\u6570...] \u542F\u52A8 Claude Code\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 claude\uFF0C\u5982 --model\uFF09"},shortcutCodex:{en:" --codex [args...] Launch Codex (passes extra args through)",zh:" --codex [\u53C2\u6570...] \u542F\u52A8 Codex\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 codex\uFF09"},shortcutGemini:{en:" --gemini [args...] Launch Gemini CLI (passes extra args through)",zh:" --gemini [\u53C2\u6570...] \u542F\u52A8 Gemini CLI\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 gemini\uFF09"},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"},exampleClaudeModel:{en:" tako --claude --model claude-opus-4-7 Launch Claude Code with a specific model",zh:" tako --claude --model claude-opus-4-7 \u6307\u5B9A\u6A21\u578B\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:
266
+ */});function zc(i){let o=[];for(let[n,d]of Object.entries(i)){if(!d?.models)continue;for(let[u,e]of Object.entries(d.models)){let r=e?.limit?.context;if(typeof r!=="number"||r<=0)continue;o.push({id:u,displayName:e.name||u,provider:n,contextWindow:r,outputLimit:typeof e.limit?.output==="number"?e.limit.output:void 0})}}return o}async function Zu(){let i=await fetch("https://models.dev/api.json",{signal:AbortSignal.timeout(1e4)});if(!i.ok)throw Error(`models.dev http ${i.status}`);let o=await i.json();return zc(o)}var ri;var Pn=N(()=>{ri=[{id:"claude-3-sonnet-20240229",displayName:"Claude Sonnet 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-haiku-4-5",displayName:"Claude Haiku 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-5-20251101",displayName:"Claude Opus 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-opus-20240229",displayName:"Claude Opus 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-3-5-haiku-20241022",displayName:"Claude Haiku 3.5",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-3-5-sonnet-20241022",displayName:"Claude Sonnet 3.5 v2",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-sonnet-4-6",displayName:"Claude Sonnet 4.6",provider:"anthropic",contextWindow:1e6,outputLimit:64000},{id:"claude-opus-4-0",displayName:"Claude Opus 4 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-opus-4-7",displayName:"Claude Opus 4.7",provider:"anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-3-haiku-20240307",displayName:"Claude Haiku 3",provider:"anthropic",contextWindow:200000,outputLimit:4096},{id:"claude-sonnet-4-5-20250929",displayName:"Claude Sonnet 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-haiku-latest",displayName:"Claude Haiku 3.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-1",displayName:"Claude Opus 4.1 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-sonnet-4-0",displayName:"Claude Sonnet 4 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-sonnet-20240620",displayName:"Claude Sonnet 3.5",provider:"anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-5",displayName:"Claude Opus 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-haiku-4-5-20251001",displayName:"Claude Haiku 4.5",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-6",displayName:"Claude Opus 4.6",provider:"anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-3-7-sonnet-20250219",displayName:"Claude Sonnet 3.7",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-5",displayName:"Claude Sonnet 4.5 (latest)",provider:"anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-20250514",displayName:"Claude Opus 4",provider:"anthropic",contextWindow:200000,outputLimit:32000},{id:"gpt-5.1-codex-max",displayName:"GPT-5.1 Codex Max",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4o-2024-05-13",displayName:"GPT-4o (2024-05-13)",provider:"openai",contextWindow:128000,outputLimit:4096},{id:"o1-mini",displayName:"o1-mini",provider:"openai",contextWindow:128000,outputLimit:65536},{id:"gpt-5.2-pro",displayName:"GPT-5.2 Pro",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"text-embedding-3-large",displayName:"text-embedding-3-large",provider:"openai",contextWindow:8191,outputLimit:3072},{id:"gpt-5.3-chat-latest",displayName:"GPT-5.3 Chat (latest)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.5",displayName:"GPT-5.5",provider:"openai",contextWindow:1050000,outputLimit:130000},{id:"gpt-5-mini",displayName:"GPT-5 Mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5-nano",displayName:"GPT-5 Nano",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.3-codex",displayName:"GPT-5.3 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4-turbo",displayName:"GPT-4 Turbo",provider:"openai",contextWindow:128000,outputLimit:4096},{id:"text-embedding-ada-002",displayName:"text-embedding-ada-002",provider:"openai",contextWindow:8192,outputLimit:1536},{id:"gpt-5.2",displayName:"GPT-5.2",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o3-pro",displayName:"o3-pro",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-4o-mini",displayName:"GPT-4o mini",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"o4-mini-deep-research",displayName:"o4-mini-deep-research",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-mini",displayName:"GPT-5.4 mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o4-mini",displayName:"o4-mini",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-nano",displayName:"GPT-5.4 nano",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.2-codex",displayName:"GPT-5.2 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.2-chat-latest",displayName:"GPT-5.2 Chat",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.1-codex-mini",displayName:"GPT-5.1 Codex mini",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o1-preview",displayName:"o1-preview",provider:"openai",contextWindow:128000,outputLimit:32768},{id:"gpt-4o-2024-08-06",displayName:"GPT-4o (2024-08-06)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.1",displayName:"GPT-5.1",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"o1",displayName:"o1",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5.4-pro",displayName:"GPT-5.4 Pro",provider:"openai",contextWindow:1050000,outputLimit:128000},{id:"gpt-3.5-turbo",displayName:"GPT-3.5-turbo",provider:"openai",contextWindow:16385,outputLimit:4096},{id:"o3-deep-research",displayName:"o3-deep-research",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"o3-mini",displayName:"o3-mini",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"text-embedding-3-small",displayName:"text-embedding-3-small",provider:"openai",contextWindow:8191,outputLimit:1536},{id:"o1-pro",displayName:"o1-pro",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-4",displayName:"GPT-4",provider:"openai",contextWindow:8192,outputLimit:8192},{id:"gpt-5-codex",displayName:"GPT-5-Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5.4",displayName:"GPT-5.4",provider:"openai",contextWindow:1050000,outputLimit:128000},{id:"gpt-5.1-chat-latest",displayName:"GPT-5.1 Chat",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5.3-codex-spark",displayName:"GPT-5.3 Codex Spark",provider:"openai",contextWindow:128000,outputLimit:32000},{id:"gpt-4.1-nano",displayName:"GPT-4.1 nano",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"o3",displayName:"o3",provider:"openai",contextWindow:200000,outputLimit:1e5},{id:"gpt-5-pro",displayName:"GPT-5 Pro",provider:"openai",contextWindow:400000,outputLimit:272000},{id:"gpt-4o",displayName:"GPT-4o",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gpt-5",displayName:"GPT-5",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-5-chat-latest",displayName:"GPT-5 Chat (latest)",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4.1",displayName:"GPT-4.1",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"gpt-4.1-mini",displayName:"GPT-4.1 mini",provider:"openai",contextWindow:1047576,outputLimit:32768},{id:"gpt-5.1-codex",displayName:"GPT-5.1 Codex",provider:"openai",contextWindow:400000,outputLimit:128000},{id:"gpt-4o-2024-11-20",displayName:"GPT-4o (2024-11-20)",provider:"openai",contextWindow:128000,outputLimit:16384},{id:"gemini-flash-lite-latest",displayName:"Gemini Flash-Lite Latest",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-live-2.5-flash-preview-native-audio",displayName:"Gemini Live 2.5 Flash Preview Native Audio",provider:"google",contextWindow:131072,outputLimit:65536},{id:"gemini-3.1-pro-preview-customtools",displayName:"Gemini 3.1 Pro Preview Custom Tools",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-lite-preview-09-2025",displayName:"Gemini 2.5 Flash Lite Preview 09-25",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemma-3n-e4b-it",displayName:"Gemma 3n 4B",provider:"google",contextWindow:8192,outputLimit:2000},{id:"gemini-3.1-flash-lite-preview",displayName:"Gemini 3.1 Flash Lite Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-3.1-pro-preview",displayName:"Gemini 3.1 Pro Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",provider:"google",contextWindow:1048576,outputLimit:8192},{id:"gemini-3-flash-preview",displayName:"Gemini 3 Flash Preview",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-preview-tts",displayName:"Gemini 2.5 Flash Preview TTS",provider:"google",contextWindow:8000,outputLimit:16000},{id:"gemini-3-pro-preview",displayName:"Gemini 3 Pro Preview",provider:"google",contextWindow:1e6,outputLimit:64000},{id:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-embedding-001",displayName:"Gemini Embedding 001",provider:"google",contextWindow:2048,outputLimit:3072},{id:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-flash-latest",displayName:"Gemini Flash Latest",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-4-31b-it",displayName:"Gemma 4 31B",provider:"google",contextWindow:256000,outputLimit:8192},{id:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-image",displayName:"Gemini 2.5 Flash Image",provider:"google",contextWindow:32768,outputLimit:32768},{id:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3-12b-it",displayName:"Gemma 3 12B",provider:"google",contextWindow:32768,outputLimit:8192},{id:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3n-e2b-it",displayName:"Gemma 3n 2B",provider:"google",contextWindow:8192,outputLimit:2000},{id:"gemini-3.1-flash-image-preview",displayName:"Gemini 3.1 Flash Image (Preview)",provider:"google",contextWindow:131072,outputLimit:32768},{id:"gemma-3-4b-it",displayName:"Gemma 3 4B",provider:"google",contextWindow:32768,outputLimit:8192},{id:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-pro-preview-tts",displayName:"Gemini 2.5 Pro Preview TTS",provider:"google",contextWindow:8000,outputLimit:16000},{id:"gemini-2.5-flash-preview-09-2025",displayName:"Gemini 2.5 Flash Preview 09-25",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemma-3-27b-it",displayName:"Gemma 3 27B",provider:"google",contextWindow:131072,outputLimit:8192},{id:"gemma-4-26b-a4b-it",displayName:"Gemma 4 26B",provider:"google",contextWindow:256000,outputLimit:8192},{id:"gemini-2.5-flash-lite",displayName:"Gemini 2.5 Flash Lite",provider:"google",contextWindow:1048576,outputLimit:65536},{id:"gemini-2.5-flash-image-preview",displayName:"Gemini 2.5 Flash Image (Preview)",provider:"google",contextWindow:32768,outputLimit:32768},{id:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",provider:"google",contextWindow:1e6,outputLimit:8192},{id:"gemini-live-2.5-flash",displayName:"Gemini Live 2.5 Flash",provider:"google",contextWindow:128000,outputLimit:8000},{id:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",provider:"google",contextWindow:1048576,outputLimit:8192},{id:"claude-sonnet-4-6@default",displayName:"Claude Sonnet 4.6",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-haiku-4-5@20251001",displayName:"Claude Haiku 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-5-haiku@20241022",displayName:"Claude Haiku 3.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-3-5-sonnet@20241022",displayName:"Claude Sonnet 3.5 v2",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:8192},{id:"claude-opus-4-1@20250805",displayName:"Claude Opus 4.1",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-sonnet-4@20250514",displayName:"Claude Sonnet 4",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-3-7-sonnet@20250219",displayName:"Claude Sonnet 3.7",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4@20250514",displayName:"Claude Opus 4",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:32000},{id:"claude-opus-4-5@20251101",displayName:"Claude Opus 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-sonnet-4-5@20250929",displayName:"Claude Sonnet 4.5",provider:"google-vertex-anthropic",contextWindow:200000,outputLimit:64000},{id:"claude-opus-4-6@default",displayName:"Claude Opus 4.6",provider:"google-vertex-anthropic",contextWindow:1e6,outputLimit:128000},{id:"claude-opus-4-7@default",displayName:"Claude Opus 4.7",provider:"google-vertex-anthropic",contextWindow:1e6,outputLimit:128000},{id:"grok-2-1212",displayName:"Grok 2 (1212)",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-vision-beta",displayName:"Grok Vision Beta",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-3-mini-fast",displayName:"Grok 3 Mini Fast",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-3-mini-latest",displayName:"Grok 3 Mini Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-3-fast",displayName:"Grok 3 Fast",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2-vision-latest",displayName:"Grok 2 Vision Latest",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-4.20-0309-reasoning",displayName:"Grok 4.20 (Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-4-1-fast-non-reasoning",displayName:"Grok 4.1 Fast (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-mini-fast-latest",displayName:"Grok 3 Mini Fast Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4-fast",displayName:"Grok 4 Fast",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-latest",displayName:"Grok 3 Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2",displayName:"Grok 2",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-code-fast-1",displayName:"Grok Code Fast 1",provider:"xai",contextWindow:256000,outputLimit:1e4},{id:"grok-4.20-0309-non-reasoning",displayName:"Grok 4.20 (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-fast-latest",displayName:"Grok 3 Fast Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4.20-multi-agent-0309",displayName:"Grok 4.20 Multi-Agent",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-4",displayName:"Grok 4",provider:"xai",contextWindow:256000,outputLimit:64000},{id:"grok-2-latest",displayName:"Grok 2 Latest",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-beta",displayName:"Grok Beta",provider:"xai",contextWindow:131072,outputLimit:4096},{id:"grok-2-vision",displayName:"Grok 2 Vision",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-4-1-fast",displayName:"Grok 4.1 Fast",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"grok-3-mini",displayName:"Grok 3 Mini",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-2-vision-1212",displayName:"Grok 2 Vision (1212)",provider:"xai",contextWindow:8192,outputLimit:4096},{id:"grok-3",displayName:"Grok 3",provider:"xai",contextWindow:131072,outputLimit:8192},{id:"grok-4-fast-non-reasoning",displayName:"Grok 4 Fast (Non-Reasoning)",provider:"xai",contextWindow:2000000,outputLimit:30000},{id:"deepseek-chat",displayName:"DeepSeek Chat",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-reasoner",displayName:"DeepSeek Reasoner",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-v4-flash",displayName:"DeepSeek V4 Flash",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"deepseek-v4-pro",displayName:"DeepSeek V4 Pro",provider:"deepseek",contextWindow:1e6,outputLimit:384000},{id:"mimo-v2.5-pro",displayName:"MiMo v2.5 Pro",provider:"xiaomi",contextWindow:1e6,outputLimit:64000},{id:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2.5",displayName:"Kimi K2.5",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-thinking-turbo",displayName:"Kimi K2 Thinking Turbo",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2.6",displayName:"Kimi K2.6",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",provider:"moonshotai",contextWindow:131072,outputLimit:16384},{id:"kimi-k2-thinking",displayName:"Kimi K2 Thinking",provider:"moonshotai",contextWindow:262144,outputLimit:262144},{id:"mistral-small-latest",displayName:"Mistral Small (latest)",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"mistral-nemo",displayName:"Mistral Nemo",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-large-2512",displayName:"Mistral Large 3",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"labs-devstral-small-2512",displayName:"Devstral Small 2",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"devstral-2512",displayName:"Devstral 2",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"magistral-medium-latest",displayName:"Magistral Medium (latest)",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"open-mixtral-8x7b",displayName:"Mixtral 8x7B",provider:"mistral",contextWindow:32000,outputLimit:32000},{id:"pixtral-large-latest",displayName:"Pixtral Large (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-large-2411",displayName:"Mistral Large 2.1",provider:"mistral",contextWindow:131072,outputLimit:16384},{id:"codestral-latest",displayName:"Codestral (latest)",provider:"mistral",contextWindow:256000,outputLimit:4096},{id:"mistral-large-latest",displayName:"Mistral Large (latest)",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"mistral-small-2506",displayName:"Mistral Small 3.2",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"pixtral-12b",displayName:"Pixtral 12B",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"ministral-8b-latest",displayName:"Ministral 8B (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-embed",displayName:"Mistral Embed",provider:"mistral",contextWindow:8000,outputLimit:3072},{id:"magistral-small",displayName:"Magistral Small",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-small-2603",displayName:"Mistral Small 4",provider:"mistral",contextWindow:256000,outputLimit:256000},{id:"ministral-3b-latest",displayName:"Ministral 3B (latest)",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"open-mixtral-8x22b",displayName:"Mixtral 8x22B",provider:"mistral",contextWindow:64000,outputLimit:64000},{id:"devstral-small-2505",displayName:"Devstral Small 2505",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"devstral-medium-2507",displayName:"Devstral Medium",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-medium-latest",displayName:"Mistral Medium (latest)",provider:"mistral",contextWindow:128000,outputLimit:16384},{id:"open-mistral-7b",displayName:"Mistral 7B",provider:"mistral",contextWindow:8000,outputLimit:8000},{id:"devstral-medium-latest",displayName:"Devstral 2 (latest)",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"mistral-medium-2505",displayName:"Mistral Medium 3",provider:"mistral",contextWindow:131072,outputLimit:131072},{id:"devstral-small-2507",displayName:"Devstral Small",provider:"mistral",contextWindow:128000,outputLimit:128000},{id:"mistral-medium-2508",displayName:"Mistral Medium 3.1",provider:"mistral",contextWindow:262144,outputLimit:262144},{id:"qwen3-235b-a22b",displayName:"Qwen3 235B-A22B",provider:"alibaba",contextWindow:131072,outputLimit:16384},{id:"qwen3-coder-plus",displayName:"Qwen3 Coder Plus",provider:"alibaba",contextWindow:1048576,outputLimit:65536},{id:"qwen-vl-ocr",displayName:"Qwen-VL OCR",provider:"alibaba",contextWindow:34096,outputLimit:4096},{id:"qwen-omni-turbo-realtime",displayName:"Qwen-Omni Turbo Realtime",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen3-8b",displayName:"Qwen3 8B",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3.5-397b-a17b",displayName:"Qwen3.5 397B-A17B",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwq-plus",displayName:"QwQ Plus",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen-vl-plus",displayName:"Qwen-VL Plus",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-livetranslate-flash-realtime",displayName:"Qwen3-LiveTranslate Flash Realtime",provider:"alibaba",contextWindow:53248,outputLimit:4096},{id:"qwen3-32b",displayName:"Qwen3 32B",provider:"alibaba",contextWindow:131072,outputLimit:16384},{id:"qwen-max",displayName:"Qwen Max",provider:"alibaba",contextWindow:32768,outputLimit:8192},{id:"qwen-plus",displayName:"Qwen Plus",provider:"alibaba",contextWindow:1e6,outputLimit:32768},{id:"qwen-omni-turbo",displayName:"Qwen-Omni Turbo",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen-flash",displayName:"Qwen Flash",provider:"alibaba",contextWindow:1e6,outputLimit:32768},{id:"qwen2-5-vl-7b-instruct",displayName:"Qwen2.5-VL 7B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3.6-plus",displayName:"Qwen3.6 Plus",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen3-max",displayName:"Qwen3 Max",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen3-omni-flash",displayName:"Qwen3-Omni Flash",provider:"alibaba",contextWindow:65536,outputLimit:16384},{id:"qwen2-5-72b-instruct",displayName:"Qwen2.5 72B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-vl-235b-a22b",displayName:"Qwen3-VL 235B-A22B",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen3-asr-flash",displayName:"Qwen3-ASR Flash",provider:"alibaba",contextWindow:53248,outputLimit:4096},{id:"qwen3-next-80b-a3b-thinking",displayName:"Qwen3-Next 80B-A3B (Thinking)",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen-mt-plus",displayName:"Qwen-MT Plus",provider:"alibaba",contextWindow:16384,outputLimit:8192},{id:"qwen-vl-max",displayName:"Qwen-VL Max",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-coder-flash",displayName:"Qwen3 Coder Flash",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen2-5-7b-instruct",displayName:"Qwen2.5 7B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen2-5-14b-instruct",displayName:"Qwen2.5 14B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen2-5-32b-instruct",displayName:"Qwen2.5 32B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-next-80b-a3b-instruct",displayName:"Qwen3-Next 80B-A3B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen-plus-character-ja",displayName:"Qwen Plus Character (Japanese)",provider:"alibaba",contextWindow:8192,outputLimit:512},{id:"qwen3-omni-flash-realtime",displayName:"Qwen3-Omni Flash Realtime",provider:"alibaba",contextWindow:65536,outputLimit:16384},{id:"qwen3-vl-30b-a3b",displayName:"Qwen3-VL 30B-A3B",provider:"alibaba",contextWindow:131072,outputLimit:32768},{id:"qwen3-vl-plus",displayName:"Qwen3-VL Plus",provider:"alibaba",contextWindow:262144,outputLimit:32768},{id:"qwen3-coder-480b-a35b-instruct",displayName:"Qwen3-Coder 480B-A35B Instruct",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen3-coder-30b-a3b-instruct",displayName:"Qwen3-Coder 30B-A3B Instruct",provider:"alibaba",contextWindow:262144,outputLimit:65536},{id:"qwen-turbo",displayName:"Qwen Turbo",provider:"alibaba",contextWindow:1e6,outputLimit:16384},{id:"qwen-mt-turbo",displayName:"Qwen-MT Turbo",provider:"alibaba",contextWindow:16384,outputLimit:8192},{id:"qwen2-5-omni-7b",displayName:"Qwen2.5-Omni 7B",provider:"alibaba",contextWindow:32768,outputLimit:2048},{id:"qwen3.5-plus",displayName:"Qwen3.5 Plus",provider:"alibaba",contextWindow:1e6,outputLimit:65536},{id:"qwen2-5-vl-72b-instruct",displayName:"Qwen2.5-VL 72B Instruct",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qvq-max",displayName:"QVQ Max",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"qwen3-14b",displayName:"Qwen3 14B",provider:"alibaba",contextWindow:131072,outputLimit:8192},{id:"command-a-reasoning-08-2025",displayName:"Command A Reasoning",provider:"cohere",contextWindow:256000,outputLimit:32000},{id:"command-r7b-12-2024",displayName:"Command R7B",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-vision-8b",displayName:"Aya Vision 8B",provider:"cohere",contextWindow:16000,outputLimit:4000},{id:"command-r-plus-08-2024",displayName:"Command R+",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-expanse-8b",displayName:"Aya Expanse 8B",provider:"cohere",contextWindow:8000,outputLimit:4000},{id:"command-r7b-arabic-02-2025",displayName:"Command R7B Arabic",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"command-a-vision-07-2025",displayName:"Command A Vision",provider:"cohere",contextWindow:128000,outputLimit:8000},{id:"c4ai-aya-vision-32b",displayName:"Aya Vision 32B",provider:"cohere",contextWindow:16000,outputLimit:4000},{id:"command-a-translate-08-2025",displayName:"Command A Translate",provider:"cohere",contextWindow:8000,outputLimit:8000},{id:"command-r-08-2024",displayName:"Command R",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"c4ai-aya-expanse-32b",displayName:"Aya Expanse 32B",provider:"cohere",contextWindow:128000,outputLimit:4000},{id:"command-a-03-2025",displayName:"Command A",provider:"cohere",contextWindow:256000,outputLimit:8000},{id:"anthropic.claude-3-5-sonnet-20241022-v2:0",displayName:"Claude Sonnet 3.5 v2",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"openai.gpt-oss-safeguard-120b",displayName:"GPT OSS Safeguard 120B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-nano-3-30b",displayName:"NVIDIA Nemotron Nano 3 30B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-2-90b-instruct-v1:0",displayName:"Llama 3.2 90B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-super-3-120b",displayName:"NVIDIA Nemotron 3 Super 120B A12B",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"writer.palmyra-x5-v1:0",displayName:"Palmyra X5",provider:"amazon-bedrock",contextWindow:1040000,outputLimit:8192},{id:"mistral.ministral-3-8b-instruct",displayName:"Ministral 3 8B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"au.anthropic.claude-opus-4-6-v1",displayName:"AU Anthropic Claude Opus 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"mistral.ministral-3-3b-instruct",displayName:"Ministral 3 3B",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"amazon.nova-premier-v1:0",displayName:"Nova Premier",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:16384},{id:"anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.devstral-2-123b",displayName:"Devstral 2 123B",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"global.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.voxtral-small-24b-2507",displayName:"Voxtral Small 24B 2507",provider:"amazon-bedrock",contextWindow:32000,outputLimit:8192},{id:"google.gemma-3-12b-it",displayName:"Google Gemma 3 12B",provider:"amazon-bedrock",contextWindow:131072,outputLimit:8192},{id:"amazon.nova-pro-v1:0",displayName:"Nova Pro",provider:"amazon-bedrock",contextWindow:300000,outputLimit:8192},{id:"anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"minimax.minimax-m2",displayName:"MiniMax M2",provider:"amazon-bedrock",contextWindow:204608,outputLimit:128000},{id:"global.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"mistral.pixtral-large-2502-v1:0",displayName:"Pixtral Large (25.02)",provider:"amazon-bedrock",contextWindow:128000,outputLimit:8192},{id:"meta.llama4-maverick-17b-instruct-v1:0",displayName:"Llama 4 Maverick 17B Instruct",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:16384},{id:"us.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"us.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"amazon.nova-micro-v1:0",displayName:"Nova Micro",provider:"amazon-bedrock",contextWindow:128000,outputLimit:8192},{id:"global.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"openai.gpt-oss-20b-1:0",displayName:"gpt-oss-20b",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"zai.glm-5",displayName:"GLM-5",provider:"amazon-bedrock",contextWindow:202752,outputLimit:101376},{id:"qwen.qwen3-32b-v1:0",displayName:"Qwen3 32B (dense)",provider:"amazon-bedrock",contextWindow:16384,outputLimit:16384},{id:"deepseek.v3.2",displayName:"DeepSeek-V3.2",provider:"amazon-bedrock",contextWindow:163840,outputLimit:81920},{id:"eu.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"zai.glm-4.7-flash",displayName:"GLM-4.7-Flash",provider:"amazon-bedrock",contextWindow:200000,outputLimit:131072},{id:"us.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"amazon.nova-2-lite-v1:0",displayName:"Nova 2 Lite",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"qwen.qwen3-coder-480b-a35b-v1:0",displayName:"Qwen3 Coder 480B A35B Instruct",provider:"amazon-bedrock",contextWindow:131072,outputLimit:65536},{id:"meta.llama3-2-1b-instruct-v1:0",displayName:"Llama 3.2 1B Instruct",provider:"amazon-bedrock",contextWindow:131000,outputLimit:4096},{id:"amazon.nova-lite-v1:0",displayName:"Nova Lite",provider:"amazon-bedrock",contextWindow:300000,outputLimit:8192},{id:"meta.llama3-1-8b-instruct-v1:0",displayName:"Llama 3.1 8B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"google.gemma-3-27b-it",displayName:"Google Gemma 3 27B Instruct",provider:"amazon-bedrock",contextWindow:202752,outputLimit:8192},{id:"global.anthropic.claude-haiku-4-5-20251001-v1:0",displayName:"Claude Haiku 4.5 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"google.gemma-3-4b-it",displayName:"Gemma 3 4B IT",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama4-scout-17b-instruct-v1:0",displayName:"Llama 4 Scout 17B Instruct",provider:"amazon-bedrock",contextWindow:3500000,outputLimit:16384},{id:"deepseek.v3-v1:0",displayName:"DeepSeek-V3.1",provider:"amazon-bedrock",contextWindow:163840,outputLimit:81920},{id:"mistral.magistral-small-2509",displayName:"Magistral Small 1.2",provider:"amazon-bedrock",contextWindow:128000,outputLimit:40000},{id:"qwen.qwen3-next-80b-a3b",displayName:"Qwen/Qwen3-Next-80B-A3B-Instruct",provider:"amazon-bedrock",contextWindow:262000,outputLimit:262000},{id:"zai.glm-4.7",displayName:"GLM-4.7",provider:"amazon-bedrock",contextWindow:204800,outputLimit:131072},{id:"moonshot.kimi-k2-thinking",displayName:"Kimi K2 Thinking",provider:"amazon-bedrock",contextWindow:256000,outputLimit:256000},{id:"us.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"mistral.ministral-3-14b-instruct",displayName:"Ministral 14B 3.0",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"anthropic.claude-3-haiku-20240307-v1:0",displayName:"Claude Haiku 3",provider:"amazon-bedrock",contextWindow:200000,outputLimit:4096},{id:"deepseek.r1-v1:0",displayName:"DeepSeek-R1",provider:"amazon-bedrock",contextWindow:128000,outputLimit:32768},{id:"meta.llama3-1-405b-instruct-v1:0",displayName:"Llama 3.1 405B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"mistral.voxtral-mini-3b-2507",displayName:"Voxtral Mini 3B 2507",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"openai.gpt-oss-120b-1:0",displayName:"gpt-oss-120b",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"nvidia.nemotron-nano-12b-v2",displayName:"NVIDIA Nemotron Nano 12B v2 VL BF16",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"eu.anthropic.claude-opus-4-7",displayName:"Claude Opus 4.7 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"minimax.minimax-m2.5",displayName:"MiniMax M2.5",provider:"amazon-bedrock",contextWindow:196608,outputLimit:98304},{id:"meta.llama3-3-70b-instruct-v1:0",displayName:"Llama 3.3 70B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-1-70b-instruct-v1:0",displayName:"Llama 3.1 70B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"meta.llama3-2-3b-instruct-v1:0",displayName:"Llama 3.2 3B Instruct",provider:"amazon-bedrock",contextWindow:131000,outputLimit:4096},{id:"eu.anthropic.claude-sonnet-4-5-20250929-v1:0",displayName:"Claude Sonnet 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"eu.anthropic.claude-opus-4-5-20251101-v1:0",displayName:"Claude Opus 4.5 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"meta.llama3-2-11b-instruct-v1:0",displayName:"Llama 3.2 11B Instruct",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"moonshotai.kimi-k2.5",displayName:"Kimi K2.5",provider:"amazon-bedrock",contextWindow:256000,outputLimit:256000},{id:"au.anthropic.claude-sonnet-4-6",displayName:"AU Anthropic Claude Sonnet 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"openai.gpt-oss-safeguard-20b",displayName:"GPT OSS Safeguard 20B",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"qwen.qwen3-coder-30b-a3b-v1:0",displayName:"Qwen3 Coder 30B A3B Instruct",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"minimax.minimax-m2.1",displayName:"MiniMax M2.1",provider:"amazon-bedrock",contextWindow:204800,outputLimit:131072},{id:"qwen.qwen3-vl-235b-a22b",displayName:"Qwen/Qwen3-VL-235B-A22B-Instruct",provider:"amazon-bedrock",contextWindow:262000,outputLimit:262000},{id:"qwen.qwen3-coder-next",displayName:"Qwen3 Coder Next",provider:"amazon-bedrock",contextWindow:131072,outputLimit:65536},{id:"nvidia.nemotron-nano-9b-v2",displayName:"NVIDIA Nemotron Nano 9B v2",provider:"amazon-bedrock",contextWindow:128000,outputLimit:4096},{id:"mistral.mistral-large-3-675b-instruct",displayName:"Mistral Large 3",provider:"amazon-bedrock",contextWindow:256000,outputLimit:8192},{id:"qwen.qwen3-235b-a22b-2507-v1:0",displayName:"Qwen3 235B A22B 2507",provider:"amazon-bedrock",contextWindow:262144,outputLimit:131072},{id:"anthropic.claude-3-7-sonnet-20250219-v1:0",displayName:"Claude Sonnet 3.7",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"writer.palmyra-x4-v1:0",displayName:"Palmyra X4",provider:"amazon-bedrock",contextWindow:122880,outputLimit:8192},{id:"anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-3-5-sonnet-20240620-v1:0",displayName:"Claude Sonnet 3.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"eu.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"eu.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (EU)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"us.anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"us.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"global.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"us.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"global.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (Global)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"us.anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6 (US)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"us.anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1 (US)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"global.anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4 (Global)",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"eu.anthropic.claude-sonnet-4-6",displayName:"Claude Sonnet 4.6 (EU)",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:64000},{id:"anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4",provider:"amazon-bedrock",contextWindow:200000,outputLimit:32000},{id:"anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4",provider:"amazon-bedrock",contextWindow:200000,outputLimit:64000},{id:"anthropic.claude-opus-4-6-v1",displayName:"Claude Opus 4.6",provider:"amazon-bedrock",contextWindow:1e6,outputLimit:128000},{id:"anthropic.claude-3-5-haiku-20241022-v1:0",displayName:"Claude Haiku 3.5",provider:"amazon-bedrock",contextWindow:200000,outputLimit:8192},{id:"gpt-5.2-chat",displayName:"GPT-5.2 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"codex-mini",displayName:"Codex Mini",provider:"azure",contextWindow:200000,outputLimit:1e5},{id:"phi-4-multimodal",displayName:"Phi-4-multimodal",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"phi-3.5-mini-instruct",displayName:"Phi-3.5-mini-instruct",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B 16E Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"grok-4-1-fast-reasoning",displayName:"Grok 4.1 Fast (Reasoning)",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"phi-3-medium-4k-instruct",displayName:"Phi-3-medium-instruct (4k)",provider:"azure",contextWindow:4096,outputLimit:1024},{id:"ministral-3b",displayName:"Ministral 3B",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"meta-llama-3.1-8b-instruct",displayName:"Meta-Llama-3.1-8B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"deepseek-v3-0324",displayName:"DeepSeek-V3-0324",provider:"azure",contextWindow:131072,outputLimit:131072},{id:"gpt-5-chat",displayName:"GPT-5 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"phi-3.5-moe-instruct",displayName:"Phi-3.5-MoE-instruct",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-5.3-chat",displayName:"GPT-5.3 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"phi-3-mini-128k-instruct",displayName:"Phi-3-mini-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"phi-4-reasoning",displayName:"Phi-4-reasoning",provider:"azure",contextWindow:32000,outputLimit:4096},{id:"meta-llama-3-70b-instruct",displayName:"Meta-Llama-3-70B-Instruct",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"phi-3-small-8k-instruct",displayName:"Phi-3-small-instruct (8k)",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"llama-3.2-90b-vision-instruct",displayName:"Llama-3.2-90B-Vision-Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"deepseek-r1",displayName:"DeepSeek-R1",provider:"azure",contextWindow:163840,outputLimit:163840},{id:"deepseek-v3.2-speciale",displayName:"DeepSeek-V3.2-Speciale",provider:"azure",contextWindow:128000,outputLimit:128000},{id:"cohere-command-a",displayName:"Command A",provider:"azure",contextWindow:256000,outputLimit:8000},{id:"llama-3.2-11b-vision-instruct",displayName:"Llama-3.2-11B-Vision-Instruct",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"meta-llama-3.1-405b-instruct",displayName:"Meta-Llama-3.1-405B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"gpt-5.1-chat",displayName:"GPT-5.1 Chat",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"gpt-4-turbo-vision",displayName:"GPT-4 Turbo Vision",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"cohere-embed-v-4-0",displayName:"Embed v4",provider:"azure",contextWindow:128000,outputLimit:1536},{id:"gpt-3.5-turbo-0125",displayName:"GPT-3.5 Turbo 0125",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"cohere-embed-v3-multilingual",displayName:"Embed v3 Multilingual",provider:"azure",contextWindow:512,outputLimit:1024},{id:"grok-4-20-non-reasoning",displayName:"Grok 4.20 (Non-Reasoning)",provider:"azure",contextWindow:262000,outputLimit:8192},{id:"grok-4-fast-reasoning",displayName:"Grok 4 Fast (Reasoning)",provider:"azure",contextWindow:2000000,outputLimit:30000},{id:"mistral-small-2503",displayName:"Mistral Small 3.1",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"model-router",displayName:"Model Router",provider:"azure",contextWindow:128000,outputLimit:16384},{id:"gpt-3.5-turbo-1106",displayName:"GPT-3.5 Turbo 1106",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"deepseek-v3.1",displayName:"DeepSeek-V3.1",provider:"azure",contextWindow:131072,outputLimit:131072},{id:"phi-3-mini-4k-instruct",displayName:"Phi-3-mini-instruct (4k)",provider:"azure",contextWindow:4096,outputLimit:1024},{id:"meta-llama-3.1-70b-instruct",displayName:"Meta-Llama-3.1-70B-Instruct",provider:"azure",contextWindow:128000,outputLimit:32768},{id:"phi-4-mini-reasoning",displayName:"Phi-4-mini-reasoning",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"meta-llama-3-8b-instruct",displayName:"Meta-Llama-3-8B-Instruct",provider:"azure",contextWindow:8192,outputLimit:2048},{id:"phi-4-mini",displayName:"Phi-4-mini",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"grok-4-20-reasoning",displayName:"Grok 4.20 (Reasoning)",provider:"azure",contextWindow:262000,outputLimit:8192},{id:"gpt-3.5-turbo-0301",displayName:"GPT-3.5 Turbo 0301",provider:"azure",contextWindow:4096,outputLimit:4096},{id:"phi-3-small-128k-instruct",displayName:"Phi-3-small-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"deepseek-v3.2",displayName:"DeepSeek-V3.2",provider:"azure",contextWindow:128000,outputLimit:128000},{id:"phi-3-medium-128k-instruct",displayName:"Phi-3-medium-instruct (128k)",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-3.5-turbo-0613",displayName:"GPT-3.5 Turbo 0613",provider:"azure",contextWindow:16384,outputLimit:16384},{id:"phi-4",displayName:"Phi-4",provider:"azure",contextWindow:128000,outputLimit:4096},{id:"gpt-4-32k",displayName:"GPT-4 32K",provider:"azure",contextWindow:32768,outputLimit:32768},{id:"cohere-embed-v3-english",displayName:"Embed v3 English",provider:"azure",contextWindow:512,outputLimit:1024},{id:"phi-4-reasoning-plus",displayName:"Phi-4-reasoning-plus",provider:"azure",contextWindow:32000,outputLimit:4096},{id:"gpt-3.5-turbo-instruct",displayName:"GPT-3.5 Turbo Instruct",provider:"azure",contextWindow:4096,outputLimit:4096},{id:"deepseek-r1-0528",displayName:"DeepSeek-R1-0528",provider:"azure",contextWindow:163840,outputLimit:163840},{id:"codestral-2501",displayName:"Codestral 25.01",provider:"azure",contextWindow:256000,outputLimit:256000},{id:"llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama 4 Maverick 17B 128E Instruct FP8",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"mai-ds-r1",displayName:"MAI-DS-R1",provider:"azure",contextWindow:128000,outputLimit:8192},{id:"cohere-command-r-08-2024",displayName:"Command R",provider:"azure",contextWindow:128000,outputLimit:4000},{id:"cohere-command-r-plus-08-2024",displayName:"Command R+",provider:"azure",contextWindow:128000,outputLimit:4000}]});import{join as kc}from"path";import{homedir as gc}from"os";function Ku(){return Mc??kc(gc(),".tako","models-cache.json")}function A0(i){Cn.clear();for(let o of i)if(!Cn.has(o.id))Cn.set(o.id,o)}function Gc(){try{let o=$("fs").readFileSync(Ku(),"utf-8"),n=JSON.parse(o);if(typeof n?.fetchedAt!=="number"||!Array.isArray(n?.entries))return null;return n}catch{return null}}async function Sc(i){try{let o=await import("fs/promises"),n=Ku(),d=n.slice(0,n.lastIndexOf("/"));if(d)await o.mkdir(d,{recursive:!0}).catch(()=>{});await o.writeFile(n,JSON.stringify(i),"utf-8")}catch{}}function zi(){if(Qn)return;Qn=!0;let i=Gc();if(i&&Date.now()-i.fetchedAt<$c){A0(i.entries);return}A0(ri)}async function X0(){try{let i=await Zu();if(!i.length)return;A0(i),await Sc({fetchedAt:Date.now(),entries:i}),Qn=!0}catch{}}function Vu(i){let o=i.match(/^(.+?)(?:\[1m\]|:1m)$/i),n=o?o[1]:i,d=n.match(/^[^\/]+\/(.+)$/);return{lookupId:d?d[1]:n,is1m:!!o}}function H0(i){if(!Qn)zi();let{lookupId:o,is1m:n}=Vu(i),d=Cn.get(o);if(!d)return;if(n)return{...d,contextWindow:1e6};return d}var $c=86400000,Mc=null,Cn,Qn=!1;var Fu=N(()=>{Pn();Cn=new Map});import{join as Pc}from"path";function _u(){return qc??Pc(q,"tako-models-cache.json")}function K0(i,o){return`${i.replace(/\/+$/,"")}#${o}`}function V0(){if(Tu)return;Tu=!0;try{let i=$("fs"),o=JSON.parse(i.readFileSync(_u(),"utf-8"));if(o?.version!==1||typeof o.buckets!=="object")return;for(let[n,d]of Object.entries(o.buckets))if(typeof d?.fetchedAt==="number"&&Array.isArray(d.entries))Fo.set(n,d)}catch{}}async function Ic(){try{let i=await import("fs/promises"),o=_u(),n=o.slice(0,o.lastIndexOf("/"));if(n)await i.mkdir(n,{recursive:!0}).catch(()=>{});let d={version:1,buckets:Object.fromEntries(Fo)};await i.writeFile(o,JSON.stringify(d),"utf-8")}catch{}}function Oc(i){let o=i?.models;if(!Array.isArray(o))return[];let n=[];for(let d of o){let u=d?.slug;if(typeof u!=="string"||!u)continue;n.push({id:u,displayName:d.display_name||u,description:d.description||"",contextWindow:typeof d.context_window==="number"?d.context_window:0,sortOrder:typeof d.priority==="number"?d.priority:0,category:typeof d.model_category==="string"&&d.model_category?d.model_category:"chat"})}return n.sort((d,u)=>d.sortOrder-u.sortOrder||d.id.localeCompare(u.id)),n}function To(i){return i.filter((o)=>!o.category||o.category==="chat")}function Xi(i,o){return V0(),Fo.get(K0(i,o))?.entries??null}async function qn(i,o,n){V0();let d=K0(i,n),u=Z0.get(d);if(u)return u;let e=(async()=>{try{let r=i.replace(/\/+$/,"")+`/v1/models?client_version=tako-cli&api_type=${n}`,t=await fetch(r,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(Qc)});if(!t.ok)return;let c=await t.json(),p=Oc(c);if(p.length===0)return;Fo.set(d,{fetchedAt:Date.now(),entries:p}),await Ic()}catch{}finally{Z0.delete(d)}})();return Z0.set(d,e),e}function F0(i){V0();let o=Date.now(),n=[];for(let d of i){if(d.type!=="tako"&&d.type!=="custom")continue;if(!d.apiKey||!d.baseUrl)continue;for(let u of["openai","claude"]){let e=Fo.get(K0(d.baseUrl,u));if(e&&o-e.fetchedAt<Cc)continue;let r=qn(d.baseUrl,d.apiKey,u);if(!e)n.push(r)}}return Promise.all(n).then(()=>{return})}var Cc=3600000,Qc=8000,qc=null,Fo,Tu=!1,Z0;var T0=N(()=>{C();Fo=new Map,Z0=new Map});var fo=N(()=>{Fu();T0()});import{homedir as Jc}from"os";import{join as E0}from"path";function ju(i,o){let n={...i};for(let[d,u]of Object.entries(o))if(u&&typeof u==="object"&&!Array.isArray(u)&&n[d]&&typeof n[d]==="object"&&!Array.isArray(n[d]))n[d]=ju(n[d],u);else n[d]=u;return n}function Rc(i){if(i.model_providers?.crs)delete i.model_providers.crs;if(i.model_provider==="crs")delete i.model_provider;if(i.openai_base_url)delete i.openai_base_url;let o=i.model_providers?.tako;if(o)delete o.wire_api,delete o.request_max_retries,delete o.stream_max_retries,delete o.api_key,delete o.env_key;return i}function Du(i){if(i.model_providers?.tako)delete i.model_providers.tako.supports_websockets;if(i.features){if(delete i.features.multi_agent,delete i.features.responses_websockets_v2,Object.keys(i.features).length===0)delete i.features}}async function Bc(i,o){let n=await import("fs/promises");try{await n.mkdir(U0,{recursive:!0})}catch{}let d={};try{d=O0(await n.readFile(Eu,"utf-8"))}catch{}if(d=Rc(d),i.type==="codex-subscription")if(delete d.model_provider,d.check_for_update_on_startup=!1,d.remote_compaction_v2=!1,Du(d),i.authData)await Bun.write(Uu,JSON.stringify(i.authData,null,2)+`
267
+ `);else await Bun.write(Uu,JSON.stringify({OPENAI_API_KEY:null,auth_mode:"chatgpt"},null,2)+`
268
+ `);else{let u;if(i.type==="tako")u=`${Y}/v1`;else if(i.type==="deepseek")u="https://api.deepseek.com/v1";else u=`${i.baseUrl}/v1`;let r=o?.find((l)=>l.startsWith("model-"))?.slice(6)||i.model||"gpt-5.5",t=/^gpt[-.]/i.test(r),c;if(!t){if(c=ri.find((x)=>x.id===r)?.contextWindow,!c&&(i.type==="tako"||i.type==="custom")&&i.baseUrl){let x=Xi(i.baseUrl,"openai")?.find((w)=>w.id===r);if(x&&x.contextWindow>0)c=x.contextWindow}if(!c)c=i.modelContextWindow}else delete d.model_context_window;let p={name:"tako",base_url:u,requires_openai_auth:!0};if(i.apiKey)p.experimental_bearer_token=i.apiKey;Du(d);let a={model_provider:"tako",model:r,check_for_update_on_startup:!1,remote_compaction_v2:!1,model_providers:{tako:p}};if(c)a.model_context_window=c;d=ju(d,a)}await Bun.write(Eu,Y0(d))}function _0(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Zc(i){if(!i.baseUrl)return null;let o=Xi(i.baseUrl,"openai");if(!o||o.length===0)return null;let n=To(o);if(n.length===0)return null;return n.map((d)=>({id:`model-${d.id}`,label:{en:d.displayName,zh:d.displayName},shortLabel:d.displayName,description:{en:`Use ${d.displayName} (${_0(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${_0(d.contextWindow)}\uFF09`},flag:`--model ${d.id}`,args:["--model",d.id],group:"model"}))}function Kc(i){if(zi(),i&&(i.type==="tako"||i.type==="custom")){let d=Zc(i);if(d)return d}let o=i?.type==="deepseek"?Hc:Xc,n=[];for(let d of o){let u=ri.find((t)=>t.id===d),e=_0(u?.contextWindow??0),r=u?.displayName??d;n.push({id:`model-${d}`,label:{en:r,zh:r},shortLabel:r,description:{en:`Use ${r} (${e} ctx)`,zh:`\u4F7F\u7528 ${r}\uFF08\u4E0A\u4E0B\u6587 ${e}\uFF09`},flag:`--model ${d}`,args:["--model",d],group:"model"})}return n}function Vc(i){return[...Ac,...Kc(i)]}var U0,Eu,Uu,Yc,Ac,Xc,Hc;var ie=N(()=>{_();C();Hu();fo();Pn();U0=E0(Jc(),".codex"),Eu=E0(U0,"config.toml"),Uu=E0(U0,"auth.json");Yc={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars(i){return{}},setupConfigFiles:Bc,launchOptions:(i)=>Vc(i)},Ac=[{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"]},{id:"bypass-sandbox",label:{en:"Bypass Sandbox",zh:"\u7ED5\u8FC7\u5BA1\u6279\u4E0E\u6C99\u7BB1"},shortLabel:"Bypass",description:{en:"DANGEROUS: skip all approvals & sandbox (use only in disposable envs)",zh:"\u5371\u9669\uFF1A\u8DF3\u8FC7\u6240\u6709\u5BA1\u6279\u4E0E\u6C99\u7BB1\u9650\u5236\uFF08\u4EC5\u9650\u9694\u79BB/\u4E34\u65F6\u73AF\u5883\u4F7F\u7528\uFF09"},flag:"--dangerously-bypass-approvals-and-sandbox",args:["--dangerously-bypass-approvals-and-sandbox"]}],Xc=["gpt-5.5","gpt-5.4","gpt-5.3-codex","gpt-5.3"],Hc=["deepseek-v4-flash","deepseek-v4-pro"];yo(Yc)});function ni(i){switch(i){case"claude-subscription":return["claude-code"];case"codex-subscription":return["codex"];case"anthropic":return["claude-code"];case"deepseek":return["claude-code","codex"];case"xiaomi":return["claude-code"];case"custom":return["claude-code","codex"];case"tako":default:return}}function _o(i){switch(i){case"deepseek":return"deepseek-v4-flash";case"xiaomi":return"mimo-v2.5-pro";case"tako":return;default:return}}function D0(i){switch(i){case"deepseek":return"https://api.deepseek.com";case"xiaomi":return id;default:return}}function od(i){return i?.startsWith("tp-")?oe:id}function Eo(i){switch(i){case"deepseek":return["deepseek-v4-flash","deepseek-v4-pro"];case"xiaomi":return Tc;case"tako":case"anthropic":return Fc;default:return}}function Hi(i,o){let n=i.supportedClients;if(!n||n.length===0)return!0;return n.includes(o)}var oo,j0="https://api.deepseek.com/anthropic",id="https://api.xiaomimimo.com/anthropic",oe="https://token-plan-cn.xiaomimimo.com/anthropic",Fc,Tc;var Si=N(()=>{oo={"claude-subscription":{en:"Claude Subscription",zh:"Claude \u8BA2\u9605\u76F4\u8FDE"},"codex-subscription":{en:"Codex Subscription",zh:"Codex \u8BA2\u9605\u76F4\u8FDE"},tako:{en:"Tako Proxy",zh:"Tako \u4EE3\u7406"},anthropic:{en:"Anthropic Direct",zh:"Anthropic \u76F4\u8FDE"},deepseek:{en:"DeepSeek",zh:"DeepSeek"},xiaomi:{en:"Xiaomi MiMo",zh:"\u5C0F\u7C73 MiMo"},custom:{en:"Custom Proxy",zh:"\u81EA\u5B9A\u4E49\u4EE3\u7406"}};Fc=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Tc=["mimo-v2.5-pro"]});function _c(i){let o=!!process.stderr.isTTY,n=(u)=>process.stderr.write(u),d=i;if(o)n(`\u23F3 ${i}`);else n(`\u23F3 ${i}
269
+ `);return{update(u){if(u===d)return;if(d=u,o)n(`\r\x1B[2K\u23F3 ${u}`);else n(`\u23F3 ${u}
270
+ `)},stop(u){if(o)n("\r\x1B[2K");if(u)n(`\u2713 ${u}
271
+ `)}}}function Zi(){let i=null;return{start(o){i=ho.spin(o)},stop(o){i?.stop(o),i=null},update(o){i?.update(o)}}}var Ec,ho,W;var Pi=N(()=>{Ec={info:(i)=>console.log(`\u2139 ${i}`),warn:(i)=>console.log(`\u26A0 ${i}`),error:(i)=>console.error(`\u2717 ${i}`),success:(i)=>console.log(`\u2713 ${i}`),spin:_c},ho=Ec,W={info:(i)=>ho.info(i),warn:(i)=>ho.warn(i),error:(i)=>ho.error(i),success:(i)=>ho.success(i),message:(i)=>ho.info(i),debug:(i)=>{if(process.env.TAKO_DEV)process.stderr.write(`[debug] ${i}
272
+ `)}}});var ne={};mi(ne,{t:()=>k,setLocale:()=>nd,getLocale:()=>Ci,detectLocale:()=>no,clearLocaleOverride:()=>Uc});function no(){if(In)return In;let i=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL||"";if(i.toLowerCase().includes("zh")||i.toLowerCase().includes("chinese"))return"zh";try{if(Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh"))return"zh"}catch{}return"zh"}function nd(i){In=i}function Uc(){In=null}function k(i,o){let n=no(),d=i.split("."),u=Dc;for(let r of d)if(u=u?.[r],!u)return i;let e=u[n]||u.en||i;if(o)for(let[r,t]of Object.entries(o))e=e.replace(`{${r}}`,String(t));return e}function Ci(){return no()}var In=null,Dc;var X=N(()=>{Dc={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 [args...] Launch Claude Code (passes extra args through, e.g. --model)",zh:" --claude [\u53C2\u6570...] \u542F\u52A8 Claude Code\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 claude\uFF0C\u5982 --model\uFF09"},shortcutCodex:{en:" --codex [args...] Launch Codex (passes extra args through)",zh:" --codex [\u53C2\u6570...] \u542F\u52A8 Codex\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 codex\uFF09"},shortcutGemini:{en:" --gemini [args...] Launch Gemini CLI (passes extra args through)",zh:" --gemini [\u53C2\u6570...] \u542F\u52A8 Gemini CLI\uFF08\u989D\u5916\u53C2\u6570\u900F\u4F20\u7ED9 gemini\uFF09"},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"},exampleClaudeModel:{en:" tako --claude --model claude-opus-4-7 Launch Claude Code with a specific model",zh:" tako --claude --model claude-opus-4-7 \u6307\u5B9A\u6A21\u578B\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:
273
273
  {fields}`,zh:`\u68C0\u6D4B\u5230 Claude Code settings \u4E2D\u5B58\u5728\u4E0E Tako \u51B2\u7A81\u7684\u914D\u7F6E\uFF1A
274
- {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"},usingIsolatedSettings:{en:"Using Tako-managed Claude Code settings for this launch: {path}",zh:"\u672C\u6B21\u542F\u52A8\u5C06\u4F7F\u7528 Tako \u6258\u7BA1\u7684 Claude Code settings\uFF1A{path}"},subscriptionMissingAuth:{en:"Selected Claude account has no captured credentials. Run `claude /login` for that account, then re-detect in Tako.",zh:"\u76EE\u6807 Claude \u8D26\u53F7\u7F3A\u5C11\u51ED\u636E\u3002\u8BF7\u7528 `claude /login` \u767B\u5F55\u8BE5\u8D26\u53F7\u540E\uFF0C\u8BA9 Tako \u91CD\u65B0\u68C0\u6D4B\u4E00\u6B21\u3002"},subscriptionSwitched:{en:"Switched Claude Code login to {email}",zh:"\u5DF2\u5207\u6362 Claude Code \u767B\u5F55\u8D26\u53F7\u4E3A {email}"},unknownCurrentAccount:{en:"Current Claude login ({email}) is not tracked by Tako; its tokens will be overwritten.",zh:"\u5F53\u524D Claude \u767B\u5F55\u8D26\u53F7 ({email}) \u672A\u88AB Tako \u8BB0\u5F55\uFF0C\u5207\u6362\u540E\u8BE5\u8D26\u53F7 token \u5C06\u88AB\u8986\u76D6\u3002"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},providers:{management:{en:"Manage Providers",zh:"\u7BA1\u7406\u670D\u52A1\u5546"},selectProvider:{en:"Select provider:",zh:"\u9009\u62E9\u670D\u52A1\u5546\uFF1A"},selectType:{en:"Provider type:",zh:"\u670D\u52A1\u5546\u7C7B\u578B\uFF1A"},enterName:{en:"Provider name:",zh:"\u670D\u52A1\u5546\u540D\u79F0\uFF1A"},enterApiKey:{en:"API Key:",zh:"API Key\uFF1A"},enterBaseUrl:{en:"Base URL:",zh:"\u57FA\u7840 URL\uFF1A"},add:{en:"Add Provider",zh:"\u6DFB\u52A0\u670D\u52A1\u5546"},edit:{en:"Edit Provider",zh:"\u7F16\u8F91\u670D\u52A1\u5546"},delete:{en:"Delete Provider",zh:"\u5220\u9664\u670D\u52A1\u5546"},setDefault:{en:"Set as Default",zh:"\u8BBE\u4E3A\u9ED8\u8BA4"},rescan:{en:"Re-scan Subscriptions",zh:"\u91CD\u65B0\u626B\u63CF\u8BA2\u9605"},back:{en:"Back",zh:"\u8FD4\u56DE"},added:{en:"Provider added",zh:"\u670D\u52A1\u5546\u5DF2\u6DFB\u52A0"},deleted:{en:"Provider deleted",zh:"\u670D\u52A1\u5546\u5DF2\u5220\u9664"},updated:{en:"Provider updated",zh:"\u670D\u52A1\u5546\u5DF2\u66F4\u65B0"},defaultSet:{en:"Default provider set",zh:"\u9ED8\u8BA4\u670D\u52A1\u5546\u5DF2\u8BBE\u7F6E"},noProviders:{en:"No providers configured",zh:"\u672A\u914D\u7F6E\u670D\u52A1\u5546"},noCompatible:{en:"No provider supports {client}",zh:"\u6CA1\u6709\u652F\u6301 {client} \u7684\u670D\u52A1\u5546"},defaultLabel:{en:"(default)",zh:"\uFF08\u9ED8\u8BA4\uFF09"},detected:{en:"Detected: {name}",zh:"\u68C0\u6D4B\u5230\uFF1A{name}"},confirmDelete:{en:"Delete {name}?",zh:"\u786E\u8BA4\u5220\u9664 {name}\uFF1F"},scanComplete:{en:"Scan complete, found {count} new provider(s)",zh:"\u626B\u63CF\u5B8C\u6210\uFF0C\u53D1\u73B0 {count} \u4E2A\u65B0\u670D\u52A1\u5546"}}}});var qn={};ii(qn,{writeClaudeAuth:()=>ma,readClaudeAuth:()=>la});import{homedir as uu,platform as ea,userInfo as ua}from"os";import{join as o0}from"path";function tu(){return[process.env.USER||(()=>{try{return ua().username}catch{return""}})(),"root"].filter(Boolean)}async function ra(i){let o=Bun.spawn(["security","find-generic-password","-s",ru,"-a",i,"-w"],{stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0)return null;try{return JSON.parse(n.trim())}catch{return null}}async function ta(){for(let i of tu()){let o=await ra(i);if(o)return o}return null}async function ca(i){let o=JSON.stringify(i),n=tu()[0],d=Bun.spawn(["security","add-generic-password","-U","-s",ru,"-a",n,"-w",o],{stdout:"pipe",stderr:"pipe"}),e=await d.exited;if(e!==0){let u=await new Response(d.stderr).text();throw Error(`security add-generic-password failed (${e}): ${u.trim()}`)}}async function aa(){try{let i=await import("fs/promises");return JSON.parse(await i.readFile(au,"utf-8"))}catch{return null}}async function pa(i){let o=await import("fs/promises");await o.mkdir(cu,{recursive:!0}),await o.writeFile(au,JSON.stringify(i,null,2)+`
275
- `,{mode:384})}async function la(){let i=pu?await ta():await aa(),o;try{let n=await import("fs/promises"),d=JSON.parse(await n.readFile(i0,"utf-8"));if(d.oauthAccount&&typeof d.oauthAccount==="object")o=d.oauthAccount}catch{}return{credentials:i??void 0,oauthAccount:o}}async function ma(i){if(i.credentials)if(pu)await ca(i.credentials);else await pa(i.credentials);if(i.oauthAccount){let o=await import("fs/promises"),n={};try{n=JSON.parse(await o.readFile(i0,"utf-8"))}catch{}n.oauthAccount=i.oauthAccount,await o.writeFile(i0,JSON.stringify(n,null,2)+`
276
- `)}}var ru="Claude Code-credentials",cu,au,i0,pu;var On=N(()=>{cu=o0(uu(),".claude"),au=o0(cu,".credentials.json"),i0=o0(uu(),".claude.json"),pu=ea()==="darwin"});var lu={};ii(lu,{updateProvider:()=>Zi,setDefaultProvider:()=>d0,setClientProvider:()=>e0,resolveXiaomiBaseUrl:()=>Dd,resolveProviderContext:()=>_,migrateIfNeeded:()=>u0,mergeDetectedProviders:()=>Uo,isProviderCompatible:()=>Hi,getProvidersForClient:()=>Qi,getProviders:()=>V,getProvider:()=>xa,getModelChoices:()=>Eo,getDefaultSupportedClients:()=>di,getDefaultProvider:()=>ei,getDefaultModel:()=>Fo,getDefaultBaseUrl:()=>Ed,getClientProvider:()=>qi,fixupProviders:()=>r0,detectProviders:()=>_o,deleteProvider:()=>n0,addProvider:()=>eo,XIAOMI_TOKEN_PLAN_URL:()=>ou,XIAOMI_ANTHROPIC_URL:()=>Ud,PROVIDER_TYPE_NAMES:()=>io,DEEPSEEK_ANTHROPIC_URL:()=>_d});async function V(){return(await z()).providers??[]}async function xa(i){return(await V()).find((n)=>n.id===i)}async function ei(){let i=await z(),o=i.providers??[];if(o.length===0)return;if(i.defaultProviderId){let n=o.find((d)=>d.id===i.defaultProviderId);if(n)return n}return o[0]}async function Qi(i){return(await V()).filter((d)=>Hi(d,i)).sort((d,e)=>{let u=d.lastUsedAt?new Date(d.lastUsedAt).getTime():0,r=e.lastUsedAt?new Date(e.lastUsedAt).getTime():0;if(u!==r)return r-u;return new Date(e.createdAt).getTime()-new Date(d.createdAt).getTime()})}async function eo(i){let o=await z(),n={...i,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(o.providers=[...o.providers??[],n],!o.defaultProviderId)o.defaultProviderId=n.id;return await K(o),n}async function Zi(i,o){let n=await z(),d=n.providers??[],e=d.findIndex((u)=>u.id===i);if(e===-1)return;d[e]={...d[e],...o},n.providers=d,await K(n)}async function n0(i){let o=await z();if((o.providers??[]).find((d)=>d.id===i)?.builtin)return;if(o.providers=(o.providers??[]).filter((d)=>d.id!==i),o.defaultProviderId===i)o.defaultProviderId=o.providers[0]?.id;if(o.clientProviderMap){for(let[d,e]of Object.entries(o.clientProviderMap))if(e===i)delete o.clientProviderMap[d]}await K(o)}async function d0(i){let o=await z();if(!(o.providers??[]).some((d)=>d.id===i))return;o.defaultProviderId=i,await K(o)}async function qi(i){let o=await z(),n=o.clientProviderMap?.[i];if(n){let d=(o.providers??[]).find((e)=>e.id===n);if(d&&Hi(d,i))return d}return}async function e0(i,o){let n=await z();n.clientProviderMap={...n.clientProviderMap,[i]:o};let d=n.providers??[],e=d.findIndex((u)=>u.id===o);if(e!==-1)d[e]={...d[e],lastUsedAt:new Date().toISOString()},n.providers=d;await K(n)}function _(i){return{type:i.type,apiKey:i.apiKey,baseUrl:i.baseUrl,authData:i.authData,model:i.model,modelContextWindow:i.modelContextWindow}}async function wa(){try{let i=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),o=await new Response(i.stdout).text();if(await i.exited!==0)return null;let d=JSON.parse(o.trim());if(!d.loggedIn||d.authMethod!=="claude.ai")return null;let e=d.subscriptionType||"pro",u=d.email||"",r=`Claude ${e.charAt(0).toUpperCase()+e.slice(1)}${u?` (${u})`:""}`,{readClaudeAuth:t}=await Promise.resolve().then(() => (On(),qn)),c=await t(),a=c.credentials||c.oauthAccount?{credentials:c.credentials,oauthAccount:c.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:r,type:"claude-subscription",supportedClients:di("claude-subscription"),createdAt:new Date().toISOString(),email:u,subscriptionType:e,authData:a}}catch{return null}}async function ya(){try{let{homedir:i}=await import("os"),{join:o}=await import("path"),n=await import("fs/promises"),d=o(i(),".codex","auth.json"),e=JSON.parse(await n.readFile(d,"utf-8"));if(e.auth_mode!=="chatgpt"||!e.tokens?.access_token)return null;let u="";try{u=JSON.parse(atob(e.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:e,email:u}}catch{return null}}async function sa(){let i=await ya();if(i){let{auth:o,email:n}=i;return{id:crypto.randomUUID(),name:n?`Codex Plus (${n})`:"Codex Subscription",type:"codex-subscription",email:n||void 0,supportedClients:di("codex-subscription"),authData:o,createdAt:new Date().toISOString()}}try{let o=Bun.spawn(["codex","login","status"],{stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0||!n.includes("Logged in")||n.includes("cr_"))return null;return{id:crypto.randomUUID(),name:"Codex Subscription",type:"codex-subscription",supportedClients:di("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function _o(){let i=[],[o,n]=await Promise.all([wa(),sa()]);if(o)i.push(o);if(n)i.push(n);return i}async function Uo(i){let o=await z(),n=o.providers??[],d=new Set(n.map((u)=>`${u.type}:${u.email||""}`)),e=0;for(let u of i){let r=`${u.type}:${u.email||""}`;if(!d.has(r))n.push(u),d.add(r),e++;else if(u.authData){let t=n.find((c)=>c.type===u.type&&c.email===u.email);if(t)t.authData=u.authData}}if(e>0){if(o.providers=n,!o.defaultProviderId&&n.length>0)o.defaultProviderId=n[0].id;await K(o)}return e}async function u0(){let i=await z();if(!i.apiKey||i.providers&&i.providers.length>0)return!1;let o={id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:A,apiId:i.apiId,supportedClients:di("tako"),createdAt:new Date().toISOString(),builtin:!0};return i.providers=[o],i.defaultProviderId=o.id,await K(i),!0}async function r0(){let i=await z(),o=i.providers??[],n=!1;for(let d of o)if(d.type==="tako"&&!d.builtin)d.builtin=!0,n=!0;if(i.apiKey&&!o.some((d)=>d.type==="tako")){if(o.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:A,apiId:i.apiId,supportedClients:di("tako"),createdAt:new Date().toISOString(),builtin:!0}),!i.defaultProviderId)i.defaultProviderId=o[o.length-1].id;n=!0}if(n)i.providers=o,await K(i)}var ai=N(()=>{C();Si();Si()});import{homedir as va}from"os";import{dirname as fa,join as xu}from"path";function Na(i){if(i.startsWith("ANTHROPIC_"))return!0;return La.includes(i)}function Wa(i){let o={...i},n=[],d=i.env;if(d&&typeof d==="object"&&!Array.isArray(d)){let e={...d};for(let u of Object.keys(e))if(Na(u))n.push(u),delete e[u];if(n.length>0)if(Object.keys(e).length===0)delete o.env;else o.env=e}return{settings:o,cleanedFields:n}}async function ka(i={}){let o=await import("fs/promises"),n=i.sourcePath??ha,d=i.targetPath??ba,e;try{e=await o.readFile(n,"utf-8")}catch{return null}let u;try{u=JSON.parse(e)}catch{return null}let{settings:r,cleanedFields:t}=Wa(u);if(t.length===0)return null;if(i.logConflicts!==!1)L.warn(g("claudeCode.settingsDetected",{fields:t.join(", ")})),L.info(g("claudeCode.usingIsolatedSettings",{path:d}));return await o.mkdir(fa(d),{recursive:!0}),await o.writeFile(d,JSON.stringify(r,null,2)+`
277
- `),{args:["--setting-sources","project,local","--settings",d],cleanedFields:t,settingsPath:d}}async function za(i){let{readClaudeAuth:o,writeClaudeAuth:n}=await Promise.resolve().then(() => (On(),qn)),{getProviders:d,updateProvider:e}=await Promise.resolve().then(() => (ai(),lu)),u=i.authData?.credentials,r=i.authData?.oauthAccount;if(!u){L.warn(g("claudeCode.subscriptionMissingAuth"));return}let t=await o(),c=t.oauthAccount?.emailAddress;if(c&&t.credentials){let l=(await d()).find((x)=>x.type==="claude-subscription"&&x.email===c);if(l){let x={credentials:t.credentials,oauthAccount:t.oauthAccount};if(JSON.stringify(l.authData)!==JSON.stringify(x))await e(l.id,{authData:x})}else if(c!==r?.emailAddress)L.warn(g("claudeCode.unknownCurrentAccount",{email:c}))}await n({credentials:u,oauthAccount:r});let a=r?.emailAddress||"?";L.info(g("claudeCode.subscriptionSwitched",{email:a}))}function Pa(i){let o=i.match(/^claude-(haiku|sonnet|opus)-(\d{1,2})-(\d{1,2})$/);if(o)return`${o[1].charAt(0).toUpperCase()+o[1].slice(1)} ${o[2]}.${o[3]}`;return ci.find((d)=>d.id===i)?.displayName??i}function fo(i){if(!i)return i;if(i.endsWith("[1m]")||/:1m$/i.test(i))return i;if(!/^(claude|deepseek|kimi|mimo)[-_]/i.test(i))return i;let o=ci.find((n)=>n.id===i);if(!o||o.contextWindow<1e6)return i;return`${i}[1m]`}function mu(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Ca(i){if(!i.baseUrl)return null;let o=Xi(i.baseUrl,"claude");if(!o||o.length===0)return null;let n=To(o);if(n.length===0)return null;return n.map((d)=>{let e=fo(d.id);return{id:`model-${d.id}`,label:{en:d.displayName,zh:d.displayName},shortLabel:d.displayName,description:{en:`Use ${d.displayName} (${mu(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${mu(d.contextWindow)}\uFF09`},flag:`--model ${e}`,args:[],envVars:{ANTHROPIC_MODEL:e},group:"model"}})}function Ia(i){if(Ni(),i&&(i.type==="tako"||i.type==="custom")){let d=Ca(i);if(d)return d}let o=i?.type==="deepseek"?Ga:i?.type==="xiaomi"?Sa:Ma,n=[];for(let d of o){let u=ci.find((a)=>a.id===d)?.contextWindow??0,r=u>=1e6?"1M":u>0?`${Math.round(u/1000)}k`:"?",t=Pa(d),c=fo(d);n.push({id:`model-${d}`,label:{en:t,zh:t},shortLabel:t,description:{en:`Use ${t} (${r} ctx)`,zh:`\u4F7F\u7528 ${t}\uFF08\u4E0A\u4E0B\u6587 ${r}\uFF09`},flag:`--model ${c}`,args:[],envVars:{ANTHROPIC_MODEL:c},group:"model"})}return n}function Qa(i){return[...$a,...Ia(i)]}var ha,ba,La,ga,$a,Ma,Ga,Sa;var t0=N(()=>{E();Si();Ci();X();vo();Sn();C();ha=xu(va(),".claude","settings.json"),ba=xu(Q,"claude-code","settings.json"),La=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];ga={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars(i){let o={CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"},n=i.model?fo(i.model):void 0;switch(i.type){case"claude-subscription":return o;case"tako":return{...o,ANTHROPIC_BASE_URL:`${i.baseUrl}/api`,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"anthropic":return{...o,ANTHROPIC_API_KEY:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"deepseek":return{...o,ANTHROPIC_BASE_URL:_d,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"xiaomi":return{...o,ANTHROPIC_BASE_URL:Dd(i.apiKey),ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"custom":return{...o,ANTHROPIC_BASE_URL:i.baseUrl,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};default:return o}},async setupConfigFiles(i,o,n){let d=[];if(n?.forLaunch){let e=await ka();if(e)d=e.args}if(i.type==="claude-subscription")await za(i);return d.length>0?{args:d}:void 0},launchOptions:(i)=>Qa(i)},$a=[{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:"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"]}],Ma=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Ga=["deepseek-v4-flash","deepseek-v4-pro"],Sa=["mimo-v2.5-pro"];yo(ga)});import{homedir as qa}from"os";import{join as yu}from"path";async function Oa(){let i=await import("fs/promises");try{await i.mkdir(su,{recursive:!0})}catch{}let o={};try{o=JSON.parse(await i.readFile(wu,"utf-8"))}catch{}let n=o.security?.auth||{};if(n.selectedType==="gemini-api-key")return;o.selectedAuthType="gemini-api-key",o.security={...o.security,auth:{...n,selectedType:"gemini-api-key"}},await Bun.write(wu,JSON.stringify(o,null,2)+`
278
- `)}var su,wu,Ra;var vu=N(()=>{E();su=yu(qa(),".gemini"),wu=yu(su,"settings.json");Ra={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars(i){return{GEMINI_API_KEY:i.apiKey,GOOGLE_GEMINI_BASE_URL:i.baseUrl||"https://tako.shiroha.tech"}},setupConfigFiles:Oa};yo(Ra)});var c0=N(()=>{iu();t0();vu();E()});var ku={};ii(ku,{showRegionInfo:()=>l0,getNpmRegistry:()=>ui,getMirrors:()=>Nu,getLatestBunVersion:()=>Wu,getBunMirrorDownloadUrl:()=>p0,getBunInstallCommand:()=>a0,detectRegion:()=>Ki,MIRRORS:()=>Do});import{readFileSync as Ja,writeFileSync as Ba,mkdirSync as Ya}from"fs";import{join as hu}from"path";import{homedir as bu}from"os";function Xa(){let i=process.env.TAKO_REGION?.trim().toLowerCase();if(i==="cn"||i==="china")return"cn";if(i==="global"||i==="intl"||i==="international")return"global";return null}function Ha(){try{let i=Ja(Lu,"utf-8"),o=JSON.parse(i);if(o.region!=="cn"&&o.region!=="global")return null;if(typeof o.detectedAt!=="number")return null;if(Date.now()-o.detectedAt>Aa)return null;return o.region}catch{return null}}function fu(i){try{Ya(hu(bu(),".tako"),{recursive:!0}),Ba(Lu,JSON.stringify({region:i,detectedAt:Date.now()}),"utf-8")}catch{}}function Za(){try{let o=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(o)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(o))return"cn"}}catch{}let i=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(i.startsWith("zh_cn")||i.startsWith("zh-cn"))return"cn";return null}async function Ka(){if(Rn)return Rn;return Rn=(async()=>{let o=[Va,Ta,Fa,Ea].map((n)=>n().then((d)=>d?d:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(o),new Promise((d,e)=>setTimeout(()=>e(Error("net-timeout")),1200))])}catch{return"cn"}})(),Rn}async function Ki(){if(ho)return ho;let i=Xa();if(i)return ho=i,i;let o=Ha();if(o)return ho=o,o;let n=Za();if(n)return ho=n,fu(n),n;let d=await Ka();return ho=d,fu(d),d}async function Va(){try{let i=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Ta(){try{let i=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country==="CN"?"cn":"global"}catch{return null}}async function Fa(){try{let i=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Ea(){let i=[async()=>{let o=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.json(),d=n?.data?.location;if(Array.isArray(d)&&d[0]==="\u4E2D\u56FD")return"cn";let e=n?.data?.country_code;return e==="CN"?"cn":e?"global":null},async()=>{let o=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.text();try{let d=JSON.parse(n.trim());if(d.proCode&&/^\d{6}$/.test(d.proCode))return"cn"}catch{}return null},async()=>{let o=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!o.ok)return null;let n=(await o.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(n))return"cn";return null}];try{return await Promise.any(i.map((o)=>o().then((n)=>n??Promise.reject())))}catch{return null}}async function Nu(){let i=await Ki();return Do[i]}async function ui(){return(await Nu()).npm}function a0(){return"curl -fsSL https://bun.sh/install | bash"}async function Wu(){let i=Do.cn.bunBinary,o=await fetch(`${i}/`,{signal:AbortSignal.timeout(1e4)});if(!o.ok)throw Error(`Failed to fetch bun versions: ${o.status}`);let d=(await o.json()).map((e)=>e.name.replace(/\/$/,"")).filter((e)=>/^bun-v\d+\.\d+\.\d+$/.test(e)).sort((e,u)=>{let r=e.replace("bun-v","").split(".").map(Number),t=u.replace("bun-v","").split(".").map(Number);for(let c=0;c<3;c++)if(r[c]!==t[c])return t[c]-r[c];return 0});if(d.length===0)throw Error("No bun versions found on mirror");return d[0]}async function p0(){let i=Do.cn.bunBinary,o=await Wu(),d={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",e=process.arch==="arm64"?"aarch64":"x64",u=`bun-${d}-${e}`;return`${i}/${o}/${u}.zip`}async function l0(){let i=await Ki(),o=Do[i];if(i==="cn")L.info(`${g("region.usingChinaMirror")} npm: ${o.npm}`);else L.info(g("region.usingGlobalMirror"))}var ho=null,Rn=null,Lu,Aa=2592000000,Do;var bo=N(()=>{X();Ci();Lu=hu(bu(),".tako","region.json"),Do={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var _a=class{constructor(i){this.baseUrl=i.baseUrl,this.headers={"Content-Type":"application/json",...i.defaultHeaders},this.maxRetries=i.maxRetries??3,this.initialRetryDelay=i.initialRetryDelay??500}async resolveHeaders(){let i={};for(let[o,n]of Object.entries(this.headers)){let d=await n;d!==null&&(i[o]=d)}return i}addHeader(i,o){this.headers[i]=o}async post(i,o,n,d){try{let e=await fetch(i,{method:"POST",headers:await this.resolveHeaders(),body:o?JSON.stringify(o??{}):void 0,keepalive:!0,...n});if(e.status===401)return null;if(e.status!==200&&e.status!==202)throw Error(`HTTP error! status: ${e.status}`);let u=await e.text();return u?JSON.parse(u):null}catch(e){if(d<this.maxRetries){let u=this.initialRetryDelay*2**d;return await new Promise((r)=>setTimeout(r,u)),this.post(i,o,n,d+1)}return console.error("Max retries reached:",e),null}}async fetch(i,o,n={}){let d=`${this.baseUrl}${i}`;return this.post(d,o,n,0)}},zu=class{constructor(i){this.groups=[],this.queue=[],this.options=i;let o={"openpanel-client-id":i.clientId};i.clientSecret&&(o["openpanel-client-secret"]=i.clientSecret),o["openpanel-sdk-name"]=i.sdk||"node",o["openpanel-sdk-version"]=i.sdkVersion||"1.3.1",this.api=new _a({baseUrl:i.apiUrl||"https://api.openpanel.dev",defaultHeaders:o})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(i){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||i.type==="replay"&&!this.sessionId)}addQueue(i){i.type==="track"&&(i.payload.properties={...i.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(i)}async send(i){if(this.options.filter&&!this.options.filter(i))return Promise.resolve();if(this.shouldQueue(i))return this.addQueue(i),Promise.resolve();let o=await this.api.fetch("/track",i,{keepalive:i.type!=="replay"});this.deviceId=o?.deviceId;let n=!!this.sessionId;return this.sessionId=o?.sessionId,!n&&this.sessionId&&this.flush(),o}setGlobalProperties(i){this.global={...this.global,...i}}track(i,o){this.log("track event",i,o);let{groups:n,profileId:d,...e}=o??{},u=[...new Set([...this.groups,...n??[]])];return this.send({type:"track",payload:{name:i,profileId:d??this.profileId,groups:u.length>0?u:void 0,properties:{...this.global??{},...e}}})}identify(i){if(this.log("identify user",i),i.profileId&&(this.profileId=i.profileId,this.flush()),i.profileId&&Object.keys(i).length>1)return this.send({type:"identify",payload:{...i,properties:{...this.global,...i.properties}}})}upsertGroup(i){return this.log("upsert group",i),this.send({type:"group",payload:i})}setGroup(i){return this.log("set group",i),this.groups.includes(i)||(this.groups=[...this.groups,i]),this.send({type:"assign_group",payload:{groupIds:[i],profileId:this.profileId}})}setGroups(i){return this.log("set groups",i),this.groups=[...new Set([...this.groups,...i])],this.send({type:"assign_group",payload:{groupIds:i,profileId:this.profileId}})}alias(i){}increment(i){return this.send({type:"increment",payload:i})}decrement(i){return this.send({type:"decrement",payload:i})}revenue(i,o){let n=o?.deviceId;return delete o?.deviceId,this.track("revenue",{...o??{},...n?{__deviceId:n}:{},__revenue:i})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(i){if(i.type==="replay")return i.payload;if(i.type==="track"){let o="groups"in i.payload?i.payload.groups??[]:[],n=[...new Set([...this.groups,...o])];return{...i.payload,profileId:i.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return i.type==="identify"||i.type==="increment"||i.type==="decrement"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.type==="assign_group"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.payload}flush(){let i=[];for(let o of this.queue){if(this.shouldQueue(o)){i.push(o);continue}let n=this.buildFlushPayload(o);this.send({...o,payload:n})}this.queue=i}log(...i){this.options.debug&&console.log("[OpenPanel.dev]",...i)}};var gu=()=>{};function $u(){if(!Lo)Lo=new zu({clientId:Ua,clientSecret:Da,apiUrl:ja});return Lo}function Mu(i,o,n){let d=$u().track(i,{profileId:o,...n}).catch(()=>{});Jn.push(d)}function Gu(i,o){let{email:n,...d}=o,e=$u().identify({profileId:i,...typeof n==="string"?{email:n}:{},firstName:String(d.platform||""),properties:d}).catch(()=>{});Jn.push(e)}async function Su(){if(await Promise.allSettled(Jn),Jn.length=0,Lo){try{Lo.flush()}catch{}Lo=null}}var Ua="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",Da="sec_1e0ea34016bc3a5f8ef5",ja="https://op.shiroha.tech/api",Lo=null,Jn;var Pu=N(()=>{gu();Jn=[]});function Cu(){return{cli_version:ip,platform:process.platform,arch:process.arch,locale:no(),node_version:process.version}}function Iu(i){return Bun.hash(i).toString(16).slice(0,8)}var ip="0.3.19";var m0=N(()=>{X()});async function Qu(){if(No!==null)return No;try{return No=(await z()).telemetryEnabled!==!1,No}catch{return No=!1,!1}}async function qu(){try{let i=await z();if(i.apiId)return i.apiId;let o=i.providers??[],n=i.defaultProviderId,d=n?o.find((e)=>e.id===n):o[0];if(d){if(d.apiId)return d.apiId;if(d.email)return d.email;return d.id}return"anonymous"}catch{return"anonymous"}}async function H(){if(x0)return;try{if(!await Qu())return;let i=await z(),o=await qu();if(o==="anonymous")return;let d=(i.providers??[]).find((u)=>u.email)?.email,e=await Ki();Gu(o,{...d?{email:d}:{},region:e,locale:no(),first_seen_version:op,platform:process.platform,arch:process.arch}),x0=!0}catch{}}function O(i,o){np(i,o).catch(()=>{})}async function np(i,o){try{if(!await Qu())return;let n=await qu();Mu(i,n,{...Cu(),...o})}catch{}}async function jo(){await Su()}function U(){No=null,x0=!1}var op="0.3.19",x0=!1,No=null;var xi=N(()=>{Pu();C();bo();X();m0();m0()});function rp(i,o){let n=[];if(o.phase)n.push(o.phase);if(o.pkgCount>0)n.push(`\u5DF2\u5904\u7406 ${o.pkgCount} \u4E2A\u5305`);return n.push(`${o.elapsedSec}s`),`${i} \xB7 ${n.join(" \xB7 ")}`}async function Bn(i,o,n){let d=Date.now(),e={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},u=[],r=()=>{e.elapsedSec=Math.floor((Date.now()-d)/1000),n(rp(o,e))};r();let t=setInterval(r,1000),c=(p)=>{if(!p)return;if(u.push(p),dp.test(p))e.phase="\u89E3\u6790\u4F9D\u8D56";else if(Ou.test(p)){e.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let l=p.match(Ou);if(l)e.pkgCount=parseInt(l[1],10)}else if(ep.test(p))e.phase="\u5199\u5165 lockfile";else if(up.test(p))e.phase="\u5B8C\u6210";r()},a=async(p)=>{if(!p)return;let l=p.getReader(),x=new TextDecoder,w="";try{while(!0){let{done:y,value:s}=await l.read();if(y)break;w+=x.decode(s,{stream:!0}).replace(/\r/g,"");let b=w.split(`
279
- `);w=b.pop()??"";for(let v of b)c(v)}if(w)c(w)}finally{l.releaseLock()}};try{await Promise.all([a(i.stderr),a(i.stdout)])}finally{clearInterval(t)}return u.join(`
280
- `)}var dp,Ou,ep,up;var w0=N(()=>{dp=/^Resolving dependencies/,Ou=/^Resolved, downloaded and extracted \[(\d+)\]/,ep=/^Saved lockfile/,up=/^(\d+) packages? installed/});function tp(i){return i.replace(/\r/g,`
274
+ {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"},usingIsolatedSettings:{en:"Using Tako-managed Claude Code settings for this launch: {path}",zh:"\u672C\u6B21\u542F\u52A8\u5C06\u4F7F\u7528 Tako \u6258\u7BA1\u7684 Claude Code settings\uFF1A{path}"},subscriptionMissingAuth:{en:"Selected Claude account has no captured credentials. Run `claude /login` for that account, then re-detect in Tako.",zh:"\u76EE\u6807 Claude \u8D26\u53F7\u7F3A\u5C11\u51ED\u636E\u3002\u8BF7\u7528 `claude /login` \u767B\u5F55\u8BE5\u8D26\u53F7\u540E\uFF0C\u8BA9 Tako \u91CD\u65B0\u68C0\u6D4B\u4E00\u6B21\u3002"},subscriptionSwitched:{en:"Switched Claude Code login to {email}",zh:"\u5DF2\u5207\u6362 Claude Code \u767B\u5F55\u8D26\u53F7\u4E3A {email}"},unknownCurrentAccount:{en:"Current Claude login ({email}) is not tracked by Tako; its tokens will be overwritten.",zh:"\u5F53\u524D Claude \u767B\u5F55\u8D26\u53F7 ({email}) \u672A\u88AB Tako \u8BB0\u5F55\uFF0C\u5207\u6362\u540E\u8BE5\u8D26\u53F7 token \u5C06\u88AB\u8986\u76D6\u3002"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},providers:{management:{en:"Manage Providers",zh:"\u7BA1\u7406\u670D\u52A1\u5546"},selectProvider:{en:"Select provider:",zh:"\u9009\u62E9\u670D\u52A1\u5546\uFF1A"},selectType:{en:"Provider type:",zh:"\u670D\u52A1\u5546\u7C7B\u578B\uFF1A"},enterName:{en:"Provider name:",zh:"\u670D\u52A1\u5546\u540D\u79F0\uFF1A"},enterApiKey:{en:"API Key:",zh:"API Key\uFF1A"},enterBaseUrl:{en:"Base URL:",zh:"\u57FA\u7840 URL\uFF1A"},add:{en:"Add Provider",zh:"\u6DFB\u52A0\u670D\u52A1\u5546"},edit:{en:"Edit Provider",zh:"\u7F16\u8F91\u670D\u52A1\u5546"},delete:{en:"Delete Provider",zh:"\u5220\u9664\u670D\u52A1\u5546"},setDefault:{en:"Set as Default",zh:"\u8BBE\u4E3A\u9ED8\u8BA4"},rescan:{en:"Re-scan Subscriptions",zh:"\u91CD\u65B0\u626B\u63CF\u8BA2\u9605"},back:{en:"Back",zh:"\u8FD4\u56DE"},added:{en:"Provider added",zh:"\u670D\u52A1\u5546\u5DF2\u6DFB\u52A0"},deleted:{en:"Provider deleted",zh:"\u670D\u52A1\u5546\u5DF2\u5220\u9664"},updated:{en:"Provider updated",zh:"\u670D\u52A1\u5546\u5DF2\u66F4\u65B0"},defaultSet:{en:"Default provider set",zh:"\u9ED8\u8BA4\u670D\u52A1\u5546\u5DF2\u8BBE\u7F6E"},noProviders:{en:"No providers configured",zh:"\u672A\u914D\u7F6E\u670D\u52A1\u5546"},noCompatible:{en:"No provider supports {client}",zh:"\u6CA1\u6709\u652F\u6301 {client} \u7684\u670D\u52A1\u5546"},defaultLabel:{en:"(default)",zh:"\uFF08\u9ED8\u8BA4\uFF09"},detected:{en:"Detected: {name}",zh:"\u68C0\u6D4B\u5230\uFF1A{name}"},confirmDelete:{en:"Delete {name}?",zh:"\u786E\u8BA4\u5220\u9664 {name}\uFF1F"},scanComplete:{en:"Scan complete, found {count} new provider(s)",zh:"\u626B\u63CF\u5B8C\u6210\uFF0C\u53D1\u73B0 {count} \u4E2A\u65B0\u670D\u52A1\u5546"}}}});var On={};mi(On,{writeClaudeAuth:()=>tp,readClaudeAuth:()=>rp});import{homedir as de,platform as jc,userInfo as ip}from"os";import{join as ud}from"path";function ee(){return[process.env.USER||(()=>{try{return ip().username}catch{return""}})(),"root"].filter(Boolean)}async function op(i){let o=Bun.spawn(["security","find-generic-password","-s",ue,"-a",i,"-w"],{stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0)return null;try{return JSON.parse(n.trim())}catch{return null}}async function np(){for(let i of ee()){let o=await op(i);if(o)return o}return null}async function dp(i){let o=JSON.stringify(i),n=ee()[0],d=Bun.spawn(["security","add-generic-password","-U","-s",ue,"-a",n,"-w",o],{stdout:"pipe",stderr:"pipe"}),u=await d.exited;if(u!==0){let e=await new Response(d.stderr).text();throw Error(`security add-generic-password failed (${u}): ${e.trim()}`)}}async function up(){try{let i=await import("fs/promises");return JSON.parse(await i.readFile(te,"utf-8"))}catch{return null}}async function ep(i){let o=await import("fs/promises");await o.mkdir(re,{recursive:!0}),await o.writeFile(te,JSON.stringify(i,null,2)+`
275
+ `,{mode:384})}async function rp(){let i=ce?await np():await up(),o;try{let n=await import("fs/promises"),d=JSON.parse(await n.readFile(dd,"utf-8"));if(d.oauthAccount&&typeof d.oauthAccount==="object")o=d.oauthAccount}catch{}return{credentials:i??void 0,oauthAccount:o}}async function tp(i){if(i.credentials)if(ce)await dp(i.credentials);else await ep(i.credentials);if(i.oauthAccount){let o=await import("fs/promises"),n={};try{n=JSON.parse(await o.readFile(dd,"utf-8"))}catch{}n.oauthAccount=i.oauthAccount,await o.writeFile(dd,JSON.stringify(n,null,2)+`
276
+ `)}}var ue="Claude Code-credentials",re,te,dd,ce;var Jn=N(()=>{re=ud(de(),".claude"),te=ud(re,".credentials.json"),dd=ud(de(),".claude.json"),ce=jc()==="darwin"});var pe={};mi(pe,{updateProvider:()=>Ki,setDefaultProvider:()=>rd,setClientProvider:()=>td,resolveXiaomiBaseUrl:()=>od,resolveProviderContext:()=>E,migrateIfNeeded:()=>cd,mergeDetectedProviders:()=>Do,isProviderCompatible:()=>Hi,getProvidersForClient:()=>Qi,getProviders:()=>V,getProvider:()=>cp,getModelChoices:()=>Eo,getDefaultSupportedClients:()=>ni,getDefaultProvider:()=>di,getDefaultModel:()=>_o,getDefaultBaseUrl:()=>D0,getClientProvider:()=>qi,fixupProviders:()=>pd,detectProviders:()=>Uo,deleteProvider:()=>ed,addProvider:()=>uo,XIAOMI_TOKEN_PLAN_URL:()=>oe,XIAOMI_ANTHROPIC_URL:()=>id,PROVIDER_TYPE_NAMES:()=>oo,DEEPSEEK_ANTHROPIC_URL:()=>j0});async function V(){return(await s()).providers??[]}async function cp(i){return(await V()).find((n)=>n.id===i)}async function di(){let i=await s(),o=i.providers??[];if(o.length===0)return;if(i.defaultProviderId){let n=o.find((d)=>d.id===i.defaultProviderId);if(n)return n}return o[0]}async function Qi(i){return(await V()).filter((d)=>Hi(d,i)).sort((d,u)=>{let e=d.lastUsedAt?new Date(d.lastUsedAt).getTime():0,r=u.lastUsedAt?new Date(u.lastUsedAt).getTime():0;if(e!==r)return r-e;return new Date(u.createdAt).getTime()-new Date(d.createdAt).getTime()})}async function uo(i){let o=await s(),n={...i,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(o.providers=[...o.providers??[],n],!o.defaultProviderId)o.defaultProviderId=n.id;return await K(o),n}async function Ki(i,o){let n=await s(),d=n.providers??[],u=d.findIndex((e)=>e.id===i);if(u===-1)return;d[u]={...d[u],...o},n.providers=d,await K(n)}async function ed(i){let o=await s();if((o.providers??[]).find((d)=>d.id===i)?.builtin)return;if(o.providers=(o.providers??[]).filter((d)=>d.id!==i),o.defaultProviderId===i)o.defaultProviderId=o.providers[0]?.id;if(o.clientProviderMap){for(let[d,u]of Object.entries(o.clientProviderMap))if(u===i)delete o.clientProviderMap[d]}await K(o)}async function rd(i){let o=await s();if(!(o.providers??[]).some((d)=>d.id===i))return;o.defaultProviderId=i,await K(o)}async function qi(i){let o=await s(),n=o.clientProviderMap?.[i];if(n){let d=(o.providers??[]).find((u)=>u.id===n);if(d&&Hi(d,i))return d}return}async function td(i,o){let n=await s();n.clientProviderMap={...n.clientProviderMap,[i]:o};let d=n.providers??[],u=d.findIndex((e)=>e.id===o);if(u!==-1)d[u]={...d[u],lastUsedAt:new Date().toISOString()},n.providers=d;await K(n)}function E(i){return{type:i.type,apiKey:i.apiKey,baseUrl:i.baseUrl,authData:i.authData,model:i.model,modelContextWindow:i.modelContextWindow}}async function pp(){try{let i=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),o=await new Response(i.stdout).text();if(await i.exited!==0)return null;let d=JSON.parse(o.trim());if(!d.loggedIn||d.authMethod!=="claude.ai")return null;let u=d.subscriptionType||"pro",e=d.email||"",r=`Claude ${u.charAt(0).toUpperCase()+u.slice(1)}${e?` (${e})`:""}`,{readClaudeAuth:t}=await Promise.resolve().then(() => (Jn(),On)),c=await t(),p=c.credentials||c.oauthAccount?{credentials:c.credentials,oauthAccount:c.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:r,type:"claude-subscription",supportedClients:ni("claude-subscription"),createdAt:new Date().toISOString(),email:e,subscriptionType:u,authData:p}}catch{return null}}async function ap(){try{let{homedir:i}=await import("os"),{join:o}=await import("path"),n=await import("fs/promises"),d=o(i(),".codex","auth.json"),u=JSON.parse(await n.readFile(d,"utf-8"));if(u.auth_mode!=="chatgpt"||!u.tokens?.access_token)return null;let e="";try{e=JSON.parse(atob(u.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:u,email:e}}catch{return null}}async function lp(){let i=await ap();if(i){let{auth:o,email:n}=i;return{id:crypto.randomUUID(),name:n?`Codex Plus (${n})`:"Codex Subscription",type:"codex-subscription",email:n||void 0,supportedClients:ni("codex-subscription"),authData:o,createdAt:new Date().toISOString()}}try{let o=Bun.spawn(["codex","login","status"],{stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0||!n.includes("Logged in")||n.includes("cr_"))return null;return{id:crypto.randomUUID(),name:"Codex Subscription",type:"codex-subscription",supportedClients:ni("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function Uo(){let i=[],[o,n]=await Promise.all([pp(),lp()]);if(o)i.push(o);if(n)i.push(n);return i}async function Do(i){let o=await s(),n=o.providers??[],d=new Set(n.map((e)=>`${e.type}:${e.email||""}`)),u=0;for(let e of i){let r=`${e.type}:${e.email||""}`;if(!d.has(r))n.push(e),d.add(r),u++;else if(e.authData){let t=n.find((c)=>c.type===e.type&&c.email===e.email);if(t)t.authData=e.authData}}if(u>0){if(o.providers=n,!o.defaultProviderId&&n.length>0)o.defaultProviderId=n[0].id;await K(o)}return u}async function cd(){let i=await s();if(!i.apiKey||i.providers&&i.providers.length>0)return!1;let o={id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:Y,apiId:i.apiId,supportedClients:ni("tako"),createdAt:new Date().toISOString(),builtin:!0};return i.providers=[o],i.defaultProviderId=o.id,await K(i),!0}async function pd(){let i=await s(),o=i.providers??[],n=!1;for(let d of o)if(d.type==="tako"&&!d.builtin)d.builtin=!0,n=!0;if(i.apiKey&&!o.some((d)=>d.type==="tako")){if(o.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:Y,apiId:i.apiId,supportedClients:ni("tako"),createdAt:new Date().toISOString(),builtin:!0}),!i.defaultProviderId)i.defaultProviderId=o[o.length-1].id;n=!0}if(n)i.providers=o,await K(i)}var ti=N(()=>{C();Si();Si()});import{homedir as mp}from"os";import{dirname as xp,join as le}from"path";function fp(i){if(i.startsWith("ANTHROPIC_"))return!0;return vp.includes(i)}function hp(i){let o={...i},n=[],d=i.env;if(d&&typeof d==="object"&&!Array.isArray(d)){let u={...d};for(let e of Object.keys(u))if(fp(e))n.push(e),delete u[e];if(n.length>0)if(Object.keys(u).length===0)delete o.env;else o.env=u}return{settings:o,cleanedFields:n}}async function bp(i={}){let o=await import("fs/promises"),n=i.sourcePath??wp,d=i.targetPath??yp,u;try{u=await o.readFile(n,"utf-8")}catch{return null}let e;try{e=JSON.parse(u)}catch{return null}let{settings:r,cleanedFields:t}=hp(e);if(t.length===0)return null;if(i.logConflicts!==!1)W.warn(k("claudeCode.settingsDetected",{fields:t.join(", ")})),W.info(k("claudeCode.usingIsolatedSettings",{path:d}));return await o.mkdir(xp(d),{recursive:!0}),await o.writeFile(d,JSON.stringify(r,null,2)+`
277
+ `),{args:["--setting-sources","project,local","--settings",d],cleanedFields:t,settingsPath:d}}async function Lp(i){let{readClaudeAuth:o,writeClaudeAuth:n}=await Promise.resolve().then(() => (Jn(),On)),{getProviders:d,updateProvider:u}=await Promise.resolve().then(() => (ti(),pe)),e=i.authData?.credentials,r=i.authData?.oauthAccount;if(!e){W.warn(k("claudeCode.subscriptionMissingAuth"));return}let t=await o(),c=t.oauthAccount?.emailAddress;if(c&&t.credentials){let l=(await d()).find((x)=>x.type==="claude-subscription"&&x.email===c);if(l){let x={credentials:t.credentials,oauthAccount:t.oauthAccount};if(JSON.stringify(l.authData)!==JSON.stringify(x))await u(l.id,{authData:x})}else if(c!==r?.emailAddress)W.warn(k("claudeCode.unknownCurrentAccount",{email:c}))}await n({credentials:e,oauthAccount:r});let p=r?.emailAddress||"?";W.info(k("claudeCode.subscriptionSwitched",{email:p}))}function gp(i){let o=i.match(/^claude-(haiku|sonnet|opus)-(\d{1,2})-(\d{1,2})$/);if(o)return`${o[1].charAt(0).toUpperCase()+o[1].slice(1)} ${o[2]}.${o[3]}`;return ri.find((d)=>d.id===i)?.displayName??i}function bo(i){if(!i)return i;if(i.endsWith("[1m]")||/:1m$/i.test(i))return i;if(!/^(claude|deepseek|kimi|mimo)[-_]/i.test(i))return i;let o=ri.find((n)=>n.id===i);if(!o||o.contextWindow<1e6)return i;return`${i}[1m]`}function ae(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function $p(i){if(!i.baseUrl)return null;let o=Xi(i.baseUrl,"claude");if(!o||o.length===0)return null;let n=To(o);if(n.length===0)return null;return n.map((d)=>{let u=bo(d.id);return{id:`model-${d.id}`,label:{en:d.displayName,zh:d.displayName},shortLabel:d.displayName,description:{en:`Use ${d.displayName} (${ae(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${ae(d.contextWindow)}\uFF09`},flag:`--model ${u}`,args:[],envVars:{ANTHROPIC_MODEL:u},group:"model"}})}function Mp(i){if(zi(),i&&(i.type==="tako"||i.type==="custom")){let d=$p(i);if(d)return d}let o=i?.type==="deepseek"?sp:i?.type==="xiaomi"?kp:zp,n=[];for(let d of o){let e=ri.find((p)=>p.id===d)?.contextWindow??0,r=e>=1e6?"1M":e>0?`${Math.round(e/1000)}k`:"?",t=gp(d),c=bo(d);n.push({id:`model-${d}`,label:{en:t,zh:t},shortLabel:t,description:{en:`Use ${t} (${r} ctx)`,zh:`\u4F7F\u7528 ${t}\uFF08\u4E0A\u4E0B\u6587 ${r}\uFF09`},flag:`--model ${c}`,args:[],envVars:{ANTHROPIC_MODEL:c},group:"model"})}return n}function Gp(i){return[...Np,...Mp(i)]}var wp,yp,vp,Wp,Np,zp,sp,kp;var ad=N(()=>{_();Si();Pi();X();fo();Pn();C();wp=le(mp(),".claude","settings.json"),yp=le(q,"claude-code","settings.json"),vp=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];Wp={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars(i){let o={CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"},n=i.model?bo(i.model):void 0;switch(i.type){case"claude-subscription":return o;case"tako":return{...o,ANTHROPIC_BASE_URL:`${i.baseUrl}/api`,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"anthropic":return{...o,ANTHROPIC_API_KEY:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"deepseek":return{...o,ANTHROPIC_BASE_URL:j0,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"xiaomi":return{...o,ANTHROPIC_BASE_URL:od(i.apiKey),ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"custom":return{...o,ANTHROPIC_BASE_URL:i.baseUrl,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};default:return o}},async setupConfigFiles(i,o,n){let d=[];if(n?.forLaunch){let u=await bp();if(u)d=u.args}if(i.type==="claude-subscription")await Lp(i);return d.length>0?{args:d}:void 0},launchOptions:(i)=>Gp(i)},Np=[{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:"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"]}],zp=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],sp=["deepseek-v4-flash","deepseek-v4-pro"],kp=["mimo-v2.5-pro"];yo(Wp)});import{homedir as Sp}from"os";import{join as xe}from"path";async function Pp(){let i=await import("fs/promises");try{await i.mkdir(we,{recursive:!0})}catch{}let o={};try{o=JSON.parse(await i.readFile(me,"utf-8"))}catch{}let n=o.security?.auth||{};if(n.selectedType==="gemini-api-key")return;o.selectedAuthType="gemini-api-key",o.security={...o.security,auth:{...n,selectedType:"gemini-api-key"}},await Bun.write(me,JSON.stringify(o,null,2)+`
278
+ `)}var we,me,Cp;var ye=N(()=>{_();we=xe(Sp(),".gemini"),me=xe(we,"settings.json");Cp={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars(i){return{GEMINI_API_KEY:i.apiKey,GOOGLE_GEMINI_BASE_URL:i.baseUrl||"https://tako.shiroha.tech"}},setupConfigFiles:Pp};yo(Cp)});var ld=N(()=>{ie();ad();ye();_()});import{readFileSync as Qp,writeFileSync as qp,mkdirSync as Ip}from"fs";import{join as fe}from"path";import{homedir as he}from"os";function Jp(){let i=process.env.TAKO_REGION?.trim().toLowerCase();if(i==="cn"||i==="china")return"cn";if(i==="global"||i==="intl"||i==="international")return"global";return null}function Rp(){try{let i=Qp(be,"utf-8"),o=JSON.parse(i);if(o.region!=="cn"&&o.region!=="global")return null;if(typeof o.detectedAt!=="number")return null;if(Date.now()-o.detectedAt>Op)return null;return o.region}catch{return null}}function ve(i){try{Ip(fe(he(),".tako"),{recursive:!0}),qp(be,JSON.stringify({region:i,detectedAt:Date.now()}),"utf-8")}catch{}}function Bp(){try{let o=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(o)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(o))return"cn"}}catch{}let i=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(i.startsWith("zh_cn")||i.startsWith("zh-cn"))return"cn";return null}async function Yp(){if(Rn)return Rn;return Rn=(async()=>{let o=[Ap,Xp,Hp,Zp].map((n)=>n().then((d)=>d?d:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(o),new Promise((d,u)=>setTimeout(()=>u(Error("net-timeout")),1200))])}catch{return"cn"}})(),Rn}async function Ii(){if(Lo)return Lo;let i=Jp();if(i)return Lo=i,i;let o=Rp();if(o)return Lo=o,o;let n=Bp();if(n)return Lo=n,ve(n),n;let d=await Yp();return Lo=d,ve(d),d}async function Ap(){try{let i=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Xp(){try{let i=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country==="CN"?"cn":"global"}catch{return null}}async function Hp(){try{let i=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Zp(){let i=[async()=>{let o=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.json(),d=n?.data?.location;if(Array.isArray(d)&&d[0]==="\u4E2D\u56FD")return"cn";let u=n?.data?.country_code;return u==="CN"?"cn":u?"global":null},async()=>{let o=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.text();try{let d=JSON.parse(n.trim());if(d.proCode&&/^\d{6}$/.test(d.proCode))return"cn"}catch{}return null},async()=>{let o=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!o.ok)return null;let n=(await o.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(n))return"cn";return null}];try{return await Promise.any(i.map((o)=>o().then((n)=>n??Promise.reject())))}catch{return null}}async function Kp(){let i=await Ii();return Bn[i]}async function ci(){return(await Kp()).npm}function Le(){return"curl -fsSL https://bun.sh/install | bash"}async function Vp(){let i=Bn.cn.bunBinary,o=await fetch(`${i}/`,{signal:AbortSignal.timeout(1e4)});if(!o.ok)throw Error(`Failed to fetch bun versions: ${o.status}`);let d=(await o.json()).map((u)=>u.name.replace(/\/$/,"")).filter((u)=>/^bun-v\d+\.\d+\.\d+$/.test(u)).sort((u,e)=>{let r=u.replace("bun-v","").split(".").map(Number),t=e.replace("bun-v","").split(".").map(Number);for(let c=0;c<3;c++)if(r[c]!==t[c])return t[c]-r[c];return 0});if(d.length===0)throw Error("No bun versions found on mirror");return d[0]}async function We(){let i=Bn.cn.bunBinary,o=await Vp(),d={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",u=process.arch==="arm64"?"aarch64":"x64",e=`bun-${d}-${u}`;return`${i}/${o}/${e}.zip`}async function Ne(){let i=await Ii(),o=Bn[i];if(i==="cn")W.info(`${k("region.usingChinaMirror")} npm: ${o.npm}`);else W.info(k("region.usingGlobalMirror"))}var Lo=null,Rn=null,be,Op=2592000000,Bn;var jo=N(()=>{X();Pi();be=fe(he(),".tako","region.json"),Bn={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Fp=class{constructor(i){this.baseUrl=i.baseUrl,this.headers={"Content-Type":"application/json",...i.defaultHeaders},this.maxRetries=i.maxRetries??3,this.initialRetryDelay=i.initialRetryDelay??500}async resolveHeaders(){let i={};for(let[o,n]of Object.entries(this.headers)){let d=await n;d!==null&&(i[o]=d)}return i}addHeader(i,o){this.headers[i]=o}async post(i,o,n,d){try{let u=await fetch(i,{method:"POST",headers:await this.resolveHeaders(),body:o?JSON.stringify(o??{}):void 0,keepalive:!0,...n});if(u.status===401)return null;if(u.status!==200&&u.status!==202)throw Error(`HTTP error! status: ${u.status}`);let e=await u.text();return e?JSON.parse(e):null}catch(u){if(d<this.maxRetries){let e=this.initialRetryDelay*2**d;return await new Promise((r)=>setTimeout(r,e)),this.post(i,o,n,d+1)}return console.error("Max retries reached:",u),null}}async fetch(i,o,n={}){let d=`${this.baseUrl}${i}`;return this.post(d,o,n,0)}},ze=class{constructor(i){this.groups=[],this.queue=[],this.options=i;let o={"openpanel-client-id":i.clientId};i.clientSecret&&(o["openpanel-client-secret"]=i.clientSecret),o["openpanel-sdk-name"]=i.sdk||"node",o["openpanel-sdk-version"]=i.sdkVersion||"1.3.1",this.api=new Fp({baseUrl:i.apiUrl||"https://api.openpanel.dev",defaultHeaders:o})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(i){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||i.type==="replay"&&!this.sessionId)}addQueue(i){i.type==="track"&&(i.payload.properties={...i.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(i)}async send(i){if(this.options.filter&&!this.options.filter(i))return Promise.resolve();if(this.shouldQueue(i))return this.addQueue(i),Promise.resolve();let o=await this.api.fetch("/track",i,{keepalive:i.type!=="replay"});this.deviceId=o?.deviceId;let n=!!this.sessionId;return this.sessionId=o?.sessionId,!n&&this.sessionId&&this.flush(),o}setGlobalProperties(i){this.global={...this.global,...i}}track(i,o){this.log("track event",i,o);let{groups:n,profileId:d,...u}=o??{},e=[...new Set([...this.groups,...n??[]])];return this.send({type:"track",payload:{name:i,profileId:d??this.profileId,groups:e.length>0?e:void 0,properties:{...this.global??{},...u}}})}identify(i){if(this.log("identify user",i),i.profileId&&(this.profileId=i.profileId,this.flush()),i.profileId&&Object.keys(i).length>1)return this.send({type:"identify",payload:{...i,properties:{...this.global,...i.properties}}})}upsertGroup(i){return this.log("upsert group",i),this.send({type:"group",payload:i})}setGroup(i){return this.log("set group",i),this.groups.includes(i)||(this.groups=[...this.groups,i]),this.send({type:"assign_group",payload:{groupIds:[i],profileId:this.profileId}})}setGroups(i){return this.log("set groups",i),this.groups=[...new Set([...this.groups,...i])],this.send({type:"assign_group",payload:{groupIds:i,profileId:this.profileId}})}alias(i){}increment(i){return this.send({type:"increment",payload:i})}decrement(i){return this.send({type:"decrement",payload:i})}revenue(i,o){let n=o?.deviceId;return delete o?.deviceId,this.track("revenue",{...o??{},...n?{__deviceId:n}:{},__revenue:i})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(i){if(i.type==="replay")return i.payload;if(i.type==="track"){let o="groups"in i.payload?i.payload.groups??[]:[],n=[...new Set([...this.groups,...o])];return{...i.payload,profileId:i.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return i.type==="identify"||i.type==="increment"||i.type==="decrement"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.type==="assign_group"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.payload}flush(){let i=[];for(let o of this.queue){if(this.shouldQueue(o)){i.push(o);continue}let n=this.buildFlushPayload(o);this.send({...o,payload:n})}this.queue=i}log(...i){this.options.debug&&console.log("[OpenPanel.dev]",...i)}};var se=()=>{};function ke(){if(!Wo)Wo=new ze({clientId:Tp,clientSecret:_p,apiUrl:Ep});return Wo}function ge(i,o,n){let d=ke().track(i,{profileId:o,...n}).catch(()=>{});Yn.push(d)}function $e(i,o){let{email:n,...d}=o,u=ke().identify({profileId:i,...typeof n==="string"?{email:n}:{},firstName:String(d.platform||""),properties:d}).catch(()=>{});Yn.push(u)}async function Me(){if(await Promise.allSettled(Yn),Yn.length=0,Wo){try{Wo.flush()}catch{}Wo=null}}var Tp="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",_p="sec_1e0ea34016bc3a5f8ef5",Ep="https://op.shiroha.tech/api",Wo=null,Yn;var Ge=N(()=>{se();Yn=[]});function Se(){return{cli_version:Up,platform:process.platform,arch:process.arch,locale:no(),node_version:process.version}}function Pe(i){return Bun.hash(i).toString(16).slice(0,8)}var Up="0.3.21";var md=N(()=>{X()});async function Ce(){if(No!==null)return No;try{return No=(await s()).telemetryEnabled!==!1,No}catch{return No=!1,!1}}async function Qe(){try{let i=await s();if(i.apiId)return i.apiId;let o=i.providers??[],n=i.defaultProviderId,d=n?o.find((u)=>u.id===n):o[0];if(d){if(d.apiId)return d.apiId;if(d.email)return d.email;return d.id}return"anonymous"}catch{return"anonymous"}}async function H(){if(xd)return;try{if(!await Ce())return;let i=await s(),o=await Qe();if(o==="anonymous")return;let d=(i.providers??[]).find((e)=>e.email)?.email,u=await Ii();$e(o,{...d?{email:d}:{},region:u,locale:no(),first_seen_version:Dp,platform:process.platform,arch:process.arch}),xd=!0}catch{}}function R(i,o){jp(i,o).catch(()=>{})}async function jp(i,o){try{if(!await Ce())return;let n=await Qe();ge(i,n,{...Se(),...o})}catch{}}async function on(){await Me()}function U(){No=null,xd=!1}var Dp="0.3.21",xd=!1,No=null;var wi=N(()=>{Ge();C();jo();X();md();md()});function da(i,o){let n=[];if(o.phase)n.push(o.phase);if(o.pkgCount>0)n.push(`\u5DF2\u5904\u7406 ${o.pkgCount} \u4E2A\u5305`);return n.push(`${o.elapsedSec}s`),`${i} \xB7 ${n.join(" \xB7 ")}`}async function Vi(i,o,n){let d=Date.now(),u={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},e=[],r=()=>{u.elapsedSec=Math.floor((Date.now()-d)/1000),n(da(o,u))};r();let t=setInterval(r,1000),c=(a)=>{if(!a)return;if(e.push(a),ia.test(a))u.phase="\u89E3\u6790\u4F9D\u8D56";else if(qe.test(a)){u.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let l=a.match(qe);if(l)u.pkgCount=parseInt(l[1],10)}else if(oa.test(a))u.phase="\u5199\u5165 lockfile";else if(na.test(a))u.phase="\u5B8C\u6210";r()},p=async(a)=>{if(!a)return;let l=a.getReader(),x=new TextDecoder,w="";try{while(!0){let{done:y,value:v}=await l.read();if(y)break;w+=x.decode(v,{stream:!0}).replace(/\r/g,"");let h=w.split(`
279
+ `);w=h.pop()??"";for(let f of h)c(f)}if(w)c(w)}finally{l.releaseLock()}};try{await Promise.all([p(i.stderr),p(i.stdout)])}finally{clearInterval(t)}return e.join(`
280
+ `)}var ia,qe,oa,na;var An=N(()=>{ia=/^Resolving dependencies/,qe=/^Resolved, downloaded and extracted \[(\d+)\]/,oa=/^Saved lockfile/,na=/^(\d+) packages? installed/});function ua(i){return i.replace(/\r/g,`
281
281
  `).replace(/\n{3,}/g,`
282
282
 
283
- `).trim()}function Bu(i,o){for(let n of i.split(/\r?\n/)){let d=n.trim();if(!d)continue;if(o.some((e)=>e.test(d)))return d}return null}function Wo(i,o="\u672A\u77E5\u9519\u8BEF"){let n=tp(i??"");if(!n)return o;let d=Bu(n,[/HTTP error!?\s*status:\s*\d+/i,/registry http\s+\d+/i,/models\.dev http\s+\d+/i]);if(d){if(d.match(/\b(?:status:|http)\s*(\d{3})\b/i)?.[1]==="524")return"\u7F51\u7EDC\u8BF7\u6C42\u8D85\u65F6\uFF08HTTP 524\uFF09\uFF0Cregistry \u6216\u4EE3\u7406\u4E0A\u6E38\u672A\u53CA\u65F6\u54CD\u5E94\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u5207\u6362 TAKO_REGION/global \u540E\u91CD\u8BD5\u3002";return`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${d}`}let e=Bu(n,[/\b(error|failed|timeout|timed out|network|ECONN|ETIMEDOUT|ENOTFOUND|EAI_AGAIN)\b/i]);if(e)return e.slice(0,800);return n.length>800?`${n.slice(0,800)}...`:n}function vp(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i);process.stdin.pause()}catch{}}async function Au(i,o){if(!process.stdin.isTTY||!process.stdout.isTTY)return o;return new Promise((n)=>{let d=Boolean(process.stdin.isRaw),e=()=>{process.stdin.off("data",u),vp(d)},u=(r)=>{let t=r.toString("utf8");if(t==="\x03"){e(),process.kill(process.pid,"SIGINT"),n(o);return}let c=i(t);if(c!==void 0)e(),n(c)};if(process.stdin.on("data",u),process.stdin.resume(),process.stdin.isTTY)process.stdin.setRawMode(!0)})}async function Xu(i){let o=i.defaultValue??!0,n=o?"[Y/n]":"[y/N]";process.stdout.write(`
284
- ? ${i.message} ${n} `);let d=await Au((e)=>{if(e==="\r"||e===`
285
- `)return o;if(e==="\x1B")return!1;if(e==="y"||e==="Y")return!0;if(e==="n"||e==="N")return!1;return},o);return process.stdout.write(d?`Yes
283
+ `).trim()}function Je(i,o){for(let n of i.split(/\r?\n/)){let d=n.trim();if(!d)continue;if(o.some((u)=>u.test(d)))return d}return null}function zo(i,o="\u672A\u77E5\u9519\u8BEF"){let n=ua(i??"");if(!n)return o;let d=Je(n,[/HTTP error!?\s*status:\s*\d+/i,/registry http\s+\d+/i,/models\.dev http\s+\d+/i]);if(d){if(d.match(/\b(?:status:|http)\s*(\d{3})\b/i)?.[1]==="524")return"\u7F51\u7EDC\u8BF7\u6C42\u8D85\u65F6\uFF08HTTP 524\uFF09\uFF0Cregistry \u6216\u4EE3\u7406\u4E0A\u6E38\u672A\u53CA\u65F6\u54CD\u5E94\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u5207\u6362 TAKO_REGION/global \u540E\u91CD\u8BD5\u3002";return`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${d}`}let u=Je(n,[/\b(error|failed|timeout|timed out|network|ECONN|ETIMEDOUT|ENOTFOUND|EAI_AGAIN)\b/i]);if(u)return u.slice(0,800);return n.length>800?`${n.slice(0,800)}...`:n}function wa(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i);process.stdin.pause()}catch{}}async function ya(i=process.stdin,o=30){let n=()=>{try{if(i.ref?.(),i.removeAllListeners?.(),i.isTTY&&typeof i.setRawMode==="function")i.setRawMode(!1);i.pause?.()}catch{}};n(),await new Promise((d)=>setTimeout(d,o)),n()}async function Be(i,o){if(!process.stdin.isTTY||!process.stdout.isTTY)return o;let n=Boolean(process.stdin.isRaw);return await ya(),new Promise((d)=>{let u=()=>{process.stdin.off("data",e),wa(n)},e=(r)=>{let t=r.toString("utf8");if(t==="\x03"){u(),process.kill(process.pid,"SIGINT"),d(o);return}let c=i(t);if(c!==void 0)u(),d(c)};if(process.stdin.on("data",e),process.stdin.resume(),process.stdin.isTTY)process.stdin.setRawMode(!0)})}async function Ye(i){let o=i.defaultValue??!0,n=o?"[Y/n]":"[y/N]";process.stdout.write(`
284
+ ? ${i.message} ${n} `);let d=await Be((u)=>{if(u==="\r"||u===`
285
+ `)return o;if(u==="\x1B")return!1;if(u==="y"||u==="Y")return!0;if(u==="n"||u==="N")return!1;return},o);return process.stdout.write(d?`Yes
286
286
  `:`No
287
- `),d}async function Hu(i){let o=i.content.split(/\r?\n/).map((n)=>n.trimEnd());process.stdout.write(`
287
+ `),d}async function Ae(i){let o=i.content.split(/\r?\n/).map((n)=>n.trimEnd());process.stdout.write(`
288
288
  === Announcement: ${i.title} ===
289
289
  `);for(let n of o)process.stdout.write(`${n}
290
290
  `);process.stdout.write(i.popup_once?`
291
291
  Press Enter, Esc, or q to close. This announcement is shown once.
292
292
  `:`
293
293
  Press Enter, Esc, or q to close.
294
- `),await Au((n)=>{if(n==="\r"||n===`
294
+ `),await Be((n)=>{if(n==="\r"||n===`
295
295
  `)return!0;if(n==="\x1B"||n==="q"||n==="Q")return!0;return},!0),process.stdout.write(`
296
- `)}import{join as R}from"path";function fp(i){return i.startsWith(bi)}function Zu(i){return{...process.env,BUN_CONFIG_REGISTRY:i,BUN_INSTALL_CACHE_DIR:gd}}async function hp(){try{if(!await Bun.file(Y).exists())return null;let o=Bun.spawn([Y,"--version"],{stdout:"pipe",stderr:"pipe"});if(await o.exited,o.exitCode!==0)return null;return(await new Response(o.stdout).text()).trim()}catch{return null}}async function Ku(){return await hp()!==null}async function bp(){if(process.platform==="win32")return!0;try{let o=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await o.exited,o.exitCode===0)return!0}catch{}L.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let i=["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 o of i)try{let n=Bun.spawn(["bash","-c",`sudo ${o} 2>/dev/null || ${o}`],{stdout:"pipe",stderr:"pipe"});if(await n.exited,n.exitCode===0)return!0}catch{}return!1}async function Lp(i){let o=await import("fs/promises"),{join:n}=await import("path"),d=process.platform==="win32",e=d?"bun.exe":"bun",u=await p0();L.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${u}`);let r=await fetch(u);if(!r.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${r.status}`);let t=n(i,"bun-download.zip");await Bun.write(t,r);let c=n(i,"bin");if(await o.mkdir(c,{recursive:!0}),d){let p=`Expand-Archive -Path "${t}" -DestinationPath "${i}" -Force`,l=Bun.spawn(["powershell","-Command",p],{stdout:"pipe",stderr:"pipe"});if(await l.exited,l.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let p=Bun.spawn(["unzip","-oq",t,"-d",i],{stdout:"pipe",stderr:"pipe"});if(await p.exited,p.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let a=await o.readdir(i);for(let p of a){let l=n(i,p);if((await o.stat(l)).isDirectory()&&p.startsWith("bun-")){let w=n(l,e);try{if(await o.access(w),await o.rename(w,n(c,e)),!d)await o.chmod(n(c,e),493);await o.rm(l,{recursive:!0,force:!0});break}catch{}}}return await o.rm(t,{force:!0}),!0}async function Np(){let i=oo();if(!await bp())return L.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await l0(),i.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(bi,{recursive:!0}),await Ki()==="cn")await Lp(bi);else if(process.platform==="win32"){let d=`$env:BUN_INSTALL="${bi}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",d],{stdout:"inherit",stderr:"inherit"}).exited!==0)return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let d=`BUN_INSTALL="${bi}" ${a0()}`;if(await Bun.spawn(["bash","-c",d],{stdout:"inherit",stderr:"inherit"}).exited!==0)return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return uo=Y,i.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),L.info(`\u5B89\u88C5\u4F4D\u7F6E: ${bi}`),!0}catch(o){return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function Wp(){if(await Ku())return uo=Y,!0;return L.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),L.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await Np()}async function Wi(){if(uo){if(!fp(uo))uo=Y;return uo}if(await Ku())return uo=Y,Y;return Y}async function L0(i){try{let o=await ui(),n=await fetch(`${o}/${i}/latest`);if(!n.ok)return null;return(await n.json()).version}catch{return null}}async function kp(i){return(await z()).installedClients[i.id]?.version||null}async function zp(i,o){let n=R(i,"node_modules",o,"package.json");try{return await Bun.file(n).exists()}catch{return!1}}async function Vu(i){let o=Gi(i.id);return zp(o,i.package)}async function Tu(i){let o=await kp(i);if(!o)return!0;let n=await L0(i.package);if(!n)return!1;return o!==n}function Fu(i){let{platform:o,arch:n}=process,d=`${o}-${n}`;for(let[e,u]of Object.entries(i))if(e.endsWith(d))return{pkg:e,version:u};return null}async function Eu(i,o,n,d){let e=R(o,"node_modules",i.package,"package.json");try{let u=Bun.file(e);if(!await u.exists())return;let t=(await u.json()).optionalDependencies;if(!t||typeof t!=="object")return;let c=Fu(t);if(!c)return;let p=process.platform==="win32"?`${i.command}.exe`:i.command,l=R(o,"node_modules",c.pkg,p),x=Bun.file(l);if(await x.exists()&&x.size>1024)return;L.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${c.pkg}...`);for(let w of[c.version,"latest"]){let y=Bun.spawn([n,"add",`${c.pkg}@${w}`],{cwd:o,stdout:"pipe",stderr:"pipe",env:Zu(d)});if(await y.exited,y.exitCode===0)break;if(w==="latest"){let s=await new Response(y.stderr).text();L.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${s.slice(0,200)}`)}}}catch(u){L.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${u instanceof Error?u.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function f0(i,o){let n=await import("fs/promises"),d=R(o,"node_modules",i.package,"package.json");try{let e=Bun.file(d);if(!await e.exists())return!1;let u=await e.json(),r=u.optionalDependencies;if(!r)return!0;let t=Fu(r);if(!t)return L.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let c=u.bin,a=typeof c==="string"?c:c?.[i.command];if(!a)return!1;let p=R(o,"node_modules",i.package,a),l=process.platform==="win32",x=l?`${i.command}.exe`:i.command,w=R(o,"node_modules",t.pkg,x),y=Bun.file(w);if(await y.exists()&&y.size>1024){if(await Bun.write(p,y),!l)await n.chmod(p,493);return!0}let s=R(o,"node_modules",i.package,"install.cjs");if(await Bun.file(s).exists()){L.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let v=await Wi(),h=Bun.spawn([v,s],{cwd:R(o,"node_modules",i.package),stdout:"pipe",stderr:"pipe"});if(await h.exited,h.exitCode!==0){let k=await new Response(h.stderr).text();L.warn(`postinstall \u5931\u8D25: ${k.slice(0,200)}`)}let M=Bun.file(p);if(await M.exists()&&M.size>1024){if(!l)await n.chmod(p,493);return!0}}L.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let b=await ui();for(let v of[t.version,"latest"])try{let h=await fetch(`${b}/${t.pkg}/${v}`);if(!h.ok)continue;let k=(await h.json()).dist?.tarball;if(!k)continue;let B=R(Q,".tmp-extract-"+Date.now());await n.mkdir(B,{recursive:!0});let li=R(B,"pkg.tgz"),mo=Bun.spawn(["curl","-fsSL","-o",li,k],{stdout:"pipe",stderr:"pipe"});if(await mo.exited,mo.exitCode!==0){let nc=await new Response(mo.stderr).text();L.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${nc.slice(0,200)}`),await n.rm(B,{recursive:!0,force:!0}).catch(()=>{});continue}let Ao=Bun.file(li).size;if(Ao<1024){L.warn(`\u4E0B\u8F7D\u6587\u4EF6\u5F02\u5E38 (${Ao} bytes, url: ${k.slice(0,100)})`),await n.rm(B,{recursive:!0,force:!0}).catch(()=>{});continue}let Nd=Bun.spawn(["tar","xzf",li,"-C",B,`package/${x}`],{stdout:"pipe",stderr:"pipe"});await Nd.exited;let ic=R(B,"package",x),Wd=Bun.file(ic);if(await Wd.exists()&&Wd.size>1024){if(await Bun.write(p,Wd),!l)await n.chmod(p,493);return await n.rm(B,{recursive:!0,force:!0}).catch(()=>{}),!0}let oc=await new Response(Nd.stderr).text();L.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${Ao} bytes, exit=${Nd.exitCode}): ${oc.slice(0,200)}`),await n.rm(B,{recursive:!0,force:!0}).catch(()=>{})}catch(h){L.warn(`\u4E0B\u8F7D\u5931\u8D25: ${h instanceof Error?h.message:"\u672A\u77E5\u9519\u8BEF"}`)}if(b!=="https://registry.npmjs.org")try{let v=`https://registry.npmjs.org/${t.pkg}/-/${t.pkg.split("/").pop()}-${t.version}.tgz`;L.info("\u6B63\u5728\u4ECE npmjs.org \u76F4\u8FDE\u4E0B\u8F7D...");let h=R(Q,".tmp-extract-"+Date.now());await n.mkdir(h,{recursive:!0});let M=R(h,"pkg.tgz"),k=Bun.spawn(["curl","-fsSL","-o",M,v],{stdout:"pipe",stderr:"pipe"});if(await k.exited,k.exitCode===0&&Bun.file(M).size>1024){await Bun.spawn(["tar","xzf",M,"-C",h,`package/${x}`],{stdout:"pipe",stderr:"pipe"}).exited;let li=Bun.file(R(h,"package",x));if(await li.exists()&&li.size>1024){if(await Bun.write(p,li),!l)await n.chmod(p,493);return await n.rm(h,{recursive:!0,force:!0}).catch(()=>{}),!0}}await n.rm(h,{recursive:!0,force:!0}).catch(()=>{})}catch{}return!1}catch(e){return L.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${e instanceof Error?e.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function h0(i,o=!1){let n=oo(),d=Gi(i.id);try{if(!await Wp())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 e=await Vu(i),u=o||await Tu(i);if(e&&!u)return{success:!0};let r=e?"\u66F4\u65B0":"\u5B89\u88C5",t=`\u6B63\u5728${r} ${i.name}`;n.start(t);let c=await import("fs/promises");await c.mkdir(d,{recursive:!0});let a=R(d,"package.json");if(!await Bun.file(a).exists())await Bun.write(a,JSON.stringify({name:`tako-${i.id}`,private:!0,dependencies:{}},null,2));let l=await Wi(),x=await ui(),w=await Ki();if(L.info(`\u7F51\u7EDC\u73AF\u5883: ${w==="cn"?"\u56FD\u5185\uFF08npmmirror\uFF09":"\u6D77\u5916"} | registry: ${x}`),e){let M=R(d,"bun.lock");await c.rm(M,{force:!0}).catch(()=>{})}let y=Bun.spawn([l,"add",`${i.package}@latest`],{cwd:d,stdout:"pipe",stderr:"pipe",env:Zu(x)}),s=await Bn(y,t,(M)=>n.update(M));if(await y.exited!==0){if(n.stop(),!e)await c.rm(a,{force:!0}).catch(()=>{});return{success:!1,error:Wo(s)}}await Eu(i,d,l,x),await f0(i,d);let v=await L0(i.package),h=(await z()).installedClients[i.id]?.version;if(v){let M=await z();if(M.installedClients[i.id]={version:v,installedAt:new Date().toISOString()},await Ui(M),e&&h)O("client_updated",{client_id:i.id,from_version:h,to_version:v});else O("client_installed",{client_id:i.id,client_version:v})}return n.stop(`${i.name} ${r}\u5B8C\u6210`),{success:!0}}catch(e){return n.stop(),{success:!1,error:Wo(e instanceof Error?e.message:void 0)}}}async function s0(i){try{let o=Bun.file(i);if(!await o.exists())return!0;if(o.size<100)return!0;let d=new Uint8Array(await o.slice(0,4).arrayBuffer());if(d[0]===127&&d[1]===69&&d[2]===76&&d[3]===70)return!1;if(d[0]===254||d[0]===207||d[0]===206||d[0]===202)return!1;if(d[0]===77&&d[1]===90)return!1;return!0}catch{return!0}}async function v0(i){if(i.runtime!=="native")return;let o=Gi(i.id),n=R(o,"node_modules",i.package,"package.json");try{let d=Bun.file(n);if(!await d.exists())return;let u=(await d.json()).bin;if(!u)return;let r=typeof u==="string"?u:u[i.command];if(!r)return;let t=R(o,"node_modules",i.package,r);if(!await s0(t))return;L.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let c=await Wi(),a=await ui();if(await Eu(i,o,c,a),!await f0(i,o)||await s0(t)){if(L.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u65B0\u5B89\u88C5..."),await(await import("fs/promises")).rm(o,{recursive:!0,force:!0}),(await h0(i)).success)if(await f0(i,o),await s0(t))L.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else L.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else L.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function _u(i){if(!await Vu(i)){let d=await h0(i);if(d.success)await v0(i);return d}if(await v0(i),await Tu(i)){let d=await L0(i.package),e=(await z()).installedClients[i.id]?.version||"\u672A\u77E5",u=d?`${e} \u2192 ${d}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";if(L.info(`${i.name} \u53D1\u73B0\u66F4\u65B0: ${u}`),await gp(i.id))return L.info("\u4ECA\u65E5\u5DF2\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};if(!await Xu({message:`\u662F\u5426\u66F4\u65B0 ${i.name}\uFF1F`,defaultValue:!1}))return await $p(i.id),L.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let t=await h0(i,!0);if(t.success)return await v0(i),t;return L.warn(`\u66F4\u65B0 ${i.name} \u5931\u8D25\uFF1A${t.error??"\u672A\u77E5\u9519\u8BEF"}`),L.info("\u7EE7\u7EED\u4F7F\u7528\u5F53\u524D\u5DF2\u5B89\u88C5\u7248\u672C"),{success:!0,skippedUpdate:!0,error:t.error}}return{success:!0}}async function gp(i){try{let o=Bun.file(b0);if(!await o.exists())return!1;let d=(await o.json())[i];if(!d)return!1;let e=new Date().toISOString().slice(0,10);return d===e}catch{return!1}}async function $p(i){try{let o={},n=Bun.file(b0);if(await n.exists())try{o=await n.json()}catch{}o[i]=new Date().toISOString().slice(0,10),await Bun.write(b0,JSON.stringify(o))}catch{}}var uo=null,b0;var dn=N(()=>{Ci();E();C();bo();xi();w0();b0=R(Q,".update-dismissed.json")});import{homedir as Mp}from"os";async function W0(i){try{return(await(await import("fs/promises")).stat(i)).isDirectory()}catch{return!1}}async function Uu(i,o,n){let d=await z(),e=d.recentProjects||[],u=new Date().toISOString(),r=e.findIndex((c)=>c.path===i);if(r>=0){let c=e[r],a=c.clientUsage||{},p=a[o]||{count:0,lastAt:u};e[r]={...c,launchCount:c.launchCount+1,lastLaunchedAt:u,lastClientId:o,clientUsage:{...a,[o]:{count:p.count+1,lastAt:u,lastSelectedOptionIds:n??p.lastSelectedOptionIds}}}}else e.push({path:i,launchCount:1,lastLaunchedAt:u,lastClientId:o,clientUsage:{[o]:{count:1,lastAt:u,lastSelectedOptionIds:n}}});let t=e.sort((c,a)=>new Date(a.lastLaunchedAt).getTime()-new Date(c.lastLaunchedAt).getTime()).slice(0,Gp);d.recentProjects=t,await K(d)}async function Yn(i){let n=(await z()).recentProjects||[],d=process.cwd(),u=n.find((t)=>t.path===d)?.clientUsage?.[i]?.lastSelectedOptionIds;if(u)return u;return n.filter((t)=>t.path!==d&&t.clientUsage?.[i]?.lastSelectedOptionIds).sort((t,c)=>{let a=new Date(t.clientUsage[i].lastAt).getTime();return new Date(c.clientUsage[i].lastAt).getTime()-a})[0]?.clientUsage?.[i]?.lastSelectedOptionIds??[]}function Sp(i,o){let n=i.clientUsage?.[o];if(n)return new Date(n.lastAt).getTime();if(i.lastClientId===o)return new Date(i.lastLaunchedAt).getTime();return 0}async function Du(i,o=N0,n=!0){let e=(await z()).recentProjects||[],u=process.cwd(),t=e.filter((a)=>{if(n&&a.path===u)return!1;return a.clientUsage?.[i]||a.lastClientId===i}).map((a)=>({...a,lastUsedTime:Sp(a,i)})).sort((a,p)=>p.lastUsedTime-a.lastUsedTime),c=[];for(let{lastUsedTime:a,...p}of t){if(c.length>=o)break;if(await W0(p.path))c.push(p)}return c}async function ju(){let o=(await z()).recentProjects||[],n=process.cwd();return o.find((e)=>e.path===n)?.lastClientId||null}function k0(i,o=25){let n=Mp(),d=i.startsWith(n)?"~"+i.slice(n.length):i;if(d.length>o){let u=d.split("/").pop()||"";if(u.length>o-4)d="..."+u.slice(-o+3);else d=`.../${u}`}return d}function ir(i){let{t:o}=(X(),tc(eu)),n=Date.now(),d=new Date(i).getTime(),e=n-d,u=Math.floor(e/60000),r=Math.floor(e/3600000),t=Math.floor(e/86400000),c=Math.floor(t/7),a=Math.floor(t/30);if(u<1)return o("time.justNow");if(u<60)return o("time.minutesAgo",{n:u});if(r<24)return o("time.hoursAgo",{n:r});if(t===1)return o("time.yesterday");if(t<7)return o("time.daysAgo",{n:t});if(t<30)return o("time.weeksAgo",{n:c});return o("time.monthsAgo",{n:a})}var Gp=50,N0=3;var An=N(()=>{C()});import{dirname as qp,join as Op}from"path";import{mkdir as Rp}from"fs/promises";function rr(){return M0??Op(Q,"model-usage.json")}function $0(){return{counts:{},updatedAt:new Date(0).toISOString()}}async function tr(){try{let i=Bun.file(rr());if(!await i.exists())return $0();let o=await i.json(),n=o?.counts;if(!n||typeof n!=="object")return $0();let d={};for(let[e,u]of Object.entries(n))if(typeof u==="number"&&Number.isFinite(u))d[e]=u;return{counts:d,updatedAt:typeof o?.updatedAt==="string"?o.updatedAt:new Date(0).toISOString()}}catch{return $0()}}async function Yp(i){if(M0)await Rp(qp(M0),{recursive:!0});else await Ho();await Bun.write(rr(),JSON.stringify(i,null,2))}async function cr(){return{...(await tr()).counts}}async function ar(i){let o=await tr(),n={};for(let[d,e]of Object.entries(o.counts)){let u=e*Jp;if(u>=Bp)n[d]=u}for(let d of i){if(!d.startsWith("model-"))continue;n[d]=(n[d]??0)+1}await Yp({counts:n,updatedAt:new Date().toISOString()})}var Jp=0.95,Bp=0.05,M0=null;var G0=N(()=>{C()});function S0(i,o,n){if(o<=0)return;return{usedPct:Math.min(100,Math.max(0,Math.round(i/o*100))),costUsed:i,costLimit:o,...n?{windowMinutes:n}:{}}}function Vp(i,o){if(!Number.isFinite(i)||i<0)return;return{usedPct:0,costUsed:i,...o?{windowMinutes:o}:{}}}async function Tp(i){try{let o=await fetch(`${A}/apiStats/api/user-quota`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i}),signal:AbortSignal.timeout(5000)});if(!o.ok)return null;let n=await o.json();if(!n.plan||!n.usage)return null;return{provider:"tako",status:"ok",primary:S0(n.usage.windowCost??0,n.plan.window_cost_limit??0,n.plan.window_minutes),daily:S0(n.usage.dailyCost??0,n.plan.daily_cost_limit??0),secondary:S0(n.usage.weeklyCost??0,n.plan.weekly_cost_limit??0),fetchedAt:Date.now()}}catch{return null}}async function ro(i){let o=Date.now(),n={provider:"tako",status:"error",fetchedAt:o};if(!i)return{...n,hint:"\u7F3A\u5C11 apiId\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Tako Key",error:"missing_api_id"};let d=await Tp(i);if(d)return d;try{let e=await fetch(`${A}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i}),signal:AbortSignal.timeout(5000)});if(!e.ok)return{...n,hint:"Tako \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${e.status}`};let u=await e.json(),r=u?.data;if(!u?.success||!r)return{...n,hint:"Tako \u7528\u91CF\u6570\u636E\u683C\u5F0F\u5F02\u5E38",error:"bad_payload"};let t=r.limits?.currentDailyCost??r.usage?.total?.cost??0;return{provider:"tako",status:"ok",daily:Vp(t),fetchedAt:o}}catch(e){return{...n,hint:"Tako \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(e.message??e)}}}async function pr(i){let o=await Di();return ro(o)}var P0=N(()=>{C()});function C0(i){if(!i||typeof i.utilization!=="number")return;return{usedPct:Math.min(100,Math.max(0,Math.round(i.utilization))),resetsAt:i.resets_at??void 0}}function Fp(i){return i.authData?.credentials?.claudeAiOauth?.accessToken}async function lr(i){let o=Date.now(),n={provider:"claude-subscription",status:"error",fetchedAt:o},d=Fp(i);if(!d)return{...n,hint:"Claude OAuth \u672A\u4FDD\u5B58\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"missing_access_token"};try{let e=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${d}`,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(5000)});if(e.status===401)return{...n,hint:"Claude OAuth \u5DF2\u8FC7\u671F\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"unauthorized"};if(!e.ok)return{...n,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${e.status}`};let u=await e.json(),r=C0(u.seven_day_opus),t=C0(u.five_hour);if(t)t.windowMinutes=300;let c=C0(u.seven_day);if(c)c.windowMinutes=10080;return{provider:"claude-subscription",status:"ok",primary:t,secondary:c,...r?{modelLimits:{opus:r}}:{},fetchedAt:o}}catch(e){return{...n,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(e.message??e)}}}function mr(i){if(!i||typeof i.used_percent!=="number")return;let o={usedPct:Math.min(100,Math.max(0,Math.round(i.used_percent)))};if(typeof i.reset_at==="number")o.resetsAt=new Date(i.reset_at*1000).toISOString();if(typeof i.limit_window_seconds==="number")o.windowMinutes=Math.round(i.limit_window_seconds/60);return o}function Ep(i){let o=i.authData?.tokens;return{accessToken:o?.access_token,accountId:o?.account_id}}async function _p(i,o){if(await Bun.spawn(["which","codex"],{stdout:"pipe",stderr:"pipe"}).exited!==0)return null;let d=await import("fs/promises"),{mkdtemp:e}=d,{tmpdir:u}=await import("os"),{join:r}=await import("path"),t=await e(r(u(),"tako-codex-"));try{let c={auth_mode:"chatgpt",tokens:{access_token:i,...o?{account_id:o}:{}}};await d.writeFile(r(t,"auth.json"),JSON.stringify(c));let a=[JSON.stringify({jsonrpc:"2.0",method:"initialize",id:0,params:{clientInfo:{name:"tako",version:"1.0"}}}),JSON.stringify({jsonrpc:"2.0",method:"account/rateLimits/read",id:1,params:{}})].join(`
296
+ `)}import{join as J}from"path";function va(i){return i.startsWith(Wi)}function Xn(i){return{...process.env,BUN_CONFIG_REGISTRY:i,BUN_INSTALL_CACHE_DIR:G0}}async function fa(){try{if(!await Bun.file(A).exists())return null;let o=Bun.spawn([A,"--version"],{stdout:"pipe",stderr:"pipe"});if(await o.exited,o.exitCode!==0)return null;return(await new Response(o.stdout).text()).trim()}catch{return null}}async function Xe(){return await fa()!==null}async function ha(){if(process.platform==="win32")return!0;try{let o=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await o.exited,o.exitCode===0)return!0}catch{}W.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let i=["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 o of i)try{let n=Bun.spawn(["bash","-c",`sudo ${o} 2>/dev/null || ${o}`],{stdout:"pipe",stderr:"pipe"});if(await n.exited,n.exitCode===0)return!0}catch{}return!1}async function ba(i){let o=await import("fs/promises"),{join:n}=await import("path"),d=process.platform==="win32",u=d?"bun.exe":"bun",e=await We();W.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${e}`);let r=await fetch(e);if(!r.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${r.status}`);let t=n(i,"bun-download.zip");await Bun.write(t,r);let c=n(i,"bin");if(await o.mkdir(c,{recursive:!0}),d){let a=`Expand-Archive -Path "${t}" -DestinationPath "${i}" -Force`,l=Bun.spawn(["powershell","-Command",a],{stdout:"pipe",stderr:"pipe"});if(await l.exited,l.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let a=Bun.spawn(["unzip","-oq",t,"-d",i],{stdout:"pipe",stderr:"pipe"});if(await a.exited,a.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let p=await o.readdir(i);for(let a of p){let l=n(i,a);if((await o.stat(l)).isDirectory()&&a.startsWith("bun-")){let w=n(l,u);try{if(await o.access(w),await o.rename(w,n(c,u)),!d)await o.chmod(n(c,u),493);await o.rm(l,{recursive:!0,force:!0});break}catch{}}}return await o.rm(t,{force:!0}),!0}async function La(){let i=Zi();if(!await ha())return W.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await Ne(),i.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(Wi,{recursive:!0}),await Ii()==="cn")await ba(Wi);else if(process.platform==="win32"){let d=`$env:BUN_INSTALL="${Wi}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",d],{stdout:"inherit",stderr:"inherit"}).exited!==0)return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let d=`BUN_INSTALL="${Wi}" ${Le()}`;if(await Bun.spawn(["bash","-c",d],{stdout:"inherit",stderr:"inherit"}).exited!==0)return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return eo=A,i.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),W.info(`\u5B89\u88C5\u4F4D\u7F6E: ${Wi}`),!0}catch(o){return i.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function bd(){if(await Xe())return eo=A,!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 La()}async function pi(){if(eo){if(!va(eo))eo=A;return eo}if(await Xe())return eo=A,A;return A}async function Ld(i){try{let o=await ci(),n=await fetch(`${o}/${i}/latest`);if(!n.ok)return null;return(await n.json()).version}catch{return null}}async function Wa(i){return(await s()).installedClients[i.id]?.version||null}async function Na(i,o){let n=J(i,"node_modules",o,"package.json");try{return await Bun.file(n).exists()}catch{return!1}}async function He(i){let o=Gi(i.id);return Na(o,i.package)}async function Ze(i){let o=await Wa(i);if(!o)return!0;let n=await Ld(i.package);if(!n)return!1;return o!==n}function Ke(i){let{platform:o,arch:n}=process,d=`${o}-${n}`;for(let[u,e]of Object.entries(i))if(u.endsWith(d))return{pkg:u,version:e};return null}async function Ve(i,o,n,d){let u=J(o,"node_modules",i.package,"package.json");try{let e=Bun.file(u);if(!await e.exists())return;let t=(await e.json()).optionalDependencies;if(!t||typeof t!=="object")return;let c=Ke(t);if(!c)return;let a=process.platform==="win32"?`${i.command}.exe`:i.command,l=J(o,"node_modules",c.pkg,"package.json"),x=!1;try{let v=Bun.file(l);if(await v.exists())x=(await v.json()).version===c.version}catch{x=!1}let w=J(o,"node_modules",c.pkg,a),y=Bun.file(w);if(x&&await y.exists()&&y.size>1024)return;W.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${c.pkg}...`);for(let v of[c.version,"latest"]){let h=Bun.spawn([n,"add",`${c.pkg}@${v}`],{cwd:o,stdout:"pipe",stderr:"pipe",env:Xn(d)}),f=await Vi(h,`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${c.pkg}`,()=>{});if(await h.exited===0)break;if(v==="latest")W.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${f.slice(0,200)}`)}}catch(e){W.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${e instanceof Error?e.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function vd(i,o){let n=await import("fs/promises"),d=J(o,"node_modules",i.package,"package.json");try{let u=Bun.file(d);if(!await u.exists())return!1;let e=await u.json(),r=e.optionalDependencies;if(!r)return!0;let t=Ke(r);if(!t)return W.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let c=e.bin,p=typeof c==="string"?c:c?.[i.command];if(!p)return!1;let a=J(o,"node_modules",i.package,p),l=process.platform==="win32",x=l?`${i.command}.exe`:i.command,w=J(o,"node_modules",t.pkg,x),y=Bun.file(w);if(await y.exists()&&y.size>1024){if(await Bun.write(a,y),!l)await n.chmod(a,493);return!0}let v=J(o,"node_modules",i.package,"install.cjs");if(await Bun.file(v).exists()){W.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let f=await pi(),L=Bun.spawn([f,v],{cwd:J(o,"node_modules",i.package),stdout:"pipe",stderr:"pipe"}),M=await Vi(L,"\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236",()=>{});if(await L.exited!==0)W.warn(`postinstall \u5931\u8D25: ${M.slice(0,200)}`);let O=Bun.file(a);if(await O.exists()&&O.size>1024){if(!l)await n.chmod(a,493);return!0}}W.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let h=await ci();for(let f of[t.version,"latest"])try{let L=await fetch(`${h}/${t.pkg}/${f}`);if(!L.ok)continue;let g=(await L.json()).dist?.tarball;if(!g)continue;let O=J(q,".tmp-extract-"+Date.now());await n.mkdir(O,{recursive:!0});let li=J(O,"pkg.tgz"),mo=Bun.spawn(["curl","-fsSL","-o",li,g],{stdout:"pipe",stderr:"pipe"});if(await mo.exited,mo.exitCode!==0){let jt=await new Response(mo.stderr).text();W.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${jt.slice(0,200)}`),await n.rm(O,{recursive:!0,force:!0}).catch(()=>{});continue}let Xo=Bun.file(li).size;if(Xo<1024){W.warn(`\u4E0B\u8F7D\u6587\u4EF6\u5F02\u5E38 (${Xo} bytes, url: ${g.slice(0,100)})`),await n.rm(O,{recursive:!0,force:!0}).catch(()=>{});continue}let k0=Bun.spawn(["tar","xzf",li,"-C",O,`package/${x}`],{stdout:"pipe",stderr:"pipe"});await k0.exited;let Ut=J(O,"package",x),g0=Bun.file(Ut);if(await g0.exists()&&g0.size>1024){if(await Bun.write(a,g0),!l)await n.chmod(a,493);return await n.rm(O,{recursive:!0,force:!0}).catch(()=>{}),!0}let Dt=await new Response(k0.stderr).text();W.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${Xo} bytes, exit=${k0.exitCode}): ${Dt.slice(0,200)}`),await n.rm(O,{recursive:!0,force:!0}).catch(()=>{})}catch(L){W.warn(`\u4E0B\u8F7D\u5931\u8D25: ${L instanceof Error?L.message:"\u672A\u77E5\u9519\u8BEF"}`)}if(h!=="https://registry.npmjs.org")try{let f=`https://registry.npmjs.org/${t.pkg}/-/${t.pkg.split("/").pop()}-${t.version}.tgz`;W.info("\u6B63\u5728\u4ECE npmjs.org \u76F4\u8FDE\u4E0B\u8F7D...");let L=J(q,".tmp-extract-"+Date.now());await n.mkdir(L,{recursive:!0});let M=J(L,"pkg.tgz"),g=Bun.spawn(["curl","-fsSL","-o",M,f],{stdout:"pipe",stderr:"pipe"});if(await g.exited,g.exitCode===0&&Bun.file(M).size>1024){await Bun.spawn(["tar","xzf",M,"-C",L,`package/${x}`],{stdout:"pipe",stderr:"pipe"}).exited;let li=Bun.file(J(L,"package",x));if(await li.exists()&&li.size>1024){if(await Bun.write(a,li),!l)await n.chmod(a,493);return await n.rm(L,{recursive:!0,force:!0}).catch(()=>{}),!0}}await n.rm(L,{recursive:!0,force:!0}).catch(()=>{})}catch{}return!1}catch(u){return W.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${u instanceof Error?u.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function fd(i,o=!1){let n=Zi(),d=Gi(i.id);try{if(!await bd())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 u=await He(i),e=o||await Ze(i);if(u&&!e)return{success:!0};let r=u?"\u66F4\u65B0":"\u5B89\u88C5",t=`\u6B63\u5728${r} ${i.name}`;n.start(t);let c=await import("fs/promises");await c.mkdir(d,{recursive:!0});let p=J(d,"package.json");if(!await Bun.file(p).exists())await Bun.write(p,JSON.stringify({name:`tako-${i.id}`,private:!0,dependencies:{}},null,2));let l=await pi(),x=await ci(),w=await Ii();if(W.info(`\u7F51\u7EDC\u73AF\u5883: ${w==="cn"?"\u56FD\u5185\uFF08npmmirror\uFF09":"\u6D77\u5916"} | registry: ${x}`),u){let M=J(d,"bun.lock");await c.rm(M,{force:!0}).catch(()=>{})}let y=Bun.spawn([l,"add",`${i.package}@latest`],{cwd:d,stdout:"pipe",stderr:"pipe",env:Xn(x)}),v=await Vi(y,t,(M)=>n.update(M));if(await y.exited!==0){if(n.stop(),!u)await c.rm(p,{force:!0}).catch(()=>{});return{success:!1,error:zo(v)}}await Ve(i,d,l,x),await vd(i,d);let f=await Ld(i.package),L=(await s()).installedClients[i.id]?.version;if(f){let M=await s();if(M.installedClients[i.id]={version:f,installedAt:new Date().toISOString()},await Di(M),u&&L)R("client_updated",{client_id:i.id,from_version:L,to_version:f});else R("client_installed",{client_id:i.id,client_version:f})}return n.stop(`${i.name} ${r}\u5B8C\u6210`),{success:!0}}catch(u){return n.stop(),{success:!1,error:zo(u instanceof Error?u.message:void 0)}}}async function yd(i){try{let o=Bun.file(i);if(!await o.exists())return!0;if(o.size<100)return!0;let d=new Uint8Array(await o.slice(0,4).arrayBuffer());if(d[0]===127&&d[1]===69&&d[2]===76&&d[3]===70)return!1;if(d[0]===254||d[0]===207||d[0]===206||d[0]===202)return!1;if(d[0]===77&&d[1]===90)return!1;return!0}catch{return!0}}async function un(i,o={}){if(i.runtime!=="native")return;let n=o.reinstallOnFailure??!0,d=o.forcePlace??!1,u=Gi(i.id),e=J(u,"node_modules",i.package,"package.json");try{let r=Bun.file(e);if(!await r.exists())return;let c=(await r.json()).bin;if(!c)return;let p=typeof c==="string"?c:c[i.command];if(!p)return;let a=J(u,"node_modules",i.package,p);if(!d&&!await yd(a))return;W.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let l=await pi(),x=await ci();if(await Ve(i,u,l,x),!await vd(i,u)||await yd(a)){if(!n){W.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25");return}if(W.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u65B0\u5B89\u88C5..."),await(await import("fs/promises")).rm(u,{recursive:!0,force:!0}),(await fd(i)).success)if(await vd(i,u),await yd(a))W.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else W.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else W.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function Fe(i){if(!await He(i)){let d=await fd(i);if(d.success)await un(i);return d}if(await un(i),await Ze(i)){let d=await Ld(i.package),u=(await s()).installedClients[i.id]?.version||"\u672A\u77E5",e=d?`${u} \u2192 ${d}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";if(W.info(`${i.name} \u53D1\u73B0\u66F4\u65B0: ${e}`),await za(i.id))return W.info("\u4ECA\u65E5\u5DF2\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};if(!await Ye({message:`\u662F\u5426\u66F4\u65B0 ${i.name}\uFF1F`,defaultValue:!1}))return await sa(i.id),W.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let t=await fd(i,!0);if(t.success)return await un(i),t;return W.warn(`\u66F4\u65B0 ${i.name} \u5931\u8D25\uFF1A${t.error??"\u672A\u77E5\u9519\u8BEF"}`),W.info("\u7EE7\u7EED\u4F7F\u7528\u5F53\u524D\u5DF2\u5B89\u88C5\u7248\u672C"),{success:!0,skippedUpdate:!0,error:t.error}}return{success:!0}}async function za(i){try{let o=Bun.file(hd);if(!await o.exists())return!1;let d=(await o.json())[i];if(!d)return!1;let u=new Date().toISOString().slice(0,10);return d===u}catch{return!1}}async function sa(i){try{let o={},n=Bun.file(hd);if(await n.exists())try{o=await n.json()}catch{}o[i]=new Date().toISOString().slice(0,10),await Bun.write(hd,JSON.stringify(o))}catch{}}var eo=null,hd;var so=N(()=>{Pi();_();C();jo();wi();An();hd=J(q,".update-dismissed.json")});import{homedir as ka}from"os";async function Nd(i){try{return(await(await import("fs/promises")).stat(i)).isDirectory()}catch{return!1}}async function Te(i,o,n){let d=await s(),u=d.recentProjects||[],e=new Date().toISOString(),r=u.findIndex((c)=>c.path===i);if(r>=0){let c=u[r],p=c.clientUsage||{},a=p[o]||{count:0,lastAt:e};u[r]={...c,launchCount:c.launchCount+1,lastLaunchedAt:e,lastClientId:o,clientUsage:{...p,[o]:{count:a.count+1,lastAt:e,lastSelectedOptionIds:n??a.lastSelectedOptionIds}}}}else u.push({path:i,launchCount:1,lastLaunchedAt:e,lastClientId:o,clientUsage:{[o]:{count:1,lastAt:e,lastSelectedOptionIds:n}}});let t=u.sort((c,p)=>new Date(p.lastLaunchedAt).getTime()-new Date(c.lastLaunchedAt).getTime()).slice(0,ga);d.recentProjects=t,await K(d)}async function Hn(i){let n=(await s()).recentProjects||[],d=process.cwd(),e=n.find((t)=>t.path===d)?.clientUsage?.[i]?.lastSelectedOptionIds;if(e)return e;return n.filter((t)=>t.path!==d&&t.clientUsage?.[i]?.lastSelectedOptionIds).sort((t,c)=>{let p=new Date(t.clientUsage[i].lastAt).getTime();return new Date(c.clientUsage[i].lastAt).getTime()-p})[0]?.clientUsage?.[i]?.lastSelectedOptionIds??[]}function $a(i,o){let n=i.clientUsage?.[o];if(n)return new Date(n.lastAt).getTime();if(i.lastClientId===o)return new Date(i.lastLaunchedAt).getTime();return 0}async function _e(i,o=Wd,n=!0){let u=(await s()).recentProjects||[],e=process.cwd(),t=u.filter((p)=>{if(n&&p.path===e)return!1;return p.clientUsage?.[i]||p.lastClientId===i}).map((p)=>({...p,lastUsedTime:$a(p,i)})).sort((p,a)=>a.lastUsedTime-p.lastUsedTime),c=[];for(let{lastUsedTime:p,...a}of t){if(c.length>=o)break;if(await Nd(a.path))c.push(a)}return c}async function Ee(){let o=(await s()).recentProjects||[],n=process.cwd();return o.find((u)=>u.path===n)?.lastClientId||null}function zd(i,o=25){let n=ka(),d=i.startsWith(n)?"~"+i.slice(n.length):i;if(d.length>o){let e=d.split("/").pop()||"";if(e.length>o-4)d="..."+e.slice(-o+3);else d=`.../${e}`}return d}function Ue(i){let{t:o}=(X(),uc(ne)),n=Date.now(),d=new Date(i).getTime(),u=n-d,e=Math.floor(u/60000),r=Math.floor(u/3600000),t=Math.floor(u/86400000),c=Math.floor(t/7),p=Math.floor(t/30);if(e<1)return o("time.justNow");if(e<60)return o("time.minutesAgo",{n:e});if(r<24)return o("time.hoursAgo",{n:r});if(t===1)return o("time.yesterday");if(t<7)return o("time.daysAgo",{n:t});if(t<30)return o("time.weeksAgo",{n:c});return o("time.monthsAgo",{n:p})}var ga=50,Wd=3;var Zn=N(()=>{C()});import{dirname as Ca,join as Qa}from"path";import{mkdir as qa}from"fs/promises";function dr(){return $d??Qa(q,"model-usage.json")}function gd(){return{counts:{},updatedAt:new Date(0).toISOString()}}async function ur(){try{let i=Bun.file(dr());if(!await i.exists())return gd();let o=await i.json(),n=o?.counts;if(!n||typeof n!=="object")return gd();let d={};for(let[u,e]of Object.entries(n))if(typeof e==="number"&&Number.isFinite(e))d[u]=e;return{counts:d,updatedAt:typeof o?.updatedAt==="string"?o.updatedAt:new Date(0).toISOString()}}catch{return gd()}}async function Ja(i){if($d)await qa(Ca($d),{recursive:!0});else await Zo();await Bun.write(dr(),JSON.stringify(i,null,2))}async function er(){return{...(await ur()).counts}}async function rr(i){let o=await ur(),n={};for(let[d,u]of Object.entries(o.counts)){let e=u*Ia;if(e>=Oa)n[d]=e}for(let d of i){if(!d.startsWith("model-"))continue;n[d]=(n[d]??0)+1}await Ja({counts:n,updatedAt:new Date().toISOString()})}var Ia=0.95,Oa=0.05,$d=null;var Md=N(()=>{C()});function Gd(i,o,n){if(o<=0)return;return{usedPct:Math.min(100,Math.max(0,Math.round(i/o*100))),costUsed:i,costLimit:o,...n?{windowMinutes:n}:{}}}function Ha(i,o){if(!Number.isFinite(i)||i<0)return;return{usedPct:0,costUsed:i,...o?{windowMinutes:o}:{}}}async function Za(i){try{let o=await fetch(`${Y}/apiStats/api/user-quota`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i}),signal:AbortSignal.timeout(5000)});if(!o.ok)return null;let n=await o.json();if(!n.plan||!n.usage)return null;return{provider:"tako",status:"ok",primary:Gd(n.usage.windowCost??0,n.plan.window_cost_limit??0,n.plan.window_minutes),daily:Gd(n.usage.dailyCost??0,n.plan.daily_cost_limit??0),secondary:Gd(n.usage.weeklyCost??0,n.plan.weekly_cost_limit??0),fetchedAt:Date.now()}}catch{return null}}async function ro(i){let o=Date.now(),n={provider:"tako",status:"error",fetchedAt:o};if(!i)return{...n,hint:"\u7F3A\u5C11 apiId\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Tako Key",error:"missing_api_id"};let d=await Za(i);if(d)return d;try{let u=await fetch(`${Y}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i}),signal:AbortSignal.timeout(5000)});if(!u.ok)return{...n,hint:"Tako \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${u.status}`};let e=await u.json(),r=e?.data;if(!e?.success||!r)return{...n,hint:"Tako \u7528\u91CF\u6570\u636E\u683C\u5F0F\u5F02\u5E38",error:"bad_payload"};let t=r.limits?.currentDailyCost??r.usage?.total?.cost??0;return{provider:"tako",status:"ok",daily:Ha(t),fetchedAt:o}}catch(u){return{...n,hint:"Tako \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(u.message??u)}}}async function tr(i){let o=await ji();return ro(o)}var Sd=N(()=>{C()});function Pd(i){if(!i||typeof i.utilization!=="number")return;return{usedPct:Math.min(100,Math.max(0,Math.round(i.utilization))),resetsAt:i.resets_at??void 0}}function Ka(i){return i.authData?.credentials?.claudeAiOauth?.accessToken}async function cr(i){let o=Date.now(),n={provider:"claude-subscription",status:"error",fetchedAt:o},d=Ka(i);if(!d)return{...n,hint:"Claude OAuth \u672A\u4FDD\u5B58\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"missing_access_token"};try{let u=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${d}`,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(5000)});if(u.status===401)return{...n,hint:"Claude OAuth \u5DF2\u8FC7\u671F\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"unauthorized"};if(!u.ok)return{...n,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${u.status}`};let e=await u.json(),r=Pd(e.seven_day_opus),t=Pd(e.five_hour);if(t)t.windowMinutes=300;let c=Pd(e.seven_day);if(c)c.windowMinutes=10080;return{provider:"claude-subscription",status:"ok",primary:t,secondary:c,...r?{modelLimits:{opus:r}}:{},fetchedAt:o}}catch(u){return{...n,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(u.message??u)}}}function pr(i){if(!i||typeof i.used_percent!=="number")return;let o={usedPct:Math.min(100,Math.max(0,Math.round(i.used_percent)))};if(typeof i.reset_at==="number")o.resetsAt=new Date(i.reset_at*1000).toISOString();if(typeof i.limit_window_seconds==="number")o.windowMinutes=Math.round(i.limit_window_seconds/60);return o}function Va(i){let o=i.authData?.tokens;return{accessToken:o?.access_token,accountId:o?.account_id}}async function Fa(i,o){if(await Bun.spawn(["which","codex"],{stdout:"pipe",stderr:"pipe"}).exited!==0)return null;let d=await import("fs/promises"),{mkdtemp:u}=d,{tmpdir:e}=await import("os"),{join:r}=await import("path"),t=await u(r(e(),"tako-codex-"));try{let c={auth_mode:"chatgpt",tokens:{access_token:i,...o?{account_id:o}:{}}};await d.writeFile(r(t,"auth.json"),JSON.stringify(c));let p=[JSON.stringify({jsonrpc:"2.0",method:"initialize",id:0,params:{clientInfo:{name:"tako",version:"1.0"}}}),JSON.stringify({jsonrpc:"2.0",method:"account/rateLimits/read",id:1,params:{}})].join(`
297
297
  `)+`
298
- `,p=Bun.spawn(["codex","app-server"],{stdin:"pipe",stdout:"pipe",stderr:"pipe",env:{...process.env,CODEX_HOME:t}});p.stdin.write(a);let l=new Promise((w)=>setTimeout(w,8000));await Promise.race([p.exited,l]),p.kill();let x=await new Response(p.stdout).text();for(let w of x.split(`
299
- `)){let y=w.trim();if(!y)continue;try{let s=JSON.parse(y);if(s.id!==1)continue;if(s.error)return null;return{status:200,body:JSON.stringify(s.result?.rateLimits??s.result??{})}}catch{continue}}return null}finally{d.rm(t,{recursive:!0,force:!0}).catch(()=>{})}}async function Up(i,o){let n=["-s","-S","--max-time","10","-w",`
300
- __HTTP__%{http_code}`,"https://chatgpt.com/backend-api/wham/usage","-H",`Authorization: Bearer ${i}`,"-H","User-Agent: codex_cli_rs/0.50.0","-H","Accept: application/json"];if(o)n.push("-H",`ChatGPT-Account-Id: ${o}`);let d=Bun.spawn(["curl",...n],{stdout:"pipe",stderr:"pipe"}),e=await new Response(d.stdout).text();await d.exited;let u=e.match(/^([\s\S]*?)\n__HTTP__(\d+)$/);return{body:u?u[1]:e,status:u?parseInt(u[2],10):0}}async function xr(i){let o=Date.now(),n={provider:"codex-subscription",status:"error",fetchedAt:o},{accessToken:d,accountId:e}=Ep(i);if(!d)return{...n,hint:"Codex OAuth \u672A\u4FDD\u5B58\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"missing_access_token"};try{let{status:u,body:r}=await jp(d,e);if(u===401)return{...n,hint:"Codex OAuth \u5DF2\u8FC7\u671F\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"unauthorized"};if(u!==200)return{...n,hint:u===0?"ChatGPT \u7528\u91CF\u83B7\u53D6\u5931\u8D25\uFF1A\u672C\u673A\u7F51\u7EDC\u65E0\u6CD5\u8BBF\u95EE chatgpt.com\uFF08\u53EF\u80FD IP \u88AB Cloudflare \u62E6\u622A\uFF0C\u53EF\u8BD5 HTTPS_PROXY\uFF09":"ChatGPT \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${u}`};let t=JSON.parse(r),c=t.rate_limit??t.rateLimits??t,a=c.primary_window??c.primary,p=c.secondary_window??c.secondary;return{provider:"codex-subscription",status:"ok",primary:mr(a),secondary:mr(p),planType:t.plan_type??t.planType,fetchedAt:o}}catch(u){return{...n,hint:"ChatGPT \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(u.message??u)}}}var Dp=async(i,o)=>{let n=await _p(i,o).catch(()=>null);if(n)return n;return Up(i,o)},jp;var wr=N(()=>{jp=Dp});var Q0={};ii(Q0,{invalidateQuotaCache:()=>rl,getOfficialQuota:()=>I0,fetchTakoQuotaByApiId:()=>ro,_setQuotaDiskCachePathForTest:()=>dl,_clearQuotaCache:()=>ul});import{homedir as il}from"os";import{join as ol}from"path";function nl(i){return`${i.type}:${i.id}`}function vr(){return sr??ol(il(),".tako","quota-cache.json")}function dl(i){sr=i}function fr(){try{let o=$("fs").readFileSync(vr(),"utf-8"),n=JSON.parse(o);return typeof n==="object"&&n!==null?n:{}}catch{return{}}}function hr(i){try{let o=$("fs"),n=vr(),d=n.slice(0,n.lastIndexOf("/"));if(d)o.mkdirSync(d,{recursive:!0});let e=`${n}.tmp.${process.pid}`;o.writeFileSync(e,JSON.stringify(i)),o.renameSync(e,n)}catch{}}function el(i){return{provider:i.type,status:"unsupported",fetchedAt:Date.now()}}async function I0(i){let o=nl(i),n=Date.now(),d=ko.get(o);if(d&&n-d.fetchedAt<yr)return d;let e=fr(),u=e[o];if(u&&n-u.fetchedAt<yr)return ko.set(o,u),u;let r;switch(i.type){case"tako":r=await pr(i);break;case"claude-subscription":r=await lr(i);break;case"codex-subscription":r=await xr(i);break;default:r=el(i);break}return ko.set(o,r),e[o]=r,hr(e),r}function ul(){ko.clear()}function rl(i,o){for(let n of[...ko.keys()])if(n.endsWith(`:${i}`))ko.delete(n);try{let n=fr(),d=!1;for(let e of Object.keys(n))if(e.endsWith(`:${i}`))delete n[e],d=!0;if(d)hr(n)}catch{}}var yr=60000,ko,sr=null;var Tn=N(()=>{P0();wr();ko=new Map});var A0={};ii(A0,{listAvailableVersions:()=>J0,installAtVersion:()=>B0,getInstalledVersion:()=>Y0});import{join as Un}from"path";async function J0(i){let n=`${await ui()}/${encodeURIComponent(i).replace("%40","@")}`,d=await fetch(n,{signal:AbortSignal.timeout(1e4)});if(!d.ok)throw Error(`registry http ${d.status}`);let e=await d.json(),u=Object.keys(e.versions??{});if(!u.length)throw Error("no versions found");let r=e.time??{},t=u.map((c)=>({version:c,publishedAt:r[c],isCurrent:!1}));return t.sort((c,a)=>{let p=c.publishedAt?Date.parse(c.publishedAt):0;return(a.publishedAt?Date.parse(a.publishedAt):0)-p}),t}async function B0(i,o){let n=await import("fs/promises"),d=Gi(i.id);await n.mkdir(d,{recursive:!0});let e=Un(d,"bun.lock"),u=Un(d,"node_modules");await n.rm(e,{force:!0}).catch(()=>{}),await n.rm(u,{recursive:!0,force:!0}).catch(()=>{});let r=Un(d,"package.json");await Bun.write(r,JSON.stringify({name:`tako-${i.id}-host`,version:"0.0.0",private:!0},null,2));let t=await ui(),{detectRegion:c}=await Promise.resolve().then(() => (bo(),ku)),a=await c(),{log:p}=await Promise.resolve().then(() => (Ci(),du));p.info(`\u7F51\u7EDC\u73AF\u5883: ${a==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${t}`);let l=Bun.spawn([Y,"add",`${i.package}@${o}`],{cwd:d,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:t}});if(await l.exited,l.exitCode!==0){let w=await new Response(l.stderr).text();throw Error(`bun add ${i.package}@${o} failed: ${w.slice(0,500).trim()}`)}let x=await z();await Ui({installedClients:{...x.installedClients,[i.id]:{version:o,installedAt:new Date().toISOString()}}})}async function Y0(i){let o=Gi(i.id),n=Un(o,"node_modules",i.package,"package.json");try{let e=Bun.file(n);if(await e.exists()){let u=await e.json();if(u.version)return u.version}}catch{}return(await z()).installedClients[i.id]?.version??null}var Dn=N(()=>{E();C();bo()});var zr={};ii(zr,{runQuotaCommand:()=>$l,buildQuotaPayload:()=>kr});async function kl(i){try{let n=await(await fetch(`${A}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:i}),signal:AbortSignal.timeout(5000)})).json();if(n.success&&n.data?.id)return{valid:!0,apiId:n.data.id};return{valid:!1,error:n.error||"Tako key validation failed"}}catch(o){return{valid:!1,error:String(o.message??o)}}}function zl(i){let o=(i.providers??[]).find((e)=>e.type==="tako"),n=o?o.apiId||"":i.apiId||"",d=o?o.apiKey||"":i.apiKey||"";if(!n&&!d)return null;return{apiId:n,apiKey:d}}function X0(i){if(!i)return;let o={usedPct:i.usedPct,...i.windowMinutes?{windowMinutes:i.windowMinutes}:{},...i.resetsAt?{resetsAt:i.resetsAt}:{}};if(typeof i.costUsed==="number")o.used=i.costUsed;if(typeof i.costLimit==="number"){o.limit=i.costLimit;let n=i.costUsed??0;o.remaining=Math.max(0,i.costLimit-n),o.remainingPct=Math.max(0,Math.min(100,100-Math.round(i.usedPct)))}return o}function rn(i,o,n){return{exitCode:1,payload:{provider:"tako",status:"error",error:i,message:o,...n?{hint:n}:{}}}}function Wr(i){return{exitCode:0,payload:{provider:"tako",status:"ok",fiveHour:X0(i.primary),daily:X0(i.daily),weekly:X0(i.secondary),fetchedAt:new Date(i.fetchedAt).toISOString()}}}function gl(i){return rn(i.error||"quota_unavailable",i.hint||"Tako quota is unavailable",i.hint)}async function kr(i,o={}){let n=o.fetchQuotaByApiId??ro,d=o.resolveApiIdFromKey??kl,e=zl(i);if(!e)return rn("missing_tako_provider","Tako provider is not configured");let u=null;if(e.apiId){if(u=await n(e.apiId),u.status==="ok")return Wr(u)}if(e.apiKey){let r=await d(e.apiKey);if(r.valid&&r.apiId&&r.apiId!==e.apiId){if(u=await n(r.apiId),u.status==="ok")return Wr(u)}else if(!e.apiId)return rn("api_id_refresh_failed",r.error||"Unable to resolve Tako API ID from API key")}if(u)return gl(u);return rn("missing_api_id","Tako API ID is not configured")}async function $l(i=[],o={}){if(i.length>0){let e=rn("invalid_args","Usage: tako quota");return process.stdout.write(`${JSON.stringify(e.payload)}
301
- `),e.exitCode}let n=o.loadConfig??z,d=await kr(await n(),o);return process.stdout.write(`${JSON.stringify(d.payload)}
302
- `),d.exitCode}var gr=N(()=>{C();P0()});import{join as Vi}from"path";import{homedir as Ml}from"os";import{mkdir as Gl,readFile as jn,writeFile as V0,rename as T0,readdir as $r,rm as Sl,appendFile as Mr}from"fs/promises";function yi(i){return Vi(H0,i)}function Gr(i){return Vi(yi(i),"meta.json")}function D(i){return Vi(yi(i),"log.ndjson")}function tn(i){return Vi(yi(i),"approvals")}function Z0(i,o){return Vi(tn(i),`${o}.req.json`)}function K0(i,o){return Vi(tn(i),`${o}.resp.json`)}async function cn(i){await Gl(i,{recursive:!0})}async function Sr(i){await cn(yi(i.sid)),await j(i),await Mr(D(i.sid),"")}async function zo(i){try{let o=await jn(Gr(i),"utf-8");return JSON.parse(o)}catch{return null}}async function j(i){let o=yi(i.sid);await cn(o);let n=Vi(o,"meta.json.tmp"),d={};for(let[e,u]of Object.entries(i)){if(e.startsWith("_"))continue;d[e]=u}await V0(n,JSON.stringify(d,null,2),"utf-8"),await T0(n,Gr(i.sid))}async function si(i,o){await Mr(D(i),JSON.stringify(o)+`
303
- `,"utf-8")}async function id(){await cn(H0);let i=await $r(H0,{withFileTypes:!0}),o=[];for(let n of i){if(!n.isDirectory())continue;let d=await zo(n.name);if(d)o.push(d)}return o.sort((n,d)=>d.lastActiveAt-n.lastActiveAt),o}async function od(i,o){let n;try{n=await jn(D(i),"utf-8")}catch{return[]}let e=n.split(`
304
- `).filter(Boolean).slice(-o),u=[];for(let r of e)try{u.push(JSON.parse(r))}catch{}return u}async function F0(i){try{await Sl(yi(i),{recursive:!0,force:!0})}catch{}}async function Pr(i,o){await cn(tn(i));let n=Z0(i,o.approvalId)+".tmp";await V0(n,JSON.stringify(o,null,2),"utf-8"),await T0(n,Z0(i,o.approvalId))}async function Pl(i,o){try{return JSON.parse(await jn(Z0(i,o),"utf-8"))}catch{return null}}async function nd(i,o,n){await cn(tn(i));let d=K0(i,o)+".tmp";await V0(d,JSON.stringify(n,null,2),"utf-8"),await T0(d,K0(i,o))}async function an(i,o){try{return JSON.parse(await jn(K0(i,o),"utf-8"))}catch{return null}}async function pn(i){try{let o=await $r(tn(i)),n=[];for(let d of o){if(!d.endsWith(".req.json"))continue;let e=d.slice(0,-9),u=await Pl(i,e);if(!u)continue;if(!await an(i,e))n.push(u)}return n.sort((d,e)=>d.requestedAt-e.requestedAt),n}catch{return[]}}var H0;var Ti=N(()=>{H0=Vi(Ml(),".tako","agent-sessions")});import{spawn as Cl}from"child_process";async function dd(i,o,n){await si(i,o),n?.onFrame?.(o)}function Il(i,o){let n=[],d=gi();if(i?.type==="assistant"&&i?.message?.content){for(let e of i.message.content)if(e?.type==="text"&&typeof e.text==="string")n.push({ts:d,kind:"text_delta",text:e.text,itemId:i.message.id});else if(e?.type==="tool_use")n.push({ts:d,kind:"tool_use",name:e.name??"?",input:e.input,itemId:e.id});else if(e?.type==="thinking"&&typeof e.thinking==="string")n.push({ts:d,kind:"reasoning_delta",text:e.thinking})}else if(i?.type==="user"&&i?.message?.content){for(let e of i.message.content)if(e?.type==="tool_result")n.push({ts:d,kind:"tool_result",itemId:e.tool_use_id,output:e.content})}else if(i?.type==="result"){if(i.is_error)n.push({ts:d,kind:"error",message:typeof i.result==="string"?i.result:"claude reported error",raw:i});n.push({ts:d,kind:"turn_completed",turnId:o,stopReason:i.stop_reason,usage:i.usage})}else if(i?.type==="stream_event"&&i?.event?.delta?.thinking)n.push({ts:d,kind:"reasoning_delta",text:String(i.event.delta.thinking)});return n}function Ir(i,o){return i.__env=o,i}var gi=()=>Date.now(),ln,Cr;var Qr=N(()=>{Ti();E();dn();ln=new Map,Cr={backend:"claude",async start(i){let o={sid:i.sid,backend:"claude",name:i.name,model:i.model,workdir:i.workdir,status:"idle",turnCount:0,createdAt:gi(),lastActiveAt:gi(),providerId:i.providerId};return await si(o.sid,{ts:gi(),kind:"session_started",sid:o.sid,backend:"claude",model:o.model}),o},async send(i,o,n){let d=oi("claude-code");if(!d)throw Error("claude-code client \u672A\u6CE8\u518C");let e=await xo(d);if(!e)e=wo(d);let u=i.turnCount===0,r=["--print","--input-format","stream-json","--output-format","stream-json","--verbose"];if(u)r.push("--session-id",i.sid);else r.push("--resume",i.sid);if(i.model)r.push("--model",i.model);r.push("--permission-mode","bypassPermissions");let t={...process.env,...i.__env};delete i.__env;let c=d.runtime==="native"?e:await Wi(),a=d.runtime==="native"?r:[e,...r],p=Cl(c,a,{env:t,cwd:i.workdir,stdio:["pipe","pipe","pipe"]});ln.set(i.sid,{pid:p.pid,kill:(b)=>p.kill(b??"SIGINT")});let l={type:"user",message:{role:"user",content:[{type:"text",text:o}]}};p.stdin.write(JSON.stringify(l)+`
305
- `),p.stdin.end(),i.status="running",i.lastActiveAt=gi(),await j(i);let x="";p.stderr.on("data",(b)=>{x+=b.toString()});let w=`t${i.turnCount+1}`;await dd(i.sid,{ts:gi(),kind:"turn_started",turnId:w},n);let y="";p.stdout.on("data",async(b)=>{y+=b.toString();let v;while((v=y.indexOf(`
306
- `))>=0){let h=y.slice(0,v).trim();if(y=y.slice(v+1),!h)continue;try{let M=JSON.parse(h);for(let k of Il(M,w))await dd(i.sid,k,n)}catch{}}});let s=await new Promise((b)=>{p.on("close",(v)=>b(v??0))});if(ln.delete(i.sid),s===0)i.turnCount++;if(i.lastActiveAt=gi(),i.status="idle",s!==0)await dd(i.sid,{ts:gi(),kind:"error",message:`claude exited ${s}${x?`: ${x.slice(0,500)}`:""}`},n);return await j(i),i},async cancel(i){let o=ln.get(i.sid);if(o)o.kill("SIGINT")},async close(i){let o=ln.get(i.sid);if(o)o.kill("SIGTERM");ln.delete(i.sid),await dd(i.sid,{ts:gi(),kind:"session_closed"}),i.status="closed",i.lastActiveAt=gi(),await j(i)},async isAlive(){return!0}}});import{join as Rr,isAbsolute as Ql,resolve as E0}from"path";import{readFile as ql,writeFile as Ol}from"fs/promises";import{homedir as Rl}from"os";function Jl(i){if(!i)return"";let o=i.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return o?o[1]:i}function qr(i,o){if(!i)return!1;let n=Ql(i)?E0(i):E0(o,i),d=E0(o);return n===d||n.startsWith(d+"/")}function Jr(i,o,n,d){if(o==="item/commandExecution/requestApproval"||o==="execCommandApproval"){let e=String(n?.command??""),u=Jl(e);for(let r of i.exec_deny??[])try{if(new RegExp(r).test(u))return{kind:"auto_deny",reason:`policy deny: /${r}/`}}catch{}for(let r of i.exec_allow??[])try{if(new RegExp(r).test(u))return{kind:"auto_allow",reason:`policy allow: /${r}/`}}catch{}return{kind:"ask"}}if(o==="item/fileChange/requestApproval"||o==="applyPatchApproval"){let e=Bl(n);for(let r of e)for(let t of i.file_deny??[])try{if(new RegExp(t).test(r))return{kind:"auto_deny",reason:`file deny: ${r} matches /${t}/`}}catch{}if(i.strict_workdir){for(let r of e)if(!qr(r,d))return{kind:"auto_deny",reason:`file outside workdir: ${r}`}}let u=e.length>0;for(let r of e){let t=!1;for(let c of i.file_allow??[])try{if(new RegExp(c).test(r)){t=!0;break}}catch{}if(!t){u=!1;break}}if(u)return{kind:"auto_allow",reason:"all paths matched file_allow"};if(!i.strict_workdir&&e.length>0&&e.every((r)=>qr(r,d)))return{kind:"auto_allow",reason:"all paths inside workdir (non-strict)"};return{kind:"ask"}}return{kind:"ask"}}function Bl(i){let o=[],n=(d)=>{if(typeof d==="string"&&d.length>0&&d.length<1024)o.push(d)};if(n(i?.path),Array.isArray(i?.changes))for(let d of i.changes)n(d?.path),n(d?.target);if(Array.isArray(i?.files))for(let d of i.files)n(d?.path??d);if(typeof i?.patch==="string")for(let d of i.patch.split(`
307
- `)){let e=d.match(/^\+\+\+\s+b\/(.*)$/);if(e)o.push(e[1])}return Array.from(new Set(o))}function D0(i){return Rr(yi(i),"policy.json")}async function _0(i){try{return JSON.parse(await ql(i,"utf-8"))}catch{return null}}async function ed(i){let o=await _0(Yl),n=await _0(D0(i));return Or(Or(U0,o),n)}function Or(i,o){if(!o)return i;return{exec_allow:[...i.exec_allow??[],...o.exec_allow??[]],exec_deny:[...i.exec_deny??[],...o.exec_deny??[]],file_allow:[...i.file_allow??[],...o.file_allow??[]],file_deny:[...i.file_deny??[],...o.file_deny??[]],strict_workdir:o.strict_workdir??i.strict_workdir}}async function ud(i){return await _0(D0(i))??{}}async function rd(i,o){await Ol(D0(i),JSON.stringify(o,null,2),"utf-8")}async function Br(i,o){let n=await ud(i),d=n.exec_allow??[];if(!d.includes(o))d.push(o);n.exec_allow=d,await rd(i,n)}var U0,Yl;var j0=N(()=>{Ti();U0={exec_allow:["^\\s*(ls|pwd|whoami|hostname|date|uname|env|echo|printenv)(\\s|$)","^\\s*(cat|head|tail|less|more|file|stat)\\s+","^\\s*(grep|rg|ag|egrep|fgrep)\\s+","^\\s*find\\s+\\S+\\s+(-name|-type|-maxdepth|-path)","^\\s*(wc|awk|sed -n)\\s+","^\\s*(which|type|whereis|command -v)\\s+","^\\s*(ps|df|du|free|top -b|iostat|vmstat)(\\s|$)","^\\s*tree(\\s|$)","^\\s*git\\s+(status|log|diff|show|branch|remote|config --(get|list)|rev-parse|describe|ls-files|ls-tree|cat-file|tag\\s+--list|stash list|reflog|fetch)(\\s|$)","^\\s*(npm|yarn|pnpm|bun)\\s+(list|outdated|info|view|search|--version)(\\s|$)","^\\s*(node|bun|python|python3|deno|go|cargo|rustc|java|javac)\\s+(--version|-V|version)(\\s|$)","^\\s*pip\\s+(list|show|--version)(\\s|$)","^\\s*cargo\\s+(check|tree|metadata)(\\s|$)","^\\s*(tsc|tsc --noEmit)(\\s|$)","^\\s*(eslint|prettier|stylelint|tslint)\\s+","^\\s*(jest|vitest|mocha|pytest|bun test|cargo test)(\\s|$)","^\\s*npm run (lint|test|build|typecheck|check)"],exec_deny:["\\bsudo\\b","\\bsu\\s+-","\\bdoas\\b","\\brm\\s+-[rRf]+\\s+(/$|/\\s|/[^./])","\\brm\\s+-[rRf]+\\s+\\$HOME(/?)?\\s","\\brm\\s+-[rRf]+\\s+~(/?)?\\s","\\bdd\\s+if=.*\\s+of=/dev/","\\bmkfs\\.","\\bshred\\b","\\bdiskutil\\s+(erase|format)","\\bcurl\\s+[^|]*\\|\\s*(sh|bash|zsh|fish)","\\bwget\\s+[^|]*\\|\\s*(sh|bash|zsh|fish)","\\bcurl\\s+.*-o\\s+/(usr|etc|bin|sbin|lib)/",":\\(\\)\\s*\\{","\\bchmod\\s+-R\\s+[0-7]+\\s+/","\\bssh-keygen\\s+-t","\\bsshpass\\b","\\b(passwd|chpasswd)\\b","\\bgit\\s+push\\s+.*--force"],file_allow:[],file_deny:["/\\.ssh/","/\\.aws/","/\\.gnupg/","\\.env(\\.|$)","/etc/(passwd|shadow|sudoers)","/(usr|etc|bin|sbin)/"],strict_workdir:!1};Yl=Rr(Rl(),".tako","agent-policy.json")});import{spawn as Al}from"child_process";import{writeFile as Xl,unlink as Hl}from"fs/promises";import{join as Yr}from"path";class Zr{proc;buf="";nextId=1;pending=new Map;notifyHandlers=[];serverReqHandler=null;closed=!1;constructor(i){this.proc=i,i.stdout?.on("data",(o)=>this.onData(o)),i.on("close",()=>this.onClose()),i.on("error",()=>this.onClose())}onData(i){this.buf+=i.toString("utf-8");let o;while((o=this.buf.indexOf(`
298
+ `,a=Bun.spawn(["codex","app-server"],{stdin:"pipe",stdout:"pipe",stderr:"pipe",env:{...process.env,CODEX_HOME:t}});a.stdin.write(p);let l=new Promise((w)=>setTimeout(w,8000));await Promise.race([a.exited,l]),a.kill();let x=await new Response(a.stdout).text();for(let w of x.split(`
299
+ `)){let y=w.trim();if(!y)continue;try{let v=JSON.parse(y);if(v.id!==1)continue;if(v.error)return null;return{status:200,body:JSON.stringify(v.result?.rateLimits??v.result??{})}}catch{continue}}return null}finally{d.rm(t,{recursive:!0,force:!0}).catch(()=>{})}}async function Ta(i,o){let n=["-s","-S","--max-time","10","-w",`
300
+ __HTTP__%{http_code}`,"https://chatgpt.com/backend-api/wham/usage","-H",`Authorization: Bearer ${i}`,"-H","User-Agent: codex_cli_rs/0.50.0","-H","Accept: application/json"];if(o)n.push("-H",`ChatGPT-Account-Id: ${o}`);let d=Bun.spawn(["curl",...n],{stdout:"pipe",stderr:"pipe"}),u=await new Response(d.stdout).text();await d.exited;let e=u.match(/^([\s\S]*?)\n__HTTP__(\d+)$/);return{body:e?e[1]:u,status:e?parseInt(e[2],10):0}}async function ar(i){let o=Date.now(),n={provider:"codex-subscription",status:"error",fetchedAt:o},{accessToken:d,accountId:u}=Va(i);if(!d)return{...n,hint:"Codex OAuth \u672A\u4FDD\u5B58\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"missing_access_token"};try{let{status:e,body:r}=await Ea(d,u);if(e===401)return{...n,hint:"Codex OAuth \u5DF2\u8FC7\u671F\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"unauthorized"};if(e!==200)return{...n,hint:e===0?"ChatGPT \u7528\u91CF\u83B7\u53D6\u5931\u8D25\uFF1A\u672C\u673A\u7F51\u7EDC\u65E0\u6CD5\u8BBF\u95EE chatgpt.com\uFF08\u53EF\u80FD IP \u88AB Cloudflare \u62E6\u622A\uFF0C\u53EF\u8BD5 HTTPS_PROXY\uFF09":"ChatGPT \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${e}`};let t=JSON.parse(r),c=t.rate_limit??t.rateLimits??t,p=c.primary_window??c.primary,a=c.secondary_window??c.secondary;return{provider:"codex-subscription",status:"ok",primary:pr(p),secondary:pr(a),planType:t.plan_type??t.planType,fetchedAt:o}}catch(e){return{...n,hint:"ChatGPT \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(e.message??e)}}}var _a=async(i,o)=>{let n=await Fa(i,o).catch(()=>null);if(n)return n;return Ta(i,o)},Ea;var lr=N(()=>{Ea=_a});var Qd={};mi(Qd,{invalidateQuotaCache:()=>dl,getOfficialQuota:()=>Cd,fetchTakoQuotaByApiId:()=>ro,_setQuotaDiskCachePathForTest:()=>il,_clearQuotaCache:()=>nl});import{homedir as Ua}from"os";import{join as Da}from"path";function ja(i){return`${i.type}:${i.id}`}function wr(){return xr??Da(Ua(),".tako","quota-cache.json")}function il(i){xr=i}function yr(){try{let o=$("fs").readFileSync(wr(),"utf-8"),n=JSON.parse(o);return typeof n==="object"&&n!==null?n:{}}catch{return{}}}function vr(i){try{let o=$("fs"),n=wr(),d=n.slice(0,n.lastIndexOf("/"));if(d)o.mkdirSync(d,{recursive:!0});let u=`${n}.tmp.${process.pid}`;o.writeFileSync(u,JSON.stringify(i)),o.renameSync(u,n)}catch{}}function ol(i){return{provider:i.type,status:"unsupported",fetchedAt:Date.now()}}async function Cd(i){let o=ja(i),n=Date.now(),d=ko.get(o);if(d&&n-d.fetchedAt<mr)return d;let u=yr(),e=u[o];if(e&&n-e.fetchedAt<mr)return ko.set(o,e),e;let r;switch(i.type){case"tako":r=await tr(i);break;case"claude-subscription":r=await cr(i);break;case"codex-subscription":r=await ar(i);break;default:r=ol(i);break}return ko.set(o,r),u[o]=r,vr(u),r}function nl(){ko.clear()}function dl(i,o){for(let n of[...ko.keys()])if(n.endsWith(`:${i}`))ko.delete(n);try{let n=yr(),d=!1;for(let u of Object.keys(n))if(u.endsWith(`:${i}`))delete n[u],d=!0;if(d)vr(n)}catch{}}var mr=60000,ko,xr=null;var En=N(()=>{Sd();lr();ko=new Map});var Ad={};mi(Ad,{listAvailableVersions:()=>Rd,installAtVersion:()=>Bd,getInstalledVersion:()=>Yd});import{join as Jd}from"path";async function Rd(i){let n=`${await ci()}/${encodeURIComponent(i).replace("%40","@")}`,d=await fetch(n,{signal:AbortSignal.timeout(1e4)});if(!d.ok)throw Error(`registry http ${d.status}`);let u=await d.json(),e=Object.keys(u.versions??{});if(!e.length)throw Error("no versions found");let r=u.time??{},t=e.map((c)=>({version:c,publishedAt:r[c],isCurrent:!1}));return t.sort((c,p)=>{let a=c.publishedAt?Date.parse(c.publishedAt):0;return(p.publishedAt?Date.parse(p.publishedAt):0)-a}),t}async function Bd(i,o){let n=await import("fs/promises"),d=Gi(i.id);if(!await bd())throw 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");await n.mkdir(d,{recursive:!0});let u=Jd(d,"bun.lock");await n.rm(u,{force:!0}).catch(()=>{});let e=Jd(d,"package.json");await Bun.write(e,JSON.stringify({name:`tako-${i.id}-host`,version:"0.0.0",private:!0},null,2));let r=await ci(),t=await Ii();W.info(`\u7F51\u7EDC\u73AF\u5883: ${t==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${r}`);let c=await pi(),p=Bun.spawn([c,"add",`${i.package}@${o}`],{cwd:d,stdout:"pipe",stderr:"pipe",env:Xn(r)}),a=Zi(),l=`\u6B63\u5728\u5207\u6362 ${i.name} \u5230 ${o}`;a.start(l);let x=await Vi(p,l,(v)=>a.update(v));if(await p.exited!==0)throw a.stop(),Error(`bun add ${i.package}@${o} failed: ${x.slice(0,500).trim()}`);await un(i,{reinstallOnFailure:!1,forcePlace:!0}),a.stop(`${i.name} \u5DF2\u5207\u6362\u5230 ${o}`);let y=await s();await Di({installedClients:{...y.installedClients,[i.id]:{version:o,installedAt:new Date().toISOString()}}})}async function Yd(i){let o=Gi(i.id),n=Jd(o,"node_modules",i.package,"package.json");try{let u=Bun.file(n);if(await u.exists()){let e=await u.json();if(e.version)return e.version}}catch{}return(await s()).installedClients[i.id]?.version??null}var i0=N(()=>{_();C();so();jo();An();Pi()});var Nr={};mi(Nr,{runQuotaCommand:()=>sl,buildQuotaPayload:()=>Wr});async function Wl(i){try{let n=await(await fetch(`${Y}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:i}),signal:AbortSignal.timeout(5000)})).json();if(n.success&&n.data?.id)return{valid:!0,apiId:n.data.id};return{valid:!1,error:n.error||"Tako key validation failed"}}catch(o){return{valid:!1,error:String(o.message??o)}}}function Nl(i){let o=(i.providers??[]).find((u)=>u.type==="tako"),n=o?o.apiId||"":i.apiId||"",d=o?o.apiKey||"":i.apiKey||"";if(!n&&!d)return null;return{apiId:n,apiKey:d}}function Xd(i){if(!i)return;let o={usedPct:i.usedPct,...i.windowMinutes?{windowMinutes:i.windowMinutes}:{},...i.resetsAt?{resetsAt:i.resetsAt}:{}};if(typeof i.costUsed==="number")o.used=i.costUsed;if(typeof i.costLimit==="number"){o.limit=i.costLimit;let n=i.costUsed??0;o.remaining=Math.max(0,i.costLimit-n),o.remainingPct=Math.max(0,Math.min(100,100-Math.round(i.usedPct)))}return o}function tn(i,o,n){return{exitCode:1,payload:{provider:"tako",status:"error",error:i,message:o,...n?{hint:n}:{}}}}function Lr(i){return{exitCode:0,payload:{provider:"tako",status:"ok",fiveHour:Xd(i.primary),daily:Xd(i.daily),weekly:Xd(i.secondary),fetchedAt:new Date(i.fetchedAt).toISOString()}}}function zl(i){return tn(i.error||"quota_unavailable",i.hint||"Tako quota is unavailable",i.hint)}async function Wr(i,o={}){let n=o.fetchQuotaByApiId??ro,d=o.resolveApiIdFromKey??Wl,u=Nl(i);if(!u)return tn("missing_tako_provider","Tako provider is not configured");let e=null;if(u.apiId){if(e=await n(u.apiId),e.status==="ok")return Lr(e)}if(u.apiKey){let r=await d(u.apiKey);if(r.valid&&r.apiId&&r.apiId!==u.apiId){if(e=await n(r.apiId),e.status==="ok")return Lr(e)}else if(!u.apiId)return tn("api_id_refresh_failed",r.error||"Unable to resolve Tako API ID from API key")}if(e)return zl(e);return tn("missing_api_id","Tako API ID is not configured")}async function sl(i=[],o={}){if(i.length>0){let u=tn("invalid_args","Usage: tako quota");return process.stdout.write(`${JSON.stringify(u.payload)}
301
+ `),u.exitCode}let n=o.loadConfig??s,d=await Wr(await n(),o);return process.stdout.write(`${JSON.stringify(d.payload)}
302
+ `),d.exitCode}var zr=N(()=>{C();Sd()});import{join as Fi}from"path";import{homedir as kl}from"os";import{mkdir as gl,readFile as o0,writeFile as Vd,rename as Fd,readdir as sr,rm as $l,appendFile as kr}from"fs/promises";function vi(i){return Fi(Hd,i)}function gr(i){return Fi(vi(i),"meta.json")}function D(i){return Fi(vi(i),"log.ndjson")}function cn(i){return Fi(vi(i),"approvals")}function Zd(i,o){return Fi(cn(i),`${o}.req.json`)}function Kd(i,o){return Fi(cn(i),`${o}.resp.json`)}async function pn(i){await gl(i,{recursive:!0})}async function $r(i){await pn(vi(i.sid)),await j(i),await kr(D(i.sid),"")}async function go(i){try{let o=await o0(gr(i),"utf-8");return JSON.parse(o)}catch{return null}}async function j(i){let o=vi(i.sid);await pn(o);let n=Fi(o,"meta.json.tmp"),d={};for(let[u,e]of Object.entries(i)){if(u.startsWith("_"))continue;d[u]=e}await Vd(n,JSON.stringify(d,null,2),"utf-8"),await Fd(n,gr(i.sid))}async function fi(i,o){await kr(D(i),JSON.stringify(o)+`
303
+ `,"utf-8")}async function n0(){await pn(Hd);let i=await sr(Hd,{withFileTypes:!0}),o=[];for(let n of i){if(!n.isDirectory())continue;let d=await go(n.name);if(d)o.push(d)}return o.sort((n,d)=>d.lastActiveAt-n.lastActiveAt),o}async function d0(i,o){let n;try{n=await o0(D(i),"utf-8")}catch{return[]}let u=n.split(`
304
+ `).filter(Boolean).slice(-o),e=[];for(let r of u)try{e.push(JSON.parse(r))}catch{}return e}async function Td(i){try{await $l(vi(i),{recursive:!0,force:!0})}catch{}}async function Mr(i,o){await pn(cn(i));let n=Zd(i,o.approvalId)+".tmp";await Vd(n,JSON.stringify(o,null,2),"utf-8"),await Fd(n,Zd(i,o.approvalId))}async function Ml(i,o){try{return JSON.parse(await o0(Zd(i,o),"utf-8"))}catch{return null}}async function u0(i,o,n){await pn(cn(i));let d=Kd(i,o)+".tmp";await Vd(d,JSON.stringify(n,null,2),"utf-8"),await Fd(d,Kd(i,o))}async function an(i,o){try{return JSON.parse(await o0(Kd(i,o),"utf-8"))}catch{return null}}async function ln(i){try{let o=await sr(cn(i)),n=[];for(let d of o){if(!d.endsWith(".req.json"))continue;let u=d.slice(0,-9),e=await Ml(i,u);if(!e)continue;if(!await an(i,u))n.push(e)}return n.sort((d,u)=>d.requestedAt-u.requestedAt),n}catch{return[]}}var Hd;var Ti=N(()=>{Hd=Fi(kl(),".tako","agent-sessions")});import{spawn as Gl}from"child_process";async function e0(i,o,n){await fi(i,o),n?.onFrame?.(o)}function Sl(i,o){let n=[],d=gi();if(i?.type==="assistant"&&i?.message?.content){for(let u of i.message.content)if(u?.type==="text"&&typeof u.text==="string")n.push({ts:d,kind:"text_delta",text:u.text,itemId:i.message.id});else if(u?.type==="tool_use")n.push({ts:d,kind:"tool_use",name:u.name??"?",input:u.input,itemId:u.id});else if(u?.type==="thinking"&&typeof u.thinking==="string")n.push({ts:d,kind:"reasoning_delta",text:u.thinking})}else if(i?.type==="user"&&i?.message?.content){for(let u of i.message.content)if(u?.type==="tool_result")n.push({ts:d,kind:"tool_result",itemId:u.tool_use_id,output:u.content})}else if(i?.type==="result"){if(i.is_error)n.push({ts:d,kind:"error",message:typeof i.result==="string"?i.result:"claude reported error",raw:i});n.push({ts:d,kind:"turn_completed",turnId:o,stopReason:i.stop_reason,usage:i.usage})}else if(i?.type==="stream_event"&&i?.event?.delta?.thinking)n.push({ts:d,kind:"reasoning_delta",text:String(i.event.delta.thinking)});return n}function Sr(i,o){return i.__env=o,i}var gi=()=>Date.now(),mn,Gr;var Pr=N(()=>{Ti();_();so();mn=new Map,Gr={backend:"claude",async start(i){let o={sid:i.sid,backend:"claude",name:i.name,model:i.model,workdir:i.workdir,status:"idle",turnCount:0,createdAt:gi(),lastActiveAt:gi(),providerId:i.providerId};return await fi(o.sid,{ts:gi(),kind:"session_started",sid:o.sid,backend:"claude",model:o.model}),o},async send(i,o,n){let d=ii("claude-code");if(!d)throw Error("claude-code client \u672A\u6CE8\u518C");let u=await xo(d);if(!u)u=wo(d);let e=i.turnCount===0,r=["--print","--input-format","stream-json","--output-format","stream-json","--verbose"];if(e)r.push("--session-id",i.sid);else r.push("--resume",i.sid);if(i.model)r.push("--model",i.model);r.push("--permission-mode","bypassPermissions");let t={...process.env,...i.__env};delete i.__env;let c=d.runtime==="native"?u:await pi(),p=d.runtime==="native"?r:[u,...r],a=Gl(c,p,{env:t,cwd:i.workdir,stdio:["pipe","pipe","pipe"]});mn.set(i.sid,{pid:a.pid,kill:(h)=>a.kill(h??"SIGINT")});let l={type:"user",message:{role:"user",content:[{type:"text",text:o}]}};a.stdin.write(JSON.stringify(l)+`
305
+ `),a.stdin.end(),i.status="running",i.lastActiveAt=gi(),await j(i);let x="";a.stderr.on("data",(h)=>{x+=h.toString()});let w=`t${i.turnCount+1}`;await e0(i.sid,{ts:gi(),kind:"turn_started",turnId:w},n);let y="";a.stdout.on("data",async(h)=>{y+=h.toString();let f;while((f=y.indexOf(`
306
+ `))>=0){let L=y.slice(0,f).trim();if(y=y.slice(f+1),!L)continue;try{let M=JSON.parse(L);for(let g of Sl(M,w))await e0(i.sid,g,n)}catch{}}});let v=await new Promise((h)=>{a.on("close",(f)=>h(f??0))});if(mn.delete(i.sid),v===0)i.turnCount++;if(i.lastActiveAt=gi(),i.status="idle",v!==0)await e0(i.sid,{ts:gi(),kind:"error",message:`claude exited ${v}${x?`: ${x.slice(0,500)}`:""}`},n);return await j(i),i},async cancel(i){let o=mn.get(i.sid);if(o)o.kill("SIGINT")},async close(i){let o=mn.get(i.sid);if(o)o.kill("SIGTERM");mn.delete(i.sid),await e0(i.sid,{ts:gi(),kind:"session_closed"}),i.status="closed",i.lastActiveAt=gi(),await j(i)},async isAlive(){return!0}}});import{join as qr,isAbsolute as Pl,resolve as _d}from"path";import{readFile as Cl,writeFile as Ql}from"fs/promises";import{homedir as ql}from"os";function Il(i){if(!i)return"";let o=i.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return o?o[1]:i}function Cr(i,o){if(!i)return!1;let n=Pl(i)?_d(i):_d(o,i),d=_d(o);return n===d||n.startsWith(d+"/")}function Ir(i,o,n,d){if(o==="item/commandExecution/requestApproval"||o==="execCommandApproval"){let u=String(n?.command??""),e=Il(u);for(let r of i.exec_deny??[])try{if(new RegExp(r).test(e))return{kind:"auto_deny",reason:`policy deny: /${r}/`}}catch{}for(let r of i.exec_allow??[])try{if(new RegExp(r).test(e))return{kind:"auto_allow",reason:`policy allow: /${r}/`}}catch{}return{kind:"ask"}}if(o==="item/fileChange/requestApproval"||o==="applyPatchApproval"){let u=Ol(n);for(let r of u)for(let t of i.file_deny??[])try{if(new RegExp(t).test(r))return{kind:"auto_deny",reason:`file deny: ${r} matches /${t}/`}}catch{}if(i.strict_workdir){for(let r of u)if(!Cr(r,d))return{kind:"auto_deny",reason:`file outside workdir: ${r}`}}let e=u.length>0;for(let r of u){let t=!1;for(let c of i.file_allow??[])try{if(new RegExp(c).test(r)){t=!0;break}}catch{}if(!t){e=!1;break}}if(e)return{kind:"auto_allow",reason:"all paths matched file_allow"};if(!i.strict_workdir&&u.length>0&&u.every((r)=>Cr(r,d)))return{kind:"auto_allow",reason:"all paths inside workdir (non-strict)"};return{kind:"ask"}}return{kind:"ask"}}function Ol(i){let o=[],n=(d)=>{if(typeof d==="string"&&d.length>0&&d.length<1024)o.push(d)};if(n(i?.path),Array.isArray(i?.changes))for(let d of i.changes)n(d?.path),n(d?.target);if(Array.isArray(i?.files))for(let d of i.files)n(d?.path??d);if(typeof i?.patch==="string")for(let d of i.patch.split(`
307
+ `)){let u=d.match(/^\+\+\+\s+b\/(.*)$/);if(u)o.push(u[1])}return Array.from(new Set(o))}function Dd(i){return qr(vi(i),"policy.json")}async function Ed(i){try{return JSON.parse(await Cl(i,"utf-8"))}catch{return null}}async function r0(i){let o=await Ed(Jl),n=await Ed(Dd(i));return Qr(Qr(Ud,o),n)}function Qr(i,o){if(!o)return i;return{exec_allow:[...i.exec_allow??[],...o.exec_allow??[]],exec_deny:[...i.exec_deny??[],...o.exec_deny??[]],file_allow:[...i.file_allow??[],...o.file_allow??[]],file_deny:[...i.file_deny??[],...o.file_deny??[]],strict_workdir:o.strict_workdir??i.strict_workdir}}async function t0(i){return await Ed(Dd(i))??{}}async function c0(i,o){await Ql(Dd(i),JSON.stringify(o,null,2),"utf-8")}async function Or(i,o){let n=await t0(i),d=n.exec_allow??[];if(!d.includes(o))d.push(o);n.exec_allow=d,await c0(i,n)}var Ud,Jl;var jd=N(()=>{Ti();Ud={exec_allow:["^\\s*(ls|pwd|whoami|hostname|date|uname|env|echo|printenv)(\\s|$)","^\\s*(cat|head|tail|less|more|file|stat)\\s+","^\\s*(grep|rg|ag|egrep|fgrep)\\s+","^\\s*find\\s+\\S+\\s+(-name|-type|-maxdepth|-path)","^\\s*(wc|awk|sed -n)\\s+","^\\s*(which|type|whereis|command -v)\\s+","^\\s*(ps|df|du|free|top -b|iostat|vmstat)(\\s|$)","^\\s*tree(\\s|$)","^\\s*git\\s+(status|log|diff|show|branch|remote|config --(get|list)|rev-parse|describe|ls-files|ls-tree|cat-file|tag\\s+--list|stash list|reflog|fetch)(\\s|$)","^\\s*(npm|yarn|pnpm|bun)\\s+(list|outdated|info|view|search|--version)(\\s|$)","^\\s*(node|bun|python|python3|deno|go|cargo|rustc|java|javac)\\s+(--version|-V|version)(\\s|$)","^\\s*pip\\s+(list|show|--version)(\\s|$)","^\\s*cargo\\s+(check|tree|metadata)(\\s|$)","^\\s*(tsc|tsc --noEmit)(\\s|$)","^\\s*(eslint|prettier|stylelint|tslint)\\s+","^\\s*(jest|vitest|mocha|pytest|bun test|cargo test)(\\s|$)","^\\s*npm run (lint|test|build|typecheck|check)"],exec_deny:["\\bsudo\\b","\\bsu\\s+-","\\bdoas\\b","\\brm\\s+-[rRf]+\\s+(/$|/\\s|/[^./])","\\brm\\s+-[rRf]+\\s+\\$HOME(/?)?\\s","\\brm\\s+-[rRf]+\\s+~(/?)?\\s","\\bdd\\s+if=.*\\s+of=/dev/","\\bmkfs\\.","\\bshred\\b","\\bdiskutil\\s+(erase|format)","\\bcurl\\s+[^|]*\\|\\s*(sh|bash|zsh|fish)","\\bwget\\s+[^|]*\\|\\s*(sh|bash|zsh|fish)","\\bcurl\\s+.*-o\\s+/(usr|etc|bin|sbin|lib)/",":\\(\\)\\s*\\{","\\bchmod\\s+-R\\s+[0-7]+\\s+/","\\bssh-keygen\\s+-t","\\bsshpass\\b","\\b(passwd|chpasswd)\\b","\\bgit\\s+push\\s+.*--force"],file_allow:[],file_deny:["/\\.ssh/","/\\.aws/","/\\.gnupg/","\\.env(\\.|$)","/etc/(passwd|shadow|sudoers)","/(usr|etc|bin|sbin)/"],strict_workdir:!1};Jl=qr(ql(),".tako","agent-policy.json")});import{spawn as Rl}from"child_process";import{writeFile as Bl,unlink as Yl}from"fs/promises";import{join as Jr}from"path";class Ar{proc;buf="";nextId=1;pending=new Map;notifyHandlers=[];serverReqHandler=null;closed=!1;constructor(i){this.proc=i,i.stdout?.on("data",(o)=>this.onData(o)),i.on("close",()=>this.onClose()),i.on("error",()=>this.onClose())}onData(i){this.buf+=i.toString("utf-8");let o;while((o=this.buf.indexOf(`
308
308
  `))>=0){let n=this.buf.slice(0,o).trim();if(this.buf=this.buf.slice(o+1),!n)continue;try{this.dispatch(JSON.parse(n))}catch{}}}dispatch(i){if(i&&typeof i==="object"){if(i.id!==void 0&&(("result"in i)||("error"in i))){let o=this.pending.get(i.id);if(o)if(this.pending.delete(i.id),i.error)o.reject(Error(JSON.stringify(i.error)));else o.resolve(i.result);return}if(i.method&&i.id!==void 0){this.serverReqHandler?.(i.method,i.id,i.params);return}if(i.method)for(let o of this.notifyHandlers)o(i.method,i.params)}}onClose(){this.closed=!0;for(let[,i]of this.pending)i.reject(Error("rpc closed"));this.pending.clear()}write(i){if(this.closed)return;this.proc.stdin?.write(JSON.stringify(i)+`
309
- `)}request(i,o){if(this.closed)return Promise.reject(Error("rpc closed"));let n=this.nextId++;return new Promise((d,e)=>{this.pending.set(n,{resolve:d,reject:e}),this.write({jsonrpc:"2.0",method:i,params:o,id:n})})}notify(i,o){this.write({jsonrpc:"2.0",method:i,params:o})}reply(i,o){this.write({jsonrpc:"2.0",id:i,result:o})}replyError(i,o,n){this.write({jsonrpc:"2.0",id:i,error:{code:o,message:n}})}onNotification(i){this.notifyHandlers.push(i)}onServerRequest(i){this.serverReqHandler=i}pid(){return this.proc.pid}kill(i="SIGTERM"){try{this.proc.kill(i)}catch{}}close(){try{this.proc.stdin?.end()}catch{}this.kill("SIGTERM")}}async function Ar(i,o){let n=oi("codex");if(!n)throw Error("codex client \u672A\u6CE8\u518C");let d=await xo(n)??wo(n),e={...process.env,...o},u=n.runtime==="native"?d:await Wi(),r=n.runtime==="native"?["app-server"]:[d,"app-server"],t=Al(u,r,{env:e,cwd:i,stdio:["pipe","pipe","pipe"]});return t.stderr?.on("data",()=>{}),new Zr(t)}async function Xr(i){await i.request("initialize",{clientInfo:{name:"tako-agent",title:"Tako Agent",version:"0.1"},capabilities:null})}function Hr(i,o={}){let n=i.approvalMode==="external",d={cwd:i.workdir,approvalPolicy:n?"untrusted":"never",sandbox:n?"workspace-write":"danger-full-access",...o};if(i.model)d.model=i.model;if(i.providerHint?.type==="tako"||i.providerHint?.type==="custom")d.modelProvider="tako";return d}function ie(i,o){if(i==="applyPatchApproval"||i==="execCommandApproval")return{decision:o?"approved":"denied"};if(i==="item/commandExecution/requestApproval"||i==="item/fileChange/requestApproval")return{decision:o?"accept":"decline"};if(i==="item/permissions/requestApproval")return o?{permissions:{allowedTools:["*"]},scope:"turn"}:{permissions:{},scope:"turn"};if(i==="mcpServer/elicitation/request")return{action:o?"accept":"decline"};return{decision:o?"approved":"denied"}}function Zl(i){if(i.includes("commandExecution")||i==="execCommandApproval")return"exec";if(i.includes("fileChange")||i==="applyPatchApproval")return"patch";if(i.includes("permissions"))return"permission";if(i.includes("tool/"))return"tool";return"other"}async function Kl(i,o,n=300000,d=200){let e=Date.now();while(Date.now()-e<n){let u=await an(i,o);if(u)return{allow:u.decision==="allow",reason:u.reason,by:u.by};await new Promise((r)=>setTimeout(r,d))}return{allow:!1,reason:`timeout after ${Math.round(n/1000)}s`,by:"tako-timeout"}}function td(i,o){return i.__env=o,i}function Vl(i,o){let n=[],d=ri();switch(i){case"turn/started":n.push({ts:d,kind:"turn_started",turnId:o?.turn?.id??"?"});break;case"turn/completed":n.push({ts:d,kind:"turn_completed",turnId:o?.turn?.id,usage:o?.turn?.usage});break;case"item/agentMessage/delta":if(typeof o?.delta==="string")n.push({ts:d,kind:"text_delta",text:o.delta,itemId:o.itemId});break;case"item/reasoning/textDelta":case"item/reasoning/summaryTextDelta":if(typeof o?.delta==="string")n.push({ts:d,kind:"reasoning_delta",text:o.delta});break;case"item/started":{let e=o?.item;if(!e)break;if(e.type==="commandExecution")n.push({ts:d,kind:"tool_use",name:"shell",input:{command:e.command},itemId:e.id});else if(e.type==="fileChange")n.push({ts:d,kind:"tool_use",name:"fileChange",input:e,itemId:e.id});else if(e.type==="mcpToolCall")n.push({ts:d,kind:"tool_use",name:e.serverName?`${e.serverName}.${e.toolName}`:e.toolName??"mcp",input:e.args,itemId:e.id});break}case"item/completed":{let e=o?.item;if(!e)break;if(e.type==="commandExecution"||e.type==="fileChange"||e.type==="mcpToolCall")n.push({ts:d,kind:"tool_result",itemId:e.id,output:e});break}case"error":case"warning":n.push({ts:d,kind:"error",message:o?.message??i,raw:o});break}return n}var ri=()=>Date.now(),Kr;var Vr=N(()=>{Ti();j0();E();dn();Kr={backend:"codex",async start(i){let o={sid:i.sid,backend:"codex",name:i.name,model:i.model,workdir:i.workdir,status:"idle",approvalMode:i.approvalMode??"yolo",turnCount:0,createdAt:ri(),lastActiveAt:ri(),providerId:i.providerId};return await si(o.sid,{ts:ri(),kind:"session_started",sid:o.sid,backend:"codex",model:o.model}),o.__providerHint=i.providerHint,o},async send(i,o,n){let d=i.__env??{},e=i.__providerHint,u=await Ar(i.workdir,d),r=Yr(yi(i.sid),"turn.pid");if(u.pid())await Xl(r,String(u.pid()));let t=i.approvalMode??"yolo";u.onServerRequest((l,x,w)=>{if(t==="yolo"){u.replyError(x,-32603,`tako-agent yolo mode: ${l} declined`);return}let y=String(x),s=Zl(l);(async()=>{let b=await ed(i.sid),v=Jr(b,l,w,i.workdir);if(v.kind==="auto_allow"){await si(i.sid,{ts:ri(),kind:"tool_result",itemId:y,output:{approval:"auto_allowed",reason:v.reason}}),u.reply(x,ie(l,!0));return}if(v.kind==="auto_deny"){await si(i.sid,{ts:ri(),kind:"error",message:`auto_deny: ${v.reason}`,raw:{method:l,params:w}}),u.reply(x,ie(l,!1));return}let h={approvalId:y,method:l,params:w,approvalType:s,requestedAt:ri()};await Pr(i.sid,h),await si(i.sid,{ts:ri(),kind:"approval_required",approvalId:y,approvalType:s,params:w}),i.status="awaiting_approval",await j(i);let M=await Kl(i.sid,y);i.status="running",await j(i),u.reply(x,ie(l,M.allow))})().catch((b)=>{u.replyError(x,-32603,`approval bridge error: ${b?.message??b}`)})});let c=Promise.resolve();u.onNotification((l,x)=>{let w=Vl(l,x);if(!w.length)return;c=c.then(async()=>{for(let y of w)await si(i.sid,y),n?.onFrame?.(y)})}),i.status="running",i.lastActiveAt=ri(),await j(i);let a=new Promise((l)=>{u.onNotification((x)=>{if(x==="turn/completed"||x==="turn/failed")l()})}),p=!1;try{if(await Xr(u),!i.codexThreadId){let l=await u.request("thread/start",Hr({workdir:i.workdir,model:i.model,providerHint:e,approvalMode:t}));if(i.codexThreadId=l?.threadId??l?.id??l?.thread?.id,!i.codexThreadId)throw Error("thread/start \u65E0 threadId")}else await u.request("thread/resume",Hr({workdir:i.workdir,model:i.model,providerHint:e,approvalMode:t},{threadId:i.codexThreadId}));await u.request("turn/start",{threadId:i.codexThreadId,input:[{type:"text",text:o,text_elements:[]}]}),await Promise.race([a,new Promise((l,x)=>setTimeout(()=>x(Error("turn timeout 10min")),600000))]),await c,p=!0}catch(l){await si(i.sid,{ts:ri(),kind:"error",message:l instanceof Error?l.message:String(l)})}if(u.close(),await Hl(r).catch(()=>{}),p)i.turnCount++;return i.lastActiveAt=ri(),i.status="idle",await j(i),i},async cancel(i){let o=Yr(yi(i.sid),"turn.pid");try{let n=await import("fs/promises"),d=parseInt(await n.readFile(o,"utf-8"),10);if(d>0)process.kill(d,"SIGTERM")}catch{}},async close(i){if(i.codexThreadId)try{let o=i.__env??{},n=await Ar(i.workdir,o);await Xr(n).catch(()=>{}),await n.request("thread/archive",{threadId:i.codexThreadId}).catch(()=>{}),n.close()}catch{}await si(i.sid,{ts:ri(),kind:"session_closed"}),i.status="closed",i.lastActiveAt=ri(),await j(i)},async isAlive(i){return i.status!=="closed"}}});import{randomUUID as Tl}from"crypto";async function mn(i){let o=go[i.backend],n=oe[i.backend],d=oi(n);if(!d)throw Error(`client ${n} \u672A\u6CE8\u518C`);let e=await Tr(i.backend,i.providerId,i.model);if(!e)throw Error(`\u6CA1\u627E\u5230 ${i.backend} \u53EF\u7528\u7684 provider${i.model?`\uFF08\u542B\u6A21\u578B ${i.model}\uFF09`:""}`);let u=_(e);if(i.model)u.model=i.model;let r=d.getEnvVars(u),t=Tl(),c={sid:t,backend:i.backend,name:i.name??`${i.backend}-${t.slice(0,8)}`,model:i.model,workdir:i.workdir??process.cwd(),status:"idle",approvalMode:i.approvalMode??"yolo",turnCount:0,createdAt:Date.now(),lastActiveAt:Date.now(),providerId:e.id};await Sr(c);let a=await o.start({sid:t,name:c.name,model:i.model,workdir:c.workdir,approvalMode:i.approvalMode??"yolo",env:r,providerId:e.id,providerHint:{type:e.type,apiKey:e.apiKey,baseUrl:e.baseUrl}});return await j(a),a}async function xn(i,o,n){let d=await zo(i);if(!d)throw Error(`session ${i} \u4E0D\u5B58\u5728`);if(d.status==="closed")throw Error(`session ${i} \u5DF2\u5173\u95ED`);let e=go[d.backend],u=await ne(d);if(d.backend==="claude")Ir(d,u);else if(d.backend==="codex")td(d,u);return e.send(d,o,n)}async function wn(i){let o=await zo(i);if(!o)return;if(o.backend==="codex")td(o,await ne(o));await go[o.backend].cancel(o)}async function $o(i,o=!1){let n=await zo(i);if(!n)return;if(n.backend==="codex")td(n,await ne(n));if(await go[n.backend].close(n),o)await F0(i)}async function cd(){return id()}function Fl(i,o={}){return i.filter((n)=>{if(o.status&&o.status.length>0){if(!o.status.includes(n.status))return!1}else if(!o.includeClosed&&n.status==="closed")return!1;if(o.namePrefix&&!n.name.startsWith(o.namePrefix))return!1;if(o.backend&&n.backend!==o.backend)return!1;if(o.model&&n.model!==o.model)return!1;if(o.turns!==void 0&&n.turnCount!==o.turns)return!1;return!0})}async function ad(i={}){return Fl(await id(),i)}async function pd(i,o=50){let n=await zo(i);if(!n)return null;let d=await od(i,o),e=await go[n.backend].isAlive(n);return{meta:n,log:d,alive:e}}async function ld(){let i=await id(),o=0;for(let n of i){if(n.status==="closed"){await F0(n.sid),o++;continue}if(n.backend==="codex"){if(!await go.codex.isAlive(n))n.status="dead",await j(n)}}return o}async function Tr(i,o,n){let d=await z(),e=await V(),u=oe[i];if(o){let p=e.find((l)=>l.id===o);if(p)return p}let t=d.agentDefaults?.[i];if(t){let p=e.find((l)=>l.id===t);if(p)return p}let c=await Qi(u);if(n){let p=oi(u);if(p){for(let l of c)if(zn(p,l).some((w)=>w.id===`model-${n}`))return l}}let a=d.clientProviderMap?.[u];if(a){let p=e.find((l)=>l.id===a);if(p)return p}return c[0]}async function ne(i){let o=oe[i.backend],n=oi(o);if(!n)return{};let d=await V(),e=i.providerId?d.find((r)=>r.id===i.providerId):void 0;if(!e)e=await Tr(i.backend,void 0,i.model);if(!e)return{};let u=_(e);if(i.model)u.model=i.model;return i.__providerHint={type:e.type,apiKey:e.apiKey,baseUrl:e.baseUrl},n.getEnvVars(u)}async function Fr(i,o){let{saveConfig:n}=await Promise.resolve().then(() => (C(),Wn)),d=await z(),e=d.agentDefaults??{};e[i]=o,d.agentDefaults=e,await n(d)}async function md(){return(await z()).agentDefaults??{}}var go,oe;var xd=N(()=>{Qr();Vr();Ti();C();ai();E();go={claude:Cr,codex:Kr},oe={claude:"claude-code",codex:"codex"}});function Mo(i,o="human",n={}){if(o==="json"){process.stdout.write(JSON.stringify(de(i))+`
310
- `);return}if(o==="verbose"){_l(i,new Date(i.ts).toISOString().slice(11,23),{expandError:!0,...n});return}El(i,n)}function Er(i){if(i===void 0||i===null)return"";let o;try{o=typeof i==="string"?i:JSON.stringify(i,null,2)}catch{o=String(i)}return o.split(`
309
+ `)}request(i,o){if(this.closed)return Promise.reject(Error("rpc closed"));let n=this.nextId++;return new Promise((d,u)=>{this.pending.set(n,{resolve:d,reject:u}),this.write({jsonrpc:"2.0",method:i,params:o,id:n})})}notify(i,o){this.write({jsonrpc:"2.0",method:i,params:o})}reply(i,o){this.write({jsonrpc:"2.0",id:i,result:o})}replyError(i,o,n){this.write({jsonrpc:"2.0",id:i,error:{code:o,message:n}})}onNotification(i){this.notifyHandlers.push(i)}onServerRequest(i){this.serverReqHandler=i}pid(){return this.proc.pid}kill(i="SIGTERM"){try{this.proc.kill(i)}catch{}}close(){try{this.proc.stdin?.end()}catch{}this.kill("SIGTERM")}}async function Rr(i,o){let n=ii("codex");if(!n)throw Error("codex client \u672A\u6CE8\u518C");let d=await xo(n)??wo(n),u={...process.env,...o},e=n.runtime==="native"?d:await pi(),r=n.runtime==="native"?["app-server"]:[d,"app-server"],t=Rl(e,r,{env:u,cwd:i,stdio:["pipe","pipe","pipe"]});return t.stderr?.on("data",()=>{}),new Ar(t)}async function Br(i){await i.request("initialize",{clientInfo:{name:"tako-agent",title:"Tako Agent",version:"0.1"},capabilities:null})}function Yr(i,o={}){let n=i.approvalMode==="external",d={cwd:i.workdir,approvalPolicy:n?"untrusted":"never",sandbox:n?"workspace-write":"danger-full-access",...o};if(i.model)d.model=i.model;if(i.providerHint?.type==="tako"||i.providerHint?.type==="custom")d.modelProvider="tako";return d}function iu(i,o){if(i==="applyPatchApproval"||i==="execCommandApproval")return{decision:o?"approved":"denied"};if(i==="item/commandExecution/requestApproval"||i==="item/fileChange/requestApproval")return{decision:o?"accept":"decline"};if(i==="item/permissions/requestApproval")return o?{permissions:{allowedTools:["*"]},scope:"turn"}:{permissions:{},scope:"turn"};if(i==="mcpServer/elicitation/request")return{action:o?"accept":"decline"};return{decision:o?"approved":"denied"}}function Al(i){if(i.includes("commandExecution")||i==="execCommandApproval")return"exec";if(i.includes("fileChange")||i==="applyPatchApproval")return"patch";if(i.includes("permissions"))return"permission";if(i.includes("tool/"))return"tool";return"other"}async function Xl(i,o,n=300000,d=200){let u=Date.now();while(Date.now()-u<n){let e=await an(i,o);if(e)return{allow:e.decision==="allow",reason:e.reason,by:e.by};await new Promise((r)=>setTimeout(r,d))}return{allow:!1,reason:`timeout after ${Math.round(n/1000)}s`,by:"tako-timeout"}}function p0(i,o){return i.__env=o,i}function Hl(i,o){let n=[],d=ui();switch(i){case"turn/started":n.push({ts:d,kind:"turn_started",turnId:o?.turn?.id??"?"});break;case"turn/completed":n.push({ts:d,kind:"turn_completed",turnId:o?.turn?.id,usage:o?.turn?.usage});break;case"item/agentMessage/delta":if(typeof o?.delta==="string")n.push({ts:d,kind:"text_delta",text:o.delta,itemId:o.itemId});break;case"item/reasoning/textDelta":case"item/reasoning/summaryTextDelta":if(typeof o?.delta==="string")n.push({ts:d,kind:"reasoning_delta",text:o.delta});break;case"item/started":{let u=o?.item;if(!u)break;if(u.type==="commandExecution")n.push({ts:d,kind:"tool_use",name:"shell",input:{command:u.command},itemId:u.id});else if(u.type==="fileChange")n.push({ts:d,kind:"tool_use",name:"fileChange",input:u,itemId:u.id});else if(u.type==="mcpToolCall")n.push({ts:d,kind:"tool_use",name:u.serverName?`${u.serverName}.${u.toolName}`:u.toolName??"mcp",input:u.args,itemId:u.id});break}case"item/completed":{let u=o?.item;if(!u)break;if(u.type==="commandExecution"||u.type==="fileChange"||u.type==="mcpToolCall")n.push({ts:d,kind:"tool_result",itemId:u.id,output:u});break}case"error":case"warning":n.push({ts:d,kind:"error",message:o?.message??i,raw:o});break}return n}var ui=()=>Date.now(),Xr;var Hr=N(()=>{Ti();jd();_();so();Xr={backend:"codex",async start(i){let o={sid:i.sid,backend:"codex",name:i.name,model:i.model,workdir:i.workdir,status:"idle",approvalMode:i.approvalMode??"yolo",turnCount:0,createdAt:ui(),lastActiveAt:ui(),providerId:i.providerId};return await fi(o.sid,{ts:ui(),kind:"session_started",sid:o.sid,backend:"codex",model:o.model}),o.__providerHint=i.providerHint,o},async send(i,o,n){let d=i.__env??{},u=i.__providerHint,e=await Rr(i.workdir,d),r=Jr(vi(i.sid),"turn.pid");if(e.pid())await Bl(r,String(e.pid()));let t=i.approvalMode??"yolo";e.onServerRequest((l,x,w)=>{if(t==="yolo"){e.replyError(x,-32603,`tako-agent yolo mode: ${l} declined`);return}let y=String(x),v=Al(l);(async()=>{let h=await r0(i.sid),f=Ir(h,l,w,i.workdir);if(f.kind==="auto_allow"){await fi(i.sid,{ts:ui(),kind:"tool_result",itemId:y,output:{approval:"auto_allowed",reason:f.reason}}),e.reply(x,iu(l,!0));return}if(f.kind==="auto_deny"){await fi(i.sid,{ts:ui(),kind:"error",message:`auto_deny: ${f.reason}`,raw:{method:l,params:w}}),e.reply(x,iu(l,!1));return}let L={approvalId:y,method:l,params:w,approvalType:v,requestedAt:ui()};await Mr(i.sid,L),await fi(i.sid,{ts:ui(),kind:"approval_required",approvalId:y,approvalType:v,params:w}),i.status="awaiting_approval",await j(i);let M=await Xl(i.sid,y);i.status="running",await j(i),e.reply(x,iu(l,M.allow))})().catch((h)=>{e.replyError(x,-32603,`approval bridge error: ${h?.message??h}`)})});let c=Promise.resolve();e.onNotification((l,x)=>{let w=Hl(l,x);if(!w.length)return;c=c.then(async()=>{for(let y of w)await fi(i.sid,y),n?.onFrame?.(y)})}),i.status="running",i.lastActiveAt=ui(),await j(i);let p=new Promise((l)=>{e.onNotification((x)=>{if(x==="turn/completed"||x==="turn/failed")l()})}),a=!1;try{if(await Br(e),!i.codexThreadId){let l=await e.request("thread/start",Yr({workdir:i.workdir,model:i.model,providerHint:u,approvalMode:t}));if(i.codexThreadId=l?.threadId??l?.id??l?.thread?.id,!i.codexThreadId)throw Error("thread/start \u65E0 threadId")}else await e.request("thread/resume",Yr({workdir:i.workdir,model:i.model,providerHint:u,approvalMode:t},{threadId:i.codexThreadId}));await e.request("turn/start",{threadId:i.codexThreadId,input:[{type:"text",text:o,text_elements:[]}]}),await Promise.race([p,new Promise((l,x)=>setTimeout(()=>x(Error("turn timeout 10min")),600000))]),await c,a=!0}catch(l){await fi(i.sid,{ts:ui(),kind:"error",message:l instanceof Error?l.message:String(l)})}if(e.close(),await Yl(r).catch(()=>{}),a)i.turnCount++;return i.lastActiveAt=ui(),i.status="idle",await j(i),i},async cancel(i){let o=Jr(vi(i.sid),"turn.pid");try{let n=await import("fs/promises"),d=parseInt(await n.readFile(o,"utf-8"),10);if(d>0)process.kill(d,"SIGTERM")}catch{}},async close(i){if(i.codexThreadId)try{let o=i.__env??{},n=await Rr(i.workdir,o);await Br(n).catch(()=>{}),await n.request("thread/archive",{threadId:i.codexThreadId}).catch(()=>{}),n.close()}catch{}await fi(i.sid,{ts:ui(),kind:"session_closed"}),i.status="closed",i.lastActiveAt=ui(),await j(i)},async isAlive(i){return i.status!=="closed"}}});import{randomUUID as Zl}from"crypto";async function xn(i){let o=$o[i.backend],n=ou[i.backend],d=ii(n);if(!d)throw Error(`client ${n} \u672A\u6CE8\u518C`);let u=await Zr(i.backend,i.providerId,i.model);if(!u)throw Error(`\u6CA1\u627E\u5230 ${i.backend} \u53EF\u7528\u7684 provider${i.model?`\uFF08\u542B\u6A21\u578B ${i.model}\uFF09`:""}`);let e=E(u);if(i.model)e.model=i.model;let r=d.getEnvVars(e),t=Zl(),c={sid:t,backend:i.backend,name:i.name??`${i.backend}-${t.slice(0,8)}`,model:i.model,workdir:i.workdir??process.cwd(),status:"idle",approvalMode:i.approvalMode??"yolo",turnCount:0,createdAt:Date.now(),lastActiveAt:Date.now(),providerId:u.id};await $r(c);let p=await o.start({sid:t,name:c.name,model:i.model,workdir:c.workdir,approvalMode:i.approvalMode??"yolo",env:r,providerId:u.id,providerHint:{type:u.type,apiKey:u.apiKey,baseUrl:u.baseUrl}});return await j(p),p}async function wn(i,o,n){let d=await go(i);if(!d)throw Error(`session ${i} \u4E0D\u5B58\u5728`);if(d.status==="closed")throw Error(`session ${i} \u5DF2\u5173\u95ED`);let u=$o[d.backend],e=await nu(d);if(d.backend==="claude")Sr(d,e);else if(d.backend==="codex")p0(d,e);return u.send(d,o,n)}async function yn(i){let o=await go(i);if(!o)return;if(o.backend==="codex")p0(o,await nu(o));await $o[o.backend].cancel(o)}async function Mo(i,o=!1){let n=await go(i);if(!n)return;if(n.backend==="codex")p0(n,await nu(n));if(await $o[n.backend].close(n),o)await Td(i)}async function a0(){return n0()}function Kl(i,o={}){return i.filter((n)=>{if(o.status&&o.status.length>0){if(!o.status.includes(n.status))return!1}else if(!o.includeClosed&&n.status==="closed")return!1;if(o.namePrefix&&!n.name.startsWith(o.namePrefix))return!1;if(o.backend&&n.backend!==o.backend)return!1;if(o.model&&n.model!==o.model)return!1;if(o.turns!==void 0&&n.turnCount!==o.turns)return!1;return!0})}async function l0(i={}){return Kl(await n0(),i)}async function m0(i,o=50){let n=await go(i);if(!n)return null;let d=await d0(i,o),u=await $o[n.backend].isAlive(n);return{meta:n,log:d,alive:u}}async function x0(){let i=await n0(),o=0;for(let n of i){if(n.status==="closed"){await Td(n.sid),o++;continue}if(n.backend==="codex"){if(!await $o.codex.isAlive(n))n.status="dead",await j(n)}}return o}async function Zr(i,o,n){let d=await s(),u=await V(),e=ou[i];if(o){let a=u.find((l)=>l.id===o);if(a)return a}let t=d.agentDefaults?.[i];if(t){let a=u.find((l)=>l.id===t);if(a)return a}let c=await Qi(e);if(n){let a=ii(e);if(a){for(let l of c)if(gn(a,l).some((w)=>w.id===`model-${n}`))return l}}let p=d.clientProviderMap?.[e];if(p){let a=u.find((l)=>l.id===p);if(a)return a}return c[0]}async function nu(i){let o=ou[i.backend],n=ii(o);if(!n)return{};let d=await V(),u=i.providerId?d.find((r)=>r.id===i.providerId):void 0;if(!u)u=await Zr(i.backend,void 0,i.model);if(!u)return{};let e=E(u);if(i.model)e.model=i.model;return i.__providerHint={type:u.type,apiKey:u.apiKey,baseUrl:u.baseUrl},n.getEnvVars(e)}async function Kr(i,o){let{saveConfig:n}=await Promise.resolve().then(() => (C(),sn)),d=await s(),u=d.agentDefaults??{};u[i]=o,d.agentDefaults=u,await n(d)}async function w0(){return(await s()).agentDefaults??{}}var $o,ou;var y0=N(()=>{Pr();Hr();Ti();C();ti();_();$o={claude:Gr,codex:Xr},ou={claude:"claude-code",codex:"codex"}});function Go(i,o="human",n={}){if(o==="json"){process.stdout.write(JSON.stringify(du(i))+`
310
+ `);return}if(o==="verbose"){Fl(i,new Date(i.ts).toISOString().slice(11,23),{expandError:!0,...n});return}Vl(i,n)}function Vr(i){if(i===void 0||i===null)return"";let o;try{o=typeof i==="string"?i:JSON.stringify(i,null,2)}catch{o=String(i)}return o.split(`
311
311
  `).map((n)=>` \u2502 ${n}`).join(`
312
- `)}function El(i,o){switch(i.kind){case"text_delta":process.stdout.write(i.text);break;case"tool_use":{let n=_r(i.input)??Ri(JSON.stringify(i.input),240);console.log(`
313
- $ ${n}`);break}case"tool_result":{let n=Ur(i.output);if(Go(i.output)){console.log(` \u2717 FAILED${n?` ${n}`:""}`);let e=Ul(i.output);if(e)console.log(e.split(`
314
- `).map((u)=>` \u2502 ${u}`).join(`
312
+ `)}function Vl(i,o){switch(i.kind){case"text_delta":process.stdout.write(i.text);break;case"tool_use":{let n=Fr(i.input)??Ji(JSON.stringify(i.input),240);console.log(`
313
+ $ ${n}`);break}case"tool_result":{let n=Tr(i.output);if(So(i.output)){console.log(` \u2717 FAILED${n?` ${n}`:""}`);let u=Tl(i.output);if(u)console.log(u.split(`
314
+ `).map((e)=>` \u2502 ${e}`).join(`
315
315
  `))}else if(n)console.log(` ${n}`);break}case"approval_required":console.log(`
316
- \u26A0 APPROVAL [${i.approvalType}] id=${i.approvalId}`),console.log(` ${yn(i.approvalType,i.params)}`);break;case"turn_completed":console.log(`
316
+ \u26A0 APPROVAL [${i.approvalType}] id=${i.approvalId}`),console.log(` ${vn(i.approvalType,i.params)}`);break;case"turn_completed":console.log(`
317
317
  \u25C0 turn done${i.stopReason&&i.stopReason!=="end_turn"?` (${i.stopReason})`:""}`);break;case"error":{if(console.log(`
318
- \u2717 ${i.message}`),o.expandError&&i.raw!==void 0)console.log(Er(i.raw));else if(i.raw!==void 0)console.log(" (\u8BE6\u7EC6\u9519\u8BEF\u5DF2\u6298\u53E0\uFF0C--errors-only \u6216 logs --errors \u5C55\u5F00)");break}default:break}}function _l(i,o,n){switch(i.kind){case"session_started":console.log(`[${o}] \u25B6 session_started ${i.backend}${i.model?` model=${i.model}`:""}`);break;case"turn_started":console.log(`[${o}] \u25B6 turn_started ${i.turnId}`);break;case"text_delta":process.stdout.write(i.text);break;case"reasoning_delta":console.log(`
319
- [${o}] \uD83D\uDCAD ${Ri(i.text,240)}`);break;case"tool_use":console.log(`
320
- [${o}] \uD83D\uDD27 ${i.name} ${Ri(JSON.stringify(i.input),240)}`);break;case"tool_result":{let d=Go(i.output);console.log(`[${o}] ${d?"\u2717":"\u2713"} ${Ri(JSON.stringify(i.output),240)}`);break}case"approval_required":console.log(`[${o}] \u26A0 approval_required (${i.approvalType}) id=${i.approvalId}`);break;case"turn_completed":console.log(`
318
+ \u2717 ${i.message}`),o.expandError&&i.raw!==void 0)console.log(Vr(i.raw));else if(i.raw!==void 0)console.log(" (\u8BE6\u7EC6\u9519\u8BEF\u5DF2\u6298\u53E0\uFF0C--errors-only \u6216 logs --errors \u5C55\u5F00)");break}default:break}}function Fl(i,o,n){switch(i.kind){case"session_started":console.log(`[${o}] \u25B6 session_started ${i.backend}${i.model?` model=${i.model}`:""}`);break;case"turn_started":console.log(`[${o}] \u25B6 turn_started ${i.turnId}`);break;case"text_delta":process.stdout.write(i.text);break;case"reasoning_delta":console.log(`
319
+ [${o}] \uD83D\uDCAD ${Ji(i.text,240)}`);break;case"tool_use":console.log(`
320
+ [${o}] \uD83D\uDD27 ${i.name} ${Ji(JSON.stringify(i.input),240)}`);break;case"tool_result":{let d=So(i.output);console.log(`[${o}] ${d?"\u2717":"\u2713"} ${Ji(JSON.stringify(i.output),240)}`);break}case"approval_required":console.log(`[${o}] \u26A0 approval_required (${i.approvalType}) id=${i.approvalId}`);break;case"turn_completed":console.log(`
321
321
  [${o}] \u25C0 turn_completed${i.stopReason?` (${i.stopReason})`:""}`);break;case"error":{if(console.log(`
322
- [${o}] \u2717 ${i.message}`),n.expandError!==!1&&i.raw!==void 0)console.log(Er(i.raw));break}case"session_closed":console.log(`[${o}] \u23F9 session_closed`);break}}function de(i){let o={kind:i.kind,ts:i.ts};switch(i.kind){case"session_started":if(o.backend=i.backend,i.model)o.model=i.model;return o.sid=i.sid,o;case"turn_started":return o;case"text_delta":return o.text=i.text,o;case"reasoning_delta":return o.text=i.text,o;case"tool_use":{o.tool=i.name;let n=_r(i.input);return o.input=n?{command:n}:i.input,o}case"tool_result":return o.summary=Ur(i.output)??"",o;case"approval_required":return o.approvalId=i.approvalId,o.approvalType=i.approvalType,o.detail=yn(i.approvalType,i.params),o;case"turn_completed":if(i.stopReason&&i.stopReason!=="end_turn")o.stopReason=i.stopReason;return o;case"error":return o.message=i.message,o;case"session_closed":return o}}function _r(i){if(!i||typeof i!=="object")return null;let o=i.command??i.cmd;if(typeof o!=="string")return null;let n=o.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return n?n[1]:o}function Ur(i){if(!i)return null;if(typeof i==="string")return Ri(i,160);if(typeof i!=="object")return String(i);if(i.approval){let d=i.approval,e=i.reason?`: ${i.reason}`:"";return`[${d}]${e}`}let o=i.stdout??i.output,n=i.exit_code??i.exitCode;if(typeof o==="string"||typeof n==="number"){let d=typeof o==="string"?o.split(`
323
- `).find((r)=>r.trim())??"":"",e=d.length<=120?d:d.slice(0,120)+"\u2026",u=typeof n==="number"?` (exit ${n})`:"";return`${e}${u}`}return Ri(JSON.stringify(i),160)}function Go(i){if(!i||typeof i!=="object")return!1;let o=i.exit_code??i.exitCode;if(typeof o==="number"&&o!==0)return!0;if(i.is_error===!0||i.error)return!0;if(i.approval==="deny"||i.approval==="denied")return!0;return!1}function Ul(i){if(!i||typeof i!=="object")return null;let o=i.stderr??i.error_output;if(typeof o==="string"&&o.trim())return o.trimEnd();let n=i.error;if(typeof n==="string"&&n.trim())return n.trimEnd();return null}function Dr(i){return i.some((o)=>o.kind==="error"||o.kind==="tool_result"&&Go(o.output))}function yn(i,o){if(i==="exec"){let n=String(o?.command??""),d=n.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return`command=${Ri(d?d[1]:n,200)}`}if(i==="patch"){let n=[];if(Array.isArray(o?.changes)){for(let d of o.changes)if(d?.path)n.push(d.path)}if(o?.path)n.push(o.path);return n.length?`paths=${n.slice(0,5).join(", ")}`:Ri(JSON.stringify(o),200)}return Ri(JSON.stringify(o),200)}function Ri(i,o){if(i.length<=o)return i;return i.slice(0,o)+`\u2026(+${i.length-o})`}var nt={};ii(nt,{runAgentCommand:()=>jl});import{existsSync as ee}from"fs";import{stat as wd}from"fs/promises";import{createReadStream as Dl}from"fs";function vi(i){let o=[],n={};for(let d=0;d<i.length;d++){let e=i[d];if(e.startsWith("--")){let u=e.indexOf("=");if(u>0)n[e.slice(2,u)]=e.slice(u+1);else{let r=i[d+1];if(r!==void 0&&!r.startsWith("--"))n[e.slice(2)]=r,d++;else n[e.slice(2)]=!0}}else o.push(e)}return{positional:o,flags:n}}function jr(i){let o=Math.floor(i/1000);if(o<60)return`${o}s`;if(o<3600)return`${Math.floor(o/60)}m`;if(o<86400)return`${Math.floor(o/3600)}h`;return`${Math.floor(o/86400)}d`}function ue(i){let o={},n=!1;if(typeof i.status==="string")o.status=i.status.split(",").map((d)=>d.trim()).filter(Boolean),n=!0;if(typeof i["name-prefix"]==="string")o.namePrefix=i["name-prefix"],n=!0;if(typeof i.backend==="string")o.backend=i.backend,n=!0;if(typeof i.model==="string")o.model=i.model,n=!0;if(typeof i.turns==="string")o.turns=parseInt(i.turns,10),n=!0;if(i.all===!0||i.closed===!0)o.includeClosed=!0;return{filter:o,hasFilter:n}}async function jl(i){let o=i[0],n=i.slice(1);if(!o||o==="help"||o==="-h"||o==="--help"){it();return}switch(o){case"start":return im(n);case"run":return om(n);case"list":case"ls":return nm(n);case"send":return dm(n);case"cancel":return em(n);case"close":return um(n);case"show":return rm(n);case"logs":case"log":return tm(n);case"attach":return cm(n);case"purge":return am();case"default":return wm(n);case"defaults":return ym();case"approve":return pm(n);case"pending":return lm(n);case"policy":return mm(n);case"wait":return xm(n);default:console.error(`\u672A\u77E5\u5B50\u547D\u4EE4: ${o}`),it(),process.exit(1)}}function it(){console.log(`
322
+ [${o}] \u2717 ${i.message}`),n.expandError!==!1&&i.raw!==void 0)console.log(Vr(i.raw));break}case"session_closed":console.log(`[${o}] \u23F9 session_closed`);break}}function du(i){let o={kind:i.kind,ts:i.ts};switch(i.kind){case"session_started":if(o.backend=i.backend,i.model)o.model=i.model;return o.sid=i.sid,o;case"turn_started":return o;case"text_delta":return o.text=i.text,o;case"reasoning_delta":return o.text=i.text,o;case"tool_use":{o.tool=i.name;let n=Fr(i.input);return o.input=n?{command:n}:i.input,o}case"tool_result":return o.summary=Tr(i.output)??"",o;case"approval_required":return o.approvalId=i.approvalId,o.approvalType=i.approvalType,o.detail=vn(i.approvalType,i.params),o;case"turn_completed":if(i.stopReason&&i.stopReason!=="end_turn")o.stopReason=i.stopReason;return o;case"error":return o.message=i.message,o;case"session_closed":return o}}function Fr(i){if(!i||typeof i!=="object")return null;let o=i.command??i.cmd;if(typeof o!=="string")return null;let n=o.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return n?n[1]:o}function Tr(i){if(!i)return null;if(typeof i==="string")return Ji(i,160);if(typeof i!=="object")return String(i);if(i.approval){let d=i.approval,u=i.reason?`: ${i.reason}`:"";return`[${d}]${u}`}let o=i.stdout??i.output,n=i.exit_code??i.exitCode;if(typeof o==="string"||typeof n==="number"){let d=typeof o==="string"?o.split(`
323
+ `).find((r)=>r.trim())??"":"",u=d.length<=120?d:d.slice(0,120)+"\u2026",e=typeof n==="number"?` (exit ${n})`:"";return`${u}${e}`}return Ji(JSON.stringify(i),160)}function So(i){if(!i||typeof i!=="object")return!1;let o=i.exit_code??i.exitCode;if(typeof o==="number"&&o!==0)return!0;if(i.is_error===!0||i.error)return!0;if(i.approval==="deny"||i.approval==="denied")return!0;return!1}function Tl(i){if(!i||typeof i!=="object")return null;let o=i.stderr??i.error_output;if(typeof o==="string"&&o.trim())return o.trimEnd();let n=i.error;if(typeof n==="string"&&n.trim())return n.trimEnd();return null}function _r(i){return i.some((o)=>o.kind==="error"||o.kind==="tool_result"&&So(o.output))}function vn(i,o){if(i==="exec"){let n=String(o?.command??""),d=n.match(/^(?:\S*sh|\S*bash|\S*zsh)(?:\s+-\w+)*\s+["'](.*)["']\s*$/s);return`command=${Ji(d?d[1]:n,200)}`}if(i==="patch"){let n=[];if(Array.isArray(o?.changes)){for(let d of o.changes)if(d?.path)n.push(d.path)}if(o?.path)n.push(o.path);return n.length?`paths=${n.slice(0,5).join(", ")}`:Ji(JSON.stringify(o),200)}return Ji(JSON.stringify(o),200)}function Ji(i,o){if(i.length<=o)return i;return i.slice(0,o)+`\u2026(+${i.length-o})`}var jr={};mi(jr,{runAgentCommand:()=>El});import{existsSync as uu}from"fs";import{stat as v0}from"fs/promises";import{createReadStream as _l}from"fs";function hi(i){let o=[],n={};for(let d=0;d<i.length;d++){let u=i[d];if(u.startsWith("--")){let e=u.indexOf("=");if(e>0)n[u.slice(2,e)]=u.slice(e+1);else{let r=i[d+1];if(r!==void 0&&!r.startsWith("--"))n[u.slice(2)]=r,d++;else n[u.slice(2)]=!0}}else o.push(u)}return{positional:o,flags:n}}function Er(i){let o=Math.floor(i/1000);if(o<60)return`${o}s`;if(o<3600)return`${Math.floor(o/60)}m`;if(o<86400)return`${Math.floor(o/3600)}h`;return`${Math.floor(o/86400)}d`}function eu(i){let o={},n=!1;if(typeof i.status==="string")o.status=i.status.split(",").map((d)=>d.trim()).filter(Boolean),n=!0;if(typeof i["name-prefix"]==="string")o.namePrefix=i["name-prefix"],n=!0;if(typeof i.backend==="string")o.backend=i.backend,n=!0;if(typeof i.model==="string")o.model=i.model,n=!0;if(typeof i.turns==="string")o.turns=parseInt(i.turns,10),n=!0;if(i.all===!0||i.closed===!0)o.includeClosed=!0;return{filter:o,hasFilter:n}}async function El(i){let o=i[0],n=i.slice(1);if(!o||o==="help"||o==="-h"||o==="--help"){Ur();return}switch(o){case"start":return Ul(n);case"run":return Dl(n);case"list":case"ls":return jl(n);case"send":return im(n);case"cancel":return om(n);case"close":return nm(n);case"show":return dm(n);case"logs":case"log":return um(n);case"attach":return em(n);case"purge":return rm();case"default":return lm(n);case"defaults":return mm();case"approve":return tm(n);case"pending":return cm(n);case"policy":return pm(n);case"wait":return am(n);default:console.error(`\u672A\u77E5\u5B50\u547D\u4EE4: ${o}`),Ur(),process.exit(1)}}function Ur(){console.log(`
324
324
  tako agent <\u5B50\u547D\u4EE4> [...]
325
325
 
326
326
  start <claude|codex> [--model X] [--name N] [--cwd .] [--provider id] [--approval yolo|external] [--json]
@@ -350,27 +350,27 @@ tako agent <\u5B50\u547D\u4EE4> [...]
350
350
 
351
351
  default <backend> <providerId> \u8BBE\u9ED8\u8BA4 provider
352
352
  defaults \u67E5\u770B\u9ED8\u8BA4
353
- `)}async function $i(i){if(!i)console.error("\u7F3A\u5C11 sid \u53C2\u6570"),process.exit(1);let n=(await cd()).filter((d)=>d.sid.startsWith(i));if(n.length===0)return i;if(n.length>1)console.error(`sid \u524D\u7F00 "${i}" \u5339\u914D\u591A\u4E2A`),process.exit(1);return n[0].sid}async function im(i){let{positional:o,flags:n}=vi(i),d=o[0];if(d!=="claude"&&d!=="codex")console.error("\u7528\u6CD5: tako agent start <claude|codex>"),process.exit(1);let e;if(typeof n.approval==="string"){if(n.approval!=="yolo"&&n.approval!=="external")console.error("--approval \u4EC5\u652F\u6301 yolo|external"),process.exit(1);e=n.approval}let u=await mn({backend:d,model:typeof n.model==="string"?n.model:void 0,name:typeof n.name==="string"?n.name:void 0,workdir:typeof n.cwd==="string"?n.cwd:void 0,providerId:typeof n.provider==="string"?n.provider:void 0,approvalMode:e});if(n.json){process.stdout.write(JSON.stringify({sid:u.sid,name:u.name,backend:u.backend,model:u.model??null,workdir:u.workdir,approvalMode:u.approvalMode??"yolo"})+`
354
- `);return}if(console.log(`\u2713 ${u.backend} session \u5DF2\u521B\u5EFA`),console.log(` sid: ${u.sid}`),console.log(` name: ${u.name}`),u.model)console.log(` model: ${u.model}`);console.log(` workdir: ${u.workdir}`),console.log(` approval: ${u.approvalMode??"yolo"}`),console.log(`
355
- \u540E\u7EED\uFF1Atako agent send ${u.sid} "\u4F60\u7684 prompt"`)}async function om(i){let{positional:o,flags:n}=vi(i),d=o[0];if(d!=="claude"&&d!=="codex")console.error('\u7528\u6CD5: tako agent run <claude|codex> --prompt "..."'),process.exit(1);let e=typeof n.prompt==="string"?n.prompt:o.slice(1).join(" ");if(!e)console.error("\u7F3A\u5C11 --prompt"),process.exit(1);let u=!!n.json,r=!!n.purge,t;if(typeof n.approval==="string"){if(n.approval!=="yolo"&&n.approval!=="external")console.error("--approval \u4EC5\u652F\u6301 yolo|external"),process.exit(1);t=n.approval}let c="",a,p=[];try{let x=await mn({backend:d,model:typeof n.model==="string"?n.model:void 0,name:typeof n.name==="string"?n.name:void 0,workdir:typeof n.cwd==="string"?n.cwd:void 0,providerId:typeof n.provider==="string"?n.provider:void 0,approvalMode:t});if(c=x.sid,!u)console.log(`\u2192 run ${c.slice(0,8)} (${x.backend}${x.model?` ${x.model}`:""})`);await xn(c,e,{onFrame:(w)=>{if(w.kind==="text_delta")p.push(w.text);else if(w.kind==="error")a=w.message;if(!u)Mo(w,"human")}})}catch(x){a=x instanceof Error?x.message:String(x)}let l=a?"error":"ok";if(r&&c)try{await $o(c,!0)}catch{}if(u)process.stdout.write(JSON.stringify({sid:c,status:l,text:p.join(""),error:a??null,purged:r})+`
356
- `);else{if(a)console.error(`\u2717 run \u5931\u8D25: ${a}`);if(c&&!r)console.log(`
357
- session \u4FDD\u7559: ${c.slice(0,8)}\uFF08tako agent show ${c.slice(0,8)} \u67E5\u770B\uFF1B--purge \u53EF\u81EA\u52A8\u56DE\u6536\uFF09`)}if(a)process.exit(1)}async function nm(i){let{flags:o}=vi(i),{filter:n}=ue(o),d=await ad(n);if(o.json){process.stdout.write(JSON.stringify(d)+`
358
- `);return}let e=d.filter((l)=>l.status==="running").length;if(d.length===0){console.log("(\u65E0\u5339\u914D session)");return}let u=await Promise.all(d.map(async(l)=>Dr(await od(l.sid,60)))),r=0,t=d.map((l,x)=>{let w=u[x];if(w)r++;return{sid:l.sid.slice(0,8),backend:l.backend,name:l.name.slice(0,20),model:(l.model??"-").slice(0,24),status:l.status+(w?" \u26A0":""),turns:String(l.turnCount),age:jr(Date.now()-l.createdAt),last:jr(Date.now()-l.lastActiveAt)}}),c=["sid","backend","name","model","status","turns","age","last"],a=c.map((l,x)=>Math.max(l.length,...t.map((w)=>w[l].length))),p=(l)=>l.map((x,w)=>x.padEnd(a[w])).join(" ");console.log(p(c)),console.log(p(a.map((l)=>"\u2500".repeat(l))));for(let l of t)console.log(p(c.map((x)=>l[x])));console.log(`
359
- \u5171 ${d.length} \u4E2A\u5339\u914D${e>0?`\uFF0C${e} \u4E2A running`:""}${r>0?`\uFF0C${r} \u4E2A\u6709\u9519\u8BEF(\u26A0\uFF0Clogs <sid> --errors \u67E5\u770B)`:""}\uFF08\u9ED8\u8BA4\u9690\u85CF closed\uFF0C--all \u663E\u793A\u5168\u90E8\uFF09`)}async function dm(i){let o=new Set,n=[...i];while(n[0]&&n[0].startsWith("--"))o.add(n.shift());let d=n[0],e=n.slice(1).join(" ");if(!d||!e)console.error("\u7528\u6CD5: tako agent send [--json|--verbose] <sid> <prompt...>"),process.exit(1);let u=o.has("--json")?"json":o.has("--verbose")?"verbose":"human",r=await $i(d);if(u!=="json")console.log(`\u2192 ${r.slice(0,8)}`);await xn(r,e,{onFrame:(t)=>Mo(t,u)})}async function em(i){let{positional:o,flags:n}=vi(i),{filter:d,hasFilter:e}=ue(n);if(e&&!o[0]){let r=await ad(d);if(!await ot("cancel",r,!!n.yes,!!n.json))return;for(let t of r)try{await wn(t.sid)}catch{}if(!n.json)console.log(`\u2713 \u5DF2\u4E2D\u6B62 ${r.length} \u4E2A`);return}let u=await $i(o[0]);await wn(u),console.log(`\u2713 \u5DF2\u4E2D\u6B62 ${u.slice(0,8)}`)}async function um(i){let{positional:o,flags:n}=vi(i),{filter:d,hasFilter:e}=ue(n);if(e&&!o[0]){let r=await ad(d);if(!await ot(n.purge?"close+purge":"close",r,!!n.yes,!!n.json))return;for(let t of r)try{await $o(t.sid,!!n.purge)}catch{}if(!n.json)console.log(`\u2713 \u5DF2\u5173\u95ED ${r.length} \u4E2A${n.purge?"\uFF08\u5DF2\u5220\u9664\u76EE\u5F55\uFF09":""}`);return}let u=await $i(o[0]);await $o(u,!!n.purge),console.log(`\u2713 \u5DF2\u5173\u95ED ${u.slice(0,8)}${n.purge?"\uFF08\u5DF2\u5220\u9664\u76EE\u5F55\uFF09":""}`)}async function ot(i,o,n,d){if(o.length===0){if(!d)console.log("(\u65E0\u5339\u914D session)");return!1}if(d||n)return!0;console.log(`\u5C06\u5BF9\u4EE5\u4E0B ${o.length} \u4E2A session \u6267\u884C ${i}\uFF1A`);for(let r of o)console.log(` ${r.sid.slice(0,8)} ${r.name} [${r.status}]`);process.stdout.write("\u786E\u8BA4\uFF1F(y/N) ");let u=(await import("readline/promises")).createInterface({input:process.stdin,output:process.stdout});try{let r=await u.question("");return/^y(es)?$/i.test(r.trim())}finally{u.close()}}async function rm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=!!n["errors-only"]||!!n.errors,u=typeof n.lines==="string"?parseInt(n.lines,10):e?1e4:30,r=n.json?"json":"human",t=await pd(d,u);if(!t)console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let c=t.log;if(e)c=c.filter((p)=>p.kind==="error"||p.kind==="tool_result"&&Go(p.output));if(r==="json"){process.stdout.write(JSON.stringify({meta:t.meta,alive:t.alive,log:c.map(de)},null,2)+`
360
- `);return}let a=t.meta;if(console.log(`# ${a.sid.slice(0,8)} ${a.backend}${a.model?` ${a.model}`:""}`),console.log(`name=${a.name} status=${a.status} turns=${a.turnCount} approval=${a.approvalMode??"yolo"} alive=${t.alive}`),console.log(`workdir=${a.workdir}`),console.log(`
361
- --- ${e?"errors":"log"} (${c.length}) ---`),e&&c.length===0){console.log("(\u65E0\u9519\u8BEF\u5E27)");return}for(let p of c)Mo(p,r,{expandError:e})}async function tm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]);if(!ee(D(d)))console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let e=!!n.errors,u=(await import("fs/promises")).readFile,t=(await u(D(d),"utf-8")).split(`
362
- `).filter(Boolean),c=!1;for(let a of t){let p;try{p=JSON.parse(a)}catch{continue}let l=p.kind==="error"||p.kind==="tool_result"&&Go(p.output);if(l)c=!0;if(e&&!l)continue;if(n.json)process.stdout.write(a+`
363
- `);else Mo(p,"verbose",{expandError:!0})}if(e&&!c&&!n.json)console.log("(\u65E0\u9519\u8BEF\u5E27)")}async function cm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=n.json?"json":n.verbose?"verbose":"human";if(!ee(D(d)))console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let u=(await wd(D(d))).size;if(e!=="json")console.log(`(attached to ${d.slice(0,8)}; Ctrl-C \u9000\u51FA)`);let r=setInterval(async()=>{try{let t=(await wd(D(d))).size;if(t<=u)return;let c=Dl(D(d),{start:u,end:t-1});u=t;let a="";c.on("data",(p)=>{a+=typeof p==="string"?p:p.toString("utf-8");let l;while((l=a.indexOf(`
364
- `))>=0){let x=a.slice(0,l);if(a=a.slice(l+1),!x.trim())continue;try{Mo(JSON.parse(x),e)}catch{}}})}catch{}},200);await new Promise((t)=>{process.on("SIGINT",()=>{clearInterval(r),t()})})}async function am(){let i=await ld();console.log(`\u2713 \u6E05\u7406\u4E86 ${i} \u4E2A closed/dead session`)}async function pm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=o[1],u=o[2];if(!e||u!=="allow"&&u!=="deny")console.error("\u7528\u6CD5: tako agent approve <sid> <approvalId> <allow|deny>"),process.exit(1);let r=await an(d,e);if(r)console.error(`approval ${e} \u5DF2\u6279\u4E3A ${r.decision}`),process.exit(1);if(await nd(d,e,{decision:u,reason:typeof n.reason==="string"?n.reason:void 0,by:typeof n.by==="string"?n.by:"cli",decidedAt:Date.now()}),console.log(`\u2713 approval ${e} = ${u}`),typeof n.rule==="string"&&u==="allow")await Br(d,n.rule),console.log(`\u2713 policy: exec_allow += /${n.rule}/`)}async function lm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=await pn(d);if(n.json){process.stdout.write(JSON.stringify(e.map((u)=>({approvalId:u.approvalId,type:u.approvalType,detail:yn(u.approvalType,u.params)})),null,2)+`
365
- `);return}if(e.length===0){console.log("(\u65E0 pending)");return}for(let u of e)console.log(`[${u.approvalType}] id=${u.approvalId} ${yn(u.approvalType,u.params)}`)}async function mm(i){if(i[0]==="default-show"){console.log(JSON.stringify(U0,null,2));return}let o=await $i(i[0]),n=i[1];if(!n||n==="show"){let e=await ed(o),u=await ud(o);console.log("=== effective policy ==="),console.log(JSON.stringify(e,null,2)),console.log(`
366
- === session override ===`),console.log(Object.keys(u).length===0?"(\u7A7A)":JSON.stringify(u,null,2));return}let d=i.slice(2).join(" ").trim();if(n==="allow-exec"||n==="deny-exec"){if(!d)console.error(`\u7528\u6CD5: tako agent policy <sid> ${n} <regex>`),process.exit(1);let e=await ud(o),u=n==="allow-exec"?"exec_allow":"exec_deny",r=e[u]??[];if(!r.includes(d))r.push(d);e[u]=r,await rd(o,e),console.log(`\u2713 ${u} += /${d}/`);return}if(n==="reset"){await rd(o,{}),console.log("\u2713 \u7B56\u7565\u5DF2\u6E05\u7A7A");return}console.error(`\u672A\u77E5 policy \u5B50\u547D\u4EE4: ${n}`),process.exit(1)}async function xm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=!!n.json,u=typeof n.timeout==="string"?Number(n.timeout)*1000:600000,r=typeof n.since==="string"?Number(n.since):0;if(!ee(D(d))){if(e)process.stdout.write(JSON.stringify({event:"not_found",sid:d})+`
367
- `);else console.error(`session ${d} \u4E0D\u5B58\u5728`);process.exit(1)}let t=r>0?0:(await wd(D(d))).size,c=Date.now(),a=[];while(Date.now()-c<u){try{let p=(await wd(D(d))).size;if(p>t){let x=await(await import("fs/promises")).open(D(d),"r"),w=Buffer.alloc(p-t);await x.read(w,0,w.length,t),await x.close(),t=p;for(let y of w.toString("utf-8").split(`
368
- `)){if(!y.trim())continue;let s;try{s=JSON.parse(y)}catch{continue}if(r>0&&s.ts<r)continue;if(s.kind==="text_delta"){a.push(s.text);continue}if(s.kind==="approval_required"){let b=await pn(d);if(e)process.stdout.write(JSON.stringify({event:"approval_required",pending:b.map((v)=>({approvalId:v.approvalId,type:v.approvalType}))})+`
369
- `);else console.log(`event=approval_required pending=${b.length}`);process.exit(0)}if(s.kind==="turn_completed"){if(e)process.stdout.write(JSON.stringify({event:"turn_completed",text:a.join("")})+`
370
- `);else if(console.log("event=turn_completed"),a.join("").trim())console.log(a.join("").trim());process.exit(2)}if(s.kind==="error"){if(e)process.stdout.write(JSON.stringify({event:"error",message:s.message})+`
371
- `);else console.error(`event=error ${s.message}`);process.exit(1)}if(s.kind==="session_closed"){if(e)process.stdout.write(JSON.stringify({event:"session_closed"})+`
372
- `);else console.log("event=session_closed");process.exit(3)}}}}catch{}await new Promise((p)=>setTimeout(p,200))}if(e)process.stdout.write(JSON.stringify({event:"timeout"})+`
373
- `);else console.error("event=timeout");process.exit(1)}async function wm(i){let o=i[0],n=i[1];if(o!=="claude"&&o!=="codex"||!n)console.error("\u7528\u6CD5: tako agent default <claude|codex> <providerId>"),process.exit(1);await Fr(o,n),console.log(`\u2713 ${o} \u9ED8\u8BA4 provider = ${n}`)}async function ym(){let i=await md();if(Object.keys(i).length===0)console.log("(\u672A\u8BBE\u7F6E)");else for(let[o,n]of Object.entries(i))console.log(`${o.padEnd(8)} \u2192 ${n}`)}var dt=N(()=>{Ti();xd();j0()});var re;var te=N(()=>{re={name:"model-benchmark",description:"Tako \u6A21\u578B\u8BC4\u6D4B\u7ED3\u679C\u4E0E\u63A8\u8350 \u2014 \u67E5\u8BE2\u5404\u6A21\u578B\u7F16\u7801\u80FD\u529B\u8BC4\u5206",filename:"SKILL.md",content:`---
353
+ `)}async function $i(i){if(!i)console.error("\u7F3A\u5C11 sid \u53C2\u6570"),process.exit(1);let n=(await a0()).filter((d)=>d.sid.startsWith(i));if(n.length===0)return i;if(n.length>1)console.error(`sid \u524D\u7F00 "${i}" \u5339\u914D\u591A\u4E2A`),process.exit(1);return n[0].sid}async function Ul(i){let{positional:o,flags:n}=hi(i),d=o[0];if(d!=="claude"&&d!=="codex")console.error("\u7528\u6CD5: tako agent start <claude|codex>"),process.exit(1);let u;if(typeof n.approval==="string"){if(n.approval!=="yolo"&&n.approval!=="external")console.error("--approval \u4EC5\u652F\u6301 yolo|external"),process.exit(1);u=n.approval}let e=await xn({backend:d,model:typeof n.model==="string"?n.model:void 0,name:typeof n.name==="string"?n.name:void 0,workdir:typeof n.cwd==="string"?n.cwd:void 0,providerId:typeof n.provider==="string"?n.provider:void 0,approvalMode:u});if(n.json){process.stdout.write(JSON.stringify({sid:e.sid,name:e.name,backend:e.backend,model:e.model??null,workdir:e.workdir,approvalMode:e.approvalMode??"yolo"})+`
354
+ `);return}if(console.log(`\u2713 ${e.backend} session \u5DF2\u521B\u5EFA`),console.log(` sid: ${e.sid}`),console.log(` name: ${e.name}`),e.model)console.log(` model: ${e.model}`);console.log(` workdir: ${e.workdir}`),console.log(` approval: ${e.approvalMode??"yolo"}`),console.log(`
355
+ \u540E\u7EED\uFF1Atako agent send ${e.sid} "\u4F60\u7684 prompt"`)}async function Dl(i){let{positional:o,flags:n}=hi(i),d=o[0];if(d!=="claude"&&d!=="codex")console.error('\u7528\u6CD5: tako agent run <claude|codex> --prompt "..."'),process.exit(1);let u=typeof n.prompt==="string"?n.prompt:o.slice(1).join(" ");if(!u)console.error("\u7F3A\u5C11 --prompt"),process.exit(1);let e=!!n.json,r=!!n.purge,t;if(typeof n.approval==="string"){if(n.approval!=="yolo"&&n.approval!=="external")console.error("--approval \u4EC5\u652F\u6301 yolo|external"),process.exit(1);t=n.approval}let c="",p,a=[];try{let x=await xn({backend:d,model:typeof n.model==="string"?n.model:void 0,name:typeof n.name==="string"?n.name:void 0,workdir:typeof n.cwd==="string"?n.cwd:void 0,providerId:typeof n.provider==="string"?n.provider:void 0,approvalMode:t});if(c=x.sid,!e)console.log(`\u2192 run ${c.slice(0,8)} (${x.backend}${x.model?` ${x.model}`:""})`);await wn(c,u,{onFrame:(w)=>{if(w.kind==="text_delta")a.push(w.text);else if(w.kind==="error")p=w.message;if(!e)Go(w,"human")}})}catch(x){p=x instanceof Error?x.message:String(x)}let l=p?"error":"ok";if(r&&c)try{await Mo(c,!0)}catch{}if(e)process.stdout.write(JSON.stringify({sid:c,status:l,text:a.join(""),error:p??null,purged:r})+`
356
+ `);else{if(p)console.error(`\u2717 run \u5931\u8D25: ${p}`);if(c&&!r)console.log(`
357
+ session \u4FDD\u7559: ${c.slice(0,8)}\uFF08tako agent show ${c.slice(0,8)} \u67E5\u770B\uFF1B--purge \u53EF\u81EA\u52A8\u56DE\u6536\uFF09`)}if(p)process.exit(1)}async function jl(i){let{flags:o}=hi(i),{filter:n}=eu(o),d=await l0(n);if(o.json){process.stdout.write(JSON.stringify(d)+`
358
+ `);return}let u=d.filter((l)=>l.status==="running").length;if(d.length===0){console.log("(\u65E0\u5339\u914D session)");return}let e=await Promise.all(d.map(async(l)=>_r(await d0(l.sid,60)))),r=0,t=d.map((l,x)=>{let w=e[x];if(w)r++;return{sid:l.sid.slice(0,8),backend:l.backend,name:l.name.slice(0,20),model:(l.model??"-").slice(0,24),status:l.status+(w?" \u26A0":""),turns:String(l.turnCount),age:Er(Date.now()-l.createdAt),last:Er(Date.now()-l.lastActiveAt)}}),c=["sid","backend","name","model","status","turns","age","last"],p=c.map((l,x)=>Math.max(l.length,...t.map((w)=>w[l].length))),a=(l)=>l.map((x,w)=>x.padEnd(p[w])).join(" ");console.log(a(c)),console.log(a(p.map((l)=>"\u2500".repeat(l))));for(let l of t)console.log(a(c.map((x)=>l[x])));console.log(`
359
+ \u5171 ${d.length} \u4E2A\u5339\u914D${u>0?`\uFF0C${u} \u4E2A running`:""}${r>0?`\uFF0C${r} \u4E2A\u6709\u9519\u8BEF(\u26A0\uFF0Clogs <sid> --errors \u67E5\u770B)`:""}\uFF08\u9ED8\u8BA4\u9690\u85CF closed\uFF0C--all \u663E\u793A\u5168\u90E8\uFF09`)}async function im(i){let o=new Set,n=[...i];while(n[0]&&n[0].startsWith("--"))o.add(n.shift());let d=n[0],u=n.slice(1).join(" ");if(!d||!u)console.error("\u7528\u6CD5: tako agent send [--json|--verbose] <sid> <prompt...>"),process.exit(1);let e=o.has("--json")?"json":o.has("--verbose")?"verbose":"human",r=await $i(d);if(e!=="json")console.log(`\u2192 ${r.slice(0,8)}`);await wn(r,u,{onFrame:(t)=>Go(t,e)})}async function om(i){let{positional:o,flags:n}=hi(i),{filter:d,hasFilter:u}=eu(n);if(u&&!o[0]){let r=await l0(d);if(!await Dr("cancel",r,!!n.yes,!!n.json))return;for(let t of r)try{await yn(t.sid)}catch{}if(!n.json)console.log(`\u2713 \u5DF2\u4E2D\u6B62 ${r.length} \u4E2A`);return}let e=await $i(o[0]);await yn(e),console.log(`\u2713 \u5DF2\u4E2D\u6B62 ${e.slice(0,8)}`)}async function nm(i){let{positional:o,flags:n}=hi(i),{filter:d,hasFilter:u}=eu(n);if(u&&!o[0]){let r=await l0(d);if(!await Dr(n.purge?"close+purge":"close",r,!!n.yes,!!n.json))return;for(let t of r)try{await Mo(t.sid,!!n.purge)}catch{}if(!n.json)console.log(`\u2713 \u5DF2\u5173\u95ED ${r.length} \u4E2A${n.purge?"\uFF08\u5DF2\u5220\u9664\u76EE\u5F55\uFF09":""}`);return}let e=await $i(o[0]);await Mo(e,!!n.purge),console.log(`\u2713 \u5DF2\u5173\u95ED ${e.slice(0,8)}${n.purge?"\uFF08\u5DF2\u5220\u9664\u76EE\u5F55\uFF09":""}`)}async function Dr(i,o,n,d){if(o.length===0){if(!d)console.log("(\u65E0\u5339\u914D session)");return!1}if(d||n)return!0;console.log(`\u5C06\u5BF9\u4EE5\u4E0B ${o.length} \u4E2A session \u6267\u884C ${i}\uFF1A`);for(let r of o)console.log(` ${r.sid.slice(0,8)} ${r.name} [${r.status}]`);process.stdout.write("\u786E\u8BA4\uFF1F(y/N) ");let e=(await import("readline/promises")).createInterface({input:process.stdin,output:process.stdout});try{let r=await e.question("");return/^y(es)?$/i.test(r.trim())}finally{e.close()}}async function dm(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]),u=!!n["errors-only"]||!!n.errors,e=typeof n.lines==="string"?parseInt(n.lines,10):u?1e4:30,r=n.json?"json":"human",t=await m0(d,e);if(!t)console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let c=t.log;if(u)c=c.filter((a)=>a.kind==="error"||a.kind==="tool_result"&&So(a.output));if(r==="json"){process.stdout.write(JSON.stringify({meta:t.meta,alive:t.alive,log:c.map(du)},null,2)+`
360
+ `);return}let p=t.meta;if(console.log(`# ${p.sid.slice(0,8)} ${p.backend}${p.model?` ${p.model}`:""}`),console.log(`name=${p.name} status=${p.status} turns=${p.turnCount} approval=${p.approvalMode??"yolo"} alive=${t.alive}`),console.log(`workdir=${p.workdir}`),console.log(`
361
+ --- ${u?"errors":"log"} (${c.length}) ---`),u&&c.length===0){console.log("(\u65E0\u9519\u8BEF\u5E27)");return}for(let a of c)Go(a,r,{expandError:u})}async function um(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]);if(!uu(D(d)))console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let u=!!n.errors,e=(await import("fs/promises")).readFile,t=(await e(D(d),"utf-8")).split(`
362
+ `).filter(Boolean),c=!1;for(let p of t){let a;try{a=JSON.parse(p)}catch{continue}let l=a.kind==="error"||a.kind==="tool_result"&&So(a.output);if(l)c=!0;if(u&&!l)continue;if(n.json)process.stdout.write(p+`
363
+ `);else Go(a,"verbose",{expandError:!0})}if(u&&!c&&!n.json)console.log("(\u65E0\u9519\u8BEF\u5E27)")}async function em(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]),u=n.json?"json":n.verbose?"verbose":"human";if(!uu(D(d)))console.error(`session ${d} \u4E0D\u5B58\u5728`),process.exit(1);let e=(await v0(D(d))).size;if(u!=="json")console.log(`(attached to ${d.slice(0,8)}; Ctrl-C \u9000\u51FA)`);let r=setInterval(async()=>{try{let t=(await v0(D(d))).size;if(t<=e)return;let c=_l(D(d),{start:e,end:t-1});e=t;let p="";c.on("data",(a)=>{p+=typeof a==="string"?a:a.toString("utf-8");let l;while((l=p.indexOf(`
364
+ `))>=0){let x=p.slice(0,l);if(p=p.slice(l+1),!x.trim())continue;try{Go(JSON.parse(x),u)}catch{}}})}catch{}},200);await new Promise((t)=>{process.on("SIGINT",()=>{clearInterval(r),t()})})}async function rm(){let i=await x0();console.log(`\u2713 \u6E05\u7406\u4E86 ${i} \u4E2A closed/dead session`)}async function tm(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]),u=o[1],e=o[2];if(!u||e!=="allow"&&e!=="deny")console.error("\u7528\u6CD5: tako agent approve <sid> <approvalId> <allow|deny>"),process.exit(1);let r=await an(d,u);if(r)console.error(`approval ${u} \u5DF2\u6279\u4E3A ${r.decision}`),process.exit(1);if(await u0(d,u,{decision:e,reason:typeof n.reason==="string"?n.reason:void 0,by:typeof n.by==="string"?n.by:"cli",decidedAt:Date.now()}),console.log(`\u2713 approval ${u} = ${e}`),typeof n.rule==="string"&&e==="allow")await Or(d,n.rule),console.log(`\u2713 policy: exec_allow += /${n.rule}/`)}async function cm(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]),u=await ln(d);if(n.json){process.stdout.write(JSON.stringify(u.map((e)=>({approvalId:e.approvalId,type:e.approvalType,detail:vn(e.approvalType,e.params)})),null,2)+`
365
+ `);return}if(u.length===0){console.log("(\u65E0 pending)");return}for(let e of u)console.log(`[${e.approvalType}] id=${e.approvalId} ${vn(e.approvalType,e.params)}`)}async function pm(i){if(i[0]==="default-show"){console.log(JSON.stringify(Ud,null,2));return}let o=await $i(i[0]),n=i[1];if(!n||n==="show"){let u=await r0(o),e=await t0(o);console.log("=== effective policy ==="),console.log(JSON.stringify(u,null,2)),console.log(`
366
+ === session override ===`),console.log(Object.keys(e).length===0?"(\u7A7A)":JSON.stringify(e,null,2));return}let d=i.slice(2).join(" ").trim();if(n==="allow-exec"||n==="deny-exec"){if(!d)console.error(`\u7528\u6CD5: tako agent policy <sid> ${n} <regex>`),process.exit(1);let u=await t0(o),e=n==="allow-exec"?"exec_allow":"exec_deny",r=u[e]??[];if(!r.includes(d))r.push(d);u[e]=r,await c0(o,u),console.log(`\u2713 ${e} += /${d}/`);return}if(n==="reset"){await c0(o,{}),console.log("\u2713 \u7B56\u7565\u5DF2\u6E05\u7A7A");return}console.error(`\u672A\u77E5 policy \u5B50\u547D\u4EE4: ${n}`),process.exit(1)}async function am(i){let{positional:o,flags:n}=hi(i),d=await $i(o[0]),u=!!n.json,e=typeof n.timeout==="string"?Number(n.timeout)*1000:600000,r=typeof n.since==="string"?Number(n.since):0;if(!uu(D(d))){if(u)process.stdout.write(JSON.stringify({event:"not_found",sid:d})+`
367
+ `);else console.error(`session ${d} \u4E0D\u5B58\u5728`);process.exit(1)}let t=r>0?0:(await v0(D(d))).size,c=Date.now(),p=[];while(Date.now()-c<e){try{let a=(await v0(D(d))).size;if(a>t){let x=await(await import("fs/promises")).open(D(d),"r"),w=Buffer.alloc(a-t);await x.read(w,0,w.length,t),await x.close(),t=a;for(let y of w.toString("utf-8").split(`
368
+ `)){if(!y.trim())continue;let v;try{v=JSON.parse(y)}catch{continue}if(r>0&&v.ts<r)continue;if(v.kind==="text_delta"){p.push(v.text);continue}if(v.kind==="approval_required"){let h=await ln(d);if(u)process.stdout.write(JSON.stringify({event:"approval_required",pending:h.map((f)=>({approvalId:f.approvalId,type:f.approvalType}))})+`
369
+ `);else console.log(`event=approval_required pending=${h.length}`);process.exit(0)}if(v.kind==="turn_completed"){if(u)process.stdout.write(JSON.stringify({event:"turn_completed",text:p.join("")})+`
370
+ `);else if(console.log("event=turn_completed"),p.join("").trim())console.log(p.join("").trim());process.exit(2)}if(v.kind==="error"){if(u)process.stdout.write(JSON.stringify({event:"error",message:v.message})+`
371
+ `);else console.error(`event=error ${v.message}`);process.exit(1)}if(v.kind==="session_closed"){if(u)process.stdout.write(JSON.stringify({event:"session_closed"})+`
372
+ `);else console.log("event=session_closed");process.exit(3)}}}}catch{}await new Promise((a)=>setTimeout(a,200))}if(u)process.stdout.write(JSON.stringify({event:"timeout"})+`
373
+ `);else console.error("event=timeout");process.exit(1)}async function lm(i){let o=i[0],n=i[1];if(o!=="claude"&&o!=="codex"||!n)console.error("\u7528\u6CD5: tako agent default <claude|codex> <providerId>"),process.exit(1);await Kr(o,n),console.log(`\u2713 ${o} \u9ED8\u8BA4 provider = ${n}`)}async function mm(){let i=await w0();if(Object.keys(i).length===0)console.log("(\u672A\u8BBE\u7F6E)");else for(let[o,n]of Object.entries(i))console.log(`${o.padEnd(8)} \u2192 ${n}`)}var it=N(()=>{Ti();y0();jd()});var ru;var tu=N(()=>{ru={name:"model-benchmark",description:"Tako \u6A21\u578B\u8BC4\u6D4B\u7ED3\u679C\u4E0E\u63A8\u8350 \u2014 \u67E5\u8BE2\u5404\u6A21\u578B\u7F16\u7801\u80FD\u529B\u8BC4\u5206",filename:"SKILL.md",content:`---
374
374
  name: model-benchmark
375
375
  description: "Tako \u6A21\u578B\u8BC4\u6D4B\u7ED3\u679C\u4E0E\u63A8\u8350\uFF1A\u67E5\u8BE2\u5404\u6A21\u578B\u7F16\u7801\u80FD\u529B\u8BC4\u5206\u3001\u9009\u6A21\u578B\u5EFA\u8BAE\u3001\u6027\u4EF7\u6BD4\u5BF9\u6BD4\u3002\u89E6\u53D1\u8BCD: \u6A21\u578B\u63A8\u8350, benchmark, \u54EA\u4E2A\u6A21\u578B\u597D, \u9009\u6A21\u578B, model comparison, \u6A21\u578B\u5BF9\u6BD4, \u56FD\u4EA7\u6A21\u578B, \u8BC4\u6D4B\u7ED3\u679C"
376
376
  allowed-tools: Read, Bash(bun:*)
@@ -429,7 +429,7 @@ allowed-tools: Read, Bash(bun:*)
429
429
  ${"```"}bash
430
430
  cd packages/cli && bun run scripts/benchmark-models.ts
431
431
  ${"```"}
432
- `}});var ce;var ae=N(()=>{ce={name:"tako-agent",description:"\u957F\u65F6 agent session \u7BA1\u7406 \u2014 \u542F\u52A8/\u7EED\u63A5/\u76D1\u63A7/\u5173\u95ED Claude/Codex agent",filename:"SKILL.md",content:`---
432
+ `}});var cu;var pu=N(()=>{cu={name:"tako-agent",description:"\u957F\u65F6 agent session \u7BA1\u7406 \u2014 \u542F\u52A8/\u7EED\u63A5/\u76D1\u63A7/\u5173\u95ED Claude/Codex agent",filename:"SKILL.md",content:`---
433
433
  name: tako-agent
434
434
  description: "\u901A\u8FC7 tako CLI \u542F\u52A8\u3001\u7EED\u63A5\u3001\u76D1\u63A7\u3001\u5173\u95ED Claude Code \u4E0E Codex \u7684\u957F\u65F6 agent session\u3002\u89E6\u53D1\u8BCD: agent session, \u6D3E\u4E00\u4E2A agent, \u5F00\u4E00\u4E2A\u5B50\u4F1A\u8BDD, \u7BA1\u7406 agent, \u770B agent \u8DD1\u5230\u54EA\u4E86, \u53D6\u6D88\u90A3\u4E2A agent, \u5E76\u884C\u8DD1 agent"
435
435
  allowed-tools: Bash(tako:*)
@@ -512,37 +512,37 @@ ${"```"}
512
512
  - claude \u7528 \`--resume\` \u6301\u4E45\u5316\u5386\u53F2\uFF0Ccodex \u7528 \`thread/resume\`
513
513
  - \`--approval yolo\`\uFF08\u9ED8\u8BA4\uFF09\u4E0D\u5BA1\u6279\uFF1B\`--approval external\` \u542F\u7528\u5916\u7F6E\u5BA1\u6279
514
514
  - \u9ED8\u8BA4\u7B56\u7565\u5DF2\u8986\u76D6\u5E38\u89C1\u5B89\u5168\u573A\u666F\uFF08auto_allow \u53EA\u8BFB\u547D\u4EE4\uFF0Cauto_deny \u5371\u9669\u64CD\u4F5C\uFF09
515
- `}});var yd;var et=N(()=>{te();ae();te();ae();yd=[re,ce]});var ut={};ii(ut,{runSkillCommand:()=>fm});import{join as pe}from"path";import{existsSync as sm,mkdirSync as vm}from"fs";async function fm(i){let o=i[0];if(!o||o==="list"){console.log(`
515
+ `}});var f0;var ot=N(()=>{tu();pu();tu();pu();f0=[ru,cu]});var nt={};mi(nt,{runSkillCommand:()=>ym});import{join as au}from"path";import{existsSync as xm,mkdirSync as wm}from"fs";async function ym(i){let o=i[0];if(!o||o==="list"){console.log(`
516
516
  Available skills:
517
- `);for(let n of yd)console.log(` ${n.name.padEnd(20)} ${n.description}`);console.log(`
517
+ `);for(let n of f0)console.log(` ${n.name.padEnd(20)} ${n.description}`);console.log(`
518
518
  Install: tako skill install <name>`),console.log(`Install all: tako skill install --all
519
- `);return}if(o==="install"){let n=i[1];if(!n)console.error("Usage: tako skill install <name|--all>"),process.exit(1);let d=n==="--all"?yd:yd.filter((u)=>u.name===n);if(d.length===0)console.error(`Skill "${n}" not found. Run "tako skill list" to see available skills.`),process.exit(1);let e=pe(process.cwd(),".claude","skills");for(let u of d){let r=pe(e,u.name),t=pe(r,u.filename);if(sm(t)){console.log(` skip ${u.name} (already exists)`);continue}vm(r,{recursive:!0}),await Bun.write(t,u.content),console.log(` \u2713 installed ${u.name} \u2192 .claude/skills/${u.name}/${u.filename}`)}return}console.error(`Unknown subcommand: ${o}. Try "tako skill list" or "tako skill install <name>".`),process.exit(1)}var rt=N(()=>{et()});var ct={};ii(ct,{runModelsCommand:()=>Sm});function hm(i){let o={json:!1,refresh:!1},n=[...i];if(n[0]==="list")n.shift();for(let d of n)if(d==="--json")o.json=!0;else if(d==="--refresh")o.refresh=!0;else return o.invalid=d,o;return o}function bm(i){return(i.providers??[]).filter((n)=>n.type==="tako"&&!!n.baseUrl).sort((n,d)=>n.id.localeCompare(d.id))}function Lm(i){return[...i].sort((o,n)=>o.id.localeCompare(n.id)||o.displayName.localeCompare(n.displayName))}function Nm(i,o){let n=[],d=!1;for(let e of tt){let u=o(i.baseUrl,e);if(u===null){n.push({apiType:e,models:[]});continue}d=!0,n.push({apiType:e,models:Lm(u)})}return{id:i.id,name:i.name,baseUrl:i.baseUrl,buckets:n,hasAnyCache:d}}async function Wm(i,o){let n=[];for(let d of i){if(!d.apiKey||!d.baseUrl)continue;for(let e of tt)n.push(o(d.baseUrl,d.apiKey,e).catch(()=>{}))}await Promise.allSettled(n)}function zm(i){let o=new Set,n=[];for(let d of i)for(let e of d.models){if(o.has(e.id))continue;o.add(e.id),n.push(e.id)}return n.sort((d,e)=>d.localeCompare(e))}function gm(i){let o=[],n=[],d="";for(let e of i){let u=e.slice(0,3);if(u!==d){if(n.length)o.push(n);n=[e],d=u}else n.push(e)}if(n.length)o.push(n);return o}function $m(i,o){if(i.length===0)return[];let n=4,e=Math.max(...i.map((a)=>a.length))+2,u=Math.max(e,o-n),r=Math.max(1,Math.floor(u/e)),t=Math.min(r,km),c=[];for(let a=0;a<i.length;a+=t){let p=i.slice(a,a+t),l=p.map((x,w)=>w===p.length-1?x:x.padEnd(e)).join("");c.push(" ".repeat(n)+l)}return c}function Mm(i,o){if(i.length===0)return`\u672A\u914D\u7F6E Tako \u6E20\u9053
520
- `;let n=[];for(let d of i){if(n.push(`Provider: ${d.id} (${d.baseUrl})`),!d.hasAnyCache){n.push(" \u7F13\u5B58\u4E3A\u7A7A\uFF0C\u8BF7\u5148\u8FD0\u884C `tako models list --refresh`"),n.push("");continue}let e=zm(d.buckets);n.push(` ${e.length} models`);for(let u of gm(e))n.push(...$m(u,o));n.push("")}return n.join(`
521
- `)}function Gm(i,o,n){let d=i.map((u)=>({id:u.id,name:u.name,baseUrl:u.baseUrl,hasCache:u.hasAnyCache,models:u.buckets.flatMap((r)=>r.models.map((t)=>({apiType:r.apiType,id:t.id,displayName:t.displayName,description:t.description,contextWindow:t.contextWindow,sortOrder:t.sortOrder})))}));return`${JSON.stringify({command:"list",refreshed:o,fetchedAt:n,providers:d})}
522
- `}async function Sm(i=[],o={}){let n=hm(i);if(n.invalid)return process.stderr.write(`Unknown argument: ${n.invalid}
519
+ `);return}if(o==="install"){let n=i[1];if(!n)console.error("Usage: tako skill install <name|--all>"),process.exit(1);let d=n==="--all"?f0:f0.filter((e)=>e.name===n);if(d.length===0)console.error(`Skill "${n}" not found. Run "tako skill list" to see available skills.`),process.exit(1);let u=au(process.cwd(),".claude","skills");for(let e of d){let r=au(u,e.name),t=au(r,e.filename);if(xm(t)){console.log(` skip ${e.name} (already exists)`);continue}wm(r,{recursive:!0}),await Bun.write(t,e.content),console.log(` \u2713 installed ${e.name} \u2192 .claude/skills/${e.name}/${e.filename}`)}return}console.error(`Unknown subcommand: ${o}. Try "tako skill list" or "tako skill install <name>".`),process.exit(1)}var dt=N(()=>{ot()});var et={};mi(et,{runModelsCommand:()=>$m});function vm(i){let o={json:!1,refresh:!1},n=[...i];if(n[0]==="list")n.shift();for(let d of n)if(d==="--json")o.json=!0;else if(d==="--refresh")o.refresh=!0;else return o.invalid=d,o;return o}function fm(i){return(i.providers??[]).filter((n)=>n.type==="tako"&&!!n.baseUrl).sort((n,d)=>n.id.localeCompare(d.id))}function hm(i){return[...i].sort((o,n)=>o.id.localeCompare(n.id)||o.displayName.localeCompare(n.displayName))}function bm(i,o){let n=[],d=!1;for(let u of ut){let e=o(i.baseUrl,u);if(e===null){n.push({apiType:u,models:[]});continue}d=!0,n.push({apiType:u,models:hm(e)})}return{id:i.id,name:i.name,baseUrl:i.baseUrl,buckets:n,hasAnyCache:d}}async function Lm(i,o){let n=[];for(let d of i){if(!d.apiKey||!d.baseUrl)continue;for(let u of ut)n.push(o(d.baseUrl,d.apiKey,u).catch(()=>{}))}await Promise.allSettled(n)}function Nm(i){let o=new Set,n=[];for(let d of i)for(let u of d.models){if(o.has(u.id))continue;o.add(u.id),n.push(u.id)}return n.sort((d,u)=>d.localeCompare(u))}function zm(i){let o=[],n=[],d="";for(let u of i){let e=u.slice(0,3);if(e!==d){if(n.length)o.push(n);n=[u],d=e}else n.push(u)}if(n.length)o.push(n);return o}function sm(i,o){if(i.length===0)return[];let n=4,u=Math.max(...i.map((p)=>p.length))+2,e=Math.max(u,o-n),r=Math.max(1,Math.floor(e/u)),t=Math.min(r,Wm),c=[];for(let p=0;p<i.length;p+=t){let a=i.slice(p,p+t),l=a.map((x,w)=>w===a.length-1?x:x.padEnd(u)).join("");c.push(" ".repeat(n)+l)}return c}function km(i,o){if(i.length===0)return`\u672A\u914D\u7F6E Tako \u6E20\u9053
520
+ `;let n=[];for(let d of i){if(n.push(`Provider: ${d.id} (${d.baseUrl})`),!d.hasAnyCache){n.push(" \u7F13\u5B58\u4E3A\u7A7A\uFF0C\u8BF7\u5148\u8FD0\u884C `tako models list --refresh`"),n.push("");continue}let u=Nm(d.buckets);n.push(` ${u.length} models`);for(let e of zm(u))n.push(...sm(e,o));n.push("")}return n.join(`
521
+ `)}function gm(i,o,n){let d=i.map((e)=>({id:e.id,name:e.name,baseUrl:e.baseUrl,hasCache:e.hasAnyCache,models:e.buckets.flatMap((r)=>r.models.map((t)=>({apiType:r.apiType,id:t.id,displayName:t.displayName,description:t.description,contextWindow:t.contextWindow,sortOrder:t.sortOrder})))}));return`${JSON.stringify({command:"list",refreshed:o,fetchedAt:n,providers:d})}
522
+ `}async function $m(i=[],o={}){let n=vm(i);if(n.invalid)return process.stderr.write(`Unknown argument: ${n.invalid}
523
523
  Usage: tako models [list] [--refresh] [--json]
524
- `),1;let d=o.loadConfig??z,e=o.refresh??In,u=o.read??Xi,r=o.now??(()=>Date.now()),t=o.columns??(()=>process.stdout.columns??80),c=await d(),a=bm(c);if(n.refresh&&a.length>0)await Wm(a,e);let p=a.map((x)=>Nm(x,u)),l=new Date(r()).toISOString();if(n.json)process.stdout.write(Gm(p,n.refresh,l));else process.stdout.write(Mm(p,t()));return 0}var tt,km=5;var at=N(()=>{C();Kd();tt=["openai","claude"]});var me="0.3.19",sn=22,m,So,Po,mt,xt,Co,Fi;var Io=N(()=>{m={bg:"#17130f",panel:"#211b16",panelMuted:"#2b231c",text:"#ece3d8",muted:"#94897c",border:"#3a3129",orange:"#fb8147",orangeDim:"#c96a3a",cyan:"#8fb8a8",green:"#8fbf7a",yellow:"#e6b45c",red:"#e58f7b",magenta:"#c99bd6",blue:"#88a8d8",gray:"#94897c"},So={"claude-code":{icon:"*",color:m.orange},codex:{icon:"C",color:m.blue},gemini:{icon:"G",color:m.green}},Po={icon:"-",color:m.text},mt=["\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"].join(`
525
- `),xt=["\u2580\u2588\u2580 \u2584\u2580\u2588 \u2588\u2584\u2580 \u2588\u2580\u2588"," \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588\u2584\u2588"].join(`
526
- `),Co=["tako","claude-subscription","codex-subscription","anthropic","deepseek","xiaomi","custom"],Fi=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}]});async function wt(i=45){let o=Qe(),n=await ju(),d=await ei(),e=Ii()==="zh",u=[...o].sort((c,a)=>{if(c.id===n)return-1;if(a.id===n)return 1;return 0}),r=[];for(let c of u){let a=await Du(c.id,N0,!0),p=process.cwd(),l=[{label:e?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:k0(p,i),path:p},...a.map((k)=>({label:k0(k.path,i),hint:ir(k.lastLaunchedAt),path:k.path}))],x=await Qi(c.id),y=await qi(c.id)||x.find((k)=>k.id===d?.id)||x[0],s=y?x.findIndex((k)=>k.id===y.id):0,b=zn(c,y),v=new Set(b.map((k)=>k.id)),M=(await Yn(c.id)).filter((k)=>v.has(k));r.push({client:c,projects:l,providers:x,activeProvider:y,activeProvIdx:Math.max(s,0),launchOptions:b,lastSelectedOptionIds:M})}let t={};try{t=await cr()}catch{t={}}return{clients:r,defaultIdx:0,hasProviders:r.some((c)=>c.providers.length>0),pickCounts:t,zh:e}}var yt=N(()=>{c0();E();X();G0();An();ai()});function co(i,o){let n=[],d=new Set;for(let e of i){if(!e.group){n.push({kind:"flag",opt:e});continue}if(!d.has(e.group))d.add(e.group),n.push({kind:"group",group:e.group,title:e.group==="model"?o?"\u6A21\u578B":"Model":e.group})}return n.push({kind:"provider",title:o?"\u670D\u52A1\u5546":"Provider"}),n}function Ei(i,o,n){return i.find((d)=>d.group===n&&o.has(d.id))}function xe(i){let o=[],n={},d=[];for(let e of i.launchOptions){if(!i.enabled.has(e.id))continue;if(o.push(...e.args),e.envVars)Object.assign(n,e.envVars);d.push(e.id)}return{args:o,envVars:n,selectedOptionIds:d}}function st(i,o,n){let d=new Set(o.map((a)=>a.id)),e=new Set(o.filter((a)=>a.group==="model").map((a)=>a.id)),u=n?`model-${n}`:void 0,r=new Set,t=!1,c=!1;for(let a of i)if(d.has(a)){if(r.add(a),e.has(a))c=!0}else t=!0;if(!c&&u&&e.has(u))r.add(u),t=!0;return t?r:i}async function vt(){let i=await ft(),o=Ii();return{...i,screen:"launcher",busy:!1,message:"",providers:[],defaultProviderId:void 0,clientBindings:{},providerTabIdx:i.clientIdx,providerRowIdx:0,providerDetailIdx:0,optionPickerGroup:void 0,optionPickerIdx:0,modelPickerMode:"collapsed",scrollOffset:0,scrollScreen:"launcher",providerSelectedId:void 0,providerInputMode:"add-key",addType:"tako",addKey:"",addUrl:"",addModel:"",addCtx:"",statsLoading:!1,apiKeyValue:"",apiKeyStatus:"idle",languageIdx:Math.max(0,Fi.findIndex((n)=>n.value===o)),agentDefaults:{},agentIdx:0,agentDetailFrames:[],agentDetailInput:"",agentDetailStatus:"idle",agentPendingApprovals:[],agentBackend:"claude",agentModel:"",agentName:"",agentField:"backend",keyGuideIdx:0,clientVersions:[],clientVersionsClientIdx:0,clientVersionsIdx:0,clientVersionsLoading:!1}}async function ft(){let i=await wt(48);return{clients:i.clients.map((n)=>({...n,enabled:st(new Set(n.lastSelectedOptionIds),n.launchOptions,n.activeProvider?.model)})),clientIdx:i.defaultIdx,focus:"tabs",projectIdx:0,optionIdx:0,zh:i.zh,pickCounts:i.pickCounts}}async function fi(i){let o=i.clients[i.clientIdx]?.client.id,n=await ft();i.clients=n.clients,i.zh=n.zh,i.pickCounts=n.pickCounts;let d=o?i.clients.findIndex((e)=>e.client.id===o):-1;i.clientIdx=d>=0?d:0,we(i)}function we(i){let o=i.clients[i.clientIdx];if(!o)return;let n=co(o.launchOptions,i.zh);i.projectIdx=Math.max(0,Math.min(i.projectIdx,o.projects.length-1)),i.optionIdx=Math.max(0,Math.min(i.optionIdx,n.length-1))}function vn(i){if(i.focus==="options")i.focus="tabs";i.projectIdx=0,i.optionIdx=0,i.optionPickerGroup=void 0,i.optionPickerIdx=0,i.modelPickerMode="collapsed"}function ao(i,o){if(i.screen="provider-input",i.providerInputMode=o,i.providerRowIdx=0,i.addKey="",o==="add-key")i.addUrl="",i.addModel=Fo(i.addType)||"",i.addCtx=""}var vd=N(()=>{Si();X();yt();Io()});async function Wt(){try{let i=await Di();if(!i)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let n=await(await fetch(`${A}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i})})).json(),e=await(await fetch(`${A}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i,period:"daily"})})).json();if(!n.success)return{success:!1,error:n.error||n.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let u=(e.data||[]).map((r)=>({model:r.model,requests:r.requests,cost:r.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:n.data?.usage?.total?.requests||0,totalCost:n.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(n.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:u}}}catch(i){return{success:!1,error:i instanceof Error?i.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function kt(i){return i.toLocaleString("en-US")}var fe=N(()=>{C()});var qt={};ii(qt,{syncSubscriptionProviderFromLocalAuth:()=>Me,shouldShowKeyGuide:()=>s1,runSubscriptionAuthCommand:()=>$e,refreshQuota:()=>ze,refreshProviders:()=>Ji,refreshAgentDetail:()=>Bi,openStats:()=>bn,openProviders:()=>po,openClientVersions:()=>Ge,openAgents:()=>hi,openAgentDetail:()=>ge,loadClientVersions:()=>lo,installClientVersion:()=>Se,finishProviderAdd:()=>Ln,dismissKeyGuide:()=>Ld,backToLauncher:()=>Yi});async function ze(i){let o=i.clients[i.clientIdx]?.activeProvider;if(!o){i.quota=void 0,i.quotaKey=void 0;return}let n=`${o.id}:${o.type}`;if(i.quotaKey===n&&i.quota)return;i.quotaKey=n;let{getOfficialQuota:d}=await Promise.resolve().then(() => (Tn(),Q0)),e=await d(o);if(i.quotaKey===n)i.quota=e}async function Ji(i){i.providers=await V(),i.defaultProviderId=(await ei())?.id;let o={};for(let n of i.clients)o[n.client.id]=(await qi(n.client.id))?.id;i.clientBindings=o}async function po(i){i.screen="providers",i.message="",i.providerTabIdx=i.clientIdx,i.providerRowIdx=0,await Ji(i)}async function bn(i){i.screen="stats",i.message="",i.statsLoading=!0,i.statsError=void 0;let o=await Wt();if(o.success&&o.data)i.statsData=o.data;else i.statsError=o.error||(i.zh?"\u672A\u77E5\u9519\u8BEF":"Unknown error");i.statsLoading=!1}async function hi(i){i.screen="agents",i.message="",i.agentError=void 0;let[o,n]=await Promise.all([cd(),md()]);i.agentSessions=o,i.agentDefaults=n,i.agentIdx=Math.max(0,Math.min(i.agentIdx,o.length-1))}async function Bi(i){let o=i.agentDetailSid;if(!o)return;let[n,d]=await Promise.all([pd(o,200),pn(o)]);if(!n){i.agentError=i.zh?"Session \u4E0D\u5B58\u5728":"Session not found",i.screen="agents",await hi(i);return}i.agentDetailMeta=n.meta,i.agentDetailFrames=n.log,i.agentDetailAlive=n.alive,i.agentPendingApprovals=d}async function ge(i,o){i.screen="agent-detail",i.agentDetailSid=o,i.agentDetailInput="",i.agentDetailStatus="idle",i.agentError=void 0,await Bi(i)}function Yi(i){i.screen="launcher",i.message="",i.apiKeyStatus="idle",i.apiKeyError=void 0}function Qt(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i)}catch{}}function y1(i){return i==="claude"?["claude","auth","login","--claudeai"]:["codex","login"]}async function $e(i){let o=y1(i);Qt(!1);try{let n=Bun.spawn(o,{stdin:"inherit",stdout:"inherit",stderr:"inherit"});return await n.exited,{ok:n.exitCode===0,exitCode:n.exitCode}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}finally{Qt(!1)}}async function Me(i,o){let{invalidateQuotaCache:n}=await Promise.resolve().then(() => (Tn(),Q0)),d=await V();if(i==="claude")try{let e=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),u=await new Response(e.stdout).text();await e.exited;let r=JSON.parse(u.trim());if(!r.loggedIn||r.authMethod!=="claude.ai")return{ok:!1,message:o?"Claude \u767B\u5F55\u672A\u5B8C\u6210":"Claude login not completed"};let t=r.email||"",c=r.subscriptionType||"pro",a=`Claude ${c.charAt(0).toUpperCase()+c.slice(1)}${t?` (${t})`:""}`,{readClaudeAuth:p}=await Promise.resolve().then(() => (On(),qn)),l=await p(),x=l.credentials||l.oauthAccount?{credentials:l.credentials,oauthAccount:l.oauthAccount}:void 0,w=d.find((y)=>y.type==="claude-subscription"&&(y.email||"")===t);if(w)return await Zi(w.id,{authData:x}),n(w.id,"claude-subscription"),U(),H(),{ok:!0,message:o?"Claude tokens \u5DF2\u66F4\u65B0":"Claude tokens updated"};else return await eo({name:a,type:"claude-subscription",email:t,subscriptionType:c,supportedClients:di("claude-subscription"),authData:x}),U(),H(),{ok:!0,message:o?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added"}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}else try{let e=await import("fs/promises"),{homedir:u}=await import("os"),{join:r}=await import("path"),t=JSON.parse(await e.readFile(r(u(),".codex","auth.json"),"utf-8"));if(t.auth_mode!=="chatgpt"||!t.tokens?.access_token)return{ok:!1,message:o?"Codex \u767B\u5F55\u672A\u5B8C\u6210":"Codex login not completed"};let c="";try{c=JSON.parse(atob(t.tokens.id_token.split(".")[1])).email||""}catch{}let a=d.find((p)=>p.type==="codex-subscription"&&(p.email||"")===c);if(a)return await Zi(a.id,{authData:t}),n(a.id,"codex-subscription"),U(),H(),{ok:!0,message:o?"Codex tokens \u5DF2\u66F4\u65B0":"Codex tokens updated"};else return await eo({name:c?`Codex Plus (${c})`:"Codex Subscription",type:"codex-subscription",email:c||void 0,supportedClients:di("codex-subscription"),authData:t}),U(),H(),{ok:!0,message:o?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added"}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}}async function Ln(i){let o=io[i.addType]?.[i.zh?"zh":"en"]||i.addType,n=i.addCtx?Number.parseInt(i.addCtx,10):NaN;await eo({name:o,type:i.addType,apiKey:i.addKey,baseUrl:i.addUrl||Ed(i.addType),model:i.addModel||Fo(i.addType),modelContextWindow:Number.isFinite(n)&&n>0?n:void 0,supportedClients:di(i.addType)}),O("provider_added",{provider_type:i.addType,method:"manual"}),U(),H(),await Ji(i),await fi(i),i.screen="providers",i.providerRowIdx=0,i.message=i.zh?"\u5DF2\u6DFB\u52A0\u670D\u52A1\u5546":"Provider added"}async function Ge(i){i.screen="client-versions",i.message="",i.clientVersionsClientIdx=Math.max(0,Math.min(i.clientVersionsClientIdx,i.clients.length-1)),await lo(i)}async function lo(i){let o=i.clients[i.clientVersionsClientIdx];if(!o)return;i.clientVersionsLoading=!0,i.clientVersionsError=void 0,i.clientVersions=[],i.clientVersionsIdx=0;try{let{listAvailableVersions:n,getInstalledVersion:d}=await Promise.resolve().then(() => (Dn(),A0)),[e,u]=await Promise.all([n(o.client.package),d(o.client)]);i.clientVersions=e.map((r)=>({...r,isCurrent:r.version===u}))}catch(n){i.clientVersionsError=n instanceof Error?n.message:String(n)}finally{i.clientVersionsLoading=!1}}async function Se(i,o){let n=i.clients[i.clientVersionsClientIdx];if(!n)return;let{installAtVersion:d}=await Promise.resolve().then(() => (Dn(),A0));await d(n.client,o),i.message=i.zh?`\u5DF2\u5207\u6362\u5230 ${o}`:`Switched to ${o}`,await lo(i)}async function Ld(i){let{TAKO_DIR:o}=await Promise.resolve().then(() => (C(),Wn)),{join:n}=await import("path"),d=n(o,".key-prompt.json"),e=i==="never"?{never:!0}:{dismissed:new Date().toISOString().slice(0,10)};await Bun.write(d,JSON.stringify(e))}async function s1(){let{TAKO_DIR:i,hasApiKey:o}=await Promise.resolve().then(() => (C(),Wn));if(await o())return!1;let{join:n}=await import("path"),d=n(i,".key-prompt.json"),e={};try{e=await Bun.file(d).json()}catch{e={}}if(e.never)return!1;let u=new Date().toISOString().slice(0,10);if(e.dismissed===u)return!1;return!0}var Yo=N(()=>{ai();Si();xi();fe();xd();Ti();vd()});c0();Ci();bo();C();X();xi();w0();import{join as wi}from"path";function Ru(i,o){return["@echo off",'set "TAKO_WINDOWS_HANDOFF_FILE=%TEMP%\\tako-handoff-%RANDOM%-%RANDOM%.ps1"','if exist "%TAKO_WINDOWS_HANDOFF_FILE%" del "%TAKO_WINDOWS_HANDOFF_FILE%" >nul 2>nul',`"${i}" "${o}" %*`,'set "TAKO_EXIT_CODE=%ERRORLEVEL%"','if not exist "%TAKO_WINDOWS_HANDOFF_FILE%" exit /b %TAKO_EXIT_CODE%','powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%TAKO_WINDOWS_HANDOFF_FILE%"',"exit /b %ERRORLEVEL%",""].join(`\r
527
- `)}function Ju(i,o){return['$env:TAKO_WINDOWS_HANDOFF_FILE = Join-Path ([System.IO.Path]::GetTempPath()) ("tako-handoff-{0}-{1}.ps1" -f $PID, [System.Guid]::NewGuid().ToString("N"))',"Remove-Item -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE -Force -ErrorAction SilentlyContinue",`& "${i}" "${o}" @args`,"$code = $LASTEXITCODE","if (Test-Path -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE) {"," powershell.exe -NoProfile -ExecutionPolicy Bypass -File $env:TAKO_WINDOWS_HANDOFF_FILE"," exit $LASTEXITCODE","}","exit $code",""].join(`\r
528
- `)}var y0="tako-cli",on="0.3.19";function cp(){return[Y,"update",y0,"--latest"]}function ap(){return[Y,"add",`${y0}@latest`]}function pp(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number);for(let e=0;e<3;e++){let u=n[e]||0,r=d[e]||0;if(u>r)return 1;if(u<r)return-1}return 0}async function lp(){try{let i=await ui(),o=await fetch(`${i}/${y0}/latest`,{signal:AbortSignal.timeout(5000)});if(!o.ok)return null;return(await o.json()).version||null}catch{return null}}async function mp(){let i=await lp();if(!i)return{hasUpdate:!1,currentVersion:on};return{hasUpdate:pp(i,on)>0,latestVersion:i,currentVersion:on}}async function Yu(){let i=await import("fs/promises"),o=wi(Q,"bin"),n=wi(o,"tako"),d=wi(mi,"node_modules/tako-cli/dist/index.js");if(await i.mkdir(o,{recursive:!0}),process.platform==="win32")await i.writeFile(wi(o,"tako.cmd"),Ru(Y,d)),await i.writeFile(wi(o,"tako.ps1"),Ju(Y,d));else{let u=`#!/bin/bash
529
- exec "${Y}" "${d}" "$@"
530
- `;await i.writeFile(n,u,{mode:493})}}async function xp(i){let o=oo(),n=`\u6B63\u5728\u66F4\u65B0\u5230 v${i}`;o.start(n);try{let d=await ui(),e=await import("fs/promises");await e.mkdir(mi,{recursive:!0});let u=wi(mi,"package.json");try{await e.access(u)}catch{await e.writeFile(u,JSON.stringify({name:"tako-local",private:!0},null,2))}let r=Bun.spawn(cp(),{cwd:mi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:d}}),t=await Bn(r,n,(c)=>o.update(c));if(await r.exited,r.exitCode===0)return await Yu(),O("cli_updated",{from_version:on,to_version:i}),o.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${i}`),!0;else return o.stop(),L.warn(`\u66F4\u65B0\u5931\u8D25: ${Wo(t)}`),!1}catch(d){return o.stop(),L.warn(`\u66F4\u65B0\u5931\u8D25: ${Wo(d instanceof Error?d.message:void 0)}`),!1}}async function wp(){let i=await import("fs/promises"),o=wi(mi,"bun.lock");try{await i.unlink(o)}catch{}}async function yp(){let i=await import("fs/promises");try{let o=await ui();await i.mkdir(mi,{recursive:!0});let n=wi(mi,"package.json");try{await i.access(n)}catch{await i.writeFile(n,JSON.stringify({name:"tako-local",private:!0},null,2))}await wp();let d=Bun.spawn(ap(),{cwd:mi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:o}});return await d.exited,d.exitCode===0}catch{return!1}}async function sp(){let i=await import("fs/promises"),o=wi(Q,"bin"),n=wi(o,"tako"),d=wi(mi,"node_modules/tako-cli/dist/index.js");try{let e=await i.readFile(n,"utf-8");if(e.includes("bun run tako-cli")||e.includes("run tako-cli")){L.info(g("updater.migrating"));let u=!1;try{await i.access(d),u=!0}catch{u=!1}if(!u){let r=oo();if(r.start(g("updater.installingLocally")),!await yp())return r.stop(g("updater.migrationFailed")),!1;r.stop(g("updater.installComplete"))}return await Yu(),!0}}catch{}return!1}async function nn(){try{if(await sp())L.info(g("updater.migrationComplete")),process.exit(0);let o=await mp();if(o.hasUpdate&&o.latestVersion){if(L.warn(g("updater.newVersionAvailable",{version:o.latestVersion,current:on})),await xp(o.latestVersion))L.info(g("updater.pleaseRestart")),process.exit(0)}}catch{}}E();dn();ai();C();An();Ci();X();xi();E();C();dn();var Pp="\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h";function or(i=process.stdin){try{if(i.removeAllListeners?.(),i.isTTY&&typeof i.setRawMode==="function")i.setRawMode(!1);i.pause?.()}catch{}}function nr(i=process.stdout){if(!i.isTTY||typeof i.write!=="function")return;try{i.write(Pp)}catch{}}async function en(i={}){let o=i.stdin??process.stdin,n=i.stdout??process.stdout,d=i.delayMs??30;or(o),nr(n),await new Promise((e)=>setTimeout(e,d)),or(o),nr(n)}import{writeFile as Cp}from"fs/promises";var g0="TAKO_WINDOWS_HANDOFF_FILE",z0=new Uint8Array([239,187,191]);function un(i){return`'${i.replace(/'/g,"''")}'`}function dr(i){if(i.length===0)return"@()";return`@(${i.map(un).join(", ")})`}function Ip(i){let o=new TextEncoder().encode(i),n=new Uint8Array(z0.length+o.length);return n.set(z0,0),n.set(o,z0.length),n}async function Xn(i,o){await Cp(i,Ip(Qp(o)))}function Qp(i){let[o,...n]=i.command;if(!o)throw Error("handoff command is empty");let d=["$ErrorActionPreference = 'Stop'","$scriptPath = $PSCommandPath"];for(let[u,r]of Object.entries(i.env??{})){if(r===void 0)continue;if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(u))continue;d.push(`$env:${u} = ${un(String(r))}`)}d.push(`Set-Location -LiteralPath ${un(i.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${dr(n)}`,"$code = 0","try {",` & ${un(o)} @argv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }","} finally {"," Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue");let e=i.relaunchCommand??[];if(e.length>0){let[u,...r]=e;d.push(` $relaunchArgv = ${dr(r)}`,` & ${un(u)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return d.push("}","exit $code",""),d.join(`\r
531
- `)}import{join as er}from"path";async function ur(i,o){try{let n=o?.projectPath||process.cwd(),d=o?.providerContext,e=process.platform==="win32";if(!d)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let u=await xo(i);if(!u)u=wo(i);if(!await Bun.file(u).exists()){let{execSync:l}=await import("child_process"),x=e?`where ${i.command}.exe 2>nul || where ${i.command}.cmd 2>nul || where ${i.command}`:`which ${i.command}`;try{let w=l(x,{encoding:"utf8"}).split(`
532
- `).map((s)=>s.trim().replace(/\r$/,"")).filter(Boolean),y=e?w.find((s)=>s.toLowerCase().endsWith(".exe"))??w.find((s)=>s.toLowerCase().endsWith(".cmd"))??w[0]:w[0];if(y)u=y;else return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}catch{return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}}let c={...i.getEnvVars(d),...o?.envVars??{}},a={...process.env,...c},p;if(i.runtime==="native")if(e&&u.toLowerCase().endsWith(".js"))p=[await Wi(),u];else p=[u];else p=[await Wi(),u];if(o?.args&&o.args.length>0)p=[...p,...o.args];if(e&&o?.handoffOnWindows){let l=process.env[g0];if(l)return await en(),await Xn(l,{command:p,cwd:n,env:c}),{success:!0}}if(e&&o?.relaunchTakoOnWindows){let l=process.env[g0];if(l){let x=[process.env.TAKO_WINDOWS_RELAUNCH_COMMAND||er(Q,"bin","tako.cmd")];return await en(),await Xn(l,{command:p,cwd:n,env:c,relaunchCommand:x}),{success:!0}}}if(e){let l=await import("fs/promises"),{tmpdir:x}=await import("os"),w=er(x(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await Xn(w,{command:p,cwd:n}),await en();try{let s=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",w],{env:a,stdio:["inherit","inherit","inherit"],cwd:n}).exited;return{success:s===0,exitCode:s}}catch(y){return await l.rm(w,{force:!0}).catch(()=>{}),{success:!1,error:y instanceof Error?y.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await en(),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(p,{env:a,stdio:["inherit","inherit","inherit"],cwd:n})}catch{await Bun.spawn(p,{env:a,stdio:["inherit","inherit","inherit"],cwd:n}).exited}return{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:"\u542F\u52A8\u5931\u8D25"}}}G0();async function Ap(i,o){if(o?.providerContext)return o.providerContext;let n=await ei();if(n){let d=await Qi(i.id);if(d.some((u)=>u.id===n.id))return _(n);if(d.length>0)return _(d[0])}return null}async function Hn(i,o){try{let n=o?.projectPath||process.cwd();if(o?.projectPath){if(!await W0(o.projectPath))return{success:!1,error:g("launcher.directoryNotFound",{path:o.projectPath})}}let d=await _u(i);if(!d.success)return d;let e=await Ap(i,o);if(!e)return{success:!1,error:g("launcher.apiKeyNotConfigured")};let u=[],r={};if(i.setupConfigFiles){let a=await i.setupConfigFiles(e,o?.selectedOptionIds,{forLaunch:!0});if(a&&typeof a==="object")u=a.args??[],r=a.envVars??{}}await Uu(n,i.id,o?.selectedOptionIds);try{let a=(o?.selectedOptionIds??[]).filter((p)=>p.startsWith("model-"));await ar(a)}catch{}let c=(await z()).installedClients[i.id]?.version;return O("client_launched",{client_id:i.id,client_version:c,project_hash:Iu(n),is_recent_project:!!o?.projectPath}),L.info(g("launcher.starting",{client:i.name})),await ur(i,{...o,args:[...u,...o?.args??[]],envVars:{...r,...o?.envVars??{}},providerContext:e})}catch(n){return{success:!1,error:n instanceof Error?n.message:"Launch failed"}}}X();xi();import{homedir as Hp}from"os";var S={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 q={directory:{icon:S.brightYellow,text:S.brightGreen},git:{icon:S.brightBlue,text:S.brightBlue,clean:S.brightGreen,dirty:S.brightYellow,conflict:S.brightRed},model:{icon:S.brightCyan,text:S.brightCyan},version:{icon:S.brightWhite,text:S.brightBlack},outputStyle:{icon:S.brightMagenta,text:S.brightMagenta},context:{icon:S.brightMagenta,low:S.brightGreen,medium:S.brightYellow,high:S.brightRed},todayUsage:{icon:S.brightGreen,text:S.brightGreen},separator:S.brightBlack},Oi={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 Xp(){return!1}function ki(i){let o=Oi[i];if(typeof o==="string")return o;return Xp()?o.nerd:o.plain}class Zn{id="directory";render(i){let o=this.formatPath(i.workspace.current_dir),n=ki("directory");return`${q.directory.icon}${n}${I.reset} ${q.directory.text}${o}${I.reset}`}formatPath(i){let o=Hp();if(i===o)return"~";if(i.startsWith(o+"/"))return"~"+i.slice(o.length);return i}}class Kn{id="git";async render(i){let o=i.workspace.current_dir;if(!await this.isGitRepository(o))return null;let d=await this.getBranch(o);if(!d)return null;let{status:e,statusColor:u}=await this.getStatus(o),{ahead:r,behind:t}=await this.getAheadBehind(o),c=ki("git"),a=`${q.git.icon}${c}${I.reset} ${q.git.text}${d}${I.reset}`;if(a+=` ${u}${e}${I.reset}`,r>0)a+=` ${q.git.clean}${Oi.gitAhead}${r}${I.reset}`;if(t>0)a+=` ${q.git.dirty}${Oi.gitBehind}${t}${I.reset}`;return a}async isGitRepository(i){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:i,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch(i){try{let o=Bun.spawn(["git","branch","--show-current"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited===0&&n.trim())return n.trim();let e=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),u=await new Response(e.stdout).text();if(await e.exited===0&&u.trim())return`detached:${u.trim()}`;return null}catch{return null}}async getStatus(i){try{let o=Bun.spawn(["git","status","--porcelain"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0)return{status:Oi.gitClean,statusColor:q.git.clean};let e=n.trim();if(!e)return{status:Oi.gitClean,statusColor:q.git.clean};if(e.includes("UU")||e.includes("AA")||e.includes("DD"))return{status:Oi.gitConflict,statusColor:q.git.conflict};return{status:Oi.gitDirty,statusColor:q.git.dirty}}catch{return{status:Oi.gitClean,statusColor:q.git.clean}}}async getAheadBehind(i){try{let o=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text(),e=await o.exited===0?parseInt(n.trim(),10)||0:0,u=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:i,stdout:"pipe",stderr:"pipe"}),r=await new Response(u.stdout).text(),c=await u.exited===0?parseInt(r.trim(),10)||0:0;return{ahead:e,behind:c}}catch{return{ahead:0,behind:0}}}}var Zp={"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 Vn{id="model";render(i){let o=i.model.id,n=Zp[o]||this.simplifyModelName(i.model.display_name),d=ki("model");return`${q.model.icon}${d}${I.reset} ${q.model.text}${n}${I.reset}`}simplifyModelName(i){let o=i.replace(/^Claude\s+/i,"");return o=o.replace(/-\d{8}$/,""),o}}vo();var Kp=200000;class zi{id="context";static cache=null;static CACHE_TTL=5000;async render(i){let o=await this.getTokensWithCache(i.transcript_path),d=Yd(i.model.id)?.contextWindow??Kp,e=Math.round((o??0)/d*100),u=Math.max(0,100-e),r=ki("context"),t=u<=20?S.brightRed:u<=50?S.brightYellow:S.brightGreen;return`${q.context.icon}${r}${I.reset} ${t}${u}%${I.reset}`}async getTokensWithCache(i){let o=Date.now();if(zi.cache&&zi.cache.path===i&&o-zi.cache.timestamp<zi.CACHE_TTL)return zi.cache.tokens;let n=await this.parseTranscriptTokens(i);return zi.cache={path:i,tokens:n,timestamp:o},n}async parseTranscriptTokens(i){try{let o=Bun.file(i);if(!await o.exists())return null;let n=await o.text();if(!n.trim())return null;let d=n.split(`
533
- `).filter((e)=>e.trim());for(let e=d.length-1;e>=0;e--)try{let u=JSON.parse(d[e]);if(u.type==="assistant"&&u.message?.usage){let r=u.message.usage;return(r.input_tokens||0)+(r.output_tokens||0)+(r.cache_creation_input_tokens||0)+(r.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}Tn();C();ai();class Fn{id="quota";async render(i){let o=await this.tryRenderOfficial();if(o)return o;return this.renderSessionCost(i)}async tryRenderOfficial(){try{let i=await qi("claude-code")??await ei();if(!i){let n=await Di().catch(()=>"");if(!n)return null;let d=await ro(n);return this.renderTako(d)}let o=await I0(i);if(o.status!=="ok")return null;switch(o.provider){case"tako":return this.renderTako(o);case"claude-subscription":return this.renderClaudeSub(o);case"codex-subscription":return this.renderCodexSub(o);default:return null}}catch{return null}}renderTako(i){if(i.status!=="ok")return null;if(!!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit))return this.renderSub(i);let n=i.daily??i.primary??i.secondary;if(!n)return null;let d=n.costUsed??0;return`${this.icon()} ${S.brightGreen}Day:${this.fmtCost(d)}${I.reset}`}renderSub(i){let o=(d,e,u)=>{if(d&&d>=1440)return`${Math.round(d/1440)}d`;if(d)return`${Math.round(d/60)}h`;return u?`${u}d`:`${e}h`},n=[];if(i.primary)n.push(this.remainChunk(o(i.primary.windowMinutes,5),i.primary.usedPct));if(i.secondary)n.push(this.remainChunk(o(i.secondary.windowMinutes,24,7),i.secondary.usedPct));if(i.modelLimits?.opus)n.push(this.remainChunk("opus",i.modelLimits.opus.usedPct));if(!n.length)return null;return`${this.icon()} ${n.join(`${I.dim} \xB7 ${I.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(i,o){let n=o>=90?S.brightRed:o>=70?S.brightYellow:S.brightGreen;return`${i}:${n}${o}%${I.reset}`}remainChunk(i,o){let n=Math.max(0,Math.min(100,100-Math.round(o))),d=n<=10?S.brightRed:n<=30?S.brightYellow:S.brightGreen;return`${i} \u5269 ${d}${n}%${I.reset}`}renderSessionCost(i){let o=i.cost?.total_cost_usd;if(o==null||o<=0)return null;return`${this.icon()} ${S.brightGreen}Session:${this.fmtCost(o)}${I.reset}`}icon(){return`${q.todayUsage.icon}${ki("todayUsage")}${I.reset}`}fmtCost(i){if(i>=100)return`$${Math.round(i)}`;if(i>=10)return`$${i.toFixed(1)}`;return`$${i.toFixed(2)}`}}class q0{separator=`${q.separator} \u2502 ${I.reset}`;render(i){let o=["directory","git","model","context","quota"],n=[];for(let d of o){let e=i.get(d);if(e)n.push(e)}return n.join(this.separator)}}import{join as to,dirname as tl}from"path";import{homedir as O0}from"os";import{mkdir as cl}from"fs/promises";var br=to(O0(),".tako"),al=to(br,"cli"),pl=to(br,"bin",process.platform==="win32"?"tako.cmd":"tako");function ll(){if(process.platform==="win32")return to(process.env.APPDATA||to(O0(),"AppData","Roaming"),"claude","settings.json");return to(O0(),".claude","settings.json")}var ml=process.platform==="win32",xl="0.1.48";function wl(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number),e=Math.max(n.length,d.length);for(let u=0;u<e;u++){let r=n[u]||0,t=d[u]||0;if(r!==t)return r-t}return 0}async function yl(){let i=to(al,"node_modules","tako-cli","package.json");try{let o=Bun.file(i);if(!await o.exists())return null;return(await o.json()).version||null}catch{return null}}async function sl(){let i=await yl();if(!i)return!1;return wl(i,xl)>=0}function vl(){return pl}function fl(){return`"${hl(vl())}" statusline`}function hl(i){if(ml)return i.replace(/\\/g,"/");return i}async function R0(){if(!await sl())return;let o=ll(),n={};try{let u=Bun.file(o);if(await u.exists())n=await u.json()}catch{}let d={type:"command",command:fl(),padding:0},e=typeof n.statusLine==="object"&&n.statusLine!==null?n.statusLine.command:null;if(typeof e==="string"&&e.includes("tako statusline"))return;n.statusLine=d,await cl(tl(o),{recursive:!0}),await Bun.write(o,JSON.stringify(n,null,2))}var bl=[new Zn,new Kn,new Vn,new zi,new Fn];async function Ll(i){let o=await Promise.all(bl.map(async(e)=>{try{let u=await e.render(i);return{id:e.id,content:u}}catch{return{id:e.id,content:null}}})),n=new Map;for(let{id:e,content:u}of o)n.set(e,u);return new q0().render(n)}async function Lr(){try{let i=await Bun.stdin.json(),o=await Ll(i);console.log(o)}catch{process.exit(0)}}ai();xi();async function En(i){let o=await Qi(i);if(o.length===0)return null;let n=await qi(i);if(n)return _(n);if(o.length===1)return _(o[0]);let d=await ei();if(d&&o.some((e)=>e.id===d.id))return _(d);return _(o[0])}async function Nr(){let i=await _o();if(await Uo(i)>0){for(let n of i)O("provider_added",{provider_type:n.type,method:"auto_detect"});U(),H()}}t0();An();var Nl={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function _n(i,o,n,d){let e=o.filter((t)=>t!==n),u=await Wl(i,e,d);if(i!=="claude-code")return u?[u,...e]:e;let r=[];if(u)r.push(u);for(let t=0;t<e.length;t++){let c=e[t];if(c==="--model"&&t+1<e.length){r.push(c,fo(e[t+1])),t++;continue}if(c.startsWith("--model=")){let a=c.slice(8);r.push(`--model=${fo(a)}`);continue}r.push(c)}return r}async function Wl(i,o,n){let d=Nl[i];if(!d)return null;if(o.includes(d.flag))return null;return(await(n?.getLastSelectedOptionIds??Yn)(i)).includes(d.optionId)?d.flag:null}vo();Dn();C();var sd="0.3.19";function Pm(){console.log(`
534
- ${g("cli.version",{version:sd})}
535
-
536
- ${g("cli.usage")}
537
-
538
- ${g("cli.options")}
539
- ${g("cli.optionVersion")}
540
- ${g("cli.optionHelp")}
541
-
542
- ${g("cli.shortcuts")}
543
- ${g("cli.shortcutClaude")}
544
- ${g("cli.shortcutCodex")}
545
- ${g("cli.shortcutGemini")}
524
+ `),1;let d=o.loadConfig??s,u=o.refresh??qn,e=o.read??Xi,r=o.now??(()=>Date.now()),t=o.columns??(()=>process.stdout.columns??80),c=await d(),p=fm(c);if(n.refresh&&p.length>0)await Lm(p,u);let a=p.map((x)=>bm(x,e)),l=new Date(r()).toISOString();if(n.json)process.stdout.write(gm(a,n.refresh,l));else process.stdout.write(km(a,t()));return 0}var ut,Wm=5;var rt=N(()=>{C();T0();ut=["openai","claude"]});var mu="0.3.21",fn=22,m,Po,Co,pt,at,Qo,_i;var qo=N(()=>{m={bg:"#17130f",panel:"#211b16",panelMuted:"#2b231c",text:"#ece3d8",muted:"#94897c",border:"#3a3129",orange:"#fb8147",orangeDim:"#c96a3a",cyan:"#8fb8a8",green:"#8fbf7a",yellow:"#e6b45c",red:"#e58f7b",magenta:"#c99bd6",blue:"#88a8d8",gray:"#94897c"},Po={"claude-code":{icon:"*",color:m.orange},codex:{icon:"C",color:m.blue},gemini:{icon:"G",color:m.green}},Co={icon:"-",color:m.text},pt=["\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"].join(`
525
+ `),at=["\u2580\u2588\u2580 \u2584\u2580\u2588 \u2588\u2584\u2580 \u2588\u2580\u2588"," \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588\u2584\u2588"].join(`
526
+ `),Qo=["tako","claude-subscription","codex-subscription","anthropic","deepseek","xiaomi","custom"],_i=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}]});async function lt(i=45){let o=qu(),n=await Ee(),d=await di(),u=Ci()==="zh",e=[...o].sort((c,p)=>{if(c.id===n)return-1;if(p.id===n)return 1;return 0}),r=[];for(let c of e){let p=await _e(c.id,Wd,!0),a=process.cwd(),l=[{label:u?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:zd(a,i),path:a},...p.map((g)=>({label:zd(g.path,i),hint:Ue(g.lastLaunchedAt),path:g.path}))],x=await Qi(c.id),y=await qi(c.id)||x.find((g)=>g.id===d?.id)||x[0],v=y?x.findIndex((g)=>g.id===y.id):0,h=gn(c,y),f=new Set(h.map((g)=>g.id)),M=(await Hn(c.id)).filter((g)=>f.has(g));r.push({client:c,projects:l,providers:x,activeProvider:y,activeProvIdx:Math.max(v,0),launchOptions:h,lastSelectedOptionIds:M})}let t={};try{t=await er()}catch{t={}}return{clients:r,defaultIdx:0,hasProviders:r.some((c)=>c.providers.length>0),pickCounts:t,zh:u}}var mt=N(()=>{ld();_();X();Md();Zn();ti()});function co(i,o){let n=[],d=new Set;for(let u of i){if(!u.group){n.push({kind:"flag",opt:u});continue}if(!d.has(u.group))d.add(u.group),n.push({kind:"group",group:u.group,title:u.group==="model"?o?"\u6A21\u578B":"Model":u.group})}return n.push({kind:"provider",title:o?"\u670D\u52A1\u5546":"Provider"}),n}function Ei(i,o,n){return i.find((d)=>d.group===n&&o.has(d.id))}function xu(i){let o=[],n={},d=[];for(let u of i.launchOptions){if(!i.enabled.has(u.id))continue;if(o.push(...u.args),u.envVars)Object.assign(n,u.envVars);d.push(u.id)}return{args:o,envVars:n,selectedOptionIds:d}}function xt(i,o,n){let d=new Set(o.map((p)=>p.id)),u=new Set(o.filter((p)=>p.group==="model").map((p)=>p.id)),e=n?`model-${n}`:void 0,r=new Set,t=!1,c=!1;for(let p of i)if(d.has(p)){if(r.add(p),u.has(p))c=!0}else t=!0;if(!c&&e&&u.has(e))r.add(e),t=!0;return t?r:i}async function wt(){let i=await yt(),o=Ci();return{...i,screen:"launcher",busy:!1,message:"",providers:[],defaultProviderId:void 0,clientBindings:{},providerTabIdx:i.clientIdx,providerRowIdx:0,providerDetailIdx:0,optionPickerGroup:void 0,optionPickerIdx:0,modelPickerMode:"collapsed",scrollOffset:0,scrollScreen:"launcher",providerSelectedId:void 0,providerInputMode:"add-key",addType:"tako",addKey:"",addUrl:"",addModel:"",addCtx:"",statsLoading:!1,apiKeyValue:"",apiKeyStatus:"idle",languageIdx:Math.max(0,_i.findIndex((n)=>n.value===o)),agentDefaults:{},agentIdx:0,agentDetailFrames:[],agentDetailInput:"",agentDetailStatus:"idle",agentPendingApprovals:[],agentBackend:"claude",agentModel:"",agentName:"",agentField:"backend",keyGuideIdx:0,clientVersions:[],clientVersionsClientIdx:0,clientVersionsIdx:0,clientVersionsLoading:!1}}async function yt(){let i=await lt(48);return{clients:i.clients.map((n)=>({...n,enabled:xt(new Set(n.lastSelectedOptionIds),n.launchOptions,n.activeProvider?.model)})),clientIdx:i.defaultIdx,focus:"tabs",projectIdx:0,optionIdx:0,zh:i.zh,pickCounts:i.pickCounts}}async function bi(i){let o=i.clients[i.clientIdx]?.client.id,n=await yt();i.clients=n.clients,i.zh=n.zh,i.pickCounts=n.pickCounts;let d=o?i.clients.findIndex((u)=>u.client.id===o):-1;i.clientIdx=d>=0?d:0,wu(i)}function wu(i){let o=i.clients[i.clientIdx];if(!o)return;let n=co(o.launchOptions,i.zh);i.projectIdx=Math.max(0,Math.min(i.projectIdx,o.projects.length-1)),i.optionIdx=Math.max(0,Math.min(i.optionIdx,n.length-1))}function hn(i){if(i.focus==="options")i.focus="tabs";i.projectIdx=0,i.optionIdx=0,i.optionPickerGroup=void 0,i.optionPickerIdx=0,i.modelPickerMode="collapsed"}function po(i,o){if(i.screen="provider-input",i.providerInputMode=o,i.providerRowIdx=0,i.addKey="",o==="add-key")i.addUrl="",i.addModel=_o(i.addType)||"",i.addCtx=""}var L0=N(()=>{Si();X();mt();qo()});async function Lt(){try{let i=await ji();if(!i)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let n=await(await fetch(`${Y}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i})})).json(),u=await(await fetch(`${Y}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i,period:"daily"})})).json();if(!n.success)return{success:!1,error:n.error||n.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let e=(u.data||[]).map((r)=>({model:r.model,requests:r.requests,cost:r.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:n.data?.usage?.total?.requests||0,totalCost:n.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(n.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:e}}}catch(i){return{success:!1,error:i instanceof Error?i.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function Wt(i){return i.toLocaleString("en-US")}var hu=N(()=>{C()});var Ct={};mi(Ct,{syncSubscriptionProviderFromLocalAuth:()=>Mu,shouldShowKeyGuide:()=>w1,runSubscriptionAuthCommand:()=>$u,refreshQuota:()=>ku,refreshProviders:()=>Ri,refreshAgentDetail:()=>Bi,openStats:()=>Wn,openProviders:()=>ao,openClientVersions:()=>Gu,openAgents:()=>Li,openAgentDetail:()=>gu,loadClientVersions:()=>lo,installClientVersion:()=>Su,finishProviderAdd:()=>Nn,dismissKeyGuide:()=>s0,backToLauncher:()=>Yi});async function ku(i){let o=i.clients[i.clientIdx]?.activeProvider;if(!o){i.quota=void 0,i.quotaKey=void 0;return}let n=`${o.id}:${o.type}`;if(i.quotaKey===n&&i.quota)return;i.quotaKey=n;let{getOfficialQuota:d}=await Promise.resolve().then(() => (En(),Qd)),u=await d(o);if(i.quotaKey===n)i.quota=u}async function Ri(i){i.providers=await V(),i.defaultProviderId=(await di())?.id;let o={};for(let n of i.clients)o[n.client.id]=(await qi(n.client.id))?.id;i.clientBindings=o}async function ao(i){i.screen="providers",i.message="",i.providerTabIdx=i.clientIdx,i.providerRowIdx=0,await Ri(i)}async function Wn(i){i.screen="stats",i.message="",i.statsLoading=!0,i.statsError=void 0;let o=await Lt();if(o.success&&o.data)i.statsData=o.data;else i.statsError=o.error||(i.zh?"\u672A\u77E5\u9519\u8BEF":"Unknown error");i.statsLoading=!1}async function Li(i){i.screen="agents",i.message="",i.agentError=void 0;let[o,n]=await Promise.all([a0(),w0()]);i.agentSessions=o,i.agentDefaults=n,i.agentIdx=Math.max(0,Math.min(i.agentIdx,o.length-1))}async function Bi(i){let o=i.agentDetailSid;if(!o)return;let[n,d]=await Promise.all([m0(o,200),ln(o)]);if(!n){i.agentError=i.zh?"Session \u4E0D\u5B58\u5728":"Session not found",i.screen="agents",await Li(i);return}i.agentDetailMeta=n.meta,i.agentDetailFrames=n.log,i.agentDetailAlive=n.alive,i.agentPendingApprovals=d}async function gu(i,o){i.screen="agent-detail",i.agentDetailSid=o,i.agentDetailInput="",i.agentDetailStatus="idle",i.agentError=void 0,await Bi(i)}function Yi(i){i.screen="launcher",i.message="",i.apiKeyStatus="idle",i.apiKeyError=void 0}function Pt(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i)}catch{}}function x1(i){return i==="claude"?["claude","auth","login","--claudeai"]:["codex","login"]}async function $u(i){let o=x1(i);Pt(!1);try{let n=Bun.spawn(o,{stdin:"inherit",stdout:"inherit",stderr:"inherit"});return await n.exited,{ok:n.exitCode===0,exitCode:n.exitCode}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}finally{Pt(!1)}}async function Mu(i,o){let{invalidateQuotaCache:n}=await Promise.resolve().then(() => (En(),Qd)),d=await V();if(i==="claude")try{let u=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),e=await new Response(u.stdout).text();await u.exited;let r=JSON.parse(e.trim());if(!r.loggedIn||r.authMethod!=="claude.ai")return{ok:!1,message:o?"Claude \u767B\u5F55\u672A\u5B8C\u6210":"Claude login not completed"};let t=r.email||"",c=r.subscriptionType||"pro",p=`Claude ${c.charAt(0).toUpperCase()+c.slice(1)}${t?` (${t})`:""}`,{readClaudeAuth:a}=await Promise.resolve().then(() => (Jn(),On)),l=await a(),x=l.credentials||l.oauthAccount?{credentials:l.credentials,oauthAccount:l.oauthAccount}:void 0,w=d.find((y)=>y.type==="claude-subscription"&&(y.email||"")===t);if(w)return await Ki(w.id,{authData:x}),n(w.id,"claude-subscription"),U(),H(),{ok:!0,message:o?"Claude tokens \u5DF2\u66F4\u65B0":"Claude tokens updated"};else return await uo({name:p,type:"claude-subscription",email:t,subscriptionType:c,supportedClients:ni("claude-subscription"),authData:x}),U(),H(),{ok:!0,message:o?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added"}}catch(u){return{ok:!1,message:u instanceof Error?u.message:String(u)}}else try{let u=await import("fs/promises"),{homedir:e}=await import("os"),{join:r}=await import("path"),t=JSON.parse(await u.readFile(r(e(),".codex","auth.json"),"utf-8"));if(t.auth_mode!=="chatgpt"||!t.tokens?.access_token)return{ok:!1,message:o?"Codex \u767B\u5F55\u672A\u5B8C\u6210":"Codex login not completed"};let c="";try{c=JSON.parse(atob(t.tokens.id_token.split(".")[1])).email||""}catch{}let p=d.find((a)=>a.type==="codex-subscription"&&(a.email||"")===c);if(p)return await Ki(p.id,{authData:t}),n(p.id,"codex-subscription"),U(),H(),{ok:!0,message:o?"Codex tokens \u5DF2\u66F4\u65B0":"Codex tokens updated"};else return await uo({name:c?`Codex Plus (${c})`:"Codex Subscription",type:"codex-subscription",email:c||void 0,supportedClients:ni("codex-subscription"),authData:t}),U(),H(),{ok:!0,message:o?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added"}}catch(u){return{ok:!1,message:u instanceof Error?u.message:String(u)}}}async function Nn(i){let o=oo[i.addType]?.[i.zh?"zh":"en"]||i.addType,n=i.addCtx?Number.parseInt(i.addCtx,10):NaN;await uo({name:o,type:i.addType,apiKey:i.addKey,baseUrl:i.addUrl||D0(i.addType),model:i.addModel||_o(i.addType),modelContextWindow:Number.isFinite(n)&&n>0?n:void 0,supportedClients:ni(i.addType)}),R("provider_added",{provider_type:i.addType,method:"manual"}),U(),H(),await Ri(i),await bi(i),i.screen="providers",i.providerRowIdx=0,i.message=i.zh?"\u5DF2\u6DFB\u52A0\u670D\u52A1\u5546":"Provider added"}async function Gu(i){i.screen="client-versions",i.message="",i.clientVersionsClientIdx=Math.max(0,Math.min(i.clientVersionsClientIdx,i.clients.length-1)),await lo(i)}async function lo(i){let o=i.clients[i.clientVersionsClientIdx];if(!o)return;i.clientVersionsLoading=!0,i.clientVersionsError=void 0,i.clientVersions=[],i.clientVersionsIdx=0;try{let{listAvailableVersions:n,getInstalledVersion:d}=await Promise.resolve().then(() => (i0(),Ad)),[u,e]=await Promise.all([n(o.client.package),d(o.client)]);i.clientVersions=u.map((r)=>({...r,isCurrent:r.version===e}))}catch(n){i.clientVersionsError=n instanceof Error?n.message:String(n)}finally{i.clientVersionsLoading=!1}}async function Su(i,o){let n=i.clients[i.clientVersionsClientIdx];if(!n)return;let{installAtVersion:d}=await Promise.resolve().then(() => (i0(),Ad));await d(n.client,o),i.message=i.zh?`\u5DF2\u5207\u6362\u5230 ${o}`:`Switched to ${o}`,await lo(i)}async function s0(i){let{TAKO_DIR:o}=await Promise.resolve().then(() => (C(),sn)),{join:n}=await import("path"),d=n(o,".key-prompt.json"),u=i==="never"?{never:!0}:{dismissed:new Date().toISOString().slice(0,10)};await Bun.write(d,JSON.stringify(u))}async function w1(){let{TAKO_DIR:i,hasApiKey:o}=await Promise.resolve().then(() => (C(),sn));if(await o())return!1;let{join:n}=await import("path"),d=n(i,".key-prompt.json"),u={};try{u=await Bun.file(d).json()}catch{u={}}if(u.never)return!1;let e=new Date().toISOString().slice(0,10);if(u.dismissed===e)return!1;return!0}var Ao=N(()=>{ti();Si();wi();hu();y0();Ti();L0()});ld();Pi();jo();C();X();wi();An();import{join as yi}from"path";function Ie(i,o){return["@echo off",'set "TAKO_WINDOWS_HANDOFF_FILE=%TEMP%\\tako-handoff-%RANDOM%-%RANDOM%.ps1"','if exist "%TAKO_WINDOWS_HANDOFF_FILE%" del "%TAKO_WINDOWS_HANDOFF_FILE%" >nul 2>nul',`"${i}" "${o}" %*`,'set "TAKO_EXIT_CODE=%ERRORLEVEL%"','if not exist "%TAKO_WINDOWS_HANDOFF_FILE%" exit /b %TAKO_EXIT_CODE%','powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%TAKO_WINDOWS_HANDOFF_FILE%"',"exit /b %ERRORLEVEL%",""].join(`\r
527
+ `)}function Oe(i,o){return['$env:TAKO_WINDOWS_HANDOFF_FILE = Join-Path ([System.IO.Path]::GetTempPath()) ("tako-handoff-{0}-{1}.ps1" -f $PID, [System.Guid]::NewGuid().ToString("N"))',"Remove-Item -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE -Force -ErrorAction SilentlyContinue",`& "${i}" "${o}" @args`,"$code = $LASTEXITCODE","if (Test-Path -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE) {"," powershell.exe -NoProfile -ExecutionPolicy Bypass -File $env:TAKO_WINDOWS_HANDOFF_FILE"," exit $LASTEXITCODE","}","exit $code",""].join(`\r
528
+ `)}var wd="tako-cli",nn="0.3.21";function ea(){return[A,"update",wd,"--latest"]}function ra(){return[A,"add",`${wd}@latest`]}function ta(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number);for(let u=0;u<3;u++){let e=n[u]||0,r=d[u]||0;if(e>r)return 1;if(e<r)return-1}return 0}async function ca(){try{let i=await ci(),o=await fetch(`${i}/${wd}/latest`,{signal:AbortSignal.timeout(5000)});if(!o.ok)return null;return(await o.json()).version||null}catch{return null}}async function pa(){let i=await ca();if(!i)return{hasUpdate:!1,currentVersion:nn};return{hasUpdate:ta(i,nn)>0,latestVersion:i,currentVersion:nn}}async function Re(){let i=await import("fs/promises"),o=yi(q,"bin"),n=yi(o,"tako"),d=yi(xi,"node_modules/tako-cli/dist/index.js");if(await i.mkdir(o,{recursive:!0}),process.platform==="win32")await i.writeFile(yi(o,"tako.cmd"),Ie(A,d)),await i.writeFile(yi(o,"tako.ps1"),Oe(A,d));else{let e=`#!/bin/bash
529
+ exec "${A}" "${d}" "$@"
530
+ `;await i.writeFile(n,e,{mode:493})}}async function aa(i){let o=Zi(),n=`\u6B63\u5728\u66F4\u65B0\u5230 v${i}`;o.start(n);try{let d=await ci(),u=await import("fs/promises");await u.mkdir(xi,{recursive:!0});let e=yi(xi,"package.json");try{await u.access(e)}catch{await u.writeFile(e,JSON.stringify({name:"tako-local",private:!0},null,2))}let r=Bun.spawn(ea(),{cwd:xi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:d}}),t=await Vi(r,n,(c)=>o.update(c));if(await r.exited,r.exitCode===0)return await Re(),R("cli_updated",{from_version:nn,to_version:i}),o.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${i}`),!0;else return o.stop(),W.warn(`\u66F4\u65B0\u5931\u8D25: ${zo(t)}`),!1}catch(d){return o.stop(),W.warn(`\u66F4\u65B0\u5931\u8D25: ${zo(d instanceof Error?d.message:void 0)}`),!1}}async function la(){let i=await import("fs/promises"),o=yi(xi,"bun.lock");try{await i.unlink(o)}catch{}}async function ma(){let i=await import("fs/promises");try{let o=await ci();await i.mkdir(xi,{recursive:!0});let n=yi(xi,"package.json");try{await i.access(n)}catch{await i.writeFile(n,JSON.stringify({name:"tako-local",private:!0},null,2))}await la();let d=Bun.spawn(ra(),{cwd:xi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:o}});return await d.exited,d.exitCode===0}catch{return!1}}async function xa(){let i=await import("fs/promises"),o=yi(q,"bin"),n=yi(o,"tako"),d=yi(xi,"node_modules/tako-cli/dist/index.js");try{let u=await i.readFile(n,"utf-8");if(u.includes("bun run tako-cli")||u.includes("run tako-cli")){W.info(k("updater.migrating"));let e=!1;try{await i.access(d),e=!0}catch{e=!1}if(!e){let r=Zi();if(r.start(k("updater.installingLocally")),!await ma())return r.stop(k("updater.migrationFailed")),!1;r.stop(k("updater.installComplete"))}return await Re(),!0}}catch{}return!1}async function dn(){try{if(await xa())W.info(k("updater.migrationComplete")),process.exit(0);let o=await pa();if(o.hasUpdate&&o.latestVersion){if(W.warn(k("updater.newVersionAvailable",{version:o.latestVersion,current:nn})),await aa(o.latestVersion))W.info(k("updater.pleaseRestart")),process.exit(0)}}catch{}}_();so();ti();C();Zn();Pi();X();wi();_();C();so();var Ma="\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h";function De(i=process.stdin){try{if(i.removeAllListeners?.(),i.isTTY&&typeof i.setRawMode==="function")i.setRawMode(!1);i.pause?.()}catch{}}function je(i=process.stdout){if(!i.isTTY||typeof i.write!=="function")return;try{i.write(Ma)}catch{}}async function en(i={}){let o=i.stdin??process.stdin,n=i.stdout??process.stdout,d=i.delayMs??30;De(o),je(n),await new Promise((u)=>setTimeout(u,d)),De(o),je(n)}import{writeFile as Ga}from"fs/promises";var kd="TAKO_WINDOWS_HANDOFF_FILE",sd=new Uint8Array([239,187,191]);function rn(i){return`'${i.replace(/'/g,"''")}'`}function ir(i){if(i.length===0)return"@()";return`@(${i.map(rn).join(", ")})`}function Sa(i){let o=new TextEncoder().encode(i),n=new Uint8Array(sd.length+o.length);return n.set(sd,0),n.set(o,sd.length),n}async function Kn(i,o){await Ga(i,Sa(Pa(o)))}function Pa(i){let[o,...n]=i.command;if(!o)throw Error("handoff command is empty");let d=["$ErrorActionPreference = 'Stop'","$scriptPath = $PSCommandPath"];for(let[e,r]of Object.entries(i.env??{})){if(r===void 0)continue;if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))continue;d.push(`$env:${e} = ${rn(String(r))}`)}d.push("try { [Console]::InputEncoding = [System.Text.Encoding]::UTF8 } catch {}","try { [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {}",`Set-Location -LiteralPath ${rn(i.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${ir(n)}`,"$code = 0","try {",` & ${rn(o)} @argv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }","} finally {"," Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue");let u=i.relaunchCommand??[];if(u.length>0){let[e,...r]=u;d.push(` $relaunchArgv = ${ir(r)}`,` & ${rn(e)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return d.push("}","exit $code",""),d.join(`\r
531
+ `)}import{join as or}from"path";async function nr(i,o){try{let n=o?.projectPath||process.cwd(),d=o?.providerContext,u=process.platform==="win32";if(!d)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let e=await xo(i);if(!e)e=wo(i);if(!await Bun.file(e).exists()){let{execSync:l}=await import("child_process"),x=u?`where ${i.command}.exe 2>nul || where ${i.command}.cmd 2>nul || where ${i.command}`:`which ${i.command}`;try{let w=l(x,{encoding:"utf8"}).split(`
532
+ `).map((v)=>v.trim().replace(/\r$/,"")).filter(Boolean),y=u?w.find((v)=>v.toLowerCase().endsWith(".exe"))??w.find((v)=>v.toLowerCase().endsWith(".cmd"))??w[0]:w[0];if(y)e=y;else return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}catch{return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}}let c={...i.getEnvVars(d),...o?.envVars??{}},p={...process.env,...c},a;if(i.runtime==="native")if(u&&e.toLowerCase().endsWith(".js"))a=[await pi(),e];else a=[e];else a=[await pi(),e];if(o?.args&&o.args.length>0)a=[...a,...o.args];if(u&&o?.handoffOnWindows){let l=process.env[kd];if(l)return await en(),await Kn(l,{command:a,cwd:n,env:c}),{success:!0}}if(u&&o?.relaunchTakoOnWindows){let l=process.env[kd];if(l){let x=[process.env.TAKO_WINDOWS_RELAUNCH_COMMAND||or(q,"bin","tako.cmd")];return await en(),await Kn(l,{command:a,cwd:n,env:c,relaunchCommand:x}),{success:!0}}}if(u){let l=await import("fs/promises"),{tmpdir:x}=await import("os"),w=or(x(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await Kn(w,{command:a,cwd:n}),await en();try{let v=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",w],{env:p,stdio:["inherit","inherit","inherit"],cwd:n}).exited;return{success:v===0,exitCode:v}}catch(y){return await l.rm(w,{force:!0}).catch(()=>{}),{success:!1,error:y instanceof Error?y.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await en(),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(a,{env:p,stdio:["inherit","inherit","inherit"],cwd:n})}catch{await Bun.spawn(a,{env:p,stdio:["inherit","inherit","inherit"],cwd:n}).exited}return{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:"\u542F\u52A8\u5931\u8D25"}}}Md();async function Ra(i,o){if(o?.providerContext)return o.providerContext;let n=await di();if(n){let d=await Qi(i.id);if(d.some((e)=>e.id===n.id))return E(n);if(d.length>0)return E(d[0])}return null}async function Vn(i,o){try{let n=o?.projectPath||process.cwd();if(o?.projectPath){if(!await Nd(o.projectPath))return{success:!1,error:k("launcher.directoryNotFound",{path:o.projectPath})}}let d=await Fe(i);if(!d.success)return d;let u=await Ra(i,o);if(!u)return{success:!1,error:k("launcher.apiKeyNotConfigured")};let e=[],r={};if(i.setupConfigFiles){let p=await i.setupConfigFiles(u,o?.selectedOptionIds,{forLaunch:!0});if(p&&typeof p==="object")e=p.args??[],r=p.envVars??{}}await Te(n,i.id,o?.selectedOptionIds);try{let p=(o?.selectedOptionIds??[]).filter((a)=>a.startsWith("model-"));await rr(p)}catch{}let c=(await s()).installedClients[i.id]?.version;return R("client_launched",{client_id:i.id,client_version:c,project_hash:Pe(n),is_recent_project:!!o?.projectPath}),W.info(k("launcher.starting",{client:i.name})),await nr(i,{...o,args:[...e,...o?.args??[]],envVars:{...r,...o?.envVars??{}},providerContext:u})}catch(n){return{success:!1,error:n instanceof Error?n.message:"Launch failed"}}}X();wi();import{homedir as Ya}from"os";var S={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 Q={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var I={directory:{icon:S.brightYellow,text:S.brightGreen},git:{icon:S.brightBlue,text:S.brightBlue,clean:S.brightGreen,dirty:S.brightYellow,conflict:S.brightRed},model:{icon:S.brightCyan,text:S.brightCyan},version:{icon:S.brightWhite,text:S.brightBlack},outputStyle:{icon:S.brightMagenta,text:S.brightMagenta},context:{icon:S.brightMagenta,low:S.brightGreen,medium:S.brightYellow,high:S.brightRed},todayUsage:{icon:S.brightGreen,text:S.brightGreen},separator:S.brightBlack},Oi={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 Ba(){return!1}function si(i){let o=Oi[i];if(typeof o==="string")return o;return Ba()?o.nerd:o.plain}class Fn{id="directory";render(i){let o=this.formatPath(i.workspace.current_dir),n=si("directory");return`${I.directory.icon}${n}${Q.reset} ${I.directory.text}${o}${Q.reset}`}formatPath(i){let o=Ya();if(i===o)return"~";if(i.startsWith(o+"/"))return"~"+i.slice(o.length);return i}}class Tn{id="git";async render(i){let o=i.workspace.current_dir;if(!await this.isGitRepository(o))return null;let d=await this.getBranch(o);if(!d)return null;let{status:u,statusColor:e}=await this.getStatus(o),{ahead:r,behind:t}=await this.getAheadBehind(o),c=si("git"),p=`${I.git.icon}${c}${Q.reset} ${I.git.text}${d}${Q.reset}`;if(p+=` ${e}${u}${Q.reset}`,r>0)p+=` ${I.git.clean}${Oi.gitAhead}${r}${Q.reset}`;if(t>0)p+=` ${I.git.dirty}${Oi.gitBehind}${t}${Q.reset}`;return p}async isGitRepository(i){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:i,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch(i){try{let o=Bun.spawn(["git","branch","--show-current"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited===0&&n.trim())return n.trim();let u=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),e=await new Response(u.stdout).text();if(await u.exited===0&&e.trim())return`detached:${e.trim()}`;return null}catch{return null}}async getStatus(i){try{let o=Bun.spawn(["git","status","--porcelain"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0)return{status:Oi.gitClean,statusColor:I.git.clean};let u=n.trim();if(!u)return{status:Oi.gitClean,statusColor:I.git.clean};if(u.includes("UU")||u.includes("AA")||u.includes("DD"))return{status:Oi.gitConflict,statusColor:I.git.conflict};return{status:Oi.gitDirty,statusColor:I.git.dirty}}catch{return{status:Oi.gitClean,statusColor:I.git.clean}}}async getAheadBehind(i){try{let o=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text(),u=await o.exited===0?parseInt(n.trim(),10)||0:0,e=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:i,stdout:"pipe",stderr:"pipe"}),r=await new Response(e.stdout).text(),c=await e.exited===0?parseInt(r.trim(),10)||0:0;return{ahead:u,behind:c}}catch{return{ahead:0,behind:0}}}}var Aa={"claude-opus-4-5-20251101":"Opus 4.5","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-20250514":"Sonnet 4.5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4-20250514":"Sonnet 4","claude-sonnet-4":"Sonnet 4","claude-sonnet-3-5-20241022":"Sonnet 3.5","claude-3-5-sonnet-20241022":"Sonnet 3.5","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-3-5-20241022":"Haiku 3.5","claude-3-5-haiku-20241022":"Haiku 3.5","claude-3-5-haiku":"Haiku 3.5"};class _n{id="model";render(i){let o=i.model.id,n=Aa[o]||this.simplifyModelName(i.model.display_name),d=si("model");return`${I.model.icon}${d}${Q.reset} ${I.model.text}${n}${Q.reset}`}simplifyModelName(i){let o=i.replace(/^Claude\s+/i,"");return o=o.replace(/-\d{8}$/,""),o}}fo();var Xa=200000;class ki{id="context";static cache=null;static CACHE_TTL=5000;async render(i){let o=await this.getTokensWithCache(i.transcript_path),d=H0(i.model.id)?.contextWindow??Xa,u=Math.round((o??0)/d*100),e=Math.max(0,100-u),r=si("context"),t=e<=20?S.brightRed:e<=50?S.brightYellow:S.brightGreen;return`${I.context.icon}${r}${Q.reset} ${t}${e}%${Q.reset}`}async getTokensWithCache(i){let o=Date.now();if(ki.cache&&ki.cache.path===i&&o-ki.cache.timestamp<ki.CACHE_TTL)return ki.cache.tokens;let n=await this.parseTranscriptTokens(i);return ki.cache={path:i,tokens:n,timestamp:o},n}async parseTranscriptTokens(i){try{let o=Bun.file(i);if(!await o.exists())return null;let n=await o.text();if(!n.trim())return null;let d=n.split(`
533
+ `).filter((u)=>u.trim());for(let u=d.length-1;u>=0;u--)try{let e=JSON.parse(d[u]);if(e.type==="assistant"&&e.message?.usage){let r=e.message.usage;return(r.input_tokens||0)+(r.output_tokens||0)+(r.cache_creation_input_tokens||0)+(r.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}En();C();ti();class Un{id="quota";async render(i){let o=await this.tryRenderOfficial();if(o)return o;return this.renderSessionCost(i)}async tryRenderOfficial(){try{let i=await qi("claude-code")??await di();if(!i){let n=await ji().catch(()=>"");if(!n)return null;let d=await ro(n);return this.renderTako(d)}let o=await Cd(i);if(o.status!=="ok")return null;switch(o.provider){case"tako":return this.renderTako(o);case"claude-subscription":return this.renderClaudeSub(o);case"codex-subscription":return this.renderCodexSub(o);default:return null}}catch{return null}}renderTako(i){if(i.status!=="ok")return null;if(!!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit))return this.renderSub(i);let n=i.daily??i.primary??i.secondary;if(!n)return null;let d=n.costUsed??0;return`${this.icon()} ${S.brightGreen}Day:${this.fmtCost(d)}${Q.reset}`}renderSub(i){let o=(d,u,e)=>{if(d&&d>=1440)return`${Math.round(d/1440)}d`;if(d)return`${Math.round(d/60)}h`;return e?`${e}d`:`${u}h`},n=[];if(i.primary)n.push(this.remainChunk(o(i.primary.windowMinutes,5),i.primary.usedPct));if(i.secondary)n.push(this.remainChunk(o(i.secondary.windowMinutes,24,7),i.secondary.usedPct));if(i.modelLimits?.opus)n.push(this.remainChunk("opus",i.modelLimits.opus.usedPct));if(!n.length)return null;return`${this.icon()} ${n.join(`${Q.dim} \xB7 ${Q.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(i,o){let n=o>=90?S.brightRed:o>=70?S.brightYellow:S.brightGreen;return`${i}:${n}${o}%${Q.reset}`}remainChunk(i,o){let n=Math.max(0,Math.min(100,100-Math.round(o))),d=n<=10?S.brightRed:n<=30?S.brightYellow:S.brightGreen;return`${i} \u5269 ${d}${n}%${Q.reset}`}renderSessionCost(i){let o=i.cost?.total_cost_usd;if(o==null||o<=0)return null;return`${this.icon()} ${S.brightGreen}Session:${this.fmtCost(o)}${Q.reset}`}icon(){return`${I.todayUsage.icon}${si("todayUsage")}${Q.reset}`}fmtCost(i){if(i>=100)return`$${Math.round(i)}`;if(i>=10)return`$${i.toFixed(1)}`;return`$${i.toFixed(2)}`}}class qd{separator=`${I.separator} \u2502 ${Q.reset}`;render(i){let o=["directory","git","model","context","quota"],n=[];for(let d of o){let u=i.get(d);if(u)n.push(u)}return n.join(this.separator)}}import{join as to,dirname as ul}from"path";import{homedir as Id}from"os";import{mkdir as el}from"fs/promises";var fr=to(Id(),".tako"),rl=to(fr,"cli"),tl=to(fr,"bin",process.platform==="win32"?"tako.cmd":"tako");function cl(){if(process.platform==="win32")return to(process.env.APPDATA||to(Id(),"AppData","Roaming"),"claude","settings.json");return to(Id(),".claude","settings.json")}var pl=process.platform==="win32",al="0.1.48";function ll(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number),u=Math.max(n.length,d.length);for(let e=0;e<u;e++){let r=n[e]||0,t=d[e]||0;if(r!==t)return r-t}return 0}async function ml(){let i=to(rl,"node_modules","tako-cli","package.json");try{let o=Bun.file(i);if(!await o.exists())return null;return(await o.json()).version||null}catch{return null}}async function xl(){let i=await ml();if(!i)return!1;return ll(i,al)>=0}function wl(){return tl}function yl(){return`"${vl(wl())}" statusline`}function vl(i){if(pl)return i.replace(/\\/g,"/");return i}async function Od(){if(!await xl())return;let o=cl(),n={};try{let e=Bun.file(o);if(await e.exists())n=await e.json()}catch{}let d={type:"command",command:yl(),padding:0},u=typeof n.statusLine==="object"&&n.statusLine!==null?n.statusLine.command:null;if(typeof u==="string"&&u.includes("tako statusline"))return;n.statusLine=d,await el(ul(o),{recursive:!0}),await Bun.write(o,JSON.stringify(n,null,2))}var fl=[new Fn,new Tn,new _n,new ki,new Un];async function hl(i){let o=await Promise.all(fl.map(async(u)=>{try{let e=await u.render(i);return{id:u.id,content:e}}catch{return{id:u.id,content:null}}})),n=new Map;for(let{id:u,content:e}of o)n.set(u,e);return new qd().render(n)}async function hr(){try{let i=await Bun.stdin.json(),o=await hl(i);console.log(o)}catch{process.exit(0)}}ti();wi();async function Dn(i){let o=await Qi(i);if(o.length===0)return null;let n=await qi(i);if(n)return E(n);if(o.length===1)return E(o[0]);let d=await di();if(d&&o.some((u)=>u.id===d.id))return E(d);return E(o[0])}async function br(){let i=await Uo();if(await Do(i)>0){for(let n of i)R("provider_added",{provider_type:n.type,method:"auto_detect"});U(),H()}}ad();Zn();var bl={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function jn(i,o,n,d){let u=o.filter((t)=>t!==n),e=await Ll(i,u,d);if(i!=="claude-code")return e?[e,...u]:u;let r=[];if(e)r.push(e);for(let t=0;t<u.length;t++){let c=u[t];if(c==="--model"&&t+1<u.length){r.push(c,bo(u[t+1])),t++;continue}if(c.startsWith("--model=")){let p=c.slice(8);r.push(`--model=${bo(p)}`);continue}r.push(c)}return r}async function Ll(i,o,n){let d=bl[i];if(!d)return null;if(o.includes(d.flag))return null;return(await(n?.getLastSelectedOptionIds??Hn)(i)).includes(d.optionId)?d.flag:null}fo();i0();C();var b0="0.3.21",Mm=!1;function h0(i){return Mm&&!i}function Gm(){console.log(`
534
+ ${k("cli.version",{version:b0})}
535
+
536
+ ${k("cli.usage")}
537
+
538
+ ${k("cli.options")}
539
+ ${k("cli.optionVersion")}
540
+ ${k("cli.optionHelp")}
541
+
542
+ ${k("cli.shortcuts")}
543
+ ${k("cli.shortcutClaude")}
544
+ ${k("cli.shortcutCodex")}
545
+ ${k("cli.shortcutGemini")}
546
546
 
547
547
  Commands:
548
548
  tako install <client> Install AI coding tool
@@ -552,13 +552,13 @@ Commands:
552
552
  tako skill install <name> Install skill to current project
553
553
  tako models [--refresh] List models exposed by Tako providers
554
554
 
555
- ${g("cli.examples")}
556
- ${g("cli.exampleInteractive")}
557
- ${g("cli.exampleClaude")}
558
- ${g("cli.exampleClaudeModel")}
559
- ${g("cli.exampleCodex")}
560
- ${g("cli.exampleGemini")}
561
- `)}async function Cm(i){let[o,n]=i;if(!o)console.error("\u7528\u6CD5: tako install <client> [version]"),console.error(" tako install claude-code # \u5217\u51FA\u6240\u6709\u53EF\u7528\u7248\u672C"),console.error(" tako install claude-code 1.0.5 # \u5B89\u88C5\u6307\u5B9A\u7248\u672C"),process.exit(1);let d=oi(o);if(!d)console.error(`\u672A\u77E5 client: ${o}`),process.exit(1);if(!n){try{let e=await J0(d.package),u=await Y0(d),r=e.slice(0,30);console.log(`${d.name} (${d.package}) \u6700\u8FD1 ${r.length} \u4E2A\u7248\u672C\uFF1A`);for(let t of r){let c=t.version===u?" \u2190 \u5F53\u524D":"",a=t.publishedAt?` ${t.publishedAt.slice(0,10)}`:"";console.log(` ${t.version}${a}${c}`)}console.log(`
562
- \u5B89\u88C5\uFF1Atako install ${o} <version>`)}catch(e){console.error("\u83B7\u53D6\u7248\u672C\u5217\u8868\u5931\u8D25:",e.message),process.exit(1)}return}console.log(`\u6B63\u5728\u5B89\u88C5 ${d.package}@${n} \u5230 ${d.id}...`);try{await B0(d,n),console.log(`\u2713 ${d.name} \u5DF2\u5207\u6362\u5230 ${n}`)}catch(e){console.error("\u5B89\u88C5\u5931\u8D25:",e.message),process.exit(1)}}async function le(i,o,n){let d=oi(i);if(!d)console.error(g("cli.clientNotFound",{client:o})),process.exit(1);let e=await En(i);if(!e)console.error("\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546"),process.exit(1);let u=await Hn(d,{providerContext:e,args:n,handoffOnWindows:!0});if(!u.success)console.error(u.error),process.exit(1);process.exit(u.exitCode??0)}async function Im(i){let o=process.argv.slice(2);if(o[0]==="statusline"){Ni(),await Lr();return}if(o[0]==="install"){await Cm(o.slice(1));return}if(o[0]==="quota"){let{runQuotaCommand:d}=await Promise.resolve().then(() => (gr(),zr)),e=await d(o.slice(1));if(e!==0)process.exit(e);return}if(o[0]==="agent"){Ni();let{runAgentCommand:d}=await Promise.resolve().then(() => (dt(),nt));await d(o.slice(1));return}if(o[0]==="skill"){let{runSkillCommand:d}=await Promise.resolve().then(() => (rt(),ut));await d(o.slice(1));return}if(o[0]==="models"){let{runModelsCommand:d}=await Promise.resolve().then(() => (at(),ct)),e=await d(o.slice(1));if(e!==0)process.exit(e);return}if(o.includes("-v")||o.includes("--version")){console.log(`Tako CLI v${sd}`);return}if(o.includes("-h")||o.includes("--help")){Pm();return}let n=sd==="dev"||Xo;if(H(),O("cli_started"),o.includes("--claude")){if(!n)await nn();await le("claude-code","Claude Code",await _n("claude-code",o,"--claude"));return}if(o.includes("--codex")){if(!n)await nn();await le("codex","Codex",await _n("codex",o,"--codex"));return}if(o.includes("--gemini")){if(!n)await nn();await le("gemini","Gemini CLI",await _n("gemini",o,"--gemini"));return}if(!n)await nn();if(R0().catch(()=>{}),Ni(),Bd().catch(()=>{}),!process.stdin.isTTY){console.log("Tako CLI v"+sd),console.log(`
563
- \u5B89\u88C5\u6210\u529F\uFF01\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C tako \u542F\u52A8\u4EA4\u4E92\u754C\u9762\u3002`),console.log(" tako \u2014 \u4EA4\u4E92\u5F0F\u542F\u52A8\u5668"),console.log(" tako --help \u2014 \u67E5\u770B\u6240\u6709\u547D\u4EE4");return}await i()}async function pt(i){process.on("beforeExit",async()=>{await jo()}),process.on("SIGINT",async()=>{await jo(),process.exit(0)}),process.on("SIGTERM",async()=>{await jo(),process.exit(0)});try{await Im(i)}catch(o){console.error(g("cli.cliError"),o),await jo(),process.exit(1)}}X();Ci();X();import{CliRenderEvents as h1,createCliRenderer as b1}from"@opentui/core";C();X();xi();ai();Si();function Qm(i){return i.startsWith("cr_")&&i.length>10}async function qm(i){try{let n=await(await fetch(`${A}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:i})})).json();if(n.success&&n.data?.id)return{valid:!0,apiId:n.data.id};return{valid:!1,error:n.error||g("auth.validationFailed")}}catch(o){return{valid:!1,error:o instanceof Error?o.message:g("auth.networkError")}}}async function lt(i){if(!Qm(i))return O("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:g("auth.invalidFormat")};let o=await qm(i);if(!o.valid)return O("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:o.error};return await Ui({apiKey:i,apiId:o.apiId}),await Om(i,o.apiId),O("api_key_validated",{success:!0}),U(),H(),{success:!0}}async function Om(i,o){let d=(await V()).find((e)=>e.type==="tako");if(d)await Zi(d.id,{apiKey:i,apiId:o});else await eo({name:"Tako \u5B98\u65B9",type:"tako",apiKey:i,baseUrl:A,apiId:o,supportedClients:di("tako"),builtin:!0})}xi();Io();vd();Io();function ht(){try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}function fd(){if(!process.stdout.isTTY)return;try{process.stdout.write("\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h")}catch{}}async function bt(){ht(),fd(),await new Promise((i)=>setTimeout(i,30)),ht(),fd()}function Qo(i){if(i.ctrl||i.meta||i.option)return"";if(i.sequence&&i.sequence.length===1&&i.sequence>=" ")return i.sequence;if(i.name&&i.name.length===1)return i.name;return""}function T(i){return!i.ctrl&&!i.meta&&!i.option}function ye(i){if(!i)return"";if(i.length<=8)return"*".repeat(i.length);return`${i.slice(0,4)}${"*".repeat(Math.min(i.length-8,20))}${i.slice(-4)}`}function fn(i){return i.providers.find((o)=>o.id===i.providerSelectedId)}function hd(i,o){let n=i.type==="claude-subscription"||i.type==="codex-subscription";return[...i.id!==o.defaultProviderId?["default"]:[],...n?["relogin"]:["rekey"],...i.builtin?[]:["delete"],"back"]}function Lt(i,o){return{default:o?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set default",rekey:o?"\u66F4\u65B0 Key":"Update key",relogin:o?"\u91CD\u65B0\u767B\u5F55":"Re-login",delete:o?"\u5220\u9664":"Delete",back:o?"\u8FD4\u56DE":"Back"}[i]}function se(i){let o=Math.floor(i/1000);if(o<60)return`${o}s`;if(o<3600)return`${Math.floor(o/60)}m`;if(o<86400)return`${Math.floor(o/3600)}h`;return`${Math.floor(o/86400)}d`}function ve(i){switch(i){case"running":return m.yellow;case"awaiting_approval":return m.magenta;case"idle":return m.green;case"closed":return m.gray;case"dead":return m.red;default:return m.text}}function Nt(i){switch(i){case"running":return"~";case"awaiting_approval":return"?";case"idle":return"*";case"dead":return"!";default:return"-"}}function qo(i){if(i.screen==="config"){i.apiKeyValue=i.apiKeyValue.slice(0,-1),i.apiKeyStatus="idle";return}if(i.screen==="agent-new"){if(i.agentField==="model")i.agentModel=i.agentModel.slice(0,-1);if(i.agentField==="name")i.agentName=i.agentName.slice(0,-1);return}if(i.screen==="agent-detail"){i.agentDetailInput=i.agentDetailInput.slice(0,-1);return}switch(i.providerInputMode){case"add-key":case"rekey":i.addKey=i.addKey.slice(0,-1);break;case"add-url":i.addUrl=i.addUrl.slice(0,-1);break;case"add-model":i.addModel=i.addModel.slice(0,-1);break;case"add-ctx":i.addCtx=i.addCtx.slice(0,-1);break}}function Oo(i,o){if(!o)return;if(i.screen==="config"){i.apiKeyValue+=o,i.apiKeyStatus="idle";return}if(i.screen==="agent-new"){if(i.agentField==="model")i.agentModel+=o;if(i.agentField==="name")i.agentName+=o;return}if(i.screen==="agent-detail"){i.agentDetailInput+=o;return}switch(i.providerInputMode){case"add-key":case"rekey":i.addKey+=o;break;case"add-url":i.addUrl+=o;break;case"add-model":i.addModel+=o;break;case"add-ctx":if(/^[0-9]$/.test(o))i.addCtx+=o;break}}Si();X();fe();import{BoxRenderable as Hm,ScrollBoxRenderable as Zm,TextAttributes as J,TextRenderable as Km}from"@opentui/core";function Rm(i){let o=i.codePointAt(0);if(!o)return!1;return o>=19968&&o<=40959||o>=13312&&o<=19903||o>=131072&&o<=191471||o>=63744&&o<=64255||o>=194560&&o<=195103||o>=44032&&o<=55215||o>=12352&&o<=12447||o>=12448&&o<=12543||o>=65280&&o<=65519||o>=126976&&o<=131071||o>=9728&&o<=10175||o===11088}function Jm(i){return i.replace(/\x1b\[[0-9;]*m/g,"")}function hn(i){let o=Jm(i),n=0;for(let d of o)n+=Rm(d)?2:1;return n}function zt(i,o,n="left"){let d=hn(i),e=Math.max(0,o-d);if(e===0)return i;switch(n){case"left":return i+" ".repeat(e);case"right":return" ".repeat(e)+i;case"center":{let u=Math.floor(e/2),r=e-u;return" ".repeat(u)+i+" ".repeat(r)}}}var Mt=6,Gt=4,be=16,Bm=12;function Ro(i,o,n){if(!i.some((c)=>(n[c.id]??0)>0))return{list:i,hiddenCount:0};let e=new Map(i.map((c,a)=>[c.id,a])),u=i.filter((c)=>(n[c.id]??0)>0).sort((c,a)=>{let p=(n[a.id]??0)-(n[c.id]??0);if(p!==0)return p;return(e.get(c.id)??0)-(e.get(a.id)??0)}).slice(0,Mt).map((c)=>c.id),r=new Set(u);for(let c of i)if(o.has(c.id))r.add(c.id);let t=i.filter((c)=>r.has(c.id));return{list:t,hiddenCount:i.length-t.length}}function Le(i,o){return!i.some((d)=>(o[d.id]??0)>0)&&i.length>Mt?"grid":"collapsed"}function Ym(i,o){if(i.length===0)return 1;let n=Math.max(...i.map((u)=>hn(u))),d=Math.max(be,n+4),e=Math.max(d,o-Bm);return Math.max(1,Math.min(Gt,i.length,Math.floor(e/d)))}function Jo(i,o,n){let d=i.map((e)=>e.label[n?"zh":"en"]||e.label.en||e.id);return Ym(d,o)}function Am(i,o){let n=Math.max(1,Math.min(Gt,Math.floor(o)||1)),d=[];for(let e=0;e<i.length;e+=n)d.push(i.slice(e,e+n));return{rows:d,flat:d.flat()}}function bd(i){return i.startsWith("model-")?i.slice(6):i}function he(i){let o=bd(i).toLowerCase();return o.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||o.slice(0,3)||o}function gt(i){let o=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],n=o.indexOf(i);return n===-1?o.length:n}function $t(i){let o=bd(i).toLowerCase(),n=[];for(let d of o.match(/\d+(?:\.\d+)?|[a-z]+/g)??[o]){let e=Number(d);n.push(Number.isFinite(e)&&/^\d/.test(d)?e:d)}return n}function Xm(i,o){let n=he(i),d=he(o),e=gt(n)-gt(d)||n.localeCompare(d);if(e!==0)return e;let u=$t(i),r=$t(o),t=Math.max(u.length,r.length);for(let c=0;c<t;c++){let a=u[c],p=r[c];if(a===void 0)return 1;if(p===void 0)return-1;if(typeof a==="number"&&typeof p==="number"){if(a!==p)return p-a;continue}let l=String(a),x=String(p);if(l!==x)return l.localeCompare(x)}return bd(i).localeCompare(bd(o))}function Bo(i,o){let n=[...i].sort(Xm),d=[];for(let u of n){let r=he(u),t=d[d.length-1];if(t?.family===r)t.ids.push(u);else d.push({family:r,ids:[u]})}let e=d.map((u)=>({family:u.family,rows:Am(u.ids,o).rows}));return{groups:e,flat:e.flatMap((u)=>u.rows.flat())}}function Ne(i,o,n){return Bo(i,n).flat.indexOf(o)}function St(i,o){return Bo(i,o).groups.flatMap((n)=>n.rows)}Io();function Vm(i){for(let o of[...i.root.getChildren()])i.root.remove(o)}function P(i,o){return new Hm(i,o)}function We(i){return i.terminalHeight<sn}function ke(i){return We(i)?{minHeight:sn}:{height:"100%"}}function Z(i,o,n){if(!We(i)){i.root.add(n);return}let d=new Zm(i,{width:"100%",height:"100%",scrollY:!0,scrollX:!1,viewportCulling:!1});if(d.add(n),i.root.add(d),o.scrollOffset>0)d.scrollTop=o.scrollOffset,process.nextTick(()=>{d.scrollTop=o.scrollOffset,i.requestRender()})}function Tm(i,o,n={}){return new Km(i,{content:o,fg:m.text,selectable:!1,...n})}function f(i,o,n,d={}){let e=Tm(o,n,d);return i.add(e),e}function F(i,o,n){let d=P(i,{flexDirection:"row",flexWrap:"wrap",gap:2,paddingX:2,paddingY:0,marginTop:1,height:1,justifyContent:"center"});n.forEach(([e,u])=>{let r=P(i,{flexDirection:"row",gap:1});f(r,i,e,{fg:m.orange,attributes:J.BOLD}),f(r,i,u,{fg:m.muted}),d.add(r)}),o.add(d)}function Fm(i,o,n,d=m.orange){let e=i.terminalHeight;if(e<30)return;let u=P(i,{flexDirection:"column",alignItems:"center",marginBottom:1}),r=e>=36?mt:xt;if(f(u,i,r,{fg:d,attributes:J.BOLD,selectable:!1}),n&&e>=34)f(u,i,n,{fg:m.muted});o.add(u)}function pi(i,o,n){let d=P(i,{flexDirection:"column",gap:0});for(let e of n){let u=P(i,{flexDirection:"row",justifyContent:"space-between",backgroundColor:e.focused?m.panelMuted:m.panel,paddingX:1,height:1}),r=P(i,{flexDirection:"row",gap:1,flexGrow:1});if(f(r,i,e.focused?">":" ",{fg:e.focused?e.color||m.orange:m.muted,attributes:e.focused?J.BOLD:J.NONE}),e.marker)f(r,i,e.marker,{fg:e.color||m.orange});if(f(r,i,e.primary,{fg:e.focused?e.color||m.orange:m.text,attributes:e.focused?J.BOLD:J.NONE,truncate:!0}),u.add(r),e.secondary)f(u,i,e.secondary,{fg:m.muted,truncate:!0});d.add(u)}o.add(d)}function ti(i,o,n,d=m.orange,e={text:`tako ${me}`,color:m.muted},u=!1){let r=P(i,{flexDirection:"column",width:"100%",...ke(i),backgroundColor:m.bg,paddingX:1,paddingY:1}),t=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:d,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:1,flexGrow:u?1:0}),c=P(i,{flexDirection:"row",justifyContent:"space-between"});if(f(c,i,n,{fg:d,attributes:J.BOLD}),f(c,i,e.text,{fg:e.color||m.muted,truncate:!0}),t.add(c),o.message)f(t,i,o.message,{fg:o.message.startsWith("!")?m.red:m.green});return r.add(t),{root:r,panel:t}}function W(i,o){if(Vm(i),o.scrollScreen!==o.screen)o.scrollScreen=o.screen,o.scrollOffset=0;else if(!We(i)&&o.scrollOffset!==0)o.scrollOffset=0;switch(o.screen){case"launcher":It(i,o);break;case"providers":o1(i,o);break;case"provider-detail":n1(i,o);break;case"provider-add-type":d1(i,o);break;case"provider-input":e1(i,o);break;case"stats":u1(i,o);break;case"config":r1(i,o);break;case"language":t1(i,o);break;case"option-picker":jm(i,o);break;case"agents":c1(i,o);break;case"agent-detail":p1(i,o);break;case"agent-new":l1(i,o);break;case"key-guide":x1(i,o);break;case"client-versions":w1(i,o);break}i.requestRender()}var Pt={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:m.cyan,icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:m.yellow,icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:m.blue,icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:m.yellow,icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:m.magenta,icon:"\u25C7"},xiaomi:{zh:"\u5C0F\u7C73 MiMo",en:"Xiaomi MiMo",color:m.orange,icon:"\u25C6"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:m.gray,icon:"\u25AA"}};function Em(i){if(!i)return"";let[o,n]=i.split("@");if(o&&n&&o.length>14)return`${o.slice(0,12)}\u2026@${n}`;return i}function _m(i,o,n){let d=n.clients[n.clientIdx]?.activeProvider;if(!d){f(o,i,`\u26A0 ${n.zh?"\u672A\u7ED1\u5B9A":"no provider"}`,{fg:m.yellow});return}let e=Pt[d.type]??Pt.custom;f(o,i,`${e.icon} ${n.zh?e.zh:e.en}`,{fg:e.color});let u=Em(d.email??"");if(u)f(o,i,`\xB7 ${u}`,{fg:m.muted,truncate:!0})}function Um(i){return i>30?m.green:i>10?m.yellow:m.red}function Dm(i,o){if(!i||i.status==="unsupported")return null;if(i.status==="error")return{text:`\uD83D\uDCB0 ${i.hint||(o?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")}`,color:m.muted};if(i.provider==="tako"){if(!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit)){let t=i.daily??i.primary??i.secondary;if(!t)return null;return{text:`\uD83D\uDCB0 ${o?"\u4ECA\u65E5":"Today"}: $${(t.costUsed??0).toFixed(2)}`,color:m.green}}}let n=(r,t,c)=>{if(r&&r>=1440)return`${Math.round(r/1440)}d`;if(r)return`${Math.round(r/60)}h`;return c?`${c}d`:`${t}h`},d=(r)=>Math.max(0,Math.min(100,100-Math.round(r))),e=[];if(i.primary)e.push(`${n(i.primary.windowMinutes,5)} ${o?"\u5269":"left"} ${d(i.primary.usedPct)}%`);if(i.secondary)e.push(`${n(i.secondary.windowMinutes,24,7)} ${o?"\u5269":"left"} ${d(i.secondary.usedPct)}%`);if(i.modelLimits?.opus)e.push(`opus ${o?"\u5269":"left"} ${d(i.modelLimits.opus.usedPct)}%`);if(!e.length)return null;let u=Math.min(...[i.primary,i.secondary,i.modelLimits?.opus].filter(Boolean).map((r)=>d(r.usedPct)));return{text:`\uD83D\uDCB0 ${e.join(" \xB7 ")}`,color:Um(u)}}function It(i,o){let n=o.clients[o.clientIdx];if(!n)return;let d=So[n.client.id]||Po,e=co(n.launchOptions,o.zh),u=n.activeProvider?.name||(o.zh?"\u672A\u914D\u7F6E":"Not set"),r=i.terminalHeight<26,c=`${`${o.zh?"\u670D\u52A1\u5546":"Provider"}: ${u}`} \xB7 tako ${me}`,{root:a,panel:p}=ti(i,o,"Tako Launcher",d.color,r?{text:c,color:n.activeProvider?m.orange:m.yellow}:void 0,r);if(Fm(i,p,o.zh?"\u591A\u5BA2\u6237\u7AEF AI \u542F\u52A8\u5668":"Multi-client AI launcher",d.color),!r){let v=P(i,{flexDirection:"row",gap:1,justifyContent:"space-between"}),h=P(i,{flexDirection:"row",gap:1});_m(i,h,o),v.add(h);let M=Dm(o.quota,o.zh);if(M)f(v,i,M.text,{fg:M.color,truncate:!0});p.add(v)}let l=P(i,{flexDirection:"row",flexWrap:"wrap",gap:1,justifyContent:"center"}),x=o.focus==="tabs";o.clients.forEach((v,h)=>{let M=So[v.client.id]||Po,k=h===o.clientIdx,B=P(i,{border:!0,borderStyle:k&&x?"heavy":"single",borderColor:k?M.color:m.border,paddingX:1,height:3,backgroundColor:k&&x?m.panelMuted:m.panel});f(B,i,`${k&&x?"> ":""}${h+1} ${M.icon} ${v.client.name}`,{fg:k?M.color:m.muted,attributes:k?J.BOLD:J.NONE}),l.add(B)}),p.add(l);let w=P(i,{flexDirection:"row",gap:2,flexGrow:r?1:0}),y=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:o.focus==="projects"?d.color:m.border,title:o.zh?"\u9879\u76EE":"Projects",titleColor:o.focus==="projects"?d.color:m.muted,paddingX:1,paddingY:1,width:"58%"});pi(i,y,n.projects.map((v,h)=>({primary:v.label,secondary:v.hint,focused:o.focus==="projects"&&h===o.projectIdx,color:d.color})));let s=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:o.focus==="options"?d.color:m.border,title:o.zh?"\u542F\u52A8\u9009\u9879":"Options",titleColor:o.focus==="options"?d.color:m.muted,paddingX:1,paddingY:1,flexGrow:1});pi(i,s,e.map((v,h)=>{let M=o.focus==="options"&&h===o.optionIdx;if(v.kind==="flag"){let k=n.enabled.has(v.opt.id);return{primary:v.opt.label[o.zh?"zh":"en"]||v.opt.label.en,secondary:M?v.opt.flag:void 0,focused:M,marker:k?"[x]":"[ ]",color:k?d.color:m.muted}}if(v.kind==="group"){let k=Ei(n.launchOptions,n.enabled,v.group);return{primary:`${v.title}: ${k?.shortLabel||(o.zh?"\u9ED8\u8BA4":"Default")}`,secondary:M?o.zh?"Enter \u9009\u62E9":"Enter to pick":void 0,focused:M,marker:">",color:d.color}}return{primary:`${v.title}: ${u}`,secondary:M?o.zh?"Enter \u7BA1\u7406":"Enter to manage":void 0,focused:M,marker:"*",color:n.activeProvider?d.color:m.yellow}})),w.add(y),w.add(s),p.add(w);let b=o.focus==="tabs"?["\u2190\u2192",o.zh?"\u5207\u5BA2\u6237\u7AEF":"switch client"]:o.focus==="projects"?["\u2192",o.zh?"\u53BB\u9009\u9879":"to options"]:["\u2190",o.zh?"\u53BB\u9879\u76EE":"to projects"];F(i,a,[["Enter",o.zh?"\u542F\u52A8":"launch"],b,["\u2191\u2193",o.zh?"\u9009\u62E9":"move"],["Space",o.zh?"\u5207\u6362\u9009\u9879":"toggle"],["p",o.zh?"\u670D\u52A1\u5546":"providers"],["c","config"],["s","stats"],["a","agents"],["q",o.zh?"\u9000\u51FA":"quit"]]),Z(i,o,a)}function jm(i,o){let n=o.clients[o.clientIdx],d=o.optionPickerGroup;if(!n||!d){It(i,o);return}let e=n.launchOptions.filter((h)=>h.group===d),u=(So[n.client.id]||Po).color,r=d==="model"?o.zh?"\u9009\u62E9\u6A21\u578B":"Pick Model":o.zh?"\u9009\u62E9\u9009\u9879":"Pick Option",t=Ei(n.launchOptions,n.enabled,d),c=d==="model";if(c&&o.modelPickerMode==="grid"){i1(i,o,n,e,u,r);return}let a=c?Ro(e,n.enabled,o.pickCounts):{list:e,hiddenCount:0},p=[{id:"",primary:o.zh?"\u9ED8\u8BA4":"Default",secondary:t?"":o.zh?"\u5F53\u524D":"current"},...a.list.map((h)=>({id:h.id,primary:h.shortLabel||h.label[o.zh?"zh":"en"]||h.label.en,secondary:n.enabled.has(h.id)?o.zh?"\u5F53\u524D":"current":h.flag})),...a.hiddenCount>0?[{id:"__show_all__",primary:o.zh?`\u663E\u793A\u5168\u90E8 (${a.hiddenCount})`:`Show all (${a.hiddenCount})`,secondary:">"}]:[]],l=p.length;o.optionPickerIdx=Math.max(0,Math.min(o.optionPickerIdx,l-1));let x=Math.max(5,Math.min(14,i.terminalHeight-10)),w=Math.max(0,Math.min(o.optionPickerIdx-Math.floor(x/2),Math.max(0,l-x))),y=p.slice(w,w+x),s=P(i,{flexDirection:"column",width:"100%",...ke(i),backgroundColor:m.bg,justifyContent:"center",alignItems:"center",paddingX:2}),b=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:u,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:1,width:"70%"}),v=P(i,{flexDirection:"row",justifyContent:"space-between"});f(v,i,r,{fg:u,attributes:J.BOLD}),f(v,i,`${o.optionPickerIdx+1}/${l}`,{fg:m.muted}),b.add(v),pi(i,b,y.map((h,M)=>{let k=w+M;return{primary:h.primary,secondary:h.secondary,focused:k===o.optionPickerIdx,marker:h.id&&n.enabled.has(h.id)?"[x]":" ",color:u}})),f(b,i,o.zh?"Esc \u8FD4\u56DE\uFF0C\u4E0D\u4FEE\u6539\u5F53\u524D\u9009\u62E9":"Esc returns without changing the current selection",{fg:m.muted,truncate:!0}),s.add(b),F(i,s,[["Enter",o.zh?"\u786E\u8BA4":"confirm"],["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,s)}function i1(i,o,n,d,e,u){let r=d.map((b)=>b.id),t=new Map(d.map((b)=>[b.id,b])),c=(b)=>{let v=t.get(b);return v?.shortLabel||v?.label[o.zh?"zh":"en"]||v?.label.en||b},a=Jo(d,i.terminalWidth||80,o.zh),p=Bo(r,a),l=Math.max(1,p.flat.length);o.optionPickerIdx=Math.max(0,Math.min(o.optionPickerIdx,l-1));let x=Math.max(be,...r.length>0?r.map((b)=>hn(c(b))+3):[0]),w=P(i,{flexDirection:"column",width:"100%",...ke(i),backgroundColor:m.bg,justifyContent:"center",alignItems:"center",paddingX:2}),y=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:e,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:0,width:"78%"}),s=P(i,{flexDirection:"row",justifyContent:"space-between",marginBottom:1});f(s,i,u,{fg:e,attributes:J.BOLD}),f(s,i,`${o.optionPickerIdx+1}/${p.flat.length}`,{fg:m.muted}),y.add(s),p.groups.forEach((b,v)=>{if(v>0)f(y,i,"-".repeat(Math.max(8,x*a)),{fg:m.border});b.rows.forEach((h)=>{let M=P(i,{flexDirection:"row",gap:1,height:1});h.forEach((k)=>{let li=p.flat.indexOf(k)===o.optionPickerIdx,mo=n.enabled.has(k),Ao=`${li?">":" "}${zt(c(k),x)}${mo?"*":" "}`;f(M,i,Ao,{fg:li?e:mo?m.green:m.text,attributes:li?J.BOLD:J.NONE})}),y.add(M)})}),w.add(y),F(i,w,[["Enter",o.zh?"\u786E\u8BA4":"confirm"],["arrows",o.zh?"\u9009\u62E9":"select"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,w)}function o1(i,o){let d=o.clients[o.providerTabIdx]?.client,e=d?o.providers.filter((w)=>Hi(w,d.id)):[],u=d?o.clientBindings[d.id]||o.defaultProviderId:o.defaultProviderId,r=e.length+4;o.providerRowIdx=Math.max(0,Math.min(o.providerRowIdx,Math.max(0,r-1)));let t=d?(So[d.id]||Po).color:m.orange,{root:c,panel:a}=ti(i,o,o.zh?"\u670D\u52A1\u5546\u7BA1\u7406":"Providers",t),p=P(i,{flexDirection:"row",gap:1,justifyContent:"center"});o.clients.forEach((w,y)=>{let s=So[w.client.id]||Po,b=y===o.providerTabIdx,v=P(i,{border:!0,borderStyle:b?"heavy":"single",borderColor:b?s.color:m.border,paddingX:1,height:3});f(v,i,`${y+1} ${w.client.name}`,{fg:b?s.color:m.muted,attributes:b?J.BOLD:J.NONE}),p.add(v)}),a.add(p);let l=[...e.map((w)=>({primary:w.name,secondary:[io[w.type]?.[o.zh?"zh":"en"]||w.type,w.id===u?o.zh?"\u5F53\u524D":"bound":"",w.id===o.defaultProviderId?o.zh?"\u9ED8\u8BA4":"default":""].filter(Boolean).join(" "),marker:w.id===u?"*":" "})),{primary:o.zh?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add provider",secondary:"",marker:"+"},{primary:o.zh?"\u626B\u63CF\u672C\u5730\u8BA2\u9605":"Scan local subscriptions",secondary:"",marker:"?"},{primary:o.zh?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client versions",secondary:"",marker:"V"},{primary:o.zh?"\u8FD4\u56DE":"Back",secondary:"",marker:"<"}],x=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:t,paddingX:1,paddingY:1});pi(i,x,l.map((w,y)=>({...w,focused:y===o.providerRowIdx,color:t}))),a.add(x),F(i,c,[["Enter",o.zh?"\u7ED1\u5B9A/\u6253\u5F00":"bind/open"],["d/e",o.zh?"\u8BE6\u60C5":"detail"],["arrows",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,c)}function n1(i,o){let n=fn(o),{root:d,panel:e}=ti(i,o,o.zh?"\u670D\u52A1\u5546\u8BE6\u60C5":"Provider Detail",m.orange);if(!n)f(e,i,o.zh?"\u670D\u52A1\u5546\u4E0D\u5B58\u5728":"Provider not found",{fg:m.red});else{let u=[["Name",n.name],["Type",io[n.type]?.[o.zh?"zh":"en"]||n.type],["Base URL",n.baseUrl||"-"],["Model",n.model||"-"],["Email",n.email||"-"],["Builtin",n.builtin?"yes":"no"]];for(let[t,c]of u)f(e,i,`${t}: ${c}`,{fg:m.text,truncate:!0});let r=hd(n,o);pi(i,e,r.map((t,c)=>({primary:Lt(t,o.zh),focused:c===o.providerDetailIdx,marker:c===o.providerDetailIdx?">":" ",color:m.orange})))}F(i,d,[["Enter",o.zh?"\u6267\u884C":"run"],["arrows",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,d)}function d1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider",m.orange);pi(i,d,Co.map((e,u)=>({primary:io[e]?.[o.zh?"zh":"en"]||e,secondary:e==="claude-subscription"||e==="codex-subscription"?o.zh?"\u767B\u5F55\u6388\u6743":"login auth":e==="custom"?o.zh?"\u81EA\u5B9A\u4E49 URL":"custom URL":"",focused:u===o.providerRowIdx,marker:"+",color:m.orange}))),F(i,n,[["Enter",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function e1(i,o){let n={"add-key":o.zh?"\u8F93\u5165 API Key":"Enter API key","add-url":o.zh?"\u8F93\u5165 Base URL":"Enter base URL","add-model":o.zh?"\u9009\u62E9/\u8F93\u5165\u6A21\u578B":"Select/enter model","add-ctx":o.zh?"\u8F93\u5165\u4E0A\u4E0B\u6587\u7A97\u53E3 token \u6570":"Enter context window tokens",rekey:o.zh?"\u66F4\u65B0 API Key":"Update API key"},{root:d,panel:e}=ti(i,o,n[o.providerInputMode],m.orange),u=o.providerInputMode==="add-model"?Eo(o.addType):void 0;if(u)pi(i,e,u.map((r,t)=>({primary:r,focused:t===o.providerRowIdx,marker:t===o.providerRowIdx?">":" ",color:m.orange})));else{let r=o.providerInputMode==="add-key"||o.providerInputMode==="rekey"?ye(o.addKey):o.providerInputMode==="add-url"?o.addUrl:o.providerInputMode==="add-model"?o.addModel:o.addCtx;f(e,i,`> ${r}_`,{fg:m.text,truncate:!0})}F(i,d,[["Enter",o.zh?"\u7EE7\u7EED":"continue"],["Backspace",o.zh?"\u5220\u9664":"delete"],["q/Esc",o.zh?"\u53D6\u6D88":"cancel"]]),Z(i,o,d)}function u1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"\u7528\u91CF\u7EDF\u8BA1":"Usage Stats",m.green);if(o.statsLoading)f(d,i,o.zh?"\u6B63\u5728\u83B7\u53D6...":"Loading...",{fg:m.yellow});else if(o.statsError)f(d,i,`${o.zh?"\u83B7\u53D6\u5931\u8D25":"Failed"}: ${o.statsError}`,{fg:m.red});else if(o.statsData){if(f(d,i,`${o.zh?"\u603B\u8C03\u7528\u6B21\u6570":"Total requests"}: ${kt(o.statsData.totalRequests)}`),f(d,i,`${o.zh?"\u603B\u6D88\u8D39":"Total cost"}: ${o.statsData.totalCost}`),f(d,i,`${o.zh?"\u4ECA\u65E5\u6D88\u8D39":"Today"}: ${o.statsData.todayCost}`),o.statsData.modelStats.length>0){f(d,i,o.zh?"\u6A21\u578B\u5206\u5E03:":"Models:",{fg:m.muted});for(let e of o.statsData.modelStats.slice(0,12))f(d,i,`${e.model.padEnd(28)} ${String(e.requests).padStart(6)} ${e.cost}`,{fg:m.muted,truncate:!0})}}else f(d,i,o.zh?"\u6682\u65E0\u6570\u636E":"No data",{fg:m.muted});F(i,n,[["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function r1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"\u914D\u7F6E API Key":"Configure API key",m.orange);if(f(d,i,`> ${ye(o.apiKeyValue)}_`,{truncate:!0}),o.apiKeyStatus==="validating")f(d,i,o.zh?"\u6B63\u5728\u9A8C\u8BC1...":"Validating...",{fg:m.yellow});if(o.apiKeyStatus==="success")f(d,i,o.zh?"\u914D\u7F6E\u6210\u529F":"Configured",{fg:m.green});if(o.apiKeyStatus==="error")f(d,i,o.apiKeyError||"Error",{fg:m.red});F(i,n,[["Enter",o.zh?"\u4FDD\u5B58":"save"],["Backspace",o.zh?"\u5220\u9664":"delete"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function t1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"\u5207\u6362\u8BED\u8A00":"Language",m.magenta);pi(i,d,Fi.map((e,u)=>({primary:e.label,secondary:e.value===Ii()?o.zh?"\u5F53\u524D":"current":"",focused:u===o.languageIdx,marker:u===o.languageIdx?">":" ",color:m.magenta}))),F(i,n,[["Enter",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function c1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"Agent \u4F1A\u8BDD":"Agent Sessions",m.blue);if(f(d,i,`${o.zh?"\u9ED8\u8BA4 Provider":"Defaults"}: ${Object.keys(o.agentDefaults).length===0?"-":Object.entries(o.agentDefaults).map(([e,u])=>`${e}=${u.slice(0,8)}`).join(" ")}`,{fg:m.muted,truncate:!0}),!o.agentSessions)f(d,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow});else if(o.agentSessions.length===0)f(d,i,o.zh?"\u6682\u65E0 session\uFF0C\u6309 n \u65B0\u5EFA":"No sessions, press n to create",{fg:m.muted});else pi(i,d,o.agentSessions.map((e,u)=>({primary:`${e.sid.slice(0,8)} ${e.backend.padEnd(6)} ${(e.name||"").slice(0,18).padEnd(18)} ${e.status}`,secondary:`${e.turnCount} turns ${se(Date.now()-e.lastActiveAt)}`,focused:u===o.agentIdx,marker:Nt(e.status),color:ve(e.status)})));if(o.agentError)f(d,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});F(i,n,[["Enter/o",o.zh?"\u8BE6\u60C5":"open"],["n",o.zh?"\u65B0\u5EFA":"new"],["d",o.zh?"\u5173\u95ED":"close"],["x",o.zh?"\u5220\u9664":"purge"],["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function a1(i){let o=new Date(i.ts).toISOString().slice(11,19);switch(i.kind){case"session_started":return{text:`[${o}] session_started ${i.backend}${i.model?` ${i.model}`:""}`,dim:!0};case"turn_started":return{text:`[${o}] turn_started`,color:m.cyan};case"text_delta":return{text:i.text};case"reasoning_delta":return{text:`[${o}] reasoning ${i.text}`,dim:!0};case"tool_use":return{text:`[${o}] tool ${i.name} ${JSON.stringify(i.input)}`,color:m.yellow};case"tool_result":return{text:`[${o}] result ${JSON.stringify(i.output)}`,color:m.green};case"approval_required":return{text:`[${o}] approval ${i.approvalType} ${String(i.approvalId)}`,color:m.magenta};case"turn_completed":return{text:`[${o}] turn_completed${i.stopReason?` ${i.stopReason}`:""}`,color:m.cyan};case"error":return{text:`[${o}] error ${i.message}`,color:m.red};case"session_closed":return{text:`[${o}] session_closed`,dim:!0}}}function p1(i,o){let n=o.agentDetailMeta,{root:d,panel:e}=ti(i,o,o.zh?"Agent \u8BE6\u60C5":"Agent Detail",m.blue);if(!n){f(e,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow}),Z(i,o,d);return}if(f(e,i,`${n.sid.slice(0,8)} ${n.backend} ${n.name} ${n.status}${o.agentDetailAlive===!1?" dead":""}`,{fg:ve(n.status),attributes:J.BOLD,truncate:!0}),f(e,i,`${o.zh?"\u5DE5\u4F5C\u76EE\u5F55":"cwd"}: ${n.workdir}`,{fg:m.muted,truncate:!0}),f(e,i,`${o.zh?"\u6A21\u578B":"model"}: ${n.model||"-"} turns=${n.turnCount} ${o.zh?"\u6700\u8FD1":"last"}=${se(Date.now()-n.lastActiveAt)}`,{fg:m.muted,truncate:!0}),o.agentPendingApprovals.length>0){let c=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:m.magenta,paddingX:1});f(c,i,`${o.agentPendingApprovals.length} ${o.zh?"\u4E2A\u5F85\u5BA1\u6279":"pending approvals"}`,{fg:m.magenta,attributes:J.BOLD});for(let a of o.agentPendingApprovals.slice(0,3))f(c,i,`${a.approvalType} ${a.approvalId.slice(0,12)} ${JSON.stringify(a.params)}`,{fg:m.muted,truncate:!0});e.add(c)}let u=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:m.border,paddingX:1,title:o.zh?"\u65E5\u5FD7":"Log",titleColor:m.muted}),r=o.agentDetailFrames.slice(-Math.max(6,Math.min(18,i.terminalHeight-14)));if(r.length===0)f(u,i,o.zh?"\u6682\u65E0\u65E5\u5FD7":"No log yet",{fg:m.muted});else for(let c of r){let a=a1(c);f(u,i,a.text.replace(/\s+/g," ").slice(0,240),{fg:a.color||(a.dim?m.muted:m.text),truncate:!0})}if(e.add(u),o.agentError)f(e,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});let t=o.agentDetailStatus==="sending"?"... ":o.agentDetailStatus==="cancelling"?"x ":"> ";f(e,i,`${t}${o.agentDetailInput}_`,{fg:o.agentDetailStatus==="idle"?m.text:m.yellow,truncate:!0}),F(i,d,[["Enter",o.zh?"\u53D1\u9001":"send"],["Ctrl-Y/N",o.zh?"\u6279/\u62D2":"approve/deny"],["r",o.zh?"\u5237\u65B0":"refresh"],["Ctrl-C",o.zh?"\u53D6\u6D88":"cancel"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,d)}function l1(i,o){let{root:n,panel:d}=ti(i,o,o.zh?"\u65B0\u5EFA Agent Session":"New Agent Session",m.blue),e=[{id:"backend",label:`${o.zh?"\u540E\u7AEF":"Backend"}: ${o.agentBackend==="claude"?"[claude] codex":"claude [codex]"}`},{id:"model",label:`${o.zh?"\u6A21\u578B":"Model"}: ${o.agentModel||(o.zh?"\u9ED8\u8BA4":"default")}`},{id:"name",label:`${o.zh?"\u540D\u79F0":"Name"}: ${o.agentName||(o.zh?"\u81EA\u52A8":"auto")}`}];if(pi(i,d,e.map((u)=>({primary:u.label+(o.agentField===u.id&&u.id!=="backend"?"_":""),focused:o.agentField===u.id,marker:o.agentField===u.id?">":" ",color:m.blue}))),o.agentError)f(d,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});F(i,n,[["Tab/arrows",o.zh?"\u5207\u5B57\u6BB5":"field"],["Space",o.zh?"\u5207\u540E\u7AEF":"backend"],["Enter",o.zh?"\u521B\u5EFA":"create"],["q/Esc",o.zh?"\u53D6\u6D88":"cancel"]]),Z(i,o,n)}var m1=[{id:"configure",label:{zh:"\u73B0\u5728\u914D\u7F6E",en:"Configure now"},hint:{zh:"\u8F93\u5165\u4F60\u7684 Tako API Key",en:"Enter your Tako API Key"},color:m.cyan},{id:"skip",label:{zh:"\u7A0D\u540E\u518D\u8BF4",en:"Not now"},hint:{zh:"\u660E\u5929\u518D\u63D0\u9192\u6211",en:"Remind me tomorrow"},color:m.text},{id:"never",label:{zh:"\u4E0D\u518D\u63D0\u793A",en:"Don't ask again"},hint:{zh:"\u4E4B\u540E\u53EF\u4EE5\u6309 c \u968F\u65F6\u914D\u7F6E",en:"You can configure later via c"},color:m.text}];function x1(i,o){let{root:n,panel:d}=ti(i,o,`\uD83D\uDD11 ${o.zh?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"}`,m.cyan);f(d,i,o.zh?"\u914D\u7F6E API Key \u540E\u5373\u53EF\u4F7F\u7528 Tako \u4EE3\u7406\u670D\u52A1\uFF0C\u83B7\u5F97\u7EDF\u4E00\u7684\u914D\u989D\u7BA1\u7406\u548C\u66F4\u5FEB\u7684\u8BBF\u95EE\u901F\u5EA6\u3002":"Configure your API Key to use Tako proxy service with unified quota and faster access.",{fg:m.muted}),f(d,i,o.zh?"\u4F60\u4E5F\u53EF\u4EE5\u8DF3\u8FC7\u6B64\u6B65\u9AA4\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5546\u3002":"You can skip this and use other providers instead.",{fg:m.muted}),pi(i,d,m1.map((e,u)=>({primary:o.zh?e.label.zh:e.label.en,secondary:u===o.keyGuideIdx?o.zh?e.hint.zh:e.hint.en:void 0,focused:u===o.keyGuideIdx,marker:u===o.keyGuideIdx?">":" ",color:e.color}))),F(i,n,[["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Enter",o.zh?"\u786E\u8BA4":"confirm"],["Esc",o.zh?"\u8DF3\u8FC7":"skip"]]),Z(i,o,n)}var Ct={"claude-code":{icon:"\u2726",color:m.yellow},codex:{icon:"\u25C8",color:m.blue},gemini:{icon:"\u25C6",color:m.cyan}};function w1(i,o){let n=o.clients[o.clientVersionsClientIdx],d=Ct[n?.client.id||""]?.color||m.gray,{root:e,panel:u}=ti(i,o,`\uD83D\uDCE6 ${o.zh?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"}`,d,void 0,!0),r=P(i,{flexDirection:"row",flexWrap:"wrap",gap:1,justifyContent:"center"});if(o.clients.forEach((t,c)=>{let a=Ct[t.client.id]||{icon:"\u25AA",color:m.gray},p=c===o.clientVersionsClientIdx,l=P(i,{border:!0,borderStyle:p?"heavy":"single",borderColor:p?a.color:m.border,paddingX:2});f(l,i,`${a.icon} ${t.client.name}`,{fg:p?a.color:m.muted,attributes:p?J.BOLD:J.NONE}),r.add(l)}),u.add(r),o.clientVersionsLoading)f(u,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow});else if(o.clientVersionsError)f(u,i,`${o.zh?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: "}${o.clientVersionsError}`,{fg:m.red,truncate:!0});else if(o.clientVersions.length===0)f(u,i,o.zh?"\u6682\u65E0\u7248\u672C":"No versions",{fg:m.muted});else{let t=o.clientVersions.find((l)=>l.isCurrent)?.version??(o.zh?"\u672A\u5B89\u88C5":"not installed");f(u,i,`${o.zh?"\u5171":""} ${o.clientVersions.length} ${o.zh?"\u4E2A\u7248\u672C\uFF0C\u5F53\u524D\uFF1A":"versions, current: "}${t}`,{fg:m.muted,truncate:!0});let c=12,a=Math.max(0,Math.min(o.clientVersionsIdx-c+1,o.clientVersions.length-c)),p=o.clientVersions.slice(Math.max(0,a),Math.max(0,a)+c);pi(i,u,p.map((l,x)=>{let w=Math.max(0,a)+x,y=l.publishedAt?l.publishedAt.slice(0,10):"";return{primary:`${l.version.padEnd(16)}${y}${l.isCurrent?o.zh?" \u2605 \u5F53\u524D":" \u2605 current":""}`,focused:w===o.clientVersionsIdx,marker:w===o.clientVersionsIdx?">":" ",color:l.isCurrent?m.green:d}}))}F(i,e,[["\u2190\u2192",o.zh?"\u5207\u6362\u5DE5\u5177":"switch"],["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Enter",o.zh?"\u5B89\u88C5":"install"],["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,e)}Yo();ai();Si();Io();vd();Yo();xd();Ti();xi();function v1(i,o,n){let d=i.clients[i.clientIdx];if(!d)return;let e=d.launchOptions.filter((c)=>c.group===o);if(e.length===0)return;let u=Ei(d.launchOptions,d.enabled,o),r=o==="model"?Le(e,i.pickCounts):"collapsed",t=0;if(u)if(o==="model"&&r==="grid"){let c=e.map((p)=>p.id),a=Jo(e,n,i.zh);t=Ne(c,u.id,a)}else t=(o==="model"?Ro(e,d.enabled,i.pickCounts).list:e).findIndex((a)=>a.id===u.id)+1;i.optionPickerGroup=o,i.optionPickerIdx=Math.max(0,t),i.modelPickerMode=r,i.screen="option-picker"}function Ot(i,o,n,d,e){let u=o.clients[o.clientIdx];if(!u)return;let r=co(u.launchOptions,o.zh),t=i.name,c=T(i);if(t==="q"||t==="escape"){d({type:"exit"});return}if(c&&t==="a"){e(()=>hi(o));return}if(c&&t==="p"){e(()=>po(o));return}if(c&&t==="s"){e(()=>bn(o));return}if(c&&t==="c"){o.screen="config",o.apiKeyValue="",o.apiKeyStatus="idle",o.apiKeyError=void 0,W(n,o);return}if(c&&t==="l"){o.screen="language",W(n,o);return}let a=Number.parseInt(t,10);if(c&&a>=1&&a<=o.clients.length){o.clientIdx=a-1,vn(o),W(n,o);return}if(t==="tab"){if(i.shift)o.clientIdx=o.clientIdx>0?o.clientIdx-1:o.clients.length-1;else o.clientIdx=o.clientIdx<o.clients.length-1?o.clientIdx+1:0;vn(o),W(n,o);return}if(t==="left"){if(o.focus==="tabs")o.clientIdx=o.clientIdx>0?o.clientIdx-1:o.clients.length-1,vn(o);else if(o.focus==="options")o.focus="projects",o.projectIdx=Math.min(o.projectIdx,u.projects.length-1);W(n,o);return}if(t==="right"){if(o.focus==="tabs")o.clientIdx=o.clientIdx<o.clients.length-1?o.clientIdx+1:0,vn(o);else if(o.focus==="projects"&&r.length>0)o.focus="options",o.optionIdx=Math.min(o.optionIdx,r.length-1);W(n,o);return}if(t==="down"){if(o.focus==="tabs")o.focus="projects";else if(o.focus==="projects"){if(o.projectIdx<u.projects.length-1)o.projectIdx+=1}else if(o.optionIdx<r.length-1)o.optionIdx+=1;W(n,o);return}if(t==="up"){if(o.focus==="options")if(o.optionIdx>0)o.optionIdx-=1;else o.focus="tabs";else if(o.focus==="projects")if(o.projectIdx>0)o.projectIdx-=1;else o.focus="tabs";W(n,o);return}if((t==="space"||t==="return")&&o.focus==="options"){let p=r[o.optionIdx];if(p?.kind==="provider"){e(()=>po(o));return}if(p?.kind==="flag"){if(u.enabled.has(p.opt.id))u.enabled.delete(p.opt.id);else u.enabled.add(p.opt.id);W(n,o);return}if(p?.kind==="group"){v1(o,p.group,n.terminalWidth||80),W(n,o);return}}if(t==="return"){let p=u.projects[o.projectIdx],l=xe(u);d({type:"launch",clientId:u.client.id,projectPath:p?.path,...l})}}function Rt(i,o,n){let d=o.clients[o.clientIdx],e=o.optionPickerGroup;if(!d||!e){o.screen="launcher",W(n,o);return}let u=d.launchOptions.filter((p)=>p.group===e),r=e==="model",t=i.name;if(r&&o.modelPickerMode==="grid"){let p=u.map((s)=>s.id),l=Jo(u,n.terminalWidth||80,o.zh),x=Bo(p,l),w=St(p,l),y=x.flat.length;if(t==="escape"){if(Le(u,o.pickCounts)==="grid")o.screen="launcher",o.modelPickerMode="collapsed";else{o.modelPickerMode="collapsed";let s=Ei(d.launchOptions,d.enabled,e),b=Ro(u,d.enabled,o.pickCounts).list;o.optionPickerIdx=s?Math.max(0,b.findIndex((v)=>v.id===s.id)+1):0}W(n,o);return}if(T(i)&&t==="q"){o.screen="launcher",o.modelPickerMode="collapsed",W(n,o);return}if(y===0)return;if(t==="left"){o.optionPickerIdx=o.optionPickerIdx>0?o.optionPickerIdx-1:y-1,W(n,o);return}if(t==="right"){o.optionPickerIdx=o.optionPickerIdx<y-1?o.optionPickerIdx+1:0,W(n,o);return}if(t==="up"||t==="down"){let s=0,b=0,v=0;for(let k=0;k<w.length;k++){let B=w[k].length;if(o.optionPickerIdx<v+B){s=k,b=o.optionPickerIdx-v;break}v+=B}let h=t==="up"?s>0?s-1:w.length-1:s<w.length-1?s+1:0,M=Math.min(b,w[h].length-1);o.optionPickerIdx=w.slice(0,h).reduce((k,B)=>k+B.length,0)+M,W(n,o);return}if(t==="return"||t==="space"){let s=x.flat[o.optionPickerIdx];for(let b of u)d.enabled.delete(b.id);if(s)d.enabled.add(s);o.screen="launcher",o.modelPickerMode="collapsed",W(n,o)}return}let c=r?Ro(u,d.enabled,o.pickCounts):{list:u,hiddenCount:0},a=c.list.length+1+(c.hiddenCount>0?1:0);if(t==="escape"||T(i)&&t==="q"){o.screen="launcher",o.modelPickerMode="collapsed",W(n,o);return}if(t==="up"){o.optionPickerIdx=o.optionPickerIdx>0?o.optionPickerIdx-1:a-1,W(n,o);return}if(t==="down"){o.optionPickerIdx=o.optionPickerIdx<a-1?o.optionPickerIdx+1:0,W(n,o);return}if(t==="return"||t==="space"){if(o.optionPickerIdx===0)for(let p of u)d.enabled.delete(p.id);else if(r&&c.hiddenCount>0&&o.optionPickerIdx===c.list.length+1){let p=Ei(d.launchOptions,d.enabled,e),l=u.map((w)=>w.id),x=Jo(u,n.terminalWidth||80,o.zh);o.optionPickerIdx=p?Math.max(0,Ne(l,p.id,x)):0,o.modelPickerMode="grid",W(n,o);return}else{for(let l of u)d.enabled.delete(l.id);let p=c.list[o.optionPickerIdx-1];if(p)d.enabled.add(p.id)}o.screen="launcher",o.modelPickerMode="collapsed",W(n,o)}}function Jt(i,o,n,d){let e=o.clients[o.providerTabIdx]?.client,u=e?o.providers.filter((a)=>Hi(a,e.id)):[],r=u.length+4,t=i.name,c=T(i);if(t==="left")o.providerTabIdx=o.providerTabIdx>0?o.providerTabIdx-1:o.clients.length-1;else if(t==="right")o.providerTabIdx=o.providerTabIdx<o.clients.length-1?o.providerTabIdx+1:0;else if(t==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:r-1;else if(t==="down")o.providerRowIdx=o.providerRowIdx<r-1?o.providerRowIdx+1:0;else if(c&&(t==="d"||t==="e")&&o.providerRowIdx<u.length)o.providerSelectedId=u[o.providerRowIdx].id,o.providerDetailIdx=0,o.screen="provider-detail";else if(t==="return"){if(o.providerRowIdx<u.length&&e){let a=u[o.providerRowIdx];d(async()=>{await e0(e.id,a.id);let p;if(e.setupConfigFiles)try{await e.setupConfigFiles(_(a))}catch(l){p=l instanceof Error?l.message:String(l)}if(await Ji(o),await fi(o),o.clientIdx=o.clients.findIndex((l)=>l.client.id===e.id),o.clientIdx<0)o.clientIdx=0;Yi(o),o.message=p?o.zh?`\u670D\u52A1\u5546\u5DF2\u7ED1\u5B9A\uFF0C\u914D\u7F6E\u540C\u6B65\u5931\u8D25\uFF1A${p}`:`Provider bound, config sync failed: ${p}`:o.zh?"\u670D\u52A1\u5546\u5DF2\u7ED1\u5B9A":"Provider bound"});return}if(o.providerRowIdx===u.length)o.screen="provider-add-type",o.providerRowIdx=0;else if(o.providerRowIdx===u.length+1){d(async()=>{let a=await _o(),p=await Uo(a);if(p>0)U(),H();await Ji(o),await fi(o),o.message=o.zh?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${p} \u4E2A`:`Scan complete, ${p} added`});return}else if(o.providerRowIdx===u.length+2){d(()=>Ge(o));return}else Yi(o)}W(n,o)}function Bt(i,o,n,d,e){let u=fn(o);if(!u){o.screen="providers",W(n,o);return}let r=hd(u,o);if(i.name==="up"||i.name==="left")o.providerDetailIdx=o.providerDetailIdx>0?o.providerDetailIdx-1:r.length-1;else if(i.name==="down"||i.name==="right")o.providerDetailIdx=o.providerDetailIdx<r.length-1?o.providerDetailIdx+1:0;else if(i.name==="return"){let t=r[o.providerDetailIdx];if(t==="back")o.screen="providers";if(t==="default"){e(async()=>{await d0(u.id),await Ji(o),await fi(o),o.screen="providers",o.message=o.zh?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"});return}if(t==="delete"){e(async()=>{await n0(u.id),await Ji(o),await fi(o),o.screen="providers",o.message=o.zh?"\u5DF2\u5220\u9664":"Deleted"});return}if(t==="rekey")o.addType=u.type,ao(o,"rekey");if(t==="relogin"){d({type:"provider-login",tool:u.type==="codex-subscription"?"codex":"claude"});return}}W(n,o)}function Yt(i,o,n,d){if(i.name==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:Co.length-1;else if(i.name==="down")o.providerRowIdx=o.providerRowIdx<Co.length-1?o.providerRowIdx+1:0;else if(i.name==="return"){if(o.addType=Co[o.providerRowIdx],o.addType==="claude-subscription"||o.addType==="codex-subscription"){d({type:"provider-login",tool:o.addType==="codex-subscription"?"codex":"claude"});return}ao(o,"add-key")}W(n,o)}function At(i,o,n,d){let e=i.name,u=o.providerInputMode==="add-model"?Eo(o.addType):void 0;if(u){if(e==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:u.length-1;else if(e==="down")o.providerRowIdx=o.providerRowIdx<u.length-1?o.providerRowIdx+1:0;else if(e==="return"){o.addModel=u[o.providerRowIdx],d(()=>Ln(o));return}W(n,o);return}if(e==="backspace"||e==="delete")qo(o);else if(e==="return"){if(o.providerInputMode==="rekey"){let r=fn(o);if(!r)return;d(async()=>{await Zi(r.id,{apiKey:o.addKey}),await Ji(o),await fi(o),o.screen="providers",o.message=o.zh?"Key \u5DF2\u66F4\u65B0":"Key updated"});return}if(o.providerInputMode==="add-key"&&o.addKey)if(o.addType==="custom")ao(o,"add-url");else ao(o,"add-model");else if(o.providerInputMode==="add-url")ao(o,"add-model");else if(o.providerInputMode==="add-model"){if(o.addModel.trim())ao(o,"add-ctx");else d(()=>Ln(o));return}else if(o.providerInputMode==="add-ctx"){d(()=>Ln(o));return}}else Oo(o,Qo(i));W(n,o)}function Xt(i,o,n,d){let e=i.name,u=o.agentSessions||[];if(e==="up")o.agentIdx=o.agentIdx>0?o.agentIdx-1:Math.max(0,u.length-1);else if(e==="down")o.agentIdx=o.agentIdx<u.length-1?o.agentIdx+1:0;else if(T(i)&&e==="r"){d(()=>hi(o));return}else if(T(i)&&e==="n")o.screen="agent-new",o.agentBackend="claude",o.agentModel="",o.agentName="",o.agentField="backend",o.agentError=void 0;else if((e==="return"||T(i)&&e==="o")&&u[o.agentIdx]){d(()=>ge(o,u[o.agentIdx].sid));return}else if(T(i)&&e==="p"){d(async()=>{let r=await ld();await hi(o),o.message=o.zh?`\u5DF2\u6E05\u7406 ${r} \u4E2A session`:`Purged ${r} sessions`});return}else if(T(i)&&(e==="d"||e==="x")&&u[o.agentIdx]){let r=u[o.agentIdx];d(async()=>{await $o(r.sid,e==="x"),await hi(o),o.message=e==="x"?o.zh?"\u5DF2\u5220\u9664":"Purged":o.zh?"\u5DF2\u5173\u95ED":"Closed"});return}W(n,o)}function Ht(i,o,n,d){let e=i.name,u=o.agentDetailSid;if(!u){d(()=>hi(o));return}if(i.ctrl&&e==="c"){if(o.agentDetailStatus==="sending"){o.agentDetailStatus="cancelling",W(n,o),wn(u).catch((r)=>{o.agentError=r instanceof Error?r.message:String(r)}).finally(()=>{o.agentDetailStatus="idle",Bi(o).finally(()=>W(n,o))});return}d(()=>hi(o));return}if(i.ctrl&&(e==="y"||e==="n")){let r=o.agentPendingApprovals[0];if(!r)return;d(async()=>{await nd(u,r.approvalId,{decision:e==="y"?"allow":"deny",by:"tui",decidedAt:Date.now()}),await Bi(o),o.message=e==="y"?o.zh?"\u5DF2\u6279\u51C6":"Approved":o.zh?"\u5DF2\u62D2\u7EDD":"Denied"});return}if(e==="escape"||T(i)&&e==="q"&&!o.agentDetailInput){d(()=>hi(o));return}if(T(i)&&e==="r"){d(()=>Bi(o));return}if(e==="backspace"||e==="delete"){qo(o),W(n,o);return}if(e==="return"){let r=o.agentDetailInput.trim();if(!r||o.agentDetailStatus!=="idle")return;o.agentDetailInput="",o.agentDetailStatus="sending",o.agentError=void 0,W(n,o),xn(u,r).catch((t)=>{o.agentError=t instanceof Error?t.message:String(t)}).finally(()=>{o.agentDetailStatus="idle",Bi(o).finally(()=>W(n,o))});return}Oo(o,Qo(i)),W(n,o)}function Zt(i,o,n,d){let e=i.name;if(e==="tab"||e==="down")o.agentField=o.agentField==="backend"?"model":o.agentField==="model"?"name":"backend";else if(e==="up")o.agentField=o.agentField==="backend"?"name":o.agentField==="model"?"backend":"model";else if((e==="space"||e==="left"||e==="right")&&o.agentField==="backend")o.agentBackend=o.agentBackend==="claude"?"codex":"claude";else if(e==="backspace"||e==="delete")qo(o);else if(e==="return"){d(async()=>{try{let u=await mn({backend:o.agentBackend,model:o.agentModel.trim()||void 0,name:o.agentName.trim()||void 0});await hi(o);let r=o.agentSessions?.findIndex((t)=>t.sid===u.sid)??-1;if(r>=0)o.agentIdx=r;o.message=o.zh?"Session \u5DF2\u521B\u5EFA":"Session created"}catch(u){o.agentError=u instanceof Error?u.message:String(u)}});return}else Oo(o,Qo(i));W(n,o)}function Kt(i,o,n,d){let e=i.name,u=T(i);if(e==="left"){o.clientVersionsClientIdx=o.clientVersionsClientIdx>0?o.clientVersionsClientIdx-1:o.clients.length-1,d(()=>lo(o));return}if(e==="right"){o.clientVersionsClientIdx=o.clientVersionsClientIdx<o.clients.length-1?o.clientVersionsClientIdx+1:0,d(()=>lo(o));return}if(u&&e==="r"){d(()=>lo(o));return}let r=o.clientVersions.length-1;if(e==="up")o.clientVersionsIdx=o.clientVersionsIdx>0?o.clientVersionsIdx-1:Math.max(0,r);else if(e==="down")o.clientVersionsIdx=o.clientVersionsIdx<r?o.clientVersionsIdx+1:0;else if(e==="return"){let t=o.clientVersions[o.clientVersionsIdx];if(t&&!t.isCurrent){d(()=>Se(o,t.version));return}}W(n,o)}var f1=["configure","skip","never"];function Vt(i,o,n,d){let e=i.name;if(e==="up")o.keyGuideIdx=o.keyGuideIdx>0?o.keyGuideIdx-1:2;else if(e==="down")o.keyGuideIdx=o.keyGuideIdx<2?o.keyGuideIdx+1:0;else if(e==="escape"){d(async()=>{await Ld("skip"),Yi(o)});return}else if(e==="return"){let u=f1[o.keyGuideIdx];if(u==="configure"){o.screen="config",o.apiKeyValue="",o.apiKeyStatus="idle",o.apiKeyError=void 0,W(n,o);return}d(async()=>{await Ld(u),Yi(o)});return}W(n,o)}Yo();async function Tt(i={}){let o=await vt();if(i.screen==="providers")await po(o);if(i.message)o.message=i.message;if(o.screen==="launcher")try{let{shouldShowKeyGuide:d}=await Promise.resolve().then(() => (Yo(),qt));if(await d())o.screen="key-guide"}catch{}fd();let n=await b1({exitOnCtrlC:!1,clearOnShutdown:!0,useMouse:!0,enableMouseMovement:!1,backgroundColor:m.bg});return new Promise((d)=>{let e=!1,u=!1,r,t=async()=>{await new Promise((y)=>{let s=setTimeout(y,100);s.unref?.(),n.once(h1.DESTROY,()=>{clearTimeout(s),y()}),n.stop(),n.destroy()})},c=(y)=>{if(e)return;if(e=!0,r)clearInterval(r);n.keyInput.off("keypress",l),(async()=>{await t(),await bt(),d(y)})()},a=(y)=>{if(o.busy)return;o.busy=!0,W(n,o),y().catch((s)=>{o.message=`! ${s instanceof Error?s.message:String(s)}`}).finally(()=>{o.busy=!1,W(n,o)})},p=(y)=>{if(n.terminalHeight>=sn)return!1;let s=Math.max(1,n.terminalHeight-2);return o.scrollOffset=Math.max(0,o.scrollOffset+y*s),W(n,o),!0},l=(y)=>{if(y.eventType==="release"||o.busy)return;let s=y.name,b=Qo(y),v=T(y);if(s==="pagedown"&&p(1))return;if(s==="pageup"&&p(-1))return;if(o.screen==="agent-detail"){Ht(y,o,n,a);return}if(y.ctrl&&s==="c"){c({type:"exit"});return}if(o.screen==="client-versions"){if(s==="escape"||v&&s==="q"){a(()=>po(o));return}Kt(y,o,n,a);return}if(o.screen==="key-guide"){Vt(y,o,n,a);return}if(o.screen==="launcher"){Ot(y,o,n,c,a);return}if(o.screen==="option-picker"){Rt(y,o,n);return}if(s==="escape"||v&&s==="q"){if(o.screen==="provider-detail"||o.screen==="provider-add-type"||o.screen==="provider-input")o.screen="providers";else if(o.screen==="agent-new")o.screen="agents";else Yi(o);W(n,o);return}if(o.screen==="providers"){Jt(y,o,n,a);return}if(o.screen==="provider-detail"){Bt(y,o,n,c,a);return}if(o.screen==="provider-add-type"){Yt(y,o,n,c);return}if(o.screen==="provider-input"){At(y,o,n,a);return}if(o.screen==="stats"){if(v&&s==="r")a(()=>bn(o));return}if(o.screen==="config"){if(s==="backspace"||s==="delete")qo(o);else if(s==="return")a(async()=>{if(!o.apiKeyValue)return;o.apiKeyStatus="validating",W(n,o);let h=await lt(o.apiKeyValue);if(h.success)U(),H(),o.apiKeyStatus="success",await fi(o);else o.apiKeyStatus="error",o.apiKeyError=h.error||"Validation failed"});else Oo(o,b);W(n,o);return}if(o.screen==="language"){if(s==="up")o.languageIdx=o.languageIdx>0?o.languageIdx-1:Fi.length-1;if(s==="down")o.languageIdx=o.languageIdx<Fi.length-1?o.languageIdx+1:0;if(s==="return"){let h=Fi[o.languageIdx];jd(h.value),o.zh=h.value==="zh",o.message=o.zh?"\u8BED\u8A00\u5DF2\u5207\u6362":"Language changed",a(()=>fi(o).then(()=>Yi(o)));return}W(n,o);return}if(o.screen==="agents"){Xt(y,o,n,a);return}if(o.screen==="agent-new")Zt(y,o,n,a)};n.keyInput.on("keypress",l),n.on("resize",()=>W(n,o));let x=!1,w=()=>{if(e||x||o.screen!=="launcher")return;let y=o.clients[o.clientIdx]?.activeProvider;if((y?`${y.id}:${y.type}`:void 0)===o.quotaKey)return;x=!0,ze(o).catch(()=>{}).finally(()=>{if(x=!1,!e&&o.screen==="launcher")W(n,o)})};r=setInterval(()=>{if(w(),e||u||o.busy||o.screen!=="agent-detail"||!o.agentDetailSid)return;u=!0,Bi(o).catch((y)=>{o.agentError=y instanceof Error?y.message:String(y)}).finally(()=>{if(u=!1,!e&&o.screen==="agent-detail")W(n,o)})},1000),r.unref?.(),we(o),W(n,o),n.start()})}Yo();E();X();xi();Ci();ai();C();ai();var L1=2000,Ft=100;function Mi(i){if(Xo||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${i}
564
- `)}function Et(i){if(!i)return null;if(i.type!=="tako"&&i.type!=="custom")return null;if(!i.baseUrl||!i.apiKey)return null;return{baseUrl:i.baseUrl.replace(/\/+$/,""),apiKey:i.apiKey}}async function N1(i,o){let n=`${i}/v1/announcements/popup`;try{let d=await fetch(n,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(L1)});if(!d.ok)return Mi(`HTTP ${d.status} from ${n}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let u=(await d.json())?.announcement;if(!u)return Mi("\u8FD4\u56DE announcement=null\uFF08par \u540E\u53F0\u6CA1\u6709 published+popup=true \u7684\u516C\u544A\uFF09"),null;if(typeof u.id!=="string"||typeof u.title!=="string")return Mi(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(u)}`),null;return Mi(`\u62C9\u5230\u516C\u544A id=${u.id} title=${u.title} popup_once=${!!u.popup_once}`),{id:u.id,title:u.title,content:u.content??"",type:u.type,popup_once:!!u.popup_once}}catch(d){return Mi(`fetch \u5931\u8D25\uFF1A${d instanceof Error?d.message:String(d)}`),null}}async function W1(i){return((await z()).seenAnnouncementIds??[]).includes(i)}async function k1(i){let o=await z(),n=o.seenAnnouncementIds??[];if(n.includes(i))return;let d=[...n,i];if(d.length>Ft)d.splice(0,d.length-Ft);o.seenAnnouncementIds=d,await K(o)}async function z1(){let i=Et(await ei());if(i)return i;for(let o of await V()){let n=Et(o);if(n)return n}return null}async function _t(){let i=await z1();if(!i){Mi("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}Mi(`\u67E5\u8BE2\u516C\u544A\uFF1A${i.baseUrl}/v1/announcements/popup`);let o=await N1(i.baseUrl,i.apiKey);if(!o)return;if(o.popup_once&&await W1(o.id)){Mi(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${o.id}`);return}if(Mi(`\u5F39\u7A97\uFF1A${o.id}`),await Hu(o),o.popup_once)await k1(o.id),Mi(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${o.id}`)}vo();async function Ut(){await u0(),await r0(),await Nr(),await Promise.race([Zd(await V()),new Promise((i)=>setTimeout(i,3000))]),await _t()}async function Dt(i){let o=oi(i.clientId);if(!o)return!1;O("menu_action",{action:"launch",client_id:i.clientId});let n=await En(i.clientId);if(!n)return L.warn(g("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546"),!1;let e=process.platform==="win32"&&!!process.env.TAKO_WINDOWS_HANDOFF_FILE,u=await Hn(o,{projectPath:i.projectPath,args:i.args,envVars:i.envVars,selectedOptionIds:i.selectedOptionIds,providerContext:n,relaunchTakoOnWindows:e});if(!u.success)return L.error(u.error||g("cli.launchFailed")),!1;if(e)return!0;return!1}async function jt(){await Ut();let i;while(!0){let o=await Tt(i);if(i=void 0,!o)break;if(o.type==="exit")break;if(o.type==="provider-login"){let d=Ii()==="zh",e=o.tool==="claude"?"Claude":"Codex";L.info(d?`\u6B63\u5728\u6253\u5F00 ${e} \u5B98\u65B9\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...`:`Opening ${e} login; complete authorization in the browser...`);let u=await $e(o.tool),r=await Me(o.tool,d),t=r.message;if(!r.ok&&u.error)t=u.error;else if(!r.ok&&!u.ok&&u.exitCode!=null)t=d?`${e} \u767B\u5F55\u672A\u5B8C\u6210\uFF08\u9000\u51FA\u7801 ${u.exitCode}\uFF09`:`${e} login did not complete (exit ${u.exitCode})`;if(r.ok)L.success(r.message);else L.warn(t);i={screen:"providers",message:r.ok?r.message:`! ${t}`};continue}if(o.type!=="launch")continue;if(await Dt(o))process.exit(0)}}await pt(jt);
555
+ ${k("cli.examples")}
556
+ ${k("cli.exampleInteractive")}
557
+ ${k("cli.exampleClaude")}
558
+ ${k("cli.exampleClaudeModel")}
559
+ ${k("cli.exampleCodex")}
560
+ ${k("cli.exampleGemini")}
561
+ `)}async function Sm(i){let[o,n]=i;if(!o)console.error("\u7528\u6CD5: tako install <client> [version]"),console.error(" tako install claude-code # \u5217\u51FA\u6240\u6709\u53EF\u7528\u7248\u672C"),console.error(" tako install claude-code 1.0.5 # \u5B89\u88C5\u6307\u5B9A\u7248\u672C"),process.exit(1);let d=ii(o);if(!d)console.error(`\u672A\u77E5 client: ${o}`),process.exit(1);if(!n){try{let u=await Rd(d.package),e=await Yd(d),r=u.slice(0,30);console.log(`${d.name} (${d.package}) \u6700\u8FD1 ${r.length} \u4E2A\u7248\u672C\uFF1A`);for(let t of r){let c=t.version===e?" \u2190 \u5F53\u524D":"",p=t.publishedAt?` ${t.publishedAt.slice(0,10)}`:"";console.log(` ${t.version}${p}${c}`)}console.log(`
562
+ \u5B89\u88C5\uFF1Atako install ${o} <version>`)}catch(u){console.error("\u83B7\u53D6\u7248\u672C\u5217\u8868\u5931\u8D25:",u.message),process.exit(1)}return}console.log(`\u6B63\u5728\u5B89\u88C5 ${d.package}@${n} \u5230 ${d.id}...`);try{await Bd(d,n),console.log(`\u2713 ${d.name} \u5DF2\u5207\u6362\u5230 ${n}`)}catch(u){console.error("\u5B89\u88C5\u5931\u8D25:",u.message),process.exit(1)}}async function lu(i,o,n){let d=ii(i);if(!d)console.error(k("cli.clientNotFound",{client:o})),process.exit(1);let u=await Dn(i);if(!u)console.error("\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546"),process.exit(1);let e=await Vn(d,{providerContext:u,args:n,handoffOnWindows:!0});if(!e.success)console.error(e.error),process.exit(1);process.exit(e.exitCode??0)}async function Pm(i){let o=process.argv.slice(2);if(o[0]==="statusline"){zi(),await hr();return}if(o[0]==="install"){await Sm(o.slice(1));return}if(o[0]==="quota"){let{runQuotaCommand:d}=await Promise.resolve().then(() => (zr(),Nr)),u=await d(o.slice(1));if(u!==0)process.exit(u);return}if(o[0]==="agent"){zi();let{runAgentCommand:d}=await Promise.resolve().then(() => (it(),jr));await d(o.slice(1));return}if(o[0]==="skill"){let{runSkillCommand:d}=await Promise.resolve().then(() => (dt(),nt));await d(o.slice(1));return}if(o[0]==="models"){let{runModelsCommand:d}=await Promise.resolve().then(() => (rt(),et)),u=await d(o.slice(1));if(u!==0)process.exit(u);return}if(o.includes("-v")||o.includes("--version")){console.log(`Tako CLI v${b0}`);return}if(o.includes("-h")||o.includes("--help")){Gm();return}let n=b0==="dev"||Ho;if(H(),R("cli_started"),o.includes("--claude")){if(h0(n))await dn();await lu("claude-code","Claude Code",await jn("claude-code",o,"--claude"));return}if(o.includes("--codex")){if(h0(n))await dn();await lu("codex","Codex",await jn("codex",o,"--codex"));return}if(o.includes("--gemini")){if(h0(n))await dn();await lu("gemini","Gemini CLI",await jn("gemini",o,"--gemini"));return}if(h0(n))await dn();if(Od().catch(()=>{}),zi(),X0().catch(()=>{}),!process.stdin.isTTY){console.log("Tako CLI v"+b0),console.log(`
563
+ \u5B89\u88C5\u6210\u529F\uFF01\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C tako \u542F\u52A8\u4EA4\u4E92\u754C\u9762\u3002`),console.log(" tako \u2014 \u4EA4\u4E92\u5F0F\u542F\u52A8\u5668"),console.log(" tako --help \u2014 \u67E5\u770B\u6240\u6709\u547D\u4EE4");return}await i()}async function tt(i){process.on("beforeExit",async()=>{await on()}),process.on("SIGINT",async()=>{await on(),process.exit(0)}),process.on("SIGTERM",async()=>{await on(),process.exit(0)});try{await Pm(i)}catch(o){console.error(k("cli.cliError"),o),await on(),process.exit(1)}}X();Pi();X();import{CliRenderEvents as f1,createCliRenderer as h1}from"@opentui/core";C();X();wi();ti();Si();function Cm(i){return i.startsWith("cr_")&&i.length>10}async function Qm(i){try{let n=await(await fetch(`${Y}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:i})})).json();if(n.success&&n.data?.id)return{valid:!0,apiId:n.data.id};return{valid:!1,error:n.error||k("auth.validationFailed")}}catch(o){return{valid:!1,error:o instanceof Error?o.message:k("auth.networkError")}}}async function ct(i){if(!Cm(i))return R("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:k("auth.invalidFormat")};let o=await Qm(i);if(!o.valid)return R("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:o.error};return await Di({apiKey:i,apiId:o.apiId}),await qm(i,o.apiId),R("api_key_validated",{success:!0}),U(),H(),{success:!0}}async function qm(i,o){let d=(await V()).find((u)=>u.type==="tako");if(d)await Ki(d.id,{apiKey:i,apiId:o});else await uo({name:"Tako \u5B98\u65B9",type:"tako",apiKey:i,baseUrl:Y,apiId:o,supportedClients:ni("tako"),builtin:!0})}wi();qo();L0();qo();function vt(){try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}function W0(){if(!process.stdout.isTTY)return;try{process.stdout.write("\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h")}catch{}}async function ft(){vt(),W0(),await new Promise((i)=>setTimeout(i,30)),vt(),W0()}function Io(i){if(i.ctrl||i.meta||i.option)return"";if(i.sequence&&i.sequence.length===1&&i.sequence>=" ")return i.sequence;if(i.name&&i.name.length===1)return i.name;return""}function F(i){return!i.ctrl&&!i.meta&&!i.option}function yu(i){if(!i)return"";if(i.length<=8)return"*".repeat(i.length);return`${i.slice(0,4)}${"*".repeat(Math.min(i.length-8,20))}${i.slice(-4)}`}function bn(i){return i.providers.find((o)=>o.id===i.providerSelectedId)}function N0(i,o){let n=i.type==="claude-subscription"||i.type==="codex-subscription";return[...i.id!==o.defaultProviderId?["default"]:[],...n?["relogin"]:["rekey"],...i.builtin?[]:["delete"],"back"]}function ht(i,o){return{default:o?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set default",rekey:o?"\u66F4\u65B0 Key":"Update key",relogin:o?"\u91CD\u65B0\u767B\u5F55":"Re-login",delete:o?"\u5220\u9664":"Delete",back:o?"\u8FD4\u56DE":"Back"}[i]}function vu(i){let o=Math.floor(i/1000);if(o<60)return`${o}s`;if(o<3600)return`${Math.floor(o/60)}m`;if(o<86400)return`${Math.floor(o/3600)}h`;return`${Math.floor(o/86400)}d`}function fu(i){switch(i){case"running":return m.yellow;case"awaiting_approval":return m.magenta;case"idle":return m.green;case"closed":return m.gray;case"dead":return m.red;default:return m.text}}function bt(i){switch(i){case"running":return"~";case"awaiting_approval":return"?";case"idle":return"*";case"dead":return"!";default:return"-"}}function Oo(i){if(i.screen==="config"){i.apiKeyValue=i.apiKeyValue.slice(0,-1),i.apiKeyStatus="idle";return}if(i.screen==="agent-new"){if(i.agentField==="model")i.agentModel=i.agentModel.slice(0,-1);if(i.agentField==="name")i.agentName=i.agentName.slice(0,-1);return}if(i.screen==="agent-detail"){i.agentDetailInput=i.agentDetailInput.slice(0,-1);return}switch(i.providerInputMode){case"add-key":case"rekey":i.addKey=i.addKey.slice(0,-1);break;case"add-url":i.addUrl=i.addUrl.slice(0,-1);break;case"add-model":i.addModel=i.addModel.slice(0,-1);break;case"add-ctx":i.addCtx=i.addCtx.slice(0,-1);break}}function Jo(i,o){if(!o)return;if(i.screen==="config"){i.apiKeyValue+=o,i.apiKeyStatus="idle";return}if(i.screen==="agent-new"){if(i.agentField==="model")i.agentModel+=o;if(i.agentField==="name")i.agentName+=o;return}if(i.screen==="agent-detail"){i.agentDetailInput+=o;return}switch(i.providerInputMode){case"add-key":case"rekey":i.addKey+=o;break;case"add-url":i.addUrl+=o;break;case"add-model":i.addModel+=o;break;case"add-ctx":if(/^[0-9]$/.test(o))i.addCtx+=o;break}}Si();X();hu();import{BoxRenderable as Am,ScrollBoxRenderable as Xm,TextAttributes as B,TextRenderable as Hm}from"@opentui/core";function Im(i){let o=i.codePointAt(0);if(!o)return!1;return o>=19968&&o<=40959||o>=13312&&o<=19903||o>=131072&&o<=191471||o>=63744&&o<=64255||o>=194560&&o<=195103||o>=44032&&o<=55215||o>=12352&&o<=12447||o>=12448&&o<=12543||o>=65280&&o<=65519||o>=126976&&o<=131071||o>=9728&&o<=10175||o===11088}function Om(i){return i.replace(/\x1b\[[0-9;]*m/g,"")}function Ln(i){let o=Om(i),n=0;for(let d of o)n+=Im(d)?2:1;return n}function Nt(i,o,n="left"){let d=Ln(i),u=Math.max(0,o-d);if(u===0)return i;switch(n){case"left":return i+" ".repeat(u);case"right":return" ".repeat(u)+i;case"center":{let e=Math.floor(u/2),r=u-e;return" ".repeat(e)+i+" ".repeat(r)}}}var kt=6,gt=4,Lu=16,Jm=12;function Ro(i,o,n){if(!i.some((c)=>(n[c.id]??0)>0))return{list:i,hiddenCount:0};let u=new Map(i.map((c,p)=>[c.id,p])),e=i.filter((c)=>(n[c.id]??0)>0).sort((c,p)=>{let a=(n[p.id]??0)-(n[c.id]??0);if(a!==0)return a;return(u.get(c.id)??0)-(u.get(p.id)??0)}).slice(0,kt).map((c)=>c.id),r=new Set(e);for(let c of i)if(o.has(c.id))r.add(c.id);let t=i.filter((c)=>r.has(c.id));return{list:t,hiddenCount:i.length-t.length}}function Wu(i,o){return!i.some((d)=>(o[d.id]??0)>0)&&i.length>kt?"grid":"collapsed"}function Rm(i,o){if(i.length===0)return 1;let n=Math.max(...i.map((e)=>Ln(e))),d=Math.max(Lu,n+4),u=Math.max(d,o-Jm);return Math.max(1,Math.min(gt,i.length,Math.floor(u/d)))}function Bo(i,o,n){let d=i.map((u)=>u.label[n?"zh":"en"]||u.label.en||u.id);return Rm(d,o)}function Bm(i,o){let n=Math.max(1,Math.min(gt,Math.floor(o)||1)),d=[];for(let u=0;u<i.length;u+=n)d.push(i.slice(u,u+n));return{rows:d,flat:d.flat()}}function z0(i){return i.startsWith("model-")?i.slice(6):i}function bu(i){let o=z0(i).toLowerCase();return o.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||o.slice(0,3)||o}function zt(i){let o=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],n=o.indexOf(i);return n===-1?o.length:n}function st(i){let o=z0(i).toLowerCase(),n=[];for(let d of o.match(/\d+(?:\.\d+)?|[a-z]+/g)??[o]){let u=Number(d);n.push(Number.isFinite(u)&&/^\d/.test(d)?u:d)}return n}function Ym(i,o){let n=bu(i),d=bu(o),u=zt(n)-zt(d)||n.localeCompare(d);if(u!==0)return u;let e=st(i),r=st(o),t=Math.max(e.length,r.length);for(let c=0;c<t;c++){let p=e[c],a=r[c];if(p===void 0)return 1;if(a===void 0)return-1;if(typeof p==="number"&&typeof a==="number"){if(p!==a)return a-p;continue}let l=String(p),x=String(a);if(l!==x)return l.localeCompare(x)}return z0(i).localeCompare(z0(o))}function Yo(i,o){let n=[...i].sort(Ym),d=[];for(let e of n){let r=bu(e),t=d[d.length-1];if(t?.family===r)t.ids.push(e);else d.push({family:r,ids:[e]})}let u=d.map((e)=>({family:e.family,rows:Bm(e.ids,o).rows}));return{groups:u,flat:u.flatMap((e)=>e.rows.flat())}}function Nu(i,o,n){return Yo(i,n).flat.indexOf(o)}function $t(i,o){return Yo(i,o).groups.flatMap((n)=>n.rows)}qo();function Zm(i){for(let o of[...i.root.getChildren()])i.root.remove(o)}function P(i,o){return new Am(i,o)}function zu(i){return i.terminalHeight<fn}function su(i){return zu(i)?{minHeight:fn}:{height:"100%"}}function Z(i,o,n){if(!zu(i)){i.root.add(n);return}let d=new Xm(i,{width:"100%",height:"100%",scrollY:!0,scrollX:!1,viewportCulling:!1});if(d.add(n),i.root.add(d),o.scrollOffset>0)d.scrollTop=o.scrollOffset,process.nextTick(()=>{d.scrollTop=o.scrollOffset,i.requestRender()})}function Km(i,o,n={}){return new Hm(i,{content:o,fg:m.text,selectable:!1,...n})}function b(i,o,n,d={}){let u=Km(o,n,d);return i.add(u),u}function T(i,o,n){let d=P(i,{flexDirection:"row",flexWrap:"wrap",gap:2,paddingX:2,paddingY:0,marginTop:1,height:1,justifyContent:"center"});n.forEach(([u,e])=>{let r=P(i,{flexDirection:"row",gap:1});b(r,i,u,{fg:m.orange,attributes:B.BOLD}),b(r,i,e,{fg:m.muted}),d.add(r)}),o.add(d)}function Vm(i,o,n,d=m.orange){let u=i.terminalHeight;if(u<30)return;let e=P(i,{flexDirection:"column",alignItems:"center",marginBottom:1}),r=u>=36?pt:at;if(b(e,i,r,{fg:d,attributes:B.BOLD,selectable:!1}),n&&u>=34)b(e,i,n,{fg:m.muted});o.add(e)}function ai(i,o,n){let d=P(i,{flexDirection:"column",gap:0});for(let u of n){let e=P(i,{flexDirection:"row",justifyContent:"space-between",backgroundColor:u.focused?m.panelMuted:m.panel,paddingX:1,height:1}),r=P(i,{flexDirection:"row",gap:1,flexGrow:1});if(b(r,i,u.focused?">":" ",{fg:u.focused?u.color||m.orange:m.muted,attributes:u.focused?B.BOLD:B.NONE}),u.marker)b(r,i,u.marker,{fg:u.color||m.orange});if(b(r,i,u.primary,{fg:u.focused?u.color||m.orange:m.text,attributes:u.focused?B.BOLD:B.NONE,truncate:!0}),e.add(r),u.secondary)b(e,i,u.secondary,{fg:m.muted,truncate:!0});d.add(e)}o.add(d)}function ei(i,o,n,d=m.orange,u={text:`tako ${mu}`,color:m.muted},e=!1){let r=P(i,{flexDirection:"column",width:"100%",...su(i),backgroundColor:m.bg,paddingX:1,paddingY:1}),t=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:d,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:1,flexGrow:e?1:0}),c=P(i,{flexDirection:"row",justifyContent:"space-between"});if(b(c,i,n,{fg:d,attributes:B.BOLD}),b(c,i,u.text,{fg:u.color||m.muted,truncate:!0}),t.add(c),o.message)b(t,i,o.message,{fg:o.message.startsWith("!")?m.red:m.green});return r.add(t),{root:r,panel:t}}function z(i,o){if(Zm(i),o.scrollScreen!==o.screen)o.scrollScreen=o.screen,o.scrollOffset=0;else if(!zu(i)&&o.scrollOffset!==0)o.scrollOffset=0;switch(o.screen){case"launcher":St(i,o);break;case"providers":jm(i,o);break;case"provider-detail":i1(i,o);break;case"provider-add-type":o1(i,o);break;case"provider-input":n1(i,o);break;case"stats":d1(i,o);break;case"config":u1(i,o);break;case"language":e1(i,o);break;case"option-picker":Um(i,o);break;case"agents":r1(i,o);break;case"agent-detail":c1(i,o);break;case"agent-new":p1(i,o);break;case"key-guide":l1(i,o);break;case"client-versions":m1(i,o);break}i.requestRender()}var Mt={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:m.cyan,icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:m.yellow,icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:m.blue,icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:m.yellow,icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:m.magenta,icon:"\u25C7"},xiaomi:{zh:"\u5C0F\u7C73 MiMo",en:"Xiaomi MiMo",color:m.orange,icon:"\u25C6"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:m.gray,icon:"\u25AA"}};function Fm(i){if(!i)return"";let[o,n]=i.split("@");if(o&&n&&o.length>14)return`${o.slice(0,12)}\u2026@${n}`;return i}function Tm(i,o,n){let d=n.clients[n.clientIdx]?.activeProvider;if(!d){b(o,i,`\u26A0 ${n.zh?"\u672A\u7ED1\u5B9A":"no provider"}`,{fg:m.yellow});return}let u=Mt[d.type]??Mt.custom;b(o,i,`${u.icon} ${n.zh?u.zh:u.en}`,{fg:u.color});let e=Fm(d.email??"");if(e)b(o,i,`\xB7 ${e}`,{fg:m.muted,truncate:!0})}function _m(i){return i>30?m.green:i>10?m.yellow:m.red}function Em(i,o){if(!i||i.status==="unsupported")return null;if(i.status==="error")return{text:`\uD83D\uDCB0 ${i.hint||(o?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")}`,color:m.muted};if(i.provider==="tako"){if(!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit)){let t=i.daily??i.primary??i.secondary;if(!t)return null;return{text:`\uD83D\uDCB0 ${o?"\u4ECA\u65E5":"Today"}: $${(t.costUsed??0).toFixed(2)}`,color:m.green}}}let n=(r,t,c)=>{if(r&&r>=1440)return`${Math.round(r/1440)}d`;if(r)return`${Math.round(r/60)}h`;return c?`${c}d`:`${t}h`},d=(r)=>Math.max(0,Math.min(100,100-Math.round(r))),u=[];if(i.primary)u.push(`${n(i.primary.windowMinutes,5)} ${o?"\u5269":"left"} ${d(i.primary.usedPct)}%`);if(i.secondary)u.push(`${n(i.secondary.windowMinutes,24,7)} ${o?"\u5269":"left"} ${d(i.secondary.usedPct)}%`);if(i.modelLimits?.opus)u.push(`opus ${o?"\u5269":"left"} ${d(i.modelLimits.opus.usedPct)}%`);if(!u.length)return null;let e=Math.min(...[i.primary,i.secondary,i.modelLimits?.opus].filter(Boolean).map((r)=>d(r.usedPct)));return{text:`\uD83D\uDCB0 ${u.join(" \xB7 ")}`,color:_m(e)}}function St(i,o){let n=o.clients[o.clientIdx];if(!n)return;let d=Po[n.client.id]||Co,u=co(n.launchOptions,o.zh),e=n.activeProvider?.name||(o.zh?"\u672A\u914D\u7F6E":"Not set"),r=i.terminalHeight<26,c=`${`${o.zh?"\u670D\u52A1\u5546":"Provider"}: ${e}`} \xB7 tako ${mu}`,{root:p,panel:a}=ei(i,o,"Tako Launcher",d.color,r?{text:c,color:n.activeProvider?m.orange:m.yellow}:void 0,r);if(Vm(i,a,o.zh?"\u591A\u5BA2\u6237\u7AEF AI \u542F\u52A8\u5668":"Multi-client AI launcher",d.color),!r){let f=P(i,{flexDirection:"row",gap:1,justifyContent:"space-between"}),L=P(i,{flexDirection:"row",gap:1});Tm(i,L,o),f.add(L);let M=Em(o.quota,o.zh);if(M)b(f,i,M.text,{fg:M.color,truncate:!0});a.add(f)}let l=P(i,{flexDirection:"row",flexWrap:"wrap",gap:1,justifyContent:"center"}),x=o.focus==="tabs";o.clients.forEach((f,L)=>{let M=Po[f.client.id]||Co,g=L===o.clientIdx,O=P(i,{border:!0,borderStyle:g&&x?"heavy":"single",borderColor:g?M.color:m.border,paddingX:1,height:3,backgroundColor:g&&x?m.panelMuted:m.panel});b(O,i,`${g&&x?"> ":""}${L+1} ${M.icon} ${f.client.name}`,{fg:g?M.color:m.muted,attributes:g?B.BOLD:B.NONE}),l.add(O)}),a.add(l);let w=P(i,{flexDirection:"row",gap:2,flexGrow:r?1:0}),y=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:o.focus==="projects"?d.color:m.border,title:o.zh?"\u9879\u76EE":"Projects",titleColor:o.focus==="projects"?d.color:m.muted,paddingX:1,paddingY:1,width:"58%"});ai(i,y,n.projects.map((f,L)=>({primary:f.label,secondary:f.hint,focused:o.focus==="projects"&&L===o.projectIdx,color:d.color})));let v=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:o.focus==="options"?d.color:m.border,title:o.zh?"\u542F\u52A8\u9009\u9879":"Options",titleColor:o.focus==="options"?d.color:m.muted,paddingX:1,paddingY:1,flexGrow:1});ai(i,v,u.map((f,L)=>{let M=o.focus==="options"&&L===o.optionIdx;if(f.kind==="flag"){let g=n.enabled.has(f.opt.id);return{primary:f.opt.label[o.zh?"zh":"en"]||f.opt.label.en,secondary:M?f.opt.flag:void 0,focused:M,marker:g?"[x]":"[ ]",color:g?d.color:m.muted}}if(f.kind==="group"){let g=Ei(n.launchOptions,n.enabled,f.group);return{primary:`${f.title}: ${g?.shortLabel||(o.zh?"\u9ED8\u8BA4":"Default")}`,secondary:M?o.zh?"Enter \u9009\u62E9":"Enter to pick":void 0,focused:M,marker:">",color:d.color}}return{primary:`${f.title}: ${e}`,secondary:M?o.zh?"Enter \u7BA1\u7406":"Enter to manage":void 0,focused:M,marker:"*",color:n.activeProvider?d.color:m.yellow}})),w.add(y),w.add(v),a.add(w);let h=o.focus==="tabs"?["\u2190\u2192",o.zh?"\u5207\u5BA2\u6237\u7AEF":"switch client"]:o.focus==="projects"?["\u2192",o.zh?"\u53BB\u9009\u9879":"to options"]:["\u2190",o.zh?"\u53BB\u9879\u76EE":"to projects"];T(i,p,[["Enter",o.zh?"\u542F\u52A8":"launch"],h,["\u2191\u2193",o.zh?"\u9009\u62E9":"move"],["Space",o.zh?"\u5207\u6362\u9009\u9879":"toggle"],["p",o.zh?"\u670D\u52A1\u5546":"providers"],["c","config"],["s","stats"],["a","agents"],["q",o.zh?"\u9000\u51FA":"quit"]]),Z(i,o,p)}function Um(i,o){let n=o.clients[o.clientIdx],d=o.optionPickerGroup;if(!n||!d){St(i,o);return}let u=n.launchOptions.filter((L)=>L.group===d),e=(Po[n.client.id]||Co).color,r=d==="model"?o.zh?"\u9009\u62E9\u6A21\u578B":"Pick Model":o.zh?"\u9009\u62E9\u9009\u9879":"Pick Option",t=Ei(n.launchOptions,n.enabled,d),c=d==="model";if(c&&o.modelPickerMode==="grid"){Dm(i,o,n,u,e,r);return}let p=c?Ro(u,n.enabled,o.pickCounts):{list:u,hiddenCount:0},a=[{id:"",primary:o.zh?"\u9ED8\u8BA4":"Default",secondary:t?"":o.zh?"\u5F53\u524D":"current"},...p.list.map((L)=>({id:L.id,primary:L.shortLabel||L.label[o.zh?"zh":"en"]||L.label.en,secondary:n.enabled.has(L.id)?o.zh?"\u5F53\u524D":"current":L.flag})),...p.hiddenCount>0?[{id:"__show_all__",primary:o.zh?`\u663E\u793A\u5168\u90E8 (${p.hiddenCount})`:`Show all (${p.hiddenCount})`,secondary:">"}]:[]],l=a.length;o.optionPickerIdx=Math.max(0,Math.min(o.optionPickerIdx,l-1));let x=Math.max(5,Math.min(14,i.terminalHeight-10)),w=Math.max(0,Math.min(o.optionPickerIdx-Math.floor(x/2),Math.max(0,l-x))),y=a.slice(w,w+x),v=P(i,{flexDirection:"column",width:"100%",...su(i),backgroundColor:m.bg,justifyContent:"center",alignItems:"center",paddingX:2}),h=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:e,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:1,width:"70%"}),f=P(i,{flexDirection:"row",justifyContent:"space-between"});b(f,i,r,{fg:e,attributes:B.BOLD}),b(f,i,`${o.optionPickerIdx+1}/${l}`,{fg:m.muted}),h.add(f),ai(i,h,y.map((L,M)=>{let g=w+M;return{primary:L.primary,secondary:L.secondary,focused:g===o.optionPickerIdx,marker:L.id&&n.enabled.has(L.id)?"[x]":" ",color:e}})),b(h,i,o.zh?"Esc \u8FD4\u56DE\uFF0C\u4E0D\u4FEE\u6539\u5F53\u524D\u9009\u62E9":"Esc returns without changing the current selection",{fg:m.muted,truncate:!0}),v.add(h),T(i,v,[["Enter",o.zh?"\u786E\u8BA4":"confirm"],["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,v)}function Dm(i,o,n,d,u,e){let r=d.map((h)=>h.id),t=new Map(d.map((h)=>[h.id,h])),c=(h)=>{let f=t.get(h);return f?.shortLabel||f?.label[o.zh?"zh":"en"]||f?.label.en||h},p=Bo(d,i.terminalWidth||80,o.zh),a=Yo(r,p),l=Math.max(1,a.flat.length);o.optionPickerIdx=Math.max(0,Math.min(o.optionPickerIdx,l-1));let x=Math.max(Lu,...r.length>0?r.map((h)=>Ln(c(h))+3):[0]),w=P(i,{flexDirection:"column",width:"100%",...su(i),backgroundColor:m.bg,justifyContent:"center",alignItems:"center",paddingX:2}),y=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:u,backgroundColor:m.panel,paddingX:2,paddingY:1,gap:0,width:"78%"}),v=P(i,{flexDirection:"row",justifyContent:"space-between",marginBottom:1});b(v,i,e,{fg:u,attributes:B.BOLD}),b(v,i,`${o.optionPickerIdx+1}/${a.flat.length}`,{fg:m.muted}),y.add(v),a.groups.forEach((h,f)=>{if(f>0)b(y,i,"-".repeat(Math.max(8,x*p)),{fg:m.border});h.rows.forEach((L)=>{let M=P(i,{flexDirection:"row",gap:1,height:1});L.forEach((g)=>{let li=a.flat.indexOf(g)===o.optionPickerIdx,mo=n.enabled.has(g),Xo=`${li?">":" "}${Nt(c(g),x)}${mo?"*":" "}`;b(M,i,Xo,{fg:li?u:mo?m.green:m.text,attributes:li?B.BOLD:B.NONE})}),y.add(M)})}),w.add(y),T(i,w,[["Enter",o.zh?"\u786E\u8BA4":"confirm"],["arrows",o.zh?"\u9009\u62E9":"select"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,w)}function jm(i,o){let d=o.clients[o.providerTabIdx]?.client,u=d?o.providers.filter((w)=>Hi(w,d.id)):[],e=d?o.clientBindings[d.id]||o.defaultProviderId:o.defaultProviderId,r=u.length+4;o.providerRowIdx=Math.max(0,Math.min(o.providerRowIdx,Math.max(0,r-1)));let t=d?(Po[d.id]||Co).color:m.orange,{root:c,panel:p}=ei(i,o,o.zh?"\u670D\u52A1\u5546\u7BA1\u7406":"Providers",t),a=P(i,{flexDirection:"row",gap:1,justifyContent:"center"});o.clients.forEach((w,y)=>{let v=Po[w.client.id]||Co,h=y===o.providerTabIdx,f=P(i,{border:!0,borderStyle:h?"heavy":"single",borderColor:h?v.color:m.border,paddingX:1,height:3});b(f,i,`${y+1} ${w.client.name}`,{fg:h?v.color:m.muted,attributes:h?B.BOLD:B.NONE}),a.add(f)}),p.add(a);let l=[...u.map((w)=>({primary:w.name,secondary:[oo[w.type]?.[o.zh?"zh":"en"]||w.type,w.id===e?o.zh?"\u5F53\u524D":"bound":"",w.id===o.defaultProviderId?o.zh?"\u9ED8\u8BA4":"default":""].filter(Boolean).join(" "),marker:w.id===e?"*":" "})),{primary:o.zh?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add provider",secondary:"",marker:"+"},{primary:o.zh?"\u626B\u63CF\u672C\u5730\u8BA2\u9605":"Scan local subscriptions",secondary:"",marker:"?"},{primary:o.zh?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client versions",secondary:"",marker:"V"},{primary:o.zh?"\u8FD4\u56DE":"Back",secondary:"",marker:"<"}],x=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:t,paddingX:1,paddingY:1});ai(i,x,l.map((w,y)=>({...w,focused:y===o.providerRowIdx,color:t}))),p.add(x),T(i,c,[["Enter",o.zh?"\u7ED1\u5B9A/\u6253\u5F00":"bind/open"],["d/e",o.zh?"\u8BE6\u60C5":"detail"],["arrows",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,c)}function i1(i,o){let n=bn(o),{root:d,panel:u}=ei(i,o,o.zh?"\u670D\u52A1\u5546\u8BE6\u60C5":"Provider Detail",m.orange);if(!n)b(u,i,o.zh?"\u670D\u52A1\u5546\u4E0D\u5B58\u5728":"Provider not found",{fg:m.red});else{let e=[["Name",n.name],["Type",oo[n.type]?.[o.zh?"zh":"en"]||n.type],["Base URL",n.baseUrl||"-"],["Model",n.model||"-"],["Email",n.email||"-"],["Builtin",n.builtin?"yes":"no"]];for(let[t,c]of e)b(u,i,`${t}: ${c}`,{fg:m.text,truncate:!0});let r=N0(n,o);ai(i,u,r.map((t,c)=>({primary:ht(t,o.zh),focused:c===o.providerDetailIdx,marker:c===o.providerDetailIdx?">":" ",color:m.orange})))}T(i,d,[["Enter",o.zh?"\u6267\u884C":"run"],["arrows",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,d)}function o1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider",m.orange);ai(i,d,Qo.map((u,e)=>({primary:oo[u]?.[o.zh?"zh":"en"]||u,secondary:u==="claude-subscription"||u==="codex-subscription"?o.zh?"\u767B\u5F55\u6388\u6743":"login auth":u==="custom"?o.zh?"\u81EA\u5B9A\u4E49 URL":"custom URL":"",focused:e===o.providerRowIdx,marker:"+",color:m.orange}))),T(i,n,[["Enter",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function n1(i,o){let n={"add-key":o.zh?"\u8F93\u5165 API Key":"Enter API key","add-url":o.zh?"\u8F93\u5165 Base URL":"Enter base URL","add-model":o.zh?"\u9009\u62E9/\u8F93\u5165\u6A21\u578B":"Select/enter model","add-ctx":o.zh?"\u8F93\u5165\u4E0A\u4E0B\u6587\u7A97\u53E3 token \u6570":"Enter context window tokens",rekey:o.zh?"\u66F4\u65B0 API Key":"Update API key"},{root:d,panel:u}=ei(i,o,n[o.providerInputMode],m.orange),e=o.providerInputMode==="add-model"?Eo(o.addType):void 0;if(e)ai(i,u,e.map((r,t)=>({primary:r,focused:t===o.providerRowIdx,marker:t===o.providerRowIdx?">":" ",color:m.orange})));else{let r=o.providerInputMode==="add-key"||o.providerInputMode==="rekey"?yu(o.addKey):o.providerInputMode==="add-url"?o.addUrl:o.providerInputMode==="add-model"?o.addModel:o.addCtx;b(u,i,`> ${r}_`,{fg:m.text,truncate:!0})}T(i,d,[["Enter",o.zh?"\u7EE7\u7EED":"continue"],["Backspace",o.zh?"\u5220\u9664":"delete"],["q/Esc",o.zh?"\u53D6\u6D88":"cancel"]]),Z(i,o,d)}function d1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"\u7528\u91CF\u7EDF\u8BA1":"Usage Stats",m.green);if(o.statsLoading)b(d,i,o.zh?"\u6B63\u5728\u83B7\u53D6...":"Loading...",{fg:m.yellow});else if(o.statsError)b(d,i,`${o.zh?"\u83B7\u53D6\u5931\u8D25":"Failed"}: ${o.statsError}`,{fg:m.red});else if(o.statsData){if(b(d,i,`${o.zh?"\u603B\u8C03\u7528\u6B21\u6570":"Total requests"}: ${Wt(o.statsData.totalRequests)}`),b(d,i,`${o.zh?"\u603B\u6D88\u8D39":"Total cost"}: ${o.statsData.totalCost}`),b(d,i,`${o.zh?"\u4ECA\u65E5\u6D88\u8D39":"Today"}: ${o.statsData.todayCost}`),o.statsData.modelStats.length>0){b(d,i,o.zh?"\u6A21\u578B\u5206\u5E03:":"Models:",{fg:m.muted});for(let u of o.statsData.modelStats.slice(0,12))b(d,i,`${u.model.padEnd(28)} ${String(u.requests).padStart(6)} ${u.cost}`,{fg:m.muted,truncate:!0})}}else b(d,i,o.zh?"\u6682\u65E0\u6570\u636E":"No data",{fg:m.muted});T(i,n,[["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function u1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"\u914D\u7F6E API Key":"Configure API key",m.orange);if(b(d,i,`> ${yu(o.apiKeyValue)}_`,{truncate:!0}),o.apiKeyStatus==="validating")b(d,i,o.zh?"\u6B63\u5728\u9A8C\u8BC1...":"Validating...",{fg:m.yellow});if(o.apiKeyStatus==="success")b(d,i,o.zh?"\u914D\u7F6E\u6210\u529F":"Configured",{fg:m.green});if(o.apiKeyStatus==="error")b(d,i,o.apiKeyError||"Error",{fg:m.red});T(i,n,[["Enter",o.zh?"\u4FDD\u5B58":"save"],["Backspace",o.zh?"\u5220\u9664":"delete"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function e1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"\u5207\u6362\u8BED\u8A00":"Language",m.magenta);ai(i,d,_i.map((u,e)=>({primary:u.label,secondary:u.value===Ci()?o.zh?"\u5F53\u524D":"current":"",focused:e===o.languageIdx,marker:e===o.languageIdx?">":" ",color:m.magenta}))),T(i,n,[["Enter",o.zh?"\u9009\u62E9":"select"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function r1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"Agent \u4F1A\u8BDD":"Agent Sessions",m.blue);if(b(d,i,`${o.zh?"\u9ED8\u8BA4 Provider":"Defaults"}: ${Object.keys(o.agentDefaults).length===0?"-":Object.entries(o.agentDefaults).map(([u,e])=>`${u}=${e.slice(0,8)}`).join(" ")}`,{fg:m.muted,truncate:!0}),!o.agentSessions)b(d,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow});else if(o.agentSessions.length===0)b(d,i,o.zh?"\u6682\u65E0 session\uFF0C\u6309 n \u65B0\u5EFA":"No sessions, press n to create",{fg:m.muted});else ai(i,d,o.agentSessions.map((u,e)=>({primary:`${u.sid.slice(0,8)} ${u.backend.padEnd(6)} ${(u.name||"").slice(0,18).padEnd(18)} ${u.status}`,secondary:`${u.turnCount} turns ${vu(Date.now()-u.lastActiveAt)}`,focused:e===o.agentIdx,marker:bt(u.status),color:fu(u.status)})));if(o.agentError)b(d,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});T(i,n,[["Enter/o",o.zh?"\u8BE6\u60C5":"open"],["n",o.zh?"\u65B0\u5EFA":"new"],["d",o.zh?"\u5173\u95ED":"close"],["x",o.zh?"\u5220\u9664":"purge"],["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,n)}function t1(i){let o=new Date(i.ts).toISOString().slice(11,19);switch(i.kind){case"session_started":return{text:`[${o}] session_started ${i.backend}${i.model?` ${i.model}`:""}`,dim:!0};case"turn_started":return{text:`[${o}] turn_started`,color:m.cyan};case"text_delta":return{text:i.text};case"reasoning_delta":return{text:`[${o}] reasoning ${i.text}`,dim:!0};case"tool_use":return{text:`[${o}] tool ${i.name} ${JSON.stringify(i.input)}`,color:m.yellow};case"tool_result":return{text:`[${o}] result ${JSON.stringify(i.output)}`,color:m.green};case"approval_required":return{text:`[${o}] approval ${i.approvalType} ${String(i.approvalId)}`,color:m.magenta};case"turn_completed":return{text:`[${o}] turn_completed${i.stopReason?` ${i.stopReason}`:""}`,color:m.cyan};case"error":return{text:`[${o}] error ${i.message}`,color:m.red};case"session_closed":return{text:`[${o}] session_closed`,dim:!0}}}function c1(i,o){let n=o.agentDetailMeta,{root:d,panel:u}=ei(i,o,o.zh?"Agent \u8BE6\u60C5":"Agent Detail",m.blue);if(!n){b(u,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow}),Z(i,o,d);return}if(b(u,i,`${n.sid.slice(0,8)} ${n.backend} ${n.name} ${n.status}${o.agentDetailAlive===!1?" dead":""}`,{fg:fu(n.status),attributes:B.BOLD,truncate:!0}),b(u,i,`${o.zh?"\u5DE5\u4F5C\u76EE\u5F55":"cwd"}: ${n.workdir}`,{fg:m.muted,truncate:!0}),b(u,i,`${o.zh?"\u6A21\u578B":"model"}: ${n.model||"-"} turns=${n.turnCount} ${o.zh?"\u6700\u8FD1":"last"}=${vu(Date.now()-n.lastActiveAt)}`,{fg:m.muted,truncate:!0}),o.agentPendingApprovals.length>0){let c=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:m.magenta,paddingX:1});b(c,i,`${o.agentPendingApprovals.length} ${o.zh?"\u4E2A\u5F85\u5BA1\u6279":"pending approvals"}`,{fg:m.magenta,attributes:B.BOLD});for(let p of o.agentPendingApprovals.slice(0,3))b(c,i,`${p.approvalType} ${p.approvalId.slice(0,12)} ${JSON.stringify(p.params)}`,{fg:m.muted,truncate:!0});u.add(c)}let e=P(i,{flexDirection:"column",border:!0,borderStyle:"rounded",borderColor:m.border,paddingX:1,title:o.zh?"\u65E5\u5FD7":"Log",titleColor:m.muted}),r=o.agentDetailFrames.slice(-Math.max(6,Math.min(18,i.terminalHeight-14)));if(r.length===0)b(e,i,o.zh?"\u6682\u65E0\u65E5\u5FD7":"No log yet",{fg:m.muted});else for(let c of r){let p=t1(c);b(e,i,p.text.replace(/\s+/g," ").slice(0,240),{fg:p.color||(p.dim?m.muted:m.text),truncate:!0})}if(u.add(e),o.agentError)b(u,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});let t=o.agentDetailStatus==="sending"?"... ":o.agentDetailStatus==="cancelling"?"x ":"> ";b(u,i,`${t}${o.agentDetailInput}_`,{fg:o.agentDetailStatus==="idle"?m.text:m.yellow,truncate:!0}),T(i,d,[["Enter",o.zh?"\u53D1\u9001":"send"],["Ctrl-Y/N",o.zh?"\u6279/\u62D2":"approve/deny"],["r",o.zh?"\u5237\u65B0":"refresh"],["Ctrl-C",o.zh?"\u53D6\u6D88":"cancel"],["Esc/q",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,d)}function p1(i,o){let{root:n,panel:d}=ei(i,o,o.zh?"\u65B0\u5EFA Agent Session":"New Agent Session",m.blue),u=[{id:"backend",label:`${o.zh?"\u540E\u7AEF":"Backend"}: ${o.agentBackend==="claude"?"[claude] codex":"claude [codex]"}`},{id:"model",label:`${o.zh?"\u6A21\u578B":"Model"}: ${o.agentModel||(o.zh?"\u9ED8\u8BA4":"default")}`},{id:"name",label:`${o.zh?"\u540D\u79F0":"Name"}: ${o.agentName||(o.zh?"\u81EA\u52A8":"auto")}`}];if(ai(i,d,u.map((e)=>({primary:e.label+(o.agentField===e.id&&e.id!=="backend"?"_":""),focused:o.agentField===e.id,marker:o.agentField===e.id?">":" ",color:m.blue}))),o.agentError)b(d,i,`! ${o.agentError}`,{fg:m.red,truncate:!0});T(i,n,[["Tab/arrows",o.zh?"\u5207\u5B57\u6BB5":"field"],["Space",o.zh?"\u5207\u540E\u7AEF":"backend"],["Enter",o.zh?"\u521B\u5EFA":"create"],["q/Esc",o.zh?"\u53D6\u6D88":"cancel"]]),Z(i,o,n)}var a1=[{id:"configure",label:{zh:"\u73B0\u5728\u914D\u7F6E",en:"Configure now"},hint:{zh:"\u8F93\u5165\u4F60\u7684 Tako API Key",en:"Enter your Tako API Key"},color:m.cyan},{id:"skip",label:{zh:"\u7A0D\u540E\u518D\u8BF4",en:"Not now"},hint:{zh:"\u660E\u5929\u518D\u63D0\u9192\u6211",en:"Remind me tomorrow"},color:m.text},{id:"never",label:{zh:"\u4E0D\u518D\u63D0\u793A",en:"Don't ask again"},hint:{zh:"\u4E4B\u540E\u53EF\u4EE5\u6309 c \u968F\u65F6\u914D\u7F6E",en:"You can configure later via c"},color:m.text}];function l1(i,o){let{root:n,panel:d}=ei(i,o,`\uD83D\uDD11 ${o.zh?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"}`,m.cyan);b(d,i,o.zh?"\u914D\u7F6E API Key \u540E\u5373\u53EF\u4F7F\u7528 Tako \u4EE3\u7406\u670D\u52A1\uFF0C\u83B7\u5F97\u7EDF\u4E00\u7684\u914D\u989D\u7BA1\u7406\u548C\u66F4\u5FEB\u7684\u8BBF\u95EE\u901F\u5EA6\u3002":"Configure your API Key to use Tako proxy service with unified quota and faster access.",{fg:m.muted}),b(d,i,o.zh?"\u4F60\u4E5F\u53EF\u4EE5\u8DF3\u8FC7\u6B64\u6B65\u9AA4\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5546\u3002":"You can skip this and use other providers instead.",{fg:m.muted}),ai(i,d,a1.map((u,e)=>({primary:o.zh?u.label.zh:u.label.en,secondary:e===o.keyGuideIdx?o.zh?u.hint.zh:u.hint.en:void 0,focused:e===o.keyGuideIdx,marker:e===o.keyGuideIdx?">":" ",color:u.color}))),T(i,n,[["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Enter",o.zh?"\u786E\u8BA4":"confirm"],["Esc",o.zh?"\u8DF3\u8FC7":"skip"]]),Z(i,o,n)}var Gt={"claude-code":{icon:"\u2726",color:m.yellow},codex:{icon:"\u25C8",color:m.blue},gemini:{icon:"\u25C6",color:m.cyan}};function m1(i,o){let n=o.clients[o.clientVersionsClientIdx],d=Gt[n?.client.id||""]?.color||m.gray,{root:u,panel:e}=ei(i,o,`\uD83D\uDCE6 ${o.zh?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"}`,d,void 0,!0),r=P(i,{flexDirection:"row",flexWrap:"wrap",gap:1,justifyContent:"center"});if(o.clients.forEach((t,c)=>{let p=Gt[t.client.id]||{icon:"\u25AA",color:m.gray},a=c===o.clientVersionsClientIdx,l=P(i,{border:!0,borderStyle:a?"heavy":"single",borderColor:a?p.color:m.border,paddingX:2});b(l,i,`${p.icon} ${t.client.name}`,{fg:a?p.color:m.muted,attributes:a?B.BOLD:B.NONE}),r.add(l)}),e.add(r),o.clientVersionsLoading)b(e,i,o.zh?"\u52A0\u8F7D\u4E2D...":"Loading...",{fg:m.yellow});else if(o.clientVersionsError)b(e,i,`${o.zh?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: "}${o.clientVersionsError}`,{fg:m.red,truncate:!0});else if(o.clientVersions.length===0)b(e,i,o.zh?"\u6682\u65E0\u7248\u672C":"No versions",{fg:m.muted});else{let t=o.clientVersions.find((l)=>l.isCurrent)?.version??(o.zh?"\u672A\u5B89\u88C5":"not installed");b(e,i,`${o.zh?"\u5171":""} ${o.clientVersions.length} ${o.zh?"\u4E2A\u7248\u672C\uFF0C\u5F53\u524D\uFF1A":"versions, current: "}${t}`,{fg:m.muted,truncate:!0});let c=12,p=Math.max(0,Math.min(o.clientVersionsIdx-c+1,o.clientVersions.length-c)),a=o.clientVersions.slice(Math.max(0,p),Math.max(0,p)+c);ai(i,e,a.map((l,x)=>{let w=Math.max(0,p)+x,y=l.publishedAt?l.publishedAt.slice(0,10):"";return{primary:`${l.version.padEnd(16)}${y}${l.isCurrent?o.zh?" \u2605 \u5F53\u524D":" \u2605 current":""}`,focused:w===o.clientVersionsIdx,marker:w===o.clientVersionsIdx?">":" ",color:l.isCurrent?m.green:d}}))}T(i,u,[["\u2190\u2192",o.zh?"\u5207\u6362\u5DE5\u5177":"switch"],["\u2191\u2193",o.zh?"\u9009\u62E9":"select"],["Enter",o.zh?"\u5B89\u88C5":"install"],["r",o.zh?"\u5237\u65B0":"refresh"],["q/Esc",o.zh?"\u8FD4\u56DE":"back"]]),Z(i,o,u)}Ao();ti();Si();qo();L0();Ao();y0();Ti();wi();function y1(i,o,n){let d=i.clients[i.clientIdx];if(!d)return;let u=d.launchOptions.filter((c)=>c.group===o);if(u.length===0)return;let e=Ei(d.launchOptions,d.enabled,o),r=o==="model"?Wu(u,i.pickCounts):"collapsed",t=0;if(e)if(o==="model"&&r==="grid"){let c=u.map((a)=>a.id),p=Bo(u,n,i.zh);t=Nu(c,e.id,p)}else t=(o==="model"?Ro(u,d.enabled,i.pickCounts).list:u).findIndex((p)=>p.id===e.id)+1;i.optionPickerGroup=o,i.optionPickerIdx=Math.max(0,t),i.modelPickerMode=r,i.screen="option-picker"}function Qt(i,o,n,d,u){let e=o.clients[o.clientIdx];if(!e)return;let r=co(e.launchOptions,o.zh),t=i.name,c=F(i);if(t==="q"||t==="escape"){d({type:"exit"});return}if(c&&t==="a"){u(()=>Li(o));return}if(c&&t==="p"){u(()=>ao(o));return}if(c&&t==="s"){u(()=>Wn(o));return}if(c&&t==="c"){o.screen="config",o.apiKeyValue="",o.apiKeyStatus="idle",o.apiKeyError=void 0,z(n,o);return}if(c&&t==="l"){o.screen="language",z(n,o);return}let p=Number.parseInt(t,10);if(c&&p>=1&&p<=o.clients.length){o.clientIdx=p-1,hn(o),z(n,o);return}if(t==="tab"){if(i.shift)o.clientIdx=o.clientIdx>0?o.clientIdx-1:o.clients.length-1;else o.clientIdx=o.clientIdx<o.clients.length-1?o.clientIdx+1:0;hn(o),z(n,o);return}if(t==="left"){if(o.focus==="tabs")o.clientIdx=o.clientIdx>0?o.clientIdx-1:o.clients.length-1,hn(o);else if(o.focus==="options")o.focus="projects",o.projectIdx=Math.min(o.projectIdx,e.projects.length-1);z(n,o);return}if(t==="right"){if(o.focus==="tabs")o.clientIdx=o.clientIdx<o.clients.length-1?o.clientIdx+1:0,hn(o);else if(o.focus==="projects"&&r.length>0)o.focus="options",o.optionIdx=Math.min(o.optionIdx,r.length-1);z(n,o);return}if(t==="down"){if(o.focus==="tabs")o.focus="projects";else if(o.focus==="projects"){if(o.projectIdx<e.projects.length-1)o.projectIdx+=1}else if(o.optionIdx<r.length-1)o.optionIdx+=1;z(n,o);return}if(t==="up"){if(o.focus==="options")if(o.optionIdx>0)o.optionIdx-=1;else o.focus="tabs";else if(o.focus==="projects")if(o.projectIdx>0)o.projectIdx-=1;else o.focus="tabs";z(n,o);return}if((t==="space"||t==="return")&&o.focus==="options"){let a=r[o.optionIdx];if(a?.kind==="provider"){u(()=>ao(o));return}if(a?.kind==="flag"){if(e.enabled.has(a.opt.id))e.enabled.delete(a.opt.id);else e.enabled.add(a.opt.id);z(n,o);return}if(a?.kind==="group"){y1(o,a.group,n.terminalWidth||80),z(n,o);return}}if(t==="return"){let a=e.projects[o.projectIdx],l=xu(e);d({type:"launch",clientId:e.client.id,projectPath:a?.path,...l})}}function qt(i,o,n){let d=o.clients[o.clientIdx],u=o.optionPickerGroup;if(!d||!u){o.screen="launcher",z(n,o);return}let e=d.launchOptions.filter((a)=>a.group===u),r=u==="model",t=i.name;if(r&&o.modelPickerMode==="grid"){let a=e.map((v)=>v.id),l=Bo(e,n.terminalWidth||80,o.zh),x=Yo(a,l),w=$t(a,l),y=x.flat.length;if(t==="escape"){if(Wu(e,o.pickCounts)==="grid")o.screen="launcher",o.modelPickerMode="collapsed";else{o.modelPickerMode="collapsed";let v=Ei(d.launchOptions,d.enabled,u),h=Ro(e,d.enabled,o.pickCounts).list;o.optionPickerIdx=v?Math.max(0,h.findIndex((f)=>f.id===v.id)+1):0}z(n,o);return}if(F(i)&&t==="q"){o.screen="launcher",o.modelPickerMode="collapsed",z(n,o);return}if(y===0)return;if(t==="left"){o.optionPickerIdx=o.optionPickerIdx>0?o.optionPickerIdx-1:y-1,z(n,o);return}if(t==="right"){o.optionPickerIdx=o.optionPickerIdx<y-1?o.optionPickerIdx+1:0,z(n,o);return}if(t==="up"||t==="down"){let v=0,h=0,f=0;for(let g=0;g<w.length;g++){let O=w[g].length;if(o.optionPickerIdx<f+O){v=g,h=o.optionPickerIdx-f;break}f+=O}let L=t==="up"?v>0?v-1:w.length-1:v<w.length-1?v+1:0,M=Math.min(h,w[L].length-1);o.optionPickerIdx=w.slice(0,L).reduce((g,O)=>g+O.length,0)+M,z(n,o);return}if(t==="return"||t==="space"){let v=x.flat[o.optionPickerIdx];for(let h of e)d.enabled.delete(h.id);if(v)d.enabled.add(v);o.screen="launcher",o.modelPickerMode="collapsed",z(n,o)}return}let c=r?Ro(e,d.enabled,o.pickCounts):{list:e,hiddenCount:0},p=c.list.length+1+(c.hiddenCount>0?1:0);if(t==="escape"||F(i)&&t==="q"){o.screen="launcher",o.modelPickerMode="collapsed",z(n,o);return}if(t==="up"){o.optionPickerIdx=o.optionPickerIdx>0?o.optionPickerIdx-1:p-1,z(n,o);return}if(t==="down"){o.optionPickerIdx=o.optionPickerIdx<p-1?o.optionPickerIdx+1:0,z(n,o);return}if(t==="return"||t==="space"){if(o.optionPickerIdx===0)for(let a of e)d.enabled.delete(a.id);else if(r&&c.hiddenCount>0&&o.optionPickerIdx===c.list.length+1){let a=Ei(d.launchOptions,d.enabled,u),l=e.map((w)=>w.id),x=Bo(e,n.terminalWidth||80,o.zh);o.optionPickerIdx=a?Math.max(0,Nu(l,a.id,x)):0,o.modelPickerMode="grid",z(n,o);return}else{for(let l of e)d.enabled.delete(l.id);let a=c.list[o.optionPickerIdx-1];if(a)d.enabled.add(a.id)}o.screen="launcher",o.modelPickerMode="collapsed",z(n,o)}}function It(i,o,n,d){let u=o.clients[o.providerTabIdx]?.client,e=u?o.providers.filter((p)=>Hi(p,u.id)):[],r=e.length+4,t=i.name,c=F(i);if(t==="left")o.providerTabIdx=o.providerTabIdx>0?o.providerTabIdx-1:o.clients.length-1;else if(t==="right")o.providerTabIdx=o.providerTabIdx<o.clients.length-1?o.providerTabIdx+1:0;else if(t==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:r-1;else if(t==="down")o.providerRowIdx=o.providerRowIdx<r-1?o.providerRowIdx+1:0;else if(c&&(t==="d"||t==="e")&&o.providerRowIdx<e.length)o.providerSelectedId=e[o.providerRowIdx].id,o.providerDetailIdx=0,o.screen="provider-detail";else if(t==="return"){if(o.providerRowIdx<e.length&&u){let p=e[o.providerRowIdx];d(async()=>{await td(u.id,p.id);let a;if(u.setupConfigFiles)try{await u.setupConfigFiles(E(p))}catch(l){a=l instanceof Error?l.message:String(l)}if(await Ri(o),await bi(o),o.clientIdx=o.clients.findIndex((l)=>l.client.id===u.id),o.clientIdx<0)o.clientIdx=0;Yi(o),o.message=a?o.zh?`\u670D\u52A1\u5546\u5DF2\u7ED1\u5B9A\uFF0C\u914D\u7F6E\u540C\u6B65\u5931\u8D25\uFF1A${a}`:`Provider bound, config sync failed: ${a}`:o.zh?"\u670D\u52A1\u5546\u5DF2\u7ED1\u5B9A":"Provider bound"});return}if(o.providerRowIdx===e.length)o.screen="provider-add-type",o.providerRowIdx=0;else if(o.providerRowIdx===e.length+1){d(async()=>{let p=await Uo(),a=await Do(p);if(a>0)U(),H();await Ri(o),await bi(o),o.message=o.zh?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${a} \u4E2A`:`Scan complete, ${a} added`});return}else if(o.providerRowIdx===e.length+2){d(()=>Gu(o));return}else Yi(o)}z(n,o)}function Ot(i,o,n,d,u){let e=bn(o);if(!e){o.screen="providers",z(n,o);return}let r=N0(e,o);if(i.name==="up"||i.name==="left")o.providerDetailIdx=o.providerDetailIdx>0?o.providerDetailIdx-1:r.length-1;else if(i.name==="down"||i.name==="right")o.providerDetailIdx=o.providerDetailIdx<r.length-1?o.providerDetailIdx+1:0;else if(i.name==="return"){let t=r[o.providerDetailIdx];if(t==="back")o.screen="providers";if(t==="default"){u(async()=>{await rd(e.id),await Ri(o),await bi(o),o.screen="providers",o.message=o.zh?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"});return}if(t==="delete"){u(async()=>{await ed(e.id),await Ri(o),await bi(o),o.screen="providers",o.message=o.zh?"\u5DF2\u5220\u9664":"Deleted"});return}if(t==="rekey")o.addType=e.type,po(o,"rekey");if(t==="relogin"){d({type:"provider-login",tool:e.type==="codex-subscription"?"codex":"claude"});return}}z(n,o)}function Jt(i,o,n,d){if(i.name==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:Qo.length-1;else if(i.name==="down")o.providerRowIdx=o.providerRowIdx<Qo.length-1?o.providerRowIdx+1:0;else if(i.name==="return"){if(o.addType=Qo[o.providerRowIdx],o.addType==="claude-subscription"||o.addType==="codex-subscription"){d({type:"provider-login",tool:o.addType==="codex-subscription"?"codex":"claude"});return}po(o,"add-key")}z(n,o)}function Rt(i,o,n,d){let u=i.name,e=o.providerInputMode==="add-model"?Eo(o.addType):void 0;if(e){if(u==="up")o.providerRowIdx=o.providerRowIdx>0?o.providerRowIdx-1:e.length-1;else if(u==="down")o.providerRowIdx=o.providerRowIdx<e.length-1?o.providerRowIdx+1:0;else if(u==="return"){o.addModel=e[o.providerRowIdx],d(()=>Nn(o));return}z(n,o);return}if(u==="backspace"||u==="delete")Oo(o);else if(u==="return"){if(o.providerInputMode==="rekey"){let r=bn(o);if(!r)return;d(async()=>{await Ki(r.id,{apiKey:o.addKey}),await Ri(o),await bi(o),o.screen="providers",o.message=o.zh?"Key \u5DF2\u66F4\u65B0":"Key updated"});return}if(o.providerInputMode==="add-key"&&o.addKey)if(o.addType==="custom")po(o,"add-url");else po(o,"add-model");else if(o.providerInputMode==="add-url")po(o,"add-model");else if(o.providerInputMode==="add-model"){if(o.addModel.trim())po(o,"add-ctx");else d(()=>Nn(o));return}else if(o.providerInputMode==="add-ctx"){d(()=>Nn(o));return}}else Jo(o,Io(i));z(n,o)}function Bt(i,o,n,d){let u=i.name,e=o.agentSessions||[];if(u==="up")o.agentIdx=o.agentIdx>0?o.agentIdx-1:Math.max(0,e.length-1);else if(u==="down")o.agentIdx=o.agentIdx<e.length-1?o.agentIdx+1:0;else if(F(i)&&u==="r"){d(()=>Li(o));return}else if(F(i)&&u==="n")o.screen="agent-new",o.agentBackend="claude",o.agentModel="",o.agentName="",o.agentField="backend",o.agentError=void 0;else if((u==="return"||F(i)&&u==="o")&&e[o.agentIdx]){d(()=>gu(o,e[o.agentIdx].sid));return}else if(F(i)&&u==="p"){d(async()=>{let r=await x0();await Li(o),o.message=o.zh?`\u5DF2\u6E05\u7406 ${r} \u4E2A session`:`Purged ${r} sessions`});return}else if(F(i)&&(u==="d"||u==="x")&&e[o.agentIdx]){let r=e[o.agentIdx];d(async()=>{await Mo(r.sid,u==="x"),await Li(o),o.message=u==="x"?o.zh?"\u5DF2\u5220\u9664":"Purged":o.zh?"\u5DF2\u5173\u95ED":"Closed"});return}z(n,o)}function Yt(i,o,n,d){let u=i.name,e=o.agentDetailSid;if(!e){d(()=>Li(o));return}if(i.ctrl&&u==="c"){if(o.agentDetailStatus==="sending"){o.agentDetailStatus="cancelling",z(n,o),yn(e).catch((r)=>{o.agentError=r instanceof Error?r.message:String(r)}).finally(()=>{o.agentDetailStatus="idle",Bi(o).finally(()=>z(n,o))});return}d(()=>Li(o));return}if(i.ctrl&&(u==="y"||u==="n")){let r=o.agentPendingApprovals[0];if(!r)return;d(async()=>{await u0(e,r.approvalId,{decision:u==="y"?"allow":"deny",by:"tui",decidedAt:Date.now()}),await Bi(o),o.message=u==="y"?o.zh?"\u5DF2\u6279\u51C6":"Approved":o.zh?"\u5DF2\u62D2\u7EDD":"Denied"});return}if(u==="escape"||F(i)&&u==="q"&&!o.agentDetailInput){d(()=>Li(o));return}if(F(i)&&u==="r"){d(()=>Bi(o));return}if(u==="backspace"||u==="delete"){Oo(o),z(n,o);return}if(u==="return"){let r=o.agentDetailInput.trim();if(!r||o.agentDetailStatus!=="idle")return;o.agentDetailInput="",o.agentDetailStatus="sending",o.agentError=void 0,z(n,o),wn(e,r).catch((t)=>{o.agentError=t instanceof Error?t.message:String(t)}).finally(()=>{o.agentDetailStatus="idle",Bi(o).finally(()=>z(n,o))});return}Jo(o,Io(i)),z(n,o)}function At(i,o,n,d){let u=i.name;if(u==="tab"||u==="down")o.agentField=o.agentField==="backend"?"model":o.agentField==="model"?"name":"backend";else if(u==="up")o.agentField=o.agentField==="backend"?"name":o.agentField==="model"?"backend":"model";else if((u==="space"||u==="left"||u==="right")&&o.agentField==="backend")o.agentBackend=o.agentBackend==="claude"?"codex":"claude";else if(u==="backspace"||u==="delete")Oo(o);else if(u==="return"){d(async()=>{try{let e=await xn({backend:o.agentBackend,model:o.agentModel.trim()||void 0,name:o.agentName.trim()||void 0});await Li(o);let r=o.agentSessions?.findIndex((t)=>t.sid===e.sid)??-1;if(r>=0)o.agentIdx=r;o.message=o.zh?"Session \u5DF2\u521B\u5EFA":"Session created"}catch(e){o.agentError=e instanceof Error?e.message:String(e)}});return}else Jo(o,Io(i));z(n,o)}function Xt(i,o,n,d){let u=i.name,e=F(i);if(u==="left"){o.clientVersionsClientIdx=o.clientVersionsClientIdx>0?o.clientVersionsClientIdx-1:o.clients.length-1,d(()=>lo(o));return}if(u==="right"){o.clientVersionsClientIdx=o.clientVersionsClientIdx<o.clients.length-1?o.clientVersionsClientIdx+1:0,d(()=>lo(o));return}if(e&&u==="r"){d(()=>lo(o));return}let r=o.clientVersions.length-1;if(u==="up")o.clientVersionsIdx=o.clientVersionsIdx>0?o.clientVersionsIdx-1:Math.max(0,r);else if(u==="down")o.clientVersionsIdx=o.clientVersionsIdx<r?o.clientVersionsIdx+1:0;else if(u==="return"){let t=o.clientVersions[o.clientVersionsIdx];if(t&&!t.isCurrent){d(()=>Su(o,t.version));return}}z(n,o)}var v1=["configure","skip","never"];function Ht(i,o,n,d){let u=i.name;if(u==="up")o.keyGuideIdx=o.keyGuideIdx>0?o.keyGuideIdx-1:2;else if(u==="down")o.keyGuideIdx=o.keyGuideIdx<2?o.keyGuideIdx+1:0;else if(u==="escape"){d(async()=>{await s0("skip"),Yi(o)});return}else if(u==="return"){let e=v1[o.keyGuideIdx];if(e==="configure"){o.screen="config",o.apiKeyValue="",o.apiKeyStatus="idle",o.apiKeyError=void 0,z(n,o);return}d(async()=>{await s0(e),Yi(o)});return}z(n,o)}Ao();async function Zt(i={}){let o=await wt();if(i.screen==="providers")await ao(o);if(i.message)o.message=i.message;if(o.screen==="launcher")try{let{shouldShowKeyGuide:d}=await Promise.resolve().then(() => (Ao(),Ct));if(await d())o.screen="key-guide"}catch{}W0();let n=await h1({exitOnCtrlC:!1,clearOnShutdown:!0,useMouse:!0,enableMouseMovement:!1,backgroundColor:m.bg});return new Promise((d)=>{let u=!1,e=!1,r,t=async()=>{await new Promise((y)=>{let v=setTimeout(y,100);v.unref?.(),n.once(f1.DESTROY,()=>{clearTimeout(v),y()}),n.stop(),n.destroy()})},c=(y)=>{if(u)return;if(u=!0,r)clearInterval(r);n.keyInput.off("keypress",l),(async()=>{await t(),await ft(),d(y)})()},p=(y)=>{if(o.busy)return;o.busy=!0,z(n,o),y().catch((v)=>{o.message=`! ${v instanceof Error?v.message:String(v)}`}).finally(()=>{o.busy=!1,z(n,o)})},a=(y)=>{if(n.terminalHeight>=fn)return!1;let v=Math.max(1,n.terminalHeight-2);return o.scrollOffset=Math.max(0,o.scrollOffset+y*v),z(n,o),!0},l=(y)=>{if(y.eventType==="release"||o.busy)return;let v=y.name,h=Io(y),f=F(y);if(v==="pagedown"&&a(1))return;if(v==="pageup"&&a(-1))return;if(o.screen==="agent-detail"){Yt(y,o,n,p);return}if(y.ctrl&&v==="c"){c({type:"exit"});return}if(o.screen==="client-versions"){if(v==="escape"||f&&v==="q"){p(()=>ao(o));return}Xt(y,o,n,p);return}if(o.screen==="key-guide"){Ht(y,o,n,p);return}if(o.screen==="launcher"){Qt(y,o,n,c,p);return}if(o.screen==="option-picker"){qt(y,o,n);return}if(v==="escape"||f&&v==="q"){if(o.screen==="provider-detail"||o.screen==="provider-add-type"||o.screen==="provider-input")o.screen="providers";else if(o.screen==="agent-new")o.screen="agents";else Yi(o);z(n,o);return}if(o.screen==="providers"){It(y,o,n,p);return}if(o.screen==="provider-detail"){Ot(y,o,n,c,p);return}if(o.screen==="provider-add-type"){Jt(y,o,n,c);return}if(o.screen==="provider-input"){Rt(y,o,n,p);return}if(o.screen==="stats"){if(f&&v==="r")p(()=>Wn(o));return}if(o.screen==="config"){if(v==="backspace"||v==="delete")Oo(o);else if(v==="return")p(async()=>{if(!o.apiKeyValue)return;o.apiKeyStatus="validating",z(n,o);let L=await ct(o.apiKeyValue);if(L.success)U(),H(),o.apiKeyStatus="success",await bi(o);else o.apiKeyStatus="error",o.apiKeyError=L.error||"Validation failed"});else Jo(o,h);z(n,o);return}if(o.screen==="language"){if(v==="up")o.languageIdx=o.languageIdx>0?o.languageIdx-1:_i.length-1;if(v==="down")o.languageIdx=o.languageIdx<_i.length-1?o.languageIdx+1:0;if(v==="return"){let L=_i[o.languageIdx];nd(L.value),o.zh=L.value==="zh",o.message=o.zh?"\u8BED\u8A00\u5DF2\u5207\u6362":"Language changed",p(()=>bi(o).then(()=>Yi(o)));return}z(n,o);return}if(o.screen==="agents"){Bt(y,o,n,p);return}if(o.screen==="agent-new")At(y,o,n,p)};n.keyInput.on("keypress",l),n.on("resize",()=>z(n,o));let x=!1,w=()=>{if(u||x||o.screen!=="launcher")return;let y=o.clients[o.clientIdx]?.activeProvider;if((y?`${y.id}:${y.type}`:void 0)===o.quotaKey)return;x=!0,ku(o).catch(()=>{}).finally(()=>{if(x=!1,!u&&o.screen==="launcher")z(n,o)})};r=setInterval(()=>{if(w(),u||e||o.busy||o.screen!=="agent-detail"||!o.agentDetailSid)return;e=!0,Bi(o).catch((y)=>{o.agentError=y instanceof Error?y.message:String(y)}).finally(()=>{if(e=!1,!u&&o.screen==="agent-detail")z(n,o)})},1000),r.unref?.(),wu(o),z(n,o),n.start()})}Ao();_();X();wi();Pi();ti();C();ti();var b1=2000,Kt=100;function Mi(i){if(Ho||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${i}
564
+ `)}function Vt(i){if(!i)return null;if(i.type!=="tako"&&i.type!=="custom")return null;if(!i.baseUrl||!i.apiKey)return null;return{baseUrl:i.baseUrl.replace(/\/+$/,""),apiKey:i.apiKey}}async function L1(i,o){let n=`${i}/v1/announcements/popup`;try{let d=await fetch(n,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(b1)});if(!d.ok)return Mi(`HTTP ${d.status} from ${n}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let e=(await d.json())?.announcement;if(!e)return Mi("\u8FD4\u56DE announcement=null\uFF08par \u540E\u53F0\u6CA1\u6709 published+popup=true \u7684\u516C\u544A\uFF09"),null;if(typeof e.id!=="string"||typeof e.title!=="string")return Mi(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(e)}`),null;return Mi(`\u62C9\u5230\u516C\u544A id=${e.id} title=${e.title} popup_once=${!!e.popup_once}`),{id:e.id,title:e.title,content:e.content??"",type:e.type,popup_once:!!e.popup_once}}catch(d){return Mi(`fetch \u5931\u8D25\uFF1A${d instanceof Error?d.message:String(d)}`),null}}async function W1(i){return((await s()).seenAnnouncementIds??[]).includes(i)}async function N1(i){let o=await s(),n=o.seenAnnouncementIds??[];if(n.includes(i))return;let d=[...n,i];if(d.length>Kt)d.splice(0,d.length-Kt);o.seenAnnouncementIds=d,await K(o)}async function z1(){let i=Vt(await di());if(i)return i;for(let o of await V()){let n=Vt(o);if(n)return n}return null}async function Ft(){let i=await z1();if(!i){Mi("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}Mi(`\u67E5\u8BE2\u516C\u544A\uFF1A${i.baseUrl}/v1/announcements/popup`);let o=await L1(i.baseUrl,i.apiKey);if(!o)return;if(o.popup_once&&await W1(o.id)){Mi(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${o.id}`);return}if(Mi(`\u5F39\u7A97\uFF1A${o.id}`),await Ae(o),o.popup_once)await N1(o.id),Mi(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${o.id}`)}fo();async function Tt(){await cd(),await pd(),await br(),await Promise.race([F0(await V()),new Promise((i)=>setTimeout(i,3000))]),await Ft()}async function _t(i){let o=ii(i.clientId);if(!o)return!1;R("menu_action",{action:"launch",client_id:i.clientId});let n=await Dn(i.clientId);if(!n)return W.warn(k("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546"),!1;let u=process.platform==="win32"&&!!process.env.TAKO_WINDOWS_HANDOFF_FILE,e=await Vn(o,{projectPath:i.projectPath,args:i.args,envVars:i.envVars,selectedOptionIds:i.selectedOptionIds,providerContext:n,relaunchTakoOnWindows:u});if(!e.success)return W.error(e.error||k("cli.launchFailed")),!1;if(u)return!0;return!1}async function Et(){await Tt();let i;while(!0){let o=await Zt(i);if(i=void 0,!o)break;if(o.type==="exit")break;if(o.type==="provider-login"){let d=Ci()==="zh",u=o.tool==="claude"?"Claude":"Codex";W.info(d?`\u6B63\u5728\u6253\u5F00 ${u} \u5B98\u65B9\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...`:`Opening ${u} login; complete authorization in the browser...`);let e=await $u(o.tool),r=await Mu(o.tool,d),t=r.message;if(!r.ok&&e.error)t=e.error;else if(!r.ok&&!e.ok&&e.exitCode!=null)t=d?`${u} \u767B\u5F55\u672A\u5B8C\u6210\uFF08\u9000\u51FA\u7801 ${e.exitCode}\uFF09`:`${u} login did not complete (exit ${e.exitCode})`;if(r.ok)W.success(r.message);else W.warn(t);i={screen:"providers",message:r.ok?r.message:`! ${t}`};continue}if(o.type!=="launch")continue;if(await _t(o))process.exit(0)}}await tt(Et);