tako-cli 0.3.20 → 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:zd,getOwnPropertyNames:ec,getOwnPropertyDescriptor:uc}=Object,rc=Object.prototype.hasOwnProperty;function tc(i){return this[i]}var cc=(i)=>{var o=(Ce??=new WeakMap).get(i),n;if(o)return o;if(o=zd({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function"){for(var d of ec(i))if(!rc.call(o,d))zd(o,d,{get:tc.bind(i,d),enumerable:!(n=uc(i,d))||n.enumerable})}return Ce.set(i,o),o},Ce;var ac=(i)=>i;function pc(i,o){this[i]=ac.bind(null,o)}var ii=(i,o)=>{for(var n in o)zd(i,n,{get:o[n],enumerable:!0,configurable:!0,set:pc.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:()=>xc,getApiKey:()=>wc,getApiId:()=>Di,ensureTakoDir:()=>Ho,TOOLS_DIR:()=>Nn,TAKO_SERVER:()=>Qe,TAKO_DIR:()=>Q,TAKO_CLI_DIR:()=>mi,TAKO_BUN_DIR:()=>bi,TAKO_BUN_CACHE_DIR:()=>$d,TAKO_BUN_BIN:()=>Y,PROXY_BASE_URL:()=>A,IS_DEV:()=>Xo,CONFIG_PATH:()=>gd});import{homedir as lc}from"os";import{join as _i,resolve as mc}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(gd);if(await i.exists()){let o=await i.json();return{...Ie,...o}}}catch{}return{...Ie}}async function K(i){await Ho(),await Bun.write(gd,JSON.stringify(i,null,2))}async function Ui(i){let n={...await z(),...i};return await K(n),n}async function xc(){return!!(await z()).apiKey}async function wc(){return(await z()).apiKey}async function Di(){return(await z()).apiId}var Q,gd,Nn,mi,bi,Y,$d,Qe,A,Xo,Ie;var C=N(()=>{Q=mc(process.env.TAKO_HOME||_i(lc(),".tako")),gd=_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"),$d=_i(bi,"install-cache"),Qe=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"||Qe.includes("localhost"),Ie={apiKey:"",apiId:"",installedClients:{}}});import{join as kn}from"path";function Md(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 Md(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 Md(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 Md(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){Gd.set(i.id,i)}function qe(){return Array.from(Gd.values())}function oi(i){return Gd.get(i)}var Gd;var E=N(()=>{C();Gd=new Map});var yc,Ai;var Sd=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:zd,getOwnPropertyNames:ec,getOwnPropertyDescriptor:uc}=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
- */yc=/^(\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(yc);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 sc(i,o){let n=i.slice(0,o).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}function vc(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:zd,getOwnPropertyNames:ec,getOwnPropertyDescriptor:uc}=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]=sc(o.toml,o.ptr),e=vc(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 Oe(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=fc.test(i);if(e||hc.test(i)){if(bc.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 fc,hc,bc;var Pd=N(()=>{Sd();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
- */fc=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,hc=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,bc=/^[+-]?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 Je(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 Lc(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==="["?Be(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=Je(i,o,",",n),t=Lc(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[Oe(t[0],i,o,e),r]}var Cd=N(()=>{Pd();Id();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(!Nc.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 Be(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 Nc;var Id=N(()=>{Pd();Cd();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
- */Nc=/^[a-zA-Z0-9-_]+[ \t]*$/});function Ye(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 Qd(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=Ye(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=Ye(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 Ae=N(()=>{Id();Cd();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 Wc(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 Od(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 kc(i,n,d);if(o==="array")return zc(i,n,d)}function kc(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+=Xe.test(r)?r:qd(r),e+=" = ",e+=Od(i[r],Ko(i[r]),o-1,n)}return e+" }"}function zc(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+=Od(i[e],Ko(i[e]),o-1,n)}return d+" ]"}function gc(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+=Jd(0,i[u],o,n,d);return e}function Jd(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=Xe.test(a)?a:qd(a);if(p==="array"&&Wc(o[a]))r+=(r&&`
208
- `)+gc(o[a],n?`${n}.${l}`:l,d-1,e);else if(p==="object"){let x=n?`${n}.${l}`:l;r+=(r&&`
209
- `)+Jd(x,o[a],x,d-1,e)}else u+=l,u+=" = ",u+=Od(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=Jd(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 Xe;var He=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
- */Xe=/^[a-z0-9-_]+$/i});var Ze=N(()=>{Ae();He();Sd();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 $c(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 Ke(){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 $c(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 Gc}from"path";import{homedir as Sc}from"os";function Ve(){return Cc??Gc(Sc(),".tako","models-cache.json")}function Bd(i){Pn.clear();for(let o of i)if(!Pn.has(o.id))Pn.set(o.id,o)}function Ic(){try{let o=$("fs").readFileSync(Ve(),"utf-8"),n=JSON.parse(o);if(typeof n?.fetchedAt!=="number"||!Array.isArray(n?.entries))return null;return n}catch{return null}}async function Qc(i){try{let o=await import("fs/promises"),n=Ve(),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=Ic();if(i&&Date.now()-i.fetchedAt<Pc){Bd(i.entries);return}Bd(ci)}async function Yd(){try{let i=await Ke();if(!i.length)return;Bd(i),await Qc({fetchedAt:Date.now(),entries:i}),Cn=!0}catch{}}function Te(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 Ad(i){if(!Cn)Ni();let{lookupId:o,is1m:n}=Te(i),d=Pn.get(o);if(!d)return;if(n)return{...d,contextWindow:1e6};return d}var Pc=86400000,Cc=null,Pn,Cn=!1;var Fe=N(()=>{Sn();Pn=new Map});import{join as qc}from"path";function _e(){return Rc??qc(Q,"tako-models-cache.json")}function Hd(i,o){return`${i.replace(/\/+$/,"")}#${o}`}function Zd(){if(Ee)return;Ee=!0;try{let i=$("fs"),o=JSON.parse(i.readFileSync(_e(),"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 Bc(){try{let i=await import("fs/promises"),o=_e(),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 Yc(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 Zd(),Vo.get(Hd(i,o))?.entries??null}async function In(i,o,n){Zd();let d=Hd(i,n),e=Xd.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(Jc)});if(!t.ok)return;let c=await t.json(),a=Yc(c);if(a.length===0)return;Vo.set(d,{fetchedAt:Date.now(),entries:a}),await Bc()}catch{}finally{Xd.delete(d)}})();return Xd.set(d,u),u}function Kd(i){Zd();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(Hd(d.baseUrl,e));if(u&&o-u.fetchedAt<Oc)continue;let r=In(d.baseUrl,d.apiKey,e);if(!u)n.push(r)}}return Promise.all(n).then(()=>{return})}var Oc=3600000,Jc=8000,Rc=null,Vo,Ee=!1,Xd;var Vd=N(()=>{C();Vo=new Map,Xd=new Map});var vo=N(()=>{Fe();Vd()});import{homedir as Ac}from"os";import{join as Fd}from"path";function iu(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]=iu(n[d],e);else n[d]=e;return n}function Xc(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 je(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 Hc(i,o){let n=await import("fs/promises");try{await n.mkdir(Ed,{recursive:!0})}catch{}let d={};try{d=Qd(await n.readFile(Ue,"utf-8"))}catch{}if(d=Xc(d),i.type==="codex-subscription")if(delete d.model_provider,d.check_for_update_on_startup=!1,d.remote_compaction_v2=!1,je(d),i.authData)await Bun.write(De,JSON.stringify(i.authData,null,2)+`
267
- `);else await Bun.write(De,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;je(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=iu(d,p)}await Bun.write(Ue,Rd(d))}function Td(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Fc(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} (${Td(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${Td(d.contextWindow)}\uFF09`},flag:`--model ${d.id}`,args:["--model",d.id],group:"model"}))}function Ec(i){if(Ni(),i&&(i.type==="tako"||i.type==="custom")){let d=Fc(i);if(d)return d}let o=i?.type==="deepseek"?Tc:Vc,n=[];for(let d of o){let e=ci.find((t)=>t.id===d),u=Td(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 _c(i){return[...Kc,...Ec(i)]}var Ed,Ue,De,Zc,Kc,Vc,Tc;var ou=N(()=>{E();C();Ze();vo();Sn();Ed=Fd(Ac(),".codex"),Ue=Fd(Ed,"config.toml"),De=Fd(Ed,"auth.json");Zc={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars(i){return{}},setupConfigFiles:Hc,launchOptions:(i)=>_c(i)},Kc=[{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"]}],Vc=["gpt-5.5","gpt-5.4","gpt-5.3-codex","gpt-5.3"],Tc=["deepseek-v4-flash","deepseek-v4-pro"];yo(Zc)});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 _d(i){switch(i){case"deepseek":return"https://api.deepseek.com";case"xiaomi":return Dd;default:return}}function jd(i){return i?.startsWith("tp-")?nu:Dd}function Eo(i){switch(i){case"deepseek":return["deepseek-v4-flash","deepseek-v4-pro"];case"xiaomi":return Dc;case"tako":case"anthropic":return Uc;default:return}}function Hi(i,o){let n=i.supportedClients;if(!n||n.length===0)return!0;return n.includes(o)}var io,Ud="https://api.deepseek.com/anthropic",Dd="https://api.xiaomimimo.com/anthropic",nu="https://token-plan-cn.xiaomimimo.com/anthropic",Uc,Dc;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"}};Uc=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Dc=["mimo-v2.5-pro"]});var eu={};ii(eu,{spinner:()=>na,setLogHandler:()=>ia,resetLogHandler:()=>oa,log:()=>L,createSpinner:()=>oo});function jc(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 ia(i){Pi=i}function oa(){Pi=du}function na(){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 du,Pi,L;var Ci=N(()=>{du={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:jc},Pi=du;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 uu={};ii(uu,{t:()=>g,setLocale:()=>i0,getLocale:()=>Ii,detectLocale:()=>no,clearLocaleOverride:()=>da});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 i0(i){Qn=i}function da(){Qn=null}function g(i,o){let n=no(),d=i.split("."),e=ea;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,ea;var X=N(()=>{ea={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:()=>xa,readClaudeAuth:()=>ma});import{homedir as ru,platform as ua,userInfo as ra}from"os";import{join as n0}from"path";function cu(){return[process.env.USER||(()=>{try{return ra().username}catch{return""}})(),"root"].filter(Boolean)}async function ta(i){let o=Bun.spawn(["security","find-generic-password","-s",tu,"-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 ca(){for(let i of cu()){let o=await ta(i);if(o)return o}return null}async function aa(i){let o=JSON.stringify(i),n=cu()[0],d=Bun.spawn(["security","add-generic-password","-U","-s",tu,"-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 pa(){try{let i=await import("fs/promises");return JSON.parse(await i.readFile(pu,"utf-8"))}catch{return null}}async function la(i){let o=await import("fs/promises");await o.mkdir(au,{recursive:!0}),await o.writeFile(pu,JSON.stringify(i,null,2)+`
275
- `,{mode:384})}async function ma(){let i=lu?await ca():await pa(),o;try{let n=await import("fs/promises"),d=JSON.parse(await n.readFile(o0,"utf-8"));if(d.oauthAccount&&typeof d.oauthAccount==="object")o=d.oauthAccount}catch{}return{credentials:i??void 0,oauthAccount:o}}async function xa(i){if(i.credentials)if(lu)await aa(i.credentials);else await la(i.credentials);if(i.oauthAccount){let o=await import("fs/promises"),n={};try{n=JSON.parse(await o.readFile(o0,"utf-8"))}catch{}n.oauthAccount=i.oauthAccount,await o.writeFile(o0,JSON.stringify(n,null,2)+`
276
- `)}}var tu="Claude Code-credentials",au,pu,o0,lu;var On=N(()=>{au=n0(ru(),".claude"),pu=n0(au,".credentials.json"),o0=n0(ru(),".claude.json"),lu=ua()==="darwin"});var mu={};ii(mu,{updateProvider:()=>Zi,setDefaultProvider:()=>e0,setClientProvider:()=>u0,resolveXiaomiBaseUrl:()=>jd,resolveProviderContext:()=>_,migrateIfNeeded:()=>r0,mergeDetectedProviders:()=>Uo,isProviderCompatible:()=>Hi,getProvidersForClient:()=>Qi,getProviders:()=>V,getProvider:()=>wa,getModelChoices:()=>Eo,getDefaultSupportedClients:()=>di,getDefaultProvider:()=>ei,getDefaultModel:()=>Fo,getDefaultBaseUrl:()=>_d,getClientProvider:()=>qi,fixupProviders:()=>t0,detectProviders:()=>_o,deleteProvider:()=>d0,addProvider:()=>eo,XIAOMI_TOKEN_PLAN_URL:()=>nu,XIAOMI_ANTHROPIC_URL:()=>Dd,PROVIDER_TYPE_NAMES:()=>io,DEEPSEEK_ANTHROPIC_URL:()=>Ud});async function V(){return(await z()).providers??[]}async function wa(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 d0(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 e0(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 u0(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 ya(){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 sa(){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 va(){let i=await sa();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([ya(),va()]);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 r0(){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 t0(){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 fa}from"os";import{dirname as ha,join as wu}from"path";function Wa(i){if(i.startsWith("ANTHROPIC_"))return!0;return Na.includes(i)}function ka(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(Wa(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 za(i={}){let o=await import("fs/promises"),n=i.sourcePath??ba,d=i.targetPath??La,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}=ka(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(ha(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 ga(i){let{readClaudeAuth:o,writeClaudeAuth:n}=await Promise.resolve().then(() => (On(),qn)),{getProviders:d,updateProvider:e}=await Promise.resolve().then(() => (ai(),mu)),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 Ca(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 xu(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Ia(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} (${xu(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${xu(d.contextWindow)}\uFF09`},flag:`--model ${e}`,args:[],envVars:{ANTHROPIC_MODEL:e},group:"model"}})}function Qa(i){if(Ni(),i&&(i.type==="tako"||i.type==="custom")){let d=Ia(i);if(d)return d}let o=i?.type==="deepseek"?Sa:i?.type==="xiaomi"?Pa:Ga,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=Ca(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[...Ma,...Qa(i)]}var ba,La,Na,$a,Ma,Ga,Sa,Pa;var c0=N(()=>{E();Si();Ci();X();vo();Sn();C();ba=wu(fa(),".claude","settings.json"),La=wu(Q,"claude-code","settings.json"),Na=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];$a={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:Ud,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"xiaomi":return{...o,ANTHROPIC_BASE_URL:jd(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 za();if(e)d=e.args}if(i.type==="claude-subscription")await ga(i);return d.length>0?{args:d}:void 0},launchOptions:(i)=>qa(i)},Ma=[{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"]}],Ga=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Sa=["deepseek-v4-flash","deepseek-v4-pro"],Pa=["mimo-v2.5-pro"];yo($a)});import{homedir as Oa}from"os";import{join as su}from"path";async function Ja(){let i=await import("fs/promises");try{await i.mkdir(vu,{recursive:!0})}catch{}let o={};try{o=JSON.parse(await i.readFile(yu,"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(yu,JSON.stringify(o,null,2)+`
278
- `)}var vu,yu,Ra;var fu=N(()=>{E();vu=su(Oa(),".gemini"),yu=su(vu,"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:Ja};yo(Ra)});var a0=N(()=>{ou();c0();fu();E()});var zu={};ii(zu,{showRegionInfo:()=>m0,getNpmRegistry:()=>ui,getMirrors:()=>Wu,getLatestBunVersion:()=>ku,getBunMirrorDownloadUrl:()=>l0,getBunInstallCommand:()=>p0,detectRegion:()=>Ki,MIRRORS:()=>Do});import{readFileSync as Ba,writeFileSync as Ya,mkdirSync as Aa}from"fs";import{join as bu}from"path";import{homedir as Lu}from"os";function Ha(){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 Za(){try{let i=Ba(Nu,"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>Xa)return null;return o.region}catch{return null}}function hu(i){try{Aa(bu(Lu(),".tako"),{recursive:!0}),Ya(Nu,JSON.stringify({region:i,detectedAt:Date.now()}),"utf-8")}catch{}}function Ka(){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 Va(){if(Jn)return Jn;return Jn=(async()=>{let o=[Ta,Fa,Ea,_a].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"}})(),Jn}async function Ki(){if(ho)return ho;let i=Ha();if(i)return ho=i,i;let o=Za();if(o)return ho=o,o;let n=Ka();if(n)return ho=n,hu(n),n;let d=await Va();return ho=d,hu(d),d}async function Ta(){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 Fa(){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 Ea(){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 _a(){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 Wu(){let i=await Ki();return Do[i]}async function ui(){return(await Wu()).npm}function p0(){return"curl -fsSL https://bun.sh/install | bash"}async function ku(){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 l0(){let i=Do.cn.bunBinary,o=await ku(),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 m0(){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,Jn=null,Nu,Xa=2592000000,Do;var bo=N(()=>{X();Ci();Nu=bu(Lu(),".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 Ua=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)}},gu=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 Ua({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 $u=()=>{};function Mu(){if(!Lo)Lo=new gu({clientId:Da,clientSecret:ja,apiUrl:ip});return Lo}function Gu(i,o,n){let d=Mu().track(i,{profileId:o,...n}).catch(()=>{});Rn.push(d)}function Su(i,o){let{email:n,...d}=o,e=Mu().identify({profileId:i,...typeof n==="string"?{email:n}:{},firstName:String(d.platform||""),properties:d}).catch(()=>{});Rn.push(e)}async function Pu(){if(await Promise.allSettled(Rn),Rn.length=0,Lo){try{Lo.flush()}catch{}Lo=null}}var Da="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",ja="sec_1e0ea34016bc3a5f8ef5",ip="https://op.shiroha.tech/api",Lo=null,Rn;var Cu=N(()=>{$u();Rn=[]});function Iu(){return{cli_version:op,platform:process.platform,arch:process.arch,locale:no(),node_version:process.version}}function Qu(i){return Bun.hash(i).toString(16).slice(0,8)}var op="0.3.20";var x0=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 Ou(){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(w0)return;try{if(!await qu())return;let i=await z(),o=await Ou();if(o==="anonymous")return;let d=(i.providers??[]).find((u)=>u.email)?.email,e=await Ki();Su(o,{...d?{email:d}:{},region:e,locale:no(),first_seen_version:np,platform:process.platform,arch:process.arch}),w0=!0}catch{}}function O(i,o){dp(i,o).catch(()=>{})}async function dp(i,o){try{if(!await qu())return;let n=await Ou();Gu(i,n,{...Iu(),...o})}catch{}}async function jo(){await Pu()}function U(){No=null,w0=!1}var np="0.3.20",w0=!1,No=null;var xi=N(()=>{Cu();C();bo();X();x0();x0()});function tp(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(tp(o,e))};r();let t=setInterval(r,1000),c=(p)=>{if(!p)return;if(u.push(p),ep.test(p))e.phase="\u89E3\u6790\u4F9D\u8D56";else if(Ju.test(p)){e.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let l=p.match(Ju);if(l)e.pkgCount=parseInt(l[1],10)}else if(up.test(p))e.phase="\u5199\u5165 lockfile";else if(rp.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 ep,Ju,up,rp;var y0=N(()=>{ep=/^Resolving dependencies/,Ju=/^Resolved, downloaded and extracted \[(\d+)\]/,up=/^Saved lockfile/,rp=/^(\d+) packages? installed/});function cp(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 Yu(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=cp(i??"");if(!n)return o;let d=Yu(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=Yu(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 fp(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i);process.stdin.pause()}catch{}}async function Xu(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),fp(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 Hu(i){let o=i.defaultValue??!0,n=o?"[Y/n]":"[y/N]";process.stdout.write(`
284
- ? ${i.message} ${n} `);let d=await Xu((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 Zu(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 Xu((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 J}from"path";function hp(i){return i.startsWith(bi)}function Ku(i){return{...process.env,BUN_CONFIG_REGISTRY:i,BUN_INSTALL_CACHE_DIR:$d}}async function bp(){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 Vu(){return await bp()!==null}async function Lp(){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 Np(i){let o=await import("fs/promises"),{join:n}=await import("path"),d=process.platform==="win32",e=d?"bun.exe":"bun",u=await l0();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 Wp(){let i=oo();if(!await Lp())return L.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await m0(),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 Np(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}" ${p0()}`;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 kp(){if(await Vu())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 Wp()}async function Wi(){if(uo){if(!hp(uo))uo=Y;return uo}if(await Vu())return uo=Y,Y;return Y}async function N0(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 zp(i){return(await z()).installedClients[i.id]?.version||null}async function gp(i,o){let n=J(i,"node_modules",o,"package.json");try{return await Bun.file(n).exists()}catch{return!1}}async function Tu(i){let o=Gi(i.id);return gp(o,i.package)}async function Fu(i){let o=await zp(i);if(!o)return!0;let n=await N0(i.package);if(!n)return!1;return o!==n}function Eu(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 _u(i,o,n,d){let e=J(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=Eu(t);if(!c)return;let p=process.platform==="win32"?`${i.command}.exe`:i.command,l=J(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:Ku(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 h0(i,o){let n=await import("fs/promises"),d=J(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=Eu(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=J(o,"node_modules",i.package,a),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(p,y),!l)await n.chmod(p,493);return!0}let s=J(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:J(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=J(Q,".tmp-extract-"+Date.now());await n.mkdir(B,{recursive:!0});let li=J(B,"pkg.tgz"),mo=Bun.spawn(["curl","-fsSL","-o",li,k],{stdout:"pipe",stderr:"pipe"});if(await mo.exited,mo.exitCode!==0){let dc=await new Response(mo.stderr).text();L.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${dc.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 Wd=Bun.spawn(["tar","xzf",li,"-C",B,`package/${x}`],{stdout:"pipe",stderr:"pipe"});await Wd.exited;let oc=J(B,"package",x),kd=Bun.file(oc);if(await kd.exists()&&kd.size>1024){if(await Bun.write(p,kd),!l)await n.chmod(p,493);return await n.rm(B,{recursive:!0,force:!0}).catch(()=>{}),!0}let nc=await new Response(Wd.stderr).text();L.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${Ao} bytes, exit=${Wd.exitCode}): ${nc.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=J(Q,".tmp-extract-"+Date.now());await n.mkdir(h,{recursive:!0});let M=J(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(J(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 b0(i,o=!1){let n=oo(),d=Gi(i.id);try{if(!await kp())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 Tu(i),u=o||await Fu(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=J(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=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:Ku(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 _u(i,d,l,x),await h0(i,d);let v=await N0(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 v0(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 f0(i){if(i.runtime!=="native")return;let o=Gi(i.id),n=J(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=J(o,"node_modules",i.package,r);if(!await v0(t))return;L.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let c=await Wi(),a=await ui();if(await _u(i,o,c,a),!await h0(i,o)||await v0(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 b0(i)).success)if(await h0(i,o),await v0(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 Uu(i){if(!await Tu(i)){let d=await b0(i);if(d.success)await f0(i);return d}if(await f0(i),await Fu(i)){let d=await N0(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 $p(i.id))return L.info("\u4ECA\u65E5\u5DF2\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};if(!await Hu({message:`\u662F\u5426\u66F4\u65B0 ${i.name}\uFF1F`,defaultValue:!1}))return await Mp(i.id),L.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let t=await b0(i,!0);if(t.success)return await f0(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 $p(i){try{let o=Bun.file(L0);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 Mp(i){try{let o={},n=Bun.file(L0);if(await n.exists())try{o=await n.json()}catch{}o[i]=new Date().toISOString().slice(0,10),await Bun.write(L0,JSON.stringify(o))}catch{}}var uo=null,L0;var dn=N(()=>{Ci();E();C();bo();xi();y0();L0=J(Q,".update-dismissed.json")});import{homedir as Gp}from"os";async function k0(i){try{return(await(await import("fs/promises")).stat(i)).isDirectory()}catch{return!1}}async function Du(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,Sp);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 Pp(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 ju(i,o=W0,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:Pp(a,i)})).sort((a,p)=>p.lastUsedTime-a.lastUsedTime),c=[];for(let{lastUsedTime:a,...p}of t){if(c.length>=o)break;if(await k0(p.path))c.push(p)}return c}async function ir(){let o=(await z()).recentProjects||[],n=process.cwd();return o.find((e)=>e.path===n)?.lastClientId||null}function z0(i,o=25){let n=Gp(),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 or(i){let{t:o}=(X(),cc(uu)),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 Sp=50,W0=3;var An=N(()=>{C()});import{dirname as Op,join as Jp}from"path";import{mkdir as Rp}from"fs/promises";function tr(){return G0??Jp(Q,"model-usage.json")}function M0(){return{counts:{},updatedAt:new Date(0).toISOString()}}async function cr(){try{let i=Bun.file(tr());if(!await i.exists())return M0();let o=await i.json(),n=o?.counts;if(!n||typeof n!=="object")return M0();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 M0()}}async function Ap(i){if(G0)await Rp(Op(G0),{recursive:!0});else await Ho();await Bun.write(tr(),JSON.stringify(i,null,2))}async function ar(){return{...(await cr()).counts}}async function pr(i){let o=await cr(),n={};for(let[d,e]of Object.entries(o.counts)){let u=e*Bp;if(u>=Yp)n[d]=u}for(let d of i){if(!d.startsWith("model-"))continue;n[d]=(n[d]??0)+1}await Ap({counts:n,updatedAt:new Date().toISOString()})}var Bp=0.95,Yp=0.05,G0=null;var S0=N(()=>{C()});function P0(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 Tp(i,o){if(!Number.isFinite(i)||i<0)return;return{usedPct:0,costUsed:i,...o?{windowMinutes:o}:{}}}async function Fp(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:P0(n.usage.windowCost??0,n.plan.window_cost_limit??0,n.plan.window_minutes),daily:P0(n.usage.dailyCost??0,n.plan.daily_cost_limit??0),secondary:P0(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 Fp(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:Tp(t),fetchedAt:o}}catch(e){return{...n,hint:"Tako \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(e.message??e)}}}async function lr(i){let o=await Di();return ro(o)}var C0=N(()=>{C()});function I0(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 Ep(i){return i.authData?.credentials?.claudeAiOauth?.accessToken}async function mr(i){let o=Date.now(),n={provider:"claude-subscription",status:"error",fetchedAt:o},d=Ep(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=I0(u.seven_day_opus),t=I0(u.five_hour);if(t)t.windowMinutes=300;let c=I0(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 xr(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 _p(i){let o=i.authData?.tokens;return{accessToken:o?.access_token,accountId:o?.account_id}}async function Up(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 Dp(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 wr(i){let o=Date.now(),n={provider:"codex-subscription",status:"error",fetchedAt:o},{accessToken:d,accountId:e}=_p(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 il(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:xr(a),secondary:xr(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 jp=async(i,o)=>{let n=await Up(i,o).catch(()=>null);if(n)return n;return Dp(i,o)},il;var yr=N(()=>{il=jp});var q0={};ii(q0,{invalidateQuotaCache:()=>tl,getOfficialQuota:()=>Q0,fetchTakoQuotaByApiId:()=>ro,_setQuotaDiskCachePathForTest:()=>el,_clearQuotaCache:()=>rl});import{homedir as ol}from"os";import{join as nl}from"path";function dl(i){return`${i.type}:${i.id}`}function fr(){return vr??nl(ol(),".tako","quota-cache.json")}function el(i){vr=i}function hr(){try{let o=$("fs").readFileSync(fr(),"utf-8"),n=JSON.parse(o);return typeof n==="object"&&n!==null?n:{}}catch{return{}}}function br(i){try{let o=$("fs"),n=fr(),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 ul(i){return{provider:i.type,status:"unsupported",fetchedAt:Date.now()}}async function Q0(i){let o=dl(i),n=Date.now(),d=ko.get(o);if(d&&n-d.fetchedAt<sr)return d;let e=hr(),u=e[o];if(u&&n-u.fetchedAt<sr)return ko.set(o,u),u;let r;switch(i.type){case"tako":r=await lr(i);break;case"claude-subscription":r=await mr(i);break;case"codex-subscription":r=await wr(i);break;default:r=ul(i);break}return ko.set(o,r),e[o]=r,br(e),r}function rl(){ko.clear()}function tl(i,o){for(let n of[...ko.keys()])if(n.endsWith(`:${i}`))ko.delete(n);try{let n=hr(),d=!1;for(let e of Object.keys(n))if(e.endsWith(`:${i}`))delete n[e],d=!0;if(d)br(n)}catch{}}var sr=60000,ko,vr=null;var Tn=N(()=>{C0();yr();ko=new Map});var X0={};ii(X0,{listAvailableVersions:()=>B0,installAtVersion:()=>Y0,getInstalledVersion:()=>A0});import{join as Un}from"path";async function B0(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 Y0(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(),zu)),a=await c(),{log:p}=await Promise.resolve().then(() => (Ci(),eu));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 A0(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 gr={};ii(gr,{runQuotaCommand:()=>Ml,buildQuotaPayload:()=>zr});async function zl(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 gl(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 H0(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 kr(i){return{exitCode:0,payload:{provider:"tako",status:"ok",fiveHour:H0(i.primary),daily:H0(i.daily),weekly:H0(i.secondary),fetchedAt:new Date(i.fetchedAt).toISOString()}}}function $l(i){return rn(i.error||"quota_unavailable",i.hint||"Tako quota is unavailable",i.hint)}async function zr(i,o={}){let n=o.fetchQuotaByApiId??ro,d=o.resolveApiIdFromKey??zl,e=gl(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 kr(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 kr(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 $l(u);return rn("missing_api_id","Tako API ID is not configured")}async function Ml(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 zr(await n(),o);return process.stdout.write(`${JSON.stringify(d.payload)}
302
- `),d.exitCode}var $r=N(()=>{C();C0()});import{join as Vi}from"path";import{homedir as Gl}from"os";import{mkdir as Sl,readFile as jn,writeFile as T0,rename as F0,readdir as Mr,rm as Pl,appendFile as Gr}from"fs/promises";function yi(i){return Vi(Z0,i)}function Sr(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 K0(i,o){return Vi(tn(i),`${o}.req.json`)}function V0(i,o){return Vi(tn(i),`${o}.resp.json`)}async function cn(i){await Sl(i,{recursive:!0})}async function Pr(i){await cn(yi(i.sid)),await j(i),await Gr(D(i.sid),"")}async function zo(i){try{let o=await jn(Sr(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 T0(n,JSON.stringify(d,null,2),"utf-8"),await F0(n,Sr(i.sid))}async function si(i,o){await Gr(D(i),JSON.stringify(o)+`
303
- `,"utf-8")}async function id(){await cn(Z0);let i=await Mr(Z0,{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 E0(i){try{await Pl(yi(i),{recursive:!0,force:!0})}catch{}}async function Cr(i,o){await cn(tn(i));let n=K0(i,o.approvalId)+".tmp";await T0(n,JSON.stringify(o,null,2),"utf-8"),await F0(n,K0(i,o.approvalId))}async function Cl(i,o){try{return JSON.parse(await jn(K0(i,o),"utf-8"))}catch{return null}}async function nd(i,o,n){await cn(tn(i));let d=V0(i,o)+".tmp";await T0(d,JSON.stringify(n,null,2),"utf-8"),await F0(d,V0(i,o))}async function an(i,o){try{return JSON.parse(await jn(V0(i,o),"utf-8"))}catch{return null}}async function pn(i){try{let o=await Mr(tn(i)),n=[];for(let d of o){if(!d.endsWith(".req.json"))continue;let e=d.slice(0,-9),u=await Cl(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 Z0;var Ti=N(()=>{Z0=Vi(Gl(),".tako","agent-sessions")});import{spawn as Il}from"child_process";async function dd(i,o,n){await si(i,o),n?.onFrame?.(o)}function Ql(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 Qr(i,o){return i.__env=o,i}var gi=()=>Date.now(),ln,Ir;var qr=N(()=>{Ti();E();dn();ln=new Map,Ir={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=Il(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 Ql(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 _0}from"path";import{readFile as Ol,writeFile as Jl}from"fs/promises";import{homedir as Rl}from"os";function Bl(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 Or(i,o){if(!i)return!1;let n=ql(i)?_0(i):_0(o,i),d=_0(o);return n===d||n.startsWith(d+"/")}function Br(i,o,n,d){if(o==="item/commandExecution/requestApproval"||o==="execCommandApproval"){let e=String(n?.command??""),u=Bl(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=Yl(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(!Or(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)=>Or(r,d)))return{kind:"auto_allow",reason:"all paths inside workdir (non-strict)"};return{kind:"ask"}}return{kind:"ask"}}function Yl(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 j0(i){return Rr(yi(i),"policy.json")}async function U0(i){try{return JSON.parse(await Ol(i,"utf-8"))}catch{return null}}async function ed(i){let o=await U0(Al),n=await U0(j0(i));return Jr(Jr(D0,o),n)}function Jr(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 U0(j0(i))??{}}async function rd(i,o){await Jl(j0(i),JSON.stringify(o,null,2),"utf-8")}async function Yr(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 D0,Al;var ie=N(()=>{Ti();D0={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};Al=Rr(Rl(),".tako","agent-policy.json")});import{spawn as Xl}from"child_process";import{writeFile as Hl,unlink as Zl}from"fs/promises";import{join as Ar}from"path";class Kr{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 Xr(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=Xl(u,r,{env:e,cwd:i,stdio:["pipe","pipe","pipe"]});return t.stderr?.on("data",()=>{}),new Kr(t)}async function Hr(i){await i.request("initialize",{clientInfo:{name:"tako-agent",title:"Tako Agent",version:"0.1"},capabilities:null})}function Zr(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 oe(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 Kl(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 Vl(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 Tl(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(),Vr;var Tr=N(()=>{Ti();ie();E();dn();Vr={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 Xr(i.workdir,d),r=Ar(yi(i.sid),"turn.pid");if(u.pid())await Hl(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=Kl(l);(async()=>{let b=await ed(i.sid),v=Br(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,oe(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,oe(l,!1));return}let h={approvalId:y,method:l,params:w,approvalType:s,requestedAt:ri()};await Cr(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 Vl(i.sid,y);i.status="running",await j(i),u.reply(x,oe(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=Tl(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 Hr(u),!i.codexThreadId){let l=await u.request("thread/start",Zr({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",Zr({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 Zl(r).catch(()=>{}),p)i.turnCount++;return i.lastActiveAt=ri(),i.status="idle",await j(i),i},async cancel(i){let o=Ar(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 Xr(i.workdir,o);await Hr(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 Fl}from"crypto";async function mn(i){let o=go[i.backend],n=ne[i.backend],d=oi(n);if(!d)throw Error(`client ${n} \u672A\u6CE8\u518C`);let e=await Fr(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=Fl(),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 Pr(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 de(d);if(d.backend==="claude")Qr(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 de(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 de(n));if(await go[n.backend].close(n),o)await E0(i)}async function cd(){return id()}function El(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 El(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 E0(n.sid),o++;continue}if(n.backend==="codex"){if(!await go.codex.isAlive(n))n.status="dead",await j(n)}}return o}async function Fr(i,o,n){let d=await z(),e=await V(),u=ne[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 de(i){let o=ne[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 Fr(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 Er(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,ne;var xd=N(()=>{qr();Tr();Ti();C();ai();E();go={claude:Ir,codex:Vr},ne={claude:"claude-code",codex:"codex"}});function Mo(i,o="human",n={}){if(o==="json"){process.stdout.write(JSON.stringify(ee(i))+`
310
- `);return}if(o==="verbose"){Ul(i,new Date(i.ts).toISOString().slice(11,23),{expandError:!0,...n});return}_l(i,n)}function _r(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 _l(i,o){switch(i.kind){case"text_delta":process.stdout.write(i.text);break;case"tool_use":{let n=Ur(i.input)??Ji(JSON.stringify(i.input),240);console.log(`
313
- $ ${n}`);break}case"tool_result":{let n=Dr(i.output);if(Go(i.output)){console.log(` \u2717 FAILED${n?` ${n}`:""}`);let e=Dl(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(_r(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 Ul(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(`
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
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=Go(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(`
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(_r(i.raw));break}case"session_closed":console.log(`[${o}] \u23F9 session_closed`);break}}function ee(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=Ur(i.input);return o.input=n?{command:n}:i.input,o}case"tool_result":return o.summary=Dr(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 Ur(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 Dr(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,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 Ji(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 Dl(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 jr(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=${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 dt={};ii(dt,{runAgentCommand:()=>im});import{existsSync as ue}from"fs";import{stat as wd}from"fs/promises";import{createReadStream as jl}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 it(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 re(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 im(i){let o=i[0],n=i.slice(1);if(!o||o==="help"||o==="-h"||o==="--help"){ot();return}switch(o){case"start":return om(n);case"run":return nm(n);case"list":case"ls":return dm(n);case"send":return em(n);case"cancel":return um(n);case"close":return rm(n);case"show":return tm(n);case"logs":case"log":return cm(n);case"attach":return am(n);case"purge":return pm();case"default":return ym(n);case"defaults":return sm();case"approve":return lm(n);case"pending":return mm(n);case"policy":return xm(n);case"wait":return wm(n);default:console.error(`\u672A\u77E5\u5B50\u547D\u4EE4: ${o}`),ot(),process.exit(1)}}function ot(){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 om(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 nm(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 dm(i){let{flags:o}=vi(i),{filter:n}=re(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)=>jr(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:it(Date.now()-l.createdAt),last:it(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 em(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 um(i){let{positional:o,flags:n}=vi(i),{filter:d,hasFilter:e}=re(n);if(e&&!o[0]){let r=await ad(d);if(!await nt("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 rm(i){let{positional:o,flags:n}=vi(i),{filter:d,hasFilter:e}=re(n);if(e&&!o[0]){let r=await ad(d);if(!await nt(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 nt(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 tm(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(ee)},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 cm(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]);if(!ue(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 am(i){let{positional:o,flags:n}=vi(i),d=await $i(o[0]),e=n.json?"json":n.verbose?"verbose":"human";if(!ue(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=jl(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 pm(){let i=await ld();console.log(`\u2713 \u6E05\u7406\u4E86 ${i} \u4E2A closed/dead session`)}async function lm(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 Yr(d,n.rule),console.log(`\u2713 policy: exec_allow += /${n.rule}/`)}async function mm(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 xm(i){if(i[0]==="default-show"){console.log(JSON.stringify(D0,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 wm(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(!ue(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 ym(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 Er(o,n),console.log(`\u2713 ${o} \u9ED8\u8BA4 provider = ${n}`)}async function sm(){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 et=N(()=>{Ti();xd();ie()});var te;var ce=N(()=>{te={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 ae;var pe=N(()=>{ae={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 ut=N(()=>{ce();pe();ce();pe();yd=[te,ae]});var rt={};ii(rt,{runSkillCommand:()=>hm});import{join as le}from"path";import{existsSync as vm,mkdirSync as fm}from"fs";async function hm(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=le(process.cwd(),".claude","skills");for(let u of d){let r=le(e,u.name),t=le(r,u.filename);if(vm(t)){console.log(` skip ${u.name} (already exists)`);continue}fm(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 tt=N(()=>{ut()});var at={};ii(at,{runModelsCommand:()=>Pm});function bm(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 Lm(i){return(i.providers??[]).filter((n)=>n.type==="tako"&&!!n.baseUrl).sort((n,d)=>n.id.localeCompare(d.id))}function Nm(i){return[...i].sort((o,n)=>o.id.localeCompare(n.id)||o.displayName.localeCompare(n.displayName))}function Wm(i,o){let n=[],d=!1;for(let e of ct){let u=o(i.baseUrl,e);if(u===null){n.push({apiType:e,models:[]});continue}d=!0,n.push({apiType:e,models:Nm(u)})}return{id:i.id,name:i.name,baseUrl:i.baseUrl,buckets:n,hasAnyCache:d}}async function km(i,o){let n=[];for(let d of i){if(!d.apiKey||!d.baseUrl)continue;for(let e of ct)n.push(o(d.baseUrl,d.apiKey,e).catch(()=>{}))}await Promise.allSettled(n)}function gm(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 $m(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 Mm(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,zm),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 Gm(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=gm(d.buckets);n.push(` ${e.length} models`);for(let u of $m(e))n.push(...Mm(u,o));n.push("")}return n.join(`
521
- `)}function Sm(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 Pm(i=[],o={}){let n=bm(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=Lm(c);if(n.refresh&&a.length>0)await km(a,e);let p=a.map((x)=>Wm(x,u)),l=new Date(r()).toISOString();if(n.json)process.stdout.write(Sm(p,n.refresh,l));else process.stdout.write(Gm(p,t()));return 0}var ct,zm=5;var pt=N(()=>{C();Vd();ct=["openai","claude"]});var xe="0.3.20",sn=22,m,So,Po,xt,wt,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},xt=["\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
- `),wt=["\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 yt(i=45){let o=qe(),n=await ir(),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 ju(c.id,W0,!0),p=process.cwd(),l=[{label:e?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:z0(p,i),path:p},...a.map((k)=>({label:z0(k.path,i),hint:or(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 ar()}catch{t={}}return{clients:r,defaultIdx:0,hasProviders:r.some((c)=>c.providers.length>0),pickCounts:t,zh:e}}var st=N(()=>{a0();E();X();S0();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 we(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 vt(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 ft(){let i=await ht(),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 ht(){let i=await yt(48);return{clients:i.clients.map((n)=>({...n,enabled:vt(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 ht();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,ye(i)}function ye(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 fd=N(()=>{Si();X();st();Io()});async function kt(){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 zt(i){return i.toLocaleString("en-US")}var he=N(()=>{C()});var Ot={};ii(Ot,{syncSubscriptionProviderFromLocalAuth:()=>Ge,shouldShowKeyGuide:()=>f1,runSubscriptionAuthCommand:()=>Me,refreshQuota:()=>ge,refreshProviders:()=>Ri,refreshAgentDetail:()=>Bi,openStats:()=>bn,openProviders:()=>po,openClientVersions:()=>Se,openAgents:()=>hi,openAgentDetail:()=>$e,loadClientVersions:()=>lo,installClientVersion:()=>Pe,finishProviderAdd:()=>Ln,dismissKeyGuide:()=>Nd,backToLauncher:()=>Yi});async function ge(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 Ri(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 Ri(i)}async function bn(i){i.screen="stats",i.message="",i.statsLoading=!0,i.statsError=void 0;let o=await kt();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 $e(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 v1(i){return i==="claude"?["claude","auth","login","--claudeai"]:["codex","login"]}async function Me(i){let o=v1(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 Ge(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||_d(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 Ri(i),await fi(i),i.screen="providers",i.providerRowIdx=0,i.message=i.zh?"\u5DF2\u6DFB\u52A0\u670D\u52A1\u5546":"Provider added"}async function Se(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(),X0)),[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 Pe(i,o){let n=i.clients[i.clientVersionsClientIdx];if(!n)return;let{installAtVersion:d}=await Promise.resolve().then(() => (Dn(),X0));await d(n.client,o),i.message=i.zh?`\u5DF2\u5207\u6362\u5230 ${o}`:`Switched to ${o}`,await lo(i)}async function Nd(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 f1(){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();he();xd();Ti();fd()});a0();Ci();bo();C();X();xi();y0();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 Bu(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 s0="tako-cli",on="0.3.20";function ap(){return[Y,"update",s0,"--latest"]}function pp(){return[Y,"add",`${s0}@latest`]}function lp(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 mp(){try{let i=await ui(),o=await fetch(`${i}/${s0}/latest`,{signal:AbortSignal.timeout(5000)});if(!o.ok)return null;return(await o.json()).version||null}catch{return null}}async function xp(){let i=await mp();if(!i)return{hasUpdate:!1,currentVersion:on};return{hasUpdate:lp(i,on)>0,latestVersion:i,currentVersion:on}}async function Au(){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"),Bu(Y,d));else{let u=`#!/bin/bash
529
- exec "${Y}" "${d}" "$@"
530
- `;await i.writeFile(n,u,{mode:493})}}async function wp(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(ap(),{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 Au(),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 yp(){let i=await import("fs/promises"),o=wi(mi,"bun.lock");try{await i.unlink(o)}catch{}}async function sp(){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 yp();let d=Bun.spawn(pp(),{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 vp(){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 sp())return r.stop(g("updater.migrationFailed")),!1;r.stop(g("updater.installComplete"))}return await Au(),!0}}catch{}return!1}async function nn(){try{if(await vp())L.info(g("updater.migrationComplete")),process.exit(0);let o=await xp();if(o.hasUpdate&&o.latestVersion){if(L.warn(g("updater.newVersionAvailable",{version:o.latestVersion,current:on})),await wp(o.latestVersion))L.info(g("updater.pleaseRestart")),process.exit(0)}}catch{}}E();dn();ai();C();An();Ci();X();xi();E();C();dn();var Cp="\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h";function nr(i=process.stdin){try{if(i.removeAllListeners?.(),i.isTTY&&typeof i.setRawMode==="function")i.setRawMode(!1);i.pause?.()}catch{}}function dr(i=process.stdout){if(!i.isTTY||typeof i.write!=="function")return;try{i.write(Cp)}catch{}}async function en(i={}){let o=i.stdin??process.stdin,n=i.stdout??process.stdout,d=i.delayMs??30;nr(o),dr(n),await new Promise((e)=>setTimeout(e,d)),nr(o),dr(n)}import{writeFile as Ip}from"fs/promises";var $0="TAKO_WINDOWS_HANDOFF_FILE",g0=new Uint8Array([239,187,191]);function un(i){return`'${i.replace(/'/g,"''")}'`}function er(i){if(i.length===0)return"@()";return`@(${i.map(un).join(", ")})`}function Qp(i){let o=new TextEncoder().encode(i),n=new Uint8Array(g0.length+o.length);return n.set(g0,0),n.set(o,g0.length),n}async function Xn(i,o){await Ip(i,Qp(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 = ${er(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 = ${er(r)}`,` & ${un(u)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return d.push("}","exit $code",""),d.join(`\r
531
- `)}import{join as ur}from"path";async function rr(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[$0];if(l)return await en(),await Xn(l,{command:p,cwd:n,env:c}),{success:!0}}if(e&&o?.relaunchTakoOnWindows){let l=process.env[$0];if(l){let x=[process.env.TAKO_WINDOWS_RELAUNCH_COMMAND||ur(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=ur(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"}}}S0();async function Xp(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 k0(o.projectPath))return{success:!1,error:g("launcher.directoryNotFound",{path:o.projectPath})}}let d=await Uu(i);if(!d.success)return d;let e=await Xp(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 Du(n,i.id,o?.selectedOptionIds);try{let a=(o?.selectedOptionIds??[]).filter((p)=>p.startsWith("model-"));await pr(a)}catch{}let c=(await z()).installedClients[i.id]?.version;return O("client_launched",{client_id:i.id,client_version:c,project_hash:Qu(n),is_recent_project:!!o?.projectPath}),L.info(g("launcher.starting",{client:i.name})),await rr(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 Zp}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 Hp(){return!1}function ki(i){let o=Oi[i];if(typeof o==="string")return o;return Hp()?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=Zp();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 Kp={"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=Kp[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 Vp=200000;class zi{id="context";static cache=null;static CACHE_TTL=5000;async render(i){let o=await this.getTokensWithCache(i.transcript_path),d=Ad(i.model.id)?.contextWindow??Vp,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 Q0(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 O0{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 cl}from"path";import{homedir as J0}from"os";import{mkdir as al}from"fs/promises";var Lr=to(J0(),".tako"),pl=to(Lr,"cli"),ll=to(Lr,"bin",process.platform==="win32"?"tako.cmd":"tako");function ml(){if(process.platform==="win32")return to(process.env.APPDATA||to(J0(),"AppData","Roaming"),"claude","settings.json");return to(J0(),".claude","settings.json")}var xl=process.platform==="win32",wl="0.1.48";function yl(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 sl(){let i=to(pl,"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 vl(){let i=await sl();if(!i)return!1;return yl(i,wl)>=0}function fl(){return ll}function hl(){return`"${bl(fl())}" statusline`}function bl(i){if(xl)return i.replace(/\\/g,"/");return i}async function R0(){if(!await vl())return;let o=ml(),n={};try{let u=Bun.file(o);if(await u.exists())n=await u.json()}catch{}let d={type:"command",command:hl(),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 al(cl(o),{recursive:!0}),await Bun.write(o,JSON.stringify(n,null,2))}var Ll=[new Zn,new Kn,new Vn,new zi,new Fn];async function Nl(i){let o=await Promise.all(Ll.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 O0().render(n)}async function Nr(){try{let i=await Bun.stdin.json(),o=await Nl(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 Wr(){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()}}c0();An();var Wl={"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 kl(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 kl(i,o,n){let d=Wl[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 vd="0.3.20",Cm=!1;function sd(i){return Cm&&!i}function Im(){console.log(`
534
- ${g("cli.version",{version:vd})}
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 Qm(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 B0(d.package),u=await A0(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 Y0(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 me(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 qm(i){let o=process.argv.slice(2);if(o[0]==="statusline"){Ni(),await Nr();return}if(o[0]==="install"){await Qm(o.slice(1));return}if(o[0]==="quota"){let{runQuotaCommand:d}=await Promise.resolve().then(() => ($r(),gr)),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(() => (et(),dt));await d(o.slice(1));return}if(o[0]==="skill"){let{runSkillCommand:d}=await Promise.resolve().then(() => (tt(),rt));await d(o.slice(1));return}if(o[0]==="models"){let{runModelsCommand:d}=await Promise.resolve().then(() => (pt(),at)),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${vd}`);return}if(o.includes("-h")||o.includes("--help")){Im();return}let n=vd==="dev"||Xo;if(H(),O("cli_started"),o.includes("--claude")){if(sd(n))await nn();await me("claude-code","Claude Code",await _n("claude-code",o,"--claude"));return}if(o.includes("--codex")){if(sd(n))await nn();await me("codex","Codex",await _n("codex",o,"--codex"));return}if(o.includes("--gemini")){if(sd(n))await nn();await me("gemini","Gemini CLI",await _n("gemini",o,"--gemini"));return}if(sd(n))await nn();if(R0().catch(()=>{}),Ni(),Yd().catch(()=>{}),!process.stdin.isTTY){console.log("Tako CLI v"+vd),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 lt(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 qm(i)}catch(o){console.error(g("cli.cliError"),o),await jo(),process.exit(1)}}X();Ci();X();import{CliRenderEvents as L1,createCliRenderer as N1}from"@opentui/core";C();X();xi();ai();Si();function Om(i){return i.startsWith("cr_")&&i.length>10}async function Jm(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 mt(i){if(!Om(i))return O("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:g("auth.invalidFormat")};let o=await Jm(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 Rm(i,o.apiId),O("api_key_validated",{success:!0}),U(),H(),{success:!0}}async function Rm(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();fd();Io();function bt(){try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}function hd(){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 Lt(){bt(),hd(),await new Promise((i)=>setTimeout(i,30)),bt(),hd()}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 se(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 bd(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 Nt(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 ve(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 fe(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 Wt(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();he();import{BoxRenderable as Km,ScrollBoxRenderable as Vm,TextAttributes as R,TextRenderable as Tm}from"@opentui/core";function Bm(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 Ym(i){return i.replace(/\x1b\[[0-9;]*m/g,"")}function hn(i){let o=Ym(i),n=0;for(let d of o)n+=Bm(d)?2:1;return n}function gt(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 Gt=6,St=4,Le=16,Am=12;function Jo(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,Gt).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 Ne(i,o){return!i.some((d)=>(o[d.id]??0)>0)&&i.length>Gt?"grid":"collapsed"}function Xm(i,o){if(i.length===0)return 1;let n=Math.max(...i.map((u)=>hn(u))),d=Math.max(Le,n+4),e=Math.max(d,o-Am);return Math.max(1,Math.min(St,i.length,Math.floor(e/d)))}function Ro(i,o,n){let d=i.map((e)=>e.label[n?"zh":"en"]||e.label.en||e.id);return Xm(d,o)}function Hm(i,o){let n=Math.max(1,Math.min(St,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 Ld(i){return i.startsWith("model-")?i.slice(6):i}function be(i){let o=Ld(i).toLowerCase();return o.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||o.slice(0,3)||o}function $t(i){let o=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],n=o.indexOf(i);return n===-1?o.length:n}function Mt(i){let o=Ld(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 Zm(i,o){let n=be(i),d=be(o),e=$t(n)-$t(d)||n.localeCompare(d);if(e!==0)return e;let u=Mt(i),r=Mt(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 Ld(i).localeCompare(Ld(o))}function Bo(i,o){let n=[...i].sort(Zm),d=[];for(let u of n){let r=be(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:Hm(u.ids,o).rows}));return{groups:e,flat:e.flatMap((u)=>u.rows.flat())}}function We(i,o,n){return Bo(i,n).flat.indexOf(o)}function Pt(i,o){return Bo(i,o).groups.flatMap((n)=>n.rows)}Io();function Fm(i){for(let o of[...i.root.getChildren()])i.root.remove(o)}function P(i,o){return new Km(i,o)}function ke(i){return i.terminalHeight<sn}function ze(i){return ke(i)?{minHeight:sn}:{height:"100%"}}function Z(i,o,n){if(!ke(i)){i.root.add(n);return}let d=new Vm(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 Em(i,o,n={}){return new Tm(i,{content:o,fg:m.text,selectable:!1,...n})}function f(i,o,n,d={}){let e=Em(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:R.BOLD}),f(r,i,u,{fg:m.muted}),d.add(r)}),o.add(d)}function _m(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?xt:wt;if(f(u,i,r,{fg:d,attributes:R.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?R.BOLD:R.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?R.BOLD:R.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 ${xe}`,color:m.muted},u=!1){let r=P(i,{flexDirection:"column",width:"100%",...ze(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:R.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(Fm(i),o.scrollScreen!==o.screen)o.scrollScreen=o.screen,o.scrollOffset=0;else if(!ke(i)&&o.scrollOffset!==0)o.scrollOffset=0;switch(o.screen){case"launcher":Qt(i,o);break;case"providers":d1(i,o);break;case"provider-detail":e1(i,o);break;case"provider-add-type":u1(i,o);break;case"provider-input":r1(i,o);break;case"stats":t1(i,o);break;case"config":c1(i,o);break;case"language":a1(i,o);break;case"option-picker":o1(i,o);break;case"agents":p1(i,o);break;case"agent-detail":m1(i,o);break;case"agent-new":x1(i,o);break;case"key-guide":y1(i,o);break;case"client-versions":s1(i,o);break}i.requestRender()}var Ct={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 Um(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 Dm(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=Ct[d.type]??Ct.custom;f(o,i,`${e.icon} ${n.zh?e.zh:e.en}`,{fg:e.color});let u=Um(d.email??"");if(u)f(o,i,`\xB7 ${u}`,{fg:m.muted,truncate:!0})}function jm(i){return i>30?m.green:i>10?m.yellow:m.red}function i1(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:jm(u)}}function Qt(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 ${xe}`,{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(_m(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});Dm(i,h,o),v.add(h);let M=i1(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?R.BOLD:R.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 o1(i,o){let n=o.clients[o.clientIdx],d=o.optionPickerGroup;if(!n||!d){Qt(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"){n1(i,o,n,e,u,r);return}let a=c?Jo(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%",...ze(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:R.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 n1(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=Ro(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(Le,...r.length>0?r.map((b)=>hn(c(b))+3):[0]),w=P(i,{flexDirection:"column",width:"100%",...ze(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:R.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?">":" "}${gt(c(k),x)}${mo?"*":" "}`;f(M,i,Ao,{fg:li?e:mo?m.green:m.text,attributes:li?R.BOLD:R.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 d1(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?R.BOLD:R.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 e1(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=bd(n,o);pi(i,e,r.map((t,c)=>({primary:Nt(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 u1(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 r1(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"?se(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 t1(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"}: ${zt(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 c1(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,`> ${se(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 a1(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 p1(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 ${ve(Date.now()-e.lastActiveAt)}`,focused:u===o.agentIdx,marker:Wt(e.status),color:fe(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 l1(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 m1(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:fe(n.status),attributes:R.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"}=${ve(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:R.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=l1(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 x1(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 w1=[{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 y1(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,w1.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 It={"claude-code":{icon:"\u2726",color:m.yellow},codex:{icon:"\u25C8",color:m.blue},gemini:{icon:"\u25C6",color:m.cyan}};function s1(i,o){let n=o.clients[o.clientVersionsClientIdx],d=It[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=It[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?R.BOLD:R.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();fd();Yo();xd();Ti();xi();function h1(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"?Ne(e,i.pickCounts):"collapsed",t=0;if(u)if(o==="model"&&r==="grid"){let c=e.map((p)=>p.id),a=Ro(e,n,i.zh);t=We(c,u.id,a)}else t=(o==="model"?Jo(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 Jt(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"){h1(o,p.group,n.terminalWidth||80),W(n,o);return}}if(t==="return"){let p=u.projects[o.projectIdx],l=we(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=Ro(u,n.terminalWidth||80,o.zh),x=Bo(p,l),w=Pt(p,l),y=x.flat.length;if(t==="escape"){if(Ne(u,o.pickCounts)==="grid")o.screen="launcher",o.modelPickerMode="collapsed";else{o.modelPickerMode="collapsed";let s=Ei(d.launchOptions,d.enabled,e),b=Jo(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?Jo(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=Ro(u,n.terminalWidth||80,o.zh);o.optionPickerIdx=p?Math.max(0,We(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 Bt(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 u0(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 Ri(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 Ri(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(()=>Se(o));return}else Yi(o)}W(n,o)}function Yt(i,o,n,d,e){let u=fn(o);if(!u){o.screen="providers",W(n,o);return}let r=bd(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 e0(u.id),await Ri(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 d0(u.id),await Ri(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 At(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 Xt(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 Ri(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 Ht(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(()=>$e(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 Zt(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 Kt(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 Vt(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(()=>Pe(o,t.version));return}}W(n,o)}var b1=["configure","skip","never"];function Tt(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 Nd("skip"),Yi(o)});return}else if(e==="return"){let u=b1[o.keyGuideIdx];if(u==="configure"){o.screen="config",o.apiKeyValue="",o.apiKeyStatus="idle",o.apiKeyError=void 0,W(n,o);return}d(async()=>{await Nd(u),Yi(o)});return}W(n,o)}Yo();async function Ft(i={}){let o=await ft();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(),Ot));if(await d())o.screen="key-guide"}catch{}hd();let n=await N1({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(L1.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 Lt(),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"){Zt(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}Vt(y,o,n,a);return}if(o.screen==="key-guide"){Tt(y,o,n,a);return}if(o.screen==="launcher"){Jt(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"){Bt(y,o,n,a);return}if(o.screen==="provider-detail"){Yt(y,o,n,c,a);return}if(o.screen==="provider-add-type"){At(y,o,n,c);return}if(o.screen==="provider-input"){Xt(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 mt(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];i0(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"){Ht(y,o,n,a);return}if(o.screen==="agent-new")Kt(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,ge(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?.(),ye(o),W(n,o),n.start()})}Yo();E();X();xi();Ci();ai();C();ai();var W1=2000,Et=100;function Mi(i){if(Xo||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${i}
564
- `)}function _t(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 k1(i,o){let n=`${i}/v1/announcements/popup`;try{let d=await fetch(n,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(W1)});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 z1(i){return((await z()).seenAnnouncementIds??[]).includes(i)}async function g1(i){let o=await z(),n=o.seenAnnouncementIds??[];if(n.includes(i))return;let d=[...n,i];if(d.length>Et)d.splice(0,d.length-Et);o.seenAnnouncementIds=d,await K(o)}async function $1(){let i=_t(await ei());if(i)return i;for(let o of await V()){let n=_t(o);if(n)return n}return null}async function Ut(){let i=await $1();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 k1(i.baseUrl,i.apiKey);if(!o)return;if(o.popup_once&&await z1(o.id)){Mi(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${o.id}`);return}if(Mi(`\u5F39\u7A97\uFF1A${o.id}`),await Zu(o),o.popup_once)await g1(o.id),Mi(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${o.id}`)}vo();async function Dt(){await r0(),await t0(),await Wr(),await Promise.race([Kd(await V()),new Promise((i)=>setTimeout(i,3000))]),await Ut()}async function jt(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 ic(){await Dt();let i;while(!0){let o=await Ft(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 Me(o.tool),r=await Ge(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 jt(o))process.exit(0)}}await lt(ic);
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);